[Midnightbsd-cvs] src [6434] vendor/perl/dist: finish merge of 5.18.1.

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Sun Dec 1 23:27:55 EST 2013


Revision: 6434
          http://svnweb.midnightbsd.org/src/?rev=6434
Author:   laffer1
Date:     2013-12-01 23:27:49 -0500 (Sun, 01 Dec 2013)
Log Message:
-----------
finish merge of 5.18.1. add missing files

Added Paths:
-----------
    vendor/perl/dist/Porting/README.pod
    vendor/perl/dist/Porting/acknowledgements.pl
    vendor/perl/dist/Porting/bisect-example.sh
    vendor/perl/dist/Porting/bisect-runner.pl
    vendor/perl/dist/Porting/bisect.pl
    vendor/perl/dist/Porting/exercise_makedef.pl
    vendor/perl/dist/Porting/leakfinder.pl
    vendor/perl/dist/Porting/make-rmg-checklist
    vendor/perl/dist/Porting/make_modlib_cpan.pl
    vendor/perl/dist/Porting/new-perldelta.pl
    vendor/perl/dist/Porting/pod_lib.pl
    vendor/perl/dist/Porting/pod_rules.pl
    vendor/perl/dist/Porting/release_announcement_template.txt
    vendor/perl/dist/Porting/sync-with-cpan
    vendor/perl/dist/Porting/todo.pod
    vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z
    vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear
    vendor/perl/dist/cpan/Archive-Extract/t/src/x.war
    vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear
    vendor/perl/dist/cpan/Archive-Extract/t/src/y.war
    vendor/perl/dist/cpan/B-Lint/
    vendor/perl/dist/cpan/B-Lint/lib/
    vendor/perl/dist/cpan/B-Lint/lib/B/
    vendor/perl/dist/cpan/B-Lint/lib/B/Lint/
    vendor/perl/dist/cpan/B-Lint/lib/B/Lint/Debug.pm
    vendor/perl/dist/cpan/B-Lint/lib/B/Lint.pm
    vendor/perl/dist/cpan/B-Lint/t/
    vendor/perl/dist/cpan/B-Lint/t/lint.t
    vendor/perl/dist/cpan/B-Lint/t/pluglib/
    vendor/perl/dist/cpan/B-Lint/t/pluglib/B/
    vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/
    vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/Plugin/
    vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm
    vendor/perl/dist/cpan/CGI/t/delete.t
    vendor/perl/dist/cpan/CGI/t/multipart_init.t
    vendor/perl/dist/cpan/CGI/t/rt-52469.t
    vendor/perl/dist/cpan/CGI/t/tmpdir.t
    vendor/perl/dist/cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm
    vendor/perl/dist/cpan/CPAN-Meta/t/data/gpl-1_4.yml
    vendor/perl/dist/cpan/CPAN-Meta/t/data/unicode.yml
    vendor/perl/dist/cpan/CPAN-Meta/t/data/version-not-normal.json
    vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-1_4.yml
    vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-2.json
    vendor/perl/dist/cpan/CPAN-Meta/t/data-bad/version-ranges-2.json
    vendor/perl/dist/cpan/CPAN-Meta/t/strings.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/Changes
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/accepts.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/basic.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/finalize.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/from-hash.t
    vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/merge.t
    vendor/perl/dist/cpan/CPANPLUS/lib/CPANPLUS/Config/
    vendor/perl/dist/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm
    vendor/perl/dist/cpan/Config-Perl-V/
    vendor/perl/dist/cpan/Config-Perl-V/V.pm
    vendor/perl/dist/cpan/Config-Perl-V/t/
    vendor/perl/dist/cpan/Config-Perl-V/t/00_pod.t
    vendor/perl/dist/cpan/Config-Perl-V/t/01_pod.t
    vendor/perl/dist/cpan/Config-Perl-V/t/10_base.t
    vendor/perl/dist/cpan/Config-Perl-V/t/20_plv.t
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5008009
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5010001
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011001
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011002
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011003
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011004
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011005
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012000
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012001
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012002
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012003
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013000
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013001
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013002
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013003
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013004
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013005
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013006
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013007
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013008
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013009
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013010
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013011
    vendor/perl/dist/cpan/Devel-PPPort/parts/base/5014000
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5008009
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5010001
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011001
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011002
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011003
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011004
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011005
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012000
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012001
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012002
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012003
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013000
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013001
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013002
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013003
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013004
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013005
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013006
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013007
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013008
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013009
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013010
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013011
    vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5014000
    vendor/perl/dist/cpan/Digest/t/lib/
    vendor/perl/dist/cpan/Digest/t/lib/Digest/
    vendor/perl/dist/cpan/Digest/t/lib/Digest/Dummy.pm
    vendor/perl/dist/cpan/Digest/t/security.t
    vendor/perl/dist/cpan/Digest-SHA/t/unicode.t
    vendor/perl/dist/cpan/Encode/META.json
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/README.packaging
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.json
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.yml
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/echo.t
    vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/meta_convert.t
    vendor/perl/dist/cpan/File-CheckTree/
    vendor/perl/dist/cpan/File-CheckTree/lib/
    vendor/perl/dist/cpan/File-CheckTree/lib/File/
    vendor/perl/dist/cpan/File-CheckTree/lib/File/CheckTree.pm
    vendor/perl/dist/cpan/File-CheckTree/t/
    vendor/perl/dist/cpan/File-CheckTree/t/CheckTree.t
    vendor/perl/dist/cpan/File-Temp/lib/
    vendor/perl/dist/cpan/File-Temp/lib/File/
    vendor/perl/dist/cpan/File-Temp/lib/File/Temp.pm
    vendor/perl/dist/cpan/File-Temp/t/rmtree.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/003_agent.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/101_head.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/102_put.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/103_delete.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/104_post.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/140_proxy.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/150_post_form.t
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/delete-01.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-01.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-02.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-03.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-04.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/head-01.txt
    vendor/perl/dist/cpan/HTTP-Tiny/t/cases/post-01.txt
    vendor/perl/dist/cpan/IO-Compress/bin/
    vendor/perl/dist/cpan/IO-Compress/bin/zipdetails
    vendor/perl/dist/cpan/IO-Compress/lib/IO/Compress/FAQ.pod
    vendor/perl/dist/cpan/IO-Compress/t/105oneshot-zip-store-only.t
    vendor/perl/dist/cpan/IO-Compress/t/111const-deflate.t
    vendor/perl/dist/cpan/JSON-PP/t/116_incr_parse_fixed.t
    vendor/perl/dist/cpan/List-Util/t/getmagic-once.t
    vendor/perl/dist/cpan/List-Util/t/multicall-refcount.t
    vendor/perl/dist/cpan/List-Util/t/sum0.t
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/API.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script.pod
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm
    vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm
    vendor/perl/dist/cpan/Locale-Codes/t/alias_code_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/code2country_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/code2langext.t
    vendor/perl/dist/cpan/Locale-Codes/t/code2langfam.t
    vendor/perl/dist/cpan/Locale-Codes/t/code2langvar.t
    vendor/perl/dist/cpan/Locale-Codes/t/country2code_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/country_code2code_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/country_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/currency2code_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/langext2code.t
    vendor/perl/dist/cpan/Locale-Codes/t/langfam2code.t
    vendor/perl/dist/cpan/Locale-Codes/t/language_old.t
    vendor/perl/dist/cpan/Locale-Codes/t/langvar2code.t
    vendor/perl/dist/cpan/Locale-Codes/t/script2code_old.t
    vendor/perl/dist/cpan/Math-Complex/ChangeLog
    vendor/perl/dist/cpan/Math-Complex/Makefile.PL
    vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/
    vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/a/
    vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/a/X.pm
    vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/b/
    vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/b/X.pm
    vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotMain.pm
    vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotX.pm
    vendor/perl/dist/cpan/Module-Metadata/t/encoding.t
    vendor/perl/dist/cpan/Module-Metadata/t/lib/0_1/
    vendor/perl/dist/cpan/Module-Metadata/t/lib/0_1/Foo.pm
    vendor/perl/dist/cpan/Module-Metadata/t/lib/0_2/
    vendor/perl/dist/cpan/Module-Metadata/t/lib/0_2/Foo.pm
    vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/
    vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
    vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
    vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm
    vendor/perl/dist/cpan/Module-Metadata/t/version.t
    vendor/perl/dist/cpan/Module-Pluggable/t/22trigger.t
    vendor/perl/dist/cpan/Module-Pluggable/t/23depth.t
    vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_object.t
    vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_package.t
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/Text/
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm
    vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm
    vendor/perl/dist/cpan/Pod-Checker/
    vendor/perl/dist/cpan/Pod-Checker/lib/
    vendor/perl/dist/cpan/Pod-Checker/lib/Pod/
    vendor/perl/dist/cpan/Pod-Checker/lib/Pod/Checker.pm
    vendor/perl/dist/cpan/Pod-Checker/scripts/
    vendor/perl/dist/cpan/Pod-Checker/scripts/podchecker.PL
    vendor/perl/dist/cpan/Pod-Checker/t/
    vendor/perl/dist/cpan/Pod-Checker/t/pod/
    vendor/perl/dist/cpan/Pod-Checker/t/pod/contains_bad_pod.xr
    vendor/perl/dist/cpan/Pod-Checker/t/pod/empty.xr
    vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.t
    vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.xr
    vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.t
    vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.xr
    vendor/perl/dist/cpan/Pod-Checker/t/pod/selfcheck.t
    vendor/perl/dist/cpan/Pod-Checker/t/pod/testcmp.pl
    vendor/perl/dist/cpan/Pod-Checker/t/pod/testpchk.pl
    vendor/perl/dist/cpan/Pod-Parser/t/pod/empty.xr
    vendor/perl/dist/cpan/Pod-Parser/t/pod/selfcheck.t
    vendor/perl/dist/cpan/Pod-Perldoc/
    vendor/perl/dist/cpan/Pod-Perldoc/corpus/
    vendor/perl/dist/cpan/Pod-Perldoc/corpus/no-head.pod
    vendor/perl/dist/cpan/Pod-Perldoc/corpus/perlfunc.pod
    vendor/perl/dist/cpan/Pod-Perldoc/corpus/utf8.pod
    vendor/perl/dist/cpan/Pod-Perldoc/lib/
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm
    vendor/perl/dist/cpan/Pod-Perldoc/lib/perldoc.pod
    vendor/perl/dist/cpan/Pod-Perldoc/t/
    vendor/perl/dist/cpan/Pod-Perldoc/t/load.t
    vendor/perl/dist/cpan/Pod-Perldoc/t/man/
    vendor/perl/dist/cpan/Pod-Perldoc/t/man/_get_columns.t
    vendor/perl/dist/cpan/Pod-Perldoc/t/pod.t
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.txt
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.xml
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.txt
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.xml
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.txt
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.xml
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.txt
    vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.xml
    vendor/perl/dist/cpan/Pod-Simple/t/emptylists.t
    vendor/perl/dist/cpan/Pod-Simple/t/enc-chars.t
    vendor/perl/dist/cpan/Pod-Simple/t/encod04.t
    vendor/perl/dist/cpan/Pod-Simple/t/eol.t
    vendor/perl/dist/cpan/Pod-Simple/t/eol2.t
    vendor/perl/dist/cpan/Pod-Simple/t/fake-closers.t
    vendor/perl/dist/cpan/Pod-Simple/t/whine.t
    vendor/perl/dist/cpan/Pod-Simple/t/xhtml-bkb.t
    vendor/perl/dist/cpan/Pod-Simple/t/xhtml15.t
    vendor/perl/dist/cpan/Pod-Simple/t/xhtml20.t
    vendor/perl/dist/cpan/Pod-Usage/
    vendor/perl/dist/cpan/Pod-Usage/lib/
    vendor/perl/dist/cpan/Pod-Usage/lib/Pod/
    vendor/perl/dist/cpan/Pod-Usage/lib/Pod/Usage.pm
    vendor/perl/dist/cpan/Pod-Usage/scripts/
    vendor/perl/dist/cpan/Pod-Usage/scripts/pod2usage.PL
    vendor/perl/dist/cpan/Pod-Usage/t/
    vendor/perl/dist/cpan/Pod-Usage/t/pod/
    vendor/perl/dist/cpan/Pod-Usage/t/pod/p2u_data.pl
    vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.t
    vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.xr
    vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage2.t
    vendor/perl/dist/cpan/Pod-Usage/t/pod/testcmp.pl
    vendor/perl/dist/cpan/Pod-Usage/t/pod/testp2pt.pl
    vendor/perl/dist/cpan/Pod-Usage/t/pod/usage.pod
    vendor/perl/dist/cpan/Pod-Usage/t/pod/usage2.pod
    vendor/perl/dist/cpan/Socket/
    vendor/perl/dist/cpan/Socket/Makefile.PL
    vendor/perl/dist/cpan/Socket/Socket.pm
    vendor/perl/dist/cpan/Socket/Socket.xs
    vendor/perl/dist/cpan/Socket/t/
    vendor/perl/dist/cpan/Socket/t/Socket.t
    vendor/perl/dist/cpan/Socket/t/getaddrinfo.t
    vendor/perl/dist/cpan/Socket/t/getnameinfo.t
    vendor/perl/dist/cpan/Socket/t/ip_mreq.t
    vendor/perl/dist/cpan/Socket/t/ipv6_mreq.t
    vendor/perl/dist/cpan/Socket/t/sockaddr.t
    vendor/perl/dist/cpan/Socket/t/socketpair.t
    vendor/perl/dist/cpan/Socket/typemap
    vendor/perl/dist/cpan/Sys-Syslog/t/facilities-routing.t
    vendor/perl/dist/cpan/Term-ANSIColor/t/aliases-func.t
    vendor/perl/dist/cpan/Term-ANSIColor/t/basic256.t
    vendor/perl/dist/cpan/Term-ANSIColor/t/eval.t
    vendor/perl/dist/cpan/Term-ANSIColor/t/stringify.t
    vendor/perl/dist/cpan/Term-ANSIColor/t/taint.t
    vendor/perl/dist/cpan/Test-Harness/t/compat/env_opts.t
    vendor/perl/dist/cpan/Test-Harness/t/nowarn.t
    vendor/perl/dist/cpan/Text-Tabs/t/Tabs-ElCid.t
    vendor/perl/dist/cpan/Text-Tabs/t/Wrap-JLB.t
    vendor/perl/dist/cpan/Time-HiRes/t/Watchdog.pm
    vendor/perl/dist/cpan/Time-HiRes/t/alarm.t
    vendor/perl/dist/cpan/Time-HiRes/t/clock.t
    vendor/perl/dist/cpan/Time-HiRes/t/gettimeofday.t
    vendor/perl/dist/cpan/Time-HiRes/t/itimer.t
    vendor/perl/dist/cpan/Time-HiRes/t/nanosleep.t
    vendor/perl/dist/cpan/Time-HiRes/t/sleep.t
    vendor/perl/dist/cpan/Time-HiRes/t/stat.t
    vendor/perl/dist/cpan/Time-HiRes/t/time.t
    vendor/perl/dist/cpan/Time-HiRes/t/tv_interval.t
    vendor/perl/dist/cpan/Time-HiRes/t/ualarm.t
    vendor/perl/dist/cpan/Time-HiRes/t/usleep.t
    vendor/perl/dist/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/as.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/be.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bg.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bn.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ee.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fa.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/gu.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/hi.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kn.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kok.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ln.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mk.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ml.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mr.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/or.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/pa.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sa.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sr.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ta.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/te.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/th.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ur.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/wae.pl
    vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl
    vendor/perl/dist/cpan/Unicode-Collate/t/cjk_zy.t
    vendor/perl/dist/cpan/Unicode-Collate/t/ident.t
    vendor/perl/dist/cpan/Unicode-Collate/t/iglevel2.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_as.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_bn.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_bs.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_bscy.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjk.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjkc.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_ee.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_fa.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_fiph.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_gu.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_hi.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_kn.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_kok.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_ln.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_ml.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_mr.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_or.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_pa.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_sa.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_si.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_sidt.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_srla.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_svrf.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_ta.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_te.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_th.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_ur.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_wae.t
    vendor/perl/dist/cpan/Unicode-Collate/t/loc_zhzy.t
    vendor/perl/dist/cpan/Unicode-Collate/t/notable.t
    vendor/perl/dist/cpan/Unicode-Collate/t/rewrite.t
    vendor/perl/dist/cpan/Win32/t/CodePage.t
    vendor/perl/dist/cpan/perlfaq/
    vendor/perl/dist/cpan/perlfaq/lib/
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pm
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq1.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq2.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq3.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq4.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq5.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq6.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq7.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq8.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlfaq9.pod
    vendor/perl/dist/cpan/perlfaq/lib/perlglossary.pod
    vendor/perl/dist/dist/B-Deparse/t/core.t
    vendor/perl/dist/dist/Carp/
    vendor/perl/dist/dist/Carp/Makefile.PL
    vendor/perl/dist/dist/Carp/lib/
    vendor/perl/dist/dist/Carp/lib/Carp/
    vendor/perl/dist/dist/Carp/lib/Carp/Heavy.pm
    vendor/perl/dist/dist/Carp/lib/Carp.pm
    vendor/perl/dist/dist/Carp/t/
    vendor/perl/dist/dist/Carp/t/Carp.t
    vendor/perl/dist/dist/Carp/t/heavy.t
    vendor/perl/dist/dist/Carp/t/stash_deletion.t
    vendor/perl/dist/dist/Carp/t/swash.t
    vendor/perl/dist/dist/Carp/t/vivify_gv.t
    vendor/perl/dist/dist/Carp/t/vivify_stash.t
    vendor/perl/dist/dist/Carp/t/with_warnings.t
    vendor/perl/dist/dist/Cwd/t/Spec-taint.t
    vendor/perl/dist/dist/Data-Dumper/t/bless_var_method.t
    vendor/perl/dist/dist/Data-Dumper/t/deparse.t
    vendor/perl/dist/dist/Data-Dumper/t/dumpperl.t
    vendor/perl/dist/dist/Data-Dumper/t/freezer_useperl.t
    vendor/perl/dist/dist/Data-Dumper/t/indent.t
    vendor/perl/dist/dist/Data-Dumper/t/lib/
    vendor/perl/dist/dist/Data-Dumper/t/lib/Testing.pm
    vendor/perl/dist/dist/Data-Dumper/t/misc.t
    vendor/perl/dist/dist/Data-Dumper/t/names.t
    vendor/perl/dist/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t
    vendor/perl/dist/dist/Data-Dumper/t/qr.t
    vendor/perl/dist/dist/Data-Dumper/t/quotekeys.t
    vendor/perl/dist/dist/Data-Dumper/t/seen.t
    vendor/perl/dist/dist/Data-Dumper/t/sortkeys.t
    vendor/perl/dist/dist/Data-Dumper/t/sparseseen.t
    vendor/perl/dist/dist/Data-Dumper/t/toaster.t
    vendor/perl/dist/dist/Data-Dumper/t/values.t
    vendor/perl/dist/dist/ExtUtils-CBuilder/Changes
    vendor/perl/dist/dist/ExtUtils-CBuilder/LICENSE
    vendor/perl/dist/dist/ExtUtils-CBuilder/Makefile.PL
    vendor/perl/dist/dist/ExtUtils-CBuilder/README.patching
    vendor/perl/dist/dist/ExtUtils-CBuilder/README.release
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxs.pod
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstut.pod
    vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/001-basic.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/002-more.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/003-usage.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/103-tidy_type.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/104-map_type.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/106-process_typemaps.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/107-make_targetable.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/108-map_type.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/110-assign_func_args.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/112-set_cond.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/115-avoid-noise.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/501-t-compile.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/510-t-bare.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/511-t-whitespace.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/512-t-file.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/513-t-merge.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/514-t-embed.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/515-t-cmd.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/600-t-compat.t
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/XSWarn.xs
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/b.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/combined.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_repl.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_skip.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/conflicting.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/other.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/perl.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/simple.typemap
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/Test.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/TypemapTest/
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm
    vendor/perl/dist/dist/ExtUtils-ParseXS/t/pseudotypemap1
    vendor/perl/dist/dist/Filter-Simple/t/code_no_comments.t
    vendor/perl/dist/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm
    vendor/perl/dist/dist/IO/t/cachepropagate-tcp.t
    vendor/perl/dist/dist/IO/t/cachepropagate-udp.t
    vendor/perl/dist/dist/IO/t/cachepropagate-unix.t
    vendor/perl/dist/dist/IO/t/io_utf8argv.t
    vendor/perl/dist/dist/Math-BigInt/t/rt-16221.t
    vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/
    vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
    vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
    vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList.pod
    vendor/perl/dist/dist/Module-CoreList/t/utils.t
    vendor/perl/dist/dist/Net-Ping/t/520_icmp_ttl.t
    vendor/perl/dist/dist/Safe/t/safenamedcap.t
    vendor/perl/dist/dist/Safe/t/saferegexp.t
    vendor/perl/dist/dist/Search-Dict/
    vendor/perl/dist/dist/Search-Dict/Changes
    vendor/perl/dist/dist/Search-Dict/Makefile.PL
    vendor/perl/dist/dist/Search-Dict/README.patching
    vendor/perl/dist/dist/Search-Dict/README.release
    vendor/perl/dist/dist/Search-Dict/lib/
    vendor/perl/dist/dist/Search-Dict/lib/Search/
    vendor/perl/dist/dist/Search-Dict/lib/Search/Dict.pm
    vendor/perl/dist/dist/Search-Dict/t/
    vendor/perl/dist/dist/Search-Dict/t/Dict.t
    vendor/perl/dist/dist/Storable/t/robust.t
    vendor/perl/dist/dist/Term-Complete/
    vendor/perl/dist/dist/Term-Complete/lib/
    vendor/perl/dist/dist/Term-Complete/lib/Term/
    vendor/perl/dist/dist/Term-Complete/lib/Term/Complete.pm
    vendor/perl/dist/dist/Term-Complete/t/
    vendor/perl/dist/dist/Term-Complete/t/Complete.t
    vendor/perl/dist/dist/Term-ReadLine/
    vendor/perl/dist/dist/Term-ReadLine/lib/
    vendor/perl/dist/dist/Term-ReadLine/lib/Term/
    vendor/perl/dist/dist/Term-ReadLine/lib/Term/ReadLine.pm
    vendor/perl/dist/dist/Term-ReadLine/t/
    vendor/perl/dist/dist/Term-ReadLine/t/AE.t
    vendor/perl/dist/dist/Term-ReadLine/t/AETk.t
    vendor/perl/dist/dist/Term-ReadLine/t/ReadLine.t
    vendor/perl/dist/dist/Term-ReadLine/t/Tk.t
    vendor/perl/dist/dist/Text-Abbrev/
    vendor/perl/dist/dist/Text-Abbrev/lib/
    vendor/perl/dist/dist/Text-Abbrev/lib/Text/
    vendor/perl/dist/dist/Text-Abbrev/lib/Text/Abbrev.pm
    vendor/perl/dist/dist/Text-Abbrev/t/
    vendor/perl/dist/dist/Text-Abbrev/t/Abbrev.t
    vendor/perl/dist/dist/Thread-Queue/t/09_ended.t
    vendor/perl/dist/dist/Thread-Queue/t/10_timed.t
    vendor/perl/dist/dist/Tie-File/
    vendor/perl/dist/dist/Tie-File/lib/
    vendor/perl/dist/dist/Tie-File/lib/Tie/
    vendor/perl/dist/dist/Tie-File/lib/Tie/File.pm
    vendor/perl/dist/dist/Tie-File/t/
    vendor/perl/dist/dist/Tie-File/t/00_version.t
    vendor/perl/dist/dist/Tie-File/t/01_gen.t
    vendor/perl/dist/dist/Tie-File/t/02_fetchsize.t
    vendor/perl/dist/dist/Tie-File/t/03_longfetch.t
    vendor/perl/dist/dist/Tie-File/t/04_splice.t
    vendor/perl/dist/dist/Tie-File/t/05_size.t
    vendor/perl/dist/dist/Tie-File/t/06_fixrec.t
    vendor/perl/dist/dist/Tie-File/t/07_rv_splice.t
    vendor/perl/dist/dist/Tie-File/t/08_ro.t
    vendor/perl/dist/dist/Tie-File/t/09_gen_rs.t
    vendor/perl/dist/dist/Tie-File/t/10_splice_rs.t
    vendor/perl/dist/dist/Tie-File/t/11_rv_splice_rs.t
    vendor/perl/dist/dist/Tie-File/t/12_longfetch_rs.t
    vendor/perl/dist/dist/Tie-File/t/13_size_rs.t
    vendor/perl/dist/dist/Tie-File/t/14_lock.t
    vendor/perl/dist/dist/Tie-File/t/15_pushpop.t
    vendor/perl/dist/dist/Tie-File/t/16_handle.t
    vendor/perl/dist/dist/Tie-File/t/17_misc_meth.t
    vendor/perl/dist/dist/Tie-File/t/18_rs_fixrec.t
    vendor/perl/dist/dist/Tie-File/t/19_cache.t
    vendor/perl/dist/dist/Tie-File/t/20_cache_full.t
    vendor/perl/dist/dist/Tie-File/t/21_win32.t
    vendor/perl/dist/dist/Tie-File/t/22_autochomp.t
    vendor/perl/dist/dist/Tie-File/t/23_rv_ac_splice.t
    vendor/perl/dist/dist/Tie-File/t/24_cache_loop.t
    vendor/perl/dist/dist/Tie-File/t/25_gen_nocache.t
    vendor/perl/dist/dist/Tie-File/t/26_twrite.t
    vendor/perl/dist/dist/Tie-File/t/27_iwrite.t
    vendor/perl/dist/dist/Tie-File/t/28_mtwrite.t
    vendor/perl/dist/dist/Tie-File/t/29_downcopy.t
    vendor/perl/dist/dist/Tie-File/t/29a_upcopy.t
    vendor/perl/dist/dist/Tie-File/t/30_defer.t
    vendor/perl/dist/dist/Tie-File/t/31_autodefer.t
    vendor/perl/dist/dist/Tie-File/t/32_defer_misc.t
    vendor/perl/dist/dist/Tie-File/t/33_defer_vs.t
    vendor/perl/dist/dist/Tie-File/t/40_abs_cache.t
    vendor/perl/dist/dist/Tie-File/t/41_heap.t
    vendor/perl/dist/dist/Tie-File/t/42_offset.t
    vendor/perl/dist/dist/autouse/t/lib/MyTestModule2.pm
    vendor/perl/dist/dist/bignum/t/overrides.t
    vendor/perl/dist/dist/threads-shared/t/dualvar.t
    vendor/perl/dist/dist/threads-shared/t/object2.t
    vendor/perl/dist/ext/File-DosGlob/
    vendor/perl/dist/ext/File-DosGlob/DosGlob.xs
    vendor/perl/dist/ext/File-DosGlob/lib/
    vendor/perl/dist/ext/File-DosGlob/lib/File/
    vendor/perl/dist/ext/File-DosGlob/lib/File/DosGlob.pm
    vendor/perl/dist/ext/File-DosGlob/t/
    vendor/perl/dist/ext/File-DosGlob/t/DosGlob.t
    vendor/perl/dist/ext/File-Glob/t/rt114984.t
    vendor/perl/dist/ext/GDBM_File/t/fatal.t
    vendor/perl/dist/ext/IPC-Open3/lib/IPC/Open2.pm
    vendor/perl/dist/ext/IPC-Open3/t/IPC-Open2.t
    vendor/perl/dist/ext/NDBM_File/hints/gnu.pl
    vendor/perl/dist/ext/ODBM_File/hints/gnu.pl
    vendor/perl/dist/ext/POSIX/t/export.t
    vendor/perl/dist/ext/POSIX/t/sigset.t
    vendor/perl/dist/ext/POSIX/t/unimplemented.t
    vendor/perl/dist/ext/POSIX/t/usage.t
    vendor/perl/dist/ext/POSIX/t/wrappers.t
    vendor/perl/dist/ext/PerlIO-mmap/
    vendor/perl/dist/ext/PerlIO-mmap/mmap.pm
    vendor/perl/dist/ext/PerlIO-mmap/mmap.xs
    vendor/perl/dist/ext/Pod-Functions/
    vendor/perl/dist/ext/Pod-Functions/Functions_pm.PL
    vendor/perl/dist/ext/Pod-Functions/Makefile.PL
    vendor/perl/dist/ext/Pod-Functions/t/
    vendor/perl/dist/ext/Pod-Functions/t/Functions.t
    vendor/perl/dist/ext/Pod-Html/bin/
    vendor/perl/dist/ext/Pod-Html/bin/pod2html
    vendor/perl/dist/ext/Pod-Html/lib/
    vendor/perl/dist/ext/Pod-Html/lib/Pod/
    vendor/perl/dist/ext/Pod-Html/lib/Pod/Html.pm
    vendor/perl/dist/ext/Pod-Html/t/cache.pod
    vendor/perl/dist/ext/Pod-Html/t/cache.t
    vendor/perl/dist/ext/Pod-Html/t/crossref.pod
    vendor/perl/dist/ext/Pod-Html/t/crossref.t
    vendor/perl/dist/ext/Pod-Html/t/crossref2.t
    vendor/perl/dist/ext/Pod-Html/t/crossref3.t
    vendor/perl/dist/ext/Pod-Html/t/eol.t
    vendor/perl/dist/ext/Pod-Html/t/feature.pod
    vendor/perl/dist/ext/Pod-Html/t/feature.t
    vendor/perl/dist/ext/Pod-Html/t/feature2.pod
    vendor/perl/dist/ext/Pod-Html/t/feature2.t
    vendor/perl/dist/ext/Pod-Html/t/htmldir1.pod
    vendor/perl/dist/ext/Pod-Html/t/htmldir1.t
    vendor/perl/dist/ext/Pod-Html/t/htmldir2.pod
    vendor/perl/dist/ext/Pod-Html/t/htmldir2.t
    vendor/perl/dist/ext/Pod-Html/t/htmldir3.pod
    vendor/perl/dist/ext/Pod-Html/t/htmldir3.t
    vendor/perl/dist/ext/Pod-Html/t/htmldir4.pod
    vendor/perl/dist/ext/Pod-Html/t/htmldir4.t
    vendor/perl/dist/ext/Pod-Html/t/htmldir5.pod
    vendor/perl/dist/ext/Pod-Html/t/htmldir5.t
    vendor/perl/dist/ext/Pod-Html/t/poderr.pod
    vendor/perl/dist/ext/Pod-Html/t/poderr.t
    vendor/perl/dist/ext/Pod-Html/t/podnoerr.pod
    vendor/perl/dist/ext/Pod-Html/t/podnoerr.t
    vendor/perl/dist/ext/Pod-Html/testdir/
    vendor/perl/dist/ext/Pod-Html/testdir/perlpodspec-copy.pod
    vendor/perl/dist/ext/Pod-Html/testdir/perlvar-copy.pod
    vendor/perl/dist/ext/XS-APItest/t/addissub.t
    vendor/perl/dist/ext/XS-APItest/t/autoload.t
    vendor/perl/dist/ext/XS-APItest/t/callregexec.t
    vendor/perl/dist/ext/XS-APItest/t/check_warnings.t
    vendor/perl/dist/ext/XS-APItest/t/clone-with-stack.t
    vendor/perl/dist/ext/XS-APItest/t/coplabel.t
    vendor/perl/dist/ext/XS-APItest/t/copstash.t
    vendor/perl/dist/ext/XS-APItest/t/fetch_pad_names.t
    vendor/perl/dist/ext/XS-APItest/t/gotosub.t
    vendor/perl/dist/ext/XS-APItest/t/gv_autoload4.t
    vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth.t
    vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth_autoload.t
    vendor/perl/dist/ext/XS-APItest/t/gv_fetchmethod_flags.t
    vendor/perl/dist/ext/XS-APItest/t/gv_init.t
    vendor/perl/dist/ext/XS-APItest/t/handy.t
    vendor/perl/dist/ext/XS-APItest/t/labelconst_utf8.aux
    vendor/perl/dist/ext/XS-APItest/t/lexsub.t
    vendor/perl/dist/ext/XS-APItest/t/lvalue.t
    vendor/perl/dist/ext/XS-APItest/t/mro.t
    vendor/perl/dist/ext/XS-APItest/t/newCONSTSUB.t
    vendor/perl/dist/ext/XS-APItest/t/pad_scalar.t
    vendor/perl/dist/ext/XS-APItest/t/sort.t
    vendor/perl/dist/ext/XS-APItest/t/sviscow.t
    vendor/perl/dist/ext/XS-APItest/t/svpv.t
    vendor/perl/dist/ext/XS-APItest/t/sym-hook.t
    vendor/perl/dist/ext/XS-APItest/t/underscore_length.t
    vendor/perl/dist/ext/XS-APItest/t/whichsig.t
    vendor/perl/dist/ext/arybase/
    vendor/perl/dist/ext/arybase/arybase.pm
    vendor/perl/dist/ext/arybase/arybase.xs
    vendor/perl/dist/ext/arybase/ptable.h
    vendor/perl/dist/ext/arybase/t/
    vendor/perl/dist/ext/arybase/t/aeach.t
    vendor/perl/dist/ext/arybase/t/aelem.t
    vendor/perl/dist/ext/arybase/t/akeys.t
    vendor/perl/dist/ext/arybase/t/arybase.t
    vendor/perl/dist/ext/arybase/t/aslice.t
    vendor/perl/dist/ext/arybase/t/av2arylen.t
    vendor/perl/dist/ext/arybase/t/index.t
    vendor/perl/dist/ext/arybase/t/lslice.t
    vendor/perl/dist/ext/arybase/t/pos.t
    vendor/perl/dist/ext/arybase/t/scope.t
    vendor/perl/dist/ext/arybase/t/scope_0.pm
    vendor/perl/dist/ext/arybase/t/splice.t
    vendor/perl/dist/ext/arybase/t/substr.t
    vendor/perl/dist/lib/File/stat-7896.t
    vendor/perl/dist/lib/_charnames.pm
    vendor/perl/dist/lib/perl5db/t/EnableModule.pm
    vendor/perl/dist/lib/perl5db/t/MyModule.pm
    vendor/perl/dist/lib/perl5db/t/break-on-dot
    vendor/perl/dist/lib/perl5db/t/breakpoint-bug
    vendor/perl/dist/lib/perl5db/t/disable-breakpoints-1
    vendor/perl/dist/lib/perl5db/t/disable-breakpoints-2
    vendor/perl/dist/lib/perl5db/t/disable-breakpoints-3
    vendor/perl/dist/lib/perl5db/t/fact
    vendor/perl/dist/lib/perl5db/t/filename-line-breakpoint
    vendor/perl/dist/lib/perl5db/t/load-modules
    vendor/perl/dist/lib/perl5db/t/rt-104168
    vendor/perl/dist/lib/perl5db/t/source-cmd-test-no-q.perldb
    vendor/perl/dist/lib/perl5db/t/source-cmd-test.perldb
    vendor/perl/dist/lib/perl5db/t/test-PrintRet-option-1
    vendor/perl/dist/lib/perl5db/t/test-a-statement-1
    vendor/perl/dist/lib/perl5db/t/test-dieLevel-option-1
    vendor/perl/dist/lib/perl5db/t/test-frame-option-1
    vendor/perl/dist/lib/perl5db/t/test-l-statement-1
    vendor/perl/dist/lib/perl5db/t/test-l-statement-2
    vendor/perl/dist/lib/perl5db/t/test-m-statement-1
    vendor/perl/dist/lib/perl5db/t/test-passing-at-underscore-to-x-etc
    vendor/perl/dist/lib/perl5db/t/test-r-statement
    vendor/perl/dist/lib/perl5db/t/test-w-statement-1
    vendor/perl/dist/lib/perl5db/t/test-warnLevel-option-1
    vendor/perl/dist/lib/perl5db/t/uncalled-subroutine
    vendor/perl/dist/lib/perl5db/t/with-subroutine
    vendor/perl/dist/lib/version/t/
    vendor/perl/dist/lib/version/t/01base.t
    vendor/perl/dist/lib/version/t/02derived.t
    vendor/perl/dist/lib/version/t/03require.t
    vendor/perl/dist/lib/version/t/04strict_lax.t
    vendor/perl/dist/lib/version/t/05sigdie.t
    vendor/perl/dist/lib/version/t/06noop.t
    vendor/perl/dist/lib/version/t/07locale.t
    vendor/perl/dist/lib/version/t/coretests.pm
    vendor/perl/dist/pod/perl5124delta.pod
    vendor/perl/dist/pod/perl5125delta.pod
    vendor/perl/dist/pod/perl5142delta.pod
    vendor/perl/dist/pod/perl5143delta.pod
    vendor/perl/dist/pod/perl5144delta.pod
    vendor/perl/dist/pod/perl5160delta.pod
    vendor/perl/dist/pod/perl5161delta.pod
    vendor/perl/dist/pod/perl5162delta.pod
    vendor/perl/dist/pod/perl5163delta.pod
    vendor/perl/dist/pod/perl5180delta.pod
    vendor/perl/dist/pod/perldtrace.pod
    vendor/perl/dist/pod/perlexperiment.pod
    vendor/perl/dist/pod/perlootut.pod
    vendor/perl/dist/regen/embed_lib.pl
    vendor/perl/dist/regen/feature.pl
    vendor/perl/dist/regen/mg_vtable.pl
    vendor/perl/dist/regen/mk_invlists.pl
    vendor/perl/dist/regen/regcharclass_multi_char_folds.pl
    vendor/perl/dist/regen/unicode_constants.pl
    vendor/perl/dist/t/bigmem/
    vendor/perl/dist/t/bigmem/read.t
    vendor/perl/dist/t/bigmem/vec.t
    vendor/perl/dist/t/io/shm.t
    vendor/perl/dist/t/lib/Count.pm
    vendor/perl/dist/t/lib/Devel/nodb.pm
    vendor/perl/dist/t/lib/croak/
    vendor/perl/dist/t/lib/croak/mg
    vendor/perl/dist/t/lib/croak/op
    vendor/perl/dist/t/lib/croak/pp_ctl
    vendor/perl/dist/t/lib/croak/pp_hot
    vendor/perl/dist/t/lib/croak/toke
    vendor/perl/dist/t/lib/overload_nomethod.t
    vendor/perl/dist/t/lib/test_require.pm
    vendor/perl/dist/t/mro/basic_01_c3_utf8.t
    vendor/perl/dist/t/mro/basic_01_dfs_utf8.t
    vendor/perl/dist/t/mro/basic_02_c3_utf8.t
    vendor/perl/dist/t/mro/basic_02_dfs_utf8.t
    vendor/perl/dist/t/mro/basic_03_c3_utf8.t
    vendor/perl/dist/t/mro/basic_03_dfs_utf8.t
    vendor/perl/dist/t/mro/basic_04_c3_utf8.t
    vendor/perl/dist/t/mro/basic_04_dfs_utf8.t
    vendor/perl/dist/t/mro/basic_05_c3_utf8.t
    vendor/perl/dist/t/mro/basic_05_dfs_utf8.t
    vendor/perl/dist/t/mro/basic_utf8.t
    vendor/perl/dist/t/mro/c3_with_overload_utf8.t
    vendor/perl/dist/t/mro/complex_c3_utf8.t
    vendor/perl/dist/t/mro/complex_dfs_utf8.t
    vendor/perl/dist/t/mro/dbic_c3_utf8.t
    vendor/perl/dist/t/mro/dbic_dfs_utf8.t
    vendor/perl/dist/t/mro/inconsistent_c3_utf8.t
    vendor/perl/dist/t/mro/isa_aliases_utf8.t
    vendor/perl/dist/t/mro/isa_c3_utf8.t
    vendor/perl/dist/t/mro/isa_dfs_utf8.t
    vendor/perl/dist/t/mro/isarev_utf8.t
    vendor/perl/dist/t/mro/method_caching_utf8.t
    vendor/perl/dist/t/mro/next_NEXT_utf8.t
    vendor/perl/dist/t/mro/next_edgecases_utf8.t
    vendor/perl/dist/t/mro/next_goto_utf8.t
    vendor/perl/dist/t/mro/next_inanon_utf8.t
    vendor/perl/dist/t/mro/next_ineval_utf8.t
    vendor/perl/dist/t/mro/next_method_utf8.t
    vendor/perl/dist/t/mro/next_skip_utf8.t
    vendor/perl/dist/t/mro/overload_c3_utf8.t
    vendor/perl/dist/t/mro/package_aliases_utf8.t
    vendor/perl/dist/t/mro/pkg_gen_utf8.t
    vendor/perl/dist/t/mro/recursion_c3_utf8.t
    vendor/perl/dist/t/mro/recursion_dfs_utf8.t
    vendor/perl/dist/t/mro/vulcan_c3_utf8.t
    vendor/perl/dist/t/mro/vulcan_dfs_utf8.t
    vendor/perl/dist/t/op/closure_test.pl
    vendor/perl/dist/t/op/coreamp.t
    vendor/perl/dist/t/op/coresubs.t
    vendor/perl/dist/t/op/current_sub.t
    vendor/perl/dist/t/op/defined.t
    vendor/perl/dist/t/op/evalbytes.t
    vendor/perl/dist/t/op/for.t
    vendor/perl/dist/t/op/fresh_perl_utf8.t
    vendor/perl/dist/t/op/hash-rt85026.t
    vendor/perl/dist/t/op/heredoc.t
    vendor/perl/dist/t/op/lexsub.t
    vendor/perl/dist/t/op/lock.t
    vendor/perl/dist/t/op/require_37033.t
    vendor/perl/dist/t/op/select.t
    vendor/perl/dist/t/op/sigsystem.t
    vendor/perl/dist/t/op/svleak.pl
    vendor/perl/dist/t/op/unlink.t
    vendor/perl/dist/t/op/while.t
    vendor/perl/dist/t/opbasic/
    vendor/perl/dist/t/opbasic/arith.t
    vendor/perl/dist/t/opbasic/cmp.t
    vendor/perl/dist/t/opbasic/concat.t
    vendor/perl/dist/t/opbasic/magic_phase.t
    vendor/perl/dist/t/opbasic/qq.t
    vendor/perl/dist/t/porting/checkcfgvar.t
    vendor/perl/dist/t/porting/customized.dat
    vendor/perl/dist/t/porting/customized.t
    vendor/perl/dist/t/porting/extrefs.t
    vendor/perl/dist/t/porting/globvar.t
    vendor/perl/dist/t/porting/known_pod_issues.dat
    vendor/perl/dist/t/porting/pending-author.t
    vendor/perl/dist/t/porting/perlfunc.t
    vendor/perl/dist/t/porting/pod_rules.t
    vendor/perl/dist/t/porting/utils.t
    vendor/perl/dist/t/re/pos.t
    vendor/perl/dist/t/re/recompile.t
    vendor/perl/dist/t/re/regex_sets.t
    vendor/perl/dist/t/re/regex_sets_compat.t
    vendor/perl/dist/t/run/dtrace.pl
    vendor/perl/dist/t/run/dtrace.t
    vendor/perl/dist/t/run/flib/
    vendor/perl/dist/t/run/flib/broken.pm
    vendor/perl/dist/t/run/mad.t
    vendor/perl/dist/t/run/switchM.t
    vendor/perl/dist/t/run/switchx3.aux
    vendor/perl/dist/t/test_pl/
    vendor/perl/dist/t/test_pl/_num_to_alpha.t
    vendor/perl/dist/t/test_pl/can_isa_ok.t
    vendor/perl/dist/t/test_pl/tempfile.t
    vendor/perl/dist/t/uni/attrs.t
    vendor/perl/dist/t/uni/bless.t
    vendor/perl/dist/t/uni/caller.t
    vendor/perl/dist/t/uni/eval.t
    vendor/perl/dist/t/uni/goto.t
    vendor/perl/dist/t/uni/gv.t
    vendor/perl/dist/t/uni/labels.t
    vendor/perl/dist/t/uni/method.t
    vendor/perl/dist/t/uni/opcroak.t
    vendor/perl/dist/t/uni/package.t
    vendor/perl/dist/t/uni/parser.t
    vendor/perl/dist/t/uni/readline.t
    vendor/perl/dist/t/uni/select.t
    vendor/perl/dist/t/uni/stash.t
    vendor/perl/dist/t/uni/universal.t
    vendor/perl/dist/t/uni/variables.t
    vendor/perl/dist/t/win32/fs.t
    vendor/perl/dist/t/win32/runenv.t
    vendor/perl/dist/utils/pod2html.PL
    vendor/perl/dist/utils/zipdetails.PL

Added: vendor/perl/dist/Porting/README.pod
===================================================================
--- vendor/perl/dist/Porting/README.pod	                        (rev 0)
+++ vendor/perl/dist/Porting/README.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,355 @@
+=head1 NAME
+
+README.pod - README for the F<Porting/> directory in the Perl 5 core distribution.
+
+=head1 FILES
+
+=head2 F<acknowledgements.pl>
+
+Generates the text which goes in the Acknowledgements section in
+a perldelta. You pass in the previous version and it guesses the next
+version, fetches information from the repository and outputs the
+text.
+
+=head2 F<add-package.pl>
+
+Program to prepare dual-life distributions for insertion into the Perl 5
+F<lib/> and F<t/> directories.  Now thought to be largely superseded.
+
+=head2 F<bisect-example.sh>, F<bisect-runner.pl> and F<bisect.pl>
+
+Use C<git bisect> to pinpoint changes.
+
+=head2 F<bump-perl-version>
+
+A utility to find, and optionally bump, references to the perl version
+number in various files within the perl source.
+
+=head2 F<check83.pl>
+
+Performs pathname portability checks, including whether there are naming
+conflicts when names are truncated to the DOSish, case-ignoring 8.3 format.
+
+=head2 F<checkAUTHORS.pl>
+
+Used by F<t/porting/authors.t> to ensure the F<AUTHORS> list is up to date.
+
+=head2 F<checkURL.pl>
+
+Checks that all the URLs in the Perl source are valid.
+
+=head2 F<checkVERSION.pl>
+
+Used by F<t/porting/cmp_version.t> to ensure changed modules have had their
+versions updated.
+
+=head2 F<checkansi.pl>
+
+Check source code for ANSI-C violations.
+
+=head2 F<checkcfgvar.pl>
+
+Check that the various F<config.sh>-clones have (at least) all the same
+symbols as the top-level F<config_h.SH> so that the (potentially) needed
+symbols are not lagging after how F<Configure> thinks the world is laid out.
+VMS is probably not handled properly here, due to their own rather elaborate
+DCL scripting.
+
+=head2 F<check-cpan-pollution>
+
+Scans the commit logs for commits that are potentially, illegitimately
+touching modules that are primarily maintained outside of the perl core.  Also
+checks for commits that span multiple distributions in F<cpan/> or F<dist/>.
+Makes sure that updated CPAN distributions also update
+F<Porting/Maintainers.pl>, but otherwise ignores changes to that file (and
+F<MANIFEST>).
+
+=head2 F<checkpodencoding.pl>
+
+Check if POD files contain non-ASCII without specifying
+encoding. Run it as: C<perl Porting/checkpodencoding.pl>.
+
+=head2 F<cherrymaint>
+
+Command line tool to update cherrymaint; a tool for selecting commits from 
+blead to cherry-pick into stable perl versions.
+
+=head2 F<cmpVERSION.pl>
+
+Compare the current Perl source tree and a given tag for modules that have
+identical version numbers but different contents.
+
+=head2 F<config_H>
+
+This file is a sample F<config.h> file.  If you are unable to successfully run
+F<Configure>, copy this file to F<config.h> and edit it to suit your system.
+
+=head2 F<config_h.pl>
+
+Used when importing changes from F<metaconfig>.  This script reorders
+F<config_h.SH> after metaconfig.
+
+=head2 F<config.sh>
+
+This file is a sample F<config.sh> file.  F<config.sh> is normally
+produced by running the F<Configure> script. It holds all the definitions
+figured out by F<Configure>.  If you are unable to successfully run
+F<Configure> on your system, copy this sample file to F<config.sh>
+at the top of the perl source tree and edit it to suit your system.
+Then propagate those values by running C<Configure -S>.  This sample
+file is normally updated each time F<Configure> is updated.
+
+=head2 F<core-cpan-diff>
+
+Compare CPAN modules with their equivalent in core. 
+Originally based on App::DualLivedDiff by Steffen Mueller.
+
+=head2 F<corecpan.pl>
+
+Reports, in a perl source tree, which dual-lived core modules have not the
+same version than the corresponding module on CPAN.
+
+=head2 F<corelist-diff>
+
+Prints a table of differences between two Perl versions with respect to
+modules included in the distribution.
+
+=head2 F<corelist.pl>
+
+Generates info for Module::CoreList from this perl tree.
+
+=head2 F<corelist-perldelta.pl>
+
+Generates a list of the module changes for the Perl you are currently
+building.  Also generates a diff between the corelist sections of two
+F<perldelta*> files.
+
+=head2 F<epigraphs.pod>
+
+List of Perl release epigraphs.
+
+=head2 F<exec-bit.txt>
+
+This file contains a list of files that F<makerel> will ensure get an
+executable bit.
+
+=head2 F<exercise_makedef.pl>
+
+Brute force testing for F<makedef.pl>.
+
+=head2 F<expand-macro.pl>
+
+Expand C macros using the C preprocessor.
+
+=head2 F<findrfuncs>
+
+This script finds reentrant variants of functions used in an executable and
+shared objects.
+
+=head2 F<GitUtils.pm>
+
+This script contains the subroutine to generate a F<.patch file> for a
+committish (the SHA1 checksum of a commit, a number made of 40 hexadecimal
+digits which acts the internal unique identifier for this commit
+(lilypond.org).  Related file: F<make_dot_patch.pl>
+
+=head2 F<git-deltatool>
+
+This script, a rough draft, aids in generating a perldelta file
+from a series of git commits.
+
+=head2 F<git-find-p4-change>
+
+This script, given a Perforce change number, outputs the equivalent git commit
+id.
+
+=head2 F<git-make-p4-refs>
+
+This script creates a tag for every p4raw-id.
+
+=head2 F<Glossary>
+
+This file is built by F<metaconfig>. This file contains a description of all
+the shell variables whose value is determined by the Configure script. 
+It later gets incorporated into the pod for F<Config.pm>.
+
+=head2 F<how_to_write_a_perldelta.pod> 
+
+This file contains a specification as to how to write a perldelta pod.
+Related file: F<perldelta_template.pod>
+
+=head2 F<leakfinder.pl>
+
+This script executes every line in every file in the build directory and its
+subdirectories to determine if the number of SVs goes up and reports it as a
+leak to STDOUT.  WARNING! some harm could be done if a line contains something
+similar to C<`rm *`>.
+
+=head2 F<Maintainers>
+
+This script shows information about the maintainers of core files/modules.
+
+Related files: F<Maintainers.pl>, F<Maintainers.pm>
+
+=head2 F<Maintainers.pl>
+
+A package associating core files/modules with maintainers.  Related files:
+F<Maintainers>, F<Maintainers.pm>
+
+=head2 F<Maintainers.pm>
+
+A package to search and show information about which core files/modules are
+associated with maintainers.  Related files: F<Maintainers>, F<Maintainers.pl>
+
+=head2 F<make-rmg-checklist>
+
+This script creates a release checklist as a simple HTML document.
+
+=head2 F<make_dot_patch.pl>
+
+Generate a F<.patch> file to STDOUT for a commit ID specified on the
+command-line.
+
+=head2 F<make_modlib_cpan.pl>
+
+This script generates the list of registered CPAN sites in F<perlmodlib.PL>.
+
+=head2 F<make_snapshot.pl>
+
+This script is a quick and dirty snapshot generator for the perl5.git.perl.org
+web page to use to generate the snapshot files. 
+
+=head2 F<makemeta>
+
+This script creates F<META.yml> and F<META.json> files.
+
+=head2 F<makerel>
+
+This script builds a Perl release tarball.
+
+=head2 F<manicheck>
+
+This script outputs a list of files in F<MANIFEST> which don't exist and a
+list of files that exist and aren't in F<MANIFEST>.
+
+=head2 F<manisort>
+
+This script sorts the files in F<MANIFEST>.
+
+=head2 F<new-perldelta.pl>
+
+This script automates the process for creating perldelta.pl.
+
+=head2 F<newtests-perldelta.pl>
+
+This script outputs the added tests between the two versions of Perl.
+
+=head2 F<perldelta_template.pod>
+
+Template for F<perldelta>.
+
+=head2 F<perlhist_calculate.pl>
+
+Generates info for F<perlhist> from this perl tree.
+
+=head2 F<pod_lib.pl>
+
+When C<require>d into other programs in the Perl 5 core
+distribution, provides functions useful during testing.
+
+=head2 F<pod_rules.pl>
+
+Generate the sections of files listed in C<%Targets> from F<pod/perl.pod>.
+Mostly these are rules in Makefiles.
+
+ --verbose gives slightly more output
+ --build-all tries to build everything
+ --build-foo updates foo as follows
+ --showfiles shows the files to be changed
+ --test exit if perl.pod, MANIFEST are consistent, and regenerated
+   files are up to date, die otherwise.
+
+=head2 F<podtidy>
+
+Applies F<podtidy> to a file.
+
+=head2 F<pumpkin.pod>
+
+Pumpkin - Notes on handling the Perl Patch Pumpkin And Porting Perl.
+Many of these are out of date or superseded by other documents in 
+this directory.
+
+=head2 F<README.y2038>
+
+The y2038 implementation for perl. This is an implementation of POSIX time.h
+which solves the year 2038 bug on systems where time_t is only 32 bits.  It is
+implemented in bog-standard ANSI C. The latest version can be found at
+L<http://y2038.googlecode.com/>.
+
+=head2 F<release_announcement_template.txt>
+
+Release announcment for minor releasements of the 5.17 development series.
+
+=head2 F<release_managers_guide.pod>
+
+Releasing a new version of perl 5.x. Note that things change at each release,
+so there may be new things not covered here, or tools may need updating.
+
+=head2 F<release_schedule.pod>
+
+This schedule lists the projected or historical development and release
+schedules for the next, current and previous stable versions of Perl. Dates
+with all question marks will only be releases if deemed necessary by the
+Pumpking.
+
+=head2 F<rt_list_patches>
+
+Shell script to list patches in RT.
+
+=head2 F<sort_perldiag.pl>
+
+This is a script for sorting the warning and error messages in
+F<perldiag.pod>.  POD formatting, printf-style escapes, non-letter characters,
+and case are ignored, as explained in L<perldiag>.
+
+=head2 F<testall.atom>
+
+Test suite profiling on Tru 64.
+
+=head2 F<thirdclean>
+
+Script for cleaning out the "known noise" from Third Degree reports: either
+noise caused by F<libc> itself, or F<Perl_yyparse> leaks.
+
+=head2 F<time>
+
+A helper tool for perl's 2038 support. See F<Porting/README.y2038> for details.
+
+=head2 F<timecheck2.c>
+
+A little program to test the limits of your system's time functions. See
+F<Porting/README.y2038> for details.
+
+=head2 F<timecheck.c>
+
+A helper tool for perl's 2038 support See F<Porting/README.y2038> for details.
+
+=head2 F<todo.pod>
+
+This is a list of wishes for Perl. The most up-to-date version of this file is
+at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>.
+The tasks we think are smaller or easier are listed first.  Anyone is welcome
+to work on any of these, but it's a good idea to first contact
+F<perl5-porters at perl.org> to avoid duplication of effort, and to learn from
+any previous attempts.
+
+=head2 F<valgrindpp.pl>
+
+A post-processor for C<make test.valgrind>.  F<valgrindpp.pl> is a
+post-processor for F<.valgrind> files created during C<make test.valgrind>. It
+collects all these files, extracts most of the information and produces a
+significantly shorter summary of all detected memory access errors and memory
+leaks.
+
+=cut
+

Added: vendor/perl/dist/Porting/acknowledgements.pl
===================================================================
--- vendor/perl/dist/Porting/acknowledgements.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/acknowledgements.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,150 @@
+#!perl
+
+=head1 NAME
+
+Porting/acknowledgements.pl - Generate perldelta acknowledgements text
+
+=head1 SYNOPSIS
+
+  perl Porting/acknowledgements.pl v5.15.0..HEAD
+
+=head1 DESCRIPTION
+
+This generates the text which goes in the Acknowledgements section in
+a perldelta. You pass in the previous version and it guesses the next
+version, fetches information from the repository and outputs the
+text.
+
+=cut
+
+use strict;
+use warnings;
+use autodie;
+use POSIX qw(ceil);
+use Text::Wrap;
+use Time::Piece;
+use Time::Seconds;
+use version;
+$Text::Wrap::columns = 80;
+
+my $since_until = shift;
+
+my ( $since, $until ) = split '\.\.', $since_until;
+
+die "Usage: perl Porting/acknowledgements.pl v5.15.0..HEAD"
+    unless $since_until && $since && $until;
+
+my $previous_version = previous_version();
+my $next_version     = next_version();
+my $development_time = development_time();
+
+my ( $changes, $files ) = changes_files();
+my $formatted_changes = commify( round($changes) );
+my $formatted_files   = commify( round($files) );
+
+my $authors = authors();
+my $nauthors = $authors =~ tr/,/,/;
+$nauthors++;
+
+my $text
+    = "Perl $next_version represents approximately $development_time of development
+since Perl $previous_version and contains approximately $formatted_changes
+lines of changes across $formatted_files files from $nauthors authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers. The following people are known to
+have contributed the improvements that became Perl $next_version:
+
+$authors
+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.";
+
+my $wrapped = fill( '', '', $text );
+print "$wrapped\n";
+
+# return the previous Perl version, eg 5.15.0
+sub previous_version {
+    my $version = version->new($since);
+    $version =~ s/^v//;
+    return $version;
+}
+
+# returns the upcoming release Perl version, eg 5.15.1
+sub next_version {
+    my $version = version->new($since);
+    ( $version->{version}->[-1] )++;
+    return version->new( join( '.', @{ $version->{version} } ) );
+}
+
+# returns the development time since the previous version in weeks
+# or months
+sub development_time {
+    my $first_timestamp = qx(git log -1 --pretty=format:%ct --summary $since);
+    my $last_timestamp  = qx(git log -1 --pretty=format:%ct --summary $until);
+
+    die "Missing first timestamp" unless $first_timestamp;
+    die "Missing last timestamp" unless $last_timestamp;
+
+    my $seconds = localtime($last_timestamp) - localtime($first_timestamp);
+    my $weeks   = _round( $seconds / ONE_WEEK );
+    my $months  = _round( $seconds / ONE_MONTH );
+
+    my $development_time;
+    if ( $months < 2 ) {
+        return "$weeks @{[$weeks == 1 ? q(week) : q(weeks)]}";
+    } else {
+        return "$months months";
+    }
+}
+
+sub _round {
+    my $val = shift;
+
+    my $int = int $val;
+    my $remainder = $val - $int;
+
+    return $remainder >= 0.5 ? $int + 1 : $int;
+}
+
+# returns the number of changed lines and files since the previous
+# version
+sub changes_files {
+    my $output = qx(git diff --shortstat $since_until);
+
+    # 585 files changed, 156329 insertions(+), 53586 deletions(-)
+    my ( $files, $insertions, $deletions )
+        = $output
+        =~ /(\d+) files changed, (\d+) insertions\(\+\), (\d+) deletions\(-\)/;
+    my $changes = $insertions + $deletions;
+    return ( $changes, $files );
+}
+
+# rounds an integer to two significant figures
+sub round {
+    my $int     = shift;
+    my $length  = length($int);
+    my $divisor = 10**( $length - 2 );
+    return ceil( $int / $divisor ) * $divisor;
+}
+
+# adds commas to a number at thousands, millions
+sub commify {
+    local $_ = shift;
+    1 while s/^([-+]?\d+)(\d{3})/$1,$2/;
+    return $_;
+}
+
+# returns a list of the authors
+sub authors {
+    return
+        qx(git log --pretty=fuller $since_until | $^X Porting/checkAUTHORS.pl --who -);
+}

Added: vendor/perl/dist/Porting/bisect-example.sh
===================================================================
--- vendor/perl/dist/Porting/bisect-example.sh	                        (rev 0)
+++ vendor/perl/dist/Porting/bisect-example.sh	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+#!/bin/sh
+echo >&2 You need to edit this to run your test case
+exit 1
+
+git clean -dxf
+
+# If you get './makedepend: 1: Syntax error: Unterminated quoted
+# string' when bisecting versions of perl older than 5.9.5 this hack
+# will work around the bug in makedepend.SH which was fixed in
+# version 96a8704c. Make sure to uncomment 'git checkout makedepend.SH'
+# below too.
+#git show blead:makedepend.SH > makedepend.SH
+
+# If you can use ccache, add -Dcc=ccache\ gcc -Dld=gcc to the Configure line
+# if Encode is not needed for the test, you can speed up the bisect by
+# excluding it from the runs with -Dnoextensions=Encode
+# ie
+#./Configure -Dusedevel -Doptimize=-g -Dcc=ccache\ gcc -Dld=gcc -Dnoextensions=Encode -des
+./Configure -Dusedevel -Doptimize=-g -des
+test -f config.sh || exit 125
+# Correct makefile for newer GNU gcc
+perl -ni -we 'print unless /<(?:built-in|command)/' makefile x2p/makefile
+# if you just need miniperl, replace test_prep with miniperl
+make test_prep
+[ -x ./perl ] || exit 125
+# This runs the actual testcase. You could use -e instead:
+./perl -Ilib ~/testcase.pl
+ret=$?
+[ $ret -gt 127 ] && ret=127
+git checkout makedepend.SH
+git clean -dxf
+exit $ret
+
+#if you need to invert the exit code, replace the above exit with this:
+#[ $ret -eq 0 ] && exit 1
+#exit 0

Added: vendor/perl/dist/Porting/bisect-runner.pl
===================================================================
--- vendor/perl/dist/Porting/bisect-runner.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/bisect-runner.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3010 @@
+#!/usr/bin/perl -w
+use strict;
+
+use Getopt::Long qw(:config bundling no_auto_abbrev);
+use Pod::Usage;
+use Config;
+use Carp;
+
+my @targets
+    = qw(config.sh config.h miniperl lib/Config.pm Fcntl perl test_prep);
+
+my $cpus;
+if (open my $fh, '<', '/proc/cpuinfo') {
+    while (<$fh>) {
+        ++$cpus if /^processor\s+:\s+\d+$/;
+    }
+} elsif (-x '/sbin/sysctl') {
+    $cpus = 1 + $1 if `/sbin/sysctl hw.ncpu` =~ /^hw\.ncpu: (\d+)$/;
+} elsif (-x '/usr/bin/getconf') {
+    $cpus = 1 + $1 if `/usr/bin/getconf _NPROCESSORS_ONLN` =~ /^(\d+)$/;
+}
+
+my %options =
+    (
+     jobs => defined $cpus ? $cpus + 1 : 2,
+     'expect-pass' => 1,
+     clean => 1, # mostly for debugging this
+    );
+
+my $linux64 = `uname -sm` eq "Linux x86_64\n" ? '64' : '';
+
+my @paths;
+
+if ($^O eq 'linux') {
+    # This is the search logic for a multi-arch library layout
+    # added to linux.sh in commits 40f026236b9959b7 and dcffd848632af2c7.
+    my $gcc = -x '/usr/bin/gcc' ? '/usr/bin/gcc' : 'gcc';
+
+    foreach (`$gcc -print-search-dirs`) {
+        next unless /^libraries: =(.*)/;
+        foreach (split ':', $1) {
+            next if m/gcc/;
+            next unless -d $_;
+            s!/$!!;
+            push @paths, $_;
+        }
+    }
+}
+
+push @paths, map {$_ . $linux64} qw(/usr/local/lib /lib /usr/lib);
+
+my %defines =
+    (
+     usedevel => '',
+     optimize => '-g',
+     ld => 'cc',
+     ($linux64 ? (libpth => \@paths) : ()),
+    );
+
+unless(GetOptions(\%options,
+                  'target=s', 'make=s', 'jobs|j=i', 'expect-pass=i',
+                  'expect-fail' => sub { $options{'expect-pass'} = 0; },
+                  'clean!', 'one-liner|e=s', 'c', 'l', 'w', 'match=s',
+                  'no-match=s' => sub {
+                      $options{match} = $_[1];
+                      $options{'expect-pass'} = 0;
+                  },
+                  'force-manifest', 'force-regen', 'test-build', 'validate',
+                  'check-args', 'check-shebang!', 'usage|help|?', 'A=s@',
+                  'D=s@' => sub {
+                      my (undef, $val) = @_;
+                      if ($val =~ /\A([^=]+)=(.*)/s) {
+                          $defines{$1} = length $2 ? $2 : "\0";
+                      } else {
+                          $defines{$val} = '';
+                      }
+                  },
+                  'U=s@' => sub {
+                      $defines{$_[1]} = undef;
+                  },
+		 )) {
+    pod2usage(exitval => 255, verbose => 1);
+}
+
+my ($target, $j, $match) = @options{qw(target jobs match)};
+
+ at ARGV = ('sh', '-c', 'cd t && ./perl TEST base/*.t')
+    if $options{validate} && !@ARGV;
+
+pod2usage(exitval => 0, verbose => 2) if $options{usage};
+pod2usage(exitval => 255, verbose => 1)
+    unless @ARGV || $match || $options{'test-build'} || defined $options{'one-liner'};
+pod2usage(exitval => 255, verbose => 1)
+    if !$options{'one-liner'} && ($options{l} || $options{w});
+
+check_shebang($ARGV[0])
+    if $options{'check-shebang'} && @ARGV && !$options{match};
+
+exit 0 if $options{'check-args'};
+
+=head1 NAME
+
+bisect.pl - use git bisect to pinpoint changes
+
+=head1 SYNOPSIS
+
+    # When did this become an error?
+    .../Porting/bisect.pl -e 'my $a := 2;'
+    # When did this stop being an error?
+    .../Porting/bisect.pl --expect-fail -e '1 // 2'
+    # When were all lines matching this pattern removed from all files?
+    .../Porting/bisect.pl --match '\b(?:PL_)hash_seed_set\b'
+    # When was some line matching this pattern added to some file?
+    .../Porting/bisect.pl --expect-fail --match '\buseithreads\b'
+    # When did this test program stop exiting 0?
+    .../Porting/bisect.pl -- ./perl -Ilib ../test_prog.pl
+    # When did this test start failing?
+    .../Porting/bisect.pl -- ./perl -Ilib t/TEST op/sort.t
+    # When did this first become valid syntax?
+    .../Porting/bisect.pl --target=miniperl --end=v5.10.0 \
+         --expect-fail -e 'my $a := 2;'
+    # What was the last revision to build with these options?
+    .../Porting/bisect.pl --test-build -Dd_dosuid
+
+=head1 DESCRIPTION
+
+Together F<bisect.pl> and F<bisect-runner.pl> attempt to automate the use
+of C<git bisect> as much as possible. With one command (and no other files)
+it's easy to find out
+
+=over 4
+
+=item *
+
+Which commit caused this example code to break?
+
+=item *
+
+Which commit caused this example code to start working?
+
+=item *
+
+Which commit added the first file to match this regex?
+
+=item *
+
+Which commit removed the last file to match this regex?
+
+=back
+
+usually without needing to know which versions of perl to use as start and
+end revisions.
+
+By default F<bisect.pl> will process all options, then use the rest of the
+command line as arguments to list C<system> to run a test case. By default,
+the test case should pass (exit with 0) on earlier perls, and fail (exit
+non-zero) on I<blead> (note that running most of perl's test files directly
+won't do this, you'll need to run them through a harness to get the proper
+error code). F<bisect.pl> will use F<bisect-runner.pl> to find the earliest
+stable perl version on which the test case passes, check that it fails on
+blead, and then use F<bisect-runner.pl> with C<git bisect run> to find the
+commit which caused the failure.
+
+Because the test case is the complete argument to C<system>, it is easy to
+run something other than the F<perl> built, if necessary. If you need to run
+the perl built, you'll probably need to invoke it as C<./perl -Ilib ...>
+
+You need a clean checkout to run a bisect, and you can't use the checkout
+which contains F<Porting/bisect.pl> (because C<git bisect>) will check out
+a revision before F<Porting/bisect-runner.pl> was added, which
+C<git bisect run> needs). If your working checkout is called F<perl>, the
+simplest solution is to make a local clone, and run from that. I<i.e.>:
+
+    cd ..
+    git clone perl perl2
+    cd perl2
+    ../perl/Porting/bisect.pl ...
+
+By default, F<bisect-runner.pl> will automatically disable the build of
+L<DB_File> for commits earlier than ccb44e3bf3be2c30, as it's not practical
+to patch DB_File 1.70 and earlier to build with current Berkeley DB headers.
+(ccb44e3bf3be2c30 was in September 1999, between 5.005_62 and 5.005_63.)
+If your F<db.h> is old enough you can override this with C<-Unoextensions>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item *
+
+--start I<commit-ish>
+
+Earliest revision to test, as a I<commit-ish> (a tag, commit or anything
+else C<git> understands as a revision). If not specified, F<bisect.pl> will
+search stable perl releases until it finds one where the test case passes.
+The default is to search from 5.002 to 5.14.0. If F<bisect.pl> detects that
+the checkout is on a case insensitive file system, it will search from
+5.005 to 5.14.0
+
+=item *
+
+--end I<commit-ish>
+
+Most recent revision to test, as a I<commit-ish>. If not specified, defaults
+to I<blead>.
+
+=item *
+
+--target I<target>
+
+F<Makefile> target (or equivalent) needed, to run the test case. If specified,
+this should be one of
+
+=over 4
+
+=item *
+
+I<config.sh>
+
+Just run F<./Configure>
+
+=item *
+
+I<config.h>
+
+Run the various F<*.SH> files to generate F<Makefile>, F<config.h>, I<etc>.
+
+=item *
+
+I<miniperl>
+
+Build F<miniperl>.
+
+=item *
+
+I<lib/Config.pm>
+
+Use F<miniperl> to build F<lib/Config.pm>
+
+=item *
+
+I<Fcntl>
+
+Build F<lib/auto/Fcntl/Fnctl.so> (strictly, C<.$Config{so}>). As L<Fcntl>
+is simple XS module present since 5.000, this provides a fast test of
+whether XS modules can be built. Note, XS modules are built by F<miniperl>,
+hence this target will not build F<perl>.
+
+=item *
+
+I<perl>
+
+Build F<perl>. This also builds pure-Perl modules in F<cpan>, F<dist> and
+F<ext>. XS modules (such as L<Fcntl>) are not built.
+
+=item *
+
+I<test_prep>
+
+Build everything needed to run the tests. This is the default if we're
+running test code, but is time consuming, as it means building all
+XS modules. For older F<Makefile>s, the previous name of C<test-prep>
+is automatically substituted. For very old F<Makefile>s, C<make test> is
+run, as there is no target provided to just get things ready, and for 5.004
+and earlier the tests run very quickly.
+
+=back
+
+=item *
+
+--one-liner 'code to run'
+
+=item *
+
+-e 'code to run'
+
+Example code to run, just like you'd use with C<perl -e>.
+
+This prepends C<./perl -Ilib -e 'code to run'> to the test case given,
+or F<./miniperl> if I<target> is C<miniperl>.
+
+(Usually you'll use C<-e> instead of providing a test case in the
+non-option arguments to F<bisect.pl>)
+
+C<-E> intentionally isn't supported, as it's an error in 5.8.0 and earlier,
+which interferes with detecting errors in the example code itself.
+
+=item *
+
+-c
+
+Add C<-c> to the command line, to cause perl to exit after syntax checking.
+
+=item *
+
+-l
+
+Add C<-l> to the command line with C<-e>
+
+This will automatically append a newline to every output line of your testcase.
+Note that you can't specify an argument to F<perl>'s C<-l> with this, as it's
+not feasible to emulate F<perl>'s somewhat quirky switch parsing with
+L<Getopt::Long>. If you need the full flexibility of C<-l>, you need to write
+a full test case, instead of using C<bisect.pl>'s C<-e> shortcut.
+
+=item *
+
+-w
+
+Add C<-w> to the command line with C<-e>
+
+It's not valid to pass C<-c>,  C<-l> or C<-w> to C<bisect.pl> unless you are
+also using C<-e>
+
+=item *
+
+--expect-fail
+
+The test case should fail for the I<start> revision, and pass for the I<end>
+revision. The bisect run will find the first commit where it passes.
+
+=item *
+
+-D I<config_arg=value>
+
+=item *
+
+-U I<config_arg>
+
+=item *
+
+-A I<config_arg=value>
+
+Arguments (C<-A>, C<-D>, C<-U>) to pass to F<Configure>. For example,
+
+    -Dnoextensions=Encode
+    -Uusedevel
+    -Accflags=-DNO_MATHOMS
+
+Repeated C<-A> arguments are passed
+through as is. C<-D> and C<-U> are processed in order, and override
+previous settings for the same parameter. F<bisect-runner.pl> emulates
+C<-Dnoextensions> when F<Configure> itself does not provide it, as it's
+often very useful to be able to disable some XS extensions.
+
+=item *
+
+--make I<make-prog>
+
+The C<make> command to use. If this not set, F<make> is used. If this is
+set, it also adds a C<-Dmake=...> else some recursive make invocations
+in extensions may fail. Typically one would use this as C<--make gmake>
+to use F<gmake> in place of the system F<make>.
+
+=item *
+
+--jobs I<jobs>
+
+=item *
+
+-j I<jobs>
+
+Number of C<make> jobs to run in parallel. If F</proc/cpuinfo> exists and
+can be parsed, or F</sbin/sysctl> exists and reports C<hw.ncpu>, or
+F</usr/bin/getconf> exists and reports C<_NPROCESSORS_ONLN> defaults to 1 +
+I<number of CPUs>. Otherwise defaults to 2.
+
+=item *
+
+--match pattern
+
+=item *
+
+--no-match pattern
+
+Instead of running a test program to determine I<pass> or I<fail>,
+C<--match> will pass if the given regex matches, and hence search for the
+commit that removes the last matching file. C<--no-match> inverts the test,
+to search for the first commit that adds files that match.
+
+The remaining command line arguments are treated as glob patterns for files
+to match against. If none are specified, then they default as follows:
+
+=over 4
+
+=item *
+
+If no I<target> is specified, the match is against all files in the
+repository (which is fast).
+
+=item *
+
+If a I<target> is specified, that target is built, and the match is against
+only the built files.
+
+=back
+
+Treating the command line arguments as glob patterns should not cause
+problems, as the perl distribution has never shipped or built files with
+names that contain characters which are globbing metacharacters.
+
+Anything which is not a readable file is ignored, instead of generating an
+error. (If you want an error, run C<grep> or C<ack> as a test case). This
+permits one to easily search in a file that changed its name. For example:
+
+    .../Porting/bisect.pl --match 'Pod.*Functions' 'pod/buildtoc*'
+
+C<--no-match ...> is implemented as C<--expect-fail --match ...>
+
+=item *
+
+--test-build
+
+Test that the build completes, without running any test case.
+
+By default, if the build for the desired I<target> fails to complete,
+F<bisect-runner.pl> reports a I<skip> back to C<git bisect>, the assumption
+being that one wants to find a commit which changed state "builds && passes"
+to "builds && fails". If instead one is interested in which commit broke the
+build (possibly for particular F<Configure> options), use I<--test-build>
+to treat a build failure as a failure, not a "skip".
+
+Often this option isn't as useful as it first seems, because I<any> build
+failure will be reported to C<git bisect> as a failure, not just the failure
+that you're interested in. Generally, to debug a particular problem, it's
+more useful to use a I<target> that builds properly at the point of interest,
+and then a test case that runs C<make>. For example:
+
+    .../Porting/bisect.pl --start=perl-5.000 --end=perl-5.002 \
+        --expect-fail --force-manifest --target=miniperl make perl
+
+will find the first revision capable of building L<DynaLoader> and then
+F<perl>, without becoming confused by revisions where F<miniperl> won't
+even link.
+
+=item *
+
+--force-manifest
+
+By default, a build will "skip" if any files listed in F<MANIFEST> are not
+present. Usually this is useful, as it avoids false-failures. However, there
+are some long ranges of commits where listed files are missing, which can
+cause a bisect to abort because all that remain are skipped revisions.
+
+In these cases, particularly if the test case uses F<miniperl> and no modules,
+it may be more useful to force the build to continue, even if files
+F<MANIFEST> are missing.
+
+=item *
+
+--force-regen
+
+Run C<make regen_headers> before building F<miniperl>. This may fix a build
+that otherwise would skip because the generated headers at that revision
+are stale. It's not the default because it conceals this error in the true
+state of such revisions.
+
+=item *
+
+--expect-pass [0|1]
+
+C<--expect-pass=0> is equivalent to C<--expect-fail>. I<1> is the default.
+
+=item *
+
+--no-clean
+
+Tell F<bisect-runner.pl> not to clean up after the build. This allows one
+to use F<bisect-runner.pl> to build the current particular perl revision for
+interactive testing, or for debugging F<bisect-runner.pl>.
+
+Passing this to F<bisect.pl> will likely cause the bisect to fail badly.
+
+=item *
+
+--validate
+
+Test that all stable revisions can be built. By default, attempts to build
+I<blead>, I<v5.14.0> .. I<perl-5.002> (or I<perl5.005> on a case insensitive
+file system). Stops at the first failure, without
+cleaning the checkout. Use I<--start> to specify the earliest revision to
+test, I<--end> to specify the most recent. Useful for validating a new
+OS/CPU/compiler combination. For example
+
+    ../perl/Porting/bisect.pl --validate -le 'print "Hello from $]"'
+
+If no testcase is specified, the default is to use F<t/TEST> to run
+F<t/base/*.t>
+
+=item *
+
+--check-args
+
+Validate the options and arguments, and exit silently if they are valid.
+
+=item *
+
+--check-shebang
+
+Validate that the test case isn't an executable file with a
+C<#!/usr/bin/perl> line (or similar). As F<bisect-runner.pl> does B<not>
+prepend C<./perl> to the test case, a I<#!> line specifying an external
+F<perl> binary will cause the test case to always run with I<that> F<perl>,
+not the F<perl> built by the bisect runner. Likely this is not what you
+wanted. If your test case is actually a wrapper script to run other
+commands, you should run it with an explicit interpreter, to be clear. For
+example, instead of C<../perl/Porting/bisect.pl ~/test/testcase.pl> you'd
+run C<../perl/Porting/bisect.pl /usr/bin/perl ~/test/testcase.pl>
+
+=item *
+
+--usage
+
+=item *
+
+--help
+
+=item *
+
+-?
+
+Display the usage information and exit.
+
+=back
+
+=cut
+
+die "$0: Can't build $target" if defined $target && !grep {@targets} $target;
+
+unless (exists $defines{cc}) {
+    # If it fails, the heuristic of 63f9ec3008baf7d6 is noisy, and hence
+    # confusing.
+    # FIXME - really it should be replaced with a proper test of
+    # "can we build something?" and a helpful diagnostic if we can't.
+    # For now, simply move it here.
+    $defines{cc} = (`ccache -V`, $?) ? 'cc' : 'ccache cc';
+}
+
+$j = "-j$j" if $j =~ /\A\d+\z/;
+
+if (exists $options{make}) {
+    if (!exists $defines{make}) {
+        $defines{make} = $options{make};
+    }
+} else {
+    $options{make} = 'make';
+}
+
+# Sadly, however hard we try, I don't think that it will be possible to build
+# modules in ext/ on x86_64 Linux before commit e1666bf5602ae794 on 1999/12/29,
+# which updated to MakeMaker 3.7, which changed from using a hard coded ld
+# in the Makefile to $(LD). On x86_64 Linux the "linker" is gcc.
+
+sub open_or_die {
+    my $file = shift;
+    my $mode = @_ ? shift : '<';
+    open my $fh, $mode, $file or croak("Can't open $file: $!");
+    ${*$fh{SCALAR}} = $file;
+    return $fh;
+}
+
+sub close_or_die {
+    my $fh = shift;
+    return if close $fh;
+    croak("Can't close: $!") unless ref $fh eq 'GLOB';
+    croak("Can't close ${*$fh{SCALAR}}: $!");
+}
+
+sub extract_from_file {
+    my ($file, $rx, $default) = @_;
+    my $fh = open_or_die($file);
+    while (<$fh>) {
+	my @got = $_ =~ $rx;
+	return wantarray ? @got : $got[0]
+	    if @got;
+    }
+    return $default if defined $default;
+    return;
+}
+
+sub edit_file {
+    my ($file, $munger) = @_;
+    local $/;
+    my $fh = open_or_die($file);
+    my $orig = <$fh>;
+    die "Can't read $file: $!" unless defined $orig && close $fh;
+    my $new = $munger->($orig);
+    return if $new eq $orig;
+    $fh = open_or_die($file, '>');
+    print $fh $new or die "Can't print to $file: $!";
+    close_or_die($fh);
+}
+
+# AIX supplies a pre-historic patch program, which certainly predates Linux
+# and is probably older than NT. It can't cope with unified diffs. Meanwhile,
+# it's hard enough to get git diff to output context diffs, let alone git show,
+# and nearly all the patches embedded here are unified. So it seems that the
+# path of least resistance is to convert unified diffs to context diffs:
+
+sub process_hunk {
+    my ($from_out, $to_out, $has_from, $has_to, $delete, $add) = @_;
+    ++$$has_from if $delete;
+    ++$$has_to if $add;
+
+    if ($delete && $add) {
+        $$from_out .= "! $_\n" foreach @$delete;
+        $$to_out .= "! $_\n" foreach @$add;
+    } elsif ($delete) {
+        $$from_out .= "- $_\n" foreach @$delete;
+    } elsif ($add) {
+         $$to_out .= "+ $_\n" foreach @$add;
+    }
+}
+
+# This isn't quite general purpose, as it can't cope with
+# '\ No newline at end of file'
+sub ud2cd {
+    my $diff_in = shift;
+    my $diff_out = '';
+
+    # Stuff before the diff
+    while ($diff_in =~ s/\A(?!\*\*\* )(?!--- )([^\n]*\n?)//ms && length $1) {
+        $diff_out .= $1;
+    }
+
+    if (!length $diff_in) {
+        die "That didn't seem to be a diff";
+    }
+
+    if ($diff_in =~ /\A\*\*\* /ms) {
+        warn "Seems to be a context diff already\n";
+        return $diff_out . $diff_in;
+    }
+
+    # Loop for files
+ FILE: while (1) {
+        if ($diff_in =~ s/\A((?:diff |index )[^\n]+\n)//ms) {
+            $diff_out .= $1;
+            next;
+        }
+        if ($diff_in !~ /\A--- /ms) {
+            # Stuff after the diff;
+            return $diff_out . $diff_in;
+        }
+        $diff_in =~ s/\A([^\n]+\n?)//ms;
+        my $line = $1;
+        die "Can't parse '$line'" unless $line =~ s/\A--- /*** /ms;
+        $diff_out .= $line;
+        $diff_in =~ s/\A([^\n]+\n?)//ms;
+        $line = $1;
+        die "Can't parse '$line'" unless $line =~ s/\A\+\+\+ /--- /ms;
+        $diff_out .= $line;
+
+        # Loop for hunks
+        while (1) {
+            next FILE
+                unless $diff_in =~ s/\A\@\@ (-([0-9]+),([0-9]+) \+([0-9]+),([0-9]+)) \@\@[^\n]*\n?//;
+            my ($hunk, $from_start, $from_count, $to_start, $to_count)
+                = ($1, $2, $3, $4, $5);
+            my $from_end = $from_start + $from_count - 1;
+            my $to_end = $to_start + $to_count - 1;
+            my ($from_out, $to_out, $has_from, $has_to, $add, $delete);
+            while (length $diff_in && ($from_count || $to_count)) {
+                die "Confused in $hunk" unless $diff_in =~ s/\A([^\n]*)\n//ms;
+                my $line = $1;
+                $line = ' ' unless length $line;
+                if ($line =~ /^ .*/) {
+                    process_hunk(\$from_out, \$to_out, \$has_from, \$has_to,
+                                 $delete, $add);
+                    undef $delete;
+                    undef $add;
+                    $from_out .= " $line\n";
+                    $to_out .= " $line\n";
+                    --$from_count;
+                    --$to_count;
+                } elsif ($line =~ /^-(.*)/) {
+                    push @$delete, $1;
+                    --$from_count;
+                } elsif ($line =~ /^\+(.*)/) {
+                    push @$add, $1;
+                    --$to_count;
+                } else {
+                    die "Can't parse '$line' as part of hunk $hunk";
+                }
+            }
+            process_hunk(\$from_out, \$to_out, \$has_from, \$has_to,
+                         $delete, $add);
+            die "No lines in hunk $hunk"
+                unless length $from_out || length $to_out;
+            die "No changes in hunk $hunk"
+                unless $has_from || $has_to;
+            $diff_out .= "***************\n";
+            $diff_out .= "*** $from_start,$from_end ****\n";
+            $diff_out .= $from_out if $has_from;
+            $diff_out .= "--- $to_start,$to_end ----\n";
+            $diff_out .= $to_out if $has_to;
+        }
+    }
+}
+
+{
+    my $use_context;
+
+    sub placate_patch_prog {
+        my $patch = shift;
+
+        if (!defined $use_context) {
+            my $version = `patch -v 2>&1`;
+            die "Can't run `patch -v`, \$?=$?, bailing out"
+                unless defined $version;
+            if ($version =~ /Free Software Foundation/) {
+                $use_context = 0;
+            } elsif ($version =~ /Header: patch\.c,v.*\blwall\b/) {
+                # The system patch is older than Linux, and probably older than
+                # Windows NT.
+                $use_context = 1;
+            } else {
+                # Don't know.
+                $use_context = 0;
+            }
+        }
+
+        return $use_context ? ud2cd($patch) : $patch;
+    }
+}
+
+sub apply_patch {
+    my ($patch, $what, $files) = @_;
+    $what = 'patch' unless defined $what;
+    unless (defined $files) {
+        $patch =~ m!^--- a/(\S+)\n\+\+\+ b/\1!sm;
+        $files = " $1";
+    }
+    my $patch_to_use = placate_patch_prog($patch);
+    open my $fh, '|-', 'patch', '-p1' or die "Can't run patch: $!";
+    print $fh $patch_to_use;
+    return if close $fh;
+    print STDERR "Patch is <<'EOPATCH'\n${patch}EOPATCH\n";
+    print STDERR "\nConverted to a context diff <<'EOCONTEXT'\n${patch_to_use}EOCONTEXT\n"
+        if $patch_to_use ne $patch;
+    die "Can't $what$files: $?, $!";
+}
+
+sub apply_commit {
+    my ($commit, @files) = @_;
+    my $patch = `git show $commit @files`;
+    if (!defined $patch) {
+        die "Can't get commit $commit for @files: $?" if @files;
+        die "Can't get commit $commit: $?";
+    }
+    apply_patch($patch, "patch $commit", @files ? " for @files" : '');
+}
+
+sub revert_commit {
+    my ($commit, @files) = @_;
+    my $patch = `git show -R $commit @files`;
+    if (!defined $patch) {
+        die "Can't get revert commit $commit for @files: $?" if @files;
+        die "Can't get revert commit $commit: $?";
+    }
+    apply_patch($patch, "revert $commit", @files ? " for @files" : '');
+}
+
+sub checkout_file {
+    my ($file, $commit) = @_;
+    $commit ||= 'blead';
+    system "git show $commit:$file > $file </dev/null"
+        and die "Could not extract $file at revision $commit";
+}
+
+sub check_shebang {
+    my $file = shift;
+    return unless -e $file;
+    if (!-x $file) {
+        die "$file is not executable.
+system($file, ...) is always going to fail.
+
+Bailing out";
+    }
+    my $fh = open_or_die($file);
+    my $line = <$fh>;
+    return unless $line =~ m{\A#!(/\S+/perl\S*)\s};
+    die "$file will always be run by $1
+It won't be tested by the ./perl we build.
+If you intended to run it with that perl binary, please change your
+test case to
+
+    $1 @ARGV
+
+If you intended to test it with the ./perl we build, please change your
+test case to
+
+    ./perl -Ilib @ARGV
+
+[You may also need to add -- before ./perl to prevent that -Ilib as being
+parsed as an argument to bisect.pl]
+
+Bailing out";
+}
+
+sub clean {
+    if ($options{clean}) {
+        # Needed, because files that are build products in this checked out
+        # version might be in git in the next desired version.
+        system 'git clean -dxf </dev/null';
+        # Needed, because at some revisions the build alters checked out files.
+        # (eg pod/perlapi.pod). Also undoes any changes to makedepend.SH
+        system 'git reset --hard HEAD </dev/null';
+    }
+}
+
+sub skip {
+    my $reason = shift;
+    clean();
+    warn "skipping - $reason";
+    exit 125;
+}
+
+sub report_and_exit {
+    my ($ret, $pass, $fail, $desc) = @_;
+
+    clean();
+
+    my $got = ($options{'expect-pass'} ? !$ret : $ret) ? 'good' : 'bad';
+    if ($ret) {
+        print "$got - $fail $desc\n";
+    } else {
+        print "$got - $pass $desc\n";
+    }
+
+    exit($got eq 'bad');
+}
+
+sub match_and_exit {
+    my ($target, @globs) = @_;
+    my $matches = 0;
+    my $re = qr/$match/;
+    my @files;
+
+    if (@globs) {
+        require File::Glob;
+        foreach (sort map { File::Glob::bsd_glob($_)} @globs) {
+            if (!-f $_ || !-r _) {
+                warn "Skipping matching '$_' as it is not a readable file\n";
+            } else {
+                push @files, $_;
+            }
+        }
+    } else {
+        local $/ = "\0";
+        @files = defined $target ? `git ls-files -o -z`: `git ls-files -z`;
+        chomp @files;
+    }
+
+    foreach my $file (@files) {
+        my $fh = open_or_die($file);
+        while (<$fh>) {
+            if ($_ =~ $re) {
+                ++$matches;
+                if (tr/\t\r\n -~\200-\377//c) {
+                    print "Binary file $file matches\n";
+                } else {
+                    $_ .= "\n" unless /\n\z/;
+                    print "$file: $_";
+                }
+            }
+        }
+        close_or_die($fh);
+    }
+    report_and_exit(!$matches,
+                    $matches == 1 ? '1 match for' : "$matches matches for",
+                    'no matches for', $match);
+}
+
+# Not going to assume that system perl is yet new enough to have autodie
+system 'git clean -dxf </dev/null' and die;
+
+if (!defined $target) {
+    match_and_exit(undef, @ARGV) if $match;
+    $target = 'test_prep';
+}
+
+skip('no Configure - is this the //depot/perlext/Compiler branch?')
+    unless -f 'Configure';
+
+my $case_insensitive;
+{
+    my ($dev_C, $ino_C) = stat 'Configure';
+    die "Could not stat Configure: $!" unless defined $dev_C;
+    my ($dev_c, $ino_c) = stat 'configure';
+    ++$case_insensitive
+        if defined $dev_c && $dev_C == $dev_c && $ino_C == $ino_c;
+}
+
+# This changes to PERL_VERSION in 4d8076ea25903dcb in 1999
+my $major
+    = extract_from_file('patchlevel.h',
+			qr/^#define\s+(?:PERL_VERSION|PATCHLEVEL)\s+(\d+)\s/,
+			0);
+
+patch_Configure();
+patch_hints();
+
+# if Encode is not needed for the test, you can speed up the bisect by
+# excluding it from the runs with -Dnoextensions=Encode
+# ccache is an easy win. Remove it if it causes problems.
+# Commit 1cfa4ec74d4933da adds ignore_versioned_solibs to Configure, and sets it
+# to true in hints/linux.sh
+# On dromedary, from that point on, Configure (by default) fails to find any
+# libraries, because it scans /usr/local/lib /lib /usr/lib, which only contain
+# versioned libraries. Without -lm, the build fails.
+# Telling /usr/local/lib64 /lib64 /usr/lib64 works from that commit onwards,
+# until commit faae14e6e968e1c0 adds it to the hints.
+# However, prior to 1cfa4ec74d4933da telling Configure the truth doesn't work,
+# because it will spot versioned libraries, pass them to the compiler, and then
+# bail out pretty early on. Configure won't let us override libswanted, but it
+# will let us override the entire libs list.
+
+unless (extract_from_file('Configure', 'ignore_versioned_solibs')) {
+    # Before 1cfa4ec74d4933da, so force the libs list.
+
+    my @libs;
+    # This is the current libswanted list from Configure, less the libs removed
+    # by current hints/linux.sh
+    foreach my $lib (qw(sfio socket inet nsl nm ndbm gdbm dbm db malloc dl dld
+			ld sun m crypt sec util c cposix posix ucb BSD)) {
+	foreach my $dir (@paths) {
+	    next unless -f "$dir/lib$lib.so";
+	    push @libs, "-l$lib";
+	    last;
+	}
+    }
+    $defines{libs} = \@libs unless exists $defines{libs};
+}
+
+$defines{usenm} = undef
+    if $major < 2 && !exists $defines{usenm};
+
+my ($missing, $created_dirs);
+($missing, $created_dirs) = force_manifest()
+    if $options{'force-manifest'};
+
+my @ARGS = '-dEs';
+foreach my $key (sort keys %defines) {
+    my $val = $defines{$key};
+    if (ref $val) {
+        push @ARGS, "-D$key=@$val";
+    } elsif (!defined $val) {
+        push @ARGS, "-U$key";
+    } elsif (!length $val) {
+        push @ARGS, "-D$key";
+    } else {
+        $val = "" if $val eq "\0";
+        push @ARGS, "-D$key=$val";
+    }
+}
+push @ARGS, map {"-A$_"} @{$options{A}};
+
+# </dev/null because it seems that some earlier versions of Configure can
+# call commands in a way that now has them reading from stdin (and hanging)
+my $pid = fork;
+die "Can't fork: $!" unless defined $pid;
+if (!$pid) {
+    open STDIN, '<', '/dev/null';
+    # If a file in MANIFEST is missing, Configure asks if you want to
+    # continue (the default being 'n'). With stdin closed or /dev/null,
+    # it exits immediately and the check for config.sh below will skip.
+    exec './Configure', @ARGS;
+    die "Failed to start Configure: $!";
+}
+waitpid $pid, 0
+    or die "wait for Configure, pid $pid failed: $!";
+
+patch_SH();
+
+if (-f 'config.sh') {
+    # Emulate noextensions if Configure doesn't support it.
+    fake_noextensions()
+        if $major < 10 && $defines{noextensions};
+    system './Configure -S </dev/null' and die;
+}
+
+if ($target =~ /config\.s?h/) {
+    match_and_exit($target, @ARGV) if $match && -f $target;
+    report_and_exit(!-f $target, 'could build', 'could not build', $target)
+        if $options{'test-build'};
+
+    skip("could not build $target") unless -f $target;
+
+    my $ret = system @ARGV;
+    report_and_exit($ret, 'zero exit from', 'non-zero exit from', "@ARGV");
+} elsif (!-f 'config.sh') {
+    # Skip if something went wrong with Configure
+
+    skip('could not build config.sh');
+}
+
+force_manifest_cleanup($missing, $created_dirs)
+        if $missing;
+
+if($options{'force-regen'}
+   && extract_from_file('Makefile', qr/\bregen_headers\b/)) {
+    # regen_headers was added in e50aee73b3d4c555, patch.1m for perl5.001
+    # It's not worth faking it for earlier revisions.
+    system "make regen_headers </dev/null"
+        and die;
+}
+
+patch_C();
+patch_ext();
+
+# Parallel build for miniperl is safe
+system "$options{make} $j miniperl </dev/null";
+
+# This is the file we expect make to create
+my $expected_file = $target =~ /^test/ ? 't/perl'
+    : $target eq 'Fcntl' ? "lib/auto/Fcntl/Fcntl.$Config{so}"
+    : $target;
+# This is the target we tell make to build in order to get $expected_file
+my $real_target = $target eq 'Fcntl' ? $expected_file : $target;
+
+if ($target ne 'miniperl') {
+    # Nearly all parallel build issues fixed by 5.10.0. Untrustworthy before that.
+    $j = '' if $major < 10;
+
+    if ($real_target eq 'test_prep') {
+        if ($major < 8) {
+            # test-prep was added in 5.004_01, 3e3baf6d63945cb6.
+            # renamed to test_prep in 2001 in 5fe84fd29acaf55c.
+            # earlier than that, just make test. It will be fast enough.
+            $real_target = extract_from_file('Makefile.SH',
+                                             qr/^(test[-_]prep):/,
+                                             'test');
+        }
+    }
+
+    system "$options{make} $j $real_target </dev/null";
+}
+
+my $expected_file_found = $expected_file =~ /perl$/
+    ? -x $expected_file : -r $expected_file;
+
+if ($expected_file_found && $expected_file eq 't/perl') {
+    # Check that it isn't actually pointing to ../miniperl, which will happen
+    # if the sanity check ./miniperl -Ilib -MExporter -e '<?>' fails, and
+    # Makefile tries to run minitest.
+
+    # Of course, helpfully sometimes it's called ../perl, other times .././perl
+    # and who knows if that list is exhaustive...
+    my ($dev0, $ino0) = stat 't/perl';
+    my ($dev1, $ino1) = stat 'perl';
+    unless (defined $dev0 && defined $dev1 && $dev0 == $dev1 && $ino0 == $ino1) {
+        undef $expected_file_found;
+        my $link = readlink $expected_file;
+        warn "'t/perl' => '$link', not 'perl'";
+        die "Could not realink t/perl: $!" unless defined $link;
+    }
+}
+
+if ($options{'test-build'}) {
+    report_and_exit(!$expected_file_found, 'could build', 'could not build',
+                    $real_target);
+} elsif (!$expected_file_found) {
+    skip("could not build $real_target");
+}
+
+match_and_exit($real_target, @ARGV) if $match;
+
+if (defined $options{'one-liner'}) {
+    my $exe = $target =~ /^(?:perl$|test)/ ? 'perl' : 'miniperl';
+    unshift @ARGV, '-e', $options{'one-liner'};
+    foreach (qw(c l w)) {
+        unshift @ARGV, "-$_" if $options{$_};
+    }
+    unshift @ARGV, "./$exe", '-Ilib';
+}
+
+# This is what we came here to run:
+
+if (exists $Config{ldlibpthname}) {
+    require Cwd;
+    my $varname = $Config{ldlibpthname};
+    my $cwd = Cwd::getcwd();
+    if (defined $ENV{$varname}) {
+        $ENV{$varname} = $cwd . $Config{path_sep} . $ENV{$varname};
+    } else {
+        $ENV{$varname} = $cwd;
+    }
+}
+
+my $ret = system @ARGV;
+
+report_and_exit($ret, 'zero exit from', 'non-zero exit from', "@ARGV");
+
+############################################################################
+#
+# Patching, editing and faking routines only below here.
+#
+############################################################################
+
+sub fake_noextensions {
+    edit_file('config.sh', sub {
+                  my @lines = split /\n/, shift;
+                  my @ext = split /\s+/, $defines{noextensions};
+                  foreach (@lines) {
+                      next unless /^extensions=/ || /^dynamic_ext/;
+                      foreach my $ext (@ext) {
+                          s/\b$ext( )?\b/$1/;
+                      }
+                  }
+                  return join "\n", @lines;
+              });
+}
+
+sub force_manifest {
+    my (@missing, @created_dirs);
+    my $fh = open_or_die('MANIFEST');
+    while (<$fh>) {
+        next unless /^(\S+)/;
+        # -d is special case needed (at least) between 27332437a2ed1941 and
+        # bf3d9ec563d25054^ inclusive, as manifest contains ext/Thread/Thread
+        push @missing, $1
+            unless -f $1 || -d $1;
+    }
+    close_or_die($fh);
+
+    foreach my $pathname (@missing) {
+        my @parts = split '/', $pathname;
+        my $leaf = pop @parts;
+        my $path = '.';
+        while (@parts) {
+            $path .= '/' . shift @parts;
+            next if -d $path;
+            mkdir $path, 0700 or die "Can't create $path: $!";
+            unshift @created_dirs, $path;
+        }
+        $fh = open_or_die($pathname, '>');
+        close_or_die($fh);
+        chmod 0, $pathname or die "Can't chmod 0 $pathname: $!";
+    }
+    return \@missing, \@created_dirs;
+}
+
+sub force_manifest_cleanup {
+    my ($missing, $created_dirs) = @_;
+    # This is probably way too paranoid:
+    my @errors;
+    require Fcntl;
+    foreach my $file (@$missing) {
+        my (undef, undef, $mode, undef, undef, undef, undef, $size)
+            = stat $file;
+        if (!defined $mode) {
+            push @errors, "Added file $file has been deleted by Configure";
+            next;
+        }
+        if (Fcntl::S_IMODE($mode) != 0) {
+            push @errors,
+                sprintf 'Added file %s had mode changed by Configure to %03o',
+                    $file, $mode;
+        }
+        if ($size != 0) {
+            push @errors,
+                "Added file $file had sized changed by Configure to $size";
+        }
+        unlink $file or die "Can't unlink $file: $!";
+    }
+    foreach my $dir (@$created_dirs) {
+        rmdir $dir or die "Can't rmdir $dir: $!";
+    }
+    skip("@errors")
+        if @errors;
+}
+
+sub patch_Configure {
+    if ($major < 1) {
+        if (extract_from_file('Configure',
+                              qr/^\t\t\*=\*\) echo "\$1" >> \$optdef;;$/)) {
+            # This is "        Spaces now allowed in -D command line options.",
+            # part of commit ecfc54246c2a6f42
+            apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 3d3b38d..78ffe16 100755
+--- a/Configure
++++ b/Configure
+@@ -652,7 +777,8 @@ while test $# -gt 0; do
+ 			echo "$me: use '-U symbol=', not '-D symbol='." >&2
+ 			echo "$me: ignoring -D $1" >&2
+ 			;;
+-		*=*) echo "$1" >> $optdef;;
++		*=*) echo "$1" | \
++				sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> $optdef;;
+ 		*) echo "$1='define'" >> $optdef;;
+ 		esac
+ 		shift
+EOPATCH
+        }
+
+        if (extract_from_file('Configure', qr/^if \$contains 'd_namlen' \$xinc\b/)) {
+            # Configure's original simple "grep" for d_namlen falls foul of the
+            # approach taken by the glibc headers:
+            # #ifdef _DIRENT_HAVE_D_NAMLEN
+            # # define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
+            #
+            # where _DIRENT_HAVE_D_NAMLEN is not defined on Linux.
+            # This is also part of commit ecfc54246c2a6f42
+            apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 3d3b38d..78ffe16 100755
+--- a/Configure
++++ b/Configure
+@@ -3935,7 +4045,8 @@ $rm -f try.c
+ 
+ : see if the directory entry stores field length
+ echo " "
+-if $contains 'd_namlen' $xinc >/dev/null 2>&1; then
++$cppstdin $cppflags $cppminus < "$xinc" > try.c
++if $contains 'd_namlen' try.c >/dev/null 2>&1; then
+ 	echo "Good, your directory entry keeps length information in d_namlen." >&4
+ 	val="$define"
+ else
+EOPATCH
+        }
+    }
+
+    if ($major < 2
+        && !extract_from_file('Configure',
+                              qr/Try to guess additional flags to pick up local libraries/)) {
+        my $mips = extract_from_file('Configure',
+                                     qr!(''\) if (?:\./)?mips; then)!);
+        # This is part of perl-5.001n. It's needed, to add -L/usr/local/lib to
+        # theld flags if libraries are found there. It shifts the code to set up
+        # libpth earlier, and then adds the code to add libpth entries to
+        # ldflags
+        # mips was changed to ./mips in ecfc54246c2a6f42, perl5.000 patch.0g
+        apply_patch(sprintf <<'EOPATCH', $mips);
+diff --git a/Configure b/Configure
+index 53649d5..0635a6e 100755
+--- a/Configure
++++ b/Configure
+@@ -2749,6 +2749,52 @@ EOM
+ 	;;
+ esac
+ 
++: Set private lib path
++case "$plibpth" in
++'') if ./mips; then
++		plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
++	fi;;
++esac
++case "$libpth" in
++' ') dlist='';;
++'') dlist="$plibpth $glibpth";;
++*) dlist="$libpth";;
++esac
++
++: Now check and see which directories actually exist, avoiding duplicates
++libpth=''
++for xxx in $dlist
++do
++    if $test -d $xxx; then
++		case " $libpth " in
++		*" $xxx "*) ;;
++		*) libpth="$libpth $xxx";;
++		esac
++    fi
++done
++$cat <<'EOM'
++
++Some systems have incompatible or broken versions of libraries.  Among
++the directories listed in the question below, please remove any you
++know not to be holding relevant libraries, and add any that are needed.
++Say "none" for none.
++
++EOM
++case "$libpth" in
++'') dflt='none';;
++*)
++	set X $libpth
++	shift
++	dflt=${1+"$@"}
++	;;
++esac
++rp="Directories to use for library searches?"
++. ./myread
++case "$ans" in
++none) libpth=' ';;
++*) libpth="$ans";;
++esac
++
+ : flags used in final linking phase
+ case "$ldflags" in
+ '') if ./venix; then
+@@ -2765,6 +2811,23 @@ case "$ldflags" in
+ 	;;
+ *) dflt="$ldflags";;
+ esac
++
++: Possible local library directories to search.
++loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
++loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
++
++: Try to guess additional flags to pick up local libraries.
++for thislibdir in $libpth; do
++	case " $loclibpth " in
++	*" $thislibdir "*)
++		case "$dflt " in 
++		"-L$thislibdir ") ;;
++		*)  dflt="$dflt -L$thislibdir" ;;
++		esac
++		;;
++	esac
++done
++
+ echo " "
+ rp="Any additional ld flags (NOT including libraries)?"
+ . ./myread
+@@ -2828,52 +2891,6 @@ n) echo "OK, that should do.";;
+ esac
+ $rm -f try try.* core
+ 
+-: Set private lib path
+-case "$plibpth" in
+-%s
+-		plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
+-	fi;;
+-esac
+-case "$libpth" in
+-' ') dlist='';;
+-'') dlist="$plibpth $glibpth";;
+-*) dlist="$libpth";;
+-esac
+-
+-: Now check and see which directories actually exist, avoiding duplicates
+-libpth=''
+-for xxx in $dlist
+-do
+-    if $test -d $xxx; then
+-		case " $libpth " in
+-		*" $xxx "*) ;;
+-		*) libpth="$libpth $xxx";;
+-		esac
+-    fi
+-done
+-$cat <<'EOM'
+-
+-Some systems have incompatible or broken versions of libraries.  Among
+-the directories listed in the question below, please remove any you
+-know not to be holding relevant libraries, and add any that are needed.
+-Say "none" for none.
+-
+-EOM
+-case "$libpth" in
+-'') dflt='none';;
+-*)
+-	set X $libpth
+-	shift
+-	dflt=${1+"$@"}
+-	;;
+-esac
+-rp="Directories to use for library searches?"
+-. ./myread
+-case "$ans" in
+-none) libpth=' ';;
+-*) libpth="$ans";;
+-esac
+-
+ : compute shared library extension
+ case "$so" in
+ '')
+EOPATCH
+    }
+
+    if ($major < 5 && extract_from_file('Configure',
+                                        qr!if \$cc \$ccflags try\.c -o try >/dev/null 2>&1; then!)) {
+        # Analogous to the more general fix of dfe9444ca7881e71
+        # Without this flags such as -m64 may not be passed to this compile,
+        # which results in a byteorder of '1234' instead of '12345678', which
+        # can then cause crashes.
+
+        if (extract_from_file('Configure', qr/xxx_prompt=y/)) {
+            # 8e07c86ebc651fe9 or later
+            # ("This is my patch  patch.1n  for perl5.001.")
+            apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 62249dd..c5c384e 100755
+--- a/Configure
++++ b/Configure
+@@ -8247,7 +8247,7 @@ main()
+ }
+ EOCP
+ 	xxx_prompt=y
+-	if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
++	if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
+ 		dflt=`./try`
+ 		case "$dflt" in
+ 		[1-4][1-4][1-4][1-4]|12345678|87654321)
+EOPATCH
+        } else {
+            apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 53649d5..f1cd64a 100755
+--- a/Configure
++++ b/Configure
+@@ -6362,7 +6362,7 @@ main()
+ 	printf("\n");
+ }
+ EOCP
+-	if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
++	if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1 ; then
+ 		dflt=`./try`
+ 		case "$dflt" in
+ 		????|????????) echo "(The test program ran ok.)";;
+EOPATCH
+        }
+    }
+
+    if ($major < 6 && !extract_from_file('Configure',
+                                         qr!^\t-A\)$!)) {
+        # This adds the -A option to Configure, which is incredibly useful
+        # Effectively this is commits 02e93a22d20fc9a5, 5f83a3e9d818c3ad,
+        # bde6b06b2c493fef, f7c3111703e46e0c and 2 lines of trailing whitespace
+        # removed by 613d6c3e99b9decc, but applied at slightly different
+        # locations to ensure a clean patch back to 5.000
+        # Note, if considering patching to the intermediate revisions to fix
+        # bugs in -A handling, f7c3111703e46e0c is from 2002, and hence
+        # $major == 8
+
+        # To add to the fun, early patches add -K and -O options, and it's not
+        # trivial to get patch to put the C<. ./posthint.sh> in the right place
+        edit_file('Configure', sub {
+                      my $code = shift;
+                      $code =~ s/(optstr = ")([^"]+";\s*# getopt-style specification)/$1A:$2/
+                          or die "Substitution failed";
+                      $code =~ s!^(: who configured the system)!
+touch posthint.sh
+. ./posthint.sh
+
+$1!ms
+                          or die "Substitution failed";
+                      return $code;
+                  });
+        apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 4b55fa6..60c3c64 100755
+--- a/Configure
++++ b/Configure
+@@ -1150,6 +1150,7 @@ set X `for arg in "$@"; do echo "X$arg"; done |
+ eval "set $*"
+ shift
+ rm -f options.awk
++rm -f posthint.sh
+ 
+ : set up default values
+ fastread=''
+@@ -1172,6 +1173,56 @@ while test $# -gt 0; do
+ 	case "$1" in
+ 	-d) shift; fastread=yes;;
+ 	-e) shift; alldone=cont;;
++	-A)
++	    shift
++	    xxx=''
++	    yyy="$1"
++	    zzz=''
++	    uuu=undef
++	    case "$yyy" in
++            *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
++                 case "$zzz" in
++                 *:*) zzz='' ;;
++                 *)   xxx=append
++                      zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
++                      yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
++                 esac
++                 ;;
++            esac
++            case "$xxx" in
++            '')  case "$yyy" in
++                 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
++                      yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
++                      zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
++                      yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
++                 *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
++                      yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
++                 esac
++                 ;;
++            esac
++	    case "$xxx" in
++	    append)
++		echo "$yyy=\"\${$yyy}$zzz\""	>> posthint.sh ;;
++	    clear)
++		echo "$yyy=''"			>> posthint.sh ;;
++	    define)
++	        case "$zzz" in
++		'') zzz=define ;;
++		esac
++		echo "$yyy='$zzz'"		>> posthint.sh ;;
++	    eval)
++		echo "eval \"$yyy=$zzz\""	>> posthint.sh ;;
++	    prepend)
++		echo "$yyy=\"$zzz\${$yyy}\""	>> posthint.sh ;;
++	    undef)
++	        case "$zzz" in
++		'') zzz="$uuu" ;;
++		esac
++		echo "$yyy=$zzz"		>> posthint.sh ;;
++            *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
++	    esac
++	    shift
++	    ;;
+ 	-f)
+ 		shift
+ 		cd ..
+EOPATCH
+    }
+
+    if ($major < 8 && $^O eq 'aix') {
+        edit_file('Configure', sub {
+                      my $code = shift;
+                      # Replicate commit a8c676c69574838b
+                      # Whitespace allowed at the ends of /lib/syscalls.exp lines
+                      # and half of commit c6912327ae30e6de
+                      # AIX syscalls.exp scan: the syscall might be marked 32, 3264, or 64
+                      $code =~ s{(\bsed\b.*\bsyscall)(?:\[0-9\]\*)?(\$.*/lib/syscalls\.exp)}
+                                {$1 . "[0-9]*[ \t]*" . $2}e;
+                      return $code;
+                  });
+    }
+
+    if ($major < 8 && !extract_from_file('Configure',
+                                         qr/^\t\tif test ! -t 0; then$/)) {
+        # Before dfe9444ca7881e71, Configure would refuse to run if stdin was
+        # not a tty. With that commit, the tty requirement was dropped for -de
+        # and -dE
+        # Commit aaeb8e512e8e9e14 dropped the tty requirement for -S
+        # For those older versions, it's probably easiest if we simply remove
+        # the sanity test.
+        edit_file('Configure', sub {
+                      my $code = shift;
+                      $code =~ s/test ! -t 0/test Perl = rules/;
+                      return $code;
+                  });
+    }
+
+    if ($major == 8 || $major == 9) {
+        # Fix symbol detection to that of commit 373dfab3839ca168 if it's any
+        # intermediate version 5129fff43c4fe08c or later, as the intermediate
+        # versions don't work correctly on (at least) Sparc Linux.
+        # 5129fff43c4fe08c adds the first mention of mistrustnm.
+        # 373dfab3839ca168 removes the last mention of lc=""
+        edit_file('Configure', sub {
+                      my $code = shift;
+                      return $code
+                          if $code !~ /\btc="";/; # 373dfab3839ca168 or later
+                      return $code
+                          if $code !~ /\bmistrustnm\b/; # before 5129fff43c4fe08c
+                      my $fixed = <<'EOC';
+
+: is a C symbol defined?
+csym='tlook=$1;
+case "$3" in
+-v) tf=libc.tmp; tdc="";;
+-a) tf=libc.tmp; tdc="[]";;
+*) tlook="^$1\$"; tf=libc.list; tdc="()";;
+esac;
+tx=yes;
+case "$reuseval-$4" in
+true-) ;;
+true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
+esac;
+case "$tx" in
+yes)
+	tval=false;
+	if $test "$runnm" = true; then
+		if $contains $tlook $tf >/dev/null 2>&1; then
+			tval=true;
+		elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
+			echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+			$cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
+			$test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
+			$rm -f try$_exe try.c core core.* try.core;
+		fi;
+	else
+		echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+		$cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
+		$rm -f try$_exe try.c;
+	fi;
+	;;
+*)
+	case "$tval" in
+	$define) tval=true;;
+	*) tval=false;;
+	esac;
+	;;
+esac;
+eval "$2=$tval"'
+
+EOC
+                      $code =~ s/\n: is a C symbol defined\?\n.*?\neval "\$2=\$tval"'\n\n/$fixed/sm
+                          or die "substitution failed";
+                      return $code;
+                  });
+    }
+
+    if ($major < 10
+        && extract_from_file('Configure', qr/^set malloc\.h i_malloc$/)) {
+        # This is commit 01d07975f7ef0e7d, trimmed, with $compile inlined as
+        # prior to bd9b35c97ad661cc Configure had the malloc.h test before the
+        # definition of $compile.
+        apply_patch(<<'EOPATCH');
+diff --git a/Configure b/Configure
+index 3d2e8b9..6ce7766 100755
+--- a/Configure
++++ b/Configure
+@@ -6743,5 +6743,22 @@ set d_dosuid
+ 
+ : see if this is a malloc.h system
+-set malloc.h i_malloc
+-eval $inhdr
++: we want a real compile instead of Inhdr because some systems have a
++: malloc.h that just gives a compile error saying to use stdlib.h instead
++echo " "
++$cat >try.c <<EOCP
++#include <stdlib.h>
++#include <malloc.h>
++int main () { return 0; }
++EOCP
++set try
++if $cc $optimize $ccflags $ldflags -o try $* try.c $libs > /dev/null 2>&1; then
++    echo "<malloc.h> found." >&4
++    val="$define"
++else
++    echo "<malloc.h> NOT found." >&4
++    val="$undef"
++fi
++$rm -f try.c try
++set i_malloc
++eval $setvar
+ 
+EOPATCH
+    }
+}
+
+sub patch_hints {
+    if ($^O eq 'freebsd') {
+        # There are rather too many version-specific FreeBSD hints fixes to
+        # patch individually. Also, more than once the FreeBSD hints file has
+        # been written in what turned out to be a rather non-future-proof style,
+        # with case statements treating the most recent version as the
+        # exception, instead of treating previous versions' behaviour explicitly
+        # and changing the default to cater for the current behaviour. (As
+        # strangely, future versions inherit the current behaviour.)
+        checkout_file('hints/freebsd.sh');
+    } elsif ($^O eq 'darwin') {
+        if ($major < 8) {
+            # We can't build on darwin without some of the data in the hints
+            # file. Probably less surprising to use the earliest version of
+            # hints/darwin.sh and then edit in place just below, than use
+            # blead's version, as that would create a discontinuity at
+            # f556e5b971932902 - before it, hints bugs would be "fixed", after
+            # it they'd resurface. This way, we should give the illusion of
+            # monotonic bug fixing.
+            my $faking_it;
+            if (!-f 'hints/darwin.sh') {
+                checkout_file('hints/darwin.sh', 'f556e5b971932902');
+                ++$faking_it;
+            }
+
+            edit_file('hints/darwin.sh', sub {
+                      my $code = shift;
+                      # Part of commit 8f4f83badb7d1ba9, which mostly undoes
+                      # commit 0511a818910f476c.
+                      $code =~ s/^cppflags='-traditional-cpp';$/cppflags="\${cppflags} -no-cpp-precomp"/m;
+                      # commit 14c11978e9b52e08/803bb6cc74d36a3f
+                      # Without this, code in libperl.bundle links against op.o
+                      # in preference to opmini.o on the linker command line,
+                      # and hence miniperl tries to use File::Glob instead of
+                      # csh
+                      $code =~ s/^(lddlflags=)/ldflags="\${ldflags} -flat_namespace"\n$1/m;
+                      # f556e5b971932902 also patches Makefile.SH with some
+                      # special case code to deal with useshrplib for darwin.
+                      # Given that post 5.8.0 the darwin hints default was
+                      # changed to false, and it would be very complex to splice
+                      # in that code in various versions of Makefile.SH back
+                      # to 5.002, lets just turn it off.
+                      $code =~ s/^useshrplib='true'/useshrplib='false'/m
+                          if $faking_it;
+
+                      # Part of commit d235852b65d51c44
+                      # Don't do this on a case sensitive HFS+ partition, as it
+                      # breaks the build for 5.003 and earlier.
+                      if ($case_insensitive
+                          && $code !~ /^firstmakefile=GNUmakefile/) {
+                          $code .= "\nfirstmakefile=GNUmakefile;\n";
+                      }
+
+                      return $code;
+                  });
+        }
+    } elsif ($^O eq 'netbsd') {
+        if ($major < 6) {
+            # These are part of commit 099685bc64c7dbce
+            edit_file('hints/netbsd.sh', sub {
+                          my $code = shift;
+                          my $fixed = <<'EOC';
+case "$osvers" in
+0.9|0.8*)
+	usedl="$undef"
+	;;
+*)
+	if [ -f /usr/libexec/ld.elf_so ]; then
+		d_dlopen=$define
+		d_dlerror=$define
+		ccdlflags="-Wl,-E -Wl,-R${PREFIX}/lib $ccdlflags"
+		cccdlflags="-DPIC -fPIC $cccdlflags"
+		lddlflags="--whole-archive -shared $lddlflags"
+	elif [ "`uname -m`" = "pmax" ]; then
+# NetBSD 1.3 and 1.3.1 on pmax shipped an 'old' ld.so, which will not work.
+		d_dlopen=$undef
+	elif [ -f /usr/libexec/ld.so ]; then
+		d_dlopen=$define
+		d_dlerror=$define
+		ccdlflags="-Wl,-R${PREFIX}/lib $ccdlflags"
+# we use -fPIC here because -fpic is *NOT* enough for some of the
+# extensions like Tk on some netbsd platforms (the sparc is one)
+		cccdlflags="-DPIC -fPIC $cccdlflags"
+		lddlflags="-Bforcearchive -Bshareable $lddlflags"
+	else
+		d_dlopen=$undef
+	fi
+	;;
+esac
+EOC
+                          $code =~ s/^case "\$osvers" in\n0\.9\|0\.8.*?^esac\n/$fixed/ms;
+                          return $code;
+                      });
+        }
+    } elsif ($^O eq 'openbsd') {
+        if ($major < 8) {
+            checkout_file('hints/openbsd.sh', '43051805d53a3e4c')
+                unless -f 'hints/openbsd.sh';
+            my $which = extract_from_file('hints/openbsd.sh',
+                                          qr/# from (2\.8|3\.1) onwards/,
+                                          '');
+            if ($which eq '') {
+                my $was = extract_from_file('hints/openbsd.sh',
+                                            qr/(lddlflags="(?:-Bforcearchive )?-Bshareable)/);
+                # This is commit 154d43cbcf57271c and parts of 5c75dbfa77b0949c
+                # and 29b5585702e5e025
+                apply_patch(sprintf <<'EOPATCH', $was);
+diff --git a/hints/openbsd.sh b/hints/openbsd.sh
+index a7d8bf2..5b79709 100644
+--- a/hints/openbsd.sh
++++ b/hints/openbsd.sh
+@@ -37,7 +37,25 @@ OpenBSD.alpha|OpenBSD.mips|OpenBSD.powerpc|OpenBSD.vax)
+ 	# we use -fPIC here because -fpic is *NOT* enough for some of the
+ 	# extensions like Tk on some OpenBSD platforms (ie: sparc)
+ 	cccdlflags="-DPIC -fPIC $cccdlflags"
+-	%s $lddlflags"
++	case "$osvers" in
++	[01].*|2.[0-7]|2.[0-7].*)
++		lddlflags="-Bshareable $lddlflags"
++		;;
++	2.[8-9]|3.0)
++		ld=${cc:-cc}
++		lddlflags="-shared -fPIC $lddlflags"
++		;;
++	*) # from 3.1 onwards
++		ld=${cc:-cc}
++		lddlflags="-shared -fPIC $lddlflags"
++		libswanted=`echo $libswanted | sed 's/ dl / /'`
++		;;
++	esac
++
++	# We need to force ld to export symbols on ELF platforms.
++	# Without this, dlopen() is crippled.
++	ELF=`${cc:-cc} -dM -E - </dev/null | grep __ELF__`
++	test -n "$ELF" && ldflags="-Wl,-E $ldflags"
+ 	;;
+ esac
+ 
+EOPATCH
+            } elsif ($which eq '2.8') {
+                # This is parts of 5c75dbfa77b0949c and 29b5585702e5e025, and
+                # possibly eb9cd59d45ad2908
+                my $was = extract_from_file('hints/openbsd.sh',
+                                            qr/lddlflags="(-shared(?: -fPIC)?) \$lddlflags"/);
+
+                apply_patch(sprintf <<'EOPATCH', $was);
+--- a/hints/openbsd.sh	2011-10-21 17:25:20.000000000 +0200
++++ b/hints/openbsd.sh	2011-10-21 16:58:43.000000000 +0200
+@@ -44,11 +44,21 @@
+ 	[01].*|2.[0-7]|2.[0-7].*)
+ 		lddlflags="-Bshareable $lddlflags"
+ 		;;
+-	*) # from 2.8 onwards
++	2.[8-9]|3.0)
+ 		ld=${cc:-cc}
+-		lddlflags="%s $lddlflags"
++		lddlflags="-shared -fPIC $lddlflags"
++		;;
++	*) # from 3.1 onwards
++		ld=${cc:-cc}
++		lddlflags="-shared -fPIC $lddlflags"
++		libswanted=`echo $libswanted | sed 's/ dl / /'`
+ 		;;
+ 	esac
++
++	# We need to force ld to export symbols on ELF platforms.
++	# Without this, dlopen() is crippled.
++	ELF=`${cc:-cc} -dM -E - </dev/null | grep __ELF__`
++	test -n "$ELF" && ldflags="-Wl,-E $ldflags"
+ 	;;
+ esac
+ 
+EOPATCH
+            } elsif ($which eq '3.1'
+                     && !extract_from_file('hints/openbsd.sh',
+                                           qr/We need to force ld to export symbols on ELF platforms/)) {
+                # This is part of 29b5585702e5e025
+                apply_patch(<<'EOPATCH');
+diff --git a/hints/openbsd.sh b/hints/openbsd.sh
+index c6b6bc9..4839d04 100644
+--- a/hints/openbsd.sh
++++ b/hints/openbsd.sh
+@@ -54,6 +54,11 @@ alpha-2.[0-8]|mips-*|vax-*|powerpc-2.[0-7]|m88k-*)
+ 		libswanted=`echo $libswanted | sed 's/ dl / /'`
+ 		;;
+ 	esac
++
++	# We need to force ld to export symbols on ELF platforms.
++	# Without this, dlopen() is crippled.
++	ELF=`${cc:-cc} -dM -E - </dev/null | grep __ELF__`
++	test -n "$ELF" && ldflags="-Wl,-E $ldflags"
+ 	;;
+ esac
+ 
+EOPATCH
+            }
+        }
+    } elsif ($^O eq 'linux') {
+        if ($major < 1) {
+            # sparc linux seems to need the -Dbool=char -DHAS_BOOL part of
+            # perl5.000 patch.0n: [address Configure and build issues]
+            edit_file('hints/linux.sh', sub {
+                          my $code = shift;
+                          $code =~ s!-I/usr/include/bsd!-Dbool=char -DHAS_BOOL!g;
+                          return $code;
+                      });
+        }
+
+        if ($major <= 9) {
+            if (`uname -sm` =~ qr/^Linux sparc/) {
+                if (extract_from_file('hints/linux.sh', qr/sparc-linux/)) {
+                    # Be sure to use -fPIC not -fpic on Linux/SPARC
+                    apply_commit('f6527d0ef0c13ad4');
+                } elsif(!extract_from_file('hints/linux.sh',
+                                           qr/^sparc-linux\)$/)) {
+                    my $fh = open_or_die('hints/linux.sh', '>>');
+                    print $fh <<'EOT' or die $!;
+
+case "`uname -m`" in
+sparc*)
+	case "$cccdlflags" in
+	*-fpic*) cccdlflags="`echo $cccdlflags|sed 's/-fpic/-fPIC/'`" ;;
+	*)	 cccdlflags="$cccdlflags -fPIC" ;;
+	esac
+	;;
+esac
+EOT
+                    close_or_die($fh);
+                }
+            }
+        }
+    }
+}
+
+sub patch_SH {
+    # Cwd.xs added in commit 0d2079faa739aaa9. Cwd.pm moved to ext/ 8 years
+    # later in commit 403f501d5b37ebf0
+    if ($major > 0 && <*/Cwd/Cwd.xs>) {
+        if ($major < 10
+            && !extract_from_file('Makefile.SH', qr/^extra_dep=''$/)) {
+            # The Makefile.PL for Unicode::Normalize needs
+            # lib/unicore/CombiningClass.pl. Even without a parallel build, we
+            # need a dependency to ensure that it builds. This is a variant of
+            # commit 9f3ef600c170f61e. Putting this for earlier versions gives
+            # us a spot on which to hang the edits below
+            apply_patch(<<'EOPATCH');
+diff --git a/Makefile.SH b/Makefile.SH
+index f61d0db..6097954 100644
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -155,10 +155,20 @@ esac
+ 
+ : Prepare dependency lists for Makefile.
+ dynamic_list=' '
++extra_dep=''
+ for f in $dynamic_ext; do
+     : the dependency named here will never exist
+       base=`echo "$f" | sed 's/.*\///'`
+-    dynamic_list="$dynamic_list lib/auto/$f/$base.$dlext"
++    this_target="lib/auto/$f/$base.$dlext"
++    dynamic_list="$dynamic_list $this_target"
++
++    : Parallel makes reveal that we have some interdependencies
++    case $f in
++	Math/BigInt/FastCalc) extra_dep="$extra_dep
++$this_target: lib/auto/List/Util/Util.$dlext" ;;
++	Unicode/Normalize) extra_dep="$extra_dep
++$this_target: lib/unicore/CombiningClass.pl" ;;
++    esac
+ done
+ 
+ static_list=' '
+@@ -987,2 +997,9 @@ n_dummy $(nonxs_ext):	miniperl$(EXE_EXT) preplibrary $(DYNALOADER) FORCE
+ 	@$(LDLIBPTH) sh ext/util/make_ext nonxs $@ MAKE=$(MAKE) LIBPERL_A=$(LIBPERL)
++!NO!SUBS!
++
++$spitshell >>Makefile <<EOF
++$extra_dep
++EOF
++
++$spitshell >>Makefile <<'!NO!SUBS!'
+ 
+EOPATCH
+        }
+
+        if ($major == 11) {
+            if (extract_from_file('patchlevel.h',
+                                  qr/^#include "unpushed\.h"/)) {
+                # I had thought it easier to detect when building one of the 52
+                # commits with the original method of incorporating the git
+                # revision and drop parallel make flags. Commits shown by
+                # git log 46807d8e809cc127^..dcff826f70bf3f64^ ^d4fb0a1f15d1a1c4
+                # However, it's not actually possible to make miniperl for that
+                # configuration as-is, because the file .patchnum is only made
+                # as a side effect of target 'all'
+                # I also don't think that it's "safe" to simply run
+                # make_patchnum.sh before the build. We need the proper
+                # dependency rules in the Makefile to *stop* it being run again
+                # at the wrong time.
+                # This range is important because contains the commit that
+                # merges Schwern's y2038 work.
+                apply_patch(<<'EOPATCH');
+diff --git a/Makefile.SH b/Makefile.SH
+index 9ad8b6f..106e721 100644
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -540,9 +544,14 @@ sperl.i: perl.c $(h)
+ 
+ .PHONY: all translators utilities make_patchnum
+ 
+-make_patchnum:
++make_patchnum: lib/Config_git.pl
++
++lib/Config_git.pl: make_patchnum.sh
+ 	sh $(shellflags) make_patchnum.sh
+ 
++# .patchnum, unpushed.h and lib/Config_git.pl are built by make_patchnum.sh
++unpushed.h .patchnum: lib/Config_git.pl
++
+ # make sure that we recompile perl.c if .patchnum changes
+ perl$(OBJ_EXT): .patchnum unpushed.h
+ 
+EOPATCH
+            } elsif (-f '.gitignore'
+                     && extract_from_file('.gitignore', qr/^\.patchnum$/)) {
+                # 8565263ab8a47cda to 46807d8e809cc127^ inclusive.
+                edit_file('Makefile.SH', sub {
+                              my $code = shift;
+                              $code =~ s/^make_patchnum:\n/make_patchnum: .patchnum
+
+.sha1: .patchnum
+
+.patchnum: make_patchnum.sh
+/m;
+                              return $code;
+                          });
+            } elsif (-f 'lib/.gitignore'
+                     && extract_from_file('lib/.gitignore',
+                                          qr!^/Config_git.pl!)
+                     && !extract_from_file('Makefile.SH',
+                                        qr/^uudmap\.h.*:bitcount.h$/)) {
+                # Between commits and dcff826f70bf3f64 and 0f13ebd5d71f8177^
+                edit_file('Makefile.SH', sub {
+                              my $code = shift;
+                              # Bug introduced by 344af494c35a9f0f
+                              # fixed in 0f13ebd5d71f8177
+                              $code =~ s{^(pod/perlapi\.pod) (pod/perlintern\.pod): }
+                                        {$1: $2\n\n$2: }m;
+                              # Bug introduced by efa50c51e3301a2c
+                              # fixed in 0f13ebd5d71f8177
+                              $code =~ s{^(uudmap\.h) (bitcount\.h): }
+                                        {$1: $2\n\n$2: }m;
+
+                              # The rats nest of getting git_version.h correct
+
+                              if ($code =~ s{git_version\.h: stock_git_version\.h
+\tcp stock_git_version\.h git_version\.h}
+                                            {}m) {
+                                  # before 486cd780047ff224
+
+                                  # We probably can't build between
+                                  # 953f6acfa20ec275^ and 8565263ab8a47cda
+                                  # inclusive, but all commits in that range
+                                  # relate to getting make_patchnum.sh working,
+                                  # so it is extremely unlikely to be an
+                                  # interesting bisect target. They will skip.
+
+                                  # No, don't spawn a submake if
+                                  # make_patchnum.sh or make_patchnum.pl fails
+                                  $code =~ s{\|\| \$\(MAKE\) miniperl.*}
+                                            {}m;
+                                  $code =~ s{^\t(sh.*make_patchnum\.sh.*)}
+                                            {\t-$1}m;
+
+                                  # Use an external perl to run make_patchnum.pl
+                                  # because miniperl still depends on
+                                  # git_version.h
+                                  $code =~ s{^\t.*make_patchnum\.pl}
+                                            {\t-$^X make_patchnum.pl}m;
+
+
+                                  # "Truth in advertising" - running
+                                  # make_patchnum generates 2 files.
+                                  $code =~ s{^make_patchnum:.*}{
+make_patchnum: lib/Config_git.pl
+
+git_version.h: lib/Config_git.pl
+
+perlmini\$(OBJ_EXT): git_version.h
+
+lib/Config_git.pl:}m;
+                              }
+                              # Right, now we've corrected Makefile.SH to
+                              # correctly describe how lib/Config_git.pl and
+                              # git_version.h are made, we need to fix the rest
+
+                              # This emulates commit 2b63e250843b907e
+                              # This might duplicate the rule stating that
+                              # git_version.h depends on lib/Config_git.pl
+                              # This is harmless.
+                              $code =~ s{^(?:lib/Config_git\.pl )?git_version\.h: (.* make_patchnum\.pl.*)}
+                                        {git_version.h: lib/Config_git.pl
+
+lib/Config_git.pl: $1}m;
+
+                              # This emulates commits 0f13ebd5d71f8177 and
+                              # and a04d4598adc57886. It ensures that
+                              # lib/Config_git.pl is built before configpm,
+                              # and that configpm is run exactly once.
+                              $code =~ s{^(\$\(.*?\) )?(\$\(CONFIGPOD\))(: .*? configpm Porting/Glossary)( lib/Config_git\.pl)?}{
+                                  # If present, other files depend on $(CONFIGPOD)
+                                  ($1 ? "$1: $2\n\n" : '')
+                                      # Then the rule we found
+                                      . $2 . $3
+                                          # Add dependency if not there
+                                          . ($4 ? $4 : ' lib/Config_git.pl')
+                              }me;
+
+                              return $code;
+                          });
+            }
+        }
+
+        if ($major < 14) {
+            # Commits dc0655f797469c47 and d11a62fe01f2ecb2
+            edit_file('Makefile.SH', sub {
+                          my $code = shift;
+                          foreach my $ext (qw(Encode SDBM_File)) {
+                              next if $code =~ /\b$ext\) extra_dep=/s;
+                              $code =~ s!(\) extra_dep="\$extra_dep
+\$this_target: .*?" ;;)
+(    esac
+)!$1
+	$ext) extra_dep="\$extra_dep
+\$this_target: lib/auto/Cwd/Cwd.\$dlext" ;;
+$2!;
+                          }
+                          return $code;
+                      });
+        }
+    }
+
+    if ($major == 7) {
+        # Remove commits 9fec149bb652b6e9 and 5bab1179608f81d8, which add/amend
+        # rules to automatically run regen scripts that rebuild C headers. These
+        # cause problems because a git checkout doesn't preserve relative file
+        # modification times, hence the regen scripts may fire. This will
+        # obscure whether the repository had the correct generated headers
+        # checked in.
+        # Also, the dependency rules for running the scripts were not correct,
+        # which could cause spurious re-builds on re-running make, and can cause
+        # complete build failures for a parallel make.
+        if (extract_from_file('Makefile.SH',
+                              qr/Writing it this way gives make a big hint to always run opcode\.pl before/)) {
+            apply_commit('70c6e6715e8fec53');
+        } elsif (extract_from_file('Makefile.SH',
+                                   qr/^opcode\.h opnames\.h pp_proto\.h pp\.sym: opcode\.pl$/)) {
+            revert_commit('9fec149bb652b6e9');
+        }
+    }
+
+    if ($^O eq 'aix' && $major >= 11 && $major <= 15
+        && extract_from_file('makedef.pl', qr/^use Config/)) {
+        edit_file('Makefile.SH', sub {
+                      # The AIX part of commit e6807d8ab22b761c
+                      # It's safe to substitute lib/Config.pm for config.sh
+                      # as lib/Config.pm depends on config.sh
+                      # If the tree is post e6807d8ab22b761c, the substitution
+                      # won't match, which is harmless.
+                      my $code = shift;
+                      $code =~ s{^(perl\.exp:.* )config\.sh(\b.*)}
+                                {$1 . '$(CONFIGPM)' . $2}me;
+                      return $code;
+                  });
+    }
+
+    # There was a bug in makedepend.SH which was fixed in version 96a8704c.
+    # Symptom was './makedepend: 1: Syntax error: Unterminated quoted string'
+    # Remove this if you're actually bisecting a problem related to
+    # makedepend.SH
+    # If you do this, you may need to add in code to correct the output of older
+    # makedepends, which don't correctly filter newer gcc output such as
+    # <built-in>
+    checkout_file('makedepend.SH');
+
+    if ($major < 4 && -f 'config.sh'
+        && !extract_from_file('config.sh', qr/^trnl=/)) {
+        # This seems to be necessary to avoid makedepend becoming confused,
+        # and hanging on stdin. Seems that the code after
+        # make shlist || ...here... is never run.
+        edit_file('makedepend.SH', sub {
+                      my $code = shift;
+                      $code =~ s/^trnl='\$trnl'$/trnl='\\n'/m;
+                      return $code;
+                  });
+    }
+}
+
+sub patch_C {
+    # This is ordered by $major, as it's likely that different platforms may
+    # well want to share code.
+
+    if ($major == 2 && extract_from_file('perl.c', qr/^\tfclose\(e_fp\);$/)) {
+        # need to patch perl.c to avoid calling fclose() twice on e_fp when
+        # using -e
+        # This diff is part of commit ab821d7fdc14a438. The second close was
+        # introduced with perl-5.002, commit a5f75d667838e8e7
+        # Might want a6c477ed8d4864e6 too, for the corresponding change to
+        # pp_ctl.c (likely without this, eval will have "fun")
+        apply_patch(<<'EOPATCH');
+diff --git a/perl.c b/perl.c
+index 03c4d48..3c814a2 100644
+--- a/perl.c
++++ b/perl.c
+@@ -252,6 +252,7 @@ setuid perl scripts securely.\n");
+ #ifndef VMS  /* VMS doesn't have environ array */
+     origenviron = environ;
+ #endif
++    e_tmpname = Nullch;
+ 
+     if (do_undump) {
+ 
+@@ -405,6 +406,7 @@ setuid perl scripts securely.\n");
+     if (e_fp) {
+ 	if (Fflush(e_fp) || ferror(e_fp) || fclose(e_fp))
+ 	    croak("Can't write to temp file for -e: %s", Strerror(errno));
++	e_fp = Nullfp;
+ 	argc++,argv--;
+ 	scriptname = e_tmpname;
+     }
+@@ -470,10 +472,10 @@ setuid perl scripts securely.\n");
+     curcop->cop_line = 0;
+     curstash = defstash;
+     preprocess = FALSE;
+-    if (e_fp) {
+-	fclose(e_fp);
+-	e_fp = Nullfp;
++    if (e_tmpname) {
+ 	(void)UNLINK(e_tmpname);
++	Safefree(e_tmpname);
++	e_tmpname = Nullch;
+     }
+ 
+     /* now that script is parsed, we can modify record separator */
+@@ -1369,7 +1371,7 @@ SV *sv;
+ 	scriptname = xfound;
+     }
+ 
+-    origfilename = savepv(e_fp ? "-e" : scriptname);
++    origfilename = savepv(e_tmpname ? "-e" : scriptname);
+     curcop->cop_filegv = gv_fetchfile(origfilename);
+     if (strEQ(origfilename,"-"))
+ 	scriptname = "";
+
+EOPATCH
+    }
+
+    if ($major < 3 && $^O eq 'openbsd'
+        && !extract_from_file('pp_sys.c', qr/BSD_GETPGRP/)) {
+        # Part of commit c3293030fd1b7489
+        apply_patch(<<'EOPATCH');
+diff --git a/pp_sys.c b/pp_sys.c
+index 4608a2a..f0c9d1d 100644
+--- a/pp_sys.c
++++ b/pp_sys.c
+@@ -2903,8 +2903,8 @@ PP(pp_getpgrp)
+ 	pid = 0;
+     else
+ 	pid = SvIVx(POPs);
+-#ifdef USE_BSDPGRP
+-    value = (I32)getpgrp(pid);
++#ifdef BSD_GETPGRP
++    value = (I32)BSD_GETPGRP(pid);
+ #else
+     if (pid != 0)
+ 	DIE("POSIX getpgrp can't take an argument");
+@@ -2933,8 +2933,8 @@ PP(pp_setpgrp)
+     }
+ 
+     TAINT_PROPER("setpgrp");
+-#ifdef USE_BSDPGRP
+-    SETi( setpgrp(pid, pgrp) >= 0 );
++#ifdef BSD_SETPGRP
++    SETi( BSD_SETPGRP(pid, pgrp) >= 0 );
+ #else
+     if ((pgrp != 0) || (pid != 0)) {
+ 	DIE("POSIX setpgrp can't take an argument");
+EOPATCH
+    }
+
+    if ($major < 4 && $^O eq 'openbsd') {
+        my $bad;
+        # Need changes from commit a6e633defa583ad5.
+        # Commits c07a80fdfe3926b5 and f82b3d4130164d5f changed the same part
+        # of perl.h
+
+        if (extract_from_file('perl.h',
+                              qr/^#ifdef HAS_GETPGRP2$/)) {
+            $bad = <<'EOBAD';
+***************
+*** 57,71 ****
+  #define TAINT_PROPER(s)	if (tainting) taint_proper(no_security, s)
+  #define TAINT_ENV()	if (tainting) taint_env()
+  
+! #ifdef HAS_GETPGRP2
+! #   ifndef HAS_GETPGRP
+! #	define HAS_GETPGRP
+! #   endif
+! #endif
+! 
+! #ifdef HAS_SETPGRP2
+! #   ifndef HAS_SETPGRP
+! #	define HAS_SETPGRP
+! #   endif
+  #endif
+  
+EOBAD
+        } elsif (extract_from_file('perl.h',
+                                   qr/Gack, you have one but not both of getpgrp2/)) {
+            $bad = <<'EOBAD';
+***************
+*** 56,76 ****
+  #define TAINT_PROPER(s)	if (tainting) taint_proper(no_security, s)
+  #define TAINT_ENV()	if (tainting) taint_env()
+  
+! #if defined(HAS_GETPGRP2) && defined(HAS_SETPGRP2)
+! #   define getpgrp getpgrp2
+! #   define setpgrp setpgrp2
+! #   ifndef HAS_GETPGRP
+! #	define HAS_GETPGRP
+! #   endif
+! #   ifndef HAS_SETPGRP
+! #	define HAS_SETPGRP
+! #   endif
+! #   ifndef USE_BSDPGRP
+! #	define USE_BSDPGRP
+! #   endif
+! #else
+! #   if defined(HAS_GETPGRP2) || defined(HAS_SETPGRP2)
+! 	#include "Gack, you have one but not both of getpgrp2() and setpgrp2()."
+! #   endif
+  #endif
+  
+EOBAD
+        } elsif (extract_from_file('perl.h',
+                                   qr/^#ifdef USE_BSDPGRP$/)) {
+            $bad = <<'EOBAD'
+***************
+*** 91,116 ****
+  #define TAINT_PROPER(s)	if (tainting) taint_proper(no_security, s)
+  #define TAINT_ENV()	if (tainting) taint_env()
+  
+! #ifdef USE_BSDPGRP
+! #   ifdef HAS_GETPGRP
+! #       define BSD_GETPGRP(pid) getpgrp((pid))
+! #   endif
+! #   ifdef HAS_SETPGRP
+! #       define BSD_SETPGRP(pid, pgrp) setpgrp((pid), (pgrp))
+! #   endif
+! #else
+! #   ifdef HAS_GETPGRP2
+! #       define BSD_GETPGRP(pid) getpgrp2((pid))
+! #       ifndef HAS_GETPGRP
+! #    	    define HAS_GETPGRP
+! #    	endif
+! #   endif
+! #   ifdef HAS_SETPGRP2
+! #       define BSD_SETPGRP(pid, pgrp) setpgrp2((pid), (pgrp))
+! #       ifndef HAS_SETPGRP
+! #    	    define HAS_SETPGRP
+! #    	endif
+! #   endif
+  #endif
+  
+  #ifndef _TYPES_		/* If types.h defines this it's easy. */
+EOBAD
+        }
+        if ($bad) {
+            apply_patch(<<"EOPATCH");
+*** a/perl.h	2011-10-21 09:46:12.000000000 +0200
+--- b/perl.h	2011-10-21 09:46:12.000000000 +0200
+$bad--- 91,144 ----
+  #define TAINT_PROPER(s)	if (tainting) taint_proper(no_security, s)
+  #define TAINT_ENV()	if (tainting) taint_env()
+  
+! /* XXX All process group stuff is handled in pp_sys.c.  Should these 
+!    defines move there?  If so, I could simplify this a lot. --AD  9/96.
+! */
+! /* Process group stuff changed from traditional BSD to POSIX.
+!    perlfunc.pod documents the traditional BSD-style syntax, so we'll
+!    try to preserve that, if possible.
+! */
+! #ifdef HAS_SETPGID
+! #  define BSD_SETPGRP(pid, pgrp)	setpgid((pid), (pgrp))
+! #else
+! #  if defined(HAS_SETPGRP) && defined(USE_BSD_SETPGRP)
+! #    define BSD_SETPGRP(pid, pgrp)	setpgrp((pid), (pgrp))
+! #  else
+! #    ifdef HAS_SETPGRP2  /* DG/UX */
+! #      define BSD_SETPGRP(pid, pgrp)	setpgrp2((pid), (pgrp))
+! #    endif
+! #  endif
+! #endif
+! #if defined(BSD_SETPGRP) && !defined(HAS_SETPGRP)
+! #  define HAS_SETPGRP  /* Well, effectively it does . . . */
+! #endif
+! 
+! /* getpgid isn't POSIX, but at least Solaris and Linux have it, and it makes
+!     our life easier :-) so we'll try it.
+! */
+! #ifdef HAS_GETPGID
+! #  define BSD_GETPGRP(pid)		getpgid((pid))
+! #else
+! #  if defined(HAS_GETPGRP) && defined(USE_BSD_GETPGRP)
+! #    define BSD_GETPGRP(pid)		getpgrp((pid))
+! #  else
+! #    ifdef HAS_GETPGRP2  /* DG/UX */
+! #      define BSD_GETPGRP(pid)		getpgrp2((pid))
+! #    endif
+! #  endif
+! #endif
+! #if defined(BSD_GETPGRP) && !defined(HAS_GETPGRP)
+! #  define HAS_GETPGRP  /* Well, effectively it does . . . */
+! #endif
+! 
+! /* These are not exact synonyms, since setpgrp() and getpgrp() may 
+!    have different behaviors, but perl.h used to define USE_BSDPGRP
+!    (prior to 5.003_05) so some extension might depend on it.
+! */
+! #if defined(USE_BSD_SETPGRP) || defined(USE_BSD_GETPGRP)
+! #  ifndef USE_BSDPGRP
+! #    define USE_BSDPGRP
+! #  endif
+  #endif
+  
+  #ifndef _TYPES_		/* If types.h defines this it's easy. */
+EOPATCH
+        }
+    }
+
+    if ($major == 4 && extract_from_file('scope.c', qr/\(SV\*\)SSPOPINT/)) {
+        # [PATCH] 5.004_04 +MAINT_TRIAL_1 broken when sizeof(int) != sizeof(void)
+        # Fixes a bug introduced in 161b7d1635bc830b
+        apply_commit('9002cb76ec83ef7f');
+    }
+
+    if ($major == 4 && extract_from_file('av.c', qr/AvARRAY\(av\) = 0;/)) {
+        # Fixes a bug introduced in 1393e20655efb4bc
+        apply_commit('e1c148c28bf3335b', 'av.c');
+    }
+
+    if ($major == 4) {
+        my $rest = extract_from_file('perl.c', qr/delimcpy(.*)/);
+        if (defined $rest and $rest !~ /,$/) {
+            # delimcpy added in fc36a67e8855d031, perl.c refactored to use it.
+            # bug introduced in 2a92aaa05aa1acbf, fixed in 8490252049bf42d3
+            # code then moved to util.c in commit 491527d0220de34e
+            apply_patch(<<'EOPATCH');
+diff --git a/perl.c b/perl.c
+index 4eb69e3..54bbb00 100644
+--- a/perl.c
++++ b/perl.c
+@@ -1735,7 +1735,7 @@ SV *sv;
+ 	    if (len < sizeof tokenbuf)
+ 		tokenbuf[len] = '\0';
+ #else	/* ! (atarist || DOSISH) */
+-	    s = delimcpy(tokenbuf, tokenbuf + sizeof tokenbuf, s, bufend
++	    s = delimcpy(tokenbuf, tokenbuf + sizeof tokenbuf, s, bufend,
+ 			 ':',
+ 			 &len);
+ #endif	/* ! (atarist || DOSISH) */
+EOPATCH
+        }
+    }
+
+    if ($major == 4 && $^O eq 'linux') {
+        # Whilst this is fixed properly in f0784f6a4c3e45e1 which provides the
+        # Configure probe, it's easier to back out the problematic changes made
+        # in these previous commits:
+        if (extract_from_file('doio.c',
+                              qr!^/\* XXX REALLY need metaconfig test \*/$!)) {
+            revert_commit('4682965a1447ea44', 'doio.c');
+        }
+        if (my $token = extract_from_file('doio.c',
+                                          qr!^#if (defined\(__sun(?:__)?\)) && defined\(__svr4__\) /\* XXX Need metaconfig test \*/$!)) {
+            my $patch = `git show -R 9b599b2a63d2324d doio.c`;
+            $patch =~ s/defined\(__sun__\)/$token/g;
+            apply_patch($patch);
+        }
+        if (extract_from_file('doio.c',
+                              qr!^/\* linux \(and Solaris2\?\) uses :$!)) {
+            revert_commit('8490252049bf42d3', 'doio.c');
+        }
+        if (extract_from_file('doio.c',
+                              qr/^	    unsemds.buf = &semds;$/)) {
+            revert_commit('8e591e46b4c6543e');
+        }
+        if (extract_from_file('doio.c',
+                              qr!^#ifdef __linux__	/\* XXX Need metaconfig test \*/$!)) {
+            # Reverts part of commit 3e3baf6d63945cb6
+            apply_patch(<<'EOPATCH');
+diff --git b/doio.c a/doio.c
+index 62b7de9..0d57425 100644
+--- b/doio.c
++++ a/doio.c
+@@ -1333,9 +1331,6 @@ SV **sp;
+     char *a;
+     I32 id, n, cmd, infosize, getinfo;
+     I32 ret = -1;
+-#ifdef __linux__	/* XXX Need metaconfig test */
+-    union semun unsemds;
+-#endif
+ 
+     id = SvIVx(*++mark);
+     n = (optype == OP_SEMCTL) ? SvIVx(*++mark) : 0;
+@@ -1364,29 +1359,11 @@ SV **sp;
+ 	    infosize = sizeof(struct semid_ds);
+ 	else if (cmd == GETALL || cmd == SETALL)
+ 	{
+-#ifdef __linux__	/* XXX Need metaconfig test */
+-/* linux uses :
+-   int semctl (int semid, int semnun, int cmd, union semun arg)
+-
+-       union semun {
+-            int val;
+-            struct semid_ds *buf;
+-            ushort *array;
+-       };
+-*/
+-            union semun semds;
+-	    if (semctl(id, 0, IPC_STAT, semds) == -1)
+-#else
+ 	    struct semid_ds semds;
+ 	    if (semctl(id, 0, IPC_STAT, &semds) == -1)
+-#endif
+ 		return -1;
+ 	    getinfo = (cmd == GETALL);
+-#ifdef __linux__	/* XXX Need metaconfig test */
+-	    infosize = semds.buf->sem_nsems * sizeof(short);
+-#else
+ 	    infosize = semds.sem_nsems * sizeof(short);
+-#endif
+ 		/* "short" is technically wrong but much more portable
+ 		   than guessing about u_?short(_t)? */
+ 	}
+@@ -1429,12 +1406,7 @@ SV **sp;
+ #endif
+ #ifdef HAS_SEM
+     case OP_SEMCTL:
+-#ifdef __linux__	/* XXX Need metaconfig test */
+-        unsemds.buf = (struct semid_ds *)a;
+-	ret = semctl(id, n, cmd, unsemds);
+-#else
+ 	ret = semctl(id, n, cmd, (struct semid_ds *)a);
+-#endif
+ 	break;
+ #endif
+ #ifdef HAS_SHM
+EOPATCH
+        }
+        # Incorrect prototype added as part of 8ac853655d9b7447, fixed as part
+        # of commit dc45a647708b6c54, with at least one intermediate
+        # modification. Correct prototype for gethostbyaddr has socklen_t
+        # second. Linux has uint32_t first for getnetbyaddr.
+        # Easiest just to remove, instead of attempting more complex patching.
+        # Something similar may be needed on other platforms.
+        edit_file('pp_sys.c', sub {
+                      my $code = shift;
+                      $code =~ s/^    struct hostent \*(?:PerlSock_)?gethostbyaddr\([^)]+\);$//m;
+                      $code =~ s/^    struct netent \*getnetbyaddr\([^)]+\);$//m;
+                      return $code;
+                  });
+    }
+
+    if ($major < 5 && $^O eq 'aix'
+        && !extract_from_file('pp_sys.c',
+                              qr/defined\(HOST_NOT_FOUND\) && !defined\(h_errno\)/)) {
+        # part of commit dc45a647708b6c54
+        # Andy Dougherty's configuration patches (Config_63-01 up to 04).
+        apply_patch(<<'EOPATCH')
+diff --git a/pp_sys.c b/pp_sys.c
+index c2fcb6f..efa39fb 100644
+--- a/pp_sys.c
++++ b/pp_sys.c
+@@ -54,7 +54,7 @@ extern "C" int syscall(unsigned long,...);
+ #endif
+ #endif
+ 
+-#ifdef HOST_NOT_FOUND
++#if defined(HOST_NOT_FOUND) && !defined(h_errno)
+ extern int h_errno;
+ #endif
+ 
+EOPATCH
+    }
+
+    if ($major == 5
+        && `git rev-parse HEAD` eq "22c35a8c2392967a5ba6b5370695be464bd7012c\n") {
+        # Commit 22c35a8c2392967a is significant,
+        # "phase 1 of somewhat major rearrangement of PERL_OBJECT stuff"
+        # but doesn't build due to 2 simple errors. blead in this broken state
+        # was merged to the cfgperl branch, and then these were immediately
+        # corrected there. cfgperl (with the fixes) was merged back to blead.
+        # The resultant rather twisty maze of commits looks like this:
+
+=begin comment
+
+* | |   commit 137225782c183172f360c827424b9b9f8adbef0e
+|\ \ \  Merge: 22c35a8 2a8ee23
+| |/ /  Author: Gurusamy Sarathy <gsar at cpan.org>
+| | |   Date:   Fri Oct 30 17:38:36 1998 +0000
+| | |
+| | |       integrate cfgperl tweaks into mainline
+| | |
+| | |       p4raw-id: //depot/perl at 2144
+| | |
+| * | commit 2a8ee23279873759693fa83eca279355db2b665c
+| | | Author: Jarkko Hietaniemi <jhi at iki.fi>
+| | | Date:   Fri Oct 30 13:27:39 1998 +0000
+| | |
+| | |     There can be multiple yacc/bison errors.
+| | |
+| | |     p4raw-id: //depot/cfgperl at 2143
+| | |
+| * | commit 93fb2ac393172fc3e2c14edb20b718309198abbc
+| | | Author: Jarkko Hietaniemi <jhi at iki.fi>
+| | | Date:   Fri Oct 30 13:18:43 1998 +0000
+| | |
+| | |     README.posix-bc update.
+| | |
+| | |     p4raw-id: //depot/cfgperl at 2142
+| | |
+| * | commit 4ec43091e8e6657cb260b5e563df30aaa154effe
+| | | Author: Jarkko Hietaniemi <jhi at iki.fi>
+| | | Date:   Fri Oct 30 09:12:59 1998 +0000
+| | |
+| | |     #2133 fallout.
+| | |
+| | |     p4raw-id: //depot/cfgperl at 2141
+| | |
+| * |   commit 134ca994cfefe0f613d43505a885e4fc2100b05c
+| |\ \  Merge: 7093112 22c35a8
+| |/ /  Author: Jarkko Hietaniemi <jhi at iki.fi>
+|/| |   Date:   Fri Oct 30 08:43:18 1998 +0000
+| | |
+| | |       Integrate from mainperl.
+| | |
+| | |       p4raw-id: //depot/cfgperl at 2140
+| | |
+* | | commit 22c35a8c2392967a5ba6b5370695be464bd7012c
+| | | Author: Gurusamy Sarathy <gsar at cpan.org>
+| | | Date:   Fri Oct 30 02:51:39 1998 +0000
+| | |
+| | |     phase 1 of somewhat major rearrangement of PERL_OBJECT stuff
+| | |     (objpp.h is gone, embed.pl now does some of that); objXSUB.h
+| | |     should soon be automated also; the global variables that
+| | |     escaped the PL_foo conversion are now reined in; renamed
+| | |     MAGIC in regcomp.h to REG_MAGIC to avoid collision with the
+| | |     type of same name; duplicated lists of pp_things in various
+| | |     places is now gone; result has only been tested on win32
+| | |
+| | |     p4raw-id: //depot/perl at 2133
+
+=end comment
+
+=cut
+
+        # and completely confuses git bisect (and at least me), causing it to
+        # the bisect run to confidently return the wrong answer, an unrelated
+        # commit on the cfgperl branch.
+
+        apply_commit('4ec43091e8e6657c');
+    }
+
+    if ($major == 5
+        && extract_from_file('pp_sys.c', qr/PERL_EFF_ACCESS_R_OK/)
+        && !extract_from_file('pp_sys.c', qr/XXX Configure test needed for eaccess/)) {
+        # Between 5ff3f7a4e03a6b10 and c955f1177b2e311d^
+        # This is the meat of commit c955f1177b2e311d (without the other
+        # indenting changes that would cause a conflict).
+        # Without this 538 revisions won't build on (at least) Linux
+        apply_patch(<<'EOPATCH');
+diff --git a/pp_sys.c b/pp_sys.c
+index d60c8dc..867dee4 100644
+--- a/pp_sys.c
++++ b/pp_sys.c
+@@ -198,9 +198,18 @@ static char zero_but_true[ZBTLEN + 1] = "0 but true";
+ #   if defined(I_SYS_SECURITY)
+ #       include <sys/security.h>
+ #   endif
+-#   define PERL_EFF_ACCESS_R_OK(p) (eaccess((p), R_OK, ACC_SELF))
+-#   define PERL_EFF_ACCESS_W_OK(p) (eaccess((p), W_OK, ACC_SELF))
+-#   define PERL_EFF_ACCESS_X_OK(p) (eaccess((p), X_OK, ACC_SELF))
++    /* XXX Configure test needed for eaccess */
++#   ifdef ACC_SELF
++        /* HP SecureWare */
++#       define PERL_EFF_ACCESS_R_OK(p) (eaccess((p), R_OK, ACC_SELF))
++#       define PERL_EFF_ACCESS_W_OK(p) (eaccess((p), W_OK, ACC_SELF))
++#       define PERL_EFF_ACCESS_X_OK(p) (eaccess((p), X_OK, ACC_SELF))
++#   else
++        /* SCO */
++#       define PERL_EFF_ACCESS_R_OK(p) (eaccess((p), R_OK))
++#       define PERL_EFF_ACCESS_W_OK(p) (eaccess((p), W_OK))
++#       define PERL_EFF_ACCESS_X_OK(p) (eaccess((p), X_OK))
++#   endif
+ #endif
+ 
+ #if !defined(PERL_EFF_ACCESS_R_OK) && defined(HAS_ACCESSX) && defined(ACC_SELF)
+EOPATCH
+    }
+
+    if ($major == 5
+        && extract_from_file('mg.c', qr/If we're still on top of the stack, pop us off/)
+        && !extract_from_file('mg.c', qr/PL_savestack_ix -= popval/)) {
+        # Fix up commit 455ece5e082708b1:
+        # SSNEW() API for allocating memory on the savestack
+        # Message-Id: <tqemtae338.fsf at puma.genscan.com>
+        # Subject: [PATCH 5.005_51] (was: why SAVEDESTRUCTOR()...)
+        apply_commit('3c8a44569607336e', 'mg.c');
+    }
+
+    if ($major == 5) {
+        if (extract_from_file('doop.c', qr/croak\(no_modify\);/)
+            && extract_from_file('doop.c', qr/croak\(PL_no_modify\);/)) {
+            # Whilst the log suggests that this would only fix 5 commits, in
+            # practice this area of history is a complete tarpit, and git bisect
+            # gets very confused by the skips in the middle of the back and
+            # forth merging between //depot/perl and //depot/cfgperl
+            apply_commit('6393042b638dafd3');
+        }
+
+        # One error "fixed" with another:
+        if (extract_from_file('pp_ctl.c',
+                              qr/\Qstatic void *docatch_body _((void *o));\E/)) {
+            apply_commit('5b51e982882955fe');
+        }
+        # Which is then fixed by this:
+        if (extract_from_file('pp_ctl.c',
+                              qr/\Qstatic void *docatch_body _((valist\E/)) {
+            apply_commit('47aa779ee4c1a50e');
+        }
+
+        if (extract_from_file('thrdvar.h', qr/PERLVARI\(Tprotect/)
+            && !extract_from_file('embedvar.h', qr/PL_protect/)) {
+            # Commit 312caa8e97f1c7ee didn't update embedvar.h
+            apply_commit('e0284a306d2de082', 'embedvar.h');
+        }
+    }
+
+    if ($major == 5
+        && extract_from_file('sv.c',
+                             qr/PerlDir_close\(IoDIRP\((?:\(IO\*\))?sv\)\);/)
+        && !(extract_from_file('toke.c',
+                               qr/\QIoDIRP(FILTER_DATA(AvFILLp(PL_rsfp_filters))) = NULL\E/)
+             || extract_from_file('toke.c',
+                                  qr/\QIoDIRP(datasv) = (DIR*)NULL;\E/))) {
+        # Commit 93578b34124e8a3b, //depot/perl at 3298
+        # close directory handles properly when localized,
+        # tweaked slightly by commit 1236053a2c722e2b,
+        # add test case for change#3298
+        #
+        # The fix is the last part of:
+        #
+        # various fixes for clean build and test on win32; configpm broken,
+        # needed to open myconfig.SH rather than myconfig; sundry adjustments
+        # to bytecode stuff; tweaks to DYNAMIC_ENV_FETCH code to make it
+        # work under win32; getenv_sv() changed to getenv_len() since SVs
+        # aren't visible in the lower echelons; remove bogus exports from
+        # config.sym; PERL_OBJECT-ness for C++ exception support; null out
+        # IoDIRP in filter_del() or sv_free() will attempt to close it
+        #
+        # The changed code is modified subsequently by commit e0c198038146b7a4
+        apply_commit('a6c403648ecd5cc7', 'toke.c');
+    }
+
+    if ($major < 6 && $^O eq 'netbsd'
+        && !extract_from_file('unixish.h',
+                              qr/defined\(NSIG\).*defined\(__NetBSD__\)/)) {
+        apply_patch(<<'EOPATCH')
+diff --git a/unixish.h b/unixish.h
+index 2a6cbcd..eab2de1 100644
+--- a/unixish.h
++++ b/unixish.h
+@@ -89,7 +89,7 @@
+  */
+ /* #define ALTERNATE_SHEBANG "#!" / **/
+ 
+-#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX)
++#if !defined(NSIG) || defined(M_UNIX) || defined(M_XENIX) || defined(__NetBSD__)
+ # include <signal.h>
+ #endif
+ 
+EOPATCH
+    }
+
+    if (($major >= 7 || $major <= 9) && $^O eq 'openbsd'
+        && `uname -m` eq "sparc64\n"
+        # added in 2000 by commit cb434fcc98ac25f5:
+        && extract_from_file('regexec.c',
+                             qr!/\* No need to save/restore up to this paren \*/!)
+        # re-indented in 2006 by commit 95b2444054382532:
+        && extract_from_file('regexec.c', qr/^\t\tCURCUR cc;$/)) {
+        # Need to work around a bug in (at least) OpenBSD's 4.6's sparc64 #
+        # compiler ["gcc (GCC) 3.3.5 (propolice)"]. Between commits
+        # 3ec562b0bffb8b8b (2002) and 1a4fad37125bac3e^ (2005) the darling thing
+        # fails to compile any code for the statement cc.oldcc = PL_regcc;
+        #
+        # If you refactor the code to "fix" that, or force the issue using set
+        # in the debugger, the stack smashing detection code fires on return
+        # from S_regmatch(). Turns out that the compiler doesn't allocate any
+        # (or at least enough) space for cc.
+        #
+        # Restore the "uninitialised" value for cc before function exit, and the
+        # stack smashing code is placated.  "Fix" 3ec562b0bffb8b8b (which
+        # changes the size of auto variables used elsewhere in S_regmatch), and
+        # the crash is visible back to bc517b45fdfb539b (which also changes
+        # buffer sizes). "Unfix" 1a4fad37125bac3e and the crash is visible until
+        # 5b47454deb66294b.  Problem goes away if you compile with -O, or hack
+        # the code as below.
+        #
+        # Hence this turns out to be a bug in (old) gcc. Not a security bug we
+        # still need to fix.
+        apply_patch(<<'EOPATCH');
+diff --git a/regexec.c b/regexec.c
+index 900b491..6251a0b 100644
+--- a/regexec.c
++++ b/regexec.c
+@@ -2958,7 +2958,11 @@ S_regmatch(pTHX_ regnode *prog)
+ 				I,I
+  *******************************************************************/
+ 	case CURLYX: {
+-		CURCUR cc;
++	    union {
++		CURCUR hack_cc;
++		char hack_buff[sizeof(CURCUR) + 1];
++	    } hack;
++#define cc hack.hack_cc
+ 		CHECKPOINT cp = PL_savestack_ix;
+ 		/* No need to save/restore up to this paren */
+ 		I32 parenfloor = scan->flags;
+@@ -2983,6 +2987,7 @@ S_regmatch(pTHX_ regnode *prog)
+ 		n = regmatch(PREVOPER(next));	/* start on the WHILEM */
+ 		regcpblow(cp);
+ 		PL_regcc = cc.oldcc;
++#undef cc
+ 		saySAME(n);
+ 	    }
+ 	    /* NOT REACHED */
+EOPATCH
+}
+
+    if ($major < 8 && $^O eq 'openbsd'
+        && !extract_from_file('perl.h', qr/include <unistd\.h>/)) {
+        # This is part of commit 3f270f98f9305540, applied at a slightly
+        # different location in perl.h, where the context is stable back to
+        # 5.000
+        apply_patch(<<'EOPATCH');
+diff --git a/perl.h b/perl.h
+index 9418b52..b8b1a7c 100644
+--- a/perl.h
++++ b/perl.h
+@@ -496,6 +496,10 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER));
+ #   include <sys/param.h>
+ #endif
+ 
++/* If this causes problems, set i_unistd=undef in the hint file.  */
++#ifdef I_UNISTD
++#   include <unistd.h>
++#endif
+ 
+ /* Use all the "standard" definitions? */
+ #if defined(STANDARD_C) && defined(I_STDLIB)
+EOPATCH
+    }
+}
+
+sub patch_ext {
+    if (-f 'ext/POSIX/Makefile.PL'
+        && extract_from_file('ext/POSIX/Makefile.PL',
+                             qr/Explicitly avoid including/)) {
+        # commit 6695a346c41138df, which effectively reverts 170888cff5e2ffb7
+
+        # PERL5LIB is populated by make_ext.pl with paths to the modules we need
+        # to run, don't override this with "../../lib" since that may not have
+        # been populated yet in a parallel build.
+        apply_commit('6695a346c41138df');
+    }
+
+    if (-f 'ext/Hash/Util/Makefile.PL'
+        && extract_from_file('ext/Hash/Util/Makefile.PL',
+                             qr/\bDIR\b.*'FieldHash'/)) {
+        # ext/Hash/Util/Makefile.PL should not recurse to FieldHash's Makefile.PL
+        # *nix, VMS and Win32 all know how to (and have to) call the latter directly.
+        # As is, targets in ext/Hash/Util/FieldHash get called twice, which may result
+        # in race conditions, and certainly messes up make clean; make distclean;
+        apply_commit('550428fe486b1888');
+    }
+
+    if ($major < 8 && $^O eq 'darwin' && !-f 'ext/DynaLoader/dl_dyld.xs') {
+        checkout_file('ext/DynaLoader/dl_dyld.xs', 'f556e5b971932902');
+        apply_patch(<<'EOPATCH');
+diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs
+--- a/ext/DynaLoader/dl_dyld.xs~	2011-10-11 21:41:27.000000000 +0100
++++ b/ext/DynaLoader/dl_dyld.xs	2011-10-11 21:42:20.000000000 +0100
+@@ -41,6 +41,35 @@
+ #include "perl.h"
+ #include "XSUB.h"
+ 
++#ifndef pTHX
++#  define pTHX		void
++#  define pTHX_
++#endif
++#ifndef aTHX
++#  define aTHX
++#  define aTHX_
++#endif
++#ifndef dTHX
++#  define dTHXa(a)	extern int Perl___notused(void)
++#  define dTHX		extern int Perl___notused(void)
++#endif
++
++#ifndef Perl_form_nocontext
++#  define Perl_form_nocontext form
++#endif
++
++#ifndef Perl_warn_nocontext
++#  define Perl_warn_nocontext warn
++#endif
++
++#ifndef PTR2IV
++#  define PTR2IV(p)	(IV)(p)
++#endif
++
++#ifndef get_av
++#  define get_av perl_get_av
++#endif
++
+ #define DL_LOADONCEONLY
+ 
+ #include "dlutils.c"	/* SaveError() etc	*/
+@@ -185,7 +191,7 @@
+     CODE:
+     DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dl_load_file(%s,%x):\n", filename,flags));
+     if (flags & 0x01)
+-	Perl_warn(aTHX_ "Can't make loaded symbols global on this platform while loading %s",filename);
++	Perl_warn_nocontext("Can't make loaded symbols global on this platform while loading %s",filename);
+     RETVAL = dlopen(filename, mode) ;
+     DLDEBUG(2,PerlIO_printf(Perl_debug_log, " libref=%x\n", RETVAL));
+     ST(0) = sv_newmortal() ;
+EOPATCH
+        if ($major < 4 && !extract_from_file('util.c', qr/^form/m)) {
+            apply_patch(<<'EOPATCH');
+diff -u a/ext/DynaLoader/dl_dyld.xs~ a/ext/DynaLoader/dl_dyld.xs
+--- a/ext/DynaLoader/dl_dyld.xs~	2011-10-11 21:56:25.000000000 +0100
++++ b/ext/DynaLoader/dl_dyld.xs	2011-10-11 22:00:00.000000000 +0100
+@@ -60,6 +60,18 @@
+ #  define get_av perl_get_av
+ #endif
+ 
++static char *
++form(char *pat, ...)
++{
++    char *retval;
++    va_list args;
++    va_start(args, pat);
++    vasprintf(&retval, pat, &args);
++    va_end(args);
++    SAVEFREEPV(retval);
++    return retval;
++}
++
+ #define DL_LOADONCEONLY
+ 
+ #include "dlutils.c"	/* SaveError() etc	*/
+EOPATCH
+        }
+    }
+
+    if ($major < 10) {
+        if (!extract_from_file('ext/DB_File/DB_File.xs',
+                               qr!^#else /\* Berkeley DB Version > 2 \*/$!)) {
+            # This DB_File.xs is really too old to patch up.
+            # Skip DB_File, unless we're invoked with an explicit -Unoextensions
+            if (!exists $defines{noextensions}) {
+                $defines{noextensions} = 'DB_File';
+            } elsif (defined $defines{noextensions}) {
+                $defines{noextensions} .= ' DB_File';
+            }
+        } elsif (!extract_from_file('ext/DB_File/DB_File.xs',
+                                    qr/^#ifdef AT_LEAST_DB_4_1$/)) {
+            # This line is changed by commit 3245f0580c13b3ab
+            my $line = extract_from_file('ext/DB_File/DB_File.xs',
+                                         qr/^(        status = \(?RETVAL->dbp->open\)?\(RETVAL->dbp, name, NULL, RETVAL->type, $)/);
+            apply_patch(<<"EOPATCH");
+diff --git a/ext/DB_File/DB_File.xs b/ext/DB_File/DB_File.xs
+index 489ba96..fba8ded 100644
+--- a/ext/DB_File/DB_File.xs
++++ b/ext/DB_File/DB_File.xs
+\@\@ -183,4 +187,8 \@\@
+ #endif
+ 
++#if DB_VERSION_MAJOR > 4 || (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 1)
++#    define AT_LEAST_DB_4_1
++#endif
++
+ /* map version 2 features & constants onto their version 1 equivalent */
+ 
+\@\@ -1334,7 +1419,12 \@\@ SV *   sv ;
+ #endif
+ 
++#ifdef AT_LEAST_DB_4_1
++        status = (RETVAL->dbp->open)(RETVAL->dbp, NULL, name, NULL, RETVAL->type, 
++	    			Flags, mode) ; 
++#else
+ $line
+ 	    			Flags, mode) ; 
++#endif
+ 	/* printf("open returned %d %s\\n", status, db_strerror(status)) ; */
+ 
+EOPATCH
+        }
+    }
+
+    if ($major < 10 and -f 'ext/IPC/SysV/SysV.xs') {
+        edit_file('ext/IPC/SysV/SysV.xs', sub {
+                      my $xs = shift;
+                      my $fixed = <<'EOFIX';
+
+#include <sys/types.h>
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+#ifndef HAS_SEM
+#   include <sys/ipc.h>
+#endif
+#   ifdef HAS_MSG
+#       include <sys/msg.h>
+#   endif
+#   ifdef HAS_SHM
+#       if defined(PERL_SCO) || defined(PERL_ISC)
+#           include <sys/sysmacros.h>	/* SHMLBA */
+#       endif
+#      include <sys/shm.h>
+#      ifndef HAS_SHMAT_PROTOTYPE
+           extern Shmat_t shmat (int, char *, int);
+#      endif
+#      if defined(HAS_SYSCONF) && defined(_SC_PAGESIZE)
+#          undef  SHMLBA /* not static: determined at boot time */
+#          define SHMLBA sysconf(_SC_PAGESIZE)
+#      elif defined(HAS_GETPAGESIZE)
+#          undef  SHMLBA /* not static: determined at boot time */
+#          define SHMLBA getpagesize()
+#      endif
+#   endif
+#endif
+EOFIX
+                      $xs =~ s!
+#include <sys/types\.h>
+.*
+(#ifdef newCONSTSUB|/\* Required)!$fixed$1!ms;
+                      return $xs;
+                  });
+    }
+}
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/Porting/bisect.pl
===================================================================
--- vendor/perl/dist/Porting/bisect.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/bisect.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,170 @@
+#!/usr/bin/perl -w
+use strict;
+
+=for comment
+
+Documentation for this is in bisect-runner.pl
+
+=cut
+
+# The default, auto_abbrev will treat -e as an abbreviation of --end
+# Which isn't what we want.
+use Getopt::Long qw(:config pass_through no_auto_abbrev);
+
+my ($start, $end, $validate, $usage, $bad);
+$bad = !GetOptions('start=s' => \$start, 'end=s' => \$end,
+                   validate => \$validate, 'usage|help|?' => \$usage);
+unshift @ARGV, '--help' if $bad || $usage;
+unshift @ARGV, '--validate' if $validate;
+
+my $runner = $0;
+$runner =~ s/bisect\.pl/bisect-runner.pl/;
+
+die "Can't find bisect runner $runner" unless -f $runner;
+
+system $^X, $runner, '--check-args', '--check-shebang', @ARGV and exit 255;
+exit 255 if $bad;
+exit 0 if $usage;
+
+{
+    my ($dev0, $ino0) = stat $0;
+    die "Can't stat $0: $!" unless defined $ino0;
+    my ($dev1, $ino1) = stat 'Porting/bisect.pl';
+    die "Can't run a bisect using the directory containing $runner"
+      if defined $dev1 && $dev0 == $dev1 && $ino0 == $ino1;
+}
+
+my $start_time = time;
+
+# We try these in this order for the start revision if none is specified.
+my @stable = qw(perl-5.005 perl-5.6.0 perl-5.8.0 v5.10.0 v5.12.0 v5.14.0);
+
+{
+    my ($dev_C, $ino_C) = stat 'Configure';
+    my ($dev_c, $ino_c) = stat 'configure';
+    if (defined $dev_C && defined $dev_c
+        && $dev_C == $dev_c && $ino_C == $ino_c) {
+        print "You seem to be on a case-insensitive file system.\n\n";
+    } else {
+        unshift @stable, qw(perl-5.002 perl-5.003 perl-5.004)
+    }
+}
+
+$end = 'blead' unless defined $end;
+
+# Canonicalising branches to revisions before moving the checkout permits one
+# to use revisions such as 'HEAD' for --start or --end
+foreach ($start, $end) {
+    next unless $_;
+    $_ = `git rev-parse $_`;
+    die unless defined $_;
+    chomp;
+}
+
+my $modified = () = `git ls-files --modified --deleted --others`;
+
+die "This checkout is not clean - $modified modified or untracked file(s)"
+    if $modified;
+
+sub validate {
+    my $commit = shift;
+    if (defined $start && `git rev-list -n1 $commit ^$start^` eq "") {
+        print "Skipping $commit, as it is earlier than $start\n";
+        return;
+    }
+    if (defined $end && `git rev-list -n1 $end ^$commit^` eq "") {
+        print "Skipping $commit, as it is more recent than $end\n";
+        return;
+    }
+    print "Testing $commit...\n";
+    system "git checkout $commit </dev/null" and die;
+    my $ret = system $^X, $runner, '--no-clean', @ARGV;
+    die "Runner returned $ret, not 0 for revision $commit" if $ret;
+    system 'git clean -dxf </dev/null' and die;
+    system 'git reset --hard HEAD </dev/null' and die;
+    return $commit;
+}
+
+if ($validate) {
+    require Text::Wrap;
+    my @built = map {validate $_} 'blead', reverse @stable;
+    if (@built) {
+        print Text::Wrap::wrap("", "", "Successfully validated @built\n");
+        exit 0;
+    }
+    print "Did not validate anything\n";
+    exit 1;
+}
+
+my $git_version = `git --version`;
+if (defined $git_version
+    && $git_version =~ /\Agit version (\d+\.\d+\.\d+)(.*)/) {
+    $git_version = eval "v$1";
+} else {
+    $git_version = v0.0.0;
+}
+
+if ($git_version ge v1.6.6) {
+    system "git bisect reset HEAD" and die;
+} else {
+    system "git bisect reset" and die;
+}
+
+# Sanity check the first and last revisions:
+system "git checkout $end" and die;
+my $ret = system $^X, $runner, @ARGV;
+die "Runner returned $ret for end revision" unless $ret;
+
+if (defined $start) {
+    system "git checkout $start" and die;
+    my $ret = system $^X, $runner, @ARGV;
+    die "Runner returned $ret, not 0 for start revision" if $ret;
+} else {
+    # Try to find the earliest version for which the test works
+    my @tried;
+    foreach my $try (@stable) {
+        if (`git rev-list -n1 $end ^$try^` eq "") {
+            print "Skipping $try, as it is more recent than end commit "
+                . (substr $end, 0, 16) . "\n";
+            # As @stable is supposed to be in age order, arguably we should
+            # last; here.
+            next;
+        }
+        system "git checkout $try" and die;
+        my $ret = system $^X, $runner, @ARGV;
+        if (!$ret) {
+            $start = $try;
+            last;
+        }
+        push @tried, $try;
+    }
+    die "Can't find a suitable start revision to default to.\nTried @tried"
+        unless defined $start;
+}
+
+system "git bisect start" and die;
+system "git bisect good $start" and die;
+system "git bisect bad $end" and die;
+
+# And now get git bisect to do the hard work:
+system 'git', 'bisect', 'run', $^X, $runner, @ARGV and die;
+
+END {
+    my $end_time = time;
+
+    printf "That took %d seconds\n", $end_time - $start_time
+        if defined $start_time;
+}
+
+=for comment
+
+Documentation for this is in bisect-runner.pl
+
+=cut
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/Porting/exercise_makedef.pl
===================================================================
--- vendor/perl/dist/Porting/exercise_makedef.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/exercise_makedef.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,93 @@
+#!./miniperl -w
+use strict;
+use Config;
+use 5.012;
+die "Can't fork" unless $Config{d_fork};
+
+# Brute force testing for makedef.pl
+#
+# To use this...
+#
+# Before modifying makedef.pl, create your golden results:
+#
+# $ mkdir Gold
+# $ ./perl -Ilib Porting/exercise_makedef.pl Gold/
+# $ chmod -R -w Gold/
+# $ mkdr Test
+#
+# then modify makedef.pl
+#
+# then test
+#
+# $ ./perl -Ilib Porting/exercise_makedef.pl Test
+# $ diff -rpu Gold Test
+
+my $prefix = shift;
+die "$0 prefix" unless $prefix;
+die "No such directory $prefix" unless -d $prefix;
+
+my @unlink;
+sub END {
+    unlink @unlink;
+}
+
+$SIG{INT} = sub { die }; # Trigger END processing
+
+{
+    # needed for OS/2, so fake one up
+    my $mpm = 'miniperl.map';
+
+    die "$mpm exists" if -e $mpm;
+
+    open my $in, '<', 'av.c' or die "Can't open av.c: $!";
+    push @unlink, $mpm;
+    open my $out, '>', $mpm or die "Can't open $mpm: $!";
+    while (<$in>) {
+	print $out "f $1\n" if /^(Perl_[A-Za-z_0-9]+)\(pTHX/;
+    }
+    close $out or die "Can't close $mpm: $!";
+}
+
+my @args = (platform => [map {"PLATFORM=$_"} qw(aix win32 wince os2 netware vms test)],
+	    cflags => ['', 'CCFLAGS=-Dperl=rules -Dzzz'],
+	    Deq => ['', '-Dbeer=foamy'],
+	    D => ['', '-DPERL_IMPLICIT_SYS'],
+	    cctype => ['', map {"CCTYPE=$_"} qw (MSVC60 GCC)],
+	    filetype => ['', 'FILETYPE=def', 'FILETYPE=imp'],
+	    targ_dir => ['', 'TARG_DIR=t/../'],
+	   );
+
+sub expand {
+    my ($names, $args, $key, $vals, @rest) = @_;
+    if (defined $key) {
+	my $bad;
+	while (my ($i, $v) = each @$vals) {
+	    $bad += expand([@$names, "$key=$i"], [@$args, $v], @rest);
+	}
+	return $bad;
+    }
+    # time to process something:
+    my $name = join ',', @$names;
+    my @args = grep {length} @$args;
+
+    $ENV{PERL5LIB} = join $Config{path_sep}, @INC;
+    my $pid = fork;
+    unless ($pid) {
+	open STDOUT, '>', "$prefix/$name.out"
+	    or die "Can't open $prefix/$name.out: $!";
+	open STDERR, '>', "$prefix/$name.err"
+	    or die "Can't open $prefix/$name.err: $!";
+	exec $^X, 'makedef.pl', @args;
+	die "Something went horribly wrong: $!";
+    }
+    die "Bad waitpid: $!" unless waitpid $pid, 0 == $pid;
+    if ($?) {
+	print STDERR "`$^X makedef.pl @args` failed with $?\n";
+	print STDERR "See output in $prefix/$name.err\n";
+	return 1;
+    }
+    return 0;
+}
+
+my $bad = expand([], [], @args);
+exit($bad > 255 ? 255 : $bad);

Added: vendor/perl/dist/Porting/leakfinder.pl
===================================================================
--- vendor/perl/dist/Porting/leakfinder.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/leakfinder.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,166 @@
+
+# WARNING! This script can be dangerous.  It executes every line in every
+# file in the build directory and its subdirectories, so it could do some
+# harm if the line contains `rm *` or something similar.
+#
+# Run this as ./perl -Ilib Porting/leakfinder.pl after building perl.
+#
+# This is a quick non-portable hack that evaluates pieces of code in an
+# eval twice and sees whether the number of SVs goes up.  Any lines that
+# leak are printed to STDOUT.
+#
+# push and unshift will give false positives.  Some lines (listed at the
+# bottom) are explicitly skipped.  Some patterns (at the beginning of the
+# inner for loop) are also skipped.
+
+use XS::APItest "sv_count";
+use Data::Dumper;
+$Data::Dumper::Useqq++;
+for(`find .`) {
+ warn $_;
+ chomp;
+ for(`cat \Q$_\E 2>/dev/null`) {
+    next if exists $exceptions{s/^\s+//r};
+    next if /rm -rf/; # Could be an example from perlsec, e.g.
+     # Creating one of these special blocks creates SVs, obviously
+    next if /(?:END|CHECK|INIT)\s*\{/;
+    next if /^[{(]?\s*(?:push|unshift|(?:\@r = )?splice|binmode|sleep)/;
+    next if /\bselect(?:\s*|\()[^()]+,/; # 4-arg select hangs
+    next if /use parent/;
+    my $q = s/[\\']/sprintf "\\%02x", ord $&/gore
+         =~ s/\0/'."\\0".'/grid;
+    $prog = <<end;   
+            open oUt, ">&", STDOUT;
+            open STDOUT, ">/dev/null";
+            open STDIN, "</dev/null";
+            open STDERR, ">/dev/null";
+            \$unused_variable = '$q';
+            eval \$unused_variable while \$also_unused++ < 4;
+            print oUt sv_count, "\n";
+            eval \$unused_variable;
+            print oUt sv_count, "\n";
+end
+    open my $fh, "-|", $^X, "-Ilib", "-MXS::APItest=sv_count",
+                 '-e', $prog or warn($!), next;
+    local $/;
+    $out = <$fh>;
+    close $fh;
+    @_ = split ' ', $out;
+    if (@_ == 2 && $_[1] > $_[0]) { print Dumper $_ }
+ }
+}
+
+BEGIN {
+ @exceptions = split /^/, <<'end';
+1 while 1;
+1 while some_condition_with_side_effects;  */
+$a{buttons}[2*$a{default_button}] = [$a{buttons}[2*$a{default_button}]];
+$aliases{$code_point} = [ $aliases{$code_point} ];
+$aliases_maps->[$i] = [ $aliases_maps->[$i] ]
+$allow ? $hash{$acc} = $allow : push @list, $acc;
+/(a*(*MARK:a)b?)(*MARK:x)(*SKIP:a)(?{$count++; push @res,$1})(*FAIL)/g;
+$^A .= new version ~$_ for "\xce", v205, "\xcc";
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
+$args{include_dirs} = [ $args{include_dirs} ] 
+$ARRAY[++$#ARRAY] = $value;
+ at a = sort ($b, @a)
+$a = {x => $a};
+$base =~ /^[cwnv]/i or push @tmpl, "$base>", "$base<";
+$base =~ /^[nv]/i or push @formats, "$base>", "$base<";
+BEGIN { unshift(@INC, "./blib") }
+BEGIN { unshift @INC, "lib" }
+BEGIN { unshift(@INC, LIST) }
+binmode *STDERR, ":encoding(utf8)";
+binmode *STDOUT, ":encoding(utf8)";
+char const *file = __FILE__;
+$char++ while substr( $got, $char, 1 ) eq substr( $wanted, $char, 1 );
+CHECK { $main::phase++ }
+$config{$k} = [ $config{$k} ]
+const char *file = __FILE__;
+const char* file = __FILE__;
+$count4 = unshift (@array, 0);
+$count7 = unshift (@array, 3, 2, 1);
+$data = [ $data ];
+do { $tainted_value = shift @ENV_values  } while(!$tainted_value || ref $tainted_value);
+do {$x[$x] = $x;} while ($x++) < 10;
+eval {CHECK {print ":c3"}};
+eval {INIT {print ":i2"}};
+eval { $proto->can($method) } || push @nok, $method;
+eval { push \@ISA, __FILE__ };
+eval 'v23: $counter++; goto v23 unless $counter == 2';
+eval 'v23 : $counter++; goto v23 unless $counter == 2';
+$formdata->{$key} = [ $formdata->{$key}, $value ];
+$func = $next{$func} until $pod{$func};
+$got_arrayref ? unshift(@{$args[0]}, $cmd) : unshift(@args, $cmd);
+$h{ []} = 123;
+{ $h[++$i] = $_ }
+High resolution alarm, sleep, gettimeofday, interval timers
+if (-d "$directory/$_") { push    @ARGV, "$directory/$_" }
+$i = int($i/2) until defined $self->[$i/2];
+$invmap_ref->[$i] = [ $invmap_ref->[$i] ];
+is(push(@ary,4), 3);
+is(push(@ary,56), 4);
+is(unshift(@ary,12), 5);
+$i++ while $self->{ids}{"$t$i"}++;
+{ --$level; push @out, ("  " x $level) . "</ul>"; }
+$mod_hash->{$k} = [ $mod_hash->{$k} ];
+$modlibname =~ s,[\\/][^\\/]+$,, while $c--;    # Q&D basename
+my $deep1 = []; push @$deep1, $deep1;
+my $deep2 = []; push @$deep2, $deep2;
+my $nfound = select($_[0], $_[1], $_[2], $_[3]);
+my $nfound = select($_[0], $_[1], $_[2], $gran);
+my $n = unshift(@ary,5,6);
+my @result = splice @temp, $self, $offset, $length, @_;
+my @r = splice @a, 0, 1, "x", "y";
+$_ = {name=>$_};
+$n = push @a, "rec0", "rec1", "rec2";
+$n = push @a, "rec3", "rec4$:";
+$n = unshift @a, "rec0", "rec1", "rec2";
+$n = unshift @a, "rec3", "rec4$:";
+@$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
+ at old = splice(@h, 1, 2, qw(bananas just before));
+unlink <"$filename*">;
+package XS::APItest; require XSLoader; XSLoader::load()
+$pa = { -exitval => $pa };
+$pa = { -message => $pa };
+pop @lines while $lines[-1] eq "";
+pop @to while $#to and $to[$#to] == $to[$#to -1];
+pop(@$x); unshift(@q, $q);
+ at prgs = (@prgs, $file, split "\n########\n", <$fh>) ;
+print "LA LA LA\n" while 1;          # loops forever
+prog => 'use Config; CHECK { $Config{awk} }',
+$p->{share_dir} = { dist => [ $p->{share_dir} ] };
+$p->{share_dir} = { dist => $p->{share_dir} };
+-sleep
+$resp = [$resp]
+$r = eval q[ qr/$r(??{$x})/; ];
+$r = qr/$r(??{$x})/;
+s/a|/push @bar, 1/e;
+$self->{DIR} = [grep $_, split ":", $self->{DIR}];
+$share_dir->{dist} = [ $share_dir->{dist} ];
+s![^/+]*$!man!&&-d&&!$s{$_}++&&push at m,#_;END{print"@m"}'
+$spec = [$spec, $_[0]];
+*s = ~(*s);
+$stack[$i++] &= ~1;
+$step = [$step];
+sub CHECK {print ":check"}
+sub INIT {print ":init"}
+system("find . -type f -print     | xargs chmod 0444");
+the while clause.  */
+Time::HiRes - High resolution alarm, sleep, gettimeofday, interval timers
+*tmpl = ~*tmpl;
+*tmps = ~*tmps;
+until ($i) { }
+weaken($objs[@objs] = $h{$_} = []);
+weaken($objs[@objs] = $$h{$_} = []);
+while (1) { my $k; }
+while(1) { sleep(1); }
+while($foo--) { print("In thread $thread\n"); }
+"words" =~ /(word|word|word)(?{push @got, $1})s$/;
+"words" =~ /(word|word|word)(?{push @got,$1})s$/i;
+$x->[$j] -= $BASE if $car = (($x->[$j] += $car) >= $BASE) ? 1 : 0; $j++;
+$x->[scalar @$x] = 0;		# avoid || 0 test inside loop
+$z = splice @a, 3, 1, "recordZ";
+end
+ @exceptions{@exceptions} = ();
+}

Added: vendor/perl/dist/Porting/make-rmg-checklist
===================================================================
--- vendor/perl/dist/Porting/make-rmg-checklist	                        (rev 0)
+++ vendor/perl/dist/Porting/make-rmg-checklist	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,145 @@
+#!perl
+use strict;
+use warnings;
+use autodie;
+
+use Getopt::Long;
+use Pod::Simple::HTML;
+
+sub main {
+    my ( $help, $type, $html );
+    GetOptions(
+        'type:s' => \$type,
+        'html'   => \$html,
+        'help'   => \$help,
+    );
+
+    if ($help) {
+        print <<'EOF';
+make-rmg-checklist [--type TYPE]
+
+This script creates a release checklist as a simple HTML document. It accepts
+the following arguments:
+
+  --type    The release type for the checklist. This can be BLEAD-FINAL,
+            BLEAD-POINT, MAINT, or RC. This defaults to BLEAD-POINT.
+
+  --html    Output HTML instead of POD
+
+EOF
+
+        exit;
+    }
+
+    $type = _validate_type($type);
+
+    open my $fh, '<', 'Porting/release_managers_guide.pod';
+    my $pod = do { local $/; <$fh> };
+    close $fh;
+
+    my $heads = _parse_rmg( $pod, $type );
+    my $new_pod = _munge_pod( $pod, $heads );
+
+    if ($html) {
+        my $simple = Pod::Simple::HTML->new();
+        $simple->output_fh(*STDOUT);
+        $simple->parse_string_document($new_pod);
+    }
+    else {
+        print $new_pod;
+    }
+}
+
+sub _validate_type {
+    my $type = shift || 'BLEAD-POINT';
+
+    my @valid = qw( BLEAD-FINAL BLEAD-POINT MAINT RC );
+    my %valid = map { $_ => 1 } @valid;
+
+    unless ( $valid{ uc $type } ) {
+        my $err
+            = "The type you provided ($type) is not a valid release type. It must be one of ";
+        $err .= join ', ', @valid;
+        $err .= "\n";
+
+        die $err;
+    }
+
+    return $type;
+}
+
+sub _parse_rmg {
+    my $pod  = shift;
+    my $type = shift;
+
+    my @heads;
+    my $include = 0;
+    my %skip;
+
+    for ( split /\n/, $pod ) {
+        if (/^=for checklist begin/) {
+            $include = 1;
+            next;
+        }
+
+        next unless $include;
+
+        last if /^=for checklist end/;
+
+        if (/^=for checklist skip (.+)/) {
+            %skip = map { $_ => 1 } split / /, $1;
+            next;
+        }
+
+        if (/^=head(\d) (.+)/) {
+            unless ( keys %skip && $skip{$type} ) {
+                push @heads, [ $1, $2 ];
+            }
+
+            %skip = ();
+        }
+    }
+
+    return \@heads;
+}
+
+sub _munge_pod {
+    my $pod   = shift;
+    my $heads = shift;
+
+    $pod =~ s/=head1 NAME.+?(=head1 SYNOPSIS)/$1/s;
+
+    my $new_pod = <<'EOF';
+=head1 NAME
+
+Release Manager's Guide with Checklist
+
+=head2 Checklist
+
+EOF
+
+    my $last_level = 0;
+    for my $head ( @{$heads} ) {
+        my $level = $head->[0] - 1;
+
+        if ( $level > $last_level ) {
+            $new_pod .= '=over ' . $level * 4;
+            $new_pod .= "\n\n";
+        }
+        elsif ( $level < $last_level ) {
+            $new_pod .= "=back\n\n" for 1 .. ( $last_level - $level );
+        }
+
+        $new_pod .= '=item * ' . 'L<< /' . $head->[1] . " >>\n\n";
+
+        $last_level = $level;
+    }
+
+    $new_pod .= "=back\n\n" while $last_level--;
+
+    $new_pod .= $pod;
+
+    return $new_pod;
+}
+
+main();

Added: vendor/perl/dist/Porting/make_modlib_cpan.pl
===================================================================
--- vendor/perl/dist/Porting/make_modlib_cpan.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/make_modlib_cpan.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,91 @@
+#!perl
+#
+# This program generates the list of registered CPAN sites in perlmodlib.PL
+#
+use strict;
+use warnings;
+use 5.14.0;
+use autodie;
+use HTTP::Tiny;
+
+my $http = HTTP::Tiny->new;
+
+my $url      = 'http://www.cpan.org/SITES';
+my $filename = 'SITES';
+my $response = $http->mirror( $url, $filename );
+unless ( $response->{success} ) {
+    die "Error downloading $url";
+}
+
+my $fh = IO::File->new($filename);
+
+while ( my $line = <$fh> ) {
+    chomp $line;
+    last
+        if $line eq
+            '[Africa] [Asia] [Australasia] [Central America] [Europe] [North America] [South America]';
+}
+
+my $line = <$fh>;
+
+say 'Registered CPAN sites';
+say '';
+say '=for maintainers';
+say 'Generated by Porting/make_modlib_cpan.pl';
+say '';
+
+my $continent;
+my $country;
+my $state;
+
+while ( my $line = <$fh> ) {
+    chomp $line;
+    next if $line =~ /^\s+$/;
+    last if $line eq 'Feedback';
+
+    if ( $line =~ /^(?<continent>\w.+)$/ ) {
+        if ($continent) {
+            say '';
+            if ($continent) {
+                say "=back";
+                say '';
+            }
+            if ( $continent eq 'North America' ) {
+                say "=back";
+                say '';
+            }
+        }
+        $continent = $+{continent};
+        undef $country;
+        say "=head2 $continent";
+        say '';
+        say '=over 4';
+        say '';
+    } elsif ( $line =~ /^\s{3}(?<country>\w.+)$/ ) {
+        if ($country) {
+            say '';
+        }
+        $country = $+{country};
+        undef $state;
+        say "=item $country";
+        say '';
+        if ( $country eq 'United States' ) {
+            say '=over 8';
+            say '';
+        }
+    } elsif ( $line =~ /^\s{5}(?<state>\w.+)$/ ) {
+        if ($state) {
+            say '';
+        }
+        $state = $+{state};
+        say "=item $state";
+        say '';
+    } elsif ( $line =~ /^\s{22}(?<site>\w.+$)/ ) {
+        say "  $+{site}";
+    } else {
+        die "Unknown line: $line";
+    }
+}
+
+say '';
+say '=back';

Added: vendor/perl/dist/Porting/new-perldelta.pl
===================================================================
--- vendor/perl/dist/Porting/new-perldelta.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/new-perldelta.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,108 @@
+#!/usr/bin/perl -w
+use strict;
+
+# This needs to be able to run from a clean checkout, hence assume only system
+# perl, which may be too old to have autodie
+
+require 'Porting/pod_lib.pl';
+
+my $state = get_pod_metadata(1);
+my (undef, $old_major, $old_minor) = @{$state->{delta_version}};
+# For now, hard code it for the simple ones...
+my $new_major = $old_major;
+my $new_minor = $old_minor + 1;
+# These two are just for "If you are upgrading from earlier releases..." in
+# the perldelta template.
+my $was_major = $old_major;
+my $was_minor = $old_minor - 1;
+# I may have missed some corner cases here:
+if ($was_minor < 0) {
+    $was_minor = 0;
+    --$was_major;
+}
+my $newdelta_filename = "perl5$new_major${new_minor}delta.pod";
+
+{
+    # For now, just tell the user what to add, as it's safer.
+    my %add;
+
+    sub git_add_new {
+        push @{$add{new}}, shift;
+    }
+
+    sub git_add_modified {
+        push @{$add{modified}}, shift;
+    }
+
+    sub notify_success {
+        return unless %add;
+        print "Please run:\n";
+        foreach (qw(new modified)) {
+            print "    git add @{$add{$_}}\n" if $add{$_};
+        }
+        print "\nBefore committing please check that the build works and make test_porting passes\n";
+    }
+}
+
+my $filename = 'pod/.gitignore';
+my $gitignore = slurp_or_die($filename);
+
+$gitignore =~ s{^/$state->{delta_target}$}
+               {/$newdelta_filename}m
+    or die "Can't find /$state->{delta_target} in $filename";
+
+write_or_die($filename, $gitignore);
+git_add_modified($filename);
+
+my $olddelta = slurp_or_die('pod/perldelta.pod');
+
+$olddelta =~ s{^(perl)(delta - what is new for perl v5.$old_major.$old_minor)$}
+              {$1 . "5$old_major$old_minor" . $2}me
+    or die "Can't find expected NAME contents in $olddelta";
+
+my $olddeltaname = "pod/perl5$old_major${old_minor}delta.pod";
+write_or_die($olddeltaname, $olddelta);
+git_add_new($olddeltaname);
+
+$filename = 'Porting/perldelta_template.pod';
+my $newdelta = slurp_or_die($filename);
+
+foreach([rXXX => $was_major],
+        [sXXX => $old_major],
+        [tXXX => $new_major],
+        [aXXX => $was_minor],
+        [bXXX => $old_minor],
+        [cXXX => $new_minor],
+        ['5XXX' => 5 . $old_major . $old_minor]) {
+    my ($token, $value) = @$_;
+    $newdelta =~ s/$token/$value/g
+        or die "Can't find '$token' in $filename";
+}
+
+write_or_die('pod/perldelta.pod', $newdelta);
+git_add_modified('pod/perldelta.pod');
+
+$filename = 'pod/perl.pod';
+my $pod_master = slurp_or_die($filename);
+
+$pod_master =~ s{^(\s*perl5)($was_major$was_minor)(delta\s+Perl changes in version )(5\.\d+\.\d+)(.*)}
+    {$1 . $old_major . $old_minor .$3 . "5.$old_major.$old_minor" . $5 . "\n" .
+         "$1$2$3$4$5"}me
+    or warn "Couldn't find perldelta line (for perl5$was_major${was_minor}delta) in $filename";
+
+write_or_die($filename, $pod_master);
+git_add_modified($filename);
+
+my $command = "$^X Porting/pod_rules.pl";
+system $command
+    and die "Could not run '$command', \$? = $?";
+git_add_modified(map {chomp $_; $_} `$^X Porting/pod_rules.pl --showfiles`);
+
+notify_success();
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/Porting/pod_lib.pl
===================================================================
--- vendor/perl/dist/Porting/pod_lib.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/pod_lib.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,549 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Digest::MD5 'md5';
+use File::Find;
+
+=head1 NAME
+
+Porting/pod_lib.pl - functions for building and installing POD
+
+=head1 SYNOPSIS
+
+    require './Porting/pod_lib.pl';
+
+=cut
+
+=head1 DESCRIPTION
+
+This program, when C<require>d into other programs in the Perl 5 core
+distribution, provides functions useful during building and, secondarily,
+testing.
+
+As of this writing, the functions in this program are used in these other
+programs:
+
+    installman
+    installperl
+    pod/buildtoc
+    pod/perl.pod
+    Porting/new-perldelta.pl
+    Porting/pod_rules.pl
+
+Note:  Since these functions are used during the Perl build process, they must
+work with F<miniperl>.  That necessarily implies that these functions must not
+rely on XS modules, either directly or indirectly (e.g., C<autodie>).
+
+=head1 SUBROUTINES
+
+=head2 C<my_die()>
+
+=over 4
+
+=item * Purpose
+
+Exit from a process with an error code and a message.
+
+=item * Arguments
+
+List of arguments to be passed with the error message.  Example:
+
+    close $fh or my_die("close 'utils.lst': $!");
+
+=item * Return Value
+
+Exit code C<255>.
+
+=item * Comment
+
+Prints C<ABORTED> to STDERR.
+
+=back
+
+=cut
+
+sub my_die {
+    print STDERR "$0: ", @_;
+    print STDERR "\n" unless $_[-1] =~ /\n\z/;
+    print STDERR "ABORTED\n";
+    exit 255;
+}
+
+=head2 C<open_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Opens a file or fails if it cannot.
+
+=item * Arguments
+
+String holding filename to be opened.  Example:
+
+    $fh = open_or_die('utils.lst');
+
+=item * Return Value
+
+Handle to opened file.
+
+=back
+
+=cut
+
+sub open_or_die {
+    my $filename = shift;
+    open my $fh, '<', $filename or my_die "Can't open $filename: $!";
+    return $fh;
+}
+
+=head2 C<slurp_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Read the contents of a file into memory as a single string.
+
+=item * Arguments
+
+String holding name of file to be read into memory.
+
+    $olddelta = slurp_or_die('pod/perldelta.pod');
+
+=item * Return Value
+
+String holding contents of file.
+
+=back
+
+=cut
+
+sub slurp_or_die {
+    my $filename = shift;
+    my $fh = open_or_die($filename);
+    binmode $fh;
+    local $/;
+    my $contents = <$fh>;
+    die "Can't read $filename: $!" unless defined $contents and close $fh;
+    return $contents;
+}
+
+=head2 C<write_or_die()>
+
+=over 4
+
+=item * Purpose
+
+Write out a string to a file.
+
+=item * Arguments
+
+List of two arguments:  (i) String holding name of file to be written to; (ii)
+String holding contents to be written.
+
+    write_or_die($olddeltaname, $olddelta);
+
+=item * Return Value
+
+Implicitly returns true value upon success.
+
+=back
+
+=cut
+
+sub write_or_die {
+    my ($filename, $contents) = @_;
+    open my $fh, '>', $filename or die "Can't open $filename for writing: $!";
+    binmode $fh;
+    print $fh $contents or die "Can't write to $filename: $!";
+    close $fh or die "Can't close $filename: $!";
+}
+
+=head2 C<pods_to_install()>
+
+=over 4
+
+=item * Purpose
+
+Create a lookup table holding information about PODs to be installed.
+
+=item * Arguments
+
+None.
+
+=item * Return Value
+
+Reference to a hash with a structure like this:
+
+    $found = {
+      'MODULE' => {
+        'CPAN::Bundle' => 'lib/CPAN/Bundle.pm',
+        'Locale::Codes::Script_Retired' =>
+            'lib/Locale/Codes/Script_Retired.pm',
+        'Pod::Simple::DumpAsText' =>
+            'lib/Pod/Simple/DumpAsText.pm',
+        # ...
+        'Locale::Codes::LangVar' =>
+            'lib/Locale/Codes/LangVar.pod'
+      },
+      'PRAGMA' => {
+        'fields' => 'lib/fields.pm',
+        'subs' => 'lib/subs.pm',
+        # ...
+      },
+
+=item * Comment
+
+Broadly speaking, the function assembles a list of all F<.pm> and F<.pod>
+files in the distribution and then excludes certain files from installation.
+
+=back
+
+=cut
+
+sub pods_to_install {
+    # manpages not to be installed
+    my %do_not_install = map { ($_ => 1) }
+        qw(Pod::Functions XS::APItest XS::Typemap);
+
+    my (%done, %found);
+
+    File::Find::find({no_chdir=>1,
+                      wanted => sub {
+                          if (m!/t\z!) {
+                              ++$File::Find::prune;
+                              return;
+                          }
+
+                          # $_ is $File::Find::name when using no_chdir
+                          return unless m!\.p(?:m|od)\z! && -f $_;
+                          return if m!lib/Net/FTP/.+\.pm\z!; # Hi, Graham! :-)
+                          # Skip .pm files that have corresponding .pod files
+                          return if s!\.pm\z!.pod! && -e $_;
+                          s!\.pod\z!!;
+                          s!\Alib/!!;
+                          s!/!::!g;
+
+                          my_die("Duplicate files for $_, '$done{$_}' and '$File::Find::name'")
+                              if exists $done{$_};
+                          $done{$_} = $File::Find::name;
+
+                          return if $do_not_install{$_};
+                          return if is_duplicate_pod($File::Find::name);
+                          $found{/\A[a-z]/ ? 'PRAGMA' : 'MODULE'}{$_}
+                              = $File::Find::name;
+                      }}, 'lib');
+    return \%found;
+}
+
+my %state = (
+             # Don't copy these top level READMEs
+             ignore => {
+                        micro => 1,
+                        # vms => 1,
+                       },
+            );
+
+{
+    my (%Lengths, %MD5s);
+
+    sub is_duplicate_pod {
+        my $file = shift;
+        local $_;
+
+        # Initialise the list of possible source files on the first call.
+        unless (%Lengths) {
+            __prime_state() unless $state{master};
+            foreach (@{$state{master}}) {
+                next unless $_->[2]{dual};
+                # This is a dual-life perl*.pod file, which will have be copied
+                # to lib/ by the build process, and hence also found there.
+                # These are the only pod files that might become duplicated.
+                ++$Lengths{-s $_->[1]};
+                ++$MD5s{md5(slurp_or_die($_->[1]))};
+            }
+        }
+
+        # We are a file in lib. Are we a duplicate?
+        # Don't bother calculating the MD5 if there's no interesting file of
+        # this length.
+        return $Lengths{-s $file} && $MD5s{md5(slurp_or_die($file))};
+    }
+}
+
+sub __prime_state {
+    my $source = 'perldelta.pod';
+    my $filename = "pod/$source";
+    my $contents = slurp_or_die($filename);
+    my @want =
+        $contents =~ /perldelta - what is new for perl v(5)\.(\d+)\.(\d+)\n/;
+    die "Can't extract version from $filename" unless @want;
+    my $delta_leaf = join '', 'perl', @want, 'delta';
+    $state{delta_target} = "$delta_leaf.pod";
+    $state{delta_version} = \@want;
+
+    # This way round so that keys can act as a MANIFEST skip list
+    # Targets will always be in the pod directory. Currently we can only cope
+    # with sources being in the same directory.
+    $state{copies}{$state{delta_target}} = $source;
+
+    # The default flags if none explicitly set for the current file.
+    my $current_flags = '';
+    my (%flag_set, @paths);
+
+    my $master = open_or_die('pod/perl.pod');
+
+    while (<$master>) {
+        last if /^=begin buildtoc$/;
+    }
+    die "Can't find '=begin buildtoc':" if eof $master;
+
+    while (<$master>) {
+        next if /^$/ or /^#/;
+        last if /^=end buildtoc/;
+        my ($command, @args) = split ' ';
+        if ($command eq 'flag') {
+            # For the named pods, use these flags, instead of $current_flags
+            my $flags = shift @args;
+            my_die("Malformed flag $flags")
+                unless $flags =~ /\A=([a-z]*)\z/;
+            $flag_set{$_} = $1 foreach @args;
+        } elsif ($command eq 'path') {
+            # If the pod's name matches the regex, prepend the given path.
+            my_die("Malformed path for /$args[0]/")
+                unless @args == 2;
+            push @paths, [qr/\A$args[0]\z/, $args[1]];
+        } elsif ($command eq 'aux') {
+            # The contents of perltoc.pod's "AUXILIARY DOCUMENTATION" section
+            $state{aux} = [sort @args];
+        } else {
+            my_die("Unknown buildtoc command '$command'");
+        }
+    }
+
+    foreach (<$master>) {
+        next if /^$/ or /^#/;
+        next if /^=head2/;
+        last if /^=for buildtoc __END__$/;
+
+        if (my ($action, $flags) = /^=for buildtoc flag ([-+])([a-z]+)/) {
+            if ($action eq '+') {
+                $current_flags .= $flags;
+            } else {
+                my_die("Attempt to unset [$flags] failed - flags are '$current_flags")
+                    unless $current_flags =~ s/[\Q$flags\E]//g;
+            }
+        } elsif (my ($leafname, $desc) = /^\s+(\S+)\s+(.*)/) {
+            my $podname = $leafname;
+            my $filename = "pod/$podname.pod";
+            foreach (@paths) {
+                my ($re, $path) = @$_;
+                if ($leafname =~ $re) {
+                    $podname = $path . $leafname;
+                    $filename = "$podname.pod";
+                    last;
+                }
+            }
+
+            # Keep this compatible with pre-5.10
+            my $flags = delete $flag_set{$leafname};
+            $flags = $current_flags unless defined $flags;
+
+            my %flags;
+            $flags{toc_omit} = 1 if $flags =~ tr/o//d;
+            $flags{dual} = $podname ne $leafname;
+
+            $state{generated}{"$podname.pod"}++ if $flags =~ tr/g//d;
+
+            if ($flags =~ tr/r//d) {
+                my $readme = $podname;
+                $readme =~ s/^perl//;
+                $state{readmes}{$readme} = $desc;
+                $flags{readme} = 1;
+            } else {
+                $state{pods}{$podname} = $desc;
+            }
+            my_die "Unknown flag found in section line: $_" if length $flags;
+
+            push @{$state{master}},
+                [$leafname, $filename, \%flags];
+
+            if ($podname eq 'perldelta') {
+                local $" = '.';
+                push @{$state{master}},
+                    [$delta_leaf, "pod/$state{delta_target}"];
+                $state{pods}{$delta_leaf} = "Perl changes in version @want";
+            }
+
+        } else {
+            my_die("Malformed line: $_");
+        }
+    }
+    close $master or my_die("close pod/perl.pod: $!");
+    # This has to be special-cased somewhere. Turns out this is cleanest:
+    push @{$state{master}}, ['a2p', 'x2p/a2p.pod', {toc_omit => 1}];
+
+    my_die("perl.pod sets flags for unknown pods: "
+           . join ' ', sort keys %flag_set)
+        if keys %flag_set;
+}
+
+=head2 C<get_pod_metadata()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+List of one or more arguments.
+
+=over 4
+
+=item * Boolean true or false
+
+=item * Reference to a suboutine.
+
+=item * Various other arguments.
+
+=back
+
+Example:
+
+    $state = get_pod_metadata(
+        0, sub { warn @_ if @_ }, 'pod/perltoc.pod');
+
+    get_pod_metadata(
+        1, sub { warn @_ if @_ }, values %Build);
+
+=item * Return Value
+
+Hash reference; each element provides either a list or a lookup table for
+information about various types of POD files.
+
+  'aux'             => [ # utility programs like
+                            'h2xs' and 'perlbug' ]
+  'generated'       => { # lookup table for generated POD files
+                            like 'perlapi.pod' }
+  'ignore'          => { # lookup table for files to be ignored }
+  'pods'            => { # lookup table in "name" =>
+                            "short description" format }
+  'readmes'         => { # lookup table for OS-specific
+                            and other READMEs }
+  'delta_version'   => [ # major version number, minor no.,
+                            patch no. ]
+  'delta_target'    => 'perl<Mmmpp>delta.pod',
+  'master'          => [ # list holding entries for files callable
+                        by 'perldoc' ]
+  'copies'          => { # patch version perldelta =>
+                        minor version perldelta }
+
+=back
+
+=cut
+
+sub get_pod_metadata {
+    # Do we expect to find generated pods on disk?
+    my $permit_missing_generated = shift;
+    # Do they want a consistency report?
+    my $callback = shift;
+    local $_;
+
+    __prime_state() unless $state{master};
+    return \%state unless $callback;
+
+    my %BuildFiles;
+
+    foreach my $path (@_) {
+        $path =~ m!([^/]+)$!;
+        ++$BuildFiles{$1};
+    }
+
+    # Sanity cross check
+
+    my (%disk_pods, %manipods, %manireadmes);
+    my (%cpanpods, %cpanpods_leaf);
+    my (%our_pods);
+
+    # There are files that we don't want to list in perl.pod.
+    # Maybe the various stub manpages should be listed there.
+    my %ignoredpods = map { ( "$_.pod" => 1 ) } qw( );
+
+    # Convert these to a list of filenames.
+    ++$our_pods{"$_.pod"} foreach keys %{$state{pods}};
+    foreach (@{$state{master}}) {
+        ++$our_pods{"$_->[0].pod"}
+            if $_->[2]{readme};
+    }
+
+    opendir my $dh, 'pod';
+    while (defined ($_ = readdir $dh)) {
+        next unless /\.pod\z/;
+        ++$disk_pods{$_};
+    }
+
+    # Things we copy from won't be in perl.pod
+    # Things we copy to won't be in MANIFEST
+
+    my $mani = open_or_die('MANIFEST');
+    while (<$mani>) {
+        chomp;
+        s/\s+.*$//;
+        if (m!^pod/([^.]+\.pod)!i) {
+            ++$manipods{$1};
+        } elsif (m!^README\.(\S+)!i) {
+            next if $state{ignore}{$1};
+            ++$manireadmes{"perl$1.pod"};
+        } elsif (exists $our_pods{$_}) {
+            ++$cpanpods{$_};
+            m!([^/]+)$!;
+            ++$cpanpods_leaf{$1};
+            $disk_pods{$_}++
+                if -e $_;
+        }
+    }
+    close $mani or my_die "close MANIFEST: $!\n";
+
+    # Are we running before known generated files have been generated?
+    # (eg in a clean checkout)
+    my %not_yet_there;
+    if ($permit_missing_generated) {
+        # If so, don't complain if these files aren't yet in place
+        %not_yet_there = (%manireadmes, %{$state{generated}}, %{$state{copies}})
+    }
+
+    my @inconsistent;
+    foreach my $i (sort keys %disk_pods) {
+        push @inconsistent, "$0: $i exists but is unknown by buildtoc\n"
+            unless $our_pods{$i} || $ignoredpods{$i};
+        push @inconsistent, "$0: $i exists but is unknown by MANIFEST\n"
+            if !$BuildFiles{'MANIFEST'} # Ignore if we're rebuilding MANIFEST
+                && !$manipods{$i} && !$manireadmes{$i} && !$state{copies}{$i}
+                    && !$state{generated}{$i} && !$cpanpods{$i};
+    }
+    foreach my $i (sort keys %our_pods) {
+        push @inconsistent, "$0: $i is known by buildtoc but does not exist\n"
+            unless $disk_pods{$i} or $BuildFiles{$i} or $not_yet_there{$i};
+    }
+    unless ($BuildFiles{'MANIFEST'}) {
+        # Again, ignore these if we're about to rebuild MANIFEST
+        foreach my $i (sort keys %manipods) {
+            push @inconsistent, "$0: $i is known by MANIFEST but does not exist\n"
+                unless $disk_pods{$i};
+            push @inconsistent, "$0: $i is known by MANIFEST but is marked as generated\n"
+                if $state{generated}{$i};
+        }
+    }
+    &$callback(@inconsistent);
+    return \%state;
+}
+
+1;
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/Porting/pod_rules.pl
===================================================================
--- vendor/perl/dist/Porting/pod_rules.pl	                        (rev 0)
+++ vendor/perl/dist/Porting/pod_rules.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,263 @@
+#!/usr/bin/perl -w
+
+use strict;
+use vars qw(%Build %Targets $Verbose $Test);
+use Text::Tabs;
+use Text::Wrap;
+use Getopt::Long;
+use Carp;
+
+# Generate the sections of files listed in %Targets from pod/perl.pod
+# Mostly these are rules in Makefiles
+#
+# --verbose gives slightly more output
+# --build-all tries to build everything
+# --build-foo updates foo as follows
+# --showfiles shows the files to be changed
+# --test exit if perl.pod, MANIFEST are consistent, and regenerated
+#   files are up to date, die otherwise.
+
+%Targets = (
+            manifest => 'MANIFEST',
+            vms => 'vms/descrip_mms.template',
+            nmake => 'win32/Makefile',
+            dmake => 'win32/makefile.mk',
+            podmak => 'win32/pod.mak',
+            unix => 'Makefile.SH',
+            # plan9 =>  'plan9/mkfile',
+           );
+
+require 'Porting/pod_lib.pl';
+sub my_die;
+
+# process command-line switches
+{
+    my @files = keys %Targets;
+    my $filesopts = join(" | ", map { "--build-$_" } "all", sort @files);
+    my $showfiles;
+    my %build_these;
+    die "$0: Usage: $0 [--verbose] [--showfiles] [$filesopts]\n"
+        unless GetOptions (verbose => \$Verbose,
+                           showfiles => \$showfiles,
+                           tap => \$Test,
+                           map {+"build-$_", \$build_these{$_}} @files, 'all')
+            && !@ARGV;
+    if ($build_these{all}) {
+        %Build = %Targets;
+    } else {
+        while (my ($file, $want) = each %build_these) {
+            $Build{$file} = $Targets{$file} if $want;
+        }
+        # Default to --build-all if no targets given.
+        %Build = %Targets if !%Build;
+    }
+    if ($showfiles) {
+        print join(" ", sort { lc $a cmp lc $b } values %Build), "\n";
+        exit(0);
+    }
+}
+
+if ($Verbose) {
+    print "I will be building $_\n" foreach keys %Build;
+}
+
+my $test = 1;
+# For testing, generated files must be present and we're rebuilding nothing.
+# For normal rebuilding, generated files may not be present, and we mute
+# warnings about inconsistencies in any file we're about to rebuild.
+my $state = $Test
+    ? get_pod_metadata(0, sub {
+                           printf "1..%d\n", 1 + scalar keys %Build;
+                           if (@_) {
+                               print "not ok $test\n";
+                               die @_;
+                           }
+                           print "ok $test\n";
+                       })
+    : get_pod_metadata(1, sub { warn @_ if @_ }, values %Build);
+
+sub generate_manifest {
+    # Annoyingly, unexpand doesn't consider it good form to replace a single
+    # space before a tab with a tab
+    # Annoyingly (2) it returns read only values.
+    my @temp = unexpand (map {sprintf "%-32s%s", @$_} @_);
+    map {s/ \t/\t\t/g; $_} @temp;
+}
+
+sub generate_manifest_pod {
+    generate_manifest map {["pod/$_.pod", $state->{pods}{$_}]}
+        sort grep {
+            !$state->{copies}{"$_.pod"}
+                && !$state->{generated}{"$_.pod"}
+                    && !-e "$_.pod"
+                } keys %{$state->{pods}};
+}
+
+sub generate_manifest_readme {
+    generate_manifest sort {$a->[0] cmp $b->[0]}
+        ["README.vms", "Notes about installing the VMS port"],
+            map {["README.$_", $state->{readmes}{$_}]} keys %{$state->{readmes}};
+}
+
+sub generate_nmake_1 {
+    # XXX Fix this with File::Spec
+    (map {sprintf "\tcopy ..\\README.%-8s ..\\pod\\perl$_.pod\n", $_}
+     sort keys %{$state->{readmes}}),
+         (map {"\tcopy ..\\pod\\$state->{copies}{$_} ..\\pod\\$_\n"}
+          sort keys %{$state->{copies}});
+}
+
+# This doesn't have a trailing newline
+sub generate_nmake_2 {
+    # Spot the special case
+    local $Text::Wrap::columns = 76;
+    my $line = wrap ("\t    ", "\t    ",
+                     join " ", sort(keys %{$state->{copies}},
+                                    keys %{$state->{generated}},
+                                    map {"perl$_.pod"} keys %{$state->{readmes}}));
+    $line =~ s/$/ \\/mg;
+    $line =~ s/ \\$//;
+    $line;
+}
+
+sub generate_pod_mak {
+    my $variable = shift;
+    my @lines;
+    my $line = "\U$variable = " . join "\t\\\n\t",
+        map {"$_.$variable"} sort grep { $_ !~ m{/} } keys %{$state->{pods}};
+    # Special case
+    $line =~ s/.*perltoc.html.*\n//m;
+    $line;
+}
+
+sub verify_contiguous {
+    my ($name, $content, $what) = @_;
+    my $sections = () = $content =~ m/\0+/g;
+    croak("$0: $name contains no $what") if $sections < 1;
+    croak("$0: $name contains discontiguous $what") if $sections > 1;
+}
+
+sub do_manifest {
+    my ($name, $prev) = @_;
+    my @manifest =
+        grep {! m!^pod/[^. \t]+\.pod.*!}
+            grep {! m!^README\.(\S+)! || $state->{ignore}{$1}} split "\n", $prev;
+    join "\n", (
+                # Dictionary order - fold and handle non-word chars as nothing
+                map  { $_->[0] }
+                sort { $a->[1] cmp $b->[1] || $a->[0] cmp $b->[0] }
+                map  { my $f = lc $_; $f =~ s/[^a-z0-9\s]//g; [ $_, $f ] }
+                @manifest,
+                &generate_manifest_pod(),
+                &generate_manifest_readme()), '';
+}
+
+sub do_nmake {
+    my ($name, $makefile) = @_;
+    $makefile =~ s/^\tcopy \.\.\\README.*\n/\0/gm;
+    verify_contiguous($name, $makefile, 'README copies');
+    # Now remove the other copies that follow
+    1 while $makefile =~ s/\0\tcopy .*\n/\0/gm;
+    $makefile =~ s/\0+/join ("", &generate_nmake_1)/se;
+
+    $makefile =~ s{(-cd \$\(PODDIR\) && del /f[^\n]+).*?(-cd \.\.\\utils && del /f)}
+                  {"$1\n" . &generate_nmake_2."\n\t$2"}se;
+    $makefile;
+}
+
+# shut up used only once warning
+*do_dmake = *do_dmake = \&do_nmake;
+
+sub do_podmak {
+    my ($name, $body) = @_;
+    foreach my $variable (qw(pod man html tex)) {
+        my_die "could not find $variable in $name"
+            unless $body =~ s{\n\U$variable\E = (?:[^\n]*\\\n)*[^\n]*}
+                             {"\n" . generate_pod_mak ($variable)}se;
+    }
+    $body;
+}
+
+sub do_vms {
+    my ($name, $makefile) = @_;
+
+    # Looking for the macro defining the current perldelta:
+    #PERLDELTA_CURRENT = [.pod]perl5139delta.pod
+
+    $makefile =~ s{\nPERLDELTA_CURRENT\s+=\s+\Q[.pod]perl\E\d+delta\.pod\n}
+                  {\0}sx;
+    verify_contiguous($name, $makefile, 'current perldelta macro');
+    $makefile =~ s/\0+/join "\n", '', "PERLDELTA_CURRENT = [.pod]$state->{delta_target}", ''/se;
+
+    $makefile;
+}
+
+sub do_unix {
+    my ($name, $makefile_SH) = @_;
+
+    $makefile_SH =~ s{^(perltoc_pod_prereqs = extra.pods).*}
+                     {join ' ', $1, map "pod/$_",
+                          sort(keys %{$state->{copies}},
+                               grep {!/perltoc/} keys %{$state->{generated}})
+                      }mge;
+
+    # pod/perl511delta.pod: pod/perldelta.pod
+    #         cd pod && $(LNS) perldelta.pod perl511delta.pod
+
+    # although it seems that HP-UX make gets confused, always tried to
+    # regenerate the symlink, and then the ln -s fails, as the target exists.
+
+    $makefile_SH =~ s!(
+pod/perl[a-z0-9_]+\.pod: pod/perl[a-z0-9_]+\.pod
+	\$\(RMS\) pod/perl[a-z0-9_]+\.pod
+	\$\(LNS\) perl[a-z0-9_]+\.pod pod/perl[a-z0-9_]+\.pod
+)+!\0!gm;
+
+    verify_contiguous($name, $makefile_SH, 'copy rules');
+
+    my @copy_rules = map "
+pod/$_: pod/$state->{copies}{$_}
+	\$(RMS) pod/$_
+	\$(LNS) $state->{copies}{$_} pod/$_
+", keys %{$state->{copies}};
+
+    $makefile_SH =~ s/\0+/join '', @copy_rules/se;
+    $makefile_SH;
+}
+
+# Do stuff
+while (my ($target, $name) = each %Build) {
+    print "Now processing $name\n" if $Verbose;
+
+    my $orig = slurp_or_die($name);
+    my_die "$name contains NUL bytes" if $orig =~ /\0/;
+
+    my $new = do {
+        no strict 'refs';
+        &{"do_$target"}($target, $orig);
+    };
+
+    if ($Test) {
+        printf "%s %d # $name is up to date\n",
+            $new eq $orig ? 'ok' : 'not ok',
+                ++$test;
+        next;
+    } elsif ($new eq $orig) {
+        print "Was not modified\n"
+            if $Verbose;
+        next;
+    }
+
+    my $mode = (stat $name)[2] // my_die "Can't stat $name: $!";
+    rename $name, "$name.old" or my_die "Can't rename $name to $name.old: $!";
+
+    write_or_die($name, $new);
+    chmod $mode & 0777, $name or my_die "can't chmod $mode $name: $!";
+}
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/Porting/release_announcement_template.txt
===================================================================
--- vendor/perl/dist/Porting/release_announcement_template.txt	                        (rev 0)
+++ vendor/perl/dist/Porting/release_announcement_template.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+  [EPIGRAPH]
+
+    -- [ATTRIBUTION]
+
+We are [SYNONYM FOR 'pleased'] to announce version [VERSION.SUBVERSION],
+the [N-TH] development release of version 17 of Perl 5.
+
+You will soon be able to download Perl 5.[VERSION.SUBVERSION] from your
+favorite CPAN mirror or find it at:
+
+https://metacpan.org/release/[AUTHOR]/perl-5.[VERSION.SUBVERSION]/
+
+SHA1 digests for this release are:
+
+ [TAR.GZ SHA1]   perl-5.[VERSION.SUBVERSION].tar.gz
+ [TAR.BZ2 SHA1]  perl-5.[VERSION.SUBVERSION].tar.bz2
+
+You can find a full list of changes in the file "perldelta.pod" located in
+the "pod" directory inside the release and on the web.
+
+[ACKNOWLEDGEMENTS SECTION FROM PERLDELTA]
+
+We expect to release version [NEXT BLEAD VERSION.SUBVERSION] on [FUTURE
+DATE].  The next major stable release of Perl 5, version 18.0, should
+appear in May 2013.
+
+[YOUR SALUATION HERE]

Added: vendor/perl/dist/Porting/sync-with-cpan
===================================================================
--- vendor/perl/dist/Porting/sync-with-cpan	                        (rev 0)
+++ vendor/perl/dist/Porting/sync-with-cpan	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,484 @@
+#!/usr/bin/env perl
+
+=head1 NAME
+
+Porting/sync-with-cpan - Synchronize with CPAN distributions
+
+=head1 SYNOPSIS
+
+  perl Porting/sync-with-cpan <module>
+
+where <module> is the name it appears in the C<%Modules> hash
+of F<Porting/Maintainers.pl>
+
+=head1 DESCRIPTION
+
+Script to help out with syncing cpan distros.
+
+Does the following:
+
+=over 4
+
+=item *
+
+Fetches the package list from CPAN. Finds the current version of the given
+package. [1]
+
+=item *
+
+Downloads the relevant tarball; unpacks the tarball. [1]
+
+=item *
+
+Clean out the old directory (C<git clean -dfx>)
+
+=item *
+
+Moves the old directory out of the way, moves the new directory in place.
+
+=item *
+
+Restores any F<.gitignore> file.
+
+=item *
+
+Removes files from C<@IGNORE> and C<EXCLUDED>
+
+=item *
+
+C<git add> any new files.
+
+=item *
+
+C<git rm> any files that are gone.
+
+=item *
+
+Remove the +x bit on files in F<t/>
+
+=item *
+
+Remove the +x bit on files that don't have it enabled in the current dir
+
+=item *
+
+Restore files mentioned in C<CUSTOMIZED>
+
+=item *
+
+Adds new files to F<MANIFEST>
+
+=item *
+
+Runs a C<make> (assumes a configure has been run)
+
+=item *
+
+Cleans up
+
+=item *
+
+Runs tests for the package
+
+=item *
+
+Runs the porting tests
+
+=back
+
+[1]  If the C<--tarball> option is given, then CPAN is not consulted.
+C<--tarball> should be the path to the tarball; the version is extracted
+from the filename -- but can be overwritten by the C<--version> option.
+
+=head1 TODO
+
+=over 4
+
+=item *
+
+Delete files from F<MANIFEST>
+
+=item *
+
+Update F<Porting/Maintainers.pl>
+
+=item *
+
+Optional, run a full test suite
+
+=item *
+
+Handle complicated C<FILES>
+
+=back
+
+This is an initial version; no attempt has been made yet to make this
+portable. It shells out instead of trying to find a Perl solution.
+In particular, it assumes wget, git, tar, chmod, perl, make, and rm
+to be available.
+
+=cut
+
+
+package Maintainers;
+
+use 5.010;
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+$| = 1;
+
+die "This does not look like a top level directory"
+     unless -d "cpan" && -d "Porting";
+
+our @IGNORABLE;
+our %Modules;
+
+use autodie;
+
+require "Porting/Maintainers.pl";
+
+my %IGNORABLE    = map {$_ => 1} @IGNORABLE;
+
+my $package      = "02packages.details.txt";
+my $package_url  = "http://www.cpan.org/modules/$package";
+my $package_file = "/tmp/$package";
+
+my @problematic = (
+    'podlators', # weird CUSTOMIZED section due to .PL files
+);
+
+
+GetOptions ('tarball=s'  =>  \my $tarball,
+            'version=s'  =>  \my $version,
+             force       =>  \my $force,)
+        or  die "Failed to parse arguments";
+
+die "Usage: $0 module [args] [cpan package]" unless @ARGV == 1 || @ARGV == 2;
+
+my ($module)  = shift;
+my  $cpan_mod = @ARGV ? shift : $module;
+
+
+my  $info         = $Modules {$module} or die "Cannot find module $module";
+my  $distribution = $$info {DISTRIBUTION};
+
+my @files         = glob $$info {FILES};
+if (!-d $files [0] || grep { $_ eq $module } @problematic) {
+    say "This looks like a setup $0 cannot handle (yet)";
+    unless ($force) {
+        say "Will not continue without a --force option";
+        exit 1;
+    }
+    say "--force is in effect, so we'll soldier on. Wish me luck!";
+}
+
+
+chdir "cpan";
+
+my  $pkg_dir      = $files[0];
+    $pkg_dir      =~ s!.*/!!;
+
+my ($old_version) = $distribution =~ /-([0-9.]+)\.tar\.gz/;
+
+my  $o_module     = $module;
+if ($cpan_mod =~ /-/ && $cpan_mod !~ /::/) {
+    $cpan_mod =~ s/-/::/g;
+}
+
+#
+# Find the information from CPAN.
+#
+my $new_file;
+my $new_version;
+unless ($tarball) {
+    #
+    # Poor man's cache
+    #
+    unless (-f $package_file && -M $package_file < 1) {
+        system wget => $package_url, '-qO', $package_file;
+    }
+
+    my  $new_line = `grep '^$cpan_mod ' $package_file`
+                     or die "Cannot find $cpan_mod on CPAN\n";
+    chomp $new_line;
+    (undef, $new_version, my $new_path) = split ' ', $new_line;
+    if (defined $version) {
+        $new_path =~ s/-$new_version\./-$version\./;
+        $new_version = $version;
+    }
+    $new_file = (split '/', $new_path) [-1];
+
+    my $url = "http://search.cpan.org/CPAN/authors/id/$new_path";
+    say "Fetching $url";
+    #
+    # Fetch the new distro
+    #
+    system wget => $url, '-qO', $new_file;
+}
+else {
+    $new_file     = $tarball;
+    $new_version  = $version // ($new_file =~ /-([0-9._]+)\.tar\.gz/) [0];
+}
+
+my  $old_dir      = "$pkg_dir-$old_version";
+
+say "Cleaning out old directory";
+system git => 'clean', '-dfxq', $pkg_dir;
+
+say "Unpacking $new_file";
+
+system tar => 'xfz', $new_file;
+(my $new_dir = $new_file) =~ s/\.tar\.gz//;
+# ensure 'make' will update all files
+system('find', $new_dir, '-exec', 'touch', '{}', ';');
+
+say "Renaming directories";
+rename $pkg_dir => $old_dir;
+
+say "Creating new package directory";
+mkdir $pkg_dir;
+
+say "Populating new package directory";
+my $map = $$info {MAP};
+my @EXCLUDED_QR;
+my %EXCLUDED_QQ;
+if ($$info {EXCLUDED}) {
+    foreach my $entry (@{$$info {EXCLUDED}}) {
+        if (ref $entry) {push @EXCLUDED_QR => $entry}
+        else            {$EXCLUDED_QQ {$entry} = 1}
+    }
+}
+
+FILE: for my $file ( `find $new_dir -type f` ) {
+    chomp $file;
+    my $old_file = $file;
+    $file =~ s{^$new_dir/}{};
+
+    next if $EXCLUDED_QQ{$file};
+    for my $qr (@EXCLUDED_QR) {
+        next FILE if $file =~ $qr;
+    }
+
+    if ( $map ) {
+        for my $key ( sort { length $b <=> length $a } keys %$map ) {
+            my $val = $map->{$key};
+            last if $file =~ s/^$key/$val/;
+        }
+    }
+    else {
+        $file = $files[0] . '/' . $file;
+    }
+
+    if ( $file =~ m{^cpan/} ) {
+        $file =~ s{^cpan/}{};
+    }
+    else {
+        $file = '../' . $file;
+    }
+
+    my $prefix = '';
+    my @parts = split '/', $file;
+    pop @parts;
+    for my $part (@parts) {
+        $prefix .= '/' if $prefix;
+        $prefix .= $part;
+        mkdir $prefix unless -d $prefix;
+    }
+
+    rename $old_file => $file;
+}
+system 'rm', '-rf', $new_dir;
+
+if (-f "$old_dir/.gitignore") {
+    say "Restoring .gitignore";
+    system git => 'checkout', "$pkg_dir/.gitignore";
+}
+
+my @new_files = `find $pkg_dir -type f`;
+chomp @new_files;
+ at new_files = grep {$_ ne $pkg_dir} @new_files;
+s!^[^/]+/!! for @new_files;
+my %new_files = map {$_ => 1} @new_files;
+
+my @old_files = `find $old_dir -type f`;
+chomp @old_files;
+ at old_files = grep {$_ ne $old_dir} @old_files;
+s!^[^/]+/!! for @old_files;
+my %old_files = map {$_ => 1} @old_files;
+
+my @delete;
+my @commit;
+my @gone;
+FILE:
+foreach my $file (@new_files) {
+    next if -d "$pkg_dir/$file";   # Ignore directories.
+    next if $old_files {$file};    # It's already there.
+    if ($IGNORABLE {$file}) {
+        push @delete => $file;
+        next;
+    }
+    push @commit => $file;
+}
+foreach my $file (@old_files) {
+    next if -d "$old_dir/$file";
+    next if $new_files {$file};
+    push @gone => $file;
+}
+
+#
+# Find all files with an exec bit
+#
+my @exec = `find $pkg_dir -type f -perm +111`;
+chomp @exec;
+my @de_exec;
+foreach my $file (@exec) {
+    # Remove leading dir
+    $file =~ s!^[^/]+/!!;
+    if ($file =~ m!^t/!) {
+        push @de_exec => $file;
+        next;
+    }
+    # Check to see if the file exists; if it doesn't and doesn't have
+    # the exec bit, remove it.
+    if ($old_files {$file}) {
+        unless (-x "$old_dir/$file") {
+            push @de_exec => $file;
+        }
+    }
+}
+
+#
+# No need to change the +x bit on files that will be deleted.
+#
+if (@de_exec && @delete) {
+    my %delete = map {+"$pkg_dir/$_" => 1} @delete;
+    @de_exec = grep {!$delete {$_}} @de_exec;
+}
+
+say "unlink $pkg_dir/$_" for @delete;
+say "git add $pkg_dir/$_" for @commit;
+say "git rm -f $pkg_dir/$_" for @gone;
+say "chmod a-x $pkg_dir/$_" for @de_exec;
+
+print "Hit return to continue; ^C to abort "; <STDIN>;
+
+unlink "$pkg_dir/$_"                      for @delete;
+system git   => 'add', "$pkg_dir/$_"      for @commit;
+system git   => 'rm', '-f', "$pkg_dir/$_" for @gone;
+system chmod => 'a-x', "$pkg_dir/$_"      for @de_exec;
+
+#
+# Restore anything that is customized.
+# We don't really care whether we've deleted the file - since we
+# do a git restore, it's going to be resurrected if necessary.
+#
+if ($$info {CUSTOMIZED}) {
+    say "Restoring customized files";
+    foreach my $file (@{$$info {CUSTOMIZED}}) {
+        system git => "checkout", "$pkg_dir/$file";
+    }
+}
+
+chdir "..";
+if (@commit) {
+    say "Fixing MANIFEST";
+    my $MANIFEST      = "MANIFEST";
+    my $MANIFEST_SORT = "$MANIFEST.sorted";
+    open my $fh, ">>", $MANIFEST;
+    say $fh "cpan/$pkg_dir/$_" for @commit;
+    close $fh;
+    system perl => "Porting/manisort", '--output', $MANIFEST_SORT;
+    rename $MANIFEST_SORT => $MANIFEST;
+}
+
+
+print "Running a make ... ";
+system "make > make.log 2>&1" and die "Running make failed, see make.log";
+print "done\n";
+
+#
+# Must clean up, or else t/porting/FindExt.t will fail.
+# Note that we can always retrieve the orginal directory with a git checkout.
+#
+print "About to clean up; hit return or abort (^C) "; <STDIN>;
+
+chdir "cpan";
+system rm => '-r', $old_dir;
+unlink $new_file unless $tarball;
+
+
+#
+# Run the tests. First the test belonging to the module, followed by the
+# the tests in t/porting
+#
+chdir "../t";
+say "Running module tests";
+my @test_files = `find ../cpan/$pkg_dir -name '*.t' -type f`;
+chomp @test_files;
+my $output = `./perl TEST @test_files`;
+unless ($output =~ /All tests successful/) {
+    say $output;
+    exit 1;
+}
+
+print "Running tests in t/porting ";
+my @tests = `ls porting/*.t`;
+chomp @tests;
+my @failed;
+foreach my $t (@tests) {
+    my @not = `./perl -I../lib -I.. $t | grep ^not | grep -v "# TODO"`;
+    print @not ? '!' : '.';
+    push @failed => $t if @not;
+}
+print "\n";
+say "Failed tests: @failed" if @failed;
+
+
+say "Attempting to update Maintainers.pl";
+chdir '..';
+
+open my $Maintainers_pl, '<', 'Porting/Maintainers.pl';
+open my $new_Maintainers_pl, '>', 'Maintainers.pl';
+
+my $found;
+my $in_mod_section;
+while (<$Maintainers_pl>) {
+    if (!$found) {
+        if ($in_mod_section) {
+            if (/DISTRIBUTION/) {
+                if (s/\Q$old_version/$new_version/) {
+                    $found = 1;
+                }
+            }
+
+            if (/^    }/) {
+                $in_mod_section = 0;
+            }
+        }
+
+        if (/\Q$cpan_mod/) {
+            $in_mod_section = 1;
+        }
+    }
+
+    print $new_Maintainers_pl $_;
+}
+
+if ($found) {
+    unlink 'Porting/Maintainers.pl';
+    rename 'Maintainers.pl' => 'Porting/Maintainers.pl';
+    system chmod => 'a+x', 'Porting/Maintainers.pl';
+}
+else {
+    say "Could not update Porting/Maintainers.pl.";
+    say "Make sure you update this by hand before committing.";
+}
+
+say "$o_module is now version $new_version";
+say "Now you ought to run a make; make test ...";
+
+
+__END__

Added: vendor/perl/dist/Porting/todo.pod
===================================================================
--- vendor/perl/dist/Porting/todo.pod	                        (rev 0)
+++ vendor/perl/dist/Porting/todo.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1210 @@
+=head1 NAME
+
+todo - Perl TO-DO list
+
+=head1 DESCRIPTION
+
+This is a list of wishes for Perl. The most up to date version of this file
+is at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>
+
+The tasks we think are smaller or easier are listed first. Anyone is welcome
+to work on any of these, but it's a good idea to first contact
+I<perl5-porters at perl.org> to avoid duplication of effort, and to learn from
+any previous attempts. By all means contact a pumpking privately first if you
+prefer.
+
+Whilst patches to make the list shorter are most welcome, ideas to add to
+the list are also encouraged. Check the perl5-porters archives for past
+ideas, and any discussion about them. One set of archives may be found at
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/>
+
+What can we offer you in return? Fame, fortune, and everlasting glory? Maybe
+not, but if your patch is incorporated, then we'll add your name to the
+F<AUTHORS> file, which ships in the official distribution. How many other
+programming languages offer you 1 line of immortality?
+
+=head1 Tasks that need only a little Perl knowledge
+
+=head2 Fix POD errors in Perl documentation
+
+Perl documentation is furnished in POD (Plain Old Documentation); see
+L<perlpod>.  We also have a utility that checks for various errors in
+this documentation: F<t/porting/podcheck.t>.  Unfortunately many files
+have errors in them, and there is a database of known problems, kept in
+F<t/porting/known_pod_issues.dat>.  The most prevalent errors are lines
+too wide to fit in a standard terminal window, but there are more
+serious problems as well; and there are items listed there that are not
+in fact errors.  The task would be to go through and clean up the
+documentation.  This would be a good way to learn more about Perl.
+
+=head1 Tasks that only need Perl knowledge
+
+=head2 Classify bug tickets by type
+
+Known bugs in Perl are tracked by L<https://rt.perl.org/rt3> (which also
+includes Perl 6).  A summary can be found at
+L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+It shows bugs classified by "type".  However, the type of many of the
+bugs is "unknown".  This greatly lowers the chances of them getting
+fixed, as the number of open bugs is overwhelming -- too many to wade
+through for someone to try to find the bugs in the parts of
+Perl that s/he knows well enough to try to fix.  This task involves
+going through these bugs and classifying them into one or more types.
+
+=head2 Ongoing: investigate new bug reports
+
+When a bug report is filed, it would be very helpful to have someone do
+a quick investigation to see if it is a real problem, and to reply to
+the poster about it, asking for example code that reproduces the
+problem.  Such code should be added to the test suite as TODO tests, and
+the ticket should be classified by type.  To get started on this task,
+look at the tickets that are marked as "New Issues" in
+L<https://rt.perl.org/rt3/NoAuth/perl5/Overview.html>.
+
+=head2 Migrate t/ from custom TAP generation
+
+Many tests below F<t/> still generate TAP by "hand", rather than using library
+functions. As explained in L<perlhack/TESTING>, tests in F<t/> are
+written in a particular way to test that more complex constructions actually
+work before using them routinely. Hence they don't use C<Test::More>, but
+instead there is an intentionally simpler library, F<t/test.pl>. However,
+quite a few tests in F<t/> have not been refactored to use it. Refactoring
+any of these tests, one at a time, is a useful thing TODO.
+
+The subdirectories F<base>, F<cmd> and F<comp>, that contain the most
+basic tests, should be excluded from this task.
+
+=head2 Automate perldelta generation
+
+The perldelta file accompanying each release summaries the major changes.
+It's mostly manually generated currently, but some of that could be
+automated with a bit of perl, specifically the generation of
+
+=over
+
+=item Modules and Pragmata
+
+=item New Documentation
+
+=item New Tests
+
+=back
+
+See F<Porting/how_to_write_a_perldelta.pod> for details.
+
+=head2 Make Schwern poorer
+
+We should have tests for everything. When all the core's modules are tested,
+Schwern has promised to donate to $500 to TPF. We may need volunteers to
+hold him upside down and shake vigorously in order to actually extract the
+cash.
+
+=head2 Write descriptions for all tests
+
+Many individual tests in the test suite lack descriptions (or names, or labels
+-- call them what you will).  Many files completely lack descriptions, meaning
+that the only output you get is the test numbers.  If all tests had
+descriptions, understanding what the tests are testing and why they sometimes
+fail would both get a whole lot easier.
+
+=head2 Improve the coverage of the core tests
+
+Use Devel::Cover to ascertain the core modules' test coverage, then add
+tests that are currently missing.
+
+=head2 test B
+
+A full test suite for the B module would be nice.
+
+=head2 A decent benchmark
+
+C<perlbench> seems impervious to any recent changes made to the perl core. It
+would be useful to have a reasonable general benchmarking suite that roughly
+represented what current perl programs do, and measurably reported whether
+tweaks to the core improve, degrade or don't really affect performance, to
+guide people attempting to optimise the guts of perl. Gisle would welcome
+new tests for perlbench. Steffen Schwingon would welcome help with
+L<Benchmark::Perl::Formance>
+
+=head2 fix tainting bugs
+
+Fix the bugs revealed by running the test suite with the C<-t> switch (via
+C<make test.taintwarn>).
+
+=head2 Dual life everything
+
+As part of the "dists" plan, anything that doesn't belong in the smallest perl
+distribution needs to be dual lifed. Anything else can be too. Figure out what
+changes would be needed to package that module and its tests up for CPAN, and
+do so. Test it with older perl releases, and fix the problems you find.
+
+To make a minimal perl distribution, it's useful to look at
+F<t/lib/commonsense.t>.
+
+=head2 POSIX memory footprint
+
+Ilya observed that use POSIX; eats memory like there's no tomorrow, and at
+various times worked to cut it down. There is probably still fat to cut out -
+for example POSIX passes Exporter some very memory hungry data structures.
+
+=head2 makedef.pl and conditional compilation
+
+The script F<makedef.pl> that generates the list of exported symbols on
+platforms which need this. Functions are declared in F<embed.fnc>, variables
+in F<intrpvar.h>. Quite a few of the functions and variables are conditionally
+declared there, using C<#ifdef>. However, F<makedef.pl> doesn't understand the
+C macros, so the rules about which symbols are present when is duplicated in
+the Perl code. Writing things twice is bad, m'kay. It would be good to teach
+F<.pl> to understand the conditional compilation, and hence remove the
+duplication, and the mistakes it has caused.
+
+=head2 use strict; and AutoLoad
+
+Currently if you write
+
+    package Whack;
+    use AutoLoader 'AUTOLOAD';
+    use strict;
+    1;
+    __END__
+    sub bloop {
+        print join (' ', No, strict, here), "!\n";
+    }
+
+then C<use strict;> isn't in force within the autoloaded subroutines. It would
+be more consistent (and less surprising) to arrange for all lexical pragmas
+in force at the __END__ block to be in force within each autoloaded subroutine.
+
+There's a similar problem with SelfLoader.
+
+=head2 profile installman
+
+The F<installman> script is slow. All it is doing text processing, which we're
+told is something Perl is good at. So it would be nice to know what it is doing
+that is taking so much CPU, and where possible address it.
+
+=head2 enable lexical enabling/disabling of individual warnings
+
+Currently, warnings can only be enabled or disabled by category. There
+are times when it would be useful to quash a single warning, not a
+whole category.
+
+=head2 document diagnostics
+
+Many diagnostic messages are not currently documented.  The list is at the end
+of t/porting/diag.t.
+
+=head2 Write TODO tests for open bugs
+
+Sometimes bugs get fixed as a side effect of something else, and
+the bug remains open because no one realizes that it has been fixed.
+Ideally, every open bug should have a TODO test in the core test suite.
+
+=head1 Tasks that need a little sysadmin-type knowledge
+
+Or if you prefer, tasks that you would learn from, and broaden your skills
+base...
+
+=head2 make HTML install work
+
+There is an C<install.html> target in the Makefile. It's marked as
+"experimental". It would be good to get this tested, make it work reliably, and
+remove the "experimental" tag. This would include
+
+=over 4
+
+=item 1
+
+Checking that cross linking between various parts of the documentation works.
+In particular that links work between the modules (files with POD in F<lib/>)
+and the core documentation (files in F<pod/>)
+
+=item 2
+
+Improving the code that split C<perlfunc> into chunks, preferably with
+general case code added to L<Pod::Functions> that could be used elsewhere.
+
+Challenges here are correctly identifying the groups of functions that go
+together, and making the right named external cross-links point to the right
+page. Currently this works reasonably well in the general case, and correctly
+parses two or more C<=items> giving the different parameter lists for the
+same function, such used by C<substr>. However it fails completely where
+I<different> functions are listed as a sequence of C<=items> but share the
+same description. All the functions from C<getpwnam> to C<endprotoent> have
+individual stub pages, with only the page for C<endservent> holding the
+description common to all. Likewise C<q>, C<qq> and C<qw> have stub pages,
+instead of sharing the body of C<qx>.
+
+Note also the current code isn't ideal with the two forms of C<select>, mushing
+them both into one F<select.html> with the two descriptions run together.
+Fixing this may well be a special case.
+
+=back
+
+=head2 compressed man pages
+
+Be able to install them. This would probably need a configure test to see how
+the system does compressed man pages (same directory/different directory?
+same filename/different filename), as well as tweaking the F<installman> script
+to compress as necessary.
+
+=head2 Add a code coverage target to the Makefile
+
+Make it easy for anyone to run Devel::Cover on the core's tests. The steps
+to do this manually are roughly
+
+=over 4
+
+=item *
+
+do a normal C<Configure>, but include Devel::Cover as a module to install
+(see L<INSTALL> for how to do this)
+
+=item *
+
+    make perl
+
+=item *
+
+    cd t; HARNESS_PERL_SWITCHES=-MDevel::Cover ./perl -I../lib harness
+
+=item *
+
+Process the resulting Devel::Cover database
+
+=back
+
+This just give you the coverage of the F<.pm>s. To also get the C level
+coverage you need to
+
+=over 4
+
+=item *
+
+Additionally tell C<Configure> to use the appropriate C compiler flags for
+C<gcov>
+
+=item *
+
+    make perl.gcov
+
+(instead of C<make perl>)
+
+=item *
+
+After running the tests run C<gcov> to generate all the F<.gcov> files.
+(Including down in the subdirectories of F<ext/>
+
+=item *
+
+(From the top level perl directory) run C<gcov2perl> on all the C<.gcov> files
+to get their stats into the cover_db directory.
+
+=item *
+
+Then process the Devel::Cover database
+
+=back
+
+It would be good to add a single switch to C<Configure> to specify that you
+wanted to perform perl level coverage, and another to specify C level
+coverage, and have C<Configure> and the F<Makefile> do all the right things
+automatically.
+
+=head2 Make Config.pm cope with differences between built and installed perl
+
+Quite often vendors ship a perl binary compiled with their (pay-for)
+compilers.  People install a free compiler, such as gcc. To work out how to
+build extensions, Perl interrogates C<%Config>, so in this situation
+C<%Config> describes compilers that aren't there, and extension building
+fails. This forces people into choosing between re-compiling perl themselves
+using the compiler they have, or only using modules that the vendor ships.
+
+It would be good to find a way teach C<Config.pm> about the installation setup,
+possibly involving probing at install time or later, so that the C<%Config> in
+a binary distribution better describes the installed machine, when the
+installed machine differs from the build machine in some significant way.
+
+=head2 linker specification files
+
+Some platforms mandate that you provide a list of a shared library's external
+symbols to the linker, so the core already has the infrastructure in place to
+do this for generating shared perl libraries. Florian Ragwitz has been working
+to offer this for the GNU toolchain, to  allow Unix users to test that the
+export list is correct, and to build a perl that does not pollute the global
+namespace with private symbols, and will fail in the same way as msvc or mingw 
+builds or when using PERL_DL_NONLAZY=1. See the branch smoke-me/rafl/ld_export
+
+=head2 Cross-compile support
+
+We get requests for "how to cross compile Perl". The vast majority of these
+seem to be for a couple of scenarios:
+
+=over 4
+
+=item *
+
+Platforms that could build natively using F<./Configure> (I<e.g.> Linux or
+NetBSD on MIPS or ARM) but people want to use a beefier machine (and on the
+same OS) to build more easily.
+
+=item *
+
+Platforms that can't build natively, but no (significant) porting changes
+are needed to our current source code. Prime example of this is Android.
+
+=back
+
+There are several scripts and tools for cross-compiling perl for other
+platforms. However, these are somewhat inconsistent and scattered across the
+codebase, none are documented well, none are clearly flexible enough to
+be confident that they can support any TARGET/HOST plaform pair other than
+that which they were developed on, and it's not clear how bitrotted they are.
+
+For example, C<Configure> understands C<-Dusecrosscompile> option. This option
+arranges for building C<miniperl> for TARGET machine, so this C<miniperl> is
+assumed then to be copied to TARGET machine and used as a replacement of
+full C<perl> executable. This code is almost 10 years old. Meanwhile, the
+F<Cross/> directory contains two different approaches for cross compiling to
+ARM Linux targets, relying on hand curated F<config.sh> files, but that code
+is getting on for 5 years old, and requires insider knowledge of perl's
+build system to draft a F<config.sh> for a new platform.
+
+Jess Robinson has sumbitted a grant to TPF to work on cleaning this up.
+
+=head2 Split "linker" from "compiler"
+
+Right now, Configure probes for two commands, and sets two variables:
+
+=over 4
+
+=item * C<cc> (in F<cc.U>)
+
+This variable holds the name of a command to execute a C compiler which
+can resolve multiple global references that happen to have the same
+name.  Usual values are F<cc> and F<gcc>.
+Fervent ANSI compilers may be called F<c89>.  AIX has F<xlc>.
+
+=item * C<ld> (in F<dlsrc.U>)
+
+This variable indicates the program to be used to link
+libraries for dynamic loading.  On some systems, it is F<ld>.
+On ELF systems, it should be C<$cc>.  Mostly, we'll try to respect
+the hint file setting.
+
+=back
+
+There is an implicit historical assumption from around Perl5.000alpha
+something, that C<$cc> is also the correct command for linking object files
+together to make an executable. This may be true on Unix, but it's not true
+on other platforms, and there are a maze of work arounds in other places (such
+as F<Makefile.SH>) to cope with this.
+
+Ideally, we should create a new variable to hold the name of the executable
+linker program, probe for it in F<Configure>, and centralise all the special
+case logic there or in hints files.
+
+A small bikeshed issue remains - what to call it, given that C<$ld> is already
+taken (arguably for the wrong thing now, but on SunOS 4.1 it is the command
+for creating dynamically-loadable modules) and C<$link> could be confused with
+the Unix command line executable of the same name, which does something
+completely different. Andy Dougherty makes the counter argument "In parrot, I
+tried to call the command used to link object files and  libraries into an
+executable F<link>, since that's what my vaguely-remembered DOS and VMS
+experience suggested. I don't think any real confusion has ensued, so it's
+probably a reasonable name for perl5 to use."
+
+"Alas, I've always worried that introducing it would make things worse, 
+since now the module building utilities would have to look for 
+C<$Config{link}> and institute a fall-back plan if it weren't found."
+Although I can see that as confusing, given that C<$Config{d_link}> is true
+when (hard) links are available.
+
+=head2 Configure Windows using PowerShell
+
+Currently, Windows uses hard-coded config files based to build the
+config.h for compiling Perl.  Makefiles are also hard-coded and need to be 
+hand edited prior to building Perl. While this makes it easy to create a perl.exe 
+that works across multiple Windows versions, being able to accurately
+configure a perl.exe for a specific Windows versions and VS C++ would be
+a nice enhancement.  With PowerShell available on Windows XP and up, this 
+may now be possible.  Step 1 might be to investigate whether this is possible
+and use this to clean up our current makefile situation.  Step 2 would be to 
+see if there would be a way to use our existing metaconfig units to configure a
+Windows Perl or whether we go in a separate direction and make it so.  Of 
+course, we all know what step 3 is.
+
+=head1 Tasks that need a little C knowledge
+
+These tasks would need a little C knowledge, but don't need any specific
+background or experience with XS, or how the Perl interpreter works
+
+=head2 Weed out needless PERL_UNUSED_ARG
+
+The C code uses the macro C<PERL_UNUSED_ARG> to stop compilers warning about
+unused arguments. Often the arguments can't be removed, as there is an
+external constraint that determines the prototype of the function, so this
+approach is valid. However, there are some cases where C<PERL_UNUSED_ARG>
+could be removed. Specifically
+
+=over 4
+
+=item *
+
+The prototypes of (nearly all) static functions can be changed
+
+=item *
+
+Unused arguments generated by short cut macros are wasteful - the short cut
+macro used can be changed.
+
+=back
+
+=head2 -Duse32bit*
+
+Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall.
+On these systems, it might be the default compilation mode, and there
+is currently no guarantee that passing no use64bitall option to the
+Configure process will build a 32bit perl. Implementing -Duse32bit*
+options would be nice for perl 5.18.1.
+
+=head2 Profile Perl - am I hot or not?
+
+The Perl source code is stable enough that it makes sense to profile it,
+identify and optimise the hotspots. It would be good to measure the
+performance of the Perl interpreter using free tools such as cachegrind,
+gprof, and dtrace, and work to reduce the bottlenecks they reveal.
+
+As part of this, the idea of F<pp_hot.c> is that it contains the I<hot> ops,
+the ops that are most commonly used. The idea is that by grouping them, their
+object code will be adjacent in the executable, so they have a greater chance
+of already being in the CPU cache (or swapped in) due to being near another op
+already in use.
+
+Except that it's not clear if these really are the most commonly used ops. So
+as part of exercising your skills with coverage and profiling tools you might
+want to determine what ops I<really> are the most commonly used. And in turn
+suggest evictions and promotions to achieve a better F<pp_hot.c>.
+
+One piece of Perl code that might make a good testbed is F<installman>.
+
+=head2 Improve win32/wince.c
+
+Currently, numerous functions look virtually, if not completely,
+identical in both F<win32/wince.c> and F<win32/win32.c> files, which can't
+be good.
+
+=head2 Use secure CRT functions when building with VC8 on Win32
+
+Visual C++ 2005 (VC++ 8.x) deprecated a number of CRT functions on the basis
+that they were "unsafe" and introduced differently named secure versions of
+them as replacements, e.g. instead of writing
+
+    FILE* f = fopen(__FILE__, "r");
+
+one should now write
+
+    FILE* f;
+    errno_t err = fopen_s(&f, __FILE__, "r"); 
+
+Currently, the warnings about these deprecations have been disabled by adding
+-D_CRT_SECURE_NO_DEPRECATE to the CFLAGS. It would be nice to remove that
+warning suppressant and actually make use of the new secure CRT functions.
+
+There is also a similar issue with POSIX CRT function names like fileno having
+been deprecated in favour of ISO C++ conformant names like _fileno. These
+warnings are also currently suppressed by adding -D_CRT_NONSTDC_NO_DEPRECATE. It
+might be nice to do as Microsoft suggest here too, although, unlike the secure
+functions issue, there is presumably little or no benefit in this case.
+
+=head2 Fix POSIX::access() and chdir() on Win32
+
+These functions currently take no account of DACLs and therefore do not behave
+correctly in situations where access is restricted by DACLs (as opposed to the
+read-only attribute).
+
+Furthermore, POSIX::access() behaves differently for directories having the
+read-only attribute set depending on what CRT library is being used. For
+example, the _access() function in the VC6 and VC7 CRTs (wrongly) claim that
+such directories are not writable, whereas in fact all directories are writable
+unless access is denied by DACLs. (In the case of directories, the read-only
+attribute actually only means that the directory cannot be deleted.) This CRT
+bug is fixed in the VC8 and VC9 CRTs (but, of course, the directory may still
+not actually be writable if access is indeed denied by DACLs).
+
+For the chdir() issue, see ActiveState bug #74552:
+L<http://bugs.activestate.com/show_bug.cgi?id=74552>
+
+Therefore, DACLs should be checked both for consistency across CRTs and for
+the correct answer.
+
+(Note that perl's -w operator should not be modified to check DACLs. It has
+been written so that it reflects the state of the read-only attribute, even
+for directories (whatever CRT is being used), for symmetry with chmod().)
+
+=head2 strcat(), strcpy(), strncat(), strncpy(), sprintf(), vsprintf()
+
+Maybe create a utility that checks after each libperl.a creation that
+none of the above (nor sprintf(), vsprintf(), or *SHUDDER* gets())
+ever creep back to libperl.a.
+
+  nm libperl.a | ./miniperl -alne '$o = $F[0] if /:$/; print "$o $F[1]" if $F[0] eq "U" && $F[1] =~ /^(?:strn?c(?:at|py)|v?sprintf|gets)$/'
+
+Note, of course, that this will only tell whether B<your> platform
+is using those naughty interfaces.
+
+=head2 -D_FORTIFY_SOURCE=2
+
+Recent glibcs support C<-D_FORTIFY_SOURCE=2> which gives
+protection against various kinds of buffer overflow problems.
+It should probably be used for compiling Perl whenever available,
+Configure and/or hints files should be adjusted to probe for the
+availability of these feature and enable it as appropriate.
+
+=head2 Arenas for GPs? For MAGIC?
+
+C<struct gp> and C<struct magic> are both currently allocated by C<malloc>.
+It might be a speed or memory saving to change to using arenas. Or it might
+not. It would need some suitable benchmarking first. In particular, C<GP>s
+can probably be changed with minimal compatibility impact (probably nothing
+outside of the core, or even outside of F<gv.c> allocates them), but they
+probably aren't allocated/deallocated often enough for a speed saving. Whereas
+C<MAGIC> is allocated/deallocated more often, but in turn, is also something
+more externally visible, so changing the rules here may bite external code.
+
+=head2 Shared arenas
+
+Several SV body structs are now the same size, notably PVMG and PVGV, PVAV and
+PVHV, and PVCV and PVFM. It should be possible to allocate and return same
+sized bodies from the same actual arena, rather than maintaining one arena for
+each. This could save 4-6K per thread, of memory no longer tied up in the
+not-yet-allocated part of an arena.
+
+
+=head1 Tasks that need a knowledge of XS
+
+These tasks would need C knowledge, and roughly the level of knowledge of
+the perl API that comes from writing modules that use XS to interface to
+C.
+
+=head2 Write an XS cookbook
+
+Create pod/perlxscookbook.pod with short, task-focused 'recipes' in XS that
+demonstrate common tasks and good practices.  (Some of these might be
+extracted from perlguts.) The target audience should be XS novices, who need
+more examples than perlguts but something less overwhelming than perlapi.
+Recipes should provide "one pretty good way to do it" instead of TIMTOWTDI.
+
+Rather than focusing on interfacing Perl to C libraries, such a cookbook
+should probably focus on how to optimize Perl routines by re-writing them
+in XS.  This will likely be more motivating to those who mostly work in
+Perl but are looking to take the next step into XS.
+
+Deconstructing and explaining some simpler XS modules could be one way to
+bootstrap a cookbook.  (List::Util? Class::XSAccessor? Tree::Ternary_XS?)
+Another option could be deconstructing the implementation of some simpler
+functions in op.c.
+
+=head2 Document how XSUBs can use C<cv_set_call_checker> to inline themselves as OPs
+
+For a simple XSUB, often the subroutine dispatch takes more time than the
+XSUB itself. v5.14.0 now allows XSUBs to register a function which will be
+called when the parser is finished building an C<entersub> op which calls
+them.
+
+Registration is done with C<Perl_cv_set_call_checker>, is documented at the
+API level in L<perlapi>, and L<perl5140delta/Custom per-subroutine check hooks>
+notes that it can be used to inline a subroutine, by replacing it with a
+custom op. However there is no further detail of the code needed to do this.
+It would be useful to add one or more annotated examples of how to create
+XSUBs that inline.
+
+This should provide a measurable speed up to simple XSUBs inside
+tight loops. Initially one would have to write the OP alternative
+implementation by hand, but it's likely that this should be reasonably
+straightforward for the type of XSUB that would benefit the most. Longer
+term, once the run-time implementation is proven, it should be possible to
+progressively update ExtUtils::ParseXS to generate OP implementations for
+some XSUBs.
+
+=head2 Remove the use of SVs as temporaries in dump.c
+
+F<dump.c> contains debugging routines to dump out the contains of perl data
+structures, such as C<SV>s, C<AV>s and C<HV>s. Currently, the dumping code
+B<uses> C<SV>s for its temporary buffers, which was a logical initial
+implementation choice, as they provide ready made memory handling.
+
+However, they also lead to a lot of confusion when it happens that what you're
+trying to debug is seen by the code in F<dump.c>, correctly or incorrectly, as
+a temporary scalar it can use for a temporary buffer. It's also not possible
+to dump scalars before the interpreter is properly set up, such as during
+ithreads cloning. It would be good to progressively replace the use of scalars
+as string accumulation buffers with something much simpler, directly allocated
+by C<malloc>. The F<dump.c> code is (or should be) only producing 7 bit
+US-ASCII, so output character sets are not an issue.
+
+Producing and proving an internal simple buffer allocation would make it easier
+to re-write the internals of the PerlIO subsystem to avoid using C<SV>s for
+B<its> buffers, use of which can cause problems similar to those of F<dump.c>,
+at similar times.
+
+=head2 safely supporting POSIX SA_SIGINFO
+
+Some years ago Jarkko supplied patches to provide support for the POSIX
+SA_SIGINFO feature in Perl, passing the extra data to the Perl signal handler.
+
+Unfortunately, it only works with "unsafe" signals, because under safe
+signals, by the time Perl gets to run the signal handler, the extra
+information has been lost. Moreover, it's not easy to store it somewhere,
+as you can't call mutexs, or do anything else fancy, from inside a signal
+handler.
+
+So it strikes me that we could provide safe SA_SIGINFO support
+
+=over 4
+
+=item 1
+
+Provide global variables for two file descriptors
+
+=item 2
+
+When the first request is made via C<sigaction> for C<SA_SIGINFO>, create a
+pipe, store the reader in one, the writer in the other
+
+=item 3
+
+In the "safe" signal handler (C<Perl_csighandler()>/C<S_raise_signal()>), if
+the C<siginfo_t> pointer non-C<NULL>, and the writer file handle is open,
+
+=over 8
+
+=item 1
+
+serialise signal number, C<struct siginfo_t> (or at least the parts we care
+about) into a small auto char buff
+
+=item 2
+
+C<write()> that (non-blocking) to the writer fd
+
+=over 12
+
+=item 1
+
+if it writes 100%, flag the signal in a counter of "signals on the pipe" akin
+to the current per-signal-number counts
+
+=item 2
+
+if it writes 0%, assume the pipe is full. Flag the data as lost?
+
+=item 3
+
+if it writes partially, croak a panic, as your OS is broken.
+
+=back
+
+=back
+
+=item 4
+
+in the regular C<PERL_ASYNC_CHECK()> processing, if there are "signals on
+the pipe", read the data out, deserialise, build the Perl structures on
+the stack (code in C<Perl_sighandler()>, the "unsafe" handler), and call as
+usual.
+
+=back
+
+I think that this gets us decent C<SA_SIGINFO> support, without the current risk
+of running Perl code inside the signal handler context. (With all the dangers
+of things like C<malloc> corruption that that currently offers us)
+
+For more information see the thread starting with this message:
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-03/msg00305.html>
+
+=head2 autovivification
+
+Make all autovivification consistent w.r.t LVALUE/RVALUE and strict/no strict;
+
+This task is incremental - even a little bit of work on it will help.
+
+=head2 Unicode in Filenames
+
+chdir, chmod, chown, chroot, exec, glob, link, lstat, mkdir, open,
+opendir, qx, readdir, readlink, rename, rmdir, stat, symlink, sysopen,
+system, truncate, unlink, utime, -X.  All these could potentially accept
+Unicode filenames either as input or output (and in the case of system
+and qx Unicode in general, as input or output to/from the shell).
+Whether a filesystem - an operating system pair understands Unicode in
+filenames varies.
+
+Known combinations that have some level of understanding include
+Microsoft NTFS, Apple HFS+ (In Mac OS 9 and X) and Apple UFS (in Mac
+OS X), NFS v4 is rumored to be Unicode, and of course Plan 9.  How to
+create Unicode filenames, what forms of Unicode are accepted and used
+(UCS-2, UTF-16, UTF-8), what (if any) is the normalization form used,
+and so on, varies.  Finding the right level of interfacing to Perl
+requires some thought.  Remember that an OS does not implicate a
+filesystem.
+
+(The Windows -C command flag "wide API support" has been at least
+temporarily retired in 5.8.1, and the -C has been repurposed, see
+L<perlrun>.)
+
+Most probably the right way to do this would be this:
+L</"Virtualize operating system access">.
+
+=head2 Unicode in %ENV
+
+Currently the %ENV entries are always byte strings.
+See L</"Virtualize operating system access">.
+
+(See RT ticket #113536 for information on Win32's handling of %ENV,
+which was fixed to work with native ANSI codepage characters in the
+environment, but still doesn't work with other characters outside of
+that codepage present in the environment.)
+
+=head2 Unicode and glob()
+
+Currently glob patterns and filenames returned from File::Glob::glob()
+are always byte strings.  See L</"Virtualize operating system access">.
+
+=head2 use less 'memory'
+
+Investigate trade offs to switch out perl's choices on memory usage.
+Particularly perl should be able to give memory back.
+
+This task is incremental - even a little bit of work on it will help.
+
+=head2 Re-implement C<:unique> in a way that is actually thread-safe
+
+The old implementation made bad assumptions on several levels. A good 90%
+solution might be just to make C<:unique> work to share the string buffer
+of SvPVs. That way large constant strings can be shared between ithreads,
+such as the configuration information in F<Config>.
+
+=head2 Make tainting consistent
+
+Tainting would be easier to use if it didn't take documented shortcuts and
+allow taint to "leak" everywhere within an expression.
+
+=head2 readpipe(LIST)
+
+system() accepts a LIST syntax (and a PROGRAM LIST syntax) to avoid
+running a shell. readpipe() (the function behind qx//) could be similarly
+extended.
+
+=head2 Audit the code for destruction ordering assumptions
+
+Change 25773 notes
+
+    /* Need to check SvMAGICAL, as during global destruction it may be that
+       AvARYLEN(av) has been freed before av, and hence the SvANY() pointer
+       is now part of the linked list of SV heads, rather than pointing to
+       the original body.  */
+    /* FIXME - audit the code for other bugs like this one.  */
+
+adding the C<SvMAGICAL> check to
+
+    if (AvARYLEN(av) && SvMAGICAL(AvARYLEN(av))) {
+        MAGIC *mg = mg_find (AvARYLEN(av), PERL_MAGIC_arylen);
+
+Go through the core and look for similar assumptions that SVs have particular
+types, as all bets are off during global destruction.
+
+=head2 Extend PerlIO and PerlIO::Scalar
+
+PerlIO::Scalar doesn't know how to truncate().  Implementing this
+would require extending the PerlIO vtable.
+
+Similarly the PerlIO vtable doesn't know about formats (write()), or
+about stat(), or chmod()/chown(), utime(), or flock().
+
+(For PerlIO::Scalar it's hard to see what e.g. mode bits or ownership
+would mean.)
+
+PerlIO doesn't do directories or symlinks, either: mkdir(), rmdir(),
+opendir(), closedir(), seekdir(), rewinddir(), glob(); symlink(),
+readlink().
+
+See also L</"Virtualize operating system access">.
+
+=head2 Organize error messages
+
+Perl's diagnostics (error messages, see L<perldiag>) could use
+reorganizing and formalizing so that each error message has its
+stable-for-all-eternity unique id, categorized by severity, type, and
+subsystem.  (The error messages would be listed in a datafile outside
+of the Perl source code, and the source code would only refer to the
+messages by the id.)  This clean-up and regularizing should apply
+for all croak() messages.
+
+This would enable all sorts of things: easier translation/localization
+of the messages (though please do keep in mind the caveats of
+L<Locale::Maketext> about too straightforward approaches to
+translation), filtering by severity, and instead of grepping for a
+particular error message one could look for a stable error id.  (Of
+course, changing the error messages by default would break all the
+existing software depending on some particular error message...)
+
+This kind of functionality is known as I<message catalogs>.  Look for
+inspiration for example in the catgets() system, possibly even use it
+if available-- but B<only> if available, all platforms will B<not>
+have catgets().
+
+For the really pure at heart, consider extending this item to cover
+also the warning messages (see L<perllexwarn>, C<warnings.pl>).
+
+=head1 Tasks that need a knowledge of the interpreter
+
+These tasks would need C knowledge, and knowledge of how the interpreter works,
+or a willingness to learn.
+
+=head2 forbid labels with keyword names
+
+Currently C<goto keyword> "computes" the label value:
+
+    $ perl -e 'goto print'
+    Can't find label 1 at -e line 1.
+
+It is controversial if the right way to avoid the confusion is to forbid
+labels with keyword names, or if it would be better to always treat
+bareword expressions after a "goto" as a label and never as a keyword.
+
+=head2 truncate() prototype
+
+The prototype of truncate() is currently C<$$>. It should probably
+be C<*$> instead. (This is changed in F<opcode.pl>)
+
+=head2 error reporting of [$a ; $b]
+
+Using C<;> inside brackets is a syntax error, and we don't propose to change
+that by giving it any meaning. However, it's not reported very helpfully:
+
+    $ perl -e '$a = [$b; $c];'
+    syntax error at -e line 1, near "$b;"
+    syntax error at -e line 1, near "$c]"
+    Execution of -e aborted due to compilation errors.
+
+It should be possible to hook into the tokeniser or the lexer, so that when a
+C<;> is parsed where it is not legal as a statement terminator (ie inside
+C<{}> used as a hashref, C<[]> or C<()>) it issues an error something like
+I<';' isn't legal inside an expression - if you need multiple statements use a
+do {...} block>. See the thread starting at
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2008-09/msg00573.html>
+
+=head2 strict as warnings
+
+See L<http://markmail.org/message/vbrupaslr3bybmvk>, where Josua ben Jore
+writes:  I've been of the opinion that everything strict.pm does ought to be
+able to considered just warnings that have been promoted to 'FATAL'.
+
+=head2 lexicals used only once
+
+This warns:
+
+    $ perl -we '$pie = 42'
+    Name "main::pie" used only once: possible typo at -e line 1.
+
+This does not:
+
+    $ perl -we 'my $pie = 42'
+
+Logically all lexicals used only once should warn, if the user asks for
+warnings.  An unworked RT ticket (#5087) has been open for almost seven
+years for this discrepancy.
+
+=head2 UTF-8 revamp
+
+The handling of Unicode is unclean in many places.  In the regex engine
+there are especially many problems.  The swash data structure could be
+replaced my something better.  Inversion lists and maps are likely
+candidates.  The whole Unicode database could be placed in-core for a
+huge speed-up.  Only minimal work was done on the optimizer when utf8
+was added, with the result that the synthetic start class often will
+fail to narrow down the possible choices when given non-Latin1 input.
+Karl Williamson has been working on this - talk to him.
+
+=head2 state variable initialization in list context
+
+Currently this is illegal:
+
+    state ($a, $b) = foo(); 
+
+In Perl 6, C<state ($a) = foo();> and C<(state $a) = foo();> have different
+semantics, which is tricky to implement in Perl 5 as currently they produce
+the same opcode trees. The Perl 6 design is firm, so it would be good to
+implement the necessary code in Perl 5. There are comments in
+C<Perl_newASSIGNOP()> that show the code paths taken by various assignment
+constructions involving state variables.
+
+=head2 A does() built-in
+
+Like ref(), only useful. It would call the C<DOES> method on objects; it
+would also tell whether something can be dereferenced as an
+array/hash/etc., or used as a regexp, etc.
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2007-03/msg00481.html>
+
+=head2 Tied filehandles and write() don't mix
+
+There is no method on tied filehandles to allow them to be called back by
+formats.
+
+=head2 Propagate compilation hints to the debugger
+
+Currently a debugger started with -dE on the command-line doesn't see the
+features enabled by -E. More generally hints (C<$^H> and C<%^H>) aren't
+propagated to the debugger. Probably it would be a good thing to propagate
+hints from the innermost non-C<DB::> scope: this would make code eval'ed
+in the debugger see the features (and strictures, etc.) currently in
+scope.
+
+=head2 Attach/detach debugger from running program
+
+The old perltodo notes "With C<gdb>, you can attach the debugger to a running
+program if you pass the process ID. It would be good to do this with the Perl
+debugger on a running Perl program, although I'm not sure how it would be
+done." ssh and screen do this with named pipes in /tmp. Maybe we can too.
+
+=head2 LVALUE functions for lists
+
+The old perltodo notes that lvalue functions don't work for list or hash
+slices. This would be good to fix.
+
+=head2 regexp optimiser optional
+
+The regexp optimiser is not optional. It should configurable to be, to allow
+its performance to be measured, and its bugs to be easily demonstrated.
+
+=head2 C</w> regex modifier
+
+That flag would enable to match whole words, and also to interpolate
+arrays as alternations. With it, C</P/w> would be roughly equivalent to:
+
+    do { local $"='|'; /\b(?:P)\b/ }
+
+See
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2007-01/msg00400.html>
+for the discussion.
+
+=head2 optional optimizer
+
+Make the peephole optimizer optional. Currently it performs two tasks as
+it walks the optree - genuine peephole optimisations, and necessary fixups of
+ops. It would be good to find an efficient way to switch out the
+optimisations whilst keeping the fixups.
+
+=head2 You WANT *how* many
+
+Currently contexts are void, scalar and list. split has a special mechanism in
+place to pass in the number of return values wanted. It would be useful to
+have a general mechanism for this, backwards compatible and little speed hit.
+This would allow proposals such as short circuiting sort to be implemented
+as a module on CPAN.
+
+=head2 lexical aliases
+
+Allow lexical aliases (maybe via the syntax C<my \$alias = \$foo>).
+
+=head2 Self-ties
+
+Self-ties are currently illegal because they caused too many segfaults. Maybe
+the causes of these could be tracked down and self-ties on all types
+reinstated.
+
+=head2 Optimize away @_
+
+The old perltodo notes "Look at the "reification" code in C<av.c>".
+
+=head2 Virtualize operating system access
+
+Implement a set of "vtables" that virtualizes operating system access
+(open(), mkdir(), unlink(), readdir(), getenv(), etc.)  At the very
+least these interfaces should take SVs as "name" arguments instead of
+bare char pointers; probably the most flexible and extensible way
+would be for the Perl-facing interfaces to accept HVs.  The system
+needs to be per-operating-system and per-file-system
+hookable/filterable, preferably both from XS and Perl level
+(L<perlport/"Files and Filesystems"> is good reading at this point,
+in fact, all of L<perlport> is.)
+
+This has actually already been implemented (but only for Win32),
+take a look at F<iperlsys.h> and F<win32/perlhost.h>.  While all Win32
+variants go through a set of "vtables" for operating system access,
+non-Win32 systems currently go straight for the POSIX/Unix-style
+system/library call.  Similar system as for Win32 should be
+implemented for all platforms.  The existing Win32 implementation
+probably does not need to survive alongside this proposed new
+implementation, the approaches could be merged.
+
+What would this give us?  One often-asked-for feature this would
+enable is using Unicode for filenames, and other "names" like %ENV,
+usernames, hostnames, and so forth.
+(See L<perlunicode/"When Unicode Does Not Happen">.)
+
+But this kind of virtualization would also allow for things like
+virtual filesystems, virtual networks, and "sandboxes" (though as long
+as dynamic loading of random object code is allowed, not very safe
+sandboxes since external code of course know not of Perl's vtables).
+An example of a smaller "sandbox" is that this feature can be used to
+implement per-thread working directories: Win32 already does this.
+
+See also L</"Extend PerlIO and PerlIO::Scalar">.
+
+=head2 repack the optree
+
+Repacking the optree after execution order is determined could allow
+removal of NULL ops, and optimal ordering of OPs with respect to cache-line
+filling.  I think that
+the best way to do this is to make it an optional step just before the
+completed optree is attached to anything else, and to use the slab allocator
+unchanged--but allocate a single slab the right size, avoiding partial
+slabs--, so that freeing ops is identical whether or not this step runs.
+Note that the slab allocator allocates ops downwards in memory, so one would
+have to actually "allocate" the ops in reverse-execution order to get them
+contiguous in memory in execution order.
+
+See
+L<http://www.nntp.perl.org/group/perl.perl5.porters/2007/12/msg131975.html>
+
+Note that running this copy, and then freeing all the old location ops would
+cause their slabs to be freed, which would eliminate possible memory wastage if
+the previous suggestion is implemented, and we swap slabs more frequently.
+
+=head2 eliminate incorrect line numbers in warnings
+
+This code
+
+    use warnings;
+    my $undef;
+
+    if ($undef == 3) {
+    } elsif ($undef == 0) {
+    }
+
+used to produce this output:
+
+    Use of uninitialized value in numeric eq (==) at wrong.pl line 4.
+    Use of uninitialized value in numeric eq (==) at wrong.pl line 4.
+
+where the line of the second warning was misreported - it should be line 5.
+Rafael fixed this - the problem arose because there was no nextstate OP
+between the execution of the C<if> and the C<elsif>, hence C<PL_curcop> still
+reports that the currently executing line is line 4. The solution was to inject
+a nextstate OPs for each C<elsif>, although it turned out that the nextstate
+OP needed to be a nulled OP, rather than a live nextstate OP, else other line
+numbers became misreported. (Jenga!)
+
+The problem is more general than C<elsif> (although the C<elsif> case is the
+most common and the most confusing). Ideally this code
+
+    use warnings;
+    my $undef;
+
+    my $a = $undef + 1;
+    my $b
+      = $undef
+      + 1;
+
+would produce this output
+
+    Use of uninitialized value $undef in addition (+) at wrong.pl line 4.
+    Use of uninitialized value $undef in addition (+) at wrong.pl line 7.
+
+(rather than lines 4 and 5), but this would seem to require every OP to carry
+(at least) line number information.
+
+What might work is to have an optional line number in memory just before the
+BASEOP structure, with a flag bit in the op to say whether it's present.
+Initially during compile every OP would carry its line number. Then add a late
+pass to the optimiser (potentially combined with L</repack the optree>) which
+looks at the two ops on every edge of the graph of the execution path. If
+the line number changes, flags the destination OP with this information.
+Once all paths are traced, replace every op with the flag with a
+nextstate-light op (that just updates C<PL_curcop>), which in turn then passes
+control on to the true op. All ops would then be replaced by variants that
+do not store the line number. (Which, logically, why it would work best in
+conjunction with L</repack the optree>, as that is already copying/reallocating
+all the OPs)
+
+(Although I should note that we're not certain that doing this for the general
+case is worth it)
+
+=head2 optimize tail-calls
+
+Tail-calls present an opportunity for broadly applicable optimization;
+anywhere that C<< return foo(...) >> is called, the outer return can
+be replaced by a goto, and foo will return directly to the outer
+caller, saving (conservatively) 25% of perl's call&return cost, which
+is relatively higher than in C.  The scheme language is known to do
+this heavily.  B::Concise provides good insight into where this
+optimization is possible, ie anywhere entersub,leavesub op-sequence
+occurs.
+
+ perl -MO=Concise,-exec,a,b,-main -e 'sub a{ 1 }; sub b {a()}; b(2)'
+
+Bottom line on this is probably a new pp_tailcall function which
+combines the code in pp_entersub, pp_leavesub.  This should probably
+be done 1st in XS, and using B::Generate to patch the new OP into the
+optrees.
+
+=head2 Add C<0odddd>
+
+It has been proposed that octal constants be specifiable through the syntax
+C<0oddddd>, parallel to the existing construct to specify hex constants
+C<0xddddd>
+
+=head2 Revisit the regex super-linear cache code
+
+Perl executes regexes using the traditional backtracking algorithm, which
+makes it possible to implement a variety of powerful pattern-matching
+features (like embedded code blocks), at the cost of taking exponential time
+to run on some pathological patterns.  The exponential-time problem is
+mitigated by the I<super-linear cache>, which detects when we're processing
+such a pathological pattern, and does some additional bookkeeping to avoid
+much of the work.  However, that code has bit-rotted a little; some patterns
+don't make as much use of it as they should.  The proposal is to analyse
+where the current cache code has problems, and extend it to cover those cases.
+
+See also
+L<http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2013-01/msg00339.html>
+
+=head1 Big projects
+
+Tasks that will get your name mentioned in the description of the "Highlights
+of 5.18.1"
+
+=head2 make ithreads more robust
+
+Generally make ithreads more robust.
+
+This task is incremental - even a little bit of work on it will help, and
+will be greatly appreciated.
+
+One bit would be to determine how to clone directory handles on systems
+without a C<fchdir> function (in sv.c:Perl_dirp_dup).
+
+Fix Perl_sv_dup, et al so that threads can return objects.
+
+=head2 Add class set operations to regexp engine
+
+Apparently these are quite useful. Anyway, Jeffery Friedl wants them.
+
+demerphq has this on his todo list, but right at the bottom.  
+
+
+=head1 Tasks for microperl
+
+
+[ Each and every one of these may be obsolete, but they were listed
+  in the old Todo.micro file]
+
+=head2 do away with fork/exec/wait?
+
+(system, popen should be enough?)
+
+=head2 some of the uconfig.sh really needs to be probed (using cc) in buildtime:
+
+(uConfigure? :-) native datatype widths and endianness come to mind
+

Added: vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z
===================================================================
--- vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Archive-Extract/t/src/x.Z
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/x-compress
\ No newline at end of property
Added: vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear
===================================================================
--- vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Archive-Extract/t/src/x.ear
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/zip
\ No newline at end of property
Added: vendor/perl/dist/cpan/Archive-Extract/t/src/x.war
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Archive-Extract/t/src/x.war
===================================================================
--- vendor/perl/dist/cpan/Archive-Extract/t/src/x.war	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Archive-Extract/t/src/x.war	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Archive-Extract/t/src/x.war
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/zip
\ No newline at end of property
Added: vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear
===================================================================
--- vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Archive-Extract/t/src/y.ear
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/zip
\ No newline at end of property
Added: vendor/perl/dist/cpan/Archive-Extract/t/src/y.war
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Archive-Extract/t/src/y.war
===================================================================
--- vendor/perl/dist/cpan/Archive-Extract/t/src/y.war	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Archive-Extract/t/src/y.war	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Archive-Extract/t/src/y.war
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/zip
\ No newline at end of property
Added: vendor/perl/dist/cpan/B-Lint/lib/B/Lint/Debug.pm
===================================================================
--- vendor/perl/dist/cpan/B-Lint/lib/B/Lint/Debug.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/B-Lint/lib/B/Lint/Debug.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,73 @@
+package B::Lint::Debug;
+use if $] > 5.017, 'deprecate';
+
+our $VERSION = '1.17';
+
+=head1 NAME
+
+B::Lint::Debug - Adds debugging stringification to B::
+
+=head1 DESCRIPTION
+
+This module injects stringification to a B::OP*/B::SPECIAL. This
+should not be loaded unless you're debugging.
+
+=cut
+
+package # hide from PAUSE
+    B::SPECIAL;
+use overload '""' => sub {
+    my $self = shift @_;
+    "SPECIAL($$self)";
+};
+
+package # hide from PAUSE
+    B::OP;
+use overload '""' => sub {
+    my $self  = shift @_;
+    my $class = ref $self;
+    $class =~ s/\AB:://xms;
+    my $name = $self->name;
+    "$class($name)";
+};
+
+package # hide from PAUSE
+    B::SVOP;
+use overload '""' => sub {
+    my $self  = shift @_;
+    my $class = ref $self;
+    $class =~ s/\AB:://xms;
+    my $name = $self->name;
+    "$class($name," . $self->sv . "," . $self->gv . ")";
+};
+
+package # hide from PAUSE
+    B::SPECIAL;
+sub DESTROY { }
+our $AUTOLOAD;
+
+sub AUTOLOAD {
+    my $cx = 0;
+    print "AUTOLOAD $AUTOLOAD\n";
+
+    package # hide from PAUSE
+        DB;
+    while ( my @stuff = caller $cx ) {
+
+        print "$cx: [@DB::args] [@stuff]\n";
+        if ( ref $DB::args[0] ) {
+            if ( $DB::args[0]->can('padix') ) {
+                print "    PADIX: " . $DB::args[0]->padix . "\n";
+            }
+            if ( $DB::args[0]->can('targ') ) {
+                print "    TARG: " . $DB::args[0]->targ . "\n";
+                for ( B::Lint::cv()->PADLIST->ARRAY ) {
+                    print +( $_->ARRAY )[ $DB::args[0]->targ ] . "\n";
+                }
+            }
+        }
+        ++$cx;
+    }
+}
+
+1;

Added: vendor/perl/dist/cpan/B-Lint/lib/B/Lint.pm
===================================================================
--- vendor/perl/dist/cpan/B-Lint/lib/B/Lint.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/B-Lint/lib/B/Lint.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,793 @@
+package B::Lint;
+use if $] > 5.017, 'deprecate';
+
+our $VERSION = '1.17';    ## no critic
+
+=head1 NAME
+
+B::Lint - Perl lint
+
+=head1 SYNOPSIS
+
+perl -MO=Lint[,OPTIONS] foo.pl
+
+=head1 DESCRIPTION
+
+The B::Lint module is equivalent to an extended version of the B<-w>
+option of B<perl>. It is named after the program F<lint> which carries
+out a similar process for C programs.
+
+=head1 OPTIONS AND LINT CHECKS
+
+Option words are separated by commas (not whitespace) and follow the
+usual conventions of compiler backend options. Following any options
+(indicated by a leading B<->) come lint check arguments. Each such
+argument (apart from the special B<all> and B<none> options) is a
+word representing one possible lint check (turning on that check) or
+is B<no-foo> (turning off that check). Before processing the check
+arguments, a standard list of checks is turned on. Later options
+override earlier ones. Available options are:
+
+=over 8
+
+=item B<magic-diamond>
+
+Produces a warning whenever the magic C<E<lt>E<gt>> readline is
+used. Internally it uses perl's two-argument open which itself treats
+filenames with special characters specially. This could allow
+interestingly named files to have unexpected effects when reading.
+
+  % touch 'rm *|'
+  % perl -pe 1
+
+The above creates a file named C<rm *|>. When perl opens it with
+C<E<lt>E<gt>> it actually executes the shell program C<rm *>. This
+makes C<E<lt>E<gt>> dangerous to use carelessly.
+
+=item B<context>
+
+Produces a warning whenever an array is used in an implicit scalar
+context. For example, both of the lines
+
+    $foo = length(@bar);
+    $foo = @bar;
+
+will elicit a warning. Using an explicit B<scalar()> silences the
+warning. For example,
+
+    $foo = scalar(@bar);
+
+=item B<implicit-read> and B<implicit-write>
+
+These options produce a warning whenever an operation implicitly
+reads or (respectively) writes to one of Perl's special variables.
+For example, B<implicit-read> will warn about these:
+
+    /foo/;
+
+and B<implicit-write> will warn about these:
+
+    s/foo/bar/;
+
+Both B<implicit-read> and B<implicit-write> warn about this:
+
+    for (@a) { ... }
+
+=item B<bare-subs>
+
+This option warns whenever a bareword is implicitly quoted, but is also
+the name of a subroutine in the current package. Typical mistakes that it will
+trap are:
+
+    use constant foo => 'bar';
+    @a = ( foo => 1 );
+    $b{foo} = 2;
+
+Neither of these will do what a naive user would expect.
+
+=item B<dollar-underscore>
+
+This option warns whenever C<$_> is used either explicitly anywhere or
+as the implicit argument of a B<print> statement.
+
+=item B<private-names>
+
+This option warns on each use of any variable, subroutine or
+method name that lives in a non-current package but begins with
+an underscore ("_"). Warnings aren't issued for the special case
+of the single character name "_" by itself (e.g. C<$_> and C<@_>).
+
+=item B<undefined-subs>
+
+This option warns whenever an undefined subroutine is invoked.
+This option will only catch explicitly invoked subroutines such
+as C<foo()> and not indirect invocations such as C<&$subref()>
+or C<$obj-E<gt>meth()>. Note that some programs or modules delay
+definition of subs until runtime by means of the AUTOLOAD
+mechanism.
+
+=item B<regexp-variables>
+
+This option warns whenever one of the regexp variables C<$`>, C<$&> or C<$'>
+is used. Any occurrence of any of these variables in your
+program can slow your whole program down. See L<perlre> for
+details.
+
+=item B<all>
+
+Turn all warnings on.
+
+=item B<none>
+
+Turn all warnings off.
+
+=back
+
+=head1 NON LINT-CHECK OPTIONS
+
+=over 8
+
+=item B<-u Package>
+
+Normally, Lint only checks the main code of the program together
+with all subs defined in package main. The B<-u> option lets you
+include other package names whose subs are then checked by Lint.
+
+=back
+
+=head1 EXTENDING LINT
+
+Lint can be extended by with plugins. Lint uses L<Module::Pluggable>
+to find available plugins. Plugins are expected but not required to
+inform Lint of which checks they are adding.
+
+The C<< B::Lint->register_plugin( MyPlugin => \@new_checks ) >> method
+adds the list of C<@new_checks> to the list of valid checks. If your
+module wasn't loaded by L<Module::Pluggable> then your class name is
+added to the list of plugins.
+
+You must create a C<match( \%checks )> method in your plugin class or one
+of its parents. It will be called on every op as a regular method call
+with a hash ref of checks as its parameter.
+
+The class methods C<< B::Lint->file >> and C<< B::Lint->line >> contain
+the current filename and line number.
+
+  package Sample;
+  use B::Lint;
+  B::Lint->register_plugin( Sample => [ 'good_taste' ] );
+  
+  sub match {
+      my ( $op, $checks_href ) = shift @_;
+      if ( $checks_href->{good_taste} ) {
+          ...
+      }
+  }
+
+=head1 TODO
+
+=over
+
+=item while(<FH>) stomps $_
+
+=item strict oo
+
+=item unchecked system calls
+
+=item more tests, validate against older perls
+
+=back
+
+=head1 BUGS
+
+This is only a very preliminary version.
+
+=head1 AUTHOR
+
+Malcolm Beattie, mbeattie at sable.ox.ac.uk.
+
+=head1 ACKNOWLEDGEMENTS
+
+Sebastien Aperghis-Tramoni - bug fixes
+
+=cut
+
+use strict;
+use B qw( walkoptree_slow
+    main_root main_cv walksymtable parents
+    OPpOUR_INTRO
+    OPf_WANT_VOID OPf_WANT_LIST OPf_WANT OPf_STACKED SVf_POK );
+use Carp 'carp';
+
+# The current M::P doesn't know about .pmc files.
+use Module::Pluggable ( require => 1 );
+
+use List::Util 'first';
+## no critic Prototypes
+sub any (&@) { my $test = shift @_; $test->() and return 1 for @_; return 0 }
+
+BEGIN {
+
+    # Import or create some constants from B. B doesn't provide
+    # everything I need so some things like OPpCONST_BARE are defined
+    # here.
+    for my $sym ( qw( begin_av check_av init_av end_av ),
+        [ 'OPpCONST_BARE' => 64 ] )
+    {
+        my $val;
+        ( $sym, $val ) = @$sym if ref $sym;
+
+        if ( any { $sym eq $_ } @B::EXPORT_OK, @B::EXPORT ) {
+            B->import($sym);
+        }
+        else {
+            require constant;
+            constant->import( $sym => $val );
+        }
+    }
+}
+
+my $file     = "unknown";    # shadows current filename
+my $line     = 0;            # shadows current line number
+my $curstash = "main";       # shadows current stash
+my $curcv;                   # shadows current B::CV for pad lookups
+
+sub file     {$file}
+sub line     {$line}
+sub curstash {$curstash}
+sub curcv    {$curcv}
+
+# Lint checks
+my %check;
+my %implies_ok_context;
+
+map( $implies_ok_context{$_}++,
+    qw(scalar av2arylen aelem aslice helem hslice
+        keys values hslice defined undef delete) );
+
+# Lint checks turned on by default
+my @default_checks
+    = qw(context magic_diamond undefined_subs regexp_variables);
+
+my %valid_check;
+
+# All valid checks
+for my $check (
+    qw(context implicit_read implicit_write dollar_underscore
+    private_names bare_subs undefined_subs regexp_variables
+    magic_diamond )
+    )
+{
+    $valid_check{$check} = __PACKAGE__;
+}
+
+# Debugging options
+my ($debug_op);
+
+my %done_cv;           # used to mark which subs have already been linted
+my @extra_packages;    # Lint checks mainline code and all subs which are
+                       # in main:: or in one of these packages.
+
+sub warning {
+    my $format = ( @_ < 2 ) ? "%s" : shift @_;
+    warn sprintf( "$format at %s line %d\n", @_, $file, $line );
+    return undef;      ## no critic undef
+}
+
+# This gimme can't cope with context that's only determined
+# at runtime via dowantarray().
+sub gimme {
+    my $op    = shift @_;
+    my $flags = $op->flags;
+    if ( $flags & OPf_WANT ) {
+        return ( ( $flags & OPf_WANT ) == OPf_WANT_LIST ? 1 : 0 );
+    }
+    return undef;      ## no critic undef
+}
+
+my @plugins = __PACKAGE__->plugins;
+
+sub inside_grepmap {
+
+    # A boolean function to be used while inside a B::walkoptree_slow
+    # call. If we are in the EXPR part of C<grep EXPR, ...> or C<grep
+    # { EXPR } ...>, this returns true.
+    return any { $_->name =~ m/\A(?:grep|map)/xms } @{ parents() };
+}
+
+sub inside_foreach_modifier {
+
+    # TODO: use any()
+
+    # A boolean function to be used while inside a B::walkoptree_slow
+    # call. If we are in the EXPR part of C<EXPR foreach ...> this
+    # returns true.
+    for my $ancestor ( @{ parents() } ) {
+        next unless $ancestor->name eq 'leaveloop';
+
+        my $first = $ancestor->first;
+        next unless $first->name eq 'enteriter';
+
+        next if $first->redoop->name =~ m/\A(?:next|db|set)state\z/xms;
+
+        return 1;
+    }
+    return 0;
+}
+
+for (
+    [qw[ B::PADOP::gv_harder gv padix]],
+    [qw[ B::SVOP::sv_harder  sv targ]],
+    [qw[ B::SVOP::gv_harder gv padix]]
+    )
+{
+
+    # I'm generating some functions here because they're mostly
+    # similar. It's all for compatibility with threaded
+    # perl. Perhaps... this code should inspect $Config{usethreads}
+    # and generate a *specific* function. I'm leaving it generic for
+    # the moment.
+    #
+    # In threaded perl SVs and GVs aren't used directly in the optrees
+    # like they are in non-threaded perls. The ops that would use a SV
+    # or GV keep an index into the subroutine's scratchpad. I'm
+    # currently ignoring $cv->DEPTH and that might be at my peril.
+
+    my ( $subname, $attr, $pad_attr ) = @$_;
+    my $target = do {    ## no critic strict
+        no strict 'refs';
+        \*$subname;
+    };
+    *$target = sub {
+        my ($op) = @_;
+
+        my $elt;
+        if ( not $op->isa('B::PADOP') ) {
+            $elt = $op->$attr;
+        }
+        return $elt if eval { $elt->isa('B::SV') };
+
+        my $ix         = $op->$pad_attr;
+        my @entire_pad = $curcv->PADLIST->ARRAY;
+        my @elts       = map +( $_->ARRAY )[$ix], @entire_pad;
+        ($elt) = first {
+            eval { $_->isa('B::SV') } ? $_ : ();
+        }
+        @elts[ 0, reverse 1 .. $#elts ];
+        return $elt;
+    };
+}
+
+sub B::OP::lint {
+    my ($op) = @_;
+
+    # This is a fallback ->lint for all the ops where I haven't
+    # defined something more specific. Nothing happens here.
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+sub B::COP::lint {
+    my ($op) = @_;
+
+    # nextstate ops sit between statements. Whenever I see one I
+    # update the current info on file, line, and stash. This code also
+    # updates it when it sees a dbstate or setstate op. I have no idea
+    # what those are but having seen them mentioned together in other
+    # parts of the perl I think they're kind of equivalent.
+    if ( $op->name =~ m/\A(?:next|db|set)state\z/ ) {
+        $file     = $op->file;
+        $line     = $op->line;
+        $curstash = $op->stash->NAME;
+    }
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+sub B::UNOP::lint {
+    my ($op) = @_;
+
+    my $opname = $op->name;
+
+CONTEXT: {
+
+        # Check arrays and hashes in scalar or void context where
+        # scalar() hasn't been used.
+
+        next
+            unless $check{context}
+            and $opname =~ m/\Arv2[ah]v\z/xms
+            and not gimme($op);
+
+        my ( $parent, $gparent ) = @{ parents() }[ 0, 1 ];
+        my $pname = $parent->name;
+
+        next if $implies_ok_context{$pname};
+
+        # Three special cases to deal with: "foreach (@foo)", "delete
+        # $a{$b}", and "exists $a{$b}" null out the parent so we have to
+        # check for a parent of pp_null and a grandparent of
+        # pp_enteriter, pp_delete, pp_exists
+
+        next
+            if $pname eq "null"
+            and $gparent->name =~ m/\A(?:delete|enteriter|exists)\z/xms;
+
+        # our( @bar ); would also trigger this error so I exclude
+        # that.
+        next
+            if $op->private & OPpOUR_INTRO
+            and ( $op->flags & OPf_WANT ) == OPf_WANT_VOID;
+
+        warning 'Implicit scalar context for %s in %s',
+            $opname eq "rv2av" ? "array" : "hash", $parent->desc;
+    }
+
+PRIVATE_NAMES: {
+
+        # Looks for calls to methods with names that begin with _ and
+        # that aren't visible within the current package. Maybe this
+        # should look at @ISA.
+        next
+            unless $check{private_names}
+            and $opname =~ m/\Amethod/xms;
+
+        my $methop = $op->first;
+        next unless $methop->name eq "const";
+
+        my $method = $methop->sv_harder->PV;
+        next
+            unless $method =~ m/\A_/xms
+            and not defined &{"$curstash\::$method"};
+
+        warning q[Illegal reference to private method name '%s'], $method;
+    }
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+sub B::PMOP::lint {
+    my ($op) = @_;
+
+IMPLICIT_READ: {
+
+        # Look for /.../ that doesn't use =~ to bind to something.
+        next
+            unless $check{implicit_read}
+            and $op->name eq "match"
+            and not( $op->flags & OPf_STACKED
+            or inside_grepmap() );
+        warning 'Implicit match on $_';
+    }
+
+IMPLICIT_WRITE: {
+
+        # Look for s/.../.../ that doesn't use =~ to bind to
+        # something.
+        next
+            unless $check{implicit_write}
+            and $op->name eq "subst"
+            and not $op->flags & OPf_STACKED;
+        warning 'Implicit substitution on $_';
+    }
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+sub B::LOOP::lint {
+    my ($op) = @_;
+
+IMPLICIT_FOO: {
+
+        # Look for C<for ( ... )>.
+        next
+            unless ( $check{implicit_read} or $check{implicit_write} )
+            and $op->name eq "enteriter";
+
+        my $last = $op->last;
+        next
+            unless $last->name         eq "gv"
+            and $last->gv_harder->NAME eq "_"
+            and $op->redoop->name =~ m/\A(?:next|db|set)state\z/xms;
+
+        warning 'Implicit use of $_ in foreach';
+    }
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+# In threaded vs non-threaded perls you'll find that threaded perls
+# use PADOP in place of SVOPs so they can do lookups into the
+# scratchpad to find things. I suppose this is so a optree can be
+# shared between threads and all symbol table muckery will just get
+# written to a scratchpad.
+*B::PADOP::lint = *B::PADOP::lint = \&B::SVOP::lint;
+
+sub B::SVOP::lint {
+    my ($op) = @_;
+
+MAGIC_DIAMOND: {
+        next
+            unless $check{magic_diamond}
+            and parents()->[0]->name eq 'readline'
+            and $op->gv_harder->NAME eq 'ARGV';
+
+        warning 'Use of <>';
+    }
+
+BARE_SUBS: {
+        next
+            unless $check{bare_subs}
+            and $op->name eq 'const'
+            and $op->private & OPpCONST_BARE;
+
+        my $sv = $op->sv_harder;
+        next unless $sv->FLAGS & SVf_POK;
+
+        my $sub     = $sv->PV;
+        my $subname = "$curstash\::$sub";
+
+        # I want to skip over things that were declared with the
+        # constant pragma. Well... sometimes. Hmm. I want to ignore
+        # C<<use constant FOO => ...>> but warn on C<<FOO => ...>>
+        # later. The former is typical declaration syntax and the
+        # latter would be an error.
+        #
+        # Skipping over both could be handled by looking if
+        # $constant::declared{$subname} is true.
+
+        # Check that it's a function.
+        next
+            unless exists &{"$curstash\::$sub"};
+
+        warning q[Bare sub name '%s' interpreted as string], $sub;
+    }
+
+PRIVATE_NAMES: {
+        next unless $check{private_names};
+
+        my $opname = $op->name;
+        if ( $opname =~ m/\Agv(?:sv)?\z/xms ) {
+
+            # Looks for uses of variables and stuff that are named
+            # private and we're not in the same package.
+            my $gv   = $op->gv_harder;
+            my $name = $gv->NAME;
+            next
+                unless $name =~ m/\A_./xms
+                and $gv->STASH->NAME ne $curstash;
+
+            warning q[Illegal reference to private name '%s'], $name;
+        }
+        elsif ( $opname eq "method_named" ) {
+            my $method = $op->sv_harder->PV;
+            next unless $method =~ m/\A_./xms;
+
+            warning q[Illegal reference to private method name '%s'], $method;
+        }
+    }
+
+DOLLAR_UNDERSCORE: {
+
+        # Warn on uses of $_ with a few exceptions. I'm not warning on
+        # $_ inside grep, map, or statement modifier foreach because
+        # they localize $_ and it'd be impossible to use these
+        # features without getting warnings.
+
+        next
+            unless $check{dollar_underscore}
+            and $op->name            eq "gvsv"
+            and $op->gv_harder->NAME eq "_"
+            and not( inside_grepmap
+            or inside_foreach_modifier );
+
+        warning 'Use of $_';
+    }
+
+REGEXP_VARIABLES: {
+
+        # Look for any uses of $`, $&, or $'.
+        next
+            unless $check{regexp_variables}
+            and $op->name eq "gvsv";
+
+        my $name = $op->gv_harder->NAME;
+        next unless $name =~ m/\A[\&\'\`]\z/xms;
+
+        warning 'Use of regexp variable $%s', $name;
+    }
+
+UNDEFINED_SUBS: {
+
+        # Look for calls to functions that either don't exist or don't
+        # have a definition.
+        next
+            unless $check{undefined_subs}
+            and $op->name       eq "gv"
+            and $op->next->name eq "entersub";
+
+        my $gv      = $op->gv_harder;
+        my $subname = $gv->STASH->NAME . "::" . $gv->NAME;
+
+        no strict 'refs';    ## no critic strict
+        if ( not exists &$subname ) {
+            $subname =~ s/\Amain:://;
+            warning q[Nonexistent subroutine '%s' called], $subname;
+        }
+        elsif ( not defined &$subname ) {
+            $subname =~ s/\A\&?main:://;
+            warning q[Undefined subroutine '%s' called], $subname;
+        }
+    }
+
+    # Call all registered plugins
+    my $m;
+    $m = $_->can('match'), $op->$m( \%check ) for @plugins;
+    return;
+}
+
+sub B::GV::lintcv {
+
+    # Example: B::svref_2object( \ *A::Glob )->lintcv
+
+    my $gv = shift @_;
+    my $cv = $gv->CV;
+    return unless $cv->can('lintcv');
+    $cv->lintcv;
+    return;
+}
+
+sub B::CV::lintcv {
+
+    # Example: B::svref_2object( \ &foo )->lintcv
+
+    # Write to the *global* $
+    $curcv = shift @_;
+
+    #warn sprintf("lintcv: %s::%s (done=%d)\n",
+    #		 $gv->STASH->NAME, $gv->NAME, $done_cv{$$curcv});#debug
+    return unless ref($curcv) and $$curcv and not $done_cv{$$curcv}++;
+    my $root = $curcv->ROOT;
+
+    #warn "    root = $root (0x$$root)\n";#debug
+    walkoptree_slow( $root, "lint" ) if $$root;
+    return;
+}
+
+sub do_lint {
+    my %search_pack;
+
+    # Copy to the global $curcv for use in pad lookups.
+    $curcv = main_cv;
+    walkoptree_slow( main_root, "lint" ) if ${ main_root() };
+
+    # Do all the miscellaneous non-sub blocks.
+    for my $av ( begin_av, init_av, check_av, end_av ) {
+        next unless eval { $av->isa('B::AV') };
+        for my $cv ( $av->ARRAY ) {
+            next unless ref($cv) and $cv->FILE eq $0;
+            $cv->lintcv;
+        }
+    }
+
+    walksymtable(
+        \%main::,
+        sub {
+            if ( $_[0]->FILE eq $0 ) { $_[0]->lintcv }
+        },
+        sub {1}
+    );
+    return;
+}
+
+sub compile {
+    my @options = @_;
+
+    # Turn on default lint checks
+    for my $opt (@default_checks) {
+        $check{$opt} = 1;
+    }
+
+OPTION:
+    while ( my $option = shift @options ) {
+        my ( $opt, $arg );
+        unless ( ( $opt, $arg ) = $option =~ m/\A-(.)(.*)/xms ) {
+            unshift @options, $option;
+            last OPTION;
+        }
+
+        if ( $opt eq "-" && $arg eq "-" ) {
+            shift @options;
+            last OPTION;
+        }
+        elsif ( $opt eq "D" ) {
+            $arg ||= shift @options;
+            foreach my $arg ( split //, $arg ) {
+                if ( $arg eq "o" ) {
+                    B->debug(1);
+                }
+                elsif ( $arg eq "O" ) {
+                    $debug_op = 1;
+                }
+            }
+        }
+        elsif ( $opt eq "u" ) {
+            $arg ||= shift @options;
+            push @extra_packages, $arg;
+        }
+    }
+
+    foreach my $opt ( @default_checks, @options ) {
+        $opt =~ tr/-/_/;
+        if ( $opt eq "all" ) {
+            %check = %valid_check;
+        }
+        elsif ( $opt eq "none" ) {
+            %check = ();
+        }
+        else {
+            if ( $opt =~ s/\Ano_//xms ) {
+                $check{$opt} = 0;
+            }
+            else {
+                $check{$opt} = 1;
+            }
+            carp "No such check: $opt"
+                unless defined $valid_check{$opt};
+        }
+    }
+
+    # Remaining arguments are things to check. So why aren't I
+    # capturing them or something? I don't know.
+
+    return \&do_lint;
+}
+
+sub register_plugin {
+    my ( undef, $plugin, $new_checks ) = @_;
+
+    # Allow the user to be lazy and not give us a name.
+    $plugin = caller unless defined $plugin;
+
+    # Register the plugin's named checks, if any.
+    for my $check ( eval {@$new_checks} ) {
+        if ( not defined $check ) {
+            carp 'Undefined value in checks.';
+            next;
+        }
+        if ( exists $valid_check{$check} ) {
+            carp
+                "$check is already registered as a $valid_check{$check} feature.";
+            next;
+        }
+
+        $valid_check{$check} = $plugin;
+    }
+
+    # Register a non-Module::Pluggable loaded module. @plugins already
+    # contains whatever M::P found on disk. The user might load a
+    # plugin manually from some arbitrary namespace and ask for it to
+    # be registered.
+    if ( not any { $_ eq $plugin } @plugins ) {
+        push @plugins, $plugin;
+    }
+
+    return;
+}
+
+1;

Added: vendor/perl/dist/cpan/B-Lint/t/lint.t
===================================================================
--- vendor/perl/dist/cpan/B-Lint/t/lint.t	                        (rev 0)
+++ vendor/perl/dist/cpan/B-Lint/t/lint.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,146 @@
+#!./perl -w
+
+BEGIN {
+    unshift @INC, 't';
+    push @INC, "../../t";
+    require Config;
+    if ( ( $Config::Config{'extensions'} !~ /\bB\b/ ) ) {
+        print "1..0 # Skip -- Perl configured without B module\n";
+        exit 0;
+    }
+    require 'test.pl';
+}
+
+use strict;
+use warnings;
+
+plan tests => 29;
+
+# Runs a separate perl interpreter with the appropriate lint options
+# turned on
+sub runlint ($$$;$) {
+    my ( $opts, $prog, $result, $testname ) = @_;
+    my $res = runperl(
+        switches => ["-MO=Lint,$opts"],
+        prog     => $prog,
+        stderr   => 1,
+    );
+    $res =~ s/-e syntax OK\n$//;
+    local $::Level = $::Level + 1;
+    is( $res, $result, $testname || $opts );
+}
+
+runlint 'magic-diamond', 'while(<>){}', <<'RESULT';
+Use of <> at -e line 1
+RESULT
+
+runlint 'magic-diamond', 'while(<ARGV>){}', <<'RESULT';
+Use of <> at -e line 1
+RESULT
+
+runlint 'magic-diamond', 'while(<FOO>){}', <<'RESULT';
+RESULT
+
+runlint 'context', '$foo = @bar', <<'RESULT';
+Implicit scalar context for array in scalar assignment at -e line 1
+RESULT
+
+runlint 'context', '$foo = length @bar', <<'RESULT';
+Implicit scalar context for array in length at -e line 1
+RESULT
+
+runlint 'context', 'our @bar', '';
+
+runlint 'context', 'exists $BAR{BAZ}', '';
+
+runlint 'implicit-read', '/foo/', <<'RESULT';
+Implicit match on $_ at -e line 1
+RESULT
+
+runlint 'implicit-read', 'grep /foo/, ()', '';
+
+runlint 'implicit-read', 'grep { /foo/ } ()', '';
+
+runlint 'implicit-write', 's/foo/bar/', <<'RESULT';
+Implicit substitution on $_ at -e line 1
+RESULT
+
+runlint 'implicit-read', 'for ( @ARGV ) { 1 }',
+    <<'RESULT', 'implicit-read in foreach';
+Implicit use of $_ in foreach at -e line 1
+RESULT
+
+runlint 'implicit-read', '1 for @ARGV', '', 'implicit-read in foreach';
+
+runlint 'dollar-underscore', '$_ = 1', <<'RESULT';
+Use of $_ at -e line 1
+RESULT
+
+runlint 'dollar-underscore', 'sub foo {}; foo( $_ ) for @A',      '';
+runlint 'dollar-underscore', 'sub foo {}; map { foo( $_ ) } @A',  '';
+runlint 'dollar-underscore', 'sub foo {}; grep { foo( $_ ) } @A', '';
+
+runlint 'dollar-underscore', 'print',
+    <<'RESULT', 'dollar-underscore in print';
+Use of $_ at -e line 1
+RESULT
+
+runlint 'private-names', 'sub A::_f{};A::_f()', <<'RESULT';
+Illegal reference to private name '_f' at -e line 1
+RESULT
+
+runlint 'private-names', '$A::_x', <<'RESULT';
+Illegal reference to private name '_x' at -e line 1
+RESULT
+
+runlint 'private-names', 'sub A::_f{};A->_f()', <<'RESULT',
+Illegal reference to private method name '_f' at -e line 1
+RESULT
+    'private-names (method)';
+
+runlint 'undefined-subs', 'foo()', <<'RESULT';
+Nonexistent subroutine 'foo' called at -e line 1
+RESULT
+
+runlint 'undefined-subs', 'foo();sub foo;', <<'RESULT';
+Undefined subroutine 'foo' called at -e line 1
+RESULT
+
+runlint 'regexp-variables', 'print $&', <<'RESULT';
+Use of regexp variable $& at -e line 1
+RESULT
+
+runlint 'regexp-variables', 's/./$&/', <<'RESULT';
+Use of regexp variable $& at -e line 1
+RESULT
+
+runlint 'bare-subs', 'sub bare(){1};$x=bare', '';
+
+runlint 'bare-subs', 'sub bare(){1}; $x=[bare=>0]; $x=$y{bare}', <<'RESULT';
+Bare sub name 'bare' interpreted as string at -e line 1
+Bare sub name 'bare' interpreted as string at -e line 1
+RESULT
+
+{
+
+    # Check for backwards-compatible plugin support. This was where
+    # preloaded mdoules would register themselves with B::Lint.
+    my $res = runperl(
+        switches => ["-MB::Lint"],
+        prog =>
+            'BEGIN{B::Lint->register_plugin(X=>[q[x]])};use O(qw[Lint x]);sub X::match{warn qq[X ok.\n]};dummy()',
+        stderr => 1,
+    );
+    like( $res, qr/X ok\./, 'Lint legacy plugin' );
+}
+
+{
+
+    # Check for Module::Plugin support
+    my $res = runperl(
+        switches => [ '-It/pluglib', '-MO=Lint,none' ],
+        prog     => 1,
+        stderr   => 1,
+    );
+    like( $res, qr/Module::Pluggable ok\./, 'Lint uses Module::Pluggable' );
+}

Added: vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm
===================================================================
--- vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/B-Lint/t/pluglib/B/Lint/Plugin/Test.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+package B::Lint::Plugin::Test;
+use strict;
+use warnings;
+
+# This package will be loaded automatically by Module::Plugin when
+# B::Lint loads.
+warn 'got here!';
+
+sub match {
+    my $op = shift @_;
+
+    # Prints to STDERR which will be picked up by the test running in
+    # lint.t
+    warn "Module::Pluggable ok.\n";
+
+    # Ignore this method once it happens once.
+    *match = sub { };
+}
+
+1;

Added: vendor/perl/dist/cpan/CGI/t/delete.t
===================================================================
--- vendor/perl/dist/cpan/CGI/t/delete.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CGI/t/delete.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,57 @@
+#!/usr/local/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+use CGI ();
+use Config;
+
+my $loaded = 1;
+
+$| = 1;
+
+######################### End of black magic.
+
+# Set up a CGI environment
+$ENV{REQUEST_METHOD}  = 'DELETE';
+$ENV{QUERY_STRING}    = 'game=chess&game=checkers&weather=dull';
+$ENV{PATH_INFO}       = '/somewhere/else';
+$ENV{PATH_TRANSLATED} = '/usr/local/somewhere/else';
+$ENV{SCRIPT_NAME}     = '/cgi-bin/foo.cgi';
+$ENV{SERVER_PROTOCOL} = 'HTTP/1.0';
+$ENV{SERVER_PORT}     = 8080;
+$ENV{SERVER_NAME}     = 'the.good.ship.lollypop.com';
+$ENV{REQUEST_URI}     = "$ENV{SCRIPT_NAME}$ENV{PATH_INFO}?$ENV{QUERY_STRING}";
+$ENV{HTTP_LOVE}       = 'true';
+
+my $q = new CGI;
+ok $q,"CGI::new()";
+is $q->request_method => 'DELETE',"CGI::request_method()";
+is $q->query_string => 'game=chess;game=checkers;weather=dull',"CGI::query_string()";
+is $q->param(), 2,"CGI::param()";
+is join(' ',sort $q->param()), 'game weather',"CGI::param()";
+is $q->param('game'), 'chess',"CGI::param()";
+is $q->param('weather'), 'dull',"CGI::param()";
+is join(' ',$q->param('game')), 'chess checkers',"CGI::param()";
+ok $q->param(-name=>'foo',-value=>'bar'),'CGI::param() put';
+is $q->param(-name=>'foo'), 'bar','CGI::param() get';
+is $q->query_string, 'game=chess;game=checkers;weather=dull;foo=bar',"CGI::query_string() redux";
+is $q->http('love'), 'true',"CGI::http()";
+is $q->script_name, '/cgi-bin/foo.cgi',"CGI::script_name()";
+is $q->url, 'http://the.good.ship.lollypop.com:8080/cgi-bin/foo.cgi',"CGI::url()";
+is $q->self_url,
+     'http://the.good.ship.lollypop.com:8080/cgi-bin/foo.cgi/somewhere/else?game=chess;game=checkers;weather=dull;foo=bar',
+     "CGI::url()";
+is $q->url(-absolute=>1), '/cgi-bin/foo.cgi','CGI::url(-absolute=>1)';
+is $q->url(-relative=>1), 'foo.cgi','CGI::url(-relative=>1)';
+is $q->url(-relative=>1,-path=>1), 'foo.cgi/somewhere/else','CGI::url(-relative=>1,-path=>1)';
+is $q->url(-relative=>1,-path=>1,-query=>1),
+     'foo.cgi/somewhere/else?game=chess;game=checkers;weather=dull;foo=bar',
+     'CGI::url(-relative=>1,-path=>1,-query=>1)';
+$q->delete('foo');
+ok !$q->param('foo'),'CGI::delete()';
+
+
+done_testing();

Added: vendor/perl/dist/cpan/CGI/t/multipart_init.t
===================================================================
--- vendor/perl/dist/cpan/CGI/t/multipart_init.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CGI/t/multipart_init.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use Test::More 'no_plan';
+
+use CGI;
+
+my $q = CGI->new;
+
+my $sv = $q->multipart_init;
+like( $sv, qr|Content-Type: multipart/x-mixed-replace;boundary="------- =|, 'multipart_init(), basic');
+
+like( $sv, qr/$CGI::CRLF$/, 'multipart_init(), ends in CRLF' );
+
+$sv = $q->multipart_init( 'this_is_the_boundary' );
+like( $sv, qr/boundary="this_is_the_boundary"/, 'multipart_init("simple_boundary")' );
+$sv = $q->multipart_init( -boundary => 'this_is_another_boundary' );
+like($sv,
+     qr/boundary="this_is_another_boundary"/, "multipart_init( -boundary => 'this_is_another_boundary')");
+
+{
+    my $sv = $q->multipart_init;
+    my $sv2 = $q->multipart_init;
+    isnt($sv,$sv2,"due to random boundaries, multiple calls produce different results");
+}

Added: vendor/perl/dist/cpan/CGI/t/rt-52469.t
===================================================================
--- vendor/perl/dist/cpan/CGI/t/rt-52469.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CGI/t/rt-52469.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+use strict;
+use warnings;
+
+use Test::More tests => 1;                      # last test to print
+
+use CGI;
+
+$ENV{REQUEST_METHOD} = 'PUT';
+
+my $cgi = CGI->new;
+
+pass 'new() returned';
+
+

Added: vendor/perl/dist/cpan/CGI/t/tmpdir.t
===================================================================
--- vendor/perl/dist/cpan/CGI/t/tmpdir.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CGI/t/tmpdir.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
+#!perl
+use Test::More;
+use strict;
+
+if( $> == 0 ) {
+    plan skip_all => "Root can write to 'unwritable files', so many of these tests don't make sense for root.";
+}
+
+my ($testdir, $testdir2);
+
+BEGIN {
+ $testdir = "CGItest";
+ $testdir2 = "CGItest2";
+ for ($testdir, $testdir2) {
+ ( -d ) || mkdir $_;
+ ( ! -w ) || chmod 0700, $_;
+ }
+ $CGITempFile::TMPDIRECTORY = $testdir;
+ $ENV{TMPDIR} = $testdir2;
+}
+
+use CGI;
+is($CGITempFile::TMPDIRECTORY, $testdir, "can pre-set \$CGITempFile::TMPDIRECTORY");
+CGITempFile->new;
+is($CGITempFile::TMPDIRECTORY, $testdir, "\$CGITempFile::TMPDIRECTORY unchanged");
+
+ok(chmod 0500, $testdir, "revoking write access to $testdir");
+ok(! -w $testdir, "write access to $testdir revoked");
+CGITempFile->new;
+is($CGITempFile::TMPDIRECTORY, $testdir2,
+    "unwritable \$CGITempFile::TMPDIRECTORY overridden");
+
+ok(chmod 0500, $testdir2, "revoking write access to $testdir2");
+ok(! -w $testdir, "write access to $testdir revoked");
+CGITempFile->new;
+isnt($CGITempFile::TMPDIRECTORY, $testdir2,
+    "unwritable \$ENV{TMPDIR} overridden");
+isnt($CGITempFile::TMPDIRECTORY, $testdir,
+    "unwritable \$ENV{TMPDIR} not overridden with an unwritable \$CGITempFile::TMPDIRECTORY");
+
+done_testing();
+
+END { for ($testdir, $testdir2) { chmod 0700, $_; rmdir; } }

Added: vendor/perl/dist/cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm
===================================================================
--- vendor/perl/dist/cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN/lib/CPAN/Exception/yaml_process_error.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+# -*- Mode: cperl; coding: utf-8; cperl-indent-level: 4 -*-
+# vim: ts=4 sts=4 sw=4:
+package CPAN::Exception::yaml_process_error;
+use strict;
+use overload '""' => "as_string";
+
+use vars qw(
+            $VERSION
+);
+$VERSION = "5.5";
+
+
+sub new {
+    my($class,$module,$file,$during,$error) = @_;
+    # my $at = Carp::longmess(""); # XXX find something more beautiful
+    bless { module => $module,
+            file => $file,
+            during => $during,
+            error => $error,
+            # at => $at,
+          }, $class;
+}
+
+sub as_string {
+    my($self) = shift;
+    if ($self->{during}) {
+        if ($self->{file}) {
+            if ($self->{module}) {
+                if ($self->{error}) {
+                    return "Alert: While trying to '$self->{during}' YAML file\n".
+                        " '$self->{file}'\n".
+                            "with '$self->{module}' the following error was encountered:\n".
+                                "  $self->{error}\n";
+                } else {
+                    return "Alert: While trying to '$self->{during}' YAML file\n".
+                        " '$self->{file}'\n".
+                            "with '$self->{module}' some unknown error was encountered\n";
+                }
+            } else {
+                return "Alert: While trying to '$self->{during}' YAML file\n".
+                    " '$self->{file}'\n".
+                        "some unknown error was encountered\n";
+            }
+        } else {
+            return "Alert: While trying to '$self->{during}' some YAML file\n".
+                    "some unknown error was encountered\n";
+        }
+    } else {
+        return "Alert: unknown error encountered\n";
+    }
+}
+
+1;

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data/gpl-1_4.yml
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data/gpl-1_4.yml	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data/gpl-1_4.yml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+---
+abstract: 'Build and install Perl modules'
+author:
+  - 'Ken Williams <kwilliams at cpan.org>'
+  - "Development questions, bug reports, and patches should be sent to the\nModule-Build mailing list at <module-build at perl.org>."
+build_requires:
+  File::Temp: 0.15
+  Test::Harness: 3.16
+  Test::More: 0.49
+generated_by: 'Module::Build version 0.3608'
+license: gpl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Module-Build
+resources:
+  MailingList: mailto:module-build at perl.org
+  license: http://dev.perl.org/licenses/
+  repository: http://github.com/dagolden/module-build/
+version: 3

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data/unicode.yml
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data/unicode.yml	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data/unicode.yml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,132 @@
+---
+abstract: 'Build and install Perl modules'
+author:
+  - 'Ken Williåms <kwilliams at cpan.org>'
+  - "Development questions, bug reports, and patches should be sent to the\nModule-Build mailing list at <module-build at perl.org>."
+build_requires:
+  File::Temp: 0.15
+  Test::Harness: 3.16
+  Test::More: 0.49
+generated_by: 'Module::Build version 0.3608'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Module-Build
+provides:
+  Module::Build:
+    file: lib/Module/Build.pm
+    version: 0.36_08
+  Module::Build::Base:
+    file: lib/Module/Build/Base.pm
+    version: 0.36_08
+  Module::Build::Compat:
+    file: lib/Module/Build/Compat.pm
+    version: 0.36_08
+  Module::Build::Config:
+    file: lib/Module/Build/Config.pm
+    version: 0.36_08
+  Module::Build::Cookbook:
+    file: lib/Module/Build/Cookbook.pm
+    version: 0.36_08
+  Module::Build::Dumper:
+    file: lib/Module/Build/Dumper.pm
+    version: 0.36_08
+  Module::Build::ModuleInfo:
+    file: lib/Module/Build/ModuleInfo.pm
+    version: 0.36_08
+  Module::Build::Notes:
+    file: lib/Module/Build/Notes.pm
+    version: 0.36_08
+  Module::Build::PPMMaker:
+    file: lib/Module/Build/PPMMaker.pm
+    version: 0.36_08
+  Module::Build::Platform::Amiga:
+    file: lib/Module/Build/Platform/Amiga.pm
+    version: 0.36_08
+  Module::Build::Platform::Default:
+    file: lib/Module/Build/Platform/Default.pm
+    version: 0.36_08
+  Module::Build::Platform::EBCDIC:
+    file: lib/Module/Build/Platform/EBCDIC.pm
+    version: 0.36_08
+  Module::Build::Platform::MPEiX:
+    file: lib/Module/Build/Platform/MPEiX.pm
+    version: 0.36_08
+  Module::Build::Platform::MacOS:
+    file: lib/Module/Build/Platform/MacOS.pm
+    version: 0.36_08
+  Module::Build::Platform::RiscOS:
+    file: lib/Module/Build/Platform/RiscOS.pm
+    version: 0.36_08
+  Module::Build::Platform::Unix:
+    file: lib/Module/Build/Platform/Unix.pm
+    version: 0.36_08
+  Module::Build::Platform::VMS:
+    file: lib/Module/Build/Platform/VMS.pm
+    version: 0.36_08
+  Module::Build::Platform::VOS:
+    file: lib/Module/Build/Platform/VOS.pm
+    version: 0.36_08
+  Module::Build::Platform::Windows:
+    file: lib/Module/Build/Platform/Windows.pm
+    version: 0.36_08
+  Module::Build::Platform::aix:
+    file: lib/Module/Build/Platform/aix.pm
+    version: 0.36_08
+  Module::Build::Platform::cygwin:
+    file: lib/Module/Build/Platform/cygwin.pm
+    version: 0.36_08
+  Module::Build::Platform::darwin:
+    file: lib/Module/Build/Platform/darwin.pm
+    version: 0.36_08
+  Module::Build::Platform::os2:
+    file: lib/Module/Build/Platform/os2.pm
+    version: 0.36_08
+  Module::Build::PodParser:
+    file: lib/Module/Build/PodParser.pm
+    version: 0.36_08
+  Module::Build::Version:
+    file: lib/Module/Build/Version.pm
+    version: 0.77
+  Module::Build::YAML:
+    file: lib/Module/Build/YAML.pm
+    version: 1.40
+  inc::latest:
+    file: lib/inc/latest.pm
+    version: 0.36_08
+  inc::latest::private:
+    file: lib/inc/latest/private.pm
+    version: 0.36_08
+recommends:
+  ExtUtils::Install: 0.3
+  ExtUtils::Manifest: 1.54
+  version: 0.74
+requires:
+  Cwd: 0
+  Data::Dumper: 0
+  ExtUtils::CBuilder: 0.27
+  ExtUtils::Install: 0
+  ExtUtils::Manifest: 0
+  ExtUtils::Mkbootstrap: 0
+  ExtUtils::ParseXS: 2.21
+  File::Basename: 0
+  File::Compare: 0
+  File::Copy: 0
+  File::Find: 0
+  File::Path: 0
+  File::Spec: 0.82
+  Getopt::Long: 0
+  IO::File: 0
+  Test::Harness: 0
+  Text::Abbrev: 0
+  Text::ParseWords: 0
+  perl: 5.006001
+resources:
+  MailingList: mailto:module-build at perl.org
+  license: http://dev.perl.org/licenses/
+  repository: http://github.com/dagolden/module-build/
+version: 0.36_08
+x-whatever: this is a custom field
+x_whatelse: so is this
+XWhatNow: and this

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data/version-not-normal.json
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data/version-not-normal.json	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data/version-not-normal.json	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+{
+   "generated_by" : "Module::Build version 0.36",
+   "meta-spec" : {
+      "version" : "2",
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
+   },
+   "abstract" : "stuff",
+   "version" : "0.36",
+   "name" : "Module-Build",
+   "dynamic_config" : 1,
+   "author" : [
+      "Ken Williams <kwilliams at cpan.org>",
+      "Module-Build List <module-build at perl.org>"
+   ],
+   "release_status" : "stable",
+   "license" : [
+      "perl_5"
+   ],
+   "description" : "Module::Build is a system for building, testing, and installing Perl modules.  It is meant to be an alternative to ExtUtils::MakeMaker... blah blah blah",
+   "prereqs" : {
+      "runtime" : {
+         "requires" : {
+            "File::Copy" : "== 2.21",
+            "IO::File" : "> 1.12",
+            "Data::Dumper" : ">= 1",
+            "File::Spec" : "< 5",
+            "File::Find" : "v0.1",
+            "File::Path" : "1.0.0",
+            "Module::Metadata" : ">= v1.0.2, <= v1.0.10"
+         }
+      },
+      "build" : {
+         "requires" : {
+            "Build::Requires": "1.1",
+            "Test::More" : "0"
+         }
+      },
+      "test" : {
+         "requires" : {
+            "Test::More" : "0.88",
+            "Test::Requires" : "1.2"
+         }
+      }
+   }
+}

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-1_4.yml
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-1_4.yml	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-1_4.yml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,25 @@
+---
+abstract: stuff
+author:
+  - 'Ken Williams <kwilliams at cpan.org>'
+  - 'Module-Build List <module-build at perl.org>'
+description: 'Module::Build is a system for building, testing, and installing Perl modules.  It is meant to be an alternative to ExtUtils::MakeMaker... blah blah blah'
+dynamic_config: 1
+generated_by: 'Module::Build version 0.36'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: Module-Build
+build_requires:
+  Build::Requires: 1.1
+  Test::More: 0
+requires:
+  Data::Dumper: '>= 1'
+  File::Copy: '== 2.21'
+  File::Find: '>1, != 1.19'
+  File::Path: 0
+  File::Spec: '< 5'
+  IO::File: '> 1.12'
+  Module::Metadata: '>= v1.0.2, <= v1.0.10'
+version: 0.36

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-2.json
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-2.json	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data/version-ranges-2.json	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+{
+   "generated_by" : "Module::Build version 0.36",
+   "meta-spec" : {
+      "version" : "2",
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
+   },
+   "abstract" : "stuff",
+   "version" : "0.36",
+   "name" : "Module-Build",
+   "dynamic_config" : 1,
+   "author" : [
+      "Ken Williams <kwilliams at cpan.org>",
+      "Module-Build List <module-build at perl.org>"
+   ],
+   "release_status" : "stable",
+   "license" : [
+      "perl_5"
+   ],
+   "description" : "Module::Build is a system for building, testing, and installing Perl modules.  It is meant to be an alternative to ExtUtils::MakeMaker... blah blah blah",
+   "prereqs" : {
+      "runtime" : {
+         "requires" : {
+            "File::Copy" : "== 2.21",
+            "IO::File" : "> 1.12",
+            "Data::Dumper" : ">= 1",
+            "File::Spec" : "< 5",
+            "File::Find" : ">1, != 1.19",
+            "File::Path" : "0",
+            "Module::Metadata" : ">= v1.0.2, <= v1.0.10"
+         }
+      },
+      "build" : {
+         "requires" : {
+            "Build::Requires": "1.1",
+            "Test::More" : "0"
+         }
+      },
+      "test" : {
+         "requires" : {
+            "Test::More" : "0.88",
+            "Test::Requires" : "1.2"
+         }
+      }
+   }
+}

Added: vendor/perl/dist/cpan/CPAN-Meta/t/data-bad/version-ranges-2.json
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/data-bad/version-ranges-2.json	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/data-bad/version-ranges-2.json	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,29 @@
+{
+   "generated_by" : "Module::Build version 0.36",
+   "meta-spec" : {
+      "version" : "2",
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec"
+   },
+   "abstract" : "stuff",
+   "version" : "0.36",
+   "name" : "Module-Build",
+   "dynamic_config" : 1,
+   "author" : [
+      "Ken Williams <kwilliams at cpan.org>",
+      "Module-Build List <module-build at perl.org>"
+   ],
+   "release_status" : "stable",
+   "license" : [
+      "perl_5"
+   ],
+   "description" : "Module::Build is a system for building, testing, and installing Perl modules.  It is meant to be an alternative to ExtUtils::MakeMaker... blah blah blah",
+   "prereqs" : {
+      "runtime" : {
+         "requires" : {
+            "IO::File" : "1.23beta",
+            "Data::Dumper" : "<= v1.2.a.3",
+            "File::Spec" : "== mu"
+         }
+      }
+   }
+}

Added: vendor/perl/dist/cpan/CPAN-Meta/t/strings.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta/t/strings.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta/t/strings.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+use strict;
+use warnings;
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+use CPAN::Meta::Requirements;
+
+my $req = CPAN::Meta::Requirements->new;
+
+# Test ==
+$req->add_string_requirement('Foo::Bar', '== 1.3');
+ok($req->accepts_module('Foo::Bar' => '1.3'), 'exact version (==)');
+ok(!$req->accepts_module('Foo::Bar' => '1.2'), 'lower version (==)');
+ok(!$req->accepts_module('Foo::Bar' => '1.4'), 'higher version (==)');
+
+# Test !=
+$req->add_string_requirement('Foo::Baz', '!= 1.3');
+ok(!$req->accepts_module('Foo::Baz' => '1.3'), 'exact version (!=)');
+ok($req->accepts_module('Foo::Baz' => '1.2'), 'lower version (!=)');
+ok($req->accepts_module('Foo::Baz' => '1.4'), 'higher version (!=)');
+
+# Test >=
+$req->add_string_requirement('Foo::Gorch', '>= 1.3');
+ok($req->accepts_module('Foo::Gorch' => '1.3'), 'exact version (>=)');
+ok(!$req->accepts_module('Foo::Gorch' => '1.2'), 'lower version (>=)');
+ok($req->accepts_module('Foo::Gorch' => '1.4'), 'higher version (>=)');
+
+# Test <=
+$req->add_string_requirement('Foo::Graz', '<= 1.3');
+ok($req->accepts_module('Foo::Graz' => '1.3'), 'exact version (<=)');
+ok($req->accepts_module('Foo::Graz' => '1.2'), 'lower version (<=)');
+ok(!$req->accepts_module('Foo::Graz' => '1.4'), 'higher version (<=)');
+
+# Test ""
+$req->add_string_requirement('Foo::Blurb', '>= 1.3');
+ok($req->accepts_module('Foo::Blurb' => '1.3'), 'exact version (>=)');
+ok(!$req->accepts_module('Foo::Blurb' => '1.2'), 'lower version (>=)');
+ok($req->accepts_module('Foo::Blurb' => '1.4'), 'higher version (>=)');
+
+# Test multiple requirements
+$req->add_string_requirement('A::Tribe::Called', '>= 1.3, <= 2.0, != 1.6');
+ok($req->accepts_module('A::Tribe::Called' => '1.5'), 'middle version (>=, <=, !)');
+ok(!$req->accepts_module('A::Tribe::Called' => '1.2'), 'lower version (>=, <=, !)');
+ok(!$req->accepts_module('A::Tribe::Called' => '2.1'), 'higher version (>=, <=, !)');
+ok(!$req->accepts_module('A::Tribe::Called' => '1.6'), 'excluded version (>=, <=, !)');
+
+# Test fatal errors
+dies_ok { $req->add_string_requirement('Foo::Bar', undef) }
+  qr/No requirement string provided/,
+  "die without a requirement string";
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/Changes
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/Changes	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/Changes	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+Revision history for CPAN-Meta-Requirements
+
+2.122     2012-05-02 17:29:17 America/New_York
+
+    [Fixed]
+
+    - Fix typo in documentation: the exclusion symbol is "!=" rather than
+      just "!". The implemenation was correct, just the docs were wrong.
+      [rt.cpan.org #76948; ticket and patch from hasch-cpan at cozap.com]
+
+2.121     2012-04-01 15:05:15 Europe/Paris
+
+    - Split out from CPAN::Meta into own distribution
+

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/lib/CPAN/Meta/Requirements.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,728 @@
+use strict;
+use warnings;
+package CPAN::Meta::Requirements;
+our $VERSION = '2.122'; # VERSION
+# ABSTRACT: a set of version requirements for a CPAN dist
+
+
+use Carp ();
+use Scalar::Util ();
+use version 0.77 (); # the ->parse method
+
+
+my @valid_options = qw( bad_version_hook );
+
+sub new {
+  my ($class, $options) = @_;
+  $options ||= {};
+  Carp::croak "Argument to $class\->new() must be a hash reference"
+    unless ref $options eq 'HASH';
+  my %self = map {; $_ => $options->{$_}} @valid_options;
+
+  return bless \%self => $class;
+}
+
+sub _version_object {
+  my ($self, $version) = @_;
+
+  my $vobj;
+
+  eval {
+    $vobj  = (! defined $version)                ? version->parse(0)
+           : (! Scalar::Util::blessed($version)) ? version->parse($version)
+           :                                       $version;
+  };
+
+  if ( my $err = $@ ) {
+    my $hook = $self->{bad_version_hook};
+    $vobj = eval { $hook->($version) }
+      if ref $hook eq 'CODE';
+    unless (Scalar::Util::blessed($vobj) && $vobj->isa("version")) {
+      $err =~ s{ at .* line \d+.*$}{};
+      die "Can't convert '$version': $err";
+    }
+  }
+
+  # ensure no leading '.'
+  if ( $vobj =~ m{\A\.} ) {
+    $vobj = version->parse("0$vobj");
+  }
+
+  # ensure normal v-string form
+  if ( $vobj->is_qv ) {
+    $vobj = version->parse($vobj->normal);
+  }
+
+  return $vobj;
+}
+
+
+BEGIN {
+  for my $type (qw(minimum maximum exclusion exact_version)) {
+    my $method = "with_$type";
+    my $to_add = $type eq 'exact_version' ? $type : "add_$type";
+
+    my $code = sub {
+      my ($self, $name, $version) = @_;
+
+      $version = $self->_version_object( $version );
+
+      $self->__modify_entry_for($name, $method, $version);
+
+      return $self;
+    };
+    
+    no strict 'refs';
+    *$to_add = $code;
+  }
+}
+
+
+sub add_requirements {
+  my ($self, $req) = @_;
+
+  for my $module ($req->required_modules) {
+    my $modifiers = $req->__entry_for($module)->as_modifiers;
+    for my $modifier (@$modifiers) {
+      my ($method, @args) = @$modifier;
+      $self->$method($module => @args);
+    };
+  }
+
+  return $self;
+}
+
+
+sub accepts_module {
+  my ($self, $module, $version) = @_;
+
+  $version = $self->_version_object( $version );
+
+  return 1 unless my $range = $self->__entry_for($module);
+  return $range->_accepts($version);
+}
+
+
+sub clear_requirement {
+  my ($self, $module) = @_;
+
+  return $self unless $self->__entry_for($module);
+
+  Carp::confess("can't clear requirements on finalized requirements")
+    if $self->is_finalized;
+
+  delete $self->{requirements}{ $module };
+
+  return $self;
+}
+
+
+sub requirements_for_module {
+  my ($self, $module) = @_;
+  my $entry = $self->__entry_for($module);
+  return unless $entry;
+  return $entry->as_string;
+}
+
+
+sub required_modules { keys %{ $_[0]{requirements} } }
+
+
+sub clone {
+  my ($self) = @_;
+  my $new = (ref $self)->new;
+
+  return $new->add_requirements($self);
+}
+
+sub __entry_for     { $_[0]{requirements}{ $_[1] } }
+
+sub __modify_entry_for {
+  my ($self, $name, $method, $version) = @_;
+
+  my $fin = $self->is_finalized;
+  my $old = $self->__entry_for($name);
+
+  Carp::confess("can't add new requirements to finalized requirements")
+    if $fin and not $old;
+
+  my $new = ($old || 'CPAN::Meta::Requirements::_Range::Range')
+          ->$method($version);
+
+  Carp::confess("can't modify finalized requirements")
+    if $fin and $old->as_string ne $new->as_string;
+
+  $self->{requirements}{ $name } = $new;
+}
+
+
+sub is_simple {
+  my ($self) = @_;
+  for my $module ($self->required_modules) {
+    # XXX: This is a complete hack, but also entirely correct.
+    return if $self->__entry_for($module)->as_string =~ /\s/;
+  }
+
+  return 1;
+}
+
+
+sub is_finalized { $_[0]{finalized} }
+
+
+sub finalize { $_[0]{finalized} = 1 }
+
+
+sub as_string_hash {
+  my ($self) = @_;
+
+  my %hash = map {; $_ => $self->{requirements}{$_}->as_string }
+             $self->required_modules;
+
+  return \%hash;
+}
+
+
+my %methods_for_op = (
+  '==' => [ qw(exact_version) ],
+  '!=' => [ qw(add_exclusion) ],
+  '>=' => [ qw(add_minimum)   ],
+  '<=' => [ qw(add_maximum)   ],
+  '>'  => [ qw(add_minimum add_exclusion) ],
+  '<'  => [ qw(add_maximum add_exclusion) ],
+);
+
+sub add_string_requirement {
+  my ($self, $module, $req) = @_;
+
+  Carp::confess("No requirement string provided for $module")
+    unless defined $req && length $req;
+
+  my @parts = split qr{\s*,\s*}, $req;
+
+
+  for my $part (@parts) {
+    my ($op, $ver) = $part =~ m{\A\s*(==|>=|>|<=|<|!=)\s*(.*)\z};
+
+    if (! defined $op) {
+      $self->add_minimum($module => $part);
+    } else {
+      Carp::confess("illegal requirement string: $req")
+        unless my $methods = $methods_for_op{ $op };
+
+      $self->$_($module => $ver) for @$methods;
+    }
+  }
+}
+
+
+sub from_string_hash {
+  my ($class, $hash) = @_;
+
+  my $self = $class->new;
+
+  for my $module (keys %$hash) {
+    my $req = $hash->{$module};
+    unless ( defined $req && length $req ) {
+      $req = 0;
+      Carp::carp("Undefined requirement for $module treated as '0'");
+    }
+    $self->add_string_requirement($module, $req);
+  }
+
+  return $self;
+}
+
+##############################################################
+
+{
+  package
+    CPAN::Meta::Requirements::_Range::Exact;
+  sub _new     { bless { version => $_[1] } => $_[0] }
+
+  sub _accepts { return $_[0]{version} == $_[1] }
+
+  sub as_string { return "== $_[0]{version}" }
+
+  sub as_modifiers { return [ [ exact_version => $_[0]{version} ] ] }
+
+  sub _clone {
+    (ref $_[0])->_new( version->new( $_[0]{version} ) )
+  }
+
+  sub with_exact_version {
+    my ($self, $version) = @_;
+
+    return $self->_clone if $self->_accepts($version);
+
+    Carp::confess("illegal requirements: unequal exact version specified");
+  }
+
+  sub with_minimum {
+    my ($self, $minimum) = @_;
+    return $self->_clone if $self->{version} >= $minimum;
+    Carp::confess("illegal requirements: minimum above exact specification");
+  }
+
+  sub with_maximum {
+    my ($self, $maximum) = @_;
+    return $self->_clone if $self->{version} <= $maximum;
+    Carp::confess("illegal requirements: maximum below exact specification");
+  }
+
+  sub with_exclusion {
+    my ($self, $exclusion) = @_;
+    return $self->_clone unless $exclusion == $self->{version};
+    Carp::confess("illegal requirements: excluded exact specification");
+  }
+}
+
+##############################################################
+
+{
+  package
+    CPAN::Meta::Requirements::_Range::Range;
+
+  sub _self { ref($_[0]) ? $_[0] : (bless { } => $_[0]) }
+
+  sub _clone {
+    return (bless { } => $_[0]) unless ref $_[0];
+
+    my ($s) = @_;
+    my %guts = (
+      (exists $s->{minimum} ? (minimum => version->new($s->{minimum})) : ()),
+      (exists $s->{maximum} ? (maximum => version->new($s->{maximum})) : ()),
+
+      (exists $s->{exclusions}
+        ? (exclusions => [ map { version->new($_) } @{ $s->{exclusions} } ])
+        : ()),
+    );
+
+    bless \%guts => ref($s);
+  }
+
+  sub as_modifiers {
+    my ($self) = @_;
+    my @mods;
+    push @mods, [ add_minimum => $self->{minimum} ] if exists $self->{minimum};
+    push @mods, [ add_maximum => $self->{maximum} ] if exists $self->{maximum};
+    push @mods, map {; [ add_exclusion => $_ ] } @{$self->{exclusions} || []};
+    return \@mods;
+  }
+
+  sub as_string {
+    my ($self) = @_;
+
+    return 0 if ! keys %$self;
+
+    return "$self->{minimum}" if (keys %$self) == 1 and exists $self->{minimum};
+
+    my @exclusions = @{ $self->{exclusions} || [] };
+
+    my @parts;
+
+    for my $pair (
+      [ qw( >= > minimum ) ],
+      [ qw( <= < maximum ) ],
+    ) {
+      my ($op, $e_op, $k) = @$pair;
+      if (exists $self->{$k}) {
+        my @new_exclusions = grep { $_ != $self->{ $k } } @exclusions;
+        if (@new_exclusions == @exclusions) {
+          push @parts, "$op $self->{ $k }";
+        } else {
+          push @parts, "$e_op $self->{ $k }";
+          @exclusions = @new_exclusions;
+        }
+      }
+    }
+
+    push @parts, map {; "!= $_" } @exclusions;
+
+    return join q{, }, @parts;
+  }
+
+  sub with_exact_version {
+    my ($self, $version) = @_;
+    $self = $self->_clone;
+
+    Carp::confess("illegal requirements: exact specification outside of range")
+      unless $self->_accepts($version);
+
+    return CPAN::Meta::Requirements::_Range::Exact->_new($version);
+  }
+
+  sub _simplify {
+    my ($self) = @_;
+
+    if (defined $self->{minimum} and defined $self->{maximum}) {
+      if ($self->{minimum} == $self->{maximum}) {
+        Carp::confess("illegal requirements: excluded all values")
+          if grep { $_ == $self->{minimum} } @{ $self->{exclusions} || [] };
+
+        return CPAN::Meta::Requirements::_Range::Exact->_new($self->{minimum})
+      }
+
+      Carp::confess("illegal requirements: minimum exceeds maximum")
+        if $self->{minimum} > $self->{maximum};
+    }
+
+    # eliminate irrelevant exclusions
+    if ($self->{exclusions}) {
+      my %seen;
+      @{ $self->{exclusions} } = grep {
+        (! defined $self->{minimum} or $_ >= $self->{minimum})
+        and
+        (! defined $self->{maximum} or $_ <= $self->{maximum})
+        and
+        ! $seen{$_}++
+      } @{ $self->{exclusions} };
+    }
+
+    return $self;
+  }
+
+  sub with_minimum {
+    my ($self, $minimum) = @_;
+    $self = $self->_clone;
+
+    if (defined (my $old_min = $self->{minimum})) {
+      $self->{minimum} = (sort { $b cmp $a } ($minimum, $old_min))[0];
+    } else {
+      $self->{minimum} = $minimum;
+    }
+
+    return $self->_simplify;
+  }
+
+  sub with_maximum {
+    my ($self, $maximum) = @_;
+    $self = $self->_clone;
+
+    if (defined (my $old_max = $self->{maximum})) {
+      $self->{maximum} = (sort { $a cmp $b } ($maximum, $old_max))[0];
+    } else {
+      $self->{maximum} = $maximum;
+    }
+
+    return $self->_simplify;
+  }
+
+  sub with_exclusion {
+    my ($self, $exclusion) = @_;
+    $self = $self->_clone;
+
+    push @{ $self->{exclusions} ||= [] }, $exclusion;
+
+    return $self->_simplify;
+  }
+
+  sub _accepts {
+    my ($self, $version) = @_;
+
+    return if defined $self->{minimum} and $version < $self->{minimum};
+    return if defined $self->{maximum} and $version > $self->{maximum};
+    return if defined $self->{exclusions}
+          and grep { $version == $_ } @{ $self->{exclusions} };
+
+    return 1;
+  }
+}
+
+1;
+# vim: ts=2 sts=2 sw=2 et:
+
+__END__
+=pod
+
+=head1 NAME
+
+CPAN::Meta::Requirements - a set of version requirements for a CPAN dist
+
+=head1 VERSION
+
+version 2.122
+
+=head1 SYNOPSIS
+
+  use CPAN::Meta::Requirements;
+
+  my $build_requires = CPAN::Meta::Requirements->new;
+
+  $build_requires->add_minimum('Library::Foo' => 1.208);
+
+  $build_requires->add_minimum('Library::Foo' => 2.602);
+
+  $build_requires->add_minimum('Module::Bar'  => 'v1.2.3');
+
+  $METAyml->{build_requires} = $build_requires->as_string_hash;
+
+=head1 DESCRIPTION
+
+A CPAN::Meta::Requirements object models a set of version constraints like
+those specified in the F<META.yml> or F<META.json> files in CPAN distributions.
+It can be built up by adding more and more constraints, and it will reduce them
+to the simplest representation.
+
+Logically impossible constraints will be identified immediately by thrown
+exceptions.
+
+=head1 METHODS
+
+=head2 new
+
+  my $req = CPAN::Meta::Requirements->new;
+
+This returns a new CPAN::Meta::Requirements object.  It takes an optional
+hash reference argument.  The following keys are supported:
+
+=over 4
+
+=item *
+
+<bad_version_hook> -- if provided, when a version cannot be parsed into
+
+a version object, this code reference will be called with the invalid version
+string as an argument.  It must return a valid version object.
+
+=back
+
+All other keys are ignored.
+
+=head2 add_minimum
+
+  $req->add_minimum( $module => $version );
+
+This adds a new minimum version requirement.  If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Minimum requirements are inclusive.  C<$version> is required, along with any
+greater version number.
+
+This method returns the requirements object.
+
+=head2 add_maximum
+
+  $req->add_maximum( $module => $version );
+
+This adds a new maximum version requirement.  If the new requirement is
+redundant to the existing specification, this has no effect.
+
+Maximum requirements are inclusive.  No version strictly greater than the given
+version is allowed.
+
+This method returns the requirements object.
+
+=head2 add_exclusion
+
+  $req->add_exclusion( $module => $version );
+
+This adds a new excluded version.  For example, you might use these three
+method calls:
+
+  $req->add_minimum( $module => '1.00' );
+  $req->add_maximum( $module => '1.82' );
+
+  $req->add_exclusion( $module => '1.75' );
+
+Any version between 1.00 and 1.82 inclusive would be acceptable, except for
+1.75.
+
+This method returns the requirements object.
+
+=head2 exact_version
+
+  $req->exact_version( $module => $version );
+
+This sets the version required for the given module to I<exactly> the given
+version.  No other version would be considered acceptable.
+
+This method returns the requirements object.
+
+=head2 add_requirements
+
+  $req->add_requirements( $another_req_object );
+
+This method adds all the requirements in the given CPAN::Meta::Requirements object
+to the requirements object on which it was called.  If there are any conflicts,
+an exception is thrown.
+
+This method returns the requirements object.
+
+=head2 accepts_module
+
+  my $bool = $req->accepts_modules($module => $version);
+
+Given an module and version, this method returns true if the version
+specification for the module accepts the provided version.  In other words,
+given:
+
+  Module => '>= 1.00, < 2.00'
+
+We will accept 1.00 and 1.75 but not 0.50 or 2.00.
+
+For modules that do not appear in the requirements, this method will return
+true.
+
+=head2 clear_requirement
+
+  $req->clear_requirement( $module );
+
+This removes the requirement for a given module from the object.
+
+This method returns the requirements object.
+
+=head2 requirements_for_module
+
+  $req->requirements_for_module( $module );
+
+This returns a string containing the version requirements for a given module in
+the format described in L<CPAN::Meta::Spec> or undef if the given module has no
+requirements. This should only be used for informational purposes such as error
+messages and should not be interpreted or used for comparison (see
+L</accepts_module> instead.)
+
+=head2 required_modules
+
+This method returns a list of all the modules for which requirements have been
+specified.
+
+=head2 clone
+
+  $req->clone;
+
+This method returns a clone of the invocant.  The clone and the original object
+can then be changed independent of one another.
+
+=head2 is_simple
+
+This method returns true if and only if all requirements are inclusive minimums
+-- that is, if their string expression is just the version number.
+
+=head2 is_finalized
+
+This method returns true if the requirements have been finalized by having the
+C<finalize> method called on them.
+
+=head2 finalize
+
+This method marks the requirements finalized.  Subsequent attempts to change
+the requirements will be fatal, I<if> they would result in a change.  If they
+would not alter the requirements, they have no effect.
+
+If a finalized set of requirements is cloned, the cloned requirements are not
+also finalized.
+
+=head2 as_string_hash
+
+This returns a reference to a hash describing the requirements using the
+strings in the F<META.yml> specification.
+
+For example after the following program:
+
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum('CPAN::Meta::Requirements' => 0.102);
+
+  $req->add_minimum('Library::Foo' => 1.208);
+
+  $req->add_maximum('Library::Foo' => 2.602);
+
+  $req->add_minimum('Module::Bar'  => 'v1.2.3');
+
+  $req->add_exclusion('Module::Bar'  => 'v1.2.8');
+
+  $req->exact_version('Xyzzy'  => '6.01');
+
+  my $hashref = $req->as_string_hash;
+
+C<$hashref> would contain:
+
+  {
+    'CPAN::Meta::Requirements' => '0.102',
+    'Library::Foo' => '>= 1.208, <= 2.206',
+    'Module::Bar'  => '>= v1.2.3, != v1.2.8',
+    'Xyzzy'        => '== 6.01',
+  }
+
+=head2 add_string_requirement
+
+  $req->add_string_requirement('Library::Foo' => '>= 1.208, <= 2.206');
+
+This method parses the passed in string and adds the appropriate requirement
+for the given module.  It understands version ranges as described in the
+L<CPAN::Meta::Spec/Version Ranges>. For example:
+
+=over 4
+
+=item 1.3
+
+=item >= 1.3
+
+=item <= 1.3
+
+=item == 1.3
+
+=item != 1.3
+
+=item > 1.3
+
+=item < 1.3
+
+=item >= 1.3, != 1.5, <= 2.0
+
+A version number without an operator is equivalent to specifying a minimum
+(C<E<gt>=>).  Extra whitespace is allowed.
+
+=back
+
+=head2 from_string_hash
+
+  my $req = CPAN::Meta::Requirements->from_string_hash( \%hash );
+
+This is an alternate constructor for a CPAN::Meta::Requirements object.  It takes
+a hash of module names and version requirement strings and returns a new
+CPAN::Meta::Requirements object.
+
+=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=CPAN-Meta-Requirements>.
+You will be notified automatically of any progress on your issue.
+
+=head2 Source Code
+
+This is open source software.  The code repository is available for
+public review and contribution under the terms of the license.
+
+L<https://github.com/dagolden/cpan-meta-requirements>
+
+  git clone https://github.com/dagolden/cpan-meta-requirements.git
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+David Golden <dagolden at cpan.org>
+
+=item *
+
+Ricardo Signes <rjbs at cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2010 by David Golden and Ricardo Signes.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
+

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/accepts.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/accepts.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/accepts.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,29 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+{
+  my $req = CPAN::Meta::Requirements->new->add_minimum(Foo => 1);
+
+  ok(  $req->accepts_module(Foo => 1));
+  ok(! $req->accepts_module(Foo => 0));
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new->add_maximum(Foo => 1);
+
+  ok(  $req->accepts_module(Foo => 1));
+  ok(! $req->accepts_module(Foo => 2));
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new->add_exclusion(Foo => 1);
+
+  ok(  $req->accepts_module(Foo => 0));
+  ok(! $req->accepts_module(Foo => 1));
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/bad_version_hook.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+use version;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+sub _fixit { return version->new(42) }
+
+{
+  my $req = CPAN::Meta::Requirements->new( {bad_version_hook => \&_fixit} );
+
+  $req->add_minimum('Foo::Bar' => 10);
+  $req->add_minimum('Foo::Baz' => 'invalid_version');
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      'Foo::Bar'   => 10,
+      'Foo::Baz'   => 42,
+    },
+    "hook fixes invalid version",
+  );
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new( {bad_version_hook => sub { 0 }} );
+
+  dies_ok { $req->add_minimum('Foo::Baz' => 'invalid_version') }
+    qr/Invalid version/,
+    "dies if hook doesn't return version object";
+
+}
+
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/basic.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/basic.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/basic.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,236 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum('Foo::Bar' => 10);
+  $req->add_minimum('Foo::Bar' => 0);
+  $req->add_minimum('Foo::Bar' => 2);
+
+  $req->add_minimum('Foo::Baz' => version->declare('v1.2.3'));
+
+  $req->add_minimum('Foo::Undef' => undef);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      'Foo::Bar'   => 10,
+      'Foo::Baz'   => 'v1.2.3',
+      'Foo::Undef' => 0,
+    },
+    "some basic minimums",
+  );
+
+  ok($req->is_simple, "just minimums? simple");
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_maximum(Foo => 1);
+  is_deeply($req->as_string_hash, { Foo => '<= 1' }, "max only");
+
+  ok(! $req->is_simple, "maximums? not simple");
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_exclusion(Foo => 1);
+  $req->add_exclusion(Foo => 2);
+
+  # Why would you ever do this?? -- rjbs, 2010-02-20
+  is_deeply($req->as_string_hash, { Foo => '!= 1, != 2' }, "excl only");
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum(Foo => 1);
+  $req->add_maximum(Foo => 2);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '>= 1, <= 2',
+    },
+    "min and max",
+  );
+
+  $req->add_maximum(Foo => 3);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '>= 1, <= 2',
+    },
+    "exclusions already outside range do not matter",
+  );
+
+  $req->add_exclusion(Foo => 1.5);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '>= 1, <= 2, != 1.5',
+    },
+    "exclusions",
+  );
+
+  $req->add_minimum(Foo => 1.6);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '>= 1.6, <= 2',
+    },
+    "exclusions go away when made irrelevant",
+  );
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum(Foo => 1);
+  $req->add_exclusion(Foo => 1);
+  $req->add_maximum(Foo => 2);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '> 1, <= 2',
+    },
+    "we can exclude an endpoint",
+  );
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_minimum(Foo => 1);
+
+  $req->add_exclusion(Foo => 1);
+
+  dies_ok { $req->add_maximum(Foo => 1); }
+    qr/excluded all/,
+    "can't exclude all values" ;
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_minimum(Foo => 1);
+  dies_ok {$req->exact_version(Foo => 0.5); }
+    qr/outside of range/,
+    "can't add outside-range exact spec to range";
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_minimum(Foo => 1);
+  dies_ok { $req->add_maximum(Foo => 0.5); }
+    qr/minimum exceeds maximum/,
+    "maximum must exceed (or equal) minimum";
+
+  $req = CPAN::Meta::Requirements->new;
+  $req->add_maximum(Foo => 0.5);
+  dies_ok { $req->add_minimum(Foo => 1); }
+    qr/minimum exceeds maximum/,
+    "maximum must exceed (or equal) minimum";
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum(Foo => 1);
+  $req->add_maximum(Foo => 1);
+
+  $req->add_maximum(Foo => 2); # ignored
+  $req->add_minimum(Foo => 0); # ignored
+  $req->add_exclusion(Foo => .5); # ignored
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      'Foo' => '== 1',
+    },
+    "if min==max, becomes exact requirement",
+  );
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+  $req->add_minimum(Foo => 1);
+  $req->add_exclusion(Foo => 0);
+  $req->add_maximum(Foo => 3);
+  $req->add_exclusion(Foo => 4);
+
+  $req->add_exclusion(Foo => 2);
+  $req->add_exclusion(Foo => 2);
+
+  is_deeply(
+    $req->as_string_hash,
+    {
+      Foo => '>= 1, <= 3, != 2',
+    },
+    'test exclusion-skipping',
+  );
+}
+
+sub foo_1 {
+  my $req = CPAN::Meta::Requirements->new;
+  $req->exact_version(Foo => 1);
+  return $req;
+}
+
+{
+  my $req = foo_1;
+
+  $req->exact_version(Foo => 1); # ignored
+
+  is_deeply($req->as_string_hash, { Foo => '== 1' }, "exact requirement");
+
+  dies_ok { $req->exact_version(Foo => 2); }
+    qr/unequal/,
+    "can't exactly specify differing versions" ;
+
+  $req = foo_1;
+  $req->add_minimum(Foo => 0); # ignored
+  $req->add_maximum(Foo => 2); # ignored
+
+  dies_ok { $req->add_maximum(Foo => 0); } qr/maximum below/, "max < fixed";
+
+  $req = foo_1;
+  dies_ok { $req->add_minimum(Foo => 2); } qr/minimum above/, "min > fixed";
+
+  $req = foo_1;
+  $req->add_exclusion(Foo => 8); # ignored
+  dies_ok { $req->add_exclusion(Foo => 1); } qr/excluded exact/, "!= && ==";
+}
+
+{
+  my $req = foo_1;
+
+  is($req->requirements_for_module('Foo'), '== 1', 'requirements_for_module');
+
+  # test empty/undef returns
+  my @list = $req->requirements_for_module('FooBarBamBaz');
+  my $scalar = $req->requirements_for_module('FooBarBamBaz');
+  is ( scalar @list, 0, "requirements_for_module() returns empty for not found (list)" );
+  is ( $scalar, undef, "requirements_for_module() returns undef for not found (scalar)" );
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/finalize.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/finalize.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/finalize.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,91 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+{
+  my $req = CPAN::Meta::Requirements->new;
+
+  $req->add_minimum('Foo::Bar' => 10);
+  $req->add_minimum('Foo::Bar' => 0);
+  $req->add_minimum('Foo::Bar' => 2);
+
+  $req->add_minimum('Foo::Baz' => version->declare('v1.2.3'));
+
+  $req->add_minimum('Foo::Undef' => undef);
+
+  my $want = {
+    'Foo::Bar'   => 10,
+    'Foo::Baz'   => 'v1.2.3',
+    'Foo::Undef' => 0,
+  };
+
+  is_deeply(
+    $req->as_string_hash,
+    $want,
+    "some basic minimums",
+  );
+
+  $req->finalize;
+
+  $req->add_minimum('Foo::Bar', 2);
+
+  pass('we can add a Foo::Bar requirement with no effect post finalization');
+
+  dies_ok { $req->add_minimum('Foo::Bar', 12) }
+    qr{finalized req},
+    "can't add a higher Foo::Bar after finalization";
+
+  dies_ok { $req->add_minimum('Foo::New', 0) }
+    qr{finalized req},
+    "can't add a new module prereq after finalization";
+
+  dies_ok { $req->clear_requirement('Foo::Bar') }
+    qr{finalized req},
+    "can't clear an existing prereq after finalization";
+
+  $req->clear_requirement('Bogus::Req');
+
+  pass('we can clear a prereq that was not set to begin with');
+
+  is_deeply(
+    $req->as_string_hash,
+    $want,
+    "none of our attempts to alter the object post-finalization worked",
+  );
+
+  my $cloned = $req->clone;
+
+  $cloned->add_minimum('Foo::Bar', 12);
+
+  is_deeply(
+    $cloned->as_string_hash,
+    {
+      %$want,
+      'Foo::Bar' => 12,
+    },
+    "we can alter a cloned V:R (finalization does not survive cloning)",
+  );
+
+  is_deeply(
+    $req->as_string_hash,
+    $want,
+    "...and original requirements are untouched",
+  );
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/from-hash.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/from-hash.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/from-hash.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+{
+  my $string_hash = {
+    Left   => 10,
+    Shared => '>= 2, <= 9, != 7',
+    Right  => 18,
+  };
+
+  my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
+
+  is_deeply(
+    $req->as_string_hash,
+    $string_hash,
+    "we can load from a string hash",
+  );
+}
+
+{
+  my $string_hash = {
+    Left   => 10,
+    Shared => '= 2',
+    Right  => 18,
+  };
+
+  dies_ok { CPAN::Meta::Requirements->from_string_hash($string_hash) }
+    qr/Can't convert/,
+    "we die when we can't understand a version spec";
+}
+
+{
+  my $string_hash = {
+    Left   => 10,
+    Shared => undef,
+    Right  => 18,
+  };
+
+  my $warning;
+  local $SIG{__WARN__} = sub { $warning = join("\n", at _) };
+
+  my $req = CPAN::Meta::Requirements->from_string_hash($string_hash);
+
+  is(
+    $req->as_string_hash->{Shared}, 0,
+    "undef requirement treated as '0'",
+  );
+
+  like ($warning, qr/Undefined requirement.*treated as '0'/, "undef requirement warns");
+
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/merge.t
===================================================================
--- vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/merge.t	                        (rev 0)
+++ vendor/perl/dist/cpan/CPAN-Meta-Requirements/t/merge.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,136 @@
+use strict;
+use warnings;
+
+use CPAN::Meta::Requirements;
+
+use Test::More 0.88;
+
+sub dies_ok (&@) {
+  my ($code, $qr, $comment) = @_;
+
+  my $lived = eval { $code->(); 1 };
+
+  if ($lived) {
+    fail("$comment: did not die");
+  } else {
+    like($@, $qr, $comment);
+  }
+}
+
+{
+  my $req_1 = CPAN::Meta::Requirements->new;
+  $req_1->add_minimum(Left   => 10);
+  $req_1->add_minimum(Shared => 2);
+  $req_1->add_exclusion(Shared => 7);
+
+  my $req_2 = CPAN::Meta::Requirements->new;
+  $req_2->add_minimum(Shared => 1);
+  $req_2->add_maximum(Shared => 9);
+  $req_2->add_minimum(Right  => 18);
+
+  $req_1->add_requirements($req_2);
+
+  is_deeply(
+    $req_1->as_string_hash,
+    {
+      Left   => 10,
+      Shared => '>= 2, <= 9, != 7',
+      Right  => 18,
+    },
+    "add requirements to an existing set of requirements",
+  );
+}
+
+{
+  my $req_1 = CPAN::Meta::Requirements->new;
+  $req_1->add_minimum(Left   => 10);
+  $req_1->add_minimum(Shared => 2);
+  $req_1->add_exclusion(Shared => 7);
+  $req_1->exact_version(Exact => 8);
+
+  my $req_2 = CPAN::Meta::Requirements->new;
+  $req_2->add_minimum(Shared => 1);
+  $req_2->add_maximum(Shared => 9);
+  $req_2->add_minimum(Right  => 18);
+  $req_2->exact_version(Exact => 8);
+
+  my $clone = $req_1->clone->add_requirements($req_2);
+
+  is_deeply(
+    $req_1->as_string_hash,
+    {
+      Left   => 10,
+      Shared => '>= 2, != 7',
+      Exact  => '== 8',
+    },
+    "clone/add_requirements does not affect lhs",
+  );
+
+  is_deeply(
+    $req_2->as_string_hash,
+    {
+      Shared => '>= 1, <= 9',
+      Right  => 18,
+      Exact  => '== 8',
+    },
+    "clone/add_requirements does not affect rhs",
+  );
+
+  is_deeply(
+    $clone->as_string_hash,
+    {
+      Left   => 10,
+      Shared => '>= 2, <= 9, != 7',
+      Right  => 18,
+      Exact  => '== 8',
+    },
+    "clone and add_requirements",
+  );
+
+  $clone->clear_requirement('Shared');
+
+  is_deeply(
+    $clone->as_string_hash,
+    {
+      Left   => 10,
+      Right  => 18,
+      Exact  => '== 8',
+    },
+    "cleared the shared requirement",
+  );
+}
+
+{
+  my $req_1 = CPAN::Meta::Requirements->new;
+  $req_1->add_maximum(Foo => 1);
+
+  my $req_2 = $req_1->clone;
+
+  is_deeply(
+    $req_2->as_string_hash,
+    {
+      'Foo' => '<= 1',
+    },
+    'clone with only max',
+  );
+}
+
+{
+  my $left = CPAN::Meta::Requirements->new;
+  $left->add_minimum(Foo => 0);
+  $left->add_minimum(Bar => 1);
+
+  my $right = CPAN::Meta::Requirements->new;
+  $right->add_requirements($left);
+
+  is_deeply(
+    $right->as_string_hash,
+    {
+      Foo => 0,
+      Bar => 1,
+    },
+    "we do not lose 0-min reqs on merge",
+  );
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm
===================================================================
--- vendor/perl/dist/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/CPANPLUS/lib/CPANPLUS/Config/HomeEnv.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+package CPANPLUS::Config::HomeEnv;
+use deprecate;
+
+use strict;
+use File::Spec;
+use vars qw($VERSION);
+
+$VERSION = "0.9135";
+
+sub setup {
+  my $conf = shift;
+  $conf->set_conf( base => File::Spec->catdir( $ENV{PERL5_CPANPLUS_HOME}, '.cpanplus' ) )
+	  if $ENV{PERL5_CPANPLUS_HOME};
+  return 1;
+}
+
+qq'Wherever I hang my hat is home';
+
+__END__
+
+=head1 NAME
+
+CPANPLUS::Config::HomeEnv - Set the environment for the CPANPLUS base dir
+
+=head1 SYNOPSIS
+
+  export PERL5_CPANPLUS_HOME=/home/moo/perls/conf/perl-5.8.9/
+
+=head1 DESCRIPTION
+
+CPANPLUS::Config::HomeEnv is a L<CPANPLUS::Config> file that allows the CPANPLUS user to
+specify where L<CPANPLUS> gets its configuration from.
+
+Setting the environment variable C<PERL5_CPANPLUS_HOME> to a path location, determines
+where the C<.cpanplus> directory will be located.
+
+=head1 METHODS
+
+=over
+
+=item C<setup>
+
+Called by L<CPANPLUS::Configure>.
+
+=back
+
+=head1 AUTHOR
+
+Chris C<BinGOs> Williams <chris at bingosnet.co.uk>
+
+Contributions and patience from Jos Boumans the L<CPANPLUS> guy!
+
+=head1 LICENSE
+
+Copyright E<copy> Chris Williams and Jos Boumans.
+
+This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.
+
+=head1 SEE ALSO
+
+L<CPANPLUS>
+
+=cut

Added: vendor/perl/dist/cpan/Config-Perl-V/V.pm
===================================================================
--- vendor/perl/dist/cpan/Config-Perl-V/V.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Config-Perl-V/V.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,509 @@
+#!/pro/bin/perl
+
+package Config::Perl::V;
+
+use strict;
+use warnings;
+
+use Config;
+use Exporter;
+use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
+$VERSION     = "0.17";
+ at ISA         = ("Exporter");
+ at EXPORT_OK   = qw( plv2hash summary myconfig signature );
+%EXPORT_TAGS = (
+    all => [ @EXPORT_OK  ],
+    sig => [ "signature" ],
+    );
+
+#  Characteristics of this binary (from libperl):
+#    Compile-time options: DEBUGGING PERL_DONT_CREATE_GVSV PERL_MALLOC_WRAP
+#                          USE_64_BIT_INT USE_LARGE_FILES USE_PERLIO
+
+# The list are as the perl binary has stored it in PL_bincompat_options
+#  search for it in
+#   perl.c line 1661 S_Internals_V ()
+#   perl.h line 4664 (second block),
+my %BTD = map { $_ => 0 } qw(
+
+    DEBUGGING
+    NO_MATHOMS
+    PERL_DISABLE_PMC
+    PERL_DONT_CREATE_GVSV
+    PERL_IS_MINIPERL
+    PERL_MALLOC_WRAP
+    PERL_MEM_LOG
+    PERL_MEM_LOG_ENV
+    PERL_MEM_LOG_ENV_FD
+    PERL_MEM_LOG_NOIMPL
+    PERL_MEM_LOG_STDERR
+    PERL_MEM_LOG_TIMESTAMP
+    PERL_PRESERVE_IVUV
+    PERL_RELOCATABLE_INCPUSH
+    PERL_USE_DEVEL
+    PERL_USE_SAFE_PUTENV
+    UNLINK_ALL_VERSIONS
+    USE_ATTRIBUTES_FOR_PERLIO
+    USE_FAST_STDIO
+    USE_LOCALE
+    USE_PERL_ATOF
+    USE_SITECUSTOMIZE
+
+    DEBUG_LEAKING_SCALARS
+    DEBUG_LEAKING_SCALARS_FORK_DUMP
+    DECCRTL_SOCKETS
+    FAKE_THREADS
+    FCRYPT
+    HAS_TIMES
+    MULTIPLICITY
+    MYMALLOC
+    PERLIO_LAYERS
+    PERL_DEBUG_READONLY_OPS
+    PERL_GLOBAL_STRUCT
+    PERL_IMPLICIT_CONTEXT
+    PERL_IMPLICIT_SYS
+    PERL_MAD
+    PERL_MICRO
+    PERL_NEED_APPCTX
+    PERL_NEED_TIMESBASE
+    PERL_OLD_COPY_ON_WRITE
+    PERL_NEW_COPY_ON_WRITE
+    PERL_POISON
+    PERL_SAWAMPERSAND
+    PERL_TRACK_MEMPOOL
+    PERL_USES_PL_PIDSTATUS
+    PL_OP_SLAB_ALLOC
+    THREADS_HAVE_PIDS
+    USE_64_BIT_ALL
+    USE_64_BIT_INT
+    USE_IEEE
+    USE_ITHREADS
+    USE_LARGE_FILES
+    USE_LOCALE_COLLATE
+    USE_LOCALE_NUMERIC
+    USE_LONG_DOUBLE
+    USE_PERLIO
+    USE_REENTRANT_API
+    USE_SFIO
+    USE_SOCKS
+    VMS_DO_SOCKETS
+    VMS_SHORTEN_LONG_SYMBOLS
+    VMS_SYMBOL_CASE_AS_IS
+    );
+
+# These are all the keys that are
+# 1. Always present in %Config (first block)
+# 2. Reported by 'perl -V' (the rest)
+my @config_vars = qw(
+
+    api_subversion
+    api_version
+    api_versionstring
+    archlibexp
+    dont_use_nlink
+    d_readlink
+    d_symlink
+    exe_ext
+    inc_version_list
+    ldlibpthname
+    patchlevel
+    path_sep
+    perl_patchlevel
+    privlibexp
+    scriptdir
+    sitearchexp
+    sitelibexp
+    subversion
+    usevendorprefix
+    version
+
+    git_commit_id
+    git_describe
+    git_branch
+    git_uncommitted_changes
+    git_commit_id_title
+    git_snapshot_date
+
+    package revision version_patchlevel_string
+
+    osname osvers archname
+    myuname
+    config_args
+    hint useposix d_sigaction
+    useithreads usemultiplicity
+    useperlio d_sfio uselargefiles usesocks
+    use64bitint use64bitall uselongdouble
+    usemymalloc bincompat5005
+
+    cc ccflags
+    optimize
+    cppflags
+    ccversion gccversion gccosandvers
+    intsize longsize ptrsize doublesize byteorder
+    d_longlong longlongsize d_longdbl longdblsize
+    ivtype ivsize nvtype nvsize lseektype lseeksize
+    alignbytes prototype
+
+    ld ldflags
+    libpth
+    libs
+    perllibs
+    libc so useshrplib libperl
+    gnulibc_version
+
+    dlsrc dlext d_dlsymun ccdlflags
+    cccdlflags lddlflags
+    );
+
+my %empty_build = (
+    osname  => "",
+    stamp   => 0,
+    options => { %BTD },
+    patches => [],
+    );
+
+sub _make_derived
+{
+    my $conf = shift;
+
+    for ( [ lseektype		=> "Off_t"	],
+	  [ myuname		=> "uname"	],
+	  [ perl_patchlevel	=> "patch"	],
+	  ) {
+	my ($official, $derived) = @$_;
+	$conf->{config}{$derived}  ||= $conf->{config}{$official};
+	$conf->{config}{$official} ||= $conf->{config}{$derived};
+	$conf->{derived}{$derived} = delete $conf->{config}{$derived};
+	}
+
+    if (exists $conf->{config}{version_patchlevel_string} &&
+       !exists $conf->{config}{api_version}) {
+	my $vps = $conf->{config}{version_patchlevel_string};
+	$vps =~ s{\b revision   \s+ (\S+) }{}x and
+	    $conf->{config}{revision}        ||= $1;
+
+	$vps =~ s{\b version    \s+ (\S+) }{}x and
+	    $conf->{config}{api_version}     ||= $1;
+	$vps =~ s{\b subversion \s+ (\S+) }{}x and
+	    $conf->{config}{subversion}      ||= $1;
+	$vps =~ s{\b patch      \s+ (\S+) }{}x and
+	    $conf->{config}{perl_patchlevel} ||= $1;
+	}
+
+    ($conf->{config}{version_patchlevel_string} ||= join " ",
+	map  { ($_, $conf->{config}{$_} ) }
+	grep {      $conf->{config}{$_}   }
+	qw( api_version subversion perl_patchlevel )) =~ s/\bperl_//; 
+
+    $conf->{config}{perl_patchlevel}  ||= "";	# 0 is not a valid patchlevel
+
+    if ($conf->{config}{perl_patchlevel} =~ m{^git\w*-([^-]+)}i) {
+	$conf->{config}{git_branch}   ||= $1;
+	$conf->{config}{git_describe} ||= $conf->{config}{perl_patchlevel};
+	}
+
+    $conf;
+    } # _make_derived
+
+sub plv2hash
+{
+    my %config;
+    for (split m/\n+/ => join "\n", @_) {
+
+	if (s/^Summary of my\s+(\S+)\s+\(\s*(.*?)\s*\)//) {
+	    $config{"package"} = $1;
+	    my $rev = $2;
+	    $rev =~ s/^ revision \s+ (\S+) \s*//x and $config{revision} = $1;
+	    $rev and $config{version_patchlevel_string} = $rev;
+	    my ($rel) = $config{package} =~ m{perl(\d)};
+	    my ($vers, $subvers) = $rev =~ m{version\s+(\d+)\s+subversion\s+(\d+)};
+	    defined $vers && defined $subvers && defined $rel and
+		$config{version} = "$rel.$vers.$subvers";
+	    next;
+	    }
+
+	if (s/^\s+(Snapshot of:)\s+(\S+)//) {
+	    $config{git_commit_id_title} = $1;
+	    $config{git_commit_id}       = $2;
+	    next;
+	    }
+
+	my %kv = m/\G,?\s*([^=]+)=('[^']+?'|\S+)/gc;
+
+	while (my ($k, $v) = each %kv) {
+	    $k =~ s/\s+$//;
+	    $v =~ s/,$//;
+	    $v =~ m/^'(.*)'$/ and $v = $1;
+	    $v =~ s/^\s+//;
+	    $v =~ s/\s+$//;
+	    $config{$k} = $v;
+	    }
+	}
+    my $build = { %empty_build };
+    $build->{osname} = $config{osname};
+    return _make_derived ({
+	build		=> $build,
+	environment	=> {},
+	config		=> \%config,
+	derived		=> {},
+	inc		=> [],
+	});
+    } # plv2hash
+
+sub summary
+{
+    my $conf = shift || myconfig ();
+    ref $conf eq "HASH" &&
+	exists $conf->{config} && exists $conf->{build} or return;
+
+    my %info = map {
+	exists $conf->{config}{$_} ? ( $_ => $conf->{config}{$_} ) : () }
+	qw( archname osname osvers revision patchlevel subversion version
+	    cc ccversion gccversion config_args inc_version_list
+	    d_longdbl d_longlong use64bitall use64bitint useithreads
+	    uselongdouble usemultiplicity usemymalloc useperlio useshrplib 
+	    doublesize intsize ivsize nvsize longdblsize longlongsize lseeksize
+	    );
+    $info{$_}++ for grep { $conf->{build}{options}{$_} } keys %{$conf->{build}{options}};
+
+    return \%info;
+    } # summary
+
+sub signature
+{
+    eval { require Digest::MD5 };
+    $@ and return "00000000000000000000000000000000";
+
+    my $conf = shift || summary ();
+    delete $conf->{config_args};
+    return Digest::MD5::md5_hex (join "\xFF" => map {
+	"$_=".(defined $conf->{$_} ? $conf->{$_} : "\xFE");
+	} sort keys %$conf);
+    } # signature
+
+sub myconfig
+{
+    my $args = shift;
+    my %args = ref $args eq "HASH"  ? %$args :
+               ref $args eq "ARRAY" ? @$args : ();
+
+    my $build = { %empty_build };
+
+    # 5.14.0 and later provide all the information without shelling out
+    my $stamp = eval { Config::compile_date () };
+    if (defined $stamp) {
+	$stamp =~ s/^Compiled at //;
+	$build->{osname}      = $^O;
+	$build->{stamp}       = $stamp;
+	$build->{patches}     =     [ Config::local_patches () ];
+	$build->{options}{$_} = 1 for Config::bincompat_options (),
+				      Config::non_bincompat_options ();
+	}
+    else {
+	#y $pv = qx[$^X -e"sub Config::myconfig{};" -V];
+	my $pv = qx[$^X -V];
+	   $pv =~ s{.*?\n\n}{}s;
+	   $pv =~ s{\n(?:  \s+|\t\s*)}{\0}g;
+
+	# print STDERR $pv;
+
+	$pv =~ m{^\s+Built under\s+(.*)}m
+	    and $build->{osname}  = $1;
+	$pv =~ m{^\s+Compiled at\s+(.*)}m
+	    and $build->{stamp}   = $1;
+	$pv =~ m{^\s+Locally applied patches:(?:\s+|\0)(.*)}m
+	    and $build->{patches} = [ split m/\0+/, $1 ];
+	$pv =~ m{^\s+Compile-time options:(?:\s+|\0)(.*)}m
+	    and map { $build->{options}{$_} = 1 } split m/\s+|\0/ => $1;
+	}
+
+    my @KEYS = keys %ENV;
+    my %env  =
+	map {      $_ => $ENV{$_} } grep m/^PERL/      => @KEYS;
+    $args{env} and
+	map { $env{$_} = $ENV{$_} } grep m{$args{env}} => @KEYS;
+
+    my %config = map { $_ => $Config{$_} } @config_vars;
+
+    return _make_derived ({
+	build		=> $build,
+	environment	=> \%env,
+	config		=> \%config,
+	derived		=> {},
+	inc		=> \@INC,
+	});
+    } # myconfig
+
+1;
+
+__END__
+
+=head1 NAME
+
+Config::Perl::V - Structured data retrieval of perl -V output
+
+=head1 SYNOPSIS
+
+ use Config::Perl::V;
+
+ my $local_config = Config::Perl::V::myconfig ();
+ print $local_config->{config}{osname};
+
+=head1 DESCRIPTION
+
+=head2 $conf = myconfig ()
+
+This function will collect the data described in L<the hash structure> below,
+and return that as a hash reference. It optionally accepts an option to
+include more entries from %ENV. See L<environment> below.
+
+Note that this will not work on uninstalled perls when called with
+C<-I/path/to/uninstalled/perl/lib>, but it works when that path is in
+C<$PERL5LIB> or in C<$PERL5OPT>, as paths passed using C<-I> are not
+known when the C<-V> information is collected.
+
+=head2 $conf = plv2hash ($text [, ...])
+
+Convert a sole 'perl -V' text block, or list of lines, to a complete
+myconfig hash.  All unknown entries are defaulted.
+
+=head2 $info = summary ([$conf])
+
+Return an arbitrary selection of the information. If no C<$conf> is
+given, C<myconfig ()> is used instead.
+
+=head2 $md5 = signature ([$conf])
+
+Return the MD5 of the info returned by C<summary ()> without the
+C<config_args> entry.
+
+If C<Digest::MD5> is not available, it return a string with only C<0>'s.
+
+=head2 The hash structure
+
+The returned hash consists of 4 parts:
+
+=over 4
+
+=item build
+
+This information is extracted from the second block that is emitted by
+C<perl -V>, and usually looks something like
+
+ Characteristics of this binary (from libperl):
+   Compile-time options: DEBUGGING USE_64_BIT_INT USE_LARGE_FILES
+   Locally applied patches:
+	 defined-or
+	 MAINT24637
+   Built under linux
+   Compiled at Jun 13 2005 10:44:20
+   @INC:
+     /usr/lib/perl5/5.8.7/i686-linux-64int
+     /usr/lib/perl5/5.8.7
+     /usr/lib/perl5/site_perl/5.8.7/i686-linux-64int
+     /usr/lib/perl5/site_perl/5.8.7
+     /usr/lib/perl5/site_perl
+     .
+
+or
+
+ Characteristics of this binary (from libperl):
+   Compile-time options: DEBUGGING MULTIPLICITY
+			 PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT
+			 PERL_MALLOC_WRAP PERL_TRACK_MEMPOOL
+			 PERL_USE_SAFE_PUTENV USE_ITHREADS
+			 USE_LARGE_FILES USE_PERLIO
+			 USE_REENTRANT_API
+   Built under linux
+   Compiled at Jan 28 2009 15:26:59
+
+This information is not available anywhere else, including C<%Config>,
+but it is the information that is only known to the perl binary.
+
+The extracted information is stored in 5 entries in the C<build> hash:
+
+=over 4
+
+=item osname
+
+This is most likely the same as C<$Config{osname}>, and was the name
+known when perl was built. It might be different if perl was cross-compiled.
+
+The default for this field, if it cannot be extracted, is to copy
+C<$Config{osname}>. The two may be differing in casing (OpenBSD vs openbsd).
+
+=item stamp
+
+This is the time string for which the perl binary was compiled. The default
+value is 0.
+
+=item options
+
+This is a hash with all the known defines as keys. The value is either 0,
+which means unknown or unset, or 1, which means defined.
+
+=item derived
+
+As some variables are reported by a different name in the output of C<perl -V>
+than their actual name in C<%Config>, I decided to leave the C<config> entry
+as close to reality as possible, and put in the entries that might have been
+guessed by the printed output in a separate block.
+
+=item patches
+
+This is a list of optionally locally applied patches. Default is an empty list.
+
+=back
+
+=item environment
+
+By default this hash is only filled with the environment variables
+out of %ENV that start with C<PERL>, but you can pass the C<env> option
+to myconfig to get more
+
+ my $conf = Config::Perl::V::myconfig ({ env => qr/^ORACLE/ });
+ my $conf = Config::Perl::V::myconfig ([ env => qr/^ORACLE/ ]);
+
+=item config
+
+This hash is filled with the variables that C<perl -V> fills its report
+with, and it has the same variables that C<Config::myconfig> returns
+from C<%Config>.
+
+=item inc
+
+This is the list of default @INC.
+
+=back
+
+=head1 REASONING
+
+This module was written to be able to return the configuration for the
+currently used perl as deeply as needed for the CPANTESTERS framework.
+Up until now they used the output of myconfig as a single text blob,
+and so it was missing the vital binary characteristics of the running
+perl and the optional applied patches.
+
+=head1 BUGS
+
+Please feedback what is wrong
+
+=head1 TODO
+
+ * Implement retrieval functions/methods
+ * Documentation
+ * Error checking
+ * Tests
+
+=head1 AUTHOR
+
+H.Merijn Brand <h.m.brand at xs4all.nl>
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (C) 2009-2013 H.Merijn Brand
+
+This library is free software; you can redistribute it and/or modify
+it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Config-Perl-V/t/00_pod.t
===================================================================
--- vendor/perl/dist/cpan/Config-Perl-V/t/00_pod.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Config-Perl-V/t/00_pod.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+use Test::More;
+
+eval "use Test::Pod 1.00";
+plan skip_all => "Test::Pod 1.00 required for testing POD" if $@;
+all_pod_files_ok ();

Added: vendor/perl/dist/cpan/Config-Perl-V/t/01_pod.t
===================================================================
--- vendor/perl/dist/cpan/Config-Perl-V/t/01_pod.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Config-Perl-V/t/01_pod.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,7 @@
+#!/usr/bin/perl
+
+use Test::More;
+
+eval "use Test::Pod::Coverage tests => 1";
+plan skip_all => "Test::Pod::Covarage required for testing POD Coverage" if $@;
+pod_coverage_ok ("Config::Perl::V", "Config::Perl::V is covered");

Added: vendor/perl/dist/cpan/Config-Perl-V/t/10_base.t
===================================================================
--- vendor/perl/dist/cpan/Config-Perl-V/t/10_base.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Config-Perl-V/t/10_base.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+#!/pro/bin/perl
+
+use strict;
+use warnings;
+
+BEGIN {
+    use Test::More;
+    my $tests = 9;
+    unless ($ENV{PERL_CORE}) {
+	require Test::NoWarnings;
+	Test::NoWarnings->import ();
+	$tests++;
+	}
+
+    plan tests => $tests;
+
+    use_ok ("Config::Perl::V");
+    }
+
+ok (my $conf = Config::Perl::V::myconfig,	"Read config");
+for (qw( build environment config inc )) {
+    ok (exists $conf->{build},			"Has build entry");
+    }
+is (lc $conf->{build}{osname}, lc $conf->{config}{osname}, "osname");
+
+SKIP: {
+    # Test that the code that shells out to perl -V and parses the output
+    # gives the same results as the code that calls Config::* routines directly.
+    defined &Config::compile_date or
+	skip "This perl doesn't provide perl -V in the Config module", 2;
+    eval q{no warnings "redefine"; sub Config::compile_date { return undef }};
+    is (Config::compile_date (), undef, "Successfully overriden compile_date");
+    is_deeply (Config::Perl::V::myconfig, $conf,
+	"perl -V parsing code produces same result as the Config module");
+    }

Added: vendor/perl/dist/cpan/Config-Perl-V/t/20_plv.t
===================================================================
--- vendor/perl/dist/cpan/Config-Perl-V/t/20_plv.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Config-Perl-V/t/20_plv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,57 @@
+#!/pro/bin/perl
+
+use strict;
+use warnings;
+
+BEGIN {
+    use Test::More;
+    my $tests = 8;
+    unless ($ENV{PERL_CORE}) {
+	require Test::NoWarnings;
+	Test::NoWarnings->import ();
+	$tests++;
+	}
+
+    plan tests => $tests;
+    }
+
+use Config::Perl::V;
+
+ok (my $conf = Config::Perl::V::plv2hash (<DATA>), "Read perl -v block");
+for (qw( build environment config inc )) {
+    ok (exists $conf->{build},			"Has build entry");
+    }
+is ($conf->{build}{osname}, $conf->{config}{osname}, "osname");
+is ($conf->{build}{stamp}, 0, "No build time known");
+is ($conf->{config}{version}, "5.10.0", "reconstructed \%Config{version}");
+
+__END__
+Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
+  Platform:
+    osname=linux, osvers=2.6.22.13-0.3-default, archname=i686-linux-64int
+    uname='linux nb09 2.6.22.13-0.3-default #1 smp 20071119 15:02:58 utc i686 i686 i386 gnulinux '
+    config_args='-Duse64bitint -des'
+    hint=recommended, useposix=true, d_sigaction=define
+    useithreads=undef, usemultiplicity=undef
+    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
+    use64bitint=define, use64bitall=undef, uselongdouble=undef
+    usemymalloc=n, bincompat5005=undef
+  Compiler:
+    cc='cc', ccflags ='-fno-strict-aliasing -pipe -I/pro/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
+    optimize='-O2 -g',
+    cppflags='-fno-strict-aliasing -pipe -I/pro/local/include'
+    ccversion='', gccversion='4.2.1 (SUSE Linux)', gccosandvers=''
+    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
+    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
+    ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
+    alignbytes=4, prototype=define
+  Linker and Libraries:
+    ld='cc', ldflags ='-L/pro/local/lib'
+    libpth=/pro/local/lib /lib /usr/lib /usr/local/lib
+    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
+    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
+    libc=/lib/libc-2.6.1.so, so=so, useshrplib=false, libperl=libperl.a
+    gnulibc_version='2.6.1'
+  Dynamic Linking:
+    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
+    cccdlflags='-fPIC', lddlflags='-shared -O2 -L/pro/local/lib'

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5008009
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5008009	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5008009	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.008009

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5010001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5010001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5010001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+5.010001
+HeUTF8                         # U
+croak_xs_usage                 # U
+mPUSHs                         # U
+mXPUSHs                        # U
+mro_get_from_name              # U
+mro_get_private_data           # U
+mro_register                   # U
+mro_set_mro                    # U
+mro_set_private_data           # U
+newSVpvn_flags                 # U
+newSVpvn_utf8                  # U
+newSVpvs_flags                 # U
+save_hints                     # U
+save_padsv_and_mortalize       # U
+save_pushi32ptr                # U
+save_pushptr                   # U
+save_pushptrptr                # U
+sv_insert_flags                # U
+DEFSV_set                      # added by devel/scanprov

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.011001
+ck_warner                      # U
+ck_warner_d                    # U
+is_utf8_perl_space             # U
+is_utf8_perl_word              # U
+is_utf8_posix_digit            # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+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
+pad_findmy                     # E (Perl_pad_findmy)

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.011003

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011004
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011004	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011004	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.011004
+prescan_version                # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011005
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011005	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5011005	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.011005
+sv_pos_u2b_flags               # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012000

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012001

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012002

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5012003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012003

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013000

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.013001
+croak_sv                       # U
+die_sv                         # U
+mess_sv                        # U
+sv_2nv_flags                   # U
+warn_sv                        # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
+5.013002
+SvNV_nomg                      # U
+find_rundefsv                  # U
+foldEQ                         # U
+foldEQ_locale                  # U
+foldEQ_utf8                    # U
+hv_fill                        # U
+sv_dec_nomg                    # U
+sv_inc_nomg                    # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+5.013003
+blockhook_register             # E
+croak_no_modify                # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013004
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013004	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013004	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.013004
+XS_APIVERSION_BOOTCHECK        # E

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013005
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013005	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013005	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.013005
+PL_rpeepp                      # E
+caller_cx                      # U
+isOCTAL                        # U
+lex_stuff_pvs                  # U
+parse_fullstmt                 # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013006
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013006	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013006	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,33 @@
+5.013006
+LINKLIST                       # U
+SvTRUE_nomg                    # U
+ck_entersub_args_list          # U
+ck_entersub_args_proto         # U
+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
+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
+sv_2bool_flags                 # U
+sv_catpv_flags                 # U
+sv_catpv_nomg                  # U
+sv_catpvs_flags                # U
+sv_catpvs_mg                   # U
+sv_catpvs_nomg                 # U
+sv_cmp_flags                   # U
+sv_cmp_locale_flags            # U
+sv_collxfrm_flags              # U
+sv_eq_flags                    # U
+sv_setpvs_mg                   # U
+sv_setref_pvs                  # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013007
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013007	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013007	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+5.013007
+HvENAME                        # U
+OP_CLASS                       # U
+SvPV_nomg_nolen                # U
+XopFLAGS                       # E
+amagic_deref_call              # U
+bytes_cmp_utf8                 # U
+cop_hints_2hv                  # A
+cop_hints_fetch_pv             # U
+cop_hints_fetch_pvn            # U
+cop_hints_fetch_pvs            # U
+cop_hints_fetch_sv             # U
+cophh_2hv                      # E
+cophh_copy                     # E
+cophh_delete_pv                # E
+cophh_delete_pvn               # E
+cophh_delete_pvs               # E
+cophh_delete_sv                # E
+cophh_fetch_pv                 # E
+cophh_fetch_pvn                # E
+cophh_fetch_pvs                # E
+cophh_fetch_sv                 # E
+cophh_free                     # E
+cophh_store_pv                 # E
+cophh_store_pvn                # E
+cophh_store_pvs                # E
+cophh_store_sv                 # E
+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

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013008
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013008	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013008	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8 @@
+5.013008
+foldEQ_latin1                  # U
+mg_findext                     # U
+parse_arithexpr                # U
+parse_fullexpr                 # U
+parse_listexpr                 # U
+parse_termexpr                 # U
+sv_unmagicext                  # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013009
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013009	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013009	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013009

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013010
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013010	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013010	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,4 @@
+5.013010
+foldEQ_utf8_flags              # U
+is_utf8_xidcont                # U
+is_utf8_xidfirst               # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013011
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013011	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5013011	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013011

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/base/5014000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/base/5014000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/base/5014000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+5.014000
+BhkDISABLE                     # E
+BhkENABLE                      # E
+BhkENTRY_set                   # E
+MULTICALL                      # E
+PERL_SYS_TERM                  # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+XopDISABLE                     # E
+XopENABLE                      # E
+XopENTRY                       # E
+XopENTRY_set                   # E
+cophh_new_empty                # E
+my_lstat                       # U (Perl_my_lstat)
+my_stat                        # U (Perl_my_stat)
+ref                            # U (Perl_ref)
+stashpv_hvname_match           # U
+sv_magic_portable              # U
+PERL_BCDVERSION                # added by devel/scanprov
+PERL_MAGIC_glob                # added by devel/scanprov
+PERL_MAGIC_mutex               # added by devel/scanprov
+PL_bufend                      # added by devel/scanprov
+PL_bufptr                      # added by devel/scanprov
+PL_copline                     # added by devel/scanprov
+PL_error_count                 # added by devel/scanprov
+PL_expect                      # added by devel/scanprov
+PL_in_my                       # added by devel/scanprov
+PL_in_my_stash                 # added by devel/scanprov
+PL_lex_state                   # added by devel/scanprov
+PL_lex_stuff                   # added by devel/scanprov
+PL_linestr                     # added by devel/scanprov
+PL_rsfp                        # added by devel/scanprov
+PL_rsfp_filters                # added by devel/scanprov
+PL_tokenbuf                    # added by devel/scanprov
+WARN_ASSERTIONS                # added by devel/scanprov
+aTHXR                          # added by devel/scanprov
+aTHXR_                         # added by devel/scanprov
+dTHXR                          # added by devel/scanprov

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5008009
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5008009	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5008009	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.008009

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5010001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5010001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5010001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+5.010001
+HeUTF8                         # U
+croak_xs_usage                 # U
+mro_get_from_name              # U
+mro_get_private_data           # U
+mro_register                   # U
+mro_set_mro                    # U
+mro_set_private_data           # U
+save_hints                     # U
+save_padsv_and_mortalize       # U
+save_pushi32ptr                # U
+save_pushptr                   # U
+save_pushptrptr                # U
+sv_insert_flags                # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.011001
+ck_warner                      # U
+ck_warner_d                    # U
+is_utf8_perl_space             # U
+is_utf8_perl_word              # U
+is_utf8_posix_digit            # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+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
+pad_findmy                     # E (Perl_pad_findmy)

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.011003

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011004
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011004	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011004	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.011004
+prescan_version                # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011005
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011005	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5011005	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.011005
+sv_pos_u2b_flags               # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012000

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012001

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012002

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5012003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.012003

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013000

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013001
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013001	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013001	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.013001
+croak_sv                       # U
+die_sv                         # U
+mess_sv                        # U
+sv_2nv_flags                   # U
+warn_sv                        # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013002
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013002	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013002	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
+5.013002
+SvNV_nomg                      # U
+find_rundefsv                  # U
+foldEQ                         # U
+foldEQ_locale                  # U
+foldEQ_utf8                    # U
+hv_fill                        # U
+sv_dec_nomg                    # U
+sv_inc_nomg                    # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013003
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013003	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013003	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+5.013003
+blockhook_register             # E
+croak_no_modify                # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013004
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013004	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013004	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+5.013004
+XS_APIVERSION_BOOTCHECK        # E

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013005
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013005	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013005	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+5.013005
+PL_rpeepp                      # E
+caller_cx                      # U
+isOCTAL                        # U
+lex_stuff_pvs                  # U
+parse_fullstmt                 # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013006
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013006	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013006	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,33 @@
+5.013006
+LINKLIST                       # U
+SvTRUE_nomg                    # U
+ck_entersub_args_list          # U
+ck_entersub_args_proto         # U
+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
+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
+sv_2bool_flags                 # U
+sv_catpv_flags                 # U
+sv_catpv_nomg                  # U
+sv_catpvs_flags                # U
+sv_catpvs_mg                   # U
+sv_catpvs_nomg                 # U
+sv_cmp_flags                   # U
+sv_cmp_locale_flags            # U
+sv_collxfrm_flags              # U
+sv_eq_flags                    # U
+sv_setpvs_mg                   # U
+sv_setref_pvs                  # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013007
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013007	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013007	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+5.013007
+HvENAME                        # U
+OP_CLASS                       # U
+SvPV_nomg_nolen                # U
+XopFLAGS                       # E
+amagic_deref_call              # U
+bytes_cmp_utf8                 # U
+cop_hints_2hv                  # A
+cop_hints_fetch_pv             # U
+cop_hints_fetch_pvn            # U
+cop_hints_fetch_pvs            # U
+cop_hints_fetch_sv             # U
+cophh_2hv                      # E
+cophh_copy                     # E
+cophh_delete_pv                # E
+cophh_delete_pvn               # E
+cophh_delete_pvs               # E
+cophh_delete_sv                # E
+cophh_fetch_pv                 # E
+cophh_fetch_pvn                # E
+cophh_fetch_pvs                # E
+cophh_fetch_sv                 # E
+cophh_free                     # E
+cophh_store_pv                 # E
+cophh_store_pvn                # E
+cophh_store_pvs                # E
+cophh_store_sv                 # E
+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

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013008
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013008	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013008	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8 @@
+5.013008
+foldEQ_latin1                  # U
+mg_findext                     # U
+parse_arithexpr                # U
+parse_fullexpr                 # U
+parse_listexpr                 # U
+parse_termexpr                 # U
+sv_unmagicext                  # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013009
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013009	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013009	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013009

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013010
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013010	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013010	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,4 @@
+5.013010
+foldEQ_utf8_flags              # U
+is_utf8_xidcont                # U
+is_utf8_xidfirst               # U

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013011
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013011	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5013011	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+5.013011

Added: vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5014000
===================================================================
--- vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5014000	                        (rev 0)
+++ vendor/perl/dist/cpan/Devel-PPPort/parts/todo/5014000	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+5.014000
+BhkDISABLE                     # E
+BhkENABLE                      # E
+BhkENTRY_set                   # E
+MULTICALL                      # E
+PERL_SYS_TERM                  # E
+POP_MULTICALL                  # E
+PUSH_MULTICALL                 # E
+XopDISABLE                     # E
+XopENABLE                      # E
+XopENTRY                       # E
+XopENTRY_set                   # E
+cophh_new_empty                # E
+my_lstat                       # U (Perl_my_lstat)
+my_stat                        # U (Perl_my_stat)
+ref                            # U (Perl_ref)
+stashpv_hvname_match           # U

Added: vendor/perl/dist/cpan/Digest/t/lib/Digest/Dummy.pm
===================================================================
--- vendor/perl/dist/cpan/Digest/t/lib/Digest/Dummy.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Digest/t/lib/Digest/Dummy.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+package Digest::Dummy;
+
+use strict;
+use vars qw($VERSION @ISA);
+$VERSION = 1;
+
+require Digest::base;
+ at ISA = qw(Digest::base);
+
+sub new {
+    my $class = shift;
+    my $d = shift || "ooo";
+    bless { d => $d }, $class;
+}
+
+sub add {}
+sub digest { shift->{d} }
+
+1;
+

Added: vendor/perl/dist/cpan/Digest/t/security.t
===================================================================
--- vendor/perl/dist/cpan/Digest/t/security.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Digest/t/security.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#!/usr/bin/env perl
+
+# Digest->new() had an exploitable eval
+
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+use Digest;
+
+$LOL::PWNED = 0;
+eval { Digest->new(q[MD;5;$LOL::PWNED = 42]) };
+is $LOL::PWNED, 0;

Added: vendor/perl/dist/cpan/Digest-SHA/t/unicode.t
===================================================================
--- vendor/perl/dist/cpan/Digest-SHA/t/unicode.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Digest-SHA/t/unicode.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
+use strict;
+
+my $MODULE;
+
+BEGIN {
+	$MODULE = (-d "src") ? "Digest::SHA" : "Digest::SHA::PurePerl";
+	eval "require $MODULE" || die $@;
+	$MODULE->import(qw(sha1_hex));
+}
+
+BEGIN {
+	if ($ENV{PERL_CORE}) {
+		chdir 't' if -d 't';
+		@INC = '../lib';
+	}
+}
+
+my $skip = $] < 5.006 ? 1 : 0;
+
+my $TEMPLATE = $] >= 5.006 ? 'U*' : 'C*';
+my $empty_unicode = pack($TEMPLATE, ());
+my $ok_unicode    = pack($TEMPLATE, (0..255));
+my $wide_unicode  = pack($TEMPLATE, (0..256));
+
+print "1..3\n";
+
+unless ($skip) {
+	print "not " unless sha1_hex($empty_unicode."abc") eq
+		"a9993e364706816aba3e25717850c26c9cd0d89d";
+}
+print "ok 1", $skip ? " # skip: no Unicode" : "", "\n";
+
+unless ($skip) {
+	print "not " unless sha1_hex($ok_unicode) eq
+		"4916d6bdb7f78e6803698cab32d1586ea457dfc8";
+}
+print "ok 2", $skip ? " # skip: no Unicode" : "", "\n";
+
+unless ($skip) {
+	eval { sha1_hex($wide_unicode) };
+	print "not " unless $@ =~ /Wide character/;
+}
+print "ok 3", $skip ? " # skip: no Unicode" : "", "\n";

Added: vendor/perl/dist/cpan/Encode/META.json
===================================================================
--- vendor/perl/dist/cpan/Encode/META.json	                        (rev 0)
+++ vendor/perl/dist/cpan/Encode/META.json	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,39 @@
+{
+   "abstract" : "unknown",
+   "author" : [
+      "unknown"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.64, CPAN::Meta::Converter version 2.120921",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "Encode",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "configure" : {
+         "requires" : {
+            "ExtUtils::MakeMaker" : "0"
+         }
+      },
+      "runtime" : {
+         "requires" : {}
+      }
+   },
+   "release_status" : "stable",
+   "version" : "2.49"
+}

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/README.packaging
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/README.packaging	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/README.packaging	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+If you wish to package MakeMaker in a binary package, here's some tips.
+
+tl;dr version:
+
+1a) Set the BUILDING_AS_PACKAGE environment variable to a true value.
+OR
+1b) Set the $BUILDING_AS_PACKAGE variable in the Makefile.PL to true.
+2)  Package normally, but watch out for dependency loops.
+
+MakeMaker cannot have any dependencies, everything depends on it and
+that would be a dependency loop.  It instead bundles pre-built copies
+of all its non-core dependencies in the bundled/ directory.  It adds
+them to itself if they're not already installed.
+
+This can confuse packagers, it makes it look like MakeMaker contains a
+lot more modules than it really does and causes conflicts.
+
+You can tell MakeMaker not to use it's bundles and instead declare the
+dependencies normally.  This is done either by setting the
+BUILDING_AS_PACKAGE environment variable to true or by patching the
+Makefile.PL and setting $BUILDING_AS_PACKAGE to true.  On the down
+side, there will be dependency loops which your packaging system will
+have to resolve.

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/01perl_bugs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,25 @@
+#!/usr/bin/env perl -w
+
+# Inform the user early and clearly that their Perl is broken beyond redemption
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+
+use Test::More;
+
+note "The 0.01 / Gconvert bug"; {
+    my $number = 0.01;
+    my $string = "VERSION=$number";
+
+    is "VERSION=$number", "VERSION=0.01" or do {
+        diag <<END;
+Sorry, but your perl's ability to translate decimal numbers to strings
+is broken.  You should probably recompile it with -Dd_Gconvert=sprintf
+or upgrade to a newer version of Perl.
+END
+    };
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.json
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.json	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.json	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,60 @@
+{
+   "abstract" : "Create a module Makefile",
+   "author" : [
+      "Michael G Schwern <schwern at pobox.com>"
+   ],
+   "dynamic_config" : 1,
+   "generated_by" : "ExtUtils::MakeMaker version 6.5707, CPAN::Meta::Converter version 2.110580",
+   "license" : [
+      "perl_5"
+   ],
+   "meta-spec" : {
+      "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
+      "version" : "2"
+   },
+   "name" : "ExtUtils-MakeMaker",
+   "no_index" : {
+      "directory" : [
+         "t",
+         "inc"
+      ],
+      "package" : [
+         "DynaLoader",
+         "in"
+      ]
+   },
+   "prereqs" : {
+      "build" : {
+         "requires" : {
+            "Data::Dumper" : 0
+         }
+      },
+      "configure" : {
+         "requires" : {}
+      },
+      "runtime" : {
+         "requires" : {
+            "DirHandle" : 0,
+            "File::Basename" : 0,
+            "File::Spec" : "0.8",
+            "Pod::Man" : 0,
+            "perl" : "5.006"
+         }
+      }
+   },
+   "release_status" : "testing",
+   "resources" : {
+      "bugtracker" : {
+         "web" : "http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker"
+      },
+      "homepage" : "http://makemaker.org",
+      "license" : [
+         "http://dev.perl.org/licenses/"
+      ],
+      "repository" : {
+         "url" : "http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker"
+      },
+      "x_MailingList" : "makemaker at perl.org"
+   },
+   "version" : "6.57_07"
+}

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.yml
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.yml	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing.yml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+---
+abstract: 'Create a module Makefile'
+author:
+  - 'Michael G Schwern <schwern at pobox.com>'
+build_requires:
+  Data::Dumper: 0
+configure_requires: {}
+dynamic_config: 1
+generated_by: 'ExtUtils::MakeMaker version 6.5707, CPAN::Meta::Converter version 2.110580'
+license: perl
+meta-spec:
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
+name: ExtUtils-MakeMaker
+no_index:
+  directory:
+    - t
+    - inc
+  package:
+    - DynaLoader
+    - in
+requires:
+  DirHandle: 0
+  File::Basename: 0
+  File::Spec: 0.8
+  Pod::Man: 0
+  perl: 5.006
+resources:
+  bugtracker: http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExtUtils-MakeMaker
+  homepage: http://makemaker.org
+  license: http://dev.perl.org/licenses/
+  repository: http://github.com/Perl-Toolchain-Gang/ExtUtils-MakeMaker
+  x_MailingList: makemaker at perl.org
+version: 6.57_07

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/META_for_testing_tricky_version.yml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+--- #YAML:1.0
+name:               GD-Barcode-Code93
+version:            1.4
+abstract:           Code 93 implementation of GD::Barcode family
+author:
+    - Chris DiMartino
+license:            unknown
+distribution_type:  module
+configure_requires:
+    ExtUtils::MakeMaker:  0
+build_requires:
+    ExtUtils::MakeMaker:  0
+requires:
+    GD:           0
+    GD::Barcode:  0
+no_index:
+    directory:
+        - t
+        - inc
+generated_by:       ExtUtils::MakeMaker version 6.55_02
+meta-spec:
+    url:      http://module-build.sourceforge.net/META-spec-v1.4.html
+    version:  1.4

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/echo.t
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/echo.t	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/echo.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,114 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+    unshift @INC, 't/lib';
+}
+
+use strict;
+use warnings;
+
+use Carp;
+use Config;
+use ExtUtils::MM;
+use MakeMaker::Test::Utils;
+use File::Temp;
+use Cwd 'abs_path';
+
+use Test::More;
+
+
+#--------------------- Setup
+
+my $cwd  = abs_path;
+my $perl = which_perl;
+my $make = make_run();
+my $mm = bless { NAME => "Foo", MAKE => $Config{make}, PARENT_NAME => '' }, "MM";
+$mm->init_INST;   # *PERLRUN needs INIT_*
+$mm->init_PERL;   # generic ECHO needs ABSPERLRUN
+$mm->init_tools;  # need ECHO
+
+# Run Perl with the currently installing MakeMaker
+$mm->{$_} .= q[ "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"] for qw( PERLRUN FULLPERLRUN ABSPERLRUN );
+
+#------------------- Testing functions
+
+sub test_for_echo {
+    my($calls, $want, $name) = @_;
+    my $output_file = $calls->[0][1];
+
+    note "Testing $name";
+
+    my $dir = File::Temp->newdir();
+    chdir $dir;
+    note "Temp dir: $dir";
+
+    # Write a Makefile to test the output of echo
+    {
+        open my $makefh, ">", "Makefile" or croak "Can't open Makefile: $!";
+        print $makefh "FOO=42\n";       # a variable to test with
+
+        for my $key (qw(INST_ARCHLIB INST_LIB PERL ABSPERL ABSPERLRUN ECHO)) {
+            print $makefh "$key=$mm->{$key}\n";
+        }
+
+        print $makefh "all :\n";
+        for my $args (@$calls) {
+            print $makefh map { "\t$_\n" } $mm->echo(@$args);
+        }
+    }
+
+    # Run the Makefile
+    ok run($make), "make: $name";
+
+    # Check it made the file in question
+    ok -e $output_file, "$output_file exists";
+    open my $fh, "<", $output_file or croak "Can't open $output_file: $!";
+    is join("", <$fh>), $want, "contents";
+
+    chdir $cwd;
+}
+
+
+#---------------- Tests begin
+
+test_for_echo(
+    [["Foo", "bar.txt"]],
+    "Foo\n",
+    "simple echo"
+);
+
+test_for_echo(
+    [["Foo\nBar\nBaz Biff\n", "something.txt"]],
+    "Foo\nBar\nBaz Biff\n",
+    "multiline echo"
+);
+
+test_for_echo(
+    [['$something$', "something.txt"]],
+    '$something$'."\n",
+    "dollar signs escaped"
+);
+
+test_for_echo(
+    [['$(something)', "something.txt"]],
+    '$(something)'."\n",
+    "variables escaped"
+);
+
+test_for_echo(
+    [['Answer: $(FOO)', "bar.txt", { allow_variables => 1 }]],
+    "Answer: 42\n",
+    "allow_variables"
+);
+
+test_for_echo(
+    [
+        ["Foo", "bar.txt"],
+        ["Bar", "bar.txt", { append => 1 }],
+        ["Baz", "bar.txt", 1],
+    ],
+    "Foo\nBar\nBaz\n",
+    "append"
+);
+
+done_testing;

Added: vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/meta_convert.t
===================================================================
--- vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/meta_convert.t	                        (rev 0)
+++ vendor/perl/dist/cpan/ExtUtils-MakeMaker/t/meta_convert.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,127 @@
+BEGIN {
+    chdir '..' if -d '../t';
+    unshift @INC, 't/lib';
+    use lib 'lib';
+}
+
+use strict;
+use warnings;
+use Test::More 'no_plan';
+
+require ExtUtils::MM_Any;
+
+sub ExtUtils::MM_Any::quote_literal { $_[1] }
+
+my $new_mm = sub {
+    return bless { ARGS => {@_}, @_ }, 'ExtUtils::MM_Any';
+};
+
+my $warn_ok = sub {
+    my($code, $want, $name) = @_;
+
+    my @have;
+    my $ret;
+    {
+        local $SIG{__WARN__} = sub { push @have, @_ };
+        $ret = $code->();
+    }
+
+    like join("", @have), $want, $name;
+    return $ret;
+};
+
+my $version_regex = qr/version: ''/;
+my $version_action = "they're converted to empty string";
+
+
+note "Filename as version"; {
+    my $mm = $new_mm->(
+        DISTNAME => 'Net::FTP::Recursive',
+        VERSION  => 'Recursive.pm',
+    );
+
+    my $res = $warn_ok->(
+        sub { eval { $mm->metafile_target } },
+        qr{Can't parse version 'Recursive.pm'}
+    );
+    ok $res, 'we know how to deal with bogus versions defined in Makefile.PL';
+    like $res, $version_regex, $version_action;
+}
+
+
+note "'undef' version from parse_version"; {
+    my $mm = $new_mm->(
+        DISTNAME => 'Image::Imgur',
+        VERSION  => 'undef',
+    );
+    my $res = $warn_ok->(
+        sub { eval { $mm->metafile_target } },
+        qr{Can't parse version 'undef'}
+    );
+    ok $res, q|when there's no $VERSION in Module.pm, $self->{VERSION} = 'undef'; via MM_Unix::parse_version and we know how to deal with that|;
+    like $res, $version_regex, $version_action;
+}
+
+
+note "x.y.z version"; {
+    my $mm = $new_mm->(
+        DISTNAME => 'SQL::Library',
+        VERSION  => 0.0.3,
+    );
+
+    # It would be more useful if the warning got translated to visible characters
+    my $res = $warn_ok->(
+        sub { eval { $mm->metafile_target } },
+        qr{Can't parse version '\x00\x00\x03'}
+    );
+    ok $res, q|we know how to deal with our $VERSION = 0.0.3; style versions defined in the module|;
+    like $res, $version_regex, $version_action;
+}
+
+
+note ".5 version"; {
+    my $mm = $new_mm->(
+        DISTNAME => 'Array::Suffix',
+        VERSION  => '.5',
+    );
+    my $res = $warn_ok->(
+        sub { eval { $mm->metafile_target } },
+        qr{Can't parse version '.5'}
+    );
+    ok $res, q|we know how to deal with our $VERSION = '.5'; style versions defined in the module|;
+    like $res, $version_regex, $version_action;
+}
+
+
+note "Non-camel case metadata"; {
+    my $mm = $new_mm->(
+        DISTNAME   => 'Attribute::Signature',
+        META_MERGE => {
+            resources => {
+                repository         => 'http://github.com/chorny/Attribute-Signature',
+                'Repository-clone' => 'git://github.com/chorny/Attribute-Signature.git',
+            },
+        },
+    );
+    my $res = eval { $mm->metafile_target };
+    ok $res, q|we know how to deal with non-camel-cased custom meta resource keys defined in Makefile.PL|;
+    like $res, qr/x_Repositoryclone:/, "they're camel-cased";
+}
+
+
+note "version object in provides"; {
+    my $mm = $new_mm->(
+        DISTNAME   => 'CPAN::Testers::ParseReport',
+        VERSION    => '2.34',
+        META_ADD => {
+            provides => {
+                "CPAN::Testers::ParseReport" => {
+                    version => version->declare("v1.2.3"),
+                    file    => "lib/CPAN/Testers/ParseReport.pm"
+                }
+            }
+        },
+    );
+    my $res = eval { $mm->metafile_target };
+    like $res, qr{version: \s* v1.2.3}x;
+}

Added: vendor/perl/dist/cpan/File-CheckTree/lib/File/CheckTree.pm
===================================================================
--- vendor/perl/dist/cpan/File-CheckTree/lib/File/CheckTree.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/File-CheckTree/lib/File/CheckTree.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,240 @@
+package File::CheckTree;
+
+use 5.006;
+use Cwd;
+use Exporter;
+use File::Spec;
+use warnings;
+use strict;
+
+use if $] > 5.017, 'deprecate';
+
+our $VERSION = '4.42';
+our @ISA     = qw(Exporter);
+our @EXPORT  = qw(validate);
+
+=head1 NAME
+
+File::CheckTree - run many filetest checks on a tree
+
+=head1 SYNOPSIS
+
+    use File::CheckTree;
+
+    $num_warnings = validate( q{
+        /vmunix                 -e || die
+        /boot                   -e || die
+        /bin                    cd
+            csh                 -ex
+            csh                 !-ug
+            sh                  -ex
+            sh                  !-ug
+        /usr                    -d || warn "What happened to $file?\n"
+    });
+
+=head1 DESCRIPTION
+
+The validate() routine takes a single multiline string consisting of
+directives, each containing a filename plus a file test to try on it.
+(The file test may also be a "cd", causing subsequent relative filenames
+to be interpreted relative to that directory.)  After the file test
+you may put C<|| die> to make it a fatal error if the file test fails.
+The default is C<|| warn>.  The file test may optionally have a "!' prepended
+to test for the opposite condition.  If you do a cd and then list some
+relative filenames, you may want to indent them slightly for readability.
+If you supply your own die() or warn() message, you can use $file to
+interpolate the filename.
+
+Filetests may be bunched:  "-rwx" tests for all of C<-r>, C<-w>, and C<-x>.
+Only the first failed test of the bunch will produce a warning.
+
+The routine returns the number of warnings issued.
+
+=head1 AUTHOR
+
+File::CheckTree was derived from lib/validate.pl which was
+written by Larry Wall.
+Revised by Paul Grassie <F<grassie at perl.com>> in 2002.
+
+=head1 HISTORY
+
+File::CheckTree used to not display fatal error messages.
+It used to count only those warnings produced by a generic C<|| warn>
+(and not those in which the user supplied the message).  In addition,
+the validate() routine would leave the user program in whatever
+directory was last entered through the use of "cd" directives.
+These bugs were fixed during the development of perl 5.8.
+The first fixed version of File::CheckTree was 4.2.
+
+=cut
+
+my $Warnings;
+
+sub validate {
+    my ($starting_dir, $file, $test, $cwd, $oldwarnings);
+
+    $starting_dir = cwd;
+
+    $cwd = "";
+    $Warnings = 0;
+
+    foreach my $check (split /\n/, $_[0]) {
+        my ($testlist, @testlist);
+
+        # skip blanks/comments
+        next if $check =~ /^\s*#/ || $check =~ /^\s*$/;
+
+        # Todo:
+        # should probably check for invalid directives and die
+        # but earlier versions of File::CheckTree did not do this either
+
+        # split a line like "/foo -r || die"
+        # so that $file is "/foo", $test is "-r || die"
+        # (making special allowance for quoted filenames).
+        if ($check =~ m/^\s*"([^"]+)"\s+(.*?)\s*$/ or
+            $check =~ m/^\s*'([^']+)'\s+(.*?)\s*$/ or
+            $check =~ m/^\s*(\S+?)\s+(\S.*?)\s*$/)
+        {
+            ($file, $test) = ($1,$2);
+        }
+        else {
+            die "Malformed line: '$check'";
+        };
+
+        # change a $test like "!-ug || die" to "!-Z || die",
+        # capturing the bundled tests (e.g. "ug") in $2
+        if ($test =~ s/ ^ (!?-) (\w{2,}) \b /$1Z/x) {
+            $testlist = $2;
+            # split bundled tests, e.g. "ug" to 'u', 'g'
+            @testlist = split(//, $testlist);
+        }
+        else {
+            # put in placeholder Z for stand-alone test
+            @testlist = ('Z');
+        }
+
+        # will compare these two later to stop on 1st warning w/in a bundle
+        $oldwarnings = $Warnings;
+
+        foreach my $one (@testlist) {
+            # examples of $test: "!-Z || die" or "-w || warn"
+            my $this = $test;
+
+            # expand relative $file to full pathname if preceded by cd directive
+            $file = File::Spec->catfile($cwd, $file)
+                    if $cwd && !File::Spec->file_name_is_absolute($file);
+
+            # put filename in after the test operator
+            $this =~ s/(-\w\b)/$1 "\$file"/g;
+
+            # change the "-Z" representing a bundle with the $one test
+            $this =~ s/-Z/-$one/;
+
+            # if it's a "cd" directive...
+            if ($this =~ /^cd\b/) {
+                # add "|| die ..."
+                $this .= ' || die "cannot cd to $file\n"';
+                # expand "cd" directive with directory name
+                $this =~ s/\bcd\b/chdir(\$cwd = '$file')/;
+            }
+            else {
+                # add "|| warn" as a default disposition
+                $this .= ' || warn' unless $this =~ /\|\|/;
+
+                # change a generic ".. || die" or ".. || warn"
+                # to call valmess instead of die/warn directly
+                # valmess will look up the error message from %Val_Message
+                $this =~ s/ ^ ( (\S+) \s+ \S+ ) \s* \|\| \s* (die|warn) \s* $
+                          /$1 || valmess('$3', '$2', \$file)/x;
+            }
+
+            {
+                # count warnings, either from valmess or '-r || warn "my msg"'
+                # also, call any pre-existing signal handler for __WARN__
+                my $orig_sigwarn = $SIG{__WARN__};
+                local $SIG{__WARN__} = sub {
+                    ++$Warnings;
+                    if ( $orig_sigwarn ) {
+                        $orig_sigwarn->(@_);
+                    }
+                    else {
+                        warn "@_";
+                    }
+                };
+
+                # do the test
+                eval $this;
+
+                # re-raise an exception caused by a "... || die" test
+                if (my $err = $@) {
+                    # in case of any cd directives, return from whence we came
+                    if ($starting_dir ne cwd) {
+                        chdir($starting_dir) || die "$starting_dir: $!";
+                    }
+                    die $err;
+                }
+            }
+
+            # stop on 1st warning within a bundle of tests
+            last if $Warnings > $oldwarnings;
+        }
+    }
+
+    # in case of any cd directives, return from whence we came
+    if ($starting_dir ne cwd) {
+        chdir($starting_dir) || die "chdir $starting_dir: $!";
+    }
+
+    return $Warnings;
+}
+
+my %Val_Message = (
+    'r' => "is not readable by uid $>.",
+    'w' => "is not writable by uid $>.",
+    'x' => "is not executable by uid $>.",
+    'o' => "is not owned by uid $>.",
+    'R' => "is not readable by you.",
+    'W' => "is not writable by you.",
+    'X' => "is not executable by you.",
+    'O' => "is not owned by you.",
+    'e' => "does not exist.",
+    'z' => "does not have zero size.",
+    's' => "does not have non-zero size.",
+    'f' => "is not a plain file.",
+    'd' => "is not a directory.",
+    'l' => "is not a symbolic link.",
+    'p' => "is not a named pipe (FIFO).",
+    'S' => "is not a socket.",
+    'b' => "is not a block special file.",
+    'c' => "is not a character special file.",
+    'u' => "does not have the setuid bit set.",
+    'g' => "does not have the setgid bit set.",
+    'k' => "does not have the sticky bit set.",
+    'T' => "is not a text file.",
+    'B' => "is not a binary file."
+);
+
+sub valmess {
+    my ($disposition, $test, $file) = @_;
+    my $ferror;
+
+    if ($test =~ / ^ (!?) -(\w) \s* $ /x) {
+        my ($neg, $ftype) = ($1, $2);
+
+        $ferror = "$file $Val_Message{$ftype}";
+
+        if ($neg eq '!') {
+            $ferror =~ s/ is not / should not be / ||
+            $ferror =~ s/ does not / should not / ||
+            $ferror =~ s/ not / /;
+        }
+    }
+    else {
+        $ferror = "Can't do $test $file.\n";
+    }
+
+    die "$ferror\n" if $disposition eq 'die';
+    warn "$ferror\n";
+}
+
+1;

Added: vendor/perl/dist/cpan/File-CheckTree/t/CheckTree.t
===================================================================
--- vendor/perl/dist/cpan/File-CheckTree/t/CheckTree.t	                        (rev 0)
+++ vendor/perl/dist/cpan/File-CheckTree/t/CheckTree.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,181 @@
+#!./perl -w
+
+use Test::More tests => 23;
+
+use strict;
+
+require overload;
+
+use File::CheckTree;
+use File::Spec;          # used to get absolute paths
+
+# We assume that we start from the dist/File-CheckTree in the perl repository,
+# or the dist root directory for the CPAN version.
+
+
+#### TEST 1 -- No warnings ####
+# usings both relative and full paths, indented comments
+
+{
+    my ($num_warnings, $path_to_libFileCheckTree);
+    $path_to_libFileCheckTree = File::Spec->rel2abs(
+        File::Spec->catfile('lib', 'File', 'CheckTree.pm'),
+    );
+
+    my @warnings;
+    local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+    eval {
+        $num_warnings = validate qq{
+            lib  -d
+# comment, followed "blank" line (w/ whitespace):
+
+            # indented comment, followed blank line (w/o whitespace):
+
+            lib/File/CheckTree.pm -f
+            '$path_to_libFileCheckTree' -e || warn
+        };
+    };
+
+    diag($_) for @warnings;
+    is( $@, '' );
+    is( scalar @warnings, 0 );
+    is( $num_warnings, 0 );
+}
+
+
+#### TEST 2 -- One warning ####
+
+{
+    my ($num_warnings, @warnings);
+
+    local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+    eval {
+        $num_warnings = validate qq{
+            lib    -f
+            lib/File/CheckTree.pm -f
+        };
+    };
+
+    is( $@, '' );
+    is( scalar @warnings, 1 );
+    like( $warnings[0], qr/lib is not a plain file/);
+    is( $num_warnings, 1 );
+}
+
+
+#### TEST 3 -- Multiple warnings ####
+# including first warning only from a bundle of tests,
+# generic "|| warn", default "|| warn" and "|| warn '...' "
+
+{
+    my ($num_warnings, @warnings);
+
+    local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+    eval {
+        $num_warnings = validate q{
+            lib     -effd
+            lib/File/CheckTree.pm -f || die
+            lib/File/CheckTree.pm -d || warn
+            lib    -f || warn "my warning: $file\n"
+        };
+    };
+
+    is( $@, '' );
+    is( scalar @warnings, 3 );
+    like( $warnings[0], qr/lib is not a plain file/);
+    like( $warnings[1], qr{lib/File/CheckTree.pm is not a directory});
+    like( $warnings[2], qr/my warning: lib/);
+    is( $num_warnings, 3 );
+}
+
+
+#### TEST 4 -- cd directive ####
+# cd directive followed by relative paths, followed by full paths
+{
+    my ($num_warnings, @warnings, $path_to_lib, $path_to_dist);
+    $path_to_lib  = File::Spec->rel2abs(File::Spec->catdir('lib'));
+    $path_to_dist = File::Spec->rel2abs(File::Spec->curdir);
+
+    local $SIG{__WARN__} = sub { push @warnings, "@_" };
+
+    eval {
+        $num_warnings = validate qq{
+            lib                   -d || die
+            '$path_to_lib'        cd
+            File                  -e
+            File                  -f
+            '$path_to_dist'       cd
+            lib/File/CheckTree.pm -ef
+            lib/File/CheckTree.pm -d || warn
+            '$path_to_lib'        -d || die
+        };
+    };
+
+    is( $@, '' );
+    is( scalar @warnings, 2 );
+    like( $warnings[0], qr/File is not a plain file/);
+    like( $warnings[1], qr/CheckTree\.pm is not a directory/);
+    is( $num_warnings, 2 );
+}
+
+
+#### TEST 5 -- Exception ####
+# test with generic "|| die"
+{
+    my $num_warnings;
+
+    eval {
+        $num_warnings = validate q{
+            lib                    -ef || die
+            lib/File/CheckTree.pm  -d
+        };
+    };
+
+    like($@, qr/lib is not a plain file/);
+}
+
+
+#### TEST 6 -- Exception ####
+# test with "|| die 'my error message'"
+{
+    my $num_warnings;
+
+    eval {
+        $num_warnings = validate q{
+            lib                    -ef || die "yadda $file yadda...\n"
+            lib/File/CheckTree.pm  -d
+        };
+    };
+
+    like($@, qr/yadda lib yadda/);
+    is( $num_warnings, undef );
+}
+
+#### TEST 7 -- Quoted file names ####
+{
+    my $num_warnings;
+    eval {
+        $num_warnings = validate q{
+            "a file with whitespace" !-ef
+            'a file with whitespace' !-ef
+        };
+    };
+
+    is ( $@, '', 'No errors mean we compile correctly');
+}
+
+#### TEST 8 -- Malformed query ####
+{
+    my $num_warnings;
+    eval {
+        $num_warnings = validate q{
+            a file with whitespace !-ef
+        };
+    };
+
+    like( $@, qr/syntax error/,
+          'We got a syntax error for a malformed file query' );
+}

Added: vendor/perl/dist/cpan/File-Temp/lib/File/Temp.pm
===================================================================
--- vendor/perl/dist/cpan/File-Temp/lib/File/Temp.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/File-Temp/lib/File/Temp.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2539 @@
+package File::Temp;
+
+=head1 NAME
+
+File::Temp - return name and handle of a temporary file safely
+
+=begin __INTERNALS
+
+=head1 PORTABILITY
+
+This section is at the top in order to provide easier access to
+porters.  It is not expected to be rendered by a standard pod
+formatting tool. Please skip straight to the SYNOPSIS section if you
+are not trying to port this module to a new platform.
+
+This module is designed to be portable across operating systems and it
+currently supports Unix, VMS, DOS, OS/2, Windows and Mac OS
+(Classic). When porting to a new OS there are generally three main
+issues that have to be solved:
+
+=over 4
+
+=item *
+
+Can the OS unlink an open file? If it can not then the
+C<_can_unlink_opened_file> method should be modified.
+
+=item *
+
+Are the return values from C<stat> reliable? By default all the
+return values from C<stat> are compared when unlinking a temporary
+file using the filename and the handle. Operating systems other than
+unix do not always have valid entries in all fields. If utility function
+C<File::Temp::unlink0> fails then the C<stat> comparison should be
+modified accordingly.
+
+=item *
+
+Security. Systems that can not support a test for the sticky bit
+on a directory can not use the MEDIUM and HIGH security tests.
+The C<_can_do_level> method should be modified accordingly.
+
+=back
+
+=end __INTERNALS
+
+=head1 SYNOPSIS
+
+  use File::Temp qw/ tempfile tempdir /;
+
+  $fh = tempfile();
+  ($fh, $filename) = tempfile();
+
+  ($fh, $filename) = tempfile( $template, DIR => $dir);
+  ($fh, $filename) = tempfile( $template, SUFFIX => '.dat');
+  ($fh, $filename) = tempfile( $template, TMPDIR => 1 );
+
+  binmode( $fh, ":utf8" );
+
+  $dir = tempdir( CLEANUP => 1 );
+  ($fh, $filename) = tempfile( DIR => $dir );
+
+Object interface:
+
+  require File::Temp;
+  use File::Temp ();
+  use File::Temp qw/ :seekable /;
+
+  $fh = File::Temp->new();
+  $fname = $fh->filename;
+
+  $fh = File::Temp->new(TEMPLATE => $template);
+  $fname = $fh->filename;
+
+  $tmp = File::Temp->new( UNLINK => 0, SUFFIX => '.dat' );
+  print $tmp "Some data\n";
+  print "Filename is $tmp\n";
+  $tmp->seek( 0, SEEK_END );
+
+The following interfaces are provided for compatibility with
+existing APIs. They should not be used in new code.
+
+MkTemp family:
+
+  use File::Temp qw/ :mktemp  /;
+
+  ($fh, $file) = mkstemp( "tmpfileXXXXX" );
+  ($fh, $file) = mkstemps( "tmpfileXXXXXX", $suffix);
+
+  $tmpdir = mkdtemp( $template );
+
+  $unopened_file = mktemp( $template );
+
+POSIX functions:
+
+  use File::Temp qw/ :POSIX /;
+
+  $file = tmpnam();
+  $fh = tmpfile();
+
+  ($fh, $file) = tmpnam();
+
+Compatibility functions:
+
+  $unopened_file = File::Temp::tempnam( $dir, $pfx );
+
+=head1 DESCRIPTION
+
+C<File::Temp> can be used to create and open temporary files in a safe
+way.  There is both a function interface and an object-oriented
+interface.  The File::Temp constructor or the tempfile() function can
+be used to return the name and the open filehandle of a temporary
+file.  The tempdir() function can be used to create a temporary
+directory.
+
+The security aspect of temporary file creation is emphasized such that
+a filehandle and filename are returned together.  This helps guarantee
+that a race condition can not occur where the temporary file is
+created by another process between checking for the existence of the
+file and its opening.  Additional security levels are provided to
+check, for example, that the sticky bit is set on world writable
+directories.  See L<"safe_level"> for more information.
+
+For compatibility with popular C library functions, Perl implementations of
+the mkstemp() family of functions are provided. These are, mkstemp(),
+mkstemps(), mkdtemp() and mktemp().
+
+Additionally, implementations of the standard L<POSIX|POSIX>
+tmpnam() and tmpfile() functions are provided if required.
+
+Implementations of mktemp(), tmpnam(), and tempnam() are provided,
+but should be used with caution since they return only a filename
+that was valid when function was called, so cannot guarantee
+that the file will not exist by the time the caller opens the filename.
+
+Filehandles returned by these functions support the seekable methods.
+
+=cut
+
+# 5.6.0 gives us S_IWOTH, S_IWGRP, our and auto-vivifying filehandls
+# People would like a version on 5.004 so give them what they want :-)
+use 5.004;
+use strict;
+use Carp;
+use File::Spec 0.8;
+use Cwd ();
+use File::Path qw/ rmtree /;
+use Fcntl 1.03;
+use IO::Seekable;               # For SEEK_*
+use Errno;
+use Scalar::Util 'refaddr';
+require VMS::Stdio if $^O eq 'VMS';
+
+# pre-emptively load Carp::Heavy. If we don't when we run out of file
+# handles and attempt to call croak() we get an error message telling
+# us that Carp::Heavy won't load rather than an error telling us we
+# have run out of file handles. We either preload croak() or we
+# switch the calls to croak from _gettemp() to use die.
+eval { require Carp::Heavy; };
+
+# Need the Symbol package if we are running older perl
+require Symbol if $] < 5.006;
+
+### For the OO interface
+use base qw/ IO::Handle IO::Seekable /;
+use overload '""' => "STRINGIFY", '0+' => "NUMIFY",
+  fallback => 1;
+
+# use 'our' on v5.6.0
+use vars qw($VERSION @EXPORT_OK %EXPORT_TAGS $DEBUG $KEEP_ALL);
+
+$DEBUG = 0;
+$KEEP_ALL = 0;
+
+# We are exporting functions
+
+use base qw/Exporter/;
+
+# Export list - to allow fine tuning of export table
+
+ at EXPORT_OK = qw{
+                 tempfile
+                 tempdir
+                 tmpnam
+                 tmpfile
+                 mktemp
+                 mkstemp
+                 mkstemps
+                 mkdtemp
+                 unlink0
+                 cleanup
+                 SEEK_SET
+                 SEEK_CUR
+                 SEEK_END
+             };
+
+# Groups of functions for export
+
+%EXPORT_TAGS = (
+                'POSIX' => [qw/ tmpnam tmpfile /],
+                'mktemp' => [qw/ mktemp mkstemp mkstemps mkdtemp/],
+                'seekable' => [qw/ SEEK_SET SEEK_CUR SEEK_END /],
+               );
+
+# add contents of these tags to @EXPORT
+Exporter::export_tags('POSIX','mktemp','seekable');
+
+# Version number
+
+$VERSION = '0.23';
+
+# This is a list of characters that can be used in random filenames
+
+my @CHARS = (qw/ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
+                 a b c d e f g h i j k l m n o p q r s t u v w x y z
+                 0 1 2 3 4 5 6 7 8 9 _
+               /);
+
+# Maximum number of tries to make a temp file before failing
+
+use constant MAX_TRIES => 1000;
+
+# Minimum number of X characters that should be in a template
+use constant MINX => 4;
+
+# Default template when no template supplied
+
+use constant TEMPXXX => 'X' x 10;
+
+# Constants for the security level
+
+use constant STANDARD => 0;
+use constant MEDIUM   => 1;
+use constant HIGH     => 2;
+
+# OPENFLAGS. If we defined the flag to use with Sysopen here this gives
+# us an optimisation when many temporary files are requested
+
+my $OPENFLAGS = O_CREAT | O_EXCL | O_RDWR;
+my $LOCKFLAG;
+
+unless ($^O eq 'MacOS') {
+  for my $oflag (qw/ NOFOLLOW BINARY LARGEFILE NOINHERIT /) {
+    my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
+    no strict 'refs';
+    $OPENFLAGS |= $bit if eval {
+      # Make sure that redefined die handlers do not cause problems
+      # e.g. CGI::Carp
+      local $SIG{__DIE__} = sub {};
+      local $SIG{__WARN__} = sub {};
+      $bit = &$func();
+      1;
+    };
+  }
+  # Special case O_EXLOCK
+  $LOCKFLAG = eval {
+    local $SIG{__DIE__} = sub {};
+    local $SIG{__WARN__} = sub {};
+    &Fcntl::O_EXLOCK();
+  };
+}
+
+# On some systems the O_TEMPORARY flag can be used to tell the OS
+# to automatically remove the file when it is closed. This is fine
+# in most cases but not if tempfile is called with UNLINK=>0 and
+# the filename is requested -- in the case where the filename is to
+# be passed to another routine. This happens on windows. We overcome
+# this by using a second open flags variable
+
+my $OPENTEMPFLAGS = $OPENFLAGS;
+unless ($^O eq 'MacOS') {
+  for my $oflag (qw/ TEMPORARY /) {
+    my ($bit, $func) = (0, "Fcntl::O_" . $oflag);
+    local($@);
+    no strict 'refs';
+    $OPENTEMPFLAGS |= $bit if eval {
+      # Make sure that redefined die handlers do not cause problems
+      # e.g. CGI::Carp
+      local $SIG{__DIE__} = sub {};
+      local $SIG{__WARN__} = sub {};
+      $bit = &$func();
+      1;
+    };
+  }
+}
+
+# Private hash tracking which files have been created by each process id via the OO interface
+my %FILES_CREATED_BY_OBJECT;
+
+# INTERNAL ROUTINES - not to be used outside of package
+
+# Generic routine for getting a temporary filename
+# modelled on OpenBSD _gettemp() in mktemp.c
+
+# The template must contain X's that are to be replaced
+# with the random values
+
+#  Arguments:
+
+#  TEMPLATE   - string containing the XXXXX's that is converted
+#           to a random filename and opened if required
+
+# Optionally, a hash can also be supplied containing specific options
+#   "open" => if true open the temp file, else just return the name
+#             default is 0
+#   "mkdir"=> if true, we are creating a temp directory rather than tempfile
+#             default is 0
+#   "suffixlen" => number of characters at end of PATH to be ignored.
+#                  default is 0.
+#   "unlink_on_close" => indicates that, if possible,  the OS should remove
+#                        the file as soon as it is closed. Usually indicates
+#                        use of the O_TEMPORARY flag to sysopen.
+#                        Usually irrelevant on unix
+#   "use_exlock" => Indicates that O_EXLOCK should be used. Default is true.
+
+# Optionally a reference to a scalar can be passed into the function
+# On error this will be used to store the reason for the error
+#   "ErrStr"  => \$errstr
+
+# "open" and "mkdir" can not both be true
+# "unlink_on_close" is not used when "mkdir" is true.
+
+# The default options are equivalent to mktemp().
+
+# Returns:
+#   filehandle - open file handle (if called with doopen=1, else undef)
+#   temp name  - name of the temp file or directory
+
+# For example:
+#   ($fh, $name) = _gettemp($template, "open" => 1);
+
+# for the current version, failures are associated with
+# stored in an error string and returned to give the reason whilst debugging
+# This routine is not called by any external function
+sub _gettemp {
+
+  croak 'Usage: ($fh, $name) = _gettemp($template, OPTIONS);'
+    unless scalar(@_) >= 1;
+
+  # the internal error string - expect it to be overridden
+  # Need this in case the caller decides not to supply us a value
+  # need an anonymous scalar
+  my $tempErrStr;
+
+  # Default options
+  my %options = (
+                 "open" => 0,
+                 "mkdir" => 0,
+                 "suffixlen" => 0,
+                 "unlink_on_close" => 0,
+                 "use_exlock" => 1,
+                 "ErrStr" => \$tempErrStr,
+                );
+
+  # Read the template
+  my $template = shift;
+  if (ref($template)) {
+    # Use a warning here since we have not yet merged ErrStr
+    carp "File::Temp::_gettemp: template must not be a reference";
+    return ();
+  }
+
+  # Check that the number of entries on stack are even
+  if (scalar(@_) % 2 != 0) {
+    # Use a warning here since we have not yet merged ErrStr
+    carp "File::Temp::_gettemp: Must have even number of options";
+    return ();
+  }
+
+  # Read the options and merge with defaults
+  %options = (%options, @_)  if @_;
+
+  # Make sure the error string is set to undef
+  ${$options{ErrStr}} = undef;
+
+  # Can not open the file and make a directory in a single call
+  if ($options{"open"} && $options{"mkdir"}) {
+    ${$options{ErrStr}} = "doopen and domkdir can not both be true\n";
+    return ();
+  }
+
+  # Find the start of the end of the  Xs (position of last X)
+  # Substr starts from 0
+  my $start = length($template) - 1 - $options{"suffixlen"};
+
+  # Check that we have at least MINX x X (e.g. 'XXXX") at the end of the string
+  # (taking suffixlen into account). Any fewer is insecure.
+
+  # Do it using substr - no reason to use a pattern match since
+  # we know where we are looking and what we are looking for
+
+  if (substr($template, $start - MINX + 1, MINX) ne 'X' x MINX) {
+    ${$options{ErrStr}} = "The template must end with at least ".
+      MINX . " 'X' characters\n";
+    return ();
+  }
+
+  # Replace all the X at the end of the substring with a
+  # random character or just all the XX at the end of a full string.
+  # Do it as an if, since the suffix adjusts which section to replace
+  # and suffixlen=0 returns nothing if used in the substr directly
+  # and generate a full path from the template
+
+  my $path = _replace_XX($template, $options{"suffixlen"});
+
+
+  # Split the path into constituent parts - eventually we need to check
+  # whether the directory exists
+  # We need to know whether we are making a temp directory
+  # or a tempfile
+
+  my ($volume, $directories, $file);
+  my $parent;                   # parent directory
+  if ($options{"mkdir"}) {
+    # There is no filename at the end
+    ($volume, $directories, $file) = File::Spec->splitpath( $path, 1);
+
+    # The parent is then $directories without the last directory
+    # Split the directory and put it back together again
+    my @dirs = File::Spec->splitdir($directories);
+
+    # If @dirs only has one entry (i.e. the directory template) that means
+    # we are in the current directory
+    if ($#dirs == 0) {
+      $parent = File::Spec->curdir;
+    } else {
+
+      if ($^O eq 'VMS') {     # need volume to avoid relative dir spec
+        $parent = File::Spec->catdir($volume, @dirs[0..$#dirs-1]);
+        $parent = 'sys$disk:[]' if $parent eq '';
+      } else {
+
+        # Put it back together without the last one
+        $parent = File::Spec->catdir(@dirs[0..$#dirs-1]);
+
+        # ...and attach the volume (no filename)
+        $parent = File::Spec->catpath($volume, $parent, '');
+      }
+
+    }
+
+  } else {
+
+    # Get rid of the last filename (use File::Basename for this?)
+    ($volume, $directories, $file) = File::Spec->splitpath( $path );
+
+    # Join up without the file part
+    $parent = File::Spec->catpath($volume,$directories,'');
+
+    # If $parent is empty replace with curdir
+    $parent = File::Spec->curdir
+      unless $directories ne '';
+
+  }
+
+  # Check that the parent directories exist
+  # Do this even for the case where we are simply returning a name
+  # not a file -- no point returning a name that includes a directory
+  # that does not exist or is not writable
+
+  unless (-e $parent) {
+    ${$options{ErrStr}} = "Parent directory ($parent) does not exist";
+    return ();
+  }
+  unless (-d $parent) {
+    ${$options{ErrStr}} = "Parent directory ($parent) is not a directory";
+    return ();
+  }
+
+  # Check the stickiness of the directory and chown giveaway if required
+  # If the directory is world writable the sticky bit
+  # must be set
+
+  if (File::Temp->safe_level == MEDIUM) {
+    my $safeerr;
+    unless (_is_safe($parent,\$safeerr)) {
+      ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
+      return ();
+    }
+  } elsif (File::Temp->safe_level == HIGH) {
+    my $safeerr;
+    unless (_is_verysafe($parent, \$safeerr)) {
+      ${$options{ErrStr}} = "Parent directory ($parent) is not safe ($safeerr)";
+      return ();
+    }
+  }
+
+
+  # Now try MAX_TRIES time to open the file
+  for (my $i = 0; $i < MAX_TRIES; $i++) {
+
+    # Try to open the file if requested
+    if ($options{"open"}) {
+      my $fh;
+
+      # If we are running before perl5.6.0 we can not auto-vivify
+      if ($] < 5.006) {
+        $fh = &Symbol::gensym;
+      }
+
+      # Try to make sure this will be marked close-on-exec
+      # XXX: Win32 doesn't respect this, nor the proper fcntl,
+      #      but may have O_NOINHERIT. This may or may not be in Fcntl.
+      local $^F = 2;
+
+      # Attempt to open the file
+      my $open_success = undef;
+      if ( $^O eq 'VMS' and $options{"unlink_on_close"} && !$KEEP_ALL) {
+        # make it auto delete on close by setting FAB$V_DLT bit
+        $fh = VMS::Stdio::vmssysopen($path, $OPENFLAGS, 0600, 'fop=dlt');
+        $open_success = $fh;
+      } else {
+        my $flags = ( ($options{"unlink_on_close"} && !$KEEP_ALL) ?
+                      $OPENTEMPFLAGS :
+                      $OPENFLAGS );
+        $flags |= $LOCKFLAG if (defined $LOCKFLAG && $options{use_exlock});
+        $open_success = sysopen($fh, $path, $flags, 0600);
+      }
+      if ( $open_success ) {
+
+        # in case of odd umask force rw
+        chmod(0600, $path);
+
+        # Opened successfully - return file handle and name
+        return ($fh, $path);
+
+      } else {
+
+        # Error opening file - abort with error
+        # if the reason was anything but EEXIST
+        unless ($!{EEXIST}) {
+          ${$options{ErrStr}} = "Could not create temp file $path: $!";
+          return ();
+        }
+
+        # Loop round for another try
+
+      }
+    } elsif ($options{"mkdir"}) {
+
+      # Open the temp directory
+      if (mkdir( $path, 0700)) {
+        # in case of odd umask
+        chmod(0700, $path);
+
+        return undef, $path;
+      } else {
+
+        # Abort with error if the reason for failure was anything
+        # except EEXIST
+        unless ($!{EEXIST}) {
+          ${$options{ErrStr}} = "Could not create directory $path: $!";
+          return ();
+        }
+
+        # Loop round for another try
+
+      }
+
+    } else {
+
+      # Return true if the file can not be found
+      # Directory has been checked previously
+
+      return (undef, $path) unless -e $path;
+
+      # Try again until MAX_TRIES
+
+    }
+
+    # Did not successfully open the tempfile/dir
+    # so try again with a different set of random letters
+    # No point in trying to increment unless we have only
+    # 1 X say and the randomness could come up with the same
+    # file MAX_TRIES in a row.
+
+    # Store current attempt - in principal this implies that the
+    # 3rd time around the open attempt that the first temp file
+    # name could be generated again. Probably should store each
+    # attempt and make sure that none are repeated
+
+    my $original = $path;
+    my $counter = 0;            # Stop infinite loop
+    my $MAX_GUESS = 50;
+
+    do {
+
+      # Generate new name from original template
+      $path = _replace_XX($template, $options{"suffixlen"});
+
+      $counter++;
+
+    } until ($path ne $original || $counter > $MAX_GUESS);
+
+    # Check for out of control looping
+    if ($counter > $MAX_GUESS) {
+      ${$options{ErrStr}} = "Tried to get a new temp name different to the previous value $MAX_GUESS times.\nSomething wrong with template?? ($template)";
+      return ();
+    }
+
+  }
+
+  # If we get here, we have run out of tries
+  ${ $options{ErrStr} } = "Have exceeded the maximum number of attempts ("
+    . MAX_TRIES . ") to open temp file/dir";
+
+  return ();
+
+}
+
+# Internal routine to replace the XXXX... with random characters
+# This has to be done by _gettemp() every time it fails to
+# open a temp file/dir
+
+# Arguments:  $template (the template with XXX),
+#             $ignore   (number of characters at end to ignore)
+
+# Returns:    modified template
+
+sub _replace_XX {
+
+  croak 'Usage: _replace_XX($template, $ignore)'
+    unless scalar(@_) == 2;
+
+  my ($path, $ignore) = @_;
+
+  # Do it as an if, since the suffix adjusts which section to replace
+  # and suffixlen=0 returns nothing if used in the substr directly
+  # Alternatively, could simply set $ignore to length($path)-1
+  # Don't want to always use substr when not required though.
+  my $end = ( $] >= 5.006 ? "\\z" : "\\Z" );
+
+  if ($ignore) {
+    substr($path, 0, - $ignore) =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge;
+  } else {
+    $path =~ s/X(?=X*$end)/$CHARS[ int( rand( @CHARS ) ) ]/ge;
+  }
+  return $path;
+}
+
+# Internal routine to force a temp file to be writable after
+# it is created so that we can unlink it. Windows seems to occasionally
+# force a file to be readonly when written to certain temp locations
+sub _force_writable {
+  my $file = shift;
+  chmod 0600, $file;
+}
+
+
+# internal routine to check to see if the directory is safe
+# First checks to see if the directory is not owned by the
+# current user or root. Then checks to see if anyone else
+# can write to the directory and if so, checks to see if
+# it has the sticky bit set
+
+# Will not work on systems that do not support sticky bit
+
+#Args:  directory path to check
+#       Optionally: reference to scalar to contain error message
+# Returns true if the path is safe and false otherwise.
+# Returns undef if can not even run stat() on the path
+
+# This routine based on version written by Tom Christiansen
+
+# Presumably, by the time we actually attempt to create the
+# file or directory in this directory, it may not be safe
+# anymore... Have to run _is_safe directly after the open.
+
+sub _is_safe {
+
+  my $path = shift;
+  my $err_ref = shift;
+
+  # Stat path
+  my @info = stat($path);
+  unless (scalar(@info)) {
+    $$err_ref = "stat(path) returned no values";
+    return 0;
+  }
+  ;
+  return 1 if $^O eq 'VMS';     # owner delete control at file level
+
+  # Check to see whether owner is neither superuser (or a system uid) nor me
+  # Use the effective uid from the $> variable
+  # UID is in [4]
+  if ($info[4] > File::Temp->top_system_uid() && $info[4] != $>) {
+
+    Carp::cluck(sprintf "uid=$info[4] topuid=%s euid=$> path='$path'",
+                File::Temp->top_system_uid());
+
+    $$err_ref = "Directory owned neither by root nor the current user"
+      if ref($err_ref);
+    return 0;
+  }
+
+  # check whether group or other can write file
+  # use 066 to detect either reading or writing
+  # use 022 to check writability
+  # Do it with S_IWOTH and S_IWGRP for portability (maybe)
+  # mode is in info[2]
+  if (($info[2] & &Fcntl::S_IWGRP) ||  # Is group writable?
+      ($info[2] & &Fcntl::S_IWOTH) ) { # Is world writable?
+    # Must be a directory
+    unless (-d $path) {
+      $$err_ref = "Path ($path) is not a directory"
+        if ref($err_ref);
+      return 0;
+    }
+    # Must have sticky bit set
+    unless (-k $path) {
+      $$err_ref = "Sticky bit not set on $path when dir is group|world writable"
+        if ref($err_ref);
+      return 0;
+    }
+  }
+
+  return 1;
+}
+
+# Internal routine to check whether a directory is safe
+# for temp files. Safer than _is_safe since it checks for
+# the possibility of chown giveaway and if that is a possibility
+# checks each directory in the path to see if it is safe (with _is_safe)
+
+# If _PC_CHOWN_RESTRICTED is not set, does the full test of each
+# directory anyway.
+
+# Takes optional second arg as scalar ref to error reason
+
+sub _is_verysafe {
+
+  # Need POSIX - but only want to bother if really necessary due to overhead
+  require POSIX;
+
+  my $path = shift;
+  print "_is_verysafe testing $path\n" if $DEBUG;
+  return 1 if $^O eq 'VMS';     # owner delete control at file level
+
+  my $err_ref = shift;
+
+  # Should Get the value of _PC_CHOWN_RESTRICTED if it is defined
+  # and If it is not there do the extensive test
+  local($@);
+  my $chown_restricted;
+  $chown_restricted = &POSIX::_PC_CHOWN_RESTRICTED()
+    if eval { &POSIX::_PC_CHOWN_RESTRICTED(); 1};
+
+  # If chown_resticted is set to some value we should test it
+  if (defined $chown_restricted) {
+
+    # Return if the current directory is safe
+    return _is_safe($path,$err_ref) if POSIX::sysconf( $chown_restricted );
+
+  }
+
+  # To reach this point either, the _PC_CHOWN_RESTRICTED symbol
+  # was not available or the symbol was there but chown giveaway
+  # is allowed. Either way, we now have to test the entire tree for
+  # safety.
+
+  # Convert path to an absolute directory if required
+  unless (File::Spec->file_name_is_absolute($path)) {
+    $path = File::Spec->rel2abs($path);
+  }
+
+  # Split directory into components - assume no file
+  my ($volume, $directories, undef) = File::Spec->splitpath( $path, 1);
+
+  # Slightly less efficient than having a function in File::Spec
+  # to chop off the end of a directory or even a function that
+  # can handle ../ in a directory tree
+  # Sometimes splitdir() returns a blank at the end
+  # so we will probably check the bottom directory twice in some cases
+  my @dirs = File::Spec->splitdir($directories);
+
+  # Concatenate one less directory each time around
+  foreach my $pos (0.. $#dirs) {
+    # Get a directory name
+    my $dir = File::Spec->catpath($volume,
+                                  File::Spec->catdir(@dirs[0.. $#dirs - $pos]),
+                                  ''
+                                 );
+
+    print "TESTING DIR $dir\n" if $DEBUG;
+
+    # Check the directory
+    return 0 unless _is_safe($dir,$err_ref);
+
+  }
+
+  return 1;
+}
+
+
+
+# internal routine to determine whether unlink works on this
+# platform for files that are currently open.
+# Returns true if we can, false otherwise.
+
+# Currently WinNT, OS/2 and VMS can not unlink an opened file
+# On VMS this is because the O_EXCL flag is used to open the
+# temporary file. Currently I do not know enough about the issues
+# on VMS to decide whether O_EXCL is a requirement.
+
+sub _can_unlink_opened_file {
+
+  if (grep { $^O eq $_ } qw/MSWin32 os2 VMS dos MacOS haiku/) {
+    return 0;
+  } else {
+    return 1;
+  }
+
+}
+
+# internal routine to decide which security levels are allowed
+# see safe_level() for more information on this
+
+# Controls whether the supplied security level is allowed
+
+#   $cando = _can_do_level( $level )
+
+sub _can_do_level {
+
+  # Get security level
+  my $level = shift;
+
+  # Always have to be able to do STANDARD
+  return 1 if $level == STANDARD;
+
+  # Currently, the systems that can do HIGH or MEDIUM are identical
+  if ( $^O eq 'MSWin32' || $^O eq 'os2' || $^O eq 'cygwin' || $^O eq 'dos' || $^O eq 'MacOS' || $^O eq 'mpeix') {
+    return 0;
+  } else {
+    return 1;
+  }
+
+}
+
+# This routine sets up a deferred unlinking of a specified
+# filename and filehandle. It is used in the following cases:
+#  - Called by unlink0 if an opened file can not be unlinked
+#  - Called by tempfile() if files are to be removed on shutdown
+#  - Called by tempdir() if directories are to be removed on shutdown
+
+# Arguments:
+#   _deferred_unlink( $fh, $fname, $isdir );
+#
+#   - filehandle (so that it can be explicitly closed if open
+#   - filename   (the thing we want to remove)
+#   - isdir      (flag to indicate that we are being given a directory)
+#                 [and hence no filehandle]
+
+# Status is not referred to since all the magic is done with an END block
+
+{
+  # Will set up two lexical variables to contain all the files to be
+  # removed. One array for files, another for directories They will
+  # only exist in this block.
+
+  #  This means we only have to set up a single END block to remove
+  #  all files. 
+
+  # in order to prevent child processes inadvertently deleting the parent
+  # temp files we use a hash to store the temp files and directories
+  # created by a particular process id.
+
+  # %files_to_unlink contains values that are references to an array of
+  # array references containing the filehandle and filename associated with
+  # the temp file.
+  my (%files_to_unlink, %dirs_to_unlink);
+
+  # Set up an end block to use these arrays
+  END {
+    local($., $@, $!, $^E, $?);
+    cleanup(at_exit => 1);
+  }
+
+  # Cleanup function. Always triggered on END (with at_exit => 1) but
+  # can be invoked manually.
+  sub cleanup {
+    my %h = @_;
+    my $at_exit = delete $h{at_exit};
+    $at_exit = 0 if not defined $at_exit;
+    { my @k = sort keys %h; die "unrecognized parameters: @k" if @k }
+
+    if (!$KEEP_ALL) {
+      # Files
+      my @files = (exists $files_to_unlink{$$} ?
+                   @{ $files_to_unlink{$$} } : () );
+      foreach my $file (@files) {
+        # close the filehandle without checking its state
+        # in order to make real sure that this is closed
+        # if its already closed then I dont care about the answer
+        # probably a better way to do this
+        close($file->[0]);      # file handle is [0]
+
+        if (-f $file->[1]) {       # file name is [1]
+          _force_writable( $file->[1] ); # for windows
+          unlink $file->[1] or warn "Error removing ".$file->[1];
+        }
+      }
+      # Dirs
+      my @dirs = (exists $dirs_to_unlink{$$} ?
+                  @{ $dirs_to_unlink{$$} } : () );
+      my ($cwd, $cwd_to_remove);
+      foreach my $dir (@dirs) {
+        if (-d $dir) {
+          # Some versions of rmtree will abort if you attempt to remove
+          # the directory you are sitting in. For automatic cleanup
+          # at program exit, we avoid this by chdir()ing out of the way
+          # first. If not at program exit, it's best not to mess with the
+          # current directory, so just let it fail with a warning.
+          if ($at_exit) {
+            $cwd = Cwd::abs_path(File::Spec->curdir) if not defined $cwd;
+            my $abs = Cwd::abs_path($dir);
+            if ($abs eq $cwd) {
+              $cwd_to_remove = $dir;
+              next;
+            }
+          }
+          eval { rmtree($dir, $DEBUG, 0); };
+          warn $@ if ($@ && $^W);
+        }
+      }
+
+      if (defined $cwd_to_remove) {
+        # We do need to clean up the current directory, and everything
+        # else is done, so get out of there and remove it.
+        chdir $cwd_to_remove or die "cannot chdir to $cwd_to_remove: $!";
+        my $updir = File::Spec->updir;
+        chdir $updir or die "cannot chdir to $updir: $!";
+        eval { rmtree($cwd_to_remove, $DEBUG, 0); };
+        warn $@ if ($@ && $^W);
+      }
+
+      # clear the arrays
+      @{ $files_to_unlink{$$} } = ()
+        if exists $files_to_unlink{$$};
+      @{ $dirs_to_unlink{$$} } = ()
+        if exists $dirs_to_unlink{$$};
+    }
+  }
+
+
+  # This is the sub called to register a file for deferred unlinking
+  # This could simply store the input parameters and defer everything
+  # until the END block. For now we do a bit of checking at this
+  # point in order to make sure that (1) we have a file/dir to delete
+  # and (2) we have been called with the correct arguments.
+  sub _deferred_unlink {
+
+    croak 'Usage:  _deferred_unlink($fh, $fname, $isdir)'
+      unless scalar(@_) == 3;
+
+    my ($fh, $fname, $isdir) = @_;
+
+    warn "Setting up deferred removal of $fname\n"
+      if $DEBUG;
+
+    # make sure we save the absolute path for later cleanup
+    # OK to untaint because we only ever use this internally
+    # as a file path, never interpolating into the shell
+    $fname = Cwd::abs_path($fname);
+    ($fname) = $fname =~ /^(.*)$/;
+
+    # If we have a directory, check that it is a directory
+    if ($isdir) {
+
+      if (-d $fname) {
+
+        # Directory exists so store it
+        # first on VMS turn []foo into [.foo] for rmtree
+        $fname = VMS::Filespec::vmspath($fname) if $^O eq 'VMS';
+        $dirs_to_unlink{$$} = [] 
+          unless exists $dirs_to_unlink{$$};
+        push (@{ $dirs_to_unlink{$$} }, $fname);
+
+      } else {
+        carp "Request to remove directory $fname could not be completed since it does not exist!\n" if $^W;
+      }
+
+    } else {
+
+      if (-f $fname) {
+
+        # file exists so store handle and name for later removal
+        $files_to_unlink{$$} = []
+          unless exists $files_to_unlink{$$};
+        push(@{ $files_to_unlink{$$} }, [$fh, $fname]);
+
+      } else {
+        carp "Request to remove file $fname could not be completed since it is not there!\n" if $^W;
+      }
+
+    }
+
+  }
+
+
+}
+
+# normalize argument keys to upper case and do consistent handling
+# of leading template vs TEMPLATE
+sub _parse_args {
+  my $leading_template = (scalar(@_) % 2 == 1 ? shift(@_) : '' );
+  my %args = @_;
+  %args = map { uc($_), $args{$_} } keys %args;
+
+  # template (store it in an array so that it will
+  # disappear from the arg list of tempfile)
+  my @template = (
+    exists $args{TEMPLATE}  ? $args{TEMPLATE} :
+    $leading_template       ? $leading_template : ()
+  );
+  delete $args{TEMPLATE};
+
+  return( \@template, \%args );
+}
+
+=head1 OBJECT-ORIENTED INTERFACE
+
+This is the primary interface for interacting with
+C<File::Temp>. Using the OO interface a temporary file can be created
+when the object is constructed and the file can be removed when the
+object is no longer required.
+
+Note that there is no method to obtain the filehandle from the
+C<File::Temp> object. The object itself acts as a filehandle.  The object
+isa C<IO::Handle> and isa C<IO::Seekable> so all those methods are
+available.
+
+Also, the object is configured such that it stringifies to the name of the
+temporary file and so can be compared to a filename directly.  It numifies
+to the C<refaddr> the same as other handles and so can be compared to other
+handles with C<==>.
+
+    $fh eq $filename       # as a string
+    $fh != \*STDOUT        # as a number
+
+=over 4
+
+=item B<new>
+
+Create a temporary file object.
+
+  my $tmp = File::Temp->new();
+
+by default the object is constructed as if C<tempfile>
+was called without options, but with the additional behaviour
+that the temporary file is removed by the object destructor
+if UNLINK is set to true (the default).
+
+Supported arguments are the same as for C<tempfile>: UNLINK
+(defaulting to true), DIR, EXLOCK and SUFFIX. Additionally, the filename
+template is specified using the TEMPLATE option. The OPEN option
+is not supported (the file is always opened).
+
+ $tmp = File::Temp->new( TEMPLATE => 'tempXXXXX',
+                        DIR => 'mydir',
+                        SUFFIX => '.dat');
+
+Arguments are case insensitive.
+
+Can call croak() if an error occurs.
+
+=cut
+
+sub new {
+  my $proto = shift;
+  my $class = ref($proto) || $proto;
+
+  my ($maybe_template, $args) = _parse_args(@_);
+
+  # see if they are unlinking (defaulting to yes)
+  my $unlink = (exists $args->{UNLINK} ? $args->{UNLINK} : 1 );
+  delete $args->{UNLINK};
+
+  # Protect OPEN
+  delete $args->{OPEN};
+
+  # Open the file and retain file handle and file name
+  my ($fh, $path) = tempfile( @$maybe_template, %$args );
+
+  print "Tmp: $fh - $path\n" if $DEBUG;
+
+  # Store the filename in the scalar slot
+  ${*$fh} = $path;
+
+  # Cache the filename by pid so that the destructor can decide whether to remove it
+  $FILES_CREATED_BY_OBJECT{$$}{$path} = 1;
+
+  # Store unlink information in hash slot (plus other constructor info)
+  %{*$fh} = %$args;
+
+  # create the object
+  bless $fh, $class;
+
+  # final method-based configuration
+  $fh->unlink_on_destroy( $unlink );
+
+  return $fh;
+}
+
+=item B<newdir>
+
+Create a temporary directory using an object oriented interface.
+
+  $dir = File::Temp->newdir();
+
+By default the directory is deleted when the object goes out of scope.
+
+Supports the same options as the C<tempdir> function. Note that directories
+created with this method default to CLEANUP => 1.
+
+  $dir = File::Temp->newdir( $template, %options );
+
+A template may be specified either with a leading template or
+with a TEMPLATE argument.
+
+=cut
+
+sub newdir {
+  my $self = shift;
+
+  my ($maybe_template, $args) = _parse_args(@_);
+
+  # handle CLEANUP without passing CLEANUP to tempdir
+  my $cleanup = (exists $args->{CLEANUP} ? $args->{CLEANUP} : 1 );
+  delete $args->{CLEANUP};
+
+  my $tempdir = tempdir( @$maybe_template, %$args);
+
+  # get a safe absolute path for cleanup, just like
+  # happens in _deferred_unlink
+  my $real_dir = Cwd::abs_path( $tempdir );
+  ($real_dir) = $real_dir =~ /^(.*)$/;
+
+  return bless { DIRNAME => $tempdir,
+                 REALNAME => $real_dir,
+                 CLEANUP => $cleanup,
+                 LAUNCHPID => $$,
+               }, "File::Temp::Dir";
+}
+
+=item B<filename>
+
+Return the name of the temporary file associated with this object
+(if the object was created using the "new" constructor).
+
+  $filename = $tmp->filename;
+
+This method is called automatically when the object is used as
+a string.
+
+=cut
+
+sub filename {
+  my $self = shift;
+  return ${*$self};
+}
+
+sub STRINGIFY {
+  my $self = shift;
+  return $self->filename;
+}
+
+# For reference, can't use '0+'=>\&Scalar::Util::refaddr directly because
+# refaddr() demands one parameter only, whereas overload.pm calls with three
+# even for unary operations like '0+'.
+sub NUMIFY {
+  return refaddr($_[0]);
+}
+
+=item B<dirname>
+
+Return the name of the temporary directory associated with this
+object (if the object was created using the "newdir" constructor).
+
+  $dirname = $tmpdir->dirname;
+
+This method is called automatically when the object is used in string context.
+
+=item B<unlink_on_destroy>
+
+Control whether the file is unlinked when the object goes out of scope.
+The file is removed if this value is true and $KEEP_ALL is not.
+
+ $fh->unlink_on_destroy( 1 );
+
+Default is for the file to be removed.
+
+=cut
+
+sub unlink_on_destroy {
+  my $self = shift;
+  if (@_) {
+    ${*$self}{UNLINK} = shift;
+  }
+  return ${*$self}{UNLINK};
+}
+
+=item B<DESTROY>
+
+When the object goes out of scope, the destructor is called. This
+destructor will attempt to unlink the file (using L<unlink1|"unlink1">)
+if the constructor was called with UNLINK set to 1 (the default state
+if UNLINK is not specified).
+
+No error is given if the unlink fails.
+
+If the object has been passed to a child process during a fork, the
+file will be deleted when the object goes out of scope in the parent.
+
+For a temporary directory object the directory will be removed unless
+the CLEANUP argument was used in the constructor (and set to false) or
+C<unlink_on_destroy> was modified after creation.  Note that if a temp
+directory is your current directory, it cannot be removed - a warning
+will be given in this case.  C<chdir()> out of the directory before
+letting the object go out of scope.
+
+If the global variable $KEEP_ALL is true, the file or directory
+will not be removed.
+
+=cut
+
+sub DESTROY {
+  local($., $@, $!, $^E, $?);
+  my $self = shift;
+
+  # Make sure we always remove the file from the global hash
+  # on destruction. This prevents the hash from growing uncontrollably
+  # and post-destruction there is no reason to know about the file.
+  my $file = $self->filename;
+  my $was_created_by_proc;
+  if (exists $FILES_CREATED_BY_OBJECT{$$}{$file}) {
+    $was_created_by_proc = 1;
+    delete $FILES_CREATED_BY_OBJECT{$$}{$file};
+  }
+
+  if (${*$self}{UNLINK} && !$KEEP_ALL) {
+    print "# --------->   Unlinking $self\n" if $DEBUG;
+
+    # only delete if this process created it
+    return unless $was_created_by_proc;
+
+    # The unlink1 may fail if the file has been closed
+    # by the caller. This leaves us with the decision
+    # of whether to refuse to remove the file or simply
+    # do an unlink without test. Seems to be silly
+    # to do this when we are trying to be careful
+    # about security
+    _force_writable( $file ); # for windows
+    unlink1( $self, $file )
+      or unlink($file);
+  }
+}
+
+=back
+
+=head1 FUNCTIONS
+
+This section describes the recommended interface for generating
+temporary files and directories.
+
+=over 4
+
+=item B<tempfile>
+
+This is the basic function to generate temporary files.
+The behaviour of the file can be changed using various options:
+
+  $fh = tempfile();
+  ($fh, $filename) = tempfile();
+
+Create a temporary file in  the directory specified for temporary
+files, as specified by the tmpdir() function in L<File::Spec>.
+
+  ($fh, $filename) = tempfile($template);
+
+Create a temporary file in the current directory using the supplied
+template.  Trailing `X' characters are replaced with random letters to
+generate the filename.  At least four `X' characters must be present
+at the end of the template.
+
+  ($fh, $filename) = tempfile($template, SUFFIX => $suffix)
+
+Same as previously, except that a suffix is added to the template
+after the `X' translation.  Useful for ensuring that a temporary
+filename has a particular extension when needed by other applications.
+But see the WARNING at the end.
+
+  ($fh, $filename) = tempfile($template, DIR => $dir);
+
+Translates the template as before except that a directory name
+is specified.
+
+  ($fh, $filename) = tempfile($template, TMPDIR => 1);
+
+Equivalent to specifying a DIR of "File::Spec->tmpdir", writing the file
+into the same temporary directory as would be used if no template was
+specified at all.
+
+  ($fh, $filename) = tempfile($template, UNLINK => 1);
+
+Return the filename and filehandle as before except that the file is
+automatically removed when the program exits (dependent on
+$KEEP_ALL). Default is for the file to be removed if a file handle is
+requested and to be kept if the filename is requested. In a scalar
+context (where no filename is returned) the file is always deleted
+either (depending on the operating system) on exit or when it is
+closed (unless $KEEP_ALL is true when the temp file is created).
+
+Use the object-oriented interface if fine-grained control of when
+a file is removed is required.
+
+If the template is not specified, a template is always
+automatically generated. This temporary file is placed in tmpdir()
+(L<File::Spec>) unless a directory is specified explicitly with the
+DIR option.
+
+  $fh = tempfile( DIR => $dir );
+
+If called in scalar context, only the filehandle is returned and the
+file will automatically be deleted when closed on operating systems
+that support this (see the description of tmpfile() elsewhere in this
+document).  This is the preferred mode of operation, as if you only
+have a filehandle, you can never create a race condition by fumbling
+with the filename. On systems that can not unlink an open file or can
+not mark a file as temporary when it is opened (for example, Windows
+NT uses the C<O_TEMPORARY> flag) the file is marked for deletion when
+the program ends (equivalent to setting UNLINK to 1). The C<UNLINK>
+flag is ignored if present.
+
+  (undef, $filename) = tempfile($template, OPEN => 0);
+
+This will return the filename based on the template but
+will not open this file.  Cannot be used in conjunction with
+UNLINK set to true. Default is to always open the file
+to protect from possible race conditions. A warning is issued
+if warnings are turned on. Consider using the tmpnam()
+and mktemp() functions described elsewhere in this document
+if opening the file is not required.
+
+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).
+
+  ($fh, $filename) = tempfile($template, EXLOCK => 0);
+
+Options can be combined as required.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tempfile {
+  if ( @_ && $_[0] eq 'File::Temp' ) {
+      croak "'tempfile' can't be called as a method";
+  }
+  # Can not check for argument count since we can have any
+  # number of args
+
+  # Default options
+  my %options = (
+                 "DIR"    => undef, # Directory prefix
+                 "SUFFIX" => '',    # Template suffix
+                 "UNLINK" => 0,     # Do not unlink file on exit
+                 "OPEN"   => 1,     # Open file
+                 "TMPDIR" => 0, # Place tempfile in tempdir if template specified
+                 "EXLOCK" => 1, # Open file with O_EXLOCK
+                );
+
+  # Check to see whether we have an odd or even number of arguments
+  my ($maybe_template, $args) = _parse_args(@_);
+  my $template = @$maybe_template ? $maybe_template->[0] : undef;
+
+  # Read the options and merge with defaults
+  %options = (%options, %$args);
+
+  # First decision is whether or not to open the file
+  if (! $options{"OPEN"}) {
+
+    warn "tempfile(): temporary filename requested but not opened.\nPossibly unsafe, consider using tempfile() with OPEN set to true\n"
+      if $^W;
+
+  }
+
+  if ($options{"DIR"} and $^O eq 'VMS') {
+
+    # on VMS turn []foo into [.foo] for concatenation
+    $options{"DIR"} = VMS::Filespec::vmspath($options{"DIR"});
+  }
+
+  # Construct the template
+
+  # Have a choice of trying to work around the mkstemp/mktemp/tmpnam etc
+  # functions or simply constructing a template and using _gettemp()
+  # explicitly. Go for the latter
+
+  # First generate a template if not defined and prefix the directory
+  # If no template must prefix the temp directory
+  if (defined $template) {
+    # End up with current directory if neither DIR not TMPDIR are set
+    if ($options{"DIR"}) {
+
+      $template = File::Spec->catfile($options{"DIR"}, $template);
+
+    } elsif ($options{TMPDIR}) {
+
+      $template = File::Spec->catfile(File::Spec->tmpdir, $template );
+
+    }
+
+  } else {
+
+    if ($options{"DIR"}) {
+
+      $template = File::Spec->catfile($options{"DIR"}, TEMPXXX);
+
+    } else {
+
+      $template = File::Spec->catfile(File::Spec->tmpdir, TEMPXXX);
+
+    }
+
+  }
+
+  # Now add a suffix
+  $template .= $options{"SUFFIX"};
+
+  # Determine whether we should tell _gettemp to unlink the file
+  # On unix this is irrelevant and can be worked out after the file is
+  # opened (simply by unlinking the open filehandle). On Windows or VMS
+  # we have to indicate temporary-ness when we open the file. In general
+  # we only want a true temporary file if we are returning just the
+  # filehandle - if the user wants the filename they probably do not
+  # want the file to disappear as soon as they close it (which may be
+  # important if they want a child process to use the file)
+  # For this reason, tie unlink_on_close to the return context regardless
+  # of OS.
+  my $unlink_on_close = ( wantarray ? 0 : 1);
+
+  # Create the file
+  my ($fh, $path, $errstr);
+  croak "Error in tempfile() using template $template: $errstr"
+    unless (($fh, $path) = _gettemp($template,
+                                    "open" => $options{'OPEN'},
+                                    "mkdir"=> 0 ,
+                                    "unlink_on_close" => $unlink_on_close,
+                                    "suffixlen" => length($options{'SUFFIX'}),
+                                    "ErrStr" => \$errstr,
+                                    "use_exlock" => $options{EXLOCK},
+                                   ) );
+
+  # Set up an exit handler that can do whatever is right for the
+  # system. This removes files at exit when requested explicitly or when
+  # system is asked to unlink_on_close but is unable to do so because
+  # of OS limitations.
+  # The latter should be achieved by using a tied filehandle.
+  # Do not check return status since this is all done with END blocks.
+  _deferred_unlink($fh, $path, 0) if $options{"UNLINK"};
+
+  # Return
+  if (wantarray()) {
+
+    if ($options{'OPEN'}) {
+      return ($fh, $path);
+    } else {
+      return (undef, $path);
+    }
+
+  } else {
+
+    # Unlink the file. It is up to unlink0 to decide what to do with
+    # this (whether to unlink now or to defer until later)
+    unlink0($fh, $path) or croak "Error unlinking file $path using unlink0";
+
+    # Return just the filehandle.
+    return $fh;
+  }
+
+
+}
+
+=item B<tempdir>
+
+This is the recommended interface for creation of temporary
+directories.  By default the directory will not be removed on exit
+(that is, it won't be temporary; this behaviour can not be changed
+because of issues with backwards compatibility). To enable removal
+either use the CLEANUP option which will trigger removal on program
+exit, or consider using the "newdir" method in the object interface which
+will allow the directory to be cleaned up when the object goes out of
+scope.
+
+The behaviour of the function depends on the arguments:
+
+  $tempdir = tempdir();
+
+Create a directory in tmpdir() (see L<File::Spec|File::Spec>).
+
+  $tempdir = tempdir( $template );
+
+Create a directory from the supplied template. This template is
+similar to that described for tempfile(). `X' characters at the end
+of the template are replaced with random letters to construct the
+directory name. At least four `X' characters must be in the template.
+
+  $tempdir = tempdir ( DIR => $dir );
+
+Specifies the directory to use for the temporary directory.
+The temporary directory name is derived from an internal template.
+
+  $tempdir = tempdir ( $template, DIR => $dir );
+
+Prepend the supplied directory name to the template. The template
+should not include parent directory specifications itself. Any parent
+directory specifications are removed from the template before
+prepending the supplied directory.
+
+  $tempdir = tempdir ( $template, TMPDIR => 1 );
+
+Using the supplied template, create the temporary directory in
+a standard location for temporary files. Equivalent to doing
+
+  $tempdir = tempdir ( $template, DIR => File::Spec->tmpdir);
+
+but shorter. Parent directory specifications are stripped from the
+template itself. The C<TMPDIR> option is ignored if C<DIR> is set
+explicitly.  Additionally, C<TMPDIR> is implied if neither a template
+nor a directory are supplied.
+
+  $tempdir = tempdir( $template, CLEANUP => 1);
+
+Create a temporary directory using the supplied template, but
+attempt to remove it (and all files inside it) when the program
+exits. Note that an attempt will be made to remove all files from
+the directory even if they were not created by this module (otherwise
+why ask to clean it up?). The directory removal is made with
+the rmtree() function from the L<File::Path|File::Path> module.
+Of course, if the template is not specified, the temporary directory
+will be created in tmpdir() and will also be removed at program exit.
+
+Will croak() if there is an error.
+
+=cut
+
+# '
+
+sub tempdir  {
+  if ( @_ && $_[0] eq 'File::Temp' ) {
+      croak "'tempdir' can't be called as a method";
+  }
+
+  # Can not check for argument count since we can have any
+  # number of args
+
+  # Default options
+  my %options = (
+                 "CLEANUP"    => 0, # Remove directory on exit
+                 "DIR"        => '', # Root directory
+                 "TMPDIR"     => 0,  # Use tempdir with template
+                );
+
+  # Check to see whether we have an odd or even number of arguments
+  my ($maybe_template, $args) = _parse_args(@_);
+  my $template = @$maybe_template ? $maybe_template->[0] : undef;
+
+  # Read the options and merge with defaults
+  %options = (%options, %$args);
+
+  # Modify or generate the template
+
+  # Deal with the DIR and TMPDIR options
+  if (defined $template) {
+
+    # Need to strip directory path if using DIR or TMPDIR
+    if ($options{'TMPDIR'} || $options{'DIR'}) {
+
+      # Strip parent directory from the filename
+      #
+      # There is no filename at the end
+      $template = VMS::Filespec::vmspath($template) if $^O eq 'VMS';
+      my ($volume, $directories, undef) = File::Spec->splitpath( $template, 1);
+
+      # Last directory is then our template
+      $template = (File::Spec->splitdir($directories))[-1];
+
+      # Prepend the supplied directory or temp dir
+      if ($options{"DIR"}) {
+
+        $template = File::Spec->catdir($options{"DIR"}, $template);
+
+      } elsif ($options{TMPDIR}) {
+
+        # Prepend tmpdir
+        $template = File::Spec->catdir(File::Spec->tmpdir, $template);
+
+      }
+
+    }
+
+  } else {
+
+    if ($options{"DIR"}) {
+
+      $template = File::Spec->catdir($options{"DIR"}, TEMPXXX);
+
+    } else {
+
+      $template = File::Spec->catdir(File::Spec->tmpdir, TEMPXXX);
+
+    }
+
+  }
+
+  # Create the directory
+  my $tempdir;
+  my $suffixlen = 0;
+  if ($^O eq 'VMS') {           # dir names can end in delimiters
+    $template =~ m/([\.\]:>]+)$/;
+    $suffixlen = length($1);
+  }
+  if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
+    # dir name has a trailing ':'
+    ++$suffixlen;
+  }
+
+  my $errstr;
+  croak "Error in tempdir() using $template: $errstr"
+    unless ((undef, $tempdir) = _gettemp($template,
+                                         "open" => 0,
+                                         "mkdir"=> 1 ,
+                                         "suffixlen" => $suffixlen,
+                                         "ErrStr" => \$errstr,
+                                        ) );
+
+  # Install exit handler; must be dynamic to get lexical
+  if ( $options{'CLEANUP'} && -d $tempdir) {
+    _deferred_unlink(undef, $tempdir, 1);
+  }
+
+  # Return the dir name
+  return $tempdir;
+
+}
+
+=back
+
+=head1 MKTEMP FUNCTIONS
+
+The following functions are Perl implementations of the
+mktemp() family of temp file generation system calls.
+
+=over 4
+
+=item B<mkstemp>
+
+Given a template, returns a filehandle to the temporary file and the name
+of the file.
+
+  ($fh, $name) = mkstemp( $template );
+
+In scalar context, just the filehandle is returned.
+
+The template may be any filename with some number of X's appended
+to it, for example F</tmp/temp.XXXX>. The trailing X's are replaced
+with unique alphanumeric combinations.
+
+Will croak() if there is an error.
+
+=cut
+
+
+
+sub mkstemp {
+
+  croak "Usage: mkstemp(template)"
+    if scalar(@_) != 1;
+
+  my $template = shift;
+
+  my ($fh, $path, $errstr);
+  croak "Error in mkstemp using $template: $errstr"
+    unless (($fh, $path) = _gettemp($template,
+                                    "open" => 1,
+                                    "mkdir"=> 0 ,
+                                    "suffixlen" => 0,
+                                    "ErrStr" => \$errstr,
+                                   ) );
+
+  if (wantarray()) {
+    return ($fh, $path);
+  } else {
+    return $fh;
+  }
+
+}
+
+
+=item B<mkstemps>
+
+Similar to mkstemp(), except that an extra argument can be supplied
+with a suffix to be appended to the template.
+
+  ($fh, $name) = mkstemps( $template, $suffix );
+
+For example a template of C<testXXXXXX> and suffix of C<.dat>
+would generate a file similar to F<testhGji_w.dat>.
+
+Returns just the filehandle alone when called in scalar context.
+
+Will croak() if there is an error.
+
+=cut
+
+sub mkstemps {
+
+  croak "Usage: mkstemps(template, suffix)"
+    if scalar(@_) != 2;
+
+
+  my $template = shift;
+  my $suffix   = shift;
+
+  $template .= $suffix;
+
+  my ($fh, $path, $errstr);
+  croak "Error in mkstemps using $template: $errstr"
+    unless (($fh, $path) = _gettemp($template,
+                                    "open" => 1,
+                                    "mkdir"=> 0 ,
+                                    "suffixlen" => length($suffix),
+                                    "ErrStr" => \$errstr,
+                                   ) );
+
+  if (wantarray()) {
+    return ($fh, $path);
+  } else {
+    return $fh;
+  }
+
+}
+
+=item B<mkdtemp>
+
+Create a directory from a template. The template must end in
+X's that are replaced by the routine.
+
+  $tmpdir_name = mkdtemp($template);
+
+Returns the name of the temporary directory created.
+
+Directory must be removed by the caller.
+
+Will croak() if there is an error.
+
+=cut
+
+#' # for emacs
+
+sub mkdtemp {
+
+  croak "Usage: mkdtemp(template)"
+    if scalar(@_) != 1;
+
+  my $template = shift;
+  my $suffixlen = 0;
+  if ($^O eq 'VMS') {           # dir names can end in delimiters
+    $template =~ m/([\.\]:>]+)$/;
+    $suffixlen = length($1);
+  }
+  if ( ($^O eq 'MacOS') && (substr($template, -1) eq ':') ) {
+    # dir name has a trailing ':'
+    ++$suffixlen;
+  }
+  my ($junk, $tmpdir, $errstr);
+  croak "Error creating temp directory from template $template\: $errstr"
+    unless (($junk, $tmpdir) = _gettemp($template,
+                                        "open" => 0,
+                                        "mkdir"=> 1 ,
+                                        "suffixlen" => $suffixlen,
+                                        "ErrStr" => \$errstr,
+                                       ) );
+
+  return $tmpdir;
+
+}
+
+=item B<mktemp>
+
+Returns a valid temporary filename but does not guarantee
+that the file will not be opened by someone else.
+
+  $unopened_file = mktemp($template);
+
+Template is the same as that required by mkstemp().
+
+Will croak() if there is an error.
+
+=cut
+
+sub mktemp {
+
+  croak "Usage: mktemp(template)"
+    if scalar(@_) != 1;
+
+  my $template = shift;
+
+  my ($tmpname, $junk, $errstr);
+  croak "Error getting name to temp file from template $template: $errstr"
+    unless (($junk, $tmpname) = _gettemp($template,
+                                         "open" => 0,
+                                         "mkdir"=> 0 ,
+                                         "suffixlen" => 0,
+                                         "ErrStr" => \$errstr,
+                                        ) );
+
+  return $tmpname;
+}
+
+=back
+
+=head1 POSIX FUNCTIONS
+
+This section describes the re-implementation of the tmpnam()
+and tmpfile() functions described in L<POSIX>
+using the mkstemp() from this module.
+
+Unlike the L<POSIX|POSIX> implementations, the directory used
+for the temporary file is not specified in a system include
+file (C<P_tmpdir>) but simply depends on the choice of tmpdir()
+returned by L<File::Spec|File::Spec>. On some implementations this
+location can be set using the C<TMPDIR> environment variable, which
+may not be secure.
+If this is a problem, simply use mkstemp() and specify a template.
+
+=over 4
+
+=item B<tmpnam>
+
+When called in scalar context, returns the full name (including path)
+of a temporary file (uses mktemp()). The only check is that the file does
+not already exist, but there is no guarantee that that condition will
+continue to apply.
+
+  $file = tmpnam();
+
+When called in list context, a filehandle to the open file and
+a filename are returned. This is achieved by calling mkstemp()
+after constructing a suitable template.
+
+  ($fh, $file) = tmpnam();
+
+If possible, this form should be used to prevent possible
+race conditions.
+
+See L<File::Spec/tmpdir> for information on the choice of temporary
+directory for a particular operating system.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tmpnam {
+
+  # Retrieve the temporary directory name
+  my $tmpdir = File::Spec->tmpdir;
+
+  croak "Error temporary directory is not writable"
+    if $tmpdir eq '';
+
+  # Use a ten character template and append to tmpdir
+  my $template = File::Spec->catfile($tmpdir, TEMPXXX);
+
+  if (wantarray() ) {
+    return mkstemp($template);
+  } else {
+    return mktemp($template);
+  }
+
+}
+
+=item B<tmpfile>
+
+Returns the filehandle of a temporary file.
+
+  $fh = tmpfile();
+
+The file is removed when the filehandle is closed or when the program
+exits. No access to the filename is provided.
+
+If the temporary file can not be created undef is returned.
+Currently this command will probably not work when the temporary
+directory is on an NFS file system.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tmpfile {
+
+  # Simply call tmpnam() in a list context
+  my ($fh, $file) = tmpnam();
+
+  # Make sure file is removed when filehandle is closed
+  # This will fail on NFS
+  unlink0($fh, $file)
+    or return undef;
+
+  return $fh;
+
+}
+
+=back
+
+=head1 ADDITIONAL FUNCTIONS
+
+These functions are provided for backwards compatibility
+with common tempfile generation C library functions.
+
+They are not exported and must be addressed using the full package
+name.
+
+=over 4
+
+=item B<tempnam>
+
+Return the name of a temporary file in the specified directory
+using a prefix. The file is guaranteed not to exist at the time
+the function was called, but such guarantees are good for one
+clock tick only.  Always use the proper form of C<sysopen>
+with C<O_CREAT | O_EXCL> if you must open such a filename.
+
+  $filename = File::Temp::tempnam( $dir, $prefix );
+
+Equivalent to running mktemp() with $dir/$prefixXXXXXXXX
+(using unix file convention as an example)
+
+Because this function uses mktemp(), it can suffer from race conditions.
+
+Will croak() if there is an error.
+
+=cut
+
+sub tempnam {
+
+  croak 'Usage tempnam($dir, $prefix)' unless scalar(@_) == 2;
+
+  my ($dir, $prefix) = @_;
+
+  # Add a string to the prefix
+  $prefix .= 'XXXXXXXX';
+
+  # Concatenate the directory to the file
+  my $template = File::Spec->catfile($dir, $prefix);
+
+  return mktemp($template);
+
+}
+
+=back
+
+=head1 UTILITY FUNCTIONS
+
+Useful functions for dealing with the filehandle and filename.
+
+=over 4
+
+=item B<unlink0>
+
+Given an open filehandle and the associated filename, make a safe
+unlink. This is achieved by first checking that the filename and
+filehandle initially point to the same file and that the number of
+links to the file is 1 (all fields returned by stat() are compared).
+Then the filename is unlinked and the filehandle checked once again to
+verify that the number of links on that file is now 0.  This is the
+closest you can come to making sure that the filename unlinked was the
+same as the file whose descriptor you hold.
+
+  unlink0($fh, $path)
+     or die "Error unlinking file $path safely";
+
+Returns false on error but croaks() if there is a security
+anomaly. The filehandle is not closed since on some occasions this is
+not required.
+
+On some platforms, for example Windows NT, it is not possible to
+unlink an open file (the file must be closed first). On those
+platforms, the actual unlinking is deferred until the program ends and
+good status is returned. A check is still performed to make sure that
+the filehandle and filename are pointing to the same thing (but not at
+the time the end block is executed since the deferred removal may not
+have access to the filehandle).
+
+Additionally, on Windows NT not all the fields returned by stat() can
+be compared. For example, the C<dev> and C<rdev> fields seem to be
+different.  Also, it seems that the size of the file returned by stat()
+does not always agree, with C<stat(FH)> being more accurate than
+C<stat(filename)>, presumably because of caching issues even when
+using autoflush (this is usually overcome by waiting a while after
+writing to the tempfile before attempting to C<unlink0> it).
+
+Finally, on NFS file systems the link count of the file handle does
+not always go to zero immediately after unlinking. Currently, this
+command is expected to fail on NFS disks.
+
+This function is disabled if the global variable $KEEP_ALL is true
+and an unlink on open file is supported. If the unlink is to be deferred
+to the END block, the file is still registered for removal.
+
+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.
+
+=cut
+
+sub unlink0 {
+
+  croak 'Usage: unlink0(filehandle, filename)'
+    unless scalar(@_) == 2;
+
+  # Read args
+  my ($fh, $path) = @_;
+
+  cmpstat($fh, $path) or return 0;
+
+  # attempt remove the file (does not work on some platforms)
+  if (_can_unlink_opened_file()) {
+
+    # return early (Without unlink) if we have been instructed to retain files.
+    return 1 if $KEEP_ALL;
+
+    # XXX: do *not* call this on a directory; possible race
+    #      resulting in recursive removal
+    croak "unlink0: $path has become a directory!" if -d $path;
+    unlink($path) or return 0;
+
+    # Stat the filehandle
+    my @fh = stat $fh;
+
+    print "Link count = $fh[3] \n" if $DEBUG;
+
+    # Make sure that the link count is zero
+    # - Cygwin provides deferred unlinking, however,
+    #   on Win9x the link count remains 1
+    # On NFS the link count may still be 1 but we can't know that
+    # we are on NFS.  Since we can't be sure, we'll defer it
+
+    return 1 if $fh[3] == 0 || $^O eq 'cygwin';
+  }
+  # fall-through if we can't unlink now
+  _deferred_unlink($fh, $path, 0);
+  return 1;
+}
+
+=item B<cmpstat>
+
+Compare C<stat> of filehandle with C<stat> of provided filename.  This
+can be used to check that the filename and filehandle initially point
+to the same file and that the number of links to the file is 1 (all
+fields returned by stat() are compared).
+
+  cmpstat($fh, $path)
+     or die "Error comparing handle with file";
+
+Returns false if the stat information differs or if the link count is
+greater than 1. Calls croak if there is a security anomaly.
+
+On certain platforms, for example Windows, not all the fields returned by stat()
+can be compared. For example, the C<dev> and C<rdev> fields seem to be
+different in Windows.  Also, it seems that the size of the file
+returned by stat() does not always agree, with C<stat(FH)> being more
+accurate than C<stat(filename)>, presumably because of caching issues
+even when using autoflush (this is usually overcome by waiting a while
+after writing to the tempfile before attempting to C<unlink0> it).
+
+Not exported by default.
+
+=cut
+
+sub cmpstat {
+
+  croak 'Usage: cmpstat(filehandle, filename)'
+    unless scalar(@_) == 2;
+
+  # Read args
+  my ($fh, $path) = @_;
+
+  warn "Comparing stat\n"
+    if $DEBUG;
+
+  # Stat the filehandle - which may be closed if someone has manually
+  # closed the file. Can not turn off warnings without using $^W
+  # unless we upgrade to 5.006 minimum requirement
+  my @fh;
+  {
+    local ($^W) = 0;
+    @fh = stat $fh;
+  }
+  return unless @fh;
+
+  if ($fh[3] > 1 && $^W) {
+    carp "unlink0: fstat found too many links; SB=@fh" if $^W;
+  }
+
+  # Stat the path
+  my @path = stat $path;
+
+  unless (@path) {
+    carp "unlink0: $path is gone already" if $^W;
+    return;
+  }
+
+  # this is no longer a file, but may be a directory, or worse
+  unless (-f $path) {
+    confess "panic: $path is no longer a file: SB=@fh";
+  }
+
+  # Do comparison of each member of the array
+  # On WinNT dev and rdev seem to be different
+  # depending on whether it is a file or a handle.
+  # Cannot simply compare all members of the stat return
+  # Select the ones we can use
+  my @okstat = (0..$#fh);       # Use all by default
+  if ($^O eq 'MSWin32') {
+    @okstat = (1,2,3,4,5,7,8,9,10);
+  } elsif ($^O eq 'os2') {
+    @okstat = (0, 2..$#fh);
+  } elsif ($^O eq 'VMS') {      # device and file ID are sufficient
+    @okstat = (0, 1);
+  } elsif ($^O eq 'dos') {
+    @okstat = (0,2..7,11..$#fh);
+  } elsif ($^O eq 'mpeix') {
+    @okstat = (0..4,8..10);
+  }
+
+  # Now compare each entry explicitly by number
+  for (@okstat) {
+    print "Comparing: $_ : $fh[$_] and $path[$_]\n" if $DEBUG;
+    # Use eq rather than == since rdev, blksize, and blocks (6, 11,
+    # and 12) will be '' on platforms that do not support them.  This
+    # is fine since we are only comparing integers.
+    unless ($fh[$_] eq $path[$_]) {
+      warn "Did not match $_ element of stat\n" if $DEBUG;
+      return 0;
+    }
+  }
+
+  return 1;
+}
+
+=item B<unlink1>
+
+Similar to C<unlink0> except after file comparison using cmpstat, the
+filehandle is closed prior to attempting to unlink the file. This
+allows the file to be removed without using an END block, but does
+mean that the post-unlink comparison of the filehandle state provided
+by C<unlink0> is not available.
+
+  unlink1($fh, $path)
+     or die "Error closing and unlinking file";
+
+Usually called from the object destructor when using the OO interface.
+
+Not exported by default.
+
+This function is disabled if the global variable $KEEP_ALL is true.
+
+Can call croak() if there is a security anomaly during the stat()
+comparison.
+
+=cut
+
+sub unlink1 {
+  croak 'Usage: unlink1(filehandle, filename)'
+    unless scalar(@_) == 2;
+
+  # Read args
+  my ($fh, $path) = @_;
+
+  cmpstat($fh, $path) or return 0;
+
+  # Close the file
+  close( $fh ) or return 0;
+
+  # Make sure the file is writable (for windows)
+  _force_writable( $path );
+
+  # return early (without unlink) if we have been instructed to retain files.
+  return 1 if $KEEP_ALL;
+
+  # remove the file
+  return unlink($path);
+}
+
+=item B<cleanup>
+
+Calling this function will cause any temp files or temp directories
+that are registered for removal to be removed. This happens automatically
+when the process exits but can be triggered manually if the caller is sure
+that none of the temp files are required. This method can be registered as
+an Apache callback.
+
+Note that if a temp directory is your current directory, it cannot be
+removed.  C<chdir()> out of the directory first before calling
+C<cleanup()>. (For the cleanup at program exit when the CLEANUP flag
+is set, this happens automatically.)
+
+On OSes where temp files are automatically removed when the temp file
+is closed, calling this function will have no effect other than to remove
+temporary directories (which may include temporary files).
+
+  File::Temp::cleanup();
+
+Not exported by default.
+
+=back
+
+=head1 PACKAGE VARIABLES
+
+These functions control the global state of the package.
+
+=over 4
+
+=item B<safe_level>
+
+Controls the lengths to which the module will go to check the safety of the
+temporary file or directory before proceeding.
+Options are:
+
+=over 8
+
+=item STANDARD
+
+Do the basic security measures to ensure the directory exists and is
+writable, that temporary files are opened only if they do not already
+exist, and that possible race conditions are avoided.  Finally the
+L<unlink0|"unlink0"> function is used to remove files safely.
+
+=item MEDIUM
+
+In addition to the STANDARD security, the output directory is checked
+to make sure that it is owned either by root or the user running the
+program. If the directory is writable by group or by other, it is then
+checked to make sure that the sticky bit is set.
+
+Will not work on platforms that do not support the C<-k> test
+for sticky bit.
+
+=item HIGH
+
+In addition to the MEDIUM security checks, also check for the
+possibility of ``chown() giveaway'' using the L<POSIX|POSIX>
+sysconf() function. If this is a possibility, each directory in the
+path is checked in turn for safeness, recursively walking back to the
+root directory.
+
+For platforms that do not support the L<POSIX|POSIX>
+C<_PC_CHOWN_RESTRICTED> symbol (for example, Windows NT) it is
+assumed that ``chown() giveaway'' is possible and the recursive test
+is performed.
+
+=back
+
+The level can be changed as follows:
+
+  File::Temp->safe_level( File::Temp::HIGH );
+
+The level constants are not exported by the module.
+
+Currently, you must be running at least perl v5.6.0 in order to
+run with MEDIUM or HIGH security. This is simply because the
+safety tests use functions from L<Fcntl|Fcntl> that are not
+available in older versions of perl. The problem is that the version
+number for Fcntl is the same in perl 5.6.0 and in 5.005_03 even though
+they are different versions.
+
+On systems that do not support the HIGH or MEDIUM safety levels
+(for example Win NT or OS/2) any attempt to change the level will
+be ignored. The decision to ignore rather than raise an exception
+allows portable programs to be written with high security in mind
+for the systems that can support this without those programs failing
+on systems where the extra tests are irrelevant.
+
+If you really need to see whether the change has been accepted
+simply examine the return value of C<safe_level>.
+
+  $newlevel = File::Temp->safe_level( File::Temp::HIGH );
+  die "Could not change to high security"
+      if $newlevel != File::Temp::HIGH;
+
+=cut
+
+{
+  # protect from using the variable itself
+  my $LEVEL = STANDARD;
+  sub safe_level {
+    my $self = shift;
+    if (@_) {
+      my $level = shift;
+      if (($level != STANDARD) && ($level != MEDIUM) && ($level != HIGH)) {
+        carp "safe_level: Specified level ($level) not STANDARD, MEDIUM or HIGH - ignoring\n" if $^W;
+      } else {
+        # Don't allow this on perl 5.005 or earlier
+        if ($] < 5.006 && $level != STANDARD) {
+          # Cant do MEDIUM or HIGH checks
+          croak "Currently requires perl 5.006 or newer to do the safe checks";
+        }
+        # Check that we are allowed to change level
+        # Silently ignore if we can not.
+        $LEVEL = $level if _can_do_level($level);
+      }
+    }
+    return $LEVEL;
+  }
+}
+
+=item TopSystemUID
+
+This is the highest UID on the current system that refers to a root
+UID. This is used to make sure that the temporary directory is
+owned by a system UID (C<root>, C<bin>, C<sys> etc) rather than
+simply by root.
+
+This is required since on many unix systems C</tmp> is not owned
+by root.
+
+Default is to assume that any UID less than or equal to 10 is a root
+UID.
+
+  File::Temp->top_system_uid(10);
+  my $topid = File::Temp->top_system_uid;
+
+This value can be adjusted to reduce security checking if required.
+The value is only relevant when C<safe_level> is set to MEDIUM or higher.
+
+=cut
+
+{
+  my $TopSystemUID = 10;
+  $TopSystemUID = 197108 if $^O eq 'interix'; # "Administrator"
+  sub top_system_uid {
+    my $self = shift;
+    if (@_) {
+      my $newuid = shift;
+      croak "top_system_uid: UIDs should be numeric"
+        unless $newuid =~ /^\d+$/s;
+      $TopSystemUID = $newuid;
+    }
+    return $TopSystemUID;
+  }
+}
+
+=item B<$KEEP_ALL>
+
+Controls whether temporary files and directories should be retained
+regardless of any instructions in the program to remove them
+automatically.  This is useful for debugging but should not be used in
+production code.
+
+  $File::Temp::KEEP_ALL = 1;
+
+Default is for files to be removed as requested by the caller.
+
+In some cases, files will only be retained if this variable is true
+when the file is created. This means that you can not create a temporary
+file, set this variable and expect the temp file to still be around
+when the program exits.
+
+=item B<$DEBUG>
+
+Controls whether debugging messages should be enabled.
+
+  $File::Temp::DEBUG = 1;
+
+Default is for debugging mode to be disabled.
+
+=back
+
+=head1 WARNING
+
+For maximum security, endeavour always to avoid ever looking at,
+touching, or even imputing the existence of the filename.  You do not
+know that that filename is connected to the same file as the handle
+you have, and attempts to check this can only trigger more race
+conditions.  It's far more secure to use the filehandle alone and
+dispense with the filename altogether.
+
+If you need to pass the handle to something that expects a filename
+then on a unix system you can use C<"/dev/fd/" . fileno($fh)> for
+arbitrary programs. Perl code that uses the 2-argument version of
+C<< open >> can be passed C<< "+<=&" . fileno($fh) >>. Otherwise you
+will need to pass the filename. You will have to clear the
+close-on-exec bit on that file descriptor before passing it to another
+process.
+
+    use Fcntl qw/F_SETFD F_GETFD/;
+    fcntl($tmpfh, F_SETFD, 0)
+        or die "Can't clear close-on-exec flag on temp fh: $!\n";
+
+=head2 Temporary files and NFS
+
+Some problems are associated with using temporary files that reside
+on NFS file systems and it is recommended that a local filesystem
+is used whenever possible. Some of the security tests will most probably
+fail when the temp file is not local. Additionally, be aware that
+the performance of I/O operations over NFS will not be as good as for
+a local disk.
+
+=head2 Forking
+
+In some cases files created by File::Temp are removed from within an
+END block. Since END blocks are triggered when a child process exits
+(unless C<POSIX::_exit()> is used by the child) File::Temp takes care
+to only remove those temp files created by a particular process ID. This
+means that a child will not attempt to remove temp files created by the
+parent process.
+
+If you are forking many processes in parallel that are all creating
+temporary files, you may need to reset the random number seed using
+srand(EXPR) in each child else all the children will attempt to walk
+through the same set of random file names and may well cause
+themselves to give up if they exceed the number of retry attempts.
+
+=head2 Directory removal
+
+Note that if you have chdir'ed into the temporary directory and it is
+subsequently cleaned up (either in the END block or as part of object
+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.
+
+=head2 BINMODE
+
+The file returned by File::Temp will have been opened in binary mode
+if such a mode is available. If that is not correct, use the C<binmode()>
+function to change the mode of the filehandle.
+
+Note that you can modify the encoding of a file opened by File::Temp
+also by using C<binmode()>.
+
+=head1 HISTORY
+
+Originally began life in May 1999 as an XS interface to the system
+mkstemp() function. In March 2000, the OpenBSD mkstemp() code was
+translated to Perl for total control of the code's
+security checking, to ensure the presence of the function regardless of
+operating system and to help with portability. The module was shipped
+as a standard part of perl from v5.6.1.
+
+=head1 SEE ALSO
+
+L<POSIX/tmpnam>, L<POSIX/tmpfile>, L<File::Spec>, L<File::Path>
+
+See L<IO::File> and L<File::MkTemp>, L<Apache::TempFile> for
+different implementations of temporary file handling.
+
+See L<File::Tempdir> for an alternative object-oriented wrapper for
+the C<tempdir> function.
+
+=head1 AUTHOR
+
+Tim Jenness E<lt>tjenness at cpan.orgE<gt>
+
+Copyright (C) 2007-2010 Tim Jenness.
+Copyright (C) 1999-2007 Tim Jenness and the UK Particle Physics and
+Astronomy Research Council. All Rights Reserved.  This program is free
+software; you can redistribute it and/or modify it under the same
+terms as Perl itself.
+
+Original Perl implementation loosely based on the OpenBSD C code for
+mkstemp(). Thanks to Tom Christiansen for suggesting that this module
+should be written and providing ideas for code improvements and
+security enhancements.
+
+=cut
+
+package File::Temp::Dir;
+
+use File::Path qw/ rmtree /;
+use strict;
+use overload '""' => "STRINGIFY",
+  '0+' => \&File::Temp::NUMIFY,
+  fallback => 1;
+
+# private class specifically to support tempdir objects
+# created by File::Temp->newdir
+
+# ostensibly the same method interface as File::Temp but without
+# inheriting all the IO::Seekable methods and other cruft
+
+# Read-only - returns the name of the temp directory
+
+sub dirname {
+  my $self = shift;
+  return $self->{DIRNAME};
+}
+
+sub STRINGIFY {
+  my $self = shift;
+  return $self->dirname;
+}
+
+sub unlink_on_destroy {
+  my $self = shift;
+  if (@_) {
+    $self->{CLEANUP} = shift;
+  }
+  return $self->{CLEANUP};
+}
+
+sub DESTROY {
+  my $self = shift;
+  local($., $@, $!, $^E, $?);
+  if ($self->unlink_on_destroy && 
+      $$ == $self->{LAUNCHPID} && !$File::Temp::KEEP_ALL) {
+    if (-d $self->{REALNAME}) {
+      # Some versions of rmtree will abort if you attempt to remove
+      # the directory you are sitting in. We protect that and turn it
+      # into a warning. We do this because this occurs during object
+      # destruction and so can not be caught by the user.
+      eval { rmtree($self->{REALNAME}, $File::Temp::DEBUG, 0); };
+      warn $@ if ($@ && $^W);
+    }
+  }
+}
+
+
+1;
+
+# vim: ts=2 sts=2 sw=2 et:

Added: vendor/perl/dist/cpan/File-Temp/t/rmtree.t
===================================================================
--- vendor/perl/dist/cpan/File-Temp/t/rmtree.t	                        (rev 0)
+++ vendor/perl/dist/cpan/File-Temp/t/rmtree.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,44 @@
+#!/usr/bin/perl
+
+use Test::More tests => 1;
+
+use File::Spec;
+use File::Path;
+use File::Temp;
+
+rmtree "testing";
+mkdir "testing" or die "mkdir failed: $!";
+chdir "testing";
+mkdir "tmp" or die "mkdir failed: $!";
+
+my $tempdirstr;
+{
+    my $dir = File::Temp->newdir( DIR => "tmp" );
+    $tempdirstr = "$dir";
+
+    mkdir "hide" or die "mkdir failed: $!";
+    chdir "hide";
+}
+
+chdir File::Spec->updir;
+$tempdirstr = File::Spec->rel2abs($tempdirstr);
+ok !-d $tempdirstr or diag dircontent("tmp", $tempdirstr);
+
+# cleanup
+chdir File::Spec->updir;
+rmtree( "testing" );
+
+exit;
+
+sub dircontent {
+  my $dir = shift;
+  my $tempdirstr = shift;
+  my $str = "Contents of $dir (should not contain \"$tempdirstr\"):\n";
+  opendir(my $DH, $dir) or die "opendir failed; $!";
+  my @contents = grep { $_ !~ /^\.+/; } readdir($DH);
+  closedir($DH);
+  for my $ls (@contents) {
+    $str .= "  $ls\n";
+  }
+  return $str;
+}

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/003_agent.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/003_agent.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/003_agent.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,33 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+use HTTP::Tiny;
+
+# a couple tests to ensure that we get the default agent expected, the coorect
+# agent when specified, and the correct agent when specifified with a space at
+# the end of the string (as LWP::UserAgent does)
+
+
+my $default = 'HTTP-Tiny/' . (HTTP::Tiny->VERSION || 0);
+
+{
+    my $ua = HTTP::Tiny->new();
+    is $ua->agent, $default, 'default agent string is as expected';
+}
+
+{
+    my $ua = HTTP::Tiny->new(agent => 'something else');
+    is $ua->agent, 'something else', 'agent string is as expected';
+}
+
+{
+    my $ua = HTTP::Tiny->new(agent => 'something else ');
+    is
+        $ua->agent,
+        "something else $default",
+        'agent string is as properly appended to',
+        ;
+}

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/101_head.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/101_head.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/101_head.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,74 @@
+#!perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Test::More 0.88;
+use t::Util    qw[tmpfile rewind slurp monkey_patch dir_list parse_case
+                  set_socket_source sort_headers $CRLF $LF];
+use HTTP::Tiny;
+BEGIN { monkey_patch() }
+
+for my $file ( dir_list("t/cases", qr/^head/ ) ) {
+  my $data = do { local (@ARGV,$/) = $file; <> };
+  my ($params, $expect_req, $give_res) = split /--+\n/, $data;
+  # cleanup source data
+  my $version = HTTP::Tiny->VERSION || 0;
+  $expect_req =~ s{VERSION}{$version};
+  s{\n}{$CRLF}g for ($expect_req, $give_res);
+
+  # figure out what request to make
+  my $case = parse_case($params);
+  my $url = $case->{url}[0];
+  my %options;
+
+  my %headers;
+  for my $line ( @{ $case->{headers} } ) {
+    my ($k,$v) = ($line =~ m{^([^:]+): (.*)$}g);
+    $headers{$k} = $v;
+  }
+  $options{headers} = \%headers if %headers;
+
+  if ( $case->{content} ) {
+    $options{content} = $case->{content}[0];
+  }
+  elsif ( $case->{content_cb} ) {
+    $options{content} = eval join "\n", @{$case->{content_cb}};
+  }
+
+  if ( $case->{trailer_cb} ) {
+    $options{trailer_callback} = eval join "\n", @{$case->{trailer_cb}};
+  }
+
+  # setup mocking and test
+  my $res_fh = tmpfile($give_res);
+  my $req_fh = tmpfile();
+
+  my $http = HTTP::Tiny->new;
+  set_socket_source($req_fh, $res_fh);
+
+  (my $url_basename = $url) =~ s{.*/}{};
+
+  my @call_args = %options ? ($url, \%options) : ($url);
+  my $response  = $http->head(@call_args);
+
+  my $got_req = slurp($req_fh);
+
+  my $label = basename($file);
+
+  is( sort_headers($got_req), sort_headers($expect_req), "$label request" );
+
+  my ($rc) = $give_res =~ m{\S+\s+(\d+)}g;
+  is( $response->{status}, $rc, "$label response code $rc" )
+    or diag $response->{content};
+
+  if ( substr($rc,0,1) eq '2' ) {
+    ok( $response->{success}, "$label success flag true" );
+  }
+  else {
+    ok( ! $response->{success}, "$label success flag false" );
+  }
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/102_put.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/102_put.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/102_put.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,74 @@
+#!perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Test::More 0.88;
+use t::Util    qw[tmpfile rewind slurp monkey_patch dir_list parse_case
+                  set_socket_source sort_headers $CRLF $LF];
+use HTTP::Tiny;
+BEGIN { monkey_patch() }
+
+for my $file ( dir_list("t/cases", qr/^put/ ) ) {
+  my $data = do { local (@ARGV,$/) = $file; <> };
+  my ($params, $expect_req, $give_res) = split /--+\n/, $data;
+  # cleanup source data
+  my $version = HTTP::Tiny->VERSION || 0;
+  $expect_req =~ s{VERSION}{$version};
+  s{\n}{$CRLF}g for ($expect_req, $give_res);
+
+  # figure out what request to make
+  my $case = parse_case($params);
+  my $url = $case->{url}[0];
+  my %options;
+
+  my %headers;
+  for my $line ( @{ $case->{headers} } ) {
+    my ($k,$v) = ($line =~ m{^([^:]+): (.*)$}g);
+    $headers{$k} = $v;
+  }
+  $options{headers} = \%headers if %headers;
+
+  if ( $case->{content} ) {
+    $options{content} = $case->{content}[0];
+  }
+  elsif ( $case->{content_cb} ) {
+    $options{content} = eval join "\n", @{$case->{content_cb}};
+  }
+
+  if ( $case->{trailer_cb} ) {
+    $options{trailer_callback} = eval join "\n", @{$case->{trailer_cb}};
+  }
+
+  # setup mocking and test
+  my $res_fh = tmpfile($give_res);
+  my $req_fh = tmpfile();
+
+  my $http = HTTP::Tiny->new;
+  set_socket_source($req_fh, $res_fh);
+
+  (my $url_basename = $url) =~ s{.*/}{};
+
+  my @call_args = %options ? ($url, \%options) : ($url);
+  my $response  = $http->put(@call_args);
+
+  my $got_req = slurp($req_fh);
+
+  my $label = basename($file);
+
+  is( sort_headers($got_req), sort_headers($expect_req), "$label request" );
+
+  my ($rc) = $give_res =~ m{\S+\s+(\d+)}g;
+  is( $response->{status}, $rc, "$label response code $rc" )
+    or diag $response->{content};
+
+  if ( substr($rc,0,1) eq '2' ) {
+    ok( $response->{success}, "$label success flag true" );
+  }
+  else {
+    ok( ! $response->{success}, "$label success flag false" );
+  }
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/103_delete.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/103_delete.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/103_delete.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,74 @@
+#!perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Test::More 0.88;
+use t::Util    qw[tmpfile rewind slurp monkey_patch dir_list parse_case
+                  set_socket_source sort_headers $CRLF $LF];
+use HTTP::Tiny;
+BEGIN { monkey_patch() }
+
+for my $file ( dir_list("t/cases", qr/^delete/ ) ) {
+  my $data = do { local (@ARGV,$/) = $file; <> };
+  my ($params, $expect_req, $give_res) = split /--+\n/, $data;
+  # cleanup source data
+  my $version = HTTP::Tiny->VERSION || 0;
+  $expect_req =~ s{VERSION}{$version};
+  s{\n}{$CRLF}g for ($expect_req, $give_res);
+
+  # figure out what request to make
+  my $case = parse_case($params);
+  my $url = $case->{url}[0];
+  my %options;
+
+  my %headers;
+  for my $line ( @{ $case->{headers} } ) {
+    my ($k,$v) = ($line =~ m{^([^:]+): (.*)$}g);
+    $headers{$k} = $v;
+  }
+  $options{headers} = \%headers if %headers;
+
+  if ( $case->{content} ) {
+    $options{content} = $case->{content}[0];
+  }
+  elsif ( $case->{content_cb} ) {
+    $options{content} = eval join "\n", @{$case->{content_cb}};
+  }
+
+  if ( $case->{trailer_cb} ) {
+    $options{trailer_callback} = eval join "\n", @{$case->{trailer_cb}};
+  }
+
+  # setup mocking and test
+  my $res_fh = tmpfile($give_res);
+  my $req_fh = tmpfile();
+
+  my $http = HTTP::Tiny->new;
+  set_socket_source($req_fh, $res_fh);
+
+  (my $url_basename = $url) =~ s{.*/}{};
+
+  my @call_args = %options ? ($url, \%options) : ($url);
+  my $response  = $http->delete(@call_args);
+
+  my $got_req = slurp($req_fh);
+
+  my $label = basename($file);
+
+  is( sort_headers($got_req), sort_headers($expect_req), "$label request" );
+
+  my ($rc) = $give_res =~ m{\S+\s+(\d+)}g;
+  is( $response->{status}, $rc, "$label response code $rc" )
+    or diag $response->{content};
+
+  if ( substr($rc,0,1) eq '2' ) {
+    ok( $response->{success}, "$label success flag true" );
+  }
+  else {
+    ok( ! $response->{success}, "$label success flag false" );
+  }
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/104_post.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/104_post.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/104_post.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,74 @@
+#!perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Test::More 0.88;
+use t::Util    qw[tmpfile rewind slurp monkey_patch dir_list parse_case
+                  set_socket_source sort_headers $CRLF $LF];
+use HTTP::Tiny;
+BEGIN { monkey_patch() }
+
+for my $file ( dir_list("t/cases", qr/^post/ ) ) {
+  my $data = do { local (@ARGV,$/) = $file; <> };
+  my ($params, $expect_req, $give_res) = split /--+\n/, $data;
+  # cleanup source data
+  my $version = HTTP::Tiny->VERSION || 0;
+  $expect_req =~ s{VERSION}{$version};
+  s{\n}{$CRLF}g for ($expect_req, $give_res);
+
+  # figure out what request to make
+  my $case = parse_case($params);
+  my $url = $case->{url}[0];
+  my %options;
+
+  my %headers;
+  for my $line ( @{ $case->{headers} } ) {
+    my ($k,$v) = ($line =~ m{^([^:]+): (.*)$}g);
+    $headers{$k} = $v;
+  }
+  $options{headers} = \%headers if %headers;
+
+  if ( $case->{content} ) {
+    $options{content} = $case->{content}[0];
+  }
+  elsif ( $case->{content_cb} ) {
+    $options{content} = eval join "\n", @{$case->{content_cb}};
+  }
+
+  if ( $case->{trailer_cb} ) {
+    $options{trailer_callback} = eval join "\n", @{$case->{trailer_cb}};
+  }
+
+  # setup mocking and test
+  my $res_fh = tmpfile($give_res);
+  my $req_fh = tmpfile();
+
+  my $http = HTTP::Tiny->new;
+  set_socket_source($req_fh, $res_fh);
+
+  (my $url_basename = $url) =~ s{.*/}{};
+
+  my @call_args = %options ? ($url, \%options) : ($url);
+  my $response  = $http->post(@call_args);
+
+  my $got_req = slurp($req_fh);
+
+  my $label = basename($file);
+
+  is( sort_headers($got_req), sort_headers($expect_req), "$label request" );
+
+  my ($rc) = $give_res =~ m{\S+\s+(\d+)}g;
+  is( $response->{status}, $rc, "$label response code $rc" )
+    or diag $response->{content};
+
+  if ( substr($rc,0,1) eq '2' ) {
+    ok( $response->{success}, "$label success flag true" );
+  }
+  else {
+    ok( ! $response->{success}, "$label success flag false" );
+  }
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/140_proxy.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/140_proxy.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/140_proxy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+#!perl
+
+use strict;
+use warnings;
+
+use File::Basename;
+use Test::More 0.88;
+
+use HTTP::Tiny;
+
+# Require a true value
+for my $proxy (undef, "", 0){
+    local $ENV{http_proxy} = $proxy;
+    my $c = HTTP::Tiny->new();
+    ok(!defined $c->proxy);
+}
+
+# trailing / is optional
+for my $proxy ("http://localhost:8080/", "http://localhost:8080"){
+    local $ENV{http_proxy} = $proxy;
+    my $c = HTTP::Tiny->new();
+    is($c->proxy, $proxy);
+}
+
+# http_proxy must be http://<host>:<port> format
+{
+    local $ENV{http_proxy} = "localhost:8080";
+    eval {
+        my $c = HTTP::Tiny->new();
+    };
+    like($@, qr{Environment 'http_proxy' must be in format http://<host>:<port>/});
+}
+
+
+done_testing();
\ No newline at end of file

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/150_post_form.t
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/150_post_form.t	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/150_post_form.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,83 @@
+#!perl
+
+use strict;
+use warnings;
+use open IN => ':raw';
+
+use File::Basename;
+use Test::More 0.88;
+use t::Util    qw[tmpfile rewind slurp monkey_patch dir_list parse_case
+                  set_socket_source sort_headers $CRLF $LF];
+use HTTP::Tiny;
+BEGIN { monkey_patch() }
+
+for my $file ( dir_list("t/cases", qr/^form/ ) ) {
+  my $data = do { local (@ARGV,$/) = $file; <> };
+  my ($params, $expect_req, $give_res) = split /--+\n/, $data;
+  # cleanup source data
+  my $version = HTTP::Tiny->VERSION || 0;
+  $expect_req =~ s{VERSION}{$version};
+  s{\n}{$CRLF}g for ($expect_req, $give_res);
+
+  # figure out what request to make
+  my $case = parse_case($params);
+  my $url = $case->{url}[0];
+  my %options;
+
+  my %headers;
+  for my $line ( @{ $case->{headers} } ) {
+    my ($k,$v) = ($line =~ m{^([^:]+): (.*)$}g);
+    $headers{$k} = $v;
+  }
+  $options{headers} = \%headers if %headers;
+
+  my @params = split "\\|", $case->{content}[0];
+  my $formdata;
+  if ( $case->{datatype} eq 'HASH' ) {
+    while ( @params ) {
+      my ($key, $value) = splice( @params, 0, 2 );
+      if ( ref $formdata->{$key} ) {
+        push @{$formdata->{$key}}, $value;
+      }
+      elsif ( exists $formdata->{$key} ) {
+        $formdata->{$key} = [ $formdata->{$key}, $value ];
+      }
+      else {
+        $formdata->{$key} = $value;
+      }
+    }
+  }
+  else {
+    $formdata = [ @params ];
+  }
+
+  # setup mocking and test
+  my $res_fh = tmpfile($give_res);
+  my $req_fh = tmpfile();
+
+  my $http = HTTP::Tiny->new;
+  set_socket_source($req_fh, $res_fh);
+
+  (my $url_basename = $url) =~ s{.*/}{};
+
+  my $response  = $http->post_form( $url, $formdata, %options ? (\%options) : ());
+
+  my $got_req = slurp($req_fh);
+
+  my $label = basename($file);
+
+  is( sort_headers($got_req), sort_headers($expect_req), "$label request" );
+
+  my ($rc) = $give_res =~ m{\S+\s+(\d+)}g;
+  is( $response->{status}, $rc, "$label response code $rc" )
+    or diag $response->{content};
+
+  if ( substr($rc,0,1) eq '2' ) {
+    ok( $response->{success}, "$label success flag true" );
+  }
+  else {
+    ok( ! $response->{success}, "$label success flag false" );
+  }
+}
+
+done_testing;

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/delete-01.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/delete-01.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/delete-01.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+url
+  http://example.com/index.html
+expected
+  abcdefghijklmnopqrstuvwxyz1234567890abcdef
+----------
+DELETE /index.html HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+
+----------
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Content-Length: 0
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-01.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-01.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-01.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+url
+  http://example.com/new
+headers
+  Content-Type: text/plain
+content
+  key|value|name|John Doe|noise|!@#$%^&*()
+datatype
+  ARRAY
+----------
+POST /new HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 60
+
+key=value&name=John+Doe&noise=%21%40%23%24%25%5E%26%2A%28%29
+----------
+HTTP/1.1 201 Created
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Location: http://example.com/new/01.txt
+Content-Length: 0
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-02.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-02.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-02.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+url
+  http://example.com/new
+content
+  key|value|name|John Doe|noise|!@#$%^&*()
+datatype
+  HASH
+----------
+POST /new HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 60
+
+key=value&name=John+Doe&noise=%21%40%23%24%25%5E%26%2A%28%29
+----------
+HTTP/1.1 201 Created
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Location: http://example.com/new/01.txt
+Content-Length: 0
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-03.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-03.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-03.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+url
+  http://example.com/new
+content
+  bar|baz|ack|foo
+datatype
+  ARRAY 
+----------
+POST /new HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 15
+
+ack=foo&bar=baz
+----------
+HTTP/1.1 201 Created
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Location: http://example.com/new/01.txt
+Content-Length: 0
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-04.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-04.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/form-04.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+url
+  http://example.com/new
+content
+  utf8|☺
+datatype
+  ARRAY
+----------
+POST /new HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+Content-Type: application/x-www-form-urlencoded
+Content-Length: 23
+
+utf8=%C3%A2%C2%98%C2%BA
+----------
+HTTP/1.1 201 Created
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Location: http://example.com/new/01.txt
+Content-Length: 0
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/head-01.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/head-01.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/head-01.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,16 @@
+url
+  http://example.com/index.html
+expected
+  abcdefghijklmnopqrstuvwxyz1234567890abcdef
+----------
+HEAD /index.html HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+
+----------
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Content-Type: text/plain
+Content-Length: 44
+

Added: vendor/perl/dist/cpan/HTTP-Tiny/t/cases/post-01.txt
===================================================================
--- vendor/perl/dist/cpan/HTTP-Tiny/t/cases/post-01.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/HTTP-Tiny/t/cases/post-01.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
+url
+  http://example.com/index.html
+headers
+  Content-Type: text/plain
+  Content-Length: 42
+content
+  abcdefghijklmnopqrstuvwxyz1234567890abcdef
+----------
+POST /index.html HTTP/1.1
+Host: example.com
+Connection: close
+User-Agent: HTTP-Tiny/VERSION
+Content-Type: text/plain
+Content-Length: 42
+
+abcdefghijklmnopqrstuvwxyz1234567890abcdef
+
+----------
+HTTP/1.1 200 OK
+Date: Thu, 03 Feb 1994 00:00:00 GMT
+Content-Type: text/plain
+Content-Length: 42
+
+abcdefghijklmnopqrstuvwxyz1234567890abcdef

Added: vendor/perl/dist/cpan/IO-Compress/bin/zipdetails
===================================================================
--- vendor/perl/dist/cpan/IO-Compress/bin/zipdetails	                        (rev 0)
+++ vendor/perl/dist/cpan/IO-Compress/bin/zipdetails	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2113 @@
+#!/usr/bin/perl
+
+# zipdetails
+#
+# Display info on the contents of a Zip file
+#
+
+use strict;
+use warnings ;
+
+use IO::File;
+use Encode;
+
+# Compression types 
+use constant ZIP_CM_STORE                      => 0 ;
+use constant ZIP_CM_IMPLODE                    => 6 ;
+use constant ZIP_CM_DEFLATE                    => 8 ;
+use constant ZIP_CM_BZIP2                      => 12 ;
+use constant ZIP_CM_LZMA                       => 14 ;
+use constant ZIP_CM_PPMD                       => 98 ; 
+
+# General Purpose Flag
+use constant ZIP_GP_FLAG_ENCRYPTED_MASK        => (1 << 0) ;
+use constant ZIP_GP_FLAG_STREAMING_MASK        => (1 << 3) ;
+use constant ZIP_GP_FLAG_PATCHED_MASK          => (1 << 5) ;
+use constant ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK => (1 << 6) ;
+use constant ZIP_GP_FLAG_LZMA_EOS_PRESENT      => (1 << 1) ;
+use constant ZIP_GP_FLAG_LANGUAGE_ENCODING     => (1 << 11) ;
+
+# Internal File Attributes
+use constant ZIP_IFA_TEXT_MASK                 => 1;
+
+# Signatures for each of the headers
+use constant ZIP_LOCAL_HDR_SIG                 => 0x04034b50;
+use constant ZIP_DATA_HDR_SIG                  => 0x08074b50;
+use constant ZIP_CENTRAL_HDR_SIG               => 0x02014b50;
+use constant ZIP_END_CENTRAL_HDR_SIG           => 0x06054b50;
+use constant ZIP64_END_CENTRAL_REC_HDR_SIG     => 0x06064b50;
+use constant ZIP64_END_CENTRAL_LOC_HDR_SIG     => 0x07064b50;
+use constant ZIP64_ARCHIVE_EXTRA_SIG           => 0x08064b50;
+use constant ZIP64_DIGITAL_SIGNATURE_SIG       => 0x05054b50;
+
+use constant ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG => 0x08064b50;
+
+# Extra sizes
+use constant ZIP_EXTRA_HEADER_SIZE          => 2 ;
+use constant ZIP_EXTRA_MAX_SIZE             => 0xFFFF ;
+use constant ZIP_EXTRA_SUBFIELD_ID_SIZE     => 2 ;
+use constant ZIP_EXTRA_SUBFIELD_LEN_SIZE    => 2 ;
+use constant ZIP_EXTRA_SUBFIELD_HEADER_SIZE => ZIP_EXTRA_SUBFIELD_ID_SIZE +
+                                               ZIP_EXTRA_SUBFIELD_LEN_SIZE;
+use constant ZIP_EXTRA_SUBFIELD_MAX_SIZE    => ZIP_EXTRA_MAX_SIZE - 
+                                               ZIP_EXTRA_SUBFIELD_HEADER_SIZE;
+
+my %ZIP_CompressionMethods =
+    (
+          0 => 'Stored',
+          1 => 'Shrunk',
+          2 => 'Reduced compression factor 1',
+          3 => 'Reduced compression factor 2',
+          4 => 'Reduced compression factor 3',
+          5 => 'Reduced compression factor 4',
+          6 => 'Imploded',
+          7 => 'Reserved for Tokenizing compression algorithm',
+          8 => 'Deflated',
+          9 => 'Enhanced Deflating using Deflate64(tm)',
+         10 => 'PKWARE Data Compression Library Imploding',
+         11 => 'Reserved by PKWARE',
+         12 => 'BZIP2 ',
+         13 => 'Reserved by PKWARE',
+         14 => 'LZMA',
+         15 => 'Reserved by PKWARE',
+         16 => 'Reserved by PKWARE',
+         17 => 'Reserved by PKWARE',
+         18 => 'File is compressed using IBM TERSE (new)',
+         19 => 'IBM LZ77 z Architecture (PFS)',
+         96 => 'WinZip JPEG Compression',
+         97 => 'WavPack compressed data',
+         98 => 'PPMd version I, Rev 1',
+         99 => 'AES Encryption',
+     );
+
+my %OS_Lookup = (
+    0   => "MS-DOS",
+    1   => "Amiga",
+    2   => "OpenVMS",
+    3   => "Unix",
+    4   => "VM/CMS",
+    5   => "Atari ST",
+    6   => "HPFS (OS/2, NT 3.x)",
+    7   => "Macintosh",
+    8   => "Z-System",
+    9   => "CP/M",
+    10  => "Windoxs NTFS or TOPS-20",
+    11  => "MVS or NTFS",
+    12  => "VSE or SMS/QDOS",
+    13  => "Acorn RISC OS",
+    14  => "VFAT",
+    15  => "alternate MVS",
+    16  => "BeOS",
+    17  => "Tandem",
+    18  => "OS/400",
+    19  => "OS/X (Darwin)",
+    30  => "AtheOS/Syllable",
+    );
+
+
+my %Lookup = (
+    ZIP_LOCAL_HDR_SIG,             \&LocalHeader,
+    ZIP_DATA_HDR_SIG,              \&DataHeader,
+    ZIP_CENTRAL_HDR_SIG,           \&CentralHeader,
+    ZIP_END_CENTRAL_HDR_SIG,       \&EndCentralHeader,
+    ZIP64_END_CENTRAL_REC_HDR_SIG, \&Zip64EndCentralHeader,
+    ZIP64_END_CENTRAL_LOC_HDR_SIG, \&Zip64EndCentralLocator,
+    
+    # TODO - Archive Encryption Headers
+    #ZIP_ARCHIVE_EXTRA_DATA_RECORD_SIG
+);
+
+my %Extras = (
+      0x0001,  ['ZIP64', \&decode_Zip64],
+      0x0007,  ['AV Info', undef],
+      0x0008,  ['Extended Language Encoding', undef],
+      0x0009,  ['OS/2 extended attributes', undef],
+      0x000a,  ['NTFS FileTimes', \&decode_NTFS_Filetimes],
+      0x000c,  ['OpenVMS', undef],
+      0x000d,  ['Unix', undef],
+      0x000e,  ['Stream & Fork Descriptors', undef],
+      0x000f,  ['Patch Descriptor', undef],
+      0x0014,  ['PKCS#7 Store for X.509 Certificates', undef],
+      0x0015,  ['X.509 Certificate ID and Signature for individual file', undef],
+      0x0016,  ['X.509 Certificate ID for Central Directory', undef],
+      0x0017,  ['Strong Encryption Header', undef],
+      0x0018,  ['Record Management Controls', undef],
+      0x0019,  ['PKCS#7 Encryption Recipient Certificate List', undef],
+      
+
+      #The Header ID mappings defined by Info-ZIP and third parties are:
+
+      0x0065,  ['IBM S/390 attributes - uncompressed', undef],
+      0x0066,  ['IBM S/390 attributes - compressed', undef],
+      0x07c8,  ['Info-ZIP Macintosh (old, J. Lee)', undef],
+      0x2605,  ['ZipIt Macintosh (first version)', undef],
+      0x2705,  ['ZipIt Macintosh v 1.3.5 and newer (w/o full filename)', undef],
+      0x2805,  ['ZipIt Macintosh v 1.3.5 and newer ', undef],
+      0x334d,  ["Info-ZIP Macintosh (new, D. Haase's 'Mac3' field)", undef],
+      0x4154,  ['Tandem NSK', undef],
+      0x4341,  ['Acorn/SparkFS (David Pilling)', undef],
+      0x4453,  ['Windows NT security descriptor', \&decode_NT_security],
+      0x4690,  ['POSZIP 4690', undef],
+      0x4704,  ['VM/CMS', undef],
+      0x470f,  ['MVS', undef],
+      0x4854,  ['Theos, old inofficial port', undef],
+      0x4b46,  ['FWKCS MD5 (see below)', undef],
+      0x4c41,  ['OS/2 access control list (text ACL)', undef],
+      0x4d49,  ['Info-ZIP OpenVMS (obsolete)', undef],
+      0x4d63,  ['Macintosh SmartZIP, by Macro Bambini', undef],
+      0x4f4c,  ['Xceed original location extra field', undef],
+      0x5356,  ['AOS/VS (binary ACL)', undef],
+      0x5455,  ['Extended Timestamp', \&decode_UT],
+      0x554e,  ['Xceed unicode extra field', \&decode_Xceed_unicode],
+      0x5855,  ['Info-ZIP Unix (original; also OS/2, NT, etc.)', \&decode_UX],
+      0x5a4c,  ['ZipArchive Unicode Filename', undef],
+      0x5a4d,  ['ZipArchive Offsets Array', undef],
+      0x6375,  ["Info-ZIP Unicode Comment", \&decode_up ],
+      0x6542,  ['BeOS (BeBox, PowerMac, etc.)', undef],
+      0x6854,  ['Theos', undef],
+      0x7075,  ["Info-ZIP Unicode Path", \&decode_up ],
+      0x756e,  ['ASi Unix', undef],
+      0x7441,  ['AtheOS (AtheOS/Syllable attributes)', undef],
+      0x7855,  ["Unix Extra type 2", \&decode_Ux],
+      0x7875,  ["Unix Extra Type 3", \&decode_ux],
+      0x9901,  ['AES Encryption', \&decode_AES],
+      0xA220,  ["Microsoft Microsoft Open Packaging Growth Hint", undef ],
+      0xCAFE,  ["Java Executable", \&decode_Java_exe],
+      0xfb4a,  ['SMS/QDOS', undef],
+
+       );
+
+my $VERSION = "1.05" ;
+
+my $FH;
+
+my $ZIP64 = 0 ;
+my $NIBBLES = 8;
+my $LocalHeaderCount = 0;
+my $CentralHeaderCount = 0;
+
+my $START;
+my $OFFSET = new U64 0;
+my $TRAILING = 0 ;
+my $PAYLOADLIMIT = new U64 256;
+my $ZERO = new U64 0 ;
+
+sub prOff
+{
+    my $offset = shift;
+    my $s = offset($OFFSET);
+    $OFFSET->add($offset);
+    return $s;
+}
+
+sub offset
+{
+    my $v = shift ;
+
+    if (ref $v eq 'U64') {
+        my $hi = $v->getHigh();
+        my $lo = $v->getLow();
+
+        if ($hi)
+        {
+            my $hiNib = $NIBBLES - 8 ;
+            sprintf("%0${hiNib}X", $hi) .
+            sprintf("%08X", $lo);
+        }
+        else
+        {
+            sprintf("%0${NIBBLES}X", $lo);
+        }
+    }
+    else {
+        sprintf("%0${NIBBLES}X", $v);
+    }
+
+}
+
+my ($OFF,  $LENGTH,  $CONTENT, $TEXT, $VALUE) ;
+
+my $FMT1 ;
+my $FMT2 ;
+
+sub setupFormat
+{
+    my $wantVerbose = shift ;
+    my $nibbles = shift;
+    
+    my $width = '@' . ('>' x ($nibbles -1));
+    my $space = " " x length($width);
+
+    my $fmt ;
+    
+    if ($wantVerbose) {
+        
+        $FMT1 = "
+        format STDOUT =
+$width $width ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\$OFF,     \$LENGTH,  \$CONTENT, \$TEXT,               \$VALUE
+$space $space ^<<<<<<<<<<<^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+                    \$CONTENT, \$TEXT,               \$VALUE
+.                    
+";
+                    
+        $FMT2 = "
+        format STDOUT =
+$width $width ^<<<<<<<<<<<  ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\$OFF,     \$LENGTH,  \$CONTENT, \$TEXT,               \$VALUE
+$space $space ^<<<<<<<<<<<  ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+              \$CONTENT, \$TEXT,               \$VALUE
+.  " ;
+
+    }
+    else {
+
+        $FMT1 = "
+        format STDOUT =
+$width ^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\$OFF,      \$TEXT,               \$VALUE
+$space ^<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+                    \$TEXT,               \$VALUE
+.
+";
+
+        $FMT2 = "
+    format STDOUT =
+$width   ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+\$OFF,     \$TEXT,               \$VALUE
+$space   ^<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+                    \$TEXT,               \$VALUE
+.
+" ;
+    }
+
+    eval "$FMT1";
+    
+    $| = 1;
+
+}
+
+sub mySpr
+{    
+    my $format = shift ;
+    
+    return "" if ! defined $format;
+    return $format unless @_ ;
+    return sprintf $format, @_ ;
+}
+
+sub out0
+{
+    my $size = shift;
+    my $text = shift;
+    my $format = shift;
+    
+    $OFF     = prOff($size);
+    $LENGTH  = offset($size) ;
+    $CONTENT = '...';
+    $TEXT    = $text;
+    $VALUE   = mySpr $format,  @_;
+       
+    write;
+
+    skip($FH, $size);
+}
+
+sub xDump
+{
+    my $input = shift;
+
+    $input =~ tr/\0-\37\177-\377/./;
+    return $input;
+}
+
+sub hexDump
+{
+    my $input = shift;
+
+    my $out = unpack('H*', $input) ;   
+    $out =~ s#(..)# $1#g ;
+    $out =~ s/^ //;
+    $out = uc $out;  
+
+    return $out;
+}
+
+sub out
+{
+    my $data = shift;
+    my $text = shift;
+    my $format = shift;
+    
+    my $size = length($data) ;
+
+    $OFF     = prOff($size);
+    $LENGTH  = offset($size) ;
+    $CONTENT = hexDump($data);
+    $TEXT    = $text;
+    $VALUE   = mySpr $format,  @_;
+       
+    write;
+}
+
+sub out1
+{
+    my $text = shift;
+    my $format = shift;
+      
+    $OFF     = '';
+    $LENGTH  = '' ;
+    $CONTENT = '';
+    $TEXT    = $text;    
+    $VALUE   = mySpr $format,  @_; 
+
+    write;
+}
+
+sub out2
+{
+    my $data = shift ;
+    my $text = shift ;
+    my $format = shift;
+      
+    my $size = length($data) ;
+    $OFF     = prOff($size);
+    $LENGTH  = offset($size);
+    $CONTENT = hexDump($data);
+    $TEXT    = $text;    
+    $VALUE   = mySpr $format,  @_; 
+
+    no warnings;
+    eval "$FMT2";
+    write ;
+    eval "$FMT1";
+}
+
+sub Value
+{
+    my $letter = shift;
+    my @value = @_;
+
+    if ($letter eq 'C')
+      { return Value_C(@value) }
+    elsif ($letter eq 'v')
+      { return Value_v(@value) }
+    elsif ($letter eq 'V')
+      { return Value_V(@value) }
+    elsif ($letter eq 'VV')
+      { return Value_VV(@value) }
+}
+
+sub outer
+{
+    my $name = shift ;
+    my $unpack = shift ;
+    my $size = shift ;
+    my $cb1  = shift ;
+    my $cb2  = shift ;
+
+
+    myRead(my $buff, $size);    
+    my (@value) = unpack $unpack, $buff;
+    my $hex = Value($unpack,  @value);
+
+    if (defined $cb1) {
+        my $v ;
+        if (ref $cb1 eq 'CODE') {
+            $v = $cb1->(@value) ;
+        }
+        else {
+            $v = $cb1 ;
+        }
+
+        $v = "'" . $v unless $v =~ /^'/;
+        $v .= "'"  unless $v =~ /'$/;
+        $hex .= " $v" ;
+    }
+
+    out $buff, $name, $hex ;
+
+    $cb2->(@value)
+        if defined $cb2 ;
+    
+    return $value[0];
+}
+
+sub out_C
+{
+    my $name = shift ;
+    my $cb1  = shift ;
+    my $cb2  = shift ;
+
+    outer($name, 'C', 1, $cb1, $cb2);
+}
+
+sub out_v
+{
+    my $name = shift ;
+    my $cb1  = shift ;
+    my $cb2  = shift ;
+
+    outer($name, 'v', 2, $cb1, $cb2);
+}
+
+sub out_V
+{
+    my $name = shift ;
+    my $cb1  = shift ;
+    my $cb2  = shift ;
+
+    outer($name, 'V', 4, $cb1, $cb2);
+}
+
+sub out_VV
+{
+    my $name = shift ;
+    my $cb1  = shift ;
+    my $cb2  = shift ;
+
+    outer($name, 'VV', 8, $cb1, $cb2);
+}
+
+sub outSomeData
+{
+    my $size = shift;
+    my $message = shift;
+
+    my $size64 = U64::mkU64($size);
+
+    if ($size64->gt($ZERO)) {
+        my $size32 = $size64->getLow();
+        if ($size64->gt($PAYLOADLIMIT) ) {
+            out0 $size32, $message;
+        } else {
+            myRead(my $buffer, $size32 );
+            out $buffer, $message, xDump $buffer ;
+        }
+    }
+}
+
+sub unpackValue_C
+{
+    Value_v(unpack "C", $_[0]);
+}
+
+sub Value_C
+{
+    sprintf "%02X", $_[0];
+}
+
+
+sub unpackValue_v
+{
+    Value_v(unpack "v", $_[0]);
+}
+
+sub Value_v
+{
+    sprintf "%04X", $_[0];
+}
+
+sub unpackValue_V
+{
+    Value_V(unpack "V", $_[0]);
+}
+
+sub Value_V
+{
+    my $v = defined $_[0] ? $_[0] : 0;
+    sprintf "%08X", $v;
+}
+
+sub unpackValue_VV
+{
+    my ($lo, $hi) = unpack ("V V", $_[0]);
+    Value_VV($lo, $hi);
+}
+
+sub Value_U64
+{
+    my $u64 = shift ;
+    Value_VV($u64->getLow(), $u64->getHigh());
+}
+
+sub Value_VV
+{
+    my $lo = defined $_[0] ? $_[0] : 0;
+    my $hi = defined $_[1] ? $_[1] : 0;
+
+    if ($hi == 0)
+    {
+        sprintf "%016X", $lo;
+    }
+    else
+    {
+        sprintf("%08X", $hi) .
+        sprintf "%08X", $lo;
+    }
+}
+
+sub Value_VV64
+{
+    my $buffer = shift;
+
+    my ($lo, $hi) = unpack ("V V" , $buffer);
+    no warnings 'uninitialized';
+    return $hi * (0xFFFFFFFF+1) + $lo;
+}
+
+sub read_U64
+{
+    my $b ;
+    myRead($b, 8);    
+    my ($lo, $hi) = unpack ("V V" , $b);
+    no warnings 'uninitialized';
+    return ($b, new U64 $hi, $lo);
+}
+
+sub read_VV
+{
+    my $b ;
+    myRead($b, 8);    
+    my ($lo, $hi) = unpack ("V V" , $b);
+    no warnings 'uninitialized';
+    return ($b, $hi * (0xFFFFFFFF+1) + $lo);
+}
+
+sub read_V
+{
+    my $b ;
+    myRead($b, 4);
+    return ($b, unpack ("V", $b));
+}
+
+sub read_v
+{
+    my $b ;
+    myRead($b, 2);
+    return ($b, unpack "v", $b);
+}
+
+
+sub read_C
+{
+    my $b ;
+    myRead($b, 1);
+    return ($b, unpack "C", $b);
+}
+
+
+my $opt_verbose = 0;
+while (@ARGV && $ARGV[0] =~ /^-/)
+{
+    my $opt = shift;
+    
+    if ($opt =~ /^-h/i)
+    {
+        Usage();
+        exit;
+    }
+    elsif ($opt =~ /^-v/i)
+    {
+        $opt_verbose = 1;
+    }
+    else {
+        Usage();
+    }
+}
+
+Usage() unless @ARGV == 1;
+
+my $filename = shift @ARGV;
+
+die "$filename does not exist\n"
+    unless -e $filename ;
+
+die "$filename not a standard file\n"
+    unless -f $filename ;
+
+$FH = new IO::File "<$filename"
+    or die "Cannot open $filename: $!\n";
+
+
+my $FILELEN = -s $filename ;    
+$TRAILING = -s $filename ;    
+$NIBBLES = U64::nibbles(-s $filename) ; 
+#$NIBBLES = int ($NIBBLES / 4) + ( ($NIBBLES % 4) ? 1 : 0 );
+#$NIBBLES = 4 * $NIBBLES;
+# Minimum of 4 nibbles
+$NIBBLES = 4 if $NIBBLES < 4 ;
+
+die "$filename too short to be a zip file\n"
+    if $FILELEN <  100 ;
+
+setupFormat($opt_verbose, $NIBBLES);
+
+if(0)
+{
+    # Sanity check that this is a Zip file
+    my ($buffer, $signature) = read_V();
+
+    warn "$filename doesn't look like a zip file\n"
+        if $signature != ZIP_LOCAL_HDR_SIG ;
+    $FH->seek(0, SEEK_SET) ;
+}
+
+
+our  @CentralDirectory = scanCentralDirectory($FH);
+die "No Central Directory found\n"
+    if ! @CentralDirectory ;
+
+$OFFSET->reset();
+$FH->seek(0, SEEK_SET) ;
+
+outSomeData($START, "PREFIX DATA")
+    if defined $START && $START > 0 ;
+
+while (1)
+{
+    last if $FH->eof();
+
+    if ($FH->tell() >= $TRAILING) {
+        print "\n" ;
+        outSomeData($FILELEN - $TRAILING, "TRAILING DATA");
+        last;
+
+    }
+
+    my ($buffer, $signature) = read_V();
+
+    my $handler = $Lookup{$signature};
+
+    if (!defined $handler)
+    {
+        my $offset = $FH->tell() - 4;
+        printf "\n\nUnexpecded END at offset %08X, value %s\n", $offset, Value_V($signature);
+        last;        
+    }
+
+    $ZIP64 = 0 if $signature != ZIP_DATA_HDR_SIG ;
+    $handler->($signature, $buffer);
+}
+
+print "Done\n";
+
+exit ;
+
+sub compressionMethod
+{
+    my $id = shift ;
+    Value_v($id) . " '" . ($ZIP_CompressionMethods{$id} || "Unknown Method") . "'" ;
+}
+
+sub LocalHeader
+{
+    my $signature = shift ;  
+    my $data = shift ;  
+        
+    print "\n";
+    ++ $LocalHeaderCount;
+    out $data, "LOCAL HEADER #" . sprintf("%X", $LocalHeaderCount) , Value_V($signature);
+
+    my $buffer;
+
+    my ($loc, $CDcompressedLength) = @{ shift @CentralDirectory };
+    # TODO - add test to check that the loc from central header matches
+
+    out_C  "Extract Zip Spec", \&decodeZipVer;
+    out_C  "Extract OS", \&decodeOS;
+
+    my ($bgp, $gpFlag) = read_v();
+    my ($bcm, $compressedMethod) = read_v();
+
+    out $bgp, "General Purpose Flag", Value_v($gpFlag) ;
+    GeneralPurposeBits($compressedMethod, $gpFlag);    
+
+    out $bcm, "Compression Method",   compressionMethod($compressedMethod) ;
+
+    out_V "Last Mod Time", sub { scalar getTime(_dosToUnixTime($_[0])) };
+
+    my $crc                = out_V "CRC";
+    my $compressedLength   = out_V "Compressed Length";
+    my $uncompressedLength = out_V "Uncompressed Length";
+    my $filenameLength     = out_v "Filename Length";
+    my $extraLength        = out_v "Extra Length";
+
+    my $filename ;
+    myRead($filename, $filenameLength);
+    out $filename, "Filename",  "'". $filename . "'";
+
+    my $cl64 = new U64 $compressedLength ;
+    my %ExtraContext = ();
+    if ($extraLength)
+    {
+        my @z64 = ($uncompressedLength, $compressedLength, 1, 1);
+        $ExtraContext{Zip64} = \@z64 ;
+        $ExtraContext{InCentralDir} = 0;
+        walkExtra($extraLength, \%ExtraContext);
+    }
+
+    my $size = 0;
+    $size = printAes(\%ExtraContext)
+        if $compressedMethod == 99 ;
+
+    $size += printLzmaProperties()
+        if $compressedMethod == ZIP_CM_LZMA ;
+
+    $CDcompressedLength->subtract($size)
+        if $size ;
+        
+    if ($CDcompressedLength->getHigh() || $CDcompressedLength->getLow()) {
+        outSomeData($CDcompressedLength, "PAYLOAD") ;
+    }
+
+    if ($compressedMethod == 99) {
+        my $auth ;
+        myRead($auth, 10);
+        out $auth, "AES Auth",  hexDump($auth);
+    }
+}
+
+
+sub CentralHeader
+{
+    my $signature = shift ;
+    my $data = shift ;  
+        
+    ++ $CentralHeaderCount;
+    print "\n";
+    out $data, "CENTRAL HEADER #" . sprintf("%X", $CentralHeaderCount) . "", Value_V($signature);
+    my $buffer;
+
+    out_C "Created Zip Spec", \&decodeZipVer;
+    out_C "Created OS", \&decodeOS;
+    out_C  "Extract Zip Spec", \&decodeZipVer;
+    out_C  "Extract OS", \&decodeOS;
+
+    my ($bgp, $gpFlag) = read_v();
+    my ($bcm, $compressedMethod) = read_v();
+
+    out $bgp, "General Purpose Flag", Value_v($gpFlag) ;
+    GeneralPurposeBits($compressedMethod, $gpFlag);    
+
+    out $bcm, "Compression Method", compressionMethod($compressedMethod) ;
+
+    out_V "Last Mod Time", sub { scalar getTime(_dosToUnixTime($_[0])) };
+
+    my $crc                = out_V "CRC";
+    my $compressedLength   = out_V "Compressed Length";
+    my $uncompressedLength = out_V "Uncompressed Length";
+    my $filenameLength     = out_v "Filename Length";
+    my $extraLength        = out_v "Extra Length";
+    my $comment_length     = out_v "Comment Length";
+    my $disk_start         = out_v "Disk Start";
+    my $int_file_attrib    = out_v "Int File Attributes";
+
+    out1 "[Bit 0]",  $int_file_attrib & 1 ? "1 Text Data" : "0 'Binary Data'";
+
+    my $ext_file_attrib    = out_V "Ext File Attributes";
+    out1 "[Bit 0]",  "Read-Only" 
+        if $ext_file_attrib & 0x01 ;
+    out1 "[Bit 1]",  "Hidden" 
+        if $ext_file_attrib & 0x02 ;
+    out1 "[Bit 2]",  "System" 
+        if $ext_file_attrib & 0x04 ;
+    out1 "[Bit 3]",  "Label" 
+        if $ext_file_attrib & 0x08 ;
+    out1 "[Bit 4]",  "Directory" 
+        if $ext_file_attrib & 0x10 ;
+    out1 "[Bit 5]",  "Archive" 
+        if $ext_file_attrib & 0x20 ;
+
+    my $lcl_hdr_offset     = out_V "Local Header Offset";
+
+    my $filename ;
+    myRead($filename, $filenameLength);
+    out $filename, "Filename",  "'". $filename . "'";
+
+    my %ExtraContext = ();
+    if ($extraLength)
+    {
+        my @z64 = ($uncompressedLength, $compressedLength, $lcl_hdr_offset, $disk_start);
+        $ExtraContext{Zip64} = \@z64 ;
+        $ExtraContext{InCentralDir} = 1;
+        walkExtra($extraLength, \%ExtraContext);        
+    }
+
+    if ($comment_length)
+    {
+        my $comment ;
+        myRead($comment, $comment_length);
+        out $comment, "Comment",  "'". $comment . "'";
+    }
+}
+
+sub decodeZipVer
+{
+    my $ver = shift ;
+    
+    my $sHi = int($ver /10) ;
+    my $sLo = $ver % 10 ;
+    
+    #out1 "Zip Spec", "$sHi.$sLo";       
+    "$sHi.$sLo";       
+}
+
+sub decodeOS
+{
+    my $ver = shift ;
+    
+    $OS_Lookup{$ver} || "Unknown" ;
+}
+
+sub Zip64EndCentralHeader
+{
+    my $signature = shift ;    
+    my $data = shift ;  
+
+    print "\n";
+    out $data, "ZIP64 END CENTRAL DIR RECORD", Value_V($signature);
+
+    my $buff;
+    myRead($buff, 8);
+
+    out $buff, "Size of record",       unpackValue_VV($buff);    
+
+    my $size  = Value_VV64($buff);
+
+    out_C  "Created Zip Spec", \&decodeZipVer;
+    out_C  "Created OS", \&decodeOS;
+    out_C  "Extract Zip Spec", \&decodeZipVer;
+    out_C  "Extract OS", \&decodeOS;
+    out_V  "Number of this disk";
+    out_V  "Central Dir Disk no";
+    out_VV "Entries in this disk";
+    out_VV "Total Entries";
+    out_VV "Size of Central Dir";
+    out_VV "Offset to Central dir";
+
+    # TODO - 
+    die "Unsupported Size ($size) in Zip64EndCentralHeader\n" 
+        if $size !=  44;
+}
+
+
+sub Zip64EndCentralLocator
+{
+    my $signature = shift ;
+    my $data = shift ;  
+        
+    print "\n";
+    out $data, "ZIP64 END CENTRAL DIR LOCATOR", Value_V($signature);
+    
+    out_V  "Central Dir Disk no";
+    out_VV "Offset to Central dir";
+    out_V  "Total no of Disks";    
+}
+
+sub EndCentralHeader
+{
+    my $signature = shift ;  
+    my $data = shift ;  
+        
+    print "\n";
+    out $data, "END CENTRAL HEADER", Value_V($signature);
+
+    out_v "Number of this disk";
+    out_v "Central Dir Disk no";
+    out_v "Entries in this disk";
+    out_v "Total Entries";
+    out_V "Size of Central Dir";
+    out_V "Offset to Central Dir";
+    my $comment_length = out_v "Comment Length";
+
+    if ($comment_length)
+    {
+        my $comment ;        
+        myRead($comment, $comment_length);
+        out $comment, "Comment", "'$comment'";
+    }    
+}
+
+sub DataHeader
+{
+    my $signature = shift ;  
+    my $data = shift ;  
+        
+    print "\n";
+    out $data, "STREAMING DATA HEADER", Value_V($signature);
+    
+    out_V "CRC";
+    
+    if ($ZIP64)
+    {
+        out_VV "Compressed Length" ;
+        out_VV "Uncompressed Length" ;        
+    }
+    else
+    {
+        out_V "Compressed Length" ;
+        out_V "Uncompressed Length" ;  
+    }
+}
+
+
+sub GeneralPurposeBits
+{
+    my $method = shift;
+    my $gp = shift;
+
+    out1 "[Bit  0]", "1 'Encryption'" if $gp & ZIP_GP_FLAG_ENCRYPTED_MASK;   
+    
+    my %lookup = (
+        0 =>    "Normal Compression",
+        1 =>    "Maximum Compression",
+        2 =>    "Fast Compression",
+        3 =>    "Super Fast Compression");
+
+
+    if ($method == ZIP_CM_DEFLATE)
+    {
+        my $mid = $gp & 0x03;
+        
+        out1 "[Bits 1-2]", "$mid '$lookup{$mid}'";        
+    }
+
+    if ($method == ZIP_CM_LZMA)
+    {
+        if ($gp & ZIP_GP_FLAG_LZMA_EOS_PRESENT) {
+            out1 "[Bit 1]", "1 'LZMA EOS Marker Present'" ;
+        }
+        else {
+            out1 "[Bit 1]", "0 'LZMA EOS Marker Not Present'" ;
+        }
+    }
+    
+    if ($method == ZIP_CM_IMPLODE) # Imploding
+    {
+        out1 "[Bit 1]", ($gp & 1 ? "1 '8k" : "0 '4k") . " Sliding Dictionary'" ;
+        out1 "[Bit 2]", ($gp & 2 ? "1 '3" : "0 '2"  ) . " Shannon-Fano
+        Trees'" ;
+    }    
+    
+    out1 "[Bit  3]", "1 'Streamed'"           if $gp & ZIP_GP_FLAG_STREAMING_MASK;
+    out1 "[Bit  4]", "1 'Enhanced Deflating'" if $gp & 1 << 4;
+    out1 "[Bit  5]", "1 'Compressed Patched'" if $gp & 1 << 5 ;
+    out1 "[Bit  6]", "1 'Strong Encryption'"  if $gp & ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK;
+    out1 "[Bit 11]", "1 'Language Encoding'"  if $gp & ZIP_GP_FLAG_LANGUAGE_ENCODING;  
+    out1 "[Bit 12]", "1 'Pkware Enhanced Compression'"  if $gp & 1 <<12 ; 
+    out1 "[Bit 13]", "1 'Encrypted Central Dir'"  if $gp & 1 <<13 ; 
+    
+    return ();    
+}
+
+
+
+
+sub skip
+{
+    my $fh = $_[0] ;
+    my $size = $_[1];
+
+    use Fcntl qw(SEEK_CUR);
+    if (ref $size eq 'U64') {
+        seek($fh, $size->get64bit(), SEEK_CUR);
+    }
+    else {
+        seek($fh, $size, SEEK_CUR);
+    }
+    
+}
+
+
+sub myRead
+{
+    my $got = \$_[0] ;
+    my $size = $_[1];
+
+    my $wantSize = $size;
+    $$got = '';
+
+    if ($size == 0)
+    {
+        return ;
+    }
+
+    if ($size > 0)
+    {
+        my $buff ;
+        my $status = $FH->read($buff, $size);
+        return $status
+            if $status < 0;
+        $$got .= $buff ;
+    }
+
+    my $len = length $$got;
+    die "Truncated file (got $len, wanted $wantSize): $!\n"
+        if length $$got != $wantSize;
+}
+
+
+
+
+sub walkExtra
+{
+    my $XLEN = shift;
+    my $context = shift; 
+
+    my $buff ;
+    my $offset = 0 ;
+    
+    my $id;
+    my $subLen;
+    my $payload ;
+    
+    my $count = 0 ;
+    
+    while ($offset < $XLEN) {
+
+        ++ $count;
+        
+        return undef
+            if $offset + ZIP_EXTRA_SUBFIELD_HEADER_SIZE  > $XLEN ;
+
+        myRead($id, ZIP_EXTRA_SUBFIELD_ID_SIZE); 
+        $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE;
+        my $lookID = unpack "v", $id ;
+        my ($who, $decoder) =  @{ defined $Extras{$lookID} ? $Extras{$lookID} : ['', undef] };
+        #my ($who, $decoder) =  @{ $Extras{unpack "v", $id} || ['', undef] };
+        
+        $who = "$id: $who"
+            if $id =~ /\w\w/ ;
+
+        $who = "'$who'";    
+        out $id, "Extra ID #" . Value_v($count), unpackValue_v($id) . " $who" ;
+        
+        myRead($buff, ZIP_EXTRA_SUBFIELD_LEN_SIZE); 
+        $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE;        
+        
+        $subLen =  unpack("v", $buff);
+        out2 $buff, "Length", Value_v($subLen) ;
+
+        return undef
+            if $offset + $subLen > $XLEN ;
+
+        if (! defined $decoder)
+        {
+            myRead($payload, $subLen);
+            my $data = hexDump($payload);
+        
+            out2 $payload, "Extra Payload", $data;
+        }
+        else
+        {
+            $decoder->($subLen, $context) ;
+        }
+               
+        $offset += $subLen ;
+    }
+        
+    return undef ;
+}
+
+
+sub full32 
+{
+    return $_[0] == 0xFFFFFFFF ;
+}
+
+sub decode_Zip64
+{
+    my $len = shift;
+    my $context = shift;
+    
+    my $z64Data = $context->{Zip64};    
+
+    $ZIP64 = 1;
+
+    if (full32 $z64Data->[0] ) {
+        out_VV "  Uncompressed Size";
+    }
+
+    if (full32 $z64Data->[1] ) {
+        out_VV "  Compressed Size";
+    }
+
+    if (full32 $z64Data->[2] ) {
+        out_VV "  Offset to Central Dir";        
+    }
+
+    if ($z64Data->[3] == 0xFFFF ) {
+        out_V "  Disk Number";        
+    }
+}
+
+sub Ntfs2Unix
+{
+    my $v = shift;
+    my $u64 = shift;
+
+    # NTFS offset is 19DB1DED53E8000
+
+    my $hex = Value_U64($u64) ;
+    my $NTFS_OFFSET = new U64 0x19DB1DE, 0xD53E8000 ;
+    $u64->subtract($NTFS_OFFSET);
+    my $elapse = $u64->get64bit();
+    my $ns = ($elapse % 10000000) * 100;
+    $elapse = int ($elapse/10000000);
+    return "$hex '" . localtime($elapse) . 
+           " " . sprintf("%0dns'", $ns);
+}
+
+sub decode_NTFS_Filetimes
+{
+    my $len = shift;
+    my $context = shift;
+
+    out_V "  Reserved";
+    out_v "  Tag1";
+    out_v "  Size1" ;
+    
+    my ($m, $s1) = read_U64;
+    out $m, "  Mtime", Ntfs2Unix($m, $s1);
+
+    my ($c, $s2) = read_U64;
+    out $c, "  Ctime", Ntfs2Unix($m, $s2);
+
+    my ($a, $s3) = read_U64;
+    out $m, "  Atime", Ntfs2Unix($m, $s3);
+}
+
+sub getTime
+{
+    my $time = shift ;
+
+    return "'" . localtime($time) . "'" ;
+}
+
+sub decode_UT
+{
+    my $len = shift;
+    my $context = shift;
+        
+    my ($data, $flags) = read_C();
+
+    my $f = Value_C $flags;
+    $f .= " mod"    if $flags & 1;
+    $f .= " access" if $flags & 2;
+    $f .= " change" if $flags & 4;
+    
+    out $data, "  Flags", "'$f'";
+    
+    -- $len;
+    
+    if ($flags & 1)
+    {
+        my ($data, $time) = read_V();
+
+        out2 $data, "Mod Time",    Value_V($time) . " " . getTime($time) ;
+        
+        $len -= 4 ;
+    }
+
+
+      if ($flags & 2 && $len > 0 )
+      {
+          my ($data, $time) = read_V();
+  
+          out2 $data, "Access Time",    Value_V($time) . " " . getTime($time) ;
+          $len -= 4 ;
+      }
+  
+      if ($flags & 4 && $len > 0)
+      {
+          my ($data, $time) = read_V();
+  
+          out2 $data, "Change Time",    Value_V($time) . " " . getTime($time) ;
+      }
+}
+
+
+
+sub decode_AES
+{
+    my $len = shift;
+    my $context = shift;
+
+    return if $len == 0 ;
+    
+    my %lookup = ( 1 => "AE-1", 2 => "AE-2");
+    out_v "  Vendor Version", sub {  $lookup{$_[0]} || "Unknown"  } ;
+    
+    my $id ; 
+    myRead($id, 2);
+    out $id, "  Vendor ID", unpackValue_v($id) . " '$id'";
+    
+    my %strengths = (1 => "128-bit encryption key",
+                     2 => "192-bit encryption key",
+                     3 => "256-bit encryption key",
+                    );
+    
+    my $strength = out_C "  Encryption Strength", sub {$strengths{$_[0]} || "Unknown" } ; 
+
+    my ($bmethod, $method) = read_v();
+    out $bmethod, "  Compression Method", compressionMethod($method) ;
+
+    $context->{AesStrength} = $strength ;     
+}
+
+sub decode_UX
+{
+    my $len = shift;
+    my $context = shift;
+    my $inCentralHdr = $context->{InCentralDir} ;
+
+    return if $len == 0 ;    
+
+    my ($data, $time) = read_V();
+    out2 $data, "Access Time",    Value_V($time) . " " . getTime($time) ;
+
+    ($data, $time) = read_V();
+    out2 $data, "Mod Time",    Value_V($time) . " " . getTime($time) ;
+
+    if (! $inCentralHdr ) {
+        out_v "  UID" ;
+        out_v "  GID";    
+    }
+}
+
+sub decode_Ux
+{
+    my $len = shift;
+    my $context = shift;
+
+    return if $len == 0 ;    
+    out_v "  UID" ;
+    out_v "  GID";    
+}
+
+sub decodeLitteEndian
+{
+    my $value = shift ;
+
+    if (length $value == 4)
+    {
+        return Value_V unpack ("V", $value)
+    }
+    else {
+        # TODO - fix this
+        die "unsupported\n";
+    }
+
+    my $got = 0 ;
+    my $shift = 0;
+
+    #hexDump 
+    #reverse
+    #my @a =unpack "C*", $value;
+    #@a = reverse @a;
+    #hexDump(@a);
+
+    for (reverse unpack "C*", $value)
+    {
+        $got = ($got << 8) + $_ ;
+    }
+    
+    return $got ;
+}
+
+sub decode_ux
+{
+    my $len = shift;
+    my $context = shift;
+
+    return if $len == 0 ;    
+    out_C "  Version" ;
+    my $uidSize = out_C "  UID Size";    
+    myRead(my $data, $uidSize);
+    out2 $data, "UID", decodeLitteEndian($data);
+
+    my $gidSize = out_C "  GID Size";    
+    myRead($data, $gidSize);
+    out2 $data, "GID", decodeLitteEndian($data);
+    
+}
+
+sub decode_Java_exe
+{
+    my $len = shift;
+    my $context = shift;
+
+}
+
+sub decode_up
+{
+    my $len = shift;
+    my $context = shift;
+
+    
+    out_C "  Version";
+    out_V "  NameCRC32";
+    
+    myRead(my $data, $len - 5);
+    
+    out $data, "  UnicodeName", $data;     
+}
+
+sub decode_Xceed_unicode
+{
+    my $len = shift;
+    my $context = shift;
+
+    my $data ;
+    
+    # guess the fields used for this one
+    myRead($data, 4);
+    out $data, "  ID", $data;     
+
+    out_v "  Length";
+    out_v "  Null";
+    
+    myRead($data, $len - 8);
+    
+    out $data, "  UTF16LE Name", decode("UTF16LE", $data);     
+}
+
+
+sub decode_NT_security
+{
+    my $len = shift;
+    my $context = shift;
+    my $inCentralHdr = $context->{InCentralDir} ;
+    
+    out_V "  Uncompressed Size" ;
+    
+    if (! $inCentralHdr) {
+  
+        out_C "  Version" ;
+     
+        out_v "  Type";  
+        
+        out_V "  NameCRC32" ;
+        
+        my $plen = $len - 4 - 1 - 2 - 4;        
+        myRead(my $payload, $plen);
+        out $plen, "  Extra Payload", hexDump($payload);
+    }
+}
+
+sub printAes
+{
+    my $context = shift ;
+
+    my %saltSize = (
+                        1 => 8,
+                        2 => 12,
+                        3 => 16,
+                    );
+
+    myRead(my $salt, $saltSize{$context->{AesStrength} });
+    out $salt, "AES Salt", hexDump($salt);
+    myRead(my $pwv, 2);
+    out $pwv, "AES Pwd Ver", hexDump($pwv);  
+
+    return  $saltSize{$context->{AesStrength}} + 2 + 10;
+}
+
+sub printLzmaProperties
+{
+    my $len = 0;
+
+    my $b1;
+    my $b2;
+    my $buffer;
+
+    myRead($b1, 2);
+    my ($verHi, $verLow) = unpack ("CC", $b1);
+
+    out $b1, "LZMA Version", sprintf("%02X%02X", $verHi, $verLow) . " '$verHi.$verLow'";
+    my $LzmaPropertiesSize = out_v "LZMA Properties Size";
+    $len += 4;
+
+    my $LzmaInfo = out_C "LZMA Info",  sub { $_[0] == 93 ? "(Default)" : ""};
+
+    my $PosStateBits = 0;
+    my $LiteralPosStateBits = 0;
+    my $LiteralContextBits = 0;
+    $PosStateBits = int($LzmaInfo / (9 * 5));
+	$LzmaInfo -= $PosStateBits * 9 * 5;
+	$LiteralPosStateBits = int($LzmaInfo / 9);
+	$LiteralContextBits = $LzmaInfo - $LiteralPosStateBits * 9;
+
+    out1 "  PosStateBits",        $PosStateBits;
+    out1 "  LiteralPosStateBits", $LiteralPosStateBits;
+    out1 "  LiteralContextBits",  $LiteralContextBits;
+    
+    out_V "LZMA Dictionary Size";
+
+    # TODO - assumption that this is 5
+    $len += $LzmaPropertiesSize;
+
+    skip($FH, $LzmaPropertiesSize - 5)
+        if  $LzmaPropertiesSize != 5 ;
+
+    return $len;
+}
+
+sub scanCentralDirectory
+{
+    my $fh = shift;
+
+    my $here = $fh->tell();
+
+    # Use cases
+    # 1 32-bit CD
+    # 2 64-bit CD
+
+    my @CD = ();
+    my $offset = findCentralDirectoryOffset($fh);
+
+    return ()
+        if ! defined $offset;
+
+    $fh->seek($offset, SEEK_SET) ;
+
+    # Now walk the Central Directory Records
+    my $buffer ;
+    while ($fh->read($buffer, 46) == 46  && 
+           unpack("V", $buffer) == ZIP_CENTRAL_HDR_SIG) {
+
+        my $compressedLength   = unpack("V", substr($buffer, 20, 4));
+        my $uncompressedLength = unpack("V", substr($buffer, 24, 4));
+        my $filename_length    = unpack("v", substr($buffer, 28, 2));
+        my $extra_length       = unpack("v", substr($buffer, 30, 2));
+        my $comment_length     = unpack("v", substr($buffer, 32, 2));
+        my $locHeaderOffset    = unpack("V", substr($buffer, 42, 4));
+
+        $START = $locHeaderOffset
+            if ! defined $START;
+
+        skip($fh, $filename_length ) ;
+
+        my $v64 = new U64 $compressedLength ;
+        my $loc64 = new U64 $locHeaderOffset ;
+        my $got = [$loc64, $v64] ;
+
+        if (full32 $compressedLength || full32  $locHeaderOffset) {
+            $fh->read($buffer, $extra_length) ;
+            # TODO - fix this
+            die "xxx $offset $comment_length $filename_length $extra_length" . length($buffer) 
+                if length($buffer) != $extra_length;
+            $got = get64Extra($buffer, full32($uncompressedLength),
+                                 $v64,
+                                 $loc64);
+
+            # If not Zip64 extra field, assume size is 0xFFFFFFFF
+            #$v64 = $got if defined $got;
+        }
+        else {
+            skip($fh, $extra_length) ;
+        }
+
+        skip($fh, $comment_length ) ;
+            
+        push @CD, $got ;
+    }
+
+    $fh->seek($here, SEEK_SET) ;
+
+    @CD = sort { $a->[0]->cmp($b->[0]) } @CD ;
+    return @CD;
+}
+
+sub get64Extra
+{
+    my $buffer = shift;
+    my $is_uncomp = shift ;
+    my $comp = shift ;
+    my $loc = shift ;
+
+    my $extra = findID(0x0001, $buffer);
+                                            
+    if ( defined $extra)
+    {
+        my $offset = 0;
+        $offset += 8 if $is_uncomp;
+        if ($comp->max32()) {
+            $comp = U64::newUnpack_V64(substr($extra,  $offset)) ;
+            $offset += 8;
+        }
+        if ($loc->max32()) {
+            $loc = U64::newUnpack_V64(substr($extra,  $offset)) ;
+        }
+    }    
+
+    return [$loc, $comp] ;
+}
+
+sub offsetFromZip64
+{
+    my $fh = shift ;
+    my $here = shift;
+
+    $fh->seek($here - 20, SEEK_SET) 
+    # TODO - fix this
+        or die "xx $!" ;
+
+    my $buffer;
+    my $got = 0;
+    ($got = $fh->read($buffer, 20)) == 20 
+    # TODO - fix this
+        or die "xxx $here $got $!" ;
+
+    if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_LOC_HDR_SIG ) {
+        my $cd64 = Value_VV64 substr($buffer,  8, 8);
+       
+        $fh->seek($cd64, SEEK_SET) ;
+
+        $fh->read($buffer, 4) == 4
+        # TODO - fix this
+            or die "xxx" ;
+
+        if ( unpack("V", $buffer) == ZIP64_END_CENTRAL_REC_HDR_SIG ) {
+
+            $fh->read($buffer, 8) ==  8
+            # TODO - fix this
+                or die "xxx" ;
+            my $size  = Value_VV64($buffer);
+            $fh->read($buffer, $size) ==  $size
+            # TODO - fix this
+                or die "xxx" ;
+
+            my $cd64 =  Value_VV64 substr($buffer,  36, 8);
+
+            return $cd64 ;
+        }
+        
+        # TODO - fix this
+        die "zzz";
+    }
+
+    # TODO - fix this
+    die "zzz";
+}
+
+use constant Pack_ZIP_END_CENTRAL_HDR_SIG => pack("V", ZIP_END_CENTRAL_HDR_SIG);
+
+sub findCentralDirectoryOffset
+{
+    my $fh = shift ;
+
+    # Most common use-case is where there is no comment, so
+    # know exactly where the end of central directory record
+    # should be.
+
+    $fh->seek(-22, SEEK_END) ;
+    my $here = $fh->tell();
+
+    my $buffer;
+    $fh->read($buffer, 22) == 22 
+    # TODO - fix this
+        or die "xxx" ;
+
+    my $zip64 = 0;                             
+    my $centralDirOffset ;
+    if ( unpack("V", $buffer) == ZIP_END_CENTRAL_HDR_SIG ) {
+        $centralDirOffset = unpack("V", substr($buffer, 16,  4));
+    }
+    else {
+        $fh->seek(0, SEEK_END) ;
+
+        my $fileLen = $fh->tell();
+        my $want = 0 ;
+
+        while(1) {
+            $want += 1024 * 32;
+            my $seekTo = $fileLen - $want;
+            if ($seekTo < 0 ) {
+                $seekTo = 0;
+                $want = $fileLen ;
+            }
+            $fh->seek( $seekTo, SEEK_SET) 
+            # TODO - fix this
+                or die "xxx $!" ;
+            my $got;
+            ($got = $fh->read($buffer, $want)) == $want
+            # TODO - fix this
+                or die "xxx $got  $!" ;
+            my $pos = rindex( $buffer, Pack_ZIP_END_CENTRAL_HDR_SIG);
+
+            if ($pos >= 0 && $want - $pos > 22) {
+                $here = $seekTo + $pos ;
+                $centralDirOffset = unpack("V", substr($buffer, $pos + 16,  4));
+                my $commentLength = unpack("V", substr($buffer, $pos + 20,  2));
+                $commentLength = 0 if ! defined $commentLength ;
+
+                my $expectedEof = $fileLen - $want + $pos + 22 + $commentLength  ;
+                # check for trailing data after end of zip
+                if ($expectedEof < $fileLen ) {
+                    $TRAILING = $expectedEof ;
+                }
+                last ;
+            }
+
+            return undef
+                if $want == $fileLen;
+        }
+    }
+
+    $centralDirOffset = offsetFromZip64($fh, $here)
+        if full32 $centralDirOffset ;
+
+    return $centralDirOffset ;
+}
+
+sub findID
+{
+    my $id_want = shift ;
+    my $data    = shift;
+
+    my $XLEN = length $data ;
+
+    my $offset = 0 ;
+    while ($offset < $XLEN) {
+
+        return undef
+            if $offset + ZIP_EXTRA_SUBFIELD_HEADER_SIZE  > $XLEN ;
+
+        my $id = substr($data, $offset, ZIP_EXTRA_SUBFIELD_ID_SIZE);    
+        $id = unpack("v", $id);
+        $offset += ZIP_EXTRA_SUBFIELD_ID_SIZE;
+
+        my $subLen =  unpack("v", substr($data, $offset,
+                                            ZIP_EXTRA_SUBFIELD_LEN_SIZE));
+        $offset += ZIP_EXTRA_SUBFIELD_LEN_SIZE ;
+
+        return undef
+            if $offset + $subLen > $XLEN ;
+
+        return substr($data, $offset, $subLen)
+            if $id eq $id_want ;
+
+        $offset += $subLen ;
+    }
+        
+    return undef ;
+}
+
+
+sub _dosToUnixTime
+{
+    my $dt = shift;
+
+    my $year = ( ( $dt >> 25 ) & 0x7f ) + 80;
+    my $mon  = ( ( $dt >> 21 ) & 0x0f ) - 1;
+    my $mday = ( ( $dt >> 16 ) & 0x1f );
+
+    my $hour = ( ( $dt >> 11 ) & 0x1f );
+    my $min  = ( ( $dt >> 5 ) & 0x3f );
+    my $sec  = ( ( $dt << 1 ) & 0x3e );
+
+
+    use POSIX 'mktime';
+
+    my $time_t = mktime( $sec, $min, $hour, $mday, $mon, $year, 0, 0, -1 );
+    return 0 if ! defined $time_t;
+    return $time_t;
+}
+
+
+{
+    package U64;
+
+    use constant MAX32 => 0xFFFFFFFF ;
+    use constant HI_1 => MAX32 + 1 ;
+    use constant LOW   => 0 ;
+    use constant HIGH  => 1;
+
+    sub new
+    {
+        my $class = shift ;
+
+        my $high = 0 ;
+        my $low  = 0 ;
+
+        if (@_ == 2) {
+            $high = shift ;
+            $low  = shift ;
+        }
+        elsif (@_ == 1) {
+            $low  = shift ;
+        }
+
+        bless [$low, $high], $class;
+    }
+
+    sub newUnpack_V64
+    {
+        my $string = shift;
+
+        my ($low, $hi) = unpack "V V", $string ;
+        bless [ $low, $hi ], "U64";
+    }
+
+    sub newUnpack_V32
+    {
+        my $string = shift;
+
+        my $low = unpack "V", $string ;
+        bless [ $low, 0 ], "U64";
+    }
+
+    sub reset
+    {
+        my $self = shift;
+        $self->[HIGH] = $self->[LOW] = 0;
+    }
+
+    sub clone
+    {
+        my $self = shift;
+        bless [ @$self ], ref $self ;
+    }
+
+    sub mkU64
+    {
+        my $value = shift;
+
+        return $value
+            if ref $value eq 'U64';
+
+        bless [  $value, 0 ], "U64" ;
+    }
+
+    sub getHigh
+    {
+        my $self = shift;
+        return $self->[HIGH];
+    }
+
+    sub getLow
+    {
+        my $self = shift;
+        return $self->[LOW];
+    }
+
+    sub get32bit
+    {
+        my $self = shift;
+        return $self->[LOW];
+    }
+
+    sub get64bit
+    {
+        my $self = shift;
+        # Not using << here because the result will still be
+        # a 32-bit value on systems where int size is 32-bits
+        return $self->[HIGH] * HI_1 + $self->[LOW];
+    }
+
+    sub add
+    {
+        my $self = shift;
+        my $value = shift;
+
+        if (ref $value eq 'U64') {
+            $self->[HIGH] += $value->[HIGH] ;
+            $value = $value->[LOW];
+        }
+         
+        my $available = MAX32 - $self->[LOW] ;
+
+        if ($value > $available) {
+           ++ $self->[HIGH] ;
+           $self->[LOW] = $value - $available - 1;
+        }
+        else {
+           $self->[LOW] += $value ;
+        }
+
+    }
+
+    sub subtract
+    {
+        my $self = shift;
+        my $value = shift;
+
+        if (ref $value eq 'U64') {
+
+            if ($value->[HIGH]) {
+                die "unsupport subtract option"
+                    if $self->[HIGH] == 0 ||
+                       $value->[HIGH] > $self->[HIGH] ;
+
+               $self->[HIGH] -= $value->[HIGH] ;
+            }
+
+            $value = $value->[LOW] ;
+        }
+
+        if ($value > $self->[LOW]) {
+           -- $self->[HIGH] ;
+           $self->[LOW] = MAX32 - $value + $self->[LOW] + 1;
+        }
+        else {
+           $self->[LOW] -= $value;
+        }
+    }
+
+    sub rshift
+    {
+        my $self = shift;
+        my $count = shift;
+
+        for (1 .. $count)
+        {
+            $self->[LOW] >>= 1;
+            $self->[LOW] |= 0x80000000
+                if $self->[HIGH] & 1 ; 
+            $self->[HIGH] >>= 1;
+        }
+    }
+
+    sub is64bit
+    {
+        my $self = shift;
+        return $self->[HIGH] > 0 ;
+    }
+
+    sub getPacked_V64
+    {
+        my $self = shift;
+
+        return pack "V V", @$self ;
+    }
+
+    sub getPacked_V32
+    {
+        my $self = shift;
+
+        return pack "V", $self->[LOW] ;
+    }
+
+    sub pack_V64
+    {
+        my $low  = shift;
+
+        return pack "V V", $low, 0;
+    }
+
+    sub max32
+    {
+        my $self = shift;
+        return $self->[HIGH] == 0 && $self->[LOW] == MAX32;
+    }
+
+    sub stringify
+    {
+        my $self = shift;
+
+        return "High [$self->[HIGH]], Low [$self->[LOW]]";
+    }
+    
+    sub equal
+    {
+        my $self = shift;
+        my $other = shift;
+
+        return $self->[LOW]  == $other->[LOW] &&
+               $self->[HIGH] == $other->[HIGH] ;
+    }
+
+    sub gt
+    {
+        my $self = shift;
+        my $other = shift;
+
+        return $self->cmp($other) > 0 ;
+    }
+
+    sub cmp
+    {
+        my $self = shift;
+        my $other = shift ;
+
+        if ($self->[LOW] == $other->[LOW]) {
+            return $self->[HIGH] - $other->[HIGH] ;
+        }
+        else {
+            return $self->[LOW] - $other->[LOW] ;
+        }
+    }
+    
+    sub nibbles
+    {
+        my @nibbles = (
+            [ 16 => HI_1 * 0x10000000 ],
+            [ 15 => HI_1 * 0x1000000 ],
+            [ 14 => HI_1 * 0x100000 ],
+            [ 13 => HI_1 * 0x10000 ],
+            [ 12 => HI_1 * 0x1000 ],
+            [ 11 => HI_1 * 0x100 ],
+            [ 10 => HI_1 * 0x10 ],
+            [  9 => HI_1 * 0x1 ],
+
+            [  8 => 0x10000000 ],
+            [  7 => 0x1000000 ],
+            [  6 => 0x100000 ],
+            [  5 => 0x10000 ],
+            [  4 => 0x1000 ],
+            [  3 => 0x100 ],
+            [  2 => 0x10 ],
+            [  1 => 0x1 ],
+        );
+        my $value = shift ;
+
+        for my $pair (@nibbles)
+        {
+            my ($count, $limit) = @{ $pair };
+
+            return $count
+                if $value >= $limit ;
+        }
+
+    }
+}
+
+sub Usage
+{
+    die <<EOM;
+zipdetails [OPTIONS] file
+
+Display details about the internal structure of a Zip file.
+
+This is zipdetails version $VERSION
+
+OPTIONS
+     -h     display help
+     -v     Verbose - output more stuff
+    
+Copyright (c) 2011 Paul Marquess. All rights reserved.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+EOM
+
+        
+}
+
+__END__
+
+=head1 NAME
+
+zipdetails - display the internal structure of zip files
+
+=head1 SYNOPSIS
+
+    zipdetaile [-v] zipfile.zip
+	zipdetails -h
+
+=head1 DESCRIPTION
+
+Zipdetails displays information about the internal record structure of the
+zip file. It is not concerned with displaying any details of the compressed
+data stored in the zip file.
+
+The program assumes prior understanding of the internal structure of a Zip
+file. You should have a copy of the Zip APPNOTE file at hand to help
+understand the output from this program (L<SEE ALSO> for details).
+
+=head2 OPTIONS
+
+=over 5
+
+=item -v
+
+Enable Verbose mode
+
+=item -h
+
+Display help
+
+=back
+
+
+By default zipdetails will output the details of the zip file in three
+columns.
+
+=over 5
+
+=item Column 1
+
+This contains the offset from the start of the file in hex.
+
+=item Column 2
+
+This contains a textual description of the field.
+
+=item Column 3
+
+If the field contains a numeric value it will be displayed in hex. Zip
+stored most numbers in little-endian format - the value displayed will have
+the little-endian encoding removed.
+
+Next, is an optional description of what the value means.
+
+
+=back
+
+If the C<-v> option is present, column 1 is expanded to include
+
+=over 5
+
+=item *
+
+The offset from the start of the file in hex.
+
+=item *
+
+The length of the filed in hex.
+
+=item *
+
+A hex dump of the bytes in field in the order they are stored in the zip
+file.
+
+=back
+
+
+=head1 TODO 
+
+Error handling is still a work in progress.  If the program encounters a
+problem reading a zip file it is likely to terminate with an unhelpful
+error message. 
+
+
+=head1 SEE ALSO
+
+
+The primary reference for Zip files is the "appnote" document available at
+L<http://www.pkware.com/documents/casestudies/APPNOTE.TXT>.
+
+An alternative is the Info-Zip appnote. This is available from
+L<ftp://ftp.info-zip.org/pub/infozip/doc/>
+
+
+The C<zipinfo> program that comes with the info-zip distribution
+(L<http://www.info-zip.org/>) can also display details of the structure of
+a zip file.
+
+See also L<IO::Compress::Zip>, L<IO::Uncompress::Unzip>.
+
+
+=head1 AUTHOR
+
+Paul Marquess F<pmqs at cpan.org>.
+
+=head1 COPYRIGHT 
+
+Copyright (c) 2011-2012 Paul Marquess. All rights reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself. 
+

Added: vendor/perl/dist/cpan/IO-Compress/lib/IO/Compress/FAQ.pod
===================================================================
--- vendor/perl/dist/cpan/IO-Compress/lib/IO/Compress/FAQ.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/IO-Compress/lib/IO/Compress/FAQ.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,672 @@
+
+=head1 NAME
+
+IO::Compress::FAQ -- Frequently Asked Questions about IO::Compress
+
+=head1 DESCRIPTION
+
+Common questions answered.
+
+=head1 GENERAL 
+
+=head2 Compatibility with Unix compress/uncompress.
+
+Although C<Compress::Zlib> has a pair of functions called C<compress> and
+C<uncompress>, they are I<not> related to the Unix programs of the same
+name. The C<Compress::Zlib> module is not compatible with Unix
+C<compress>.
+
+If you have the C<uncompress> program available, you can use this to read
+compressed files
+
+    open F, "uncompress -c $filename |";
+    while (<F>)
+    {
+        ...
+
+Alternatively, if you have the C<gunzip> program available, you can use
+this to read compressed files
+
+    open F, "gunzip -c $filename |";
+    while (<F>)
+    {
+        ...
+
+and this to write compress files, if you have the C<compress> program
+available
+
+    open F, "| compress -c $filename ";
+    print F "data";
+    ...
+    close F ;
+
+=head2 Accessing .tar.Z files
+
+The C<Archive::Tar> module can optionally use C<Compress::Zlib> (via the
+C<IO::Zlib> module) to access tar files that have been compressed with
+C<gzip>. Unfortunately tar files compressed with the Unix C<compress>
+utility cannot be read by C<Compress::Zlib> and so cannot be directly
+accessed by C<Archive::Tar>.
+
+If the C<uncompress> or C<gunzip> programs are available, you can use one
+of these workarounds to read C<.tar.Z> files from C<Archive::Tar>
+
+Firstly with C<uncompress>
+
+    use strict;
+    use warnings;
+    use Archive::Tar;
+
+    open F, "uncompress -c $filename |";
+    my $tar = Archive::Tar->new(*F);
+    ...
+
+and this with C<gunzip>
+
+    use strict;
+    use warnings;
+    use Archive::Tar;
+
+    open F, "gunzip -c $filename |";
+    my $tar = Archive::Tar->new(*F);
+    ...
+
+Similarly, if the C<compress> program is available, you can use this to
+write a C<.tar.Z> file
+
+    use strict;
+    use warnings;
+    use Archive::Tar;
+    use IO::File;
+
+    my $fh = new IO::File "| compress -c >$filename";
+    my $tar = Archive::Tar->new();
+    ...
+    $tar->write($fh);
+    $fh->close ;
+
+=head2 How do I recompress using a different compression?
+
+This is easier that you might expect if you realise that all the
+C<IO::Compress::*> objects are derived from C<IO::File> and that all the
+C<IO::Uncompress::*> modules can read from an C<IO::File> filehandle.
+
+So, for example, say you have a file compressed with gzip that you want to
+recompress with bzip2. Here is all that is needed to carry out the
+recompression.
+
+    use IO::Uncompress::Gunzip ':all';
+    use IO::Compress::Bzip2 ':all';
+
+    my $gzipFile = "somefile.gz";
+    my $bzipFile = "somefile.bz2";
+
+    my $gunzip = new IO::Uncompress::Gunzip $gzipFile
+        or die "Cannot gunzip $gzipFile: $GunzipError\n" ;
+
+    bzip2 $gunzip => $bzipFile 
+        or die "Cannot bzip2 to $bzipFile: $Bzip2Error\n" ;
+
+Note, there is a limitation of this technique. Some compression file
+formats store extra information along with the compressed data payload. For
+example, gzip can optionally store the original filename and Zip stores a
+lot of information about the original file. If the original compressed file
+contains any of this extra information, it will not be transferred to the
+new compressed file usign the technique above.
+
+=head1 ZIP
+
+=head2 What Compression Types do IO::Compress::Zip & IO::Uncompress::Unzip support?
+
+The following compression formats are supported by C<IO::Compress::Zip> and
+C<IO::Uncompress::Unzip>
+
+=over 5
+
+=item * Store (method 0)
+
+No compression at all.
+
+=item * Deflate (method 8)
+
+This is the default compression used when creating a zip file with
+C<IO::Compress::Zip>.
+
+=item * Bzip2 (method 12)
+
+Only supported if the C<IO-Compress-Bzip2> module is installed.
+
+=item * Lzma (method 14)
+
+Only supported if the C<IO-Compress-Lzma> module is installed.
+
+=back
+
+=head2 Can I Read/Write Zip files larger the 4 Gig?
+
+Yes, both the C<IO-Compress-Zip> and C<IO-Uncompress-Unzip>  modules
+support the zip feature called I<Zip64>. That allows them to read/write
+files/buffers larger than 4Gig. 
+
+If you are creating a Zip file using the one-shot interface, and any of the
+input files is greater than 4Gig, a zip64 complaint zip file will be
+created. 
+
+    zip "really-large-file" => "my.zip";
+
+Similarly with the one-shot interface, if the input is a buffer larger than
+4 Gig, a zip64 complaint zip file will be created. 
+
+    zip \$really_large_buffer => "my.zip";
+
+The one-shot interface allows you to force the creation of a zip64 zip file
+by including the C<Zip64> option.
+
+    zip $filehandle => "my.zip", Zip64 => 1;
+
+If you want to create a zip64 zip file with the OO interface you must
+specify the C<Zip64> option.
+
+    my $zip = new IO::Compress::Zip "whatever", Zip64 => 1;
+	
+When uncompressing with C<IO-Uncompress-Unzip>, it will automatically
+detect if the zip file is zip64.
+
+If you intend to manipulate the Zip64 zip files created with
+C<IO-Compress-Zip> using an external zip/unzip, make sure that it supports
+Zip64.  
+
+In particular, if you are using Info-Zip you need to have zip version 3.x
+or better to update a Zip64 archive and unzip version 6.x to read a zip64
+archive. 
+
+=head2 Can I write more that 64K entries is a Zip files?
+
+Yes. Zip64 allows this. See previous question.
+
+=head2 Zip Resources
+
+The primary reference for zip files is the "appnote" document available at
+L<http://www.pkware.com/documents/casestudies/APPNOTE.TXT>
+
+An alternatively is the Info-Zip appnote. This is available from
+L<ftp://ftp.info-zip.org/pub/infozip/doc/>
+
+=head1 GZIP
+
+=head2 Gzip Resources
+
+The primary reference for gzip files is RFC 1952
+L<http://www.faqs.org/rfcs/rfc1952.html>
+
+The primary site for gzip is F<http://www.gzip.org>.
+
+=head2 Dealing with Concatenated gzip files
+
+If the gunzip program encounters a file containing multiple gzip files
+concatenated together it will automatically uncompress them all.
+The example below illustrates this behaviour
+
+    $ echo abc | gzip -c >x.gz
+    $ echo def | gzip -c >>x.gz
+    $ gunzip -c x.gz 
+    abc
+    def
+
+By default C<IO::Uncompress::Gunzip> will I<not> bahave like the gunzip
+program. It will only uncompress the first gzip data stream in the file, as
+shown below
+
+    $ perl -MIO::Uncompress::Gunzip=:all -e 'gunzip "x.gz" => \*STDOUT'
+    abc
+
+To force C<IO::Uncompress::Gunzip> to uncompress all the gzip data streams,
+include the C<MultiStream> option, as shown below
+
+    $ perl -MIO::Uncompress::Gunzip=:all -e 'gunzip "x.gz" => \*STDOUT, MultiStream => 1'
+    abc
+    def
+
+=head1 ZLIB
+
+=head2 Zlib Resources
+
+The primary site for the I<zlib> compression library is
+F<http://www.zlib.org>.
+
+=head1 Bzip2
+
+=head2 Bzip2 Resources
+
+The primary site for bzip2 is F<http://www.bzip.org>.
+
+=head2 Dealing with Concatenated bzip2 files
+
+If the bunzip2 program encounters a file containing multiple bzip2 files
+concatenated together it will automatically uncompress them all.
+The example below illustrates this behaviour
+
+    $ echo abc | bzip2 -c >x.bz2
+    $ echo def | bzip2 -c >>x.bz2
+    $ bunzip2 -c x.bz2
+    abc
+    def
+
+By default C<IO::Uncompress::Bunzip2> will I<not> bahave like the bunzip2
+program. It will only uncompress the first bunzip2 data stream in the file, as
+shown below
+
+    $ perl -MIO::Uncompress::Bunzip2=:all -e 'bunzip2 "x.bz2" => \*STDOUT'
+    abc
+
+To force C<IO::Uncompress::Bunzip2> to uncompress all the bzip2 data streams,
+include the C<MultiStream> option, as shown below
+
+    $ perl -MIO::Uncompress::Bunzip2=:all -e 'bunzip2 "x.bz2" => \*STDOUT, MultiStream => 1'
+    abc
+    def
+
+=head2 Interoperating with Pbzip2
+
+Pbzip2 (L<http://compression.ca/pbzip2/>) is a parallel implementation of
+bzip2. The output from pbzip2 consists of a series of concatenated bzip2
+data streams.
+
+By default C<IO::Uncompress::Bzip2> will only uncompress the first bzip2
+data stream in a pbzip2 file. To uncompress the complete pbzip2 file you
+must include the C<MultiStream> option, like this.
+
+    bunzip2 $input => \$output, MultiStream => 1 
+        or die "bunzip2 failed: $Bunzip2Error\n";
+
+=head1 HTTP & NETWORK
+
+=head2 Apache::GZip Revisited
+
+Below is a mod_perl Apache compression module, called C<Apache::GZip>,
+taken from
+F<http://perl.apache.org/docs/tutorials/tips/mod_perl_tricks/mod_perl_tricks.html#On_the_Fly_Compression>
+
+  package Apache::GZip;
+  #File: Apache::GZip.pm
+  
+  use strict vars;
+  use Apache::Constants ':common';
+  use Compress::Zlib;
+  use IO::File;
+  use constant GZIP_MAGIC => 0x1f8b;
+  use constant OS_MAGIC => 0x03;
+  
+  sub handler {
+      my $r = shift;
+      my ($fh,$gz);
+      my $file = $r->filename;
+      return DECLINED unless $fh=IO::File->new($file);
+      $r->header_out('Content-Encoding'=>'gzip');
+      $r->send_http_header;
+      return OK if $r->header_only;
+  
+      tie *STDOUT,'Apache::GZip',$r;
+      print($_) while <$fh>;
+      untie *STDOUT;
+      return OK;
+  }
+  
+  sub TIEHANDLE {
+      my($class,$r) = @_;
+      # initialize a deflation stream
+      my $d = deflateInit(-WindowBits=>-MAX_WBITS()) || return undef;
+  
+      # gzip header -- don't ask how I found out
+      $r->print(pack("nccVcc",GZIP_MAGIC,Z_DEFLATED,0,time(),0,OS_MAGIC));
+  
+      return bless { r   => $r,
+                     crc =>  crc32(undef),
+                     d   => $d,
+                     l   =>  0 
+                   },$class;
+  }
+  
+  sub PRINT {
+      my $self = shift;
+      foreach (@_) {
+        # deflate the data
+        my $data = $self->{d}->deflate($_);
+        $self->{r}->print($data);
+        # keep track of its length and crc
+        $self->{l} += length($_);
+        $self->{crc} = crc32($_,$self->{crc});
+      }
+  }
+  
+  sub DESTROY {
+     my $self = shift;
+     
+     # flush the output buffers
+     my $data = $self->{d}->flush;
+     $self->{r}->print($data);
+     
+     # print the CRC and the total length (uncompressed)
+     $self->{r}->print(pack("LL",@{$self}{qw/crc l/}));
+  }
+   
+  1;
+
+Here's the Apache configuration entry you'll need to make use of it.  Once
+set it will result in everything in the /compressed directory will be
+compressed automagically.
+
+  <Location /compressed>
+     SetHandler  perl-script
+     PerlHandler Apache::GZip
+  </Location>
+
+Although at first sight there seems to be quite a lot going on in
+C<Apache::GZip>, you could sum up what the code was doing as follows --
+read the contents of the file in C<< $r->filename >>, compress it and write
+the compressed data to standard output. That's all.
+
+This code has to jump through a few hoops to achieve this because
+
+=over
+
+=item 1.
+
+The gzip support in C<Compress::Zlib> version 1.x can only work with a real
+filesystem filehandle. The filehandles used by Apache modules are not
+associated with the filesystem.
+
+=item 2.
+
+That means all the gzip support has to be done by hand - in this case by
+creating a tied filehandle to deal with creating the gzip header and
+trailer.
+
+=back
+
+C<IO::Compress::Gzip> doesn't have that filehandle limitation (this was one
+of the reasons for writing it in the first place). So if
+C<IO::Compress::Gzip> is used instead of C<Compress::Zlib> the whole tied
+filehandle code can be removed. Here is the rewritten code.
+
+  package Apache::GZip;
+  
+  use strict vars;
+  use Apache::Constants ':common';
+  use IO::Compress::Gzip;
+  use IO::File;
+  
+  sub handler {
+      my $r = shift;
+      my ($fh,$gz);
+      my $file = $r->filename;
+      return DECLINED unless $fh=IO::File->new($file);
+      $r->header_out('Content-Encoding'=>'gzip');
+      $r->send_http_header;
+      return OK if $r->header_only;
+
+      my $gz = new IO::Compress::Gzip '-', Minimal => 1
+          or return DECLINED ;
+
+      print $gz $_ while <$fh>;
+  
+      return OK;
+  }
+  
+or even more succinctly, like this, using a one-shot gzip
+
+  package Apache::GZip;
+  
+  use strict vars;
+  use Apache::Constants ':common';
+  use IO::Compress::Gzip qw(gzip);
+  
+  sub handler {
+      my $r = shift;
+      $r->header_out('Content-Encoding'=>'gzip');
+      $r->send_http_header;
+      return OK if $r->header_only;
+
+      gzip $r->filename => '-', Minimal => 1
+        or return DECLINED ;
+
+      return OK;
+  }
+   
+  1;
+
+The use of one-shot C<gzip> above just reads from C<< $r->filename >> and
+writes the compressed data to standard output.
+
+Note the use of the C<Minimal> option in the code above. When using gzip
+for Content-Encoding you should I<always> use this option. In the example
+above it will prevent the filename being included in the gzip header and
+make the size of the gzip data stream a slight bit smaller.
+
+=head2 Compressed files and Net::FTP
+
+The C<Net::FTP> module provides two low-level methods called C<stor> and
+C<retr> that both return filehandles. These filehandles can used with the
+C<IO::Compress/Uncompress> modules to compress or uncompress files read
+from or written to an FTP Server on the fly, without having to create a
+temporary file.
+
+Firstly, here is code that uses C<retr> to uncompressed a file as it is
+read from the FTP Server.
+
+    use Net::FTP;
+    use IO::Uncompress::Gunzip qw(:all);
+
+    my $ftp = new Net::FTP ...
+
+    my $retr_fh = $ftp->retr($compressed_filename);
+    gunzip $retr_fh => $outFilename, AutoClose => 1
+        or die "Cannot uncompress '$compressed_file': $GunzipError\n";
+
+and this to compress a file as it is written to the FTP Server 
+
+    use Net::FTP;
+    use IO::Compress::Gzip qw(:all);
+
+    my $stor_fh = $ftp->stor($filename);
+    gzip "filename" => $stor_fh, AutoClose => 1
+        or die "Cannot compress '$filename': $GzipError\n";
+
+=head1 MISC
+
+=head2 Using C<InputLength> to uncompress data embedded in a larger file/buffer.
+
+A fairly common use-case is where compressed data is embedded in a larger
+file/buffer and you want to read both.
+
+As an example consider the structure of a zip file. This is a well-defined
+file format that mixes both compressed and uncompressed sections of data in
+a single file. 
+
+For the purposes of this discussion you can think of a zip file as sequence
+of compressed data streams, each of which is prefixed by an uncompressed
+local header. The local header contains information about the compressed
+data stream, including the name of the compressed file and, in particular,
+the length of the compressed data stream. 
+
+To illustrate how to use C<InputLength> here is a script that walks a zip
+file and prints out how many lines are in each compressed file (if you
+intend write code to walking through a zip file for real see
+L<IO::Uncompress::Unzip/"Walking through a zip file"> ). Also, although
+this example uses the zlib-based compression, the technique can be used by
+the other C<IO::Uncompress::*> modules.
+
+    use strict;
+    use warnings;
+
+    use IO::File;
+    use IO::Uncompress::RawInflate qw(:all);
+
+    use constant ZIP_LOCAL_HDR_SIG  => 0x04034b50;
+    use constant ZIP_LOCAL_HDR_LENGTH => 30;
+
+    my $file = $ARGV[0] ;
+
+    my $fh = new IO::File "<$file"
+                or die "Cannot open '$file': $!\n";
+
+    while (1)
+    {
+        my $sig;
+        my $buffer;
+
+        my $x ;
+        ($x = $fh->read($buffer, ZIP_LOCAL_HDR_LENGTH)) == ZIP_LOCAL_HDR_LENGTH 
+            or die "Truncated file: $!\n";
+
+        my $signature = unpack ("V", substr($buffer, 0, 4));
+
+        last unless $signature == ZIP_LOCAL_HDR_SIG;
+
+        # Read Local Header
+        my $gpFlag             = unpack ("v", substr($buffer, 6, 2));
+        my $compressedMethod   = unpack ("v", substr($buffer, 8, 2));
+        my $compressedLength   = unpack ("V", substr($buffer, 18, 4));
+        my $uncompressedLength = unpack ("V", substr($buffer, 22, 4));
+        my $filename_length    = unpack ("v", substr($buffer, 26, 2)); 
+        my $extra_length       = unpack ("v", substr($buffer, 28, 2));
+
+        my $filename ;
+        $fh->read($filename, $filename_length) == $filename_length 
+            or die "Truncated file\n";
+
+        $fh->read($buffer, $extra_length) == $extra_length
+            or die "Truncated file\n";
+
+        if ($compressedMethod != 8 && $compressedMethod != 0)
+        {
+            warn "Skipping file '$filename' - not deflated $compressedMethod\n";
+            $fh->read($buffer, $compressedLength) == $compressedLength
+                or die "Truncated file\n";
+            next;
+        }
+
+        if ($compressedMethod == 0 && $gpFlag & 8 == 8)
+        {
+            die "Streamed Stored not supported for '$filename'\n";
+        }
+
+        next if $compressedLength == 0;
+
+        # Done reading the Local Header
+
+        my $inf = new IO::Uncompress::RawInflate $fh,
+                            Transparent => 1,
+                            InputLength => $compressedLength
+          or die "Cannot uncompress $file [$filename]: $RawInflateError\n"  ;
+
+        my $line_count = 0;
+
+        while (<$inf>)
+        {
+            ++ $line_count;
+        }
+
+        print "$filename: $line_count\n";
+    }
+
+The majority of the code above is concerned with reading the zip local
+header data. The code that I want to focus on is at the bottom. 
+
+    while (1) {
+    
+        # read local zip header data
+        # get $filename
+        # get $compressedLength
+
+        my $inf = new IO::Uncompress::RawInflate $fh,
+                            Transparent => 1,
+                            InputLength => $compressedLength
+          or die "Cannot uncompress $file [$filename]: $RawInflateError\n"  ;
+
+        my $line_count = 0;
+
+        while (<$inf>)
+        {
+            ++ $line_count;
+        }
+
+        print "$filename: $line_count\n";
+    }
+
+The call to C<IO::Uncompress::RawInflate> creates a new filehandle C<$inf>
+that can be used to read from the parent filehandle C<$fh>, uncompressing
+it as it goes. The use of the C<InputLength> option will guarantee that
+I<at most> C<$compressedLength> bytes of compressed data will be read from
+the C<$fh> filehandle (The only exception is for an error case like a
+truncated file or a corrupt data stream).
+
+This means that once RawInflate is finished C<$fh> will be left at the
+byte directly after the compressed data stream. 
+
+Now consider what the code looks like without C<InputLength> 
+
+    while (1) {
+    
+        # read local zip header data
+        # get $filename
+        # get $compressedLength
+
+        # read all the compressed data into $data
+        read($fh, $data, $compressedLength);
+
+        my $inf = new IO::Uncompress::RawInflate \$data,
+                            Transparent => 1,
+          or die "Cannot uncompress $file [$filename]: $RawInflateError\n"  ;
+
+        my $line_count = 0;
+
+        while (<$inf>)
+        {
+            ++ $line_count;
+        }
+
+        print "$filename: $line_count\n";
+    }
+
+The difference here is the addition of the temporary variable C<$data>.
+This is used to store a copy of the compressed data while it is being
+uncompressed.
+
+If you know that C<$compressedLength> isn't that big then using temporary
+storage won't be a problem. But if C<$compressedLength> is very large or
+you are writing an application that other people will use, and so have no
+idea how big C<$compressedLength> will be, it could be an issue.
+
+Using C<InputLength> avoids the use of temporary storage and means the
+application can cope with large compressed data streams.
+
+One final point -- obviously C<InputLength> can only be used whenever you
+know the length of the compressed data beforehand, like here with a zip
+file. 
+
+=head1 SEE ALSO
+
+L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzma>, L<IO::Uncompress::UnLzma>, L<IO::Compress::Xz>, L<IO::Uncompress::UnXz>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
+
+L<IO::Compress::FAQ|IO::Compress::FAQ>
+
+L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
+L<Archive::Tar|Archive::Tar>,
+L<IO::Zlib|IO::Zlib>
+
+=head1 AUTHOR
+
+This module was written by Paul Marquess, F<pmqs at cpan.org>. 
+
+=head1 MODIFICATION HISTORY
+
+See the Changes file.
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 2005-2013 Paul Marquess. All rights reserved.
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+

Added: vendor/perl/dist/cpan/IO-Compress/t/105oneshot-zip-store-only.t
===================================================================
--- vendor/perl/dist/cpan/IO-Compress/t/105oneshot-zip-store-only.t	                        (rev 0)
+++ vendor/perl/dist/cpan/IO-Compress/t/105oneshot-zip-store-only.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,98 @@
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+	chdir 't' if -d 't';
+	@INC = ("../lib", "lib/compress");
+    }
+}
+
+use lib qw(t t/compress);
+use strict;
+use warnings;
+use bytes;
+
+use Test::More ;
+use CompTestUtils;
+
+BEGIN {
+    plan(skip_all => "oneshot needs Perl 5.005 or better - you have Perl $]" )
+        if $] < 5.005 ;
+
+    plan(skip_all => "IO::Compress::Bzip2 not available" )
+        unless eval { require IO::Compress::Bzip2; 
+                      require IO::Uncompress::Bunzip2; 
+                      1
+                    } ;
+
+    # use Test::NoWarnings, if available
+    my $extra = 0 ;
+    $extra = 1
+        if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
+
+    plan tests => 1058 + $extra ;
+
+    use_ok('IO::Compress::Zip', qw(:all)) ;
+    use_ok('IO::Uncompress::Unzip', qw(unzip $UnzipError)) ;
+}
+
+my @contents;
+my $content = "x" x 1025;
+$content .= "\x50" ;
+
+push @contents, $content ;
+
+$content .= "y" x 321 ;
+$content .= "\x50\x4b" ;
+push @contents, $content ;
+
+$content .= "z" x 21 ;
+$content .= "\x50\x4b\x07" . "a" x 73 ;
+push @contents, $content ;
+
+$content .= "a" x 73 ;
+$content .= "\x50\x4b\x07\x08" ;
+push @contents, $content ;
+
+$content .= "b" x 102 ;
+$content .= "\x50\x4b\x07\x08" . "\x50\x4b\x07\x08" ;
+push @contents, $content ;
+
+$content .= "c" x 102 ;
+push @contents, $content ;
+
+
+my $index = 0;
+for $content (@contents)
+{
+    ++ $index ;
+    my $contentLen = length $content ;
+
+
+    for my $stream (0, 1)
+    {
+        for my $zip64 (0, 1)
+        {
+            for my $blockSize (1 .. 7, $contentLen, $contentLen-1, $contentLen +1, 16*1024)
+            {
+                title "Index $index, Stream $stream, Zip64 $zip64, BlockSize $blockSize";
+
+                my $crc = Compress::Raw::Zlib::crc32($content);
+                $content .= "\x50\x4b\x07\x08" . pack("V", $crc) . "b" x 53 ;
+
+                my $zipped ;
+
+                ok zip(\$content => \$zipped , Method => ZIP_CM_STORE,
+                                               Zip64  => $zip64,
+                                               Stream => $stream), " zip ok" 
+                    or diag $ZipError ;
+
+                my $got ;
+                ok unzip(\$zipped => \$got, BlockSize => $blockSize), "  unzip ok"
+                    or diag $UnzipError ;
+
+                is $got, $content, "  content ok";
+
+            }
+        }
+    }
+}
+

Added: vendor/perl/dist/cpan/IO-Compress/t/111const-deflate.t
===================================================================
--- vendor/perl/dist/cpan/IO-Compress/t/111const-deflate.t	                        (rev 0)
+++ vendor/perl/dist/cpan/IO-Compress/t/111const-deflate.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,100 @@
+BEGIN {
+    if ($ENV{PERL_CORE}) {
+	chdir 't' if -d 't';
+	@INC = ("../lib", "lib/compress");
+    }
+}
+
+use lib qw(t t/compress);
+use strict;
+use warnings;
+use bytes;
+
+use Test::More ;
+use CompTestUtils;
+
+
+BEGIN {
+    # use Test::NoWarnings, if available
+    my $extra = 0 ;
+    $extra = 1
+        if eval { require Test::NoWarnings ;  import Test::NoWarnings; 1 };
+
+    plan tests => 355 + $extra ;
+}
+
+
+{
+    use Compress::Raw::Zlib ;
+        
+    my %all;
+    for my $symbol (@Compress::Raw::Zlib::DEFLATE_CONSTANTS)
+    {
+        eval "defined Compress::Raw::Zlib::$symbol" ;
+        $all{$symbol} = ! $@ ;
+    }   
+           
+    my $pkg = 1;
+   
+    for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) 
+    {
+        ++ $pkg ; 
+        eval <<EOM;
+            package P$pkg;
+            use Test::More ;
+            use CompTestUtils;
+        
+            use IO::Compress::$module () ;
+        
+            ::title "IO::Compress::$module - no import" ;       
+EOM
+        is $@, "", "create package P$pkg";
+        for my $symbol (@Compress::Raw::Zlib::DEFLATE_CONSTANTS)
+        {
+            if ( $all{$symbol})
+            {
+                eval "package P$pkg; defined IO::Compress::${module}::$symbol ;";            
+                is $@, "", "  has $symbol";
+            }
+            else
+            {
+                ok 1, "  $symbol not available";
+            }
+        }        
+    }    
+    
+    for my $module ( qw( Adapter::Deflate RawDeflate Deflate Gzip Zip )) 
+    {
+        for my $label (keys %Compress::Raw::Zlib::DEFLATE_CONSTANTS)
+        {
+            ++ $pkg ; 
+
+            eval <<EOM;
+                package P$pkg;
+                use Test::More ;
+                use CompTestUtils;
+            
+                use IO::Compress::$module qw(:$label) ;
+            
+                ::title "IO::Compress::$module - import :$label" ; 
+          
+EOM
+            is $@, "", "create package P$pkg";
+            
+            for my $symbol (@{ $Compress::Raw::Zlib::DEFLATE_CONSTANTS{$label} } )
+            {
+                if ( $all{$symbol})
+                {
+                    eval "package P$pkg; defined $symbol ;";            
+                    is $@, "", "  has $symbol";
+                }
+                else
+                {
+                    ok 1, "  $symbol not available";
+                }                               
+            }   
+        }     
+    }       
+    
+}
+

Added: vendor/perl/dist/cpan/JSON-PP/t/116_incr_parse_fixed.t
===================================================================
--- vendor/perl/dist/cpan/JSON-PP/t/116_incr_parse_fixed.t	                        (rev 0)
+++ vendor/perl/dist/cpan/JSON-PP/t/116_incr_parse_fixed.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,25 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 4;
+
+use JSON::PP;
+
+my $json = JSON::PP->new->allow_nonref();
+
+my @vs = $json->incr_parse('"a\"bc');
+
+ok( not scalar(@vs) );
+
+ at vs = $json->incr_parse('"');
+
+is( $vs[0], "a\"bc" );
+
+
+$json = JSON::PP->new;
+
+ at vs = $json->incr_parse('"a\"bc');
+ok( not scalar(@vs) );
+ at vs = eval { $json->incr_parse('"') };
+ok($@ =~ qr/JSON text must be an object or array/);
+

Added: vendor/perl/dist/cpan/List-Util/t/getmagic-once.t
===================================================================
--- vendor/perl/dist/cpan/List-Util/t/getmagic-once.t	                        (rev 0)
+++ vendor/perl/dist/cpan/List-Util/t/getmagic-once.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,47 @@
+#!./perl
+
+BEGIN {
+    unless (-d 'blib') {
+	chdir 't' if -d 't';
+	@INC = '../lib';
+	require Config; import Config;
+	keys %Config; # Silence warning
+	if ($Config{extensions} !~ /\bList\/Util\b/) {
+	    print "1..0 # Skip: List::Util was not built\n";
+	    exit 0;
+	}
+    }
+}
+use strict;
+use Scalar::Util qw(blessed reftype refaddr);
+use Test::More tests => 6;
+
+my $getmagic_count;
+
+{
+    package T;
+    use Tie::Scalar;
+    use base qw(Tie::StdScalar);
+
+    sub FETCH {
+        $getmagic_count++;
+        my($self) = @_;
+        return $self->SUPER::FETCH;
+    }
+}
+
+tie my $var, 'T';
+
+$var = bless {};
+
+$getmagic_count = 0;
+ok blessed($var);
+is $getmagic_count, 1, 'blessed';
+
+$getmagic_count = 0;
+ok reftype($var);
+is $getmagic_count, 1, 'reftype';
+
+$getmagic_count = 0;
+ok refaddr($var);
+is $getmagic_count, 1, 'refaddr';

Added: vendor/perl/dist/cpan/List-Util/t/multicall-refcount.t
===================================================================
--- vendor/perl/dist/cpan/List-Util/t/multicall-refcount.t	                        (rev 0)
+++ vendor/perl/dist/cpan/List-Util/t/multicall-refcount.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+use Test::More tests => 1;
+
+use List::Util 'first';
+
+our $comparison;
+
+sub foo {
+   if( $comparison ) {
+      return 1;
+   }
+   else {
+      local $comparison = 1;
+      first \&foo, 1,2,3;
+   }
+}
+
+for(1,2){
+   foo();
+}
+
+ok( "Didn't crash calling recursively" );

Added: vendor/perl/dist/cpan/List-Util/t/sum0.t
===================================================================
--- vendor/perl/dist/cpan/List-Util/t/sum0.t	                        (rev 0)
+++ vendor/perl/dist/cpan/List-Util/t/sum0.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+
+use List::Util qw( sum0 );
+
+my $v = sum0;
+is( $v, 0, 'no args' );
+
+$v = sum0(9);
+is( $v, 9, 'one arg' );
+
+$v = sum0(1,2,3,4);
+is( $v, 10, '4 args');

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/API.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/API.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/API.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,320 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::API - a description of the callable function in each module
+
+=head1 DESCRIPTION
+
+Although there are several modules in the Locale-Codes distribution, all of them
+(as of version 3.10) use exactly the same API.  As a matter of fact, each of the
+main callable modules are just wrappers around a central module which does all
+the real work.
+
+=head1 ROUTINES
+
+In order to maintain the documentation for the modules consistently,
+the functions are all documented here, rather than in the documentation
+for the separate modules.
+
+The name of the function depends on the module. For example, every module
+contains a function "code2XXX" where XXX refers to the type of data.
+The values of XXX are described in the following table:
+
+   XXX       MODULE
+
+   country   Locale::Codes::Country
+   language  Locale::Codes::Language
+   currency  Locale::Codes::Currency
+   script    Locale::Codes::Script
+   langext   Locale::Codes::LangExt
+   langvar   Locale::Codes::LangVar
+   langfam   Locale::Codes::LangFAM
+
+So, the Locale::Country module contains the function code2country, the
+Locale::Language module contains the function code2language, etc.
+
+In all of the functions below, CODE refers to a code for one element in
+the code set. For example, in the two-letter country codes from ISO 3166-1,
+the code 'fi' is used to refer to the country Finland. CODE is always
+case insensitive (though when a code is returned, it will always be in
+the case as used in the standard), so 'fi', 'FI', and 'Fi' would all
+be equivalent.
+
+CODESET refers to a constant specified in the documentation for each
+module to label the various code sets. For example, in the
+Locale::Language module, CODESET could be LOCALE_CODE_ALPHA_2 or
+LOCALE_CODE_ALPHA_3 (among others). Most functions have a default one,
+so they do not need to be specified. So the following calls are valid:
+
+   code2country("fi");
+   code2country("fi",LOCALE_CODE_ALPHA_2);
+   code2country("fin",LOCALE_CODE_ALPHA_3);
+
+Since LOCALE_CODE_ALPHA_2 is the default code set, the first two are
+identical.
+
+=over 4
+
+=item B<code2XXX ( CODE [,CODESET] [,'retired'] )>
+
+These functions take a code and returns a string which contains
+the name of the element identified.  If the code is not a valid
+code in the CODESET specified then C<undef> will be returned.
+
+The name of the element is the name as specified in the standard,
+and as a result, different variations of an element name may
+be returned for different values of CODESET.
+
+For example, the B<alpha-2> country code set defines the two-letter
+code "bo" to be "Bolivia, Plurinational State of", whereas the
+B<alpha-3> code set defines the code 'bol' to be the country "Bolivia
+(Plurinational State of)". So:
+
+   code2country('bo',LOCALE_CODE_ALPHA_2);
+      => 'Bolivia, Plurinational State of'
+
+   code2country('bol',LOCALE_CODE_ALPHA_3);
+      => 'Bolivia (Plurinational State of)'
+
+By default, only active codes will be used, but if the string
+'retired' is passed in as an argument, both active and retired
+codes will be examined.
+
+=item B<XXX2code ( NAME [,CODESET] [,'retired'] )>
+
+These functions takes the name of an element (or any of it's aliases)
+and returns the code that corresponds to it, if it exists. If NAME
+could not be identified as the name of one of the elements, then
+C<undef> will be returned.
+
+The name is not case sensitive. Also, any known variation of a name
+may be passed in.
+
+For example, even though the country name returned using
+LOCALE_CODE_ALPHA_2 and LOCALE_CODE_ALPHA_3 country codes for Bolivia is different,
+either country name may be passed in since for each code set, in addition to
+the alias 'Bolivia'. So:
+
+   country2code('Bolivia, Plurinational State of',
+                LOCALE_CODE_ALPHA_2);
+      => bo
+
+   country2code('Bolivia (Plurinational State of)',
+                LOCALE_CODE_ALPHA_2);
+      => bo
+
+   country2code('Bolivia',LOCALE_CODE_ALPHA_2);
+      => bo
+
+By default, only active names will be used, but if the string
+'retired' is passed in as an argument, both active and retired
+names will be examined.
+
+=item B<XXX_code2code ( CODE ,CODESET ,CODESET2 )>
+
+These functions takes a a code from one code set, and returns the
+corresponding code from another code set. CODE must exists in the code
+set specified by CODESET and must have a corresponding code in the
+code set specified by CODESET2 or C<undef> will be returned.
+
+Both CODESETs must be explicitly entered.
+
+   country_code2code('fin', LOCALE_CODE_ALPHA_3,
+                     LOCALE_CODE_ALPHA_2);
+      => 'fi'
+
+Note that this function does NOT support retired codes.
+
+=item B<all_XXX_codes ( [CODESET] [,'retired'] )>
+
+These returns a list of all code in the code set. The codes will be
+sorted.
+
+By default, only active codes will be returned, but if the string
+'retired' is passed in as an argument, both active and retired
+codes will be returned.
+
+=item B<all_XXX_names ( [CODESET] [,'retired'] )>
+
+These return a list of all elements names for which there is a
+corresponding code in the specified code set.
+
+The names returned are exactly as they are specified in the standard,
+and are sorted.
+
+Since not all elements are listed in all code sets, the list of
+elements may differ depending on the code set specified.
+
+By default, only active names will be returned, but if the string
+'retired' is passed in as an argument, both active and retired
+names will be returned.
+
+=back
+
+=head1 SEMI-PRIVATE ROUTINES
+
+Additional semi-private routines which may be used to modify the
+internal data are also available.  Given their status, they aren't
+exported, and so need to be called by prefixing the function name with
+the package name.
+
+These routines do not currently work with retired codes.
+
+=over 4
+
+=item B<MODULE::rename_XXX  ( CODE ,NEW_NAME [,CODESET] )>
+
+These routines are used to change the official name of an element. At
+that point, the name returned by the code2XXX routine would be
+NEW_NAME instead of the name specified in the standard.
+
+The original name will remain as an alias.
+
+For example, the official country name for code 'gb' is 'United
+Kingdom'.  If you want to change that, you might call:
+
+   Locale::Codes::Country::rename_country('gb', 'Great Britain');
+
+This means that calling code2country('gb') will now return 'Great
+Britain' instead of 'United Kingdom'.
+
+If any error occurs, a warning is issued and 0 is returned. An error
+occurs if CODE doesn't exist in the specified code set, or if
+NEW_NAME is already in use but for a different element.
+
+If the routine succeeds, 1 is returned.
+
+=item B<MODULE::add_XXX  ( CODE ,NAME [,CODESET] )>
+
+These routines are used to add a new code and name to the data.
+
+Both CODE and NAME must be unused in the data set or an error
+occurs (though NAME may be used in a different data set).
+
+For example, to create the fictitious country named "Duchy of
+Grand Fenwick" with codes "gf" and "fen", use the following:
+
+   Locale::Codes::Country::add_country("fe","Duchy of Grand Fenwick",
+                                LOCALE_CODE_ALPHA_2);
+
+   Locale::Codes::Country::add_country("fen","Duchy of Grand Fenwick",
+                                LOCALE_CODE_ALPHA_3);
+
+The return value is 1 on success, 0 on an error.
+
+=item B<MODULE::delete_XXX  ( CODE [,CODESET] )>
+
+These routines are used to delete a code from the data.
+
+CODE must refer to an existing code in the code set.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<MODULE::add_XXX_alias  ( NAME ,NEW_NAME )>
+
+These routines are used to add a new alias to the data. They do
+not alter the return value of the code2XXX function.
+
+NAME must be an existing element name, and NEW_NAME must
+be unused or an error occurs.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<MODULE::delete_XXX_alias  ( NAME )>
+
+These routines are used to delete an alias from the data. Once
+removed, the element may not be referred to by NAME.
+
+NAME must be one of a list of at least two names that may be used to
+specify an element. If the element may only be referred to by a single
+name, you'll need to use the add_XXX_alias function to add a new alias
+first, or the remove_XXX function to remove the element entirely.
+
+If the alias is used as the name in any code set, one of the other
+names will be used instead. Predicting exactly which one will
+be used requires you to know the order in which the standards
+were read, which is not reliable, so you may want to use the
+rename_XXX function to force one of the alternate names to be
+used.
+
+The return value is 1 on success, 0 on an error.
+
+=item B<MODULE::rename_XXX_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines are used to change the official code for an element. At
+that point, the code returned by the XXX2code routine would be
+NEW_CODE instead of the code specified in the standard.
+
+NEW_CODE may either be a code that is not in use, or it may be an
+alias for CODE (in which case, CODE becomes and alias and NEW_CODE
+becomes the "real" code).
+
+The original code is kept as an alias, so that the code2XXX routines
+will work with either the code from the standard or the new code.
+
+However, the all_XXX_codes routine will only return the codes which
+are considered "real" (which means that the list of codes will now
+contain NEW_CODE, but will not contain CODE).
+
+=item B<MODULE::add_XXX_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+These routines add an alias for the code. At that point, NEW_CODE and CODE
+will both work in the code2XXX routines. However, the XXX2code routines will
+still return the original code.
+
+=item B<MODULE::delete_XXX_code_alias  ( CODE [,CODESET] )>
+
+These routines delete an alias for the code.
+
+These will only work if CODE is actually an alias. If it is the "real"
+code, it will not be deleted. You will need to use the rename_XXX_code
+function to switch the real code with one of the aliases, and then
+delete the alias.
+
+=back
+
+=head1 KNOWN BUGS AND LIMITATIONS
+
+=over 4
+
+=item B<Relationship between code sets>
+
+Because each code set uses a slightly different list of elements, and
+they are not necessarily one-to-one, there may be some confusion
+about the relationship between codes from different code sets.
+
+For example, ISO 3166 assigns one code to the country "United States
+Minor Outlying Islands", but the FIPS 10 codes give different codes
+to different islands (Baker Island, Howland Island, etc.).
+
+This may cause some confusion... I've done the best that I could do
+to minimize it.
+
+=item B<Non-ASCII characters not supported>
+
+Currently all names must be all ASCII. I plan on relaxing that
+limitation in the future.
+
+=back
+
+=head1 SEE ALSO
+
+Locale::Codes
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,133 @@
+package Locale::Codes::Constants;
+# Copyright (C) 2001      Canon Research Centre Europe (CRE).
+# Copyright (C) 2002-2009 Neil Bowers
+# Copyright (c) 2010-2013 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+require Exporter;
+
+#-----------------------------------------------------------------------
+#	Public Global Variables
+#-----------------------------------------------------------------------
+
+our($VERSION, at ISA, at EXPORT);
+our(%ALL_CODESETS);
+
+$VERSION='3.25';
+ at ISA     = qw(Exporter);
+ at EXPORT  = qw(LOCALE_CODE_ALPHA_2
+              LOCALE_CODE_ALPHA_3
+              LOCALE_CODE_NUMERIC
+              LOCALE_CODE_FIPS
+              LOCALE_CODE_DOM
+
+              LOCALE_LANG_ALPHA_2
+              LOCALE_LANG_ALPHA_3
+              LOCALE_LANG_TERM
+
+              LOCALE_CURR_ALPHA
+              LOCALE_CURR_NUMERIC
+
+              LOCALE_SCRIPT_ALPHA
+              LOCALE_SCRIPT_NUMERIC
+
+              LOCALE_LANGEXT_ALPHA
+
+              LOCALE_LANGVAR_ALPHA
+
+              LOCALE_LANGFAM_ALPHA
+
+              %ALL_CODESETS
+            );
+
+#-----------------------------------------------------------------------
+#	Constants
+#-----------------------------------------------------------------------
+
+use constant LOCALE_CODE_ALPHA_2    => 'alpha-2';
+use constant LOCALE_CODE_ALPHA_3    => 'alpha-3';
+use constant LOCALE_CODE_NUMERIC    => 'numeric';
+use constant LOCALE_CODE_FIPS       => 'fips-10';
+use constant LOCALE_CODE_DOM        => 'dom';
+
+$ALL_CODESETS{'country'} = {
+                            'default'  => 'alpha-2',
+                            'codesets' => { 'alpha-2'  => ['lc'],
+                                            'alpha-3'  => ['lc'],
+                                            'numeric'  => ['numeric',3],
+                                            'fips-10'  => ['uc'],
+                                            'dom'      => ['lc'],
+                                          }
+                           };
+
+use constant LOCALE_LANG_ALPHA_2    => 'alpha-2';
+use constant LOCALE_LANG_ALPHA_3    => 'alpha-3';
+use constant LOCALE_LANG_TERM       => 'term';
+
+$ALL_CODESETS{'language'} = {
+                             'default'  => 'alpha-2',
+                             'codesets' => { 'alpha-2'  => ['lc'],
+                                             'alpha-3'  => ['lc'],
+                                             'term'     => ['lc'],
+                                           }
+                            };
+
+use constant LOCALE_CURR_ALPHA      => 'alpha';
+use constant LOCALE_CURR_NUMERIC    => 'num';
+
+$ALL_CODESETS{'currency'} = {
+                             'default'  => 'alpha',
+                             'codesets' => { 'alpha'  => ['uc'],
+                                             'num'    => ['numeric',3],
+                                           }
+                            };
+
+use constant LOCALE_SCRIPT_ALPHA    => 'alpha';
+use constant LOCALE_SCRIPT_NUMERIC  => 'num';
+
+$ALL_CODESETS{'script'} = {
+                           'default'  => 'alpha',
+                           'codesets' => { 'alpha'  => ['ucfirst'],
+                                           'num'    => ['numeric',3],
+                                         }
+                          };
+
+use constant LOCALE_LANGEXT_ALPHA   => 'alpha';
+
+$ALL_CODESETS{'langext'} = {
+                           'default'  => 'alpha',
+                           'codesets' => { 'alpha'  => ['lc'],
+                                         }
+                          };
+
+use constant LOCALE_LANGVAR_ALPHA   => 'alpha';
+
+$ALL_CODESETS{'langvar'} = {
+                           'default'  => 'alpha',
+                           'codesets' => { 'alpha'  => ['lc'],
+                                         }
+                          };
+
+use constant LOCALE_LANGFAM_ALPHA   => 'alpha';
+
+$ALL_CODESETS{'langfam'} = {
+                           'default'  => 'alpha',
+                           'codesets' => { 'alpha'  => ['lc'],
+                                         }
+                          };
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Constants.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,41 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Constants - constants for Locale codes
+
+=head1 DESCRIPTION
+
+B<Locale::Codes::Constants> defines symbols which are used in the other
+modules from the Locale-Codes distribution.
+
+You shouldn't have to C<use> this module directly yourself - it is
+used by the other Locale modules, which in turn export the symbols.
+
+The constants are documented in each of the Locale modules.
+
+=head1 KNOWN BUGS AND LIMITATIONS
+
+None known.
+
+=head1 SEE ALSO
+
+Locale::Codes
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,217 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Country - standard codes for country identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::Country;
+
+   $country = code2country('jp' [,CODESET]);        # $country gets 'Japan'
+   $code    = country2code('Norway' [,CODESET]);    # $code gets 'no'
+
+   @codes   = all_country_codes( [CODESET]);
+   @names   = all_country_names();
+
+   # semi-private routines
+   Locale::Codes::Country::alias_code('uk' => 'gb');
+   Locale::Codes::Country::rename_country('gb' => 'Great Britain');
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::Country> module provides access to several code sets
+that can be used for identifying countries, such as those defined in
+ISO 3166-1.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+3166-1 two-letter codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+countries. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $country = code2country('jp','alpha-2');
+   $country = code2country('jp',LOCALE_CODE_ALPHA_2);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha-2, LOCALE_CODE_ALPHA_2>
+
+This is the set of two-letter (lowercase) codes from ISO 3166-1, such
+as 'tv' for Tuvalu.
+
+This is the default code set.
+
+=item B<alpha-3, LOCALE_CODE_ALPHA_3>
+
+This is the set of three-letter (lowercase) codes from ISO 3166-1,
+such as 'brb' for Barbados. These codes are actually defined and
+maintained by the U.N. Statistics division.
+
+=item B<numeric, LOCALE_CODE_NUMERIC>
+
+This is the set of three-digit numeric codes from ISO 3166-1, such as
+064 for Bhutan. These codes are actually defined and maintained by the
+U.N. Statistics division.
+
+If a 2-digit code is entered, it is converted to 3 digits by prepending
+a 0.
+
+=item B<fips-10, LOCALE_CODE_FIPS>
+
+The FIPS 10 data are two-letter (uppercase) codes assigned by the
+National Geospatial-Intelligence Agency.
+
+=item B<dom, LOCALE_CODE_DOM>
+
+The IANA is responsible for delegating management of the top level country
+domains.  The country domains are the two-letter (lowercase) codes from ISO 3166
+with a few other additions.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2country ( CODE [,CODESET] )>
+
+=item B<country2code ( NAME [,CODESET] )>
+
+=item B<country_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_country_codes ( [CODESET] )>
+
+=item B<all_country_names ( [CODESET] )>
+
+=item B<Locale::Codes::Country::rename_country  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::Country::add_country  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::Country::delete_country  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::Country::add_country_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::Country::delete_country_alias  ( NAME )>
+
+=item B<Locale::Codes::Country::rename_country_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Country::add_country_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Country::delete_country_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=item B<alias_code ( ALIAS, CODE [,CODESET] )>
+
+Version 2.07 included 2 functions for modifying the internal data:
+rename_country and alias_code. Both of these could be used only to
+modify the internal data for country codes.
+
+As of 3.10, the internal data for all types of codes can be modified.
+
+The alias_code function is preserved for backwards compatibility, but
+the following two are identical:
+
+   alias_code(ALIAS,CODE [,CODESET]);
+   rename_country_code(CODE,ALIAS [,CODESET]);
+
+and the latter should be used for consistency.
+
+The alias_code function is deprecated and will be removed at some point
+in the future.
+
+B<Note:> this function was previously called _alias_code, but the
+leading underscore has been dropped. The old name was supported for
+all 2.X releases, but has been dropped as of 3.00.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<Locale::SubCountry>
+
+ISO codes for country sub-divisions (states, counties, provinces,
+etc), as defined in ISO 3166-2.  This module is not part of the
+Locale-Codes distribution, but is available from CPAN in
+CPAN/modules/by-module/Locale/
+
+=item B<http://www.iso.org/iso/country_codes>
+
+Official home page for the ISO 3166 maintenance agency.
+
+Unfortunately, they do not make the actual ISO available for free,
+so I cannot check the alpha-3 and numerical codes here.
+
+=item B<http://www.iso.org/iso/list-en1-semic-3.txt>
+
+=item B<http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm>
+
+The source of ISO 3166-1 two-letter codes used by this
+module.
+
+=item B<http://unstats.un.org/unsd/methods/m49/m49alpha.htm>
+
+The source of the official ISO 3166-1 three-letter codes and
+three-digit codes.
+
+For some reason, this table is incomplete! Several countries are
+missing from it, and I cannot find them anywhere on the UN site.  I
+get as much of the data from here as I can.
+
+=item B<http://earth-info.nga.mil/gns/html/digraphs.htm>
+
+The official list of the FIPS 10 codes.
+
+=item B<http://www.iana.org/domains/>
+
+Official source of the top-level domain names.
+
+=item B<https://www.cia.gov/library/publications/the-world-factbook/appendix/print_appendix-d.html>
+
+The World Factbook maintained by the CIA is a potential source of
+the data.  Unfortunately, it adds/preserves non-standard codes, so it is no
+longer used as a source of data.
+
+=item B<http://www.statoids.com/wab.html>
+
+Another unofficial source of data. Currently, it is not used to get
+data, but the notes and explanatory material were very useful for
+understanding discrepancies between the sources.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8761 @@
+package Locale::Codes::Country_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:03 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Country_Codes - country codes for the Locale::Codes::Country module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Country module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'country'}{'id'} = '0294';
+
+$Locale::Codes::Data{'country'}{'id2names'} = {
+   q(0001) => [
+      q(Afghanistan),
+      ],
+   q(0002) => [
+      q(Aland Islands),
+      ],
+   q(0003) => [
+      q(Albania),
+      ],
+   q(0004) => [
+      q(Algeria),
+      ],
+   q(0005) => [
+      q(American Samoa),
+      ],
+   q(0006) => [
+      q(Andorra),
+      ],
+   q(0007) => [
+      q(Angola),
+      ],
+   q(0008) => [
+      q(Anguilla),
+      ],
+   q(0009) => [
+      q(Antarctica),
+      ],
+   q(0010) => [
+      q(Antigua and Barbuda),
+      ],
+   q(0011) => [
+      q(Argentina),
+      ],
+   q(0012) => [
+      q(Armenia),
+      ],
+   q(0013) => [
+      q(Aruba),
+      ],
+   q(0014) => [
+      q(Australia),
+      ],
+   q(0015) => [
+      q(Austria),
+      ],
+   q(0016) => [
+      q(Azerbaijan),
+      ],
+   q(0017) => [
+      q(Bahamas),
+      q(Bahamas, The),
+      q(The Bahamas),
+      ],
+   q(0018) => [
+      q(Bahrain),
+      ],
+   q(0019) => [
+      q(Bangladesh),
+      ],
+   q(0020) => [
+      q(Barbados),
+      ],
+   q(0021) => [
+      q(Belarus),
+      ],
+   q(0022) => [
+      q(Belgium),
+      ],
+   q(0023) => [
+      q(Belize),
+      ],
+   q(0024) => [
+      q(Benin),
+      ],
+   q(0025) => [
+      q(Bermuda),
+      ],
+   q(0026) => [
+      q(Bhutan),
+      ],
+   q(0027) => [
+      q(Bolivia, Plurinational State of),
+      q(Bolivia (Plurinational State of)),
+      q(Bolivia),
+      ],
+   q(0028) => [
+      q(Bonaire, Saint Eustatius and Saba),
+      ],
+   q(0029) => [
+      q(Bosnia and Herzegovina),
+      ],
+   q(0030) => [
+      q(Botswana),
+      ],
+   q(0031) => [
+      q(Bouvet Island),
+      ],
+   q(0032) => [
+      q(Brazil),
+      ],
+   q(0033) => [
+      q(British Indian Ocean Territory),
+      ],
+   q(0034) => [
+      q(Brunei Darussalam),
+      q(Brunei),
+      ],
+   q(0035) => [
+      q(Bulgaria),
+      ],
+   q(0036) => [
+      q(Burkina Faso),
+      ],
+   q(0037) => [
+      q(Burundi),
+      ],
+   q(0038) => [
+      q(Cambodia),
+      ],
+   q(0039) => [
+      q(Cameroon),
+      ],
+   q(0040) => [
+      q(Canada),
+      ],
+   q(0041) => [
+      q(Cape Verde),
+      ],
+   q(0042) => [
+      q(Cayman Islands),
+      ],
+   q(0043) => [
+      q(Central African Republic),
+      ],
+   q(0044) => [
+      q(Chad),
+      ],
+   q(0045) => [
+      q(Chile),
+      ],
+   q(0046) => [
+      q(China),
+      ],
+   q(0047) => [
+      q(Christmas Island),
+      ],
+   q(0048) => [
+      q(Cocos (Keeling) Islands),
+      q(Keeling Islands),
+      q(Cocos Islands),
+      ],
+   q(0049) => [
+      q(Colombia),
+      ],
+   q(0050) => [
+      q(Comoros),
+      ],
+   q(0051) => [
+      q(Congo),
+      q(Congo (Brazzaville)),
+      q(Congo, Republic of the),
+      q(The Republic of the Congo),
+      ],
+   q(0052) => [
+      q(Congo, The Democratic Republic of the),
+      q(Democratic Republic of the Congo),
+      q(Congo, Democratic Republic of the),
+      q(The Democratic Republic of the Congo),
+      ],
+   q(0053) => [
+      q(Cook Islands),
+      ],
+   q(0054) => [
+      q(Costa Rica),
+      ],
+   q(0055) => [
+      q(Cote d'Ivoire),
+      ],
+   q(0056) => [
+      q(Croatia),
+      ],
+   q(0057) => [
+      q(Cuba),
+      ],
+   q(0058) => [
+      q(Curacao),
+      ],
+   q(0059) => [
+      q(Cyprus),
+      ],
+   q(0060) => [
+      q(Czech Republic),
+      ],
+   q(0061) => [
+      q(Denmark),
+      ],
+   q(0062) => [
+      q(Djibouti),
+      ],
+   q(0063) => [
+      q(Dominica),
+      ],
+   q(0064) => [
+      q(Dominican Republic),
+      ],
+   q(0065) => [
+      q(Ecuador),
+      ],
+   q(0066) => [
+      q(Egypt),
+      ],
+   q(0067) => [
+      q(El Salvador),
+      ],
+   q(0068) => [
+      q(Equatorial Guinea),
+      ],
+   q(0069) => [
+      q(Eritrea),
+      ],
+   q(0070) => [
+      q(Estonia),
+      ],
+   q(0071) => [
+      q(Ethiopia),
+      ],
+   q(0072) => [
+      q(Falkland Islands (Malvinas)),
+      q(Falkland Islands (Islas Malvinas)),
+      ],
+   q(0073) => [
+      q(Faroe Islands),
+      q(Faeroe Islands),
+      ],
+   q(0074) => [
+      q(Fiji),
+      ],
+   q(0075) => [
+      q(Finland),
+      ],
+   q(0076) => [
+      q(France),
+      ],
+   q(0077) => [
+      q(French Guiana),
+      ],
+   q(0078) => [
+      q(French Polynesia),
+      ],
+   q(0079) => [
+      q(French Southern Territories),
+      q(French Southern and Antarctic Lands),
+      ],
+   q(0080) => [
+      q(Gabon),
+      ],
+   q(0081) => [
+      q(Gambia),
+      q(Gambia, The),
+      ],
+   q(0082) => [
+      q(Georgia),
+      ],
+   q(0083) => [
+      q(Germany),
+      ],
+   q(0084) => [
+      q(Ghana),
+      ],
+   q(0085) => [
+      q(Gibraltar),
+      ],
+   q(0086) => [
+      q(Greece),
+      ],
+   q(0087) => [
+      q(Greenland),
+      ],
+   q(0088) => [
+      q(Grenada),
+      ],
+   q(0089) => [
+      q(Guadeloupe),
+      ],
+   q(0090) => [
+      q(Guam),
+      ],
+   q(0091) => [
+      q(Guatemala),
+      ],
+   q(0092) => [
+      q(Guernsey),
+      ],
+   q(0093) => [
+      q(Guinea),
+      ],
+   q(0094) => [
+      q(Guinea-Bissau),
+      ],
+   q(0095) => [
+      q(Guyana),
+      ],
+   q(0096) => [
+      q(Haiti),
+      ],
+   q(0097) => [
+      q(Heard Island and Mcdonald Islands),
+      ],
+   q(0098) => [
+      q(Holy See (Vatican City State)),
+      q(Holy See),
+      q(Vatican City),
+      q(Holy See (Vatican City)),
+      ],
+   q(0099) => [
+      q(Honduras),
+      ],
+   q(0100) => [
+      q(Hong Kong),
+      q(China, Hong Kong Special Administrative Region),
+      q(Hong Kong S.A.R.),
+      q(Hong Kong Special Administrative Region of China),
+      ],
+   q(0101) => [
+      q(Hungary),
+      ],
+   q(0102) => [
+      q(Iceland),
+      ],
+   q(0103) => [
+      q(India),
+      ],
+   q(0104) => [
+      q(Indonesia),
+      ],
+   q(0105) => [
+      q(Iran, Islamic Republic of),
+      q(Iran (Islamic Republic of)),
+      q(Iran),
+      ],
+   q(0106) => [
+      q(Iraq),
+      ],
+   q(0107) => [
+      q(Ireland),
+      ],
+   q(0108) => [
+      q(Isle of Man),
+      ],
+   q(0109) => [
+      q(Israel),
+      ],
+   q(0110) => [
+      q(Italy),
+      ],
+   q(0111) => [
+      q(Jamaica),
+      ],
+   q(0112) => [
+      q(Japan),
+      ],
+   q(0113) => [
+      q(Jersey),
+      ],
+   q(0114) => [
+      q(Jordan),
+      ],
+   q(0115) => [
+      q(Kazakhstan),
+      q(Kazakstan),
+      ],
+   q(0116) => [
+      q(Kenya),
+      ],
+   q(0117) => [
+      q(Kiribati),
+      ],
+   q(0118) => [
+      q(Korea, Democratic People's Republic of),
+      q(Democratic People's Republic of Korea),
+      q(North Korea),
+      ],
+   q(0119) => [
+      q(Korea, Republic of),
+      q(Republic of Korea),
+      q(South Korea),
+      ],
+   q(0120) => [
+      q(Kuwait),
+      ],
+   q(0121) => [
+      q(Kyrgyzstan),
+      ],
+   q(0122) => [
+      q(Lao People's Democratic Republic),
+      ],
+   q(0123) => [
+      q(Latvia),
+      ],
+   q(0124) => [
+      q(Lebanon),
+      ],
+   q(0125) => [
+      q(Lesotho),
+      ],
+   q(0126) => [
+      q(Liberia),
+      ],
+   q(0127) => [
+      q(Libya),
+      ],
+   q(0128) => [
+      q(Liechtenstein),
+      ],
+   q(0129) => [
+      q(Lithuania),
+      ],
+   q(0130) => [
+      q(Luxembourg),
+      ],
+   q(0131) => [
+      q(Macao),
+      q(China, Macao Special Administrative Region),
+      q(Macau),
+      q(Macau S.A.R),
+      q(Macau S.A.R.),
+      q(Macao Special Administrative Region of China),
+      ],
+   q(0132) => [
+      q(Macedonia, The Former Yugoslav Republic of),
+      q(The former Yugoslav Republic of Macedonia),
+      q(Macedonia),
+      q(Macedonia, Former Yugoslav Republic of),
+      ],
+   q(0133) => [
+      q(Madagascar),
+      ],
+   q(0134) => [
+      q(Malawi),
+      ],
+   q(0135) => [
+      q(Malaysia),
+      ],
+   q(0136) => [
+      q(Maldives),
+      ],
+   q(0137) => [
+      q(Mali),
+      ],
+   q(0138) => [
+      q(Malta),
+      ],
+   q(0139) => [
+      q(Marshall Islands),
+      ],
+   q(0140) => [
+      q(Martinique),
+      ],
+   q(0141) => [
+      q(Mauritania),
+      ],
+   q(0142) => [
+      q(Mauritius),
+      ],
+   q(0143) => [
+      q(Mayotte),
+      ],
+   q(0144) => [
+      q(Mexico),
+      ],
+   q(0145) => [
+      q(Micronesia, Federated States of),
+      q(Micronesia (Federated States of)),
+      q(Federated States of Micronesia),
+      ],
+   q(0146) => [
+      q(Moldova, Republic of),
+      q(Republic of Moldova),
+      ],
+   q(0147) => [
+      q(Monaco),
+      ],
+   q(0148) => [
+      q(Mongolia),
+      ],
+   q(0149) => [
+      q(Montenegro),
+      ],
+   q(0150) => [
+      q(Montserrat),
+      ],
+   q(0151) => [
+      q(Morocco),
+      ],
+   q(0152) => [
+      q(Mozambique),
+      ],
+   q(0153) => [
+      q(Myanmar),
+      q(Burma),
+      ],
+   q(0154) => [
+      q(Namibia),
+      ],
+   q(0155) => [
+      q(Nauru),
+      ],
+   q(0156) => [
+      q(Nepal),
+      ],
+   q(0157) => [
+      q(Netherlands),
+      ],
+   q(0158) => [
+      q(New Caledonia),
+      ],
+   q(0159) => [
+      q(New Zealand),
+      ],
+   q(0160) => [
+      q(Nicaragua),
+      ],
+   q(0161) => [
+      q(Niger),
+      ],
+   q(0162) => [
+      q(Nigeria),
+      ],
+   q(0163) => [
+      q(Niue),
+      ],
+   q(0164) => [
+      q(Norfolk Island),
+      ],
+   q(0165) => [
+      q(Northern Mariana Islands),
+      ],
+   q(0166) => [
+      q(Norway),
+      ],
+   q(0167) => [
+      q(Oman),
+      ],
+   q(0168) => [
+      q(Pakistan),
+      ],
+   q(0169) => [
+      q(Palau),
+      ],
+   q(0170) => [
+      q(Palestine, State of),
+      q(State of Palestine),
+      ],
+   q(0171) => [
+      q(Panama),
+      ],
+   q(0172) => [
+      q(Papua New Guinea),
+      ],
+   q(0173) => [
+      q(Paraguay),
+      ],
+   q(0174) => [
+      q(Peru),
+      ],
+   q(0175) => [
+      q(Philippines),
+      ],
+   q(0176) => [
+      q(Pitcairn),
+      q(Pitcairn Islands),
+      q(Pitcairn Island),
+      ],
+   q(0177) => [
+      q(Poland),
+      ],
+   q(0178) => [
+      q(Portugal),
+      ],
+   q(0179) => [
+      q(Puerto Rico),
+      ],
+   q(0180) => [
+      q(Qatar),
+      ],
+   q(0181) => [
+      q(Reunion),
+      ],
+   q(0182) => [
+      q(Romania),
+      ],
+   q(0183) => [
+      q(Russian Federation),
+      ],
+   q(0184) => [
+      q(Rwanda),
+      ],
+   q(0185) => [
+      q(Saint Barthelemy),
+      q(Saint-Barthelemy),
+      ],
+   q(0186) => [
+      q(Saint Helena, Ascension and Tristan da Cunha),
+      q(Saint Helena),
+      ],
+   q(0187) => [
+      q(Saint Kitts and Nevis),
+      ],
+   q(0188) => [
+      q(Saint Lucia),
+      ],
+   q(0189) => [
+      q(Saint Martin (French part)),
+      q(Saint-Martin (French part)),
+      q(Saint Martin),
+      q(Saint-Martin),
+      ],
+   q(0190) => [
+      q(Saint Pierre and Miquelon),
+      ],
+   q(0191) => [
+      q(Saint Vincent and the Grenadines),
+      ],
+   q(0192) => [
+      q(Samoa),
+      ],
+   q(0193) => [
+      q(San Marino),
+      ],
+   q(0194) => [
+      q(Sao Tome and Principe),
+      ],
+   q(0195) => [
+      q(Saudi Arabia),
+      ],
+   q(0196) => [
+      q(Senegal),
+      ],
+   q(0197) => [
+      q(Serbia),
+      ],
+   q(0198) => [
+      q(Seychelles),
+      ],
+   q(0199) => [
+      q(Sierra Leone),
+      ],
+   q(0200) => [
+      q(Singapore),
+      ],
+   q(0201) => [
+      q(Sint Maarten (Dutch part)),
+      ],
+   q(0202) => [
+      q(Slovakia),
+      ],
+   q(0203) => [
+      q(Slovenia),
+      ],
+   q(0204) => [
+      q(Solomon Islands),
+      ],
+   q(0205) => [
+      q(Somalia),
+      ],
+   q(0206) => [
+      q(South Africa),
+      ],
+   q(0207) => [
+      q(South Georgia and the South Sandwich Islands),
+      q(South Georgia and the Islands),
+      ],
+   q(0208) => [
+      q(South Sudan),
+      ],
+   q(0209) => [
+      q(Spain),
+      ],
+   q(0210) => [
+      q(Sri Lanka),
+      ],
+   q(0211) => [
+      q(Sudan),
+      ],
+   q(0212) => [
+      q(Suriname),
+      ],
+   q(0213) => [
+      q(Svalbard and Jan Mayen),
+      q(Svalbard and Jan Mayen Islands),
+      ],
+   q(0214) => [
+      q(Swaziland),
+      ],
+   q(0215) => [
+      q(Sweden),
+      ],
+   q(0216) => [
+      q(Switzerland),
+      ],
+   q(0217) => [
+      q(Syrian Arab Republic),
+      q(Syria),
+      q(Golan Heights (Israeli-occupied)),
+      ],
+   q(0218) => [
+      q(Taiwan, Province of China),
+      q(Taiwan),
+      ],
+   q(0219) => [
+      q(Tajikistan),
+      ],
+   q(0220) => [
+      q(Tanzania, United Republic of),
+      q(United Republic of Tanzania),
+      ],
+   q(0221) => [
+      q(Thailand),
+      ],
+   q(0222) => [
+      q(Timor-Leste),
+      q(East Timor),
+      ],
+   q(0223) => [
+      q(Togo),
+      ],
+   q(0224) => [
+      q(Tokelau),
+      ],
+   q(0225) => [
+      q(Tonga),
+      ],
+   q(0226) => [
+      q(Trinidad and Tobago),
+      ],
+   q(0227) => [
+      q(Tunisia),
+      ],
+   q(0228) => [
+      q(Turkey),
+      ],
+   q(0229) => [
+      q(Turkmenistan),
+      ],
+   q(0230) => [
+      q(Turks and Caicos Islands),
+      ],
+   q(0231) => [
+      q(Tuvalu),
+      ],
+   q(0232) => [
+      q(Uganda),
+      ],
+   q(0233) => [
+      q(Ukraine),
+      ],
+   q(0234) => [
+      q(United Arab Emirates),
+      ],
+   q(0235) => [
+      q(United Kingdom),
+      q(United Kingdom of Great Britain and Northern Ireland),
+      q(Great Britain),
+      q(UK),
+      ],
+   q(0236) => [
+      q(United States),
+      q(United States of America),
+      q(US),
+      q(USA),
+      ],
+   q(0237) => [
+      q(United States Minor Outlying Islands),
+      ],
+   q(0238) => [
+      q(Uruguay),
+      ],
+   q(0239) => [
+      q(Uzbekistan),
+      ],
+   q(0240) => [
+      q(Vanuatu),
+      ],
+   q(0241) => [
+      q(Venezuela, Bolivarian Republic of),
+      q(Venezuela (Bolivarian Republic of)),
+      q(Venezuela),
+      ],
+   q(0242) => [
+      q(Viet Nam),
+      q(Vietnam),
+      ],
+   q(0243) => [
+      q(Virgin Islands, British),
+      q(British Virgin Islands),
+      q(Virgin Islands (UK)),
+      ],
+   q(0244) => [
+      q(Virgin Islands, U.S.),
+      q(United States Virgin Islands),
+      q(Virgin Islands (US)),
+      q(Virgin Islands),
+      ],
+   q(0245) => [
+      q(Wallis and Futuna),
+      q(Wallis and Futuna Islands),
+      ],
+   q(0246) => [
+      q(Western Sahara),
+      ],
+   q(0247) => [
+      q(Yemen),
+      ],
+   q(0248) => [
+      q(Zambia),
+      ],
+   q(0249) => [
+      q(Zimbabwe),
+      ],
+   q(0250) => [
+      q(Channel Islands),
+      ],
+   q(0251) => [
+      q(Sark),
+      ],
+   q(0252) => [
+      q(Akrotiri),
+      ],
+   q(0253) => [
+      q(Ashmore and Cartier Islands),
+      ],
+   q(0254) => [
+      q(Baker Island),
+      ],
+   q(0255) => [
+      q(Bassas da India),
+      ],
+   q(0256) => [
+      q(Clipperton Island),
+      ],
+   q(0257) => [
+      q(Congo (Kinshasa)),
+      ],
+   q(0258) => [
+      q(Coral Sea Islands),
+      ],
+   q(0259) => [
+      q(Dhekelia),
+      ],
+   q(0260) => [
+      q(Etorofu, Habomai, Kunashiri, and Shikotan Islands),
+      ],
+   q(0261) => [
+      q(Europa Island),
+      ],
+   q(0262) => [
+      q(Gaza Strip),
+      ],
+   q(0263) => [
+      q(Glorioso Islands),
+      ],
+   q(0264) => [
+      q(Heard Island and McDonald  Islands),
+      ],
+   q(0265) => [
+      q(Howland Island),
+      ],
+   q(0266) => [
+      q(Jan Mayen),
+      ],
+   q(0267) => [
+      q(Jarvis Island),
+      ],
+   q(0268) => [
+      q(Johnston Atoll),
+      ],
+   q(0269) => [
+      q(Juan de Nova Island),
+      ],
+   q(0270) => [
+      q(Kingman Reef),
+      ],
+   q(0271) => [
+      q(Korea, North),
+      ],
+   q(0272) => [
+      q(Korea, South),
+      ],
+   q(0273) => [
+      q(Kosovo),
+      ],
+   q(0274) => [
+      q(Laos),
+      ],
+   q(0275) => [
+      q(Midway Islands),
+      ],
+   q(0276) => [
+      q(Moldova),
+      ],
+   q(0277) => [
+      q(Navassa Island),
+      ],
+   q(0278) => [
+      q(Palmyra Atoll),
+      ],
+   q(0279) => [
+      q(Paracel Islands),
+      ],
+   q(0280) => [
+      q(Russia),
+      ],
+   q(0281) => [
+      q(Saint Helena, Ascension, and Tristan da Cunha),
+      ],
+   q(0282) => [
+      q(Sint Maarten),
+      ],
+   q(0283) => [
+      q(South Georgia and South Sandwich Islands),
+      ],
+   q(0284) => [
+      q(Spratly Islands),
+      ],
+   q(0285) => [
+      q(Svalbard),
+      ],
+   q(0286) => [
+      q(Tanzania),
+      ],
+   q(0287) => [
+      q(Tromelin Island),
+      ],
+   q(0288) => [
+      q(Wake Island),
+      ],
+   q(0289) => [
+      q(West Bank),
+      ],
+   q(0290) => [
+      q(Ascension Island),
+      ],
+   q(0291) => [
+      q(Netherlands Antilles),
+      ],
+   q(0292) => [
+      q(European Union),
+      ],
+   q(0293) => [
+      q(USSR),
+      ],
+};
+
+$Locale::Codes::Data{'country'}{'alias2id'} = {
+   q(afghanistan) => [
+      q(0001),
+      q(0),
+      ],
+   q(akrotiri) => [
+      q(0252),
+      q(0),
+      ],
+   q(aland islands) => [
+      q(0002),
+      q(0),
+      ],
+   q(albania) => [
+      q(0003),
+      q(0),
+      ],
+   q(algeria) => [
+      q(0004),
+      q(0),
+      ],
+   q(american samoa) => [
+      q(0005),
+      q(0),
+      ],
+   q(andorra) => [
+      q(0006),
+      q(0),
+      ],
+   q(angola) => [
+      q(0007),
+      q(0),
+      ],
+   q(anguilla) => [
+      q(0008),
+      q(0),
+      ],
+   q(antarctica) => [
+      q(0009),
+      q(0),
+      ],
+   q(antigua and barbuda) => [
+      q(0010),
+      q(0),
+      ],
+   q(argentina) => [
+      q(0011),
+      q(0),
+      ],
+   q(armenia) => [
+      q(0012),
+      q(0),
+      ],
+   q(aruba) => [
+      q(0013),
+      q(0),
+      ],
+   q(ascension island) => [
+      q(0290),
+      q(0),
+      ],
+   q(ashmore and cartier islands) => [
+      q(0253),
+      q(0),
+      ],
+   q(australia) => [
+      q(0014),
+      q(0),
+      ],
+   q(austria) => [
+      q(0015),
+      q(0),
+      ],
+   q(azerbaijan) => [
+      q(0016),
+      q(0),
+      ],
+   q(bahamas) => [
+      q(0017),
+      q(0),
+      ],
+   q(bahamas, the) => [
+      q(0017),
+      q(1),
+      ],
+   q(bahrain) => [
+      q(0018),
+      q(0),
+      ],
+   q(baker island) => [
+      q(0254),
+      q(0),
+      ],
+   q(bangladesh) => [
+      q(0019),
+      q(0),
+      ],
+   q(barbados) => [
+      q(0020),
+      q(0),
+      ],
+   q(bassas da india) => [
+      q(0255),
+      q(0),
+      ],
+   q(belarus) => [
+      q(0021),
+      q(0),
+      ],
+   q(belgium) => [
+      q(0022),
+      q(0),
+      ],
+   q(belize) => [
+      q(0023),
+      q(0),
+      ],
+   q(benin) => [
+      q(0024),
+      q(0),
+      ],
+   q(bermuda) => [
+      q(0025),
+      q(0),
+      ],
+   q(bhutan) => [
+      q(0026),
+      q(0),
+      ],
+   q(bolivia) => [
+      q(0027),
+      q(2),
+      ],
+   q(bolivia (plurinational state of)) => [
+      q(0027),
+      q(1),
+      ],
+   q(bolivia, plurinational state of) => [
+      q(0027),
+      q(0),
+      ],
+   q(bonaire, saint eustatius and saba) => [
+      q(0028),
+      q(0),
+      ],
+   q(bosnia and herzegovina) => [
+      q(0029),
+      q(0),
+      ],
+   q(botswana) => [
+      q(0030),
+      q(0),
+      ],
+   q(bouvet island) => [
+      q(0031),
+      q(0),
+      ],
+   q(brazil) => [
+      q(0032),
+      q(0),
+      ],
+   q(british indian ocean territory) => [
+      q(0033),
+      q(0),
+      ],
+   q(british virgin islands) => [
+      q(0243),
+      q(1),
+      ],
+   q(brunei) => [
+      q(0034),
+      q(1),
+      ],
+   q(brunei darussalam) => [
+      q(0034),
+      q(0),
+      ],
+   q(bulgaria) => [
+      q(0035),
+      q(0),
+      ],
+   q(burkina faso) => [
+      q(0036),
+      q(0),
+      ],
+   q(burma) => [
+      q(0153),
+      q(1),
+      ],
+   q(burundi) => [
+      q(0037),
+      q(0),
+      ],
+   q(cambodia) => [
+      q(0038),
+      q(0),
+      ],
+   q(cameroon) => [
+      q(0039),
+      q(0),
+      ],
+   q(canada) => [
+      q(0040),
+      q(0),
+      ],
+   q(cape verde) => [
+      q(0041),
+      q(0),
+      ],
+   q(cayman islands) => [
+      q(0042),
+      q(0),
+      ],
+   q(central african republic) => [
+      q(0043),
+      q(0),
+      ],
+   q(chad) => [
+      q(0044),
+      q(0),
+      ],
+   q(channel islands) => [
+      q(0250),
+      q(0),
+      ],
+   q(chile) => [
+      q(0045),
+      q(0),
+      ],
+   q(china) => [
+      q(0046),
+      q(0),
+      ],
+   q(china, hong kong special administrative region) => [
+      q(0100),
+      q(1),
+      ],
+   q(china, macao special administrative region) => [
+      q(0131),
+      q(1),
+      ],
+   q(christmas island) => [
+      q(0047),
+      q(0),
+      ],
+   q(clipperton island) => [
+      q(0256),
+      q(0),
+      ],
+   q(cocos (keeling) islands) => [
+      q(0048),
+      q(0),
+      ],
+   q(cocos islands) => [
+      q(0048),
+      q(2),
+      ],
+   q(colombia) => [
+      q(0049),
+      q(0),
+      ],
+   q(comoros) => [
+      q(0050),
+      q(0),
+      ],
+   q(congo) => [
+      q(0051),
+      q(0),
+      ],
+   q(congo (brazzaville)) => [
+      q(0051),
+      q(1),
+      ],
+   q(congo (kinshasa)) => [
+      q(0257),
+      q(0),
+      ],
+   q(congo, democratic republic of the) => [
+      q(0052),
+      q(2),
+      ],
+   q(congo, republic of the) => [
+      q(0051),
+      q(2),
+      ],
+   q(congo, the democratic republic of the) => [
+      q(0052),
+      q(0),
+      ],
+   q(cook islands) => [
+      q(0053),
+      q(0),
+      ],
+   q(coral sea islands) => [
+      q(0258),
+      q(0),
+      ],
+   q(costa rica) => [
+      q(0054),
+      q(0),
+      ],
+   q(cote d'ivoire) => [
+      q(0055),
+      q(0),
+      ],
+   q(croatia) => [
+      q(0056),
+      q(0),
+      ],
+   q(cuba) => [
+      q(0057),
+      q(0),
+      ],
+   q(curacao) => [
+      q(0058),
+      q(0),
+      ],
+   q(cyprus) => [
+      q(0059),
+      q(0),
+      ],
+   q(czech republic) => [
+      q(0060),
+      q(0),
+      ],
+   q(democratic people's republic of korea) => [
+      q(0118),
+      q(1),
+      ],
+   q(democratic republic of the congo) => [
+      q(0052),
+      q(1),
+      ],
+   q(denmark) => [
+      q(0061),
+      q(0),
+      ],
+   q(dhekelia) => [
+      q(0259),
+      q(0),
+      ],
+   q(djibouti) => [
+      q(0062),
+      q(0),
+      ],
+   q(dominica) => [
+      q(0063),
+      q(0),
+      ],
+   q(dominican republic) => [
+      q(0064),
+      q(0),
+      ],
+   q(east timor) => [
+      q(0222),
+      q(1),
+      ],
+   q(ecuador) => [
+      q(0065),
+      q(0),
+      ],
+   q(egypt) => [
+      q(0066),
+      q(0),
+      ],
+   q(el salvador) => [
+      q(0067),
+      q(0),
+      ],
+   q(equatorial guinea) => [
+      q(0068),
+      q(0),
+      ],
+   q(eritrea) => [
+      q(0069),
+      q(0),
+      ],
+   q(estonia) => [
+      q(0070),
+      q(0),
+      ],
+   q(ethiopia) => [
+      q(0071),
+      q(0),
+      ],
+   q(etorofu, habomai, kunashiri, and shikotan islands) => [
+      q(0260),
+      q(0),
+      ],
+   q(europa island) => [
+      q(0261),
+      q(0),
+      ],
+   q(european union) => [
+      q(0292),
+      q(0),
+      ],
+   q(faeroe islands) => [
+      q(0073),
+      q(1),
+      ],
+   q(falkland islands (islas malvinas)) => [
+      q(0072),
+      q(1),
+      ],
+   q(falkland islands (malvinas)) => [
+      q(0072),
+      q(0),
+      ],
+   q(faroe islands) => [
+      q(0073),
+      q(0),
+      ],
+   q(federated states of micronesia) => [
+      q(0145),
+      q(2),
+      ],
+   q(fiji) => [
+      q(0074),
+      q(0),
+      ],
+   q(finland) => [
+      q(0075),
+      q(0),
+      ],
+   q(france) => [
+      q(0076),
+      q(0),
+      ],
+   q(french guiana) => [
+      q(0077),
+      q(0),
+      ],
+   q(french polynesia) => [
+      q(0078),
+      q(0),
+      ],
+   q(french southern and antarctic lands) => [
+      q(0079),
+      q(1),
+      ],
+   q(french southern territories) => [
+      q(0079),
+      q(0),
+      ],
+   q(gabon) => [
+      q(0080),
+      q(0),
+      ],
+   q(gambia) => [
+      q(0081),
+      q(0),
+      ],
+   q(gambia, the) => [
+      q(0081),
+      q(1),
+      ],
+   q(gaza strip) => [
+      q(0262),
+      q(0),
+      ],
+   q(georgia) => [
+      q(0082),
+      q(0),
+      ],
+   q(germany) => [
+      q(0083),
+      q(0),
+      ],
+   q(ghana) => [
+      q(0084),
+      q(0),
+      ],
+   q(gibraltar) => [
+      q(0085),
+      q(0),
+      ],
+   q(glorioso islands) => [
+      q(0263),
+      q(0),
+      ],
+   q(golan heights (israeli-occupied)) => [
+      q(0217),
+      q(2),
+      ],
+   q(great britain) => [
+      q(0235),
+      q(2),
+      ],
+   q(greece) => [
+      q(0086),
+      q(0),
+      ],
+   q(greenland) => [
+      q(0087),
+      q(0),
+      ],
+   q(grenada) => [
+      q(0088),
+      q(0),
+      ],
+   q(guadeloupe) => [
+      q(0089),
+      q(0),
+      ],
+   q(guam) => [
+      q(0090),
+      q(0),
+      ],
+   q(guatemala) => [
+      q(0091),
+      q(0),
+      ],
+   q(guernsey) => [
+      q(0092),
+      q(0),
+      ],
+   q(guinea) => [
+      q(0093),
+      q(0),
+      ],
+   q(guinea-bissau) => [
+      q(0094),
+      q(0),
+      ],
+   q(guyana) => [
+      q(0095),
+      q(0),
+      ],
+   q(haiti) => [
+      q(0096),
+      q(0),
+      ],
+   q(heard island and mcdonald  islands) => [
+      q(0264),
+      q(0),
+      ],
+   q(heard island and mcdonald islands) => [
+      q(0097),
+      q(0),
+      ],
+   q(holy see) => [
+      q(0098),
+      q(1),
+      ],
+   q(holy see (vatican city state)) => [
+      q(0098),
+      q(0),
+      ],
+   q(holy see (vatican city)) => [
+      q(0098),
+      q(3),
+      ],
+   q(honduras) => [
+      q(0099),
+      q(0),
+      ],
+   q(hong kong) => [
+      q(0100),
+      q(0),
+      ],
+   q(hong kong s.a.r.) => [
+      q(0100),
+      q(2),
+      ],
+   q(hong kong special administrative region of china) => [
+      q(0100),
+      q(3),
+      ],
+   q(howland island) => [
+      q(0265),
+      q(0),
+      ],
+   q(hungary) => [
+      q(0101),
+      q(0),
+      ],
+   q(iceland) => [
+      q(0102),
+      q(0),
+      ],
+   q(india) => [
+      q(0103),
+      q(0),
+      ],
+   q(indonesia) => [
+      q(0104),
+      q(0),
+      ],
+   q(iran) => [
+      q(0105),
+      q(2),
+      ],
+   q(iran (islamic republic of)) => [
+      q(0105),
+      q(1),
+      ],
+   q(iran, islamic republic of) => [
+      q(0105),
+      q(0),
+      ],
+   q(iraq) => [
+      q(0106),
+      q(0),
+      ],
+   q(ireland) => [
+      q(0107),
+      q(0),
+      ],
+   q(isle of man) => [
+      q(0108),
+      q(0),
+      ],
+   q(israel) => [
+      q(0109),
+      q(0),
+      ],
+   q(italy) => [
+      q(0110),
+      q(0),
+      ],
+   q(jamaica) => [
+      q(0111),
+      q(0),
+      ],
+   q(jan mayen) => [
+      q(0266),
+      q(0),
+      ],
+   q(japan) => [
+      q(0112),
+      q(0),
+      ],
+   q(jarvis island) => [
+      q(0267),
+      q(0),
+      ],
+   q(jersey) => [
+      q(0113),
+      q(0),
+      ],
+   q(johnston atoll) => [
+      q(0268),
+      q(0),
+      ],
+   q(jordan) => [
+      q(0114),
+      q(0),
+      ],
+   q(juan de nova island) => [
+      q(0269),
+      q(0),
+      ],
+   q(kazakhstan) => [
+      q(0115),
+      q(0),
+      ],
+   q(kazakstan) => [
+      q(0115),
+      q(1),
+      ],
+   q(keeling islands) => [
+      q(0048),
+      q(1),
+      ],
+   q(kenya) => [
+      q(0116),
+      q(0),
+      ],
+   q(kingman reef) => [
+      q(0270),
+      q(0),
+      ],
+   q(kiribati) => [
+      q(0117),
+      q(0),
+      ],
+   q(korea, democratic people's republic of) => [
+      q(0118),
+      q(0),
+      ],
+   q(korea, north) => [
+      q(0271),
+      q(0),
+      ],
+   q(korea, republic of) => [
+      q(0119),
+      q(0),
+      ],
+   q(korea, south) => [
+      q(0272),
+      q(0),
+      ],
+   q(kosovo) => [
+      q(0273),
+      q(0),
+      ],
+   q(kuwait) => [
+      q(0120),
+      q(0),
+      ],
+   q(kyrgyzstan) => [
+      q(0121),
+      q(0),
+      ],
+   q(lao people's democratic republic) => [
+      q(0122),
+      q(0),
+      ],
+   q(laos) => [
+      q(0274),
+      q(0),
+      ],
+   q(latvia) => [
+      q(0123),
+      q(0),
+      ],
+   q(lebanon) => [
+      q(0124),
+      q(0),
+      ],
+   q(lesotho) => [
+      q(0125),
+      q(0),
+      ],
+   q(liberia) => [
+      q(0126),
+      q(0),
+      ],
+   q(libya) => [
+      q(0127),
+      q(0),
+      ],
+   q(liechtenstein) => [
+      q(0128),
+      q(0),
+      ],
+   q(lithuania) => [
+      q(0129),
+      q(0),
+      ],
+   q(luxembourg) => [
+      q(0130),
+      q(0),
+      ],
+   q(macao) => [
+      q(0131),
+      q(0),
+      ],
+   q(macao special administrative region of china) => [
+      q(0131),
+      q(5),
+      ],
+   q(macau) => [
+      q(0131),
+      q(2),
+      ],
+   q(macau s.a.r) => [
+      q(0131),
+      q(3),
+      ],
+   q(macau s.a.r.) => [
+      q(0131),
+      q(4),
+      ],
+   q(macedonia) => [
+      q(0132),
+      q(2),
+      ],
+   q(macedonia, former yugoslav republic of) => [
+      q(0132),
+      q(3),
+      ],
+   q(macedonia, the former yugoslav republic of) => [
+      q(0132),
+      q(0),
+      ],
+   q(madagascar) => [
+      q(0133),
+      q(0),
+      ],
+   q(malawi) => [
+      q(0134),
+      q(0),
+      ],
+   q(malaysia) => [
+      q(0135),
+      q(0),
+      ],
+   q(maldives) => [
+      q(0136),
+      q(0),
+      ],
+   q(mali) => [
+      q(0137),
+      q(0),
+      ],
+   q(malta) => [
+      q(0138),
+      q(0),
+      ],
+   q(marshall islands) => [
+      q(0139),
+      q(0),
+      ],
+   q(martinique) => [
+      q(0140),
+      q(0),
+      ],
+   q(mauritania) => [
+      q(0141),
+      q(0),
+      ],
+   q(mauritius) => [
+      q(0142),
+      q(0),
+      ],
+   q(mayotte) => [
+      q(0143),
+      q(0),
+      ],
+   q(mexico) => [
+      q(0144),
+      q(0),
+      ],
+   q(micronesia (federated states of)) => [
+      q(0145),
+      q(1),
+      ],
+   q(micronesia, federated states of) => [
+      q(0145),
+      q(0),
+      ],
+   q(midway islands) => [
+      q(0275),
+      q(0),
+      ],
+   q(moldova) => [
+      q(0276),
+      q(0),
+      ],
+   q(moldova, republic of) => [
+      q(0146),
+      q(0),
+      ],
+   q(monaco) => [
+      q(0147),
+      q(0),
+      ],
+   q(mongolia) => [
+      q(0148),
+      q(0),
+      ],
+   q(montenegro) => [
+      q(0149),
+      q(0),
+      ],
+   q(montserrat) => [
+      q(0150),
+      q(0),
+      ],
+   q(morocco) => [
+      q(0151),
+      q(0),
+      ],
+   q(mozambique) => [
+      q(0152),
+      q(0),
+      ],
+   q(myanmar) => [
+      q(0153),
+      q(0),
+      ],
+   q(namibia) => [
+      q(0154),
+      q(0),
+      ],
+   q(nauru) => [
+      q(0155),
+      q(0),
+      ],
+   q(navassa island) => [
+      q(0277),
+      q(0),
+      ],
+   q(nepal) => [
+      q(0156),
+      q(0),
+      ],
+   q(netherlands) => [
+      q(0157),
+      q(0),
+      ],
+   q(netherlands antilles) => [
+      q(0291),
+      q(0),
+      ],
+   q(new caledonia) => [
+      q(0158),
+      q(0),
+      ],
+   q(new zealand) => [
+      q(0159),
+      q(0),
+      ],
+   q(nicaragua) => [
+      q(0160),
+      q(0),
+      ],
+   q(niger) => [
+      q(0161),
+      q(0),
+      ],
+   q(nigeria) => [
+      q(0162),
+      q(0),
+      ],
+   q(niue) => [
+      q(0163),
+      q(0),
+      ],
+   q(norfolk island) => [
+      q(0164),
+      q(0),
+      ],
+   q(north korea) => [
+      q(0118),
+      q(2),
+      ],
+   q(northern mariana islands) => [
+      q(0165),
+      q(0),
+      ],
+   q(norway) => [
+      q(0166),
+      q(0),
+      ],
+   q(oman) => [
+      q(0167),
+      q(0),
+      ],
+   q(pakistan) => [
+      q(0168),
+      q(0),
+      ],
+   q(palau) => [
+      q(0169),
+      q(0),
+      ],
+   q(palestine, state of) => [
+      q(0170),
+      q(0),
+      ],
+   q(palmyra atoll) => [
+      q(0278),
+      q(0),
+      ],
+   q(panama) => [
+      q(0171),
+      q(0),
+      ],
+   q(papua new guinea) => [
+      q(0172),
+      q(0),
+      ],
+   q(paracel islands) => [
+      q(0279),
+      q(0),
+      ],
+   q(paraguay) => [
+      q(0173),
+      q(0),
+      ],
+   q(peru) => [
+      q(0174),
+      q(0),
+      ],
+   q(philippines) => [
+      q(0175),
+      q(0),
+      ],
+   q(pitcairn) => [
+      q(0176),
+      q(0),
+      ],
+   q(pitcairn island) => [
+      q(0176),
+      q(2),
+      ],
+   q(pitcairn islands) => [
+      q(0176),
+      q(1),
+      ],
+   q(poland) => [
+      q(0177),
+      q(0),
+      ],
+   q(portugal) => [
+      q(0178),
+      q(0),
+      ],
+   q(puerto rico) => [
+      q(0179),
+      q(0),
+      ],
+   q(qatar) => [
+      q(0180),
+      q(0),
+      ],
+   q(republic of korea) => [
+      q(0119),
+      q(1),
+      ],
+   q(republic of moldova) => [
+      q(0146),
+      q(1),
+      ],
+   q(reunion) => [
+      q(0181),
+      q(0),
+      ],
+   q(romania) => [
+      q(0182),
+      q(0),
+      ],
+   q(russia) => [
+      q(0280),
+      q(0),
+      ],
+   q(russian federation) => [
+      q(0183),
+      q(0),
+      ],
+   q(rwanda) => [
+      q(0184),
+      q(0),
+      ],
+   q(saint barthelemy) => [
+      q(0185),
+      q(0),
+      ],
+   q(saint helena) => [
+      q(0186),
+      q(1),
+      ],
+   q(saint helena, ascension and tristan da cunha) => [
+      q(0186),
+      q(0),
+      ],
+   q(saint helena, ascension, and tristan da cunha) => [
+      q(0281),
+      q(0),
+      ],
+   q(saint kitts and nevis) => [
+      q(0187),
+      q(0),
+      ],
+   q(saint lucia) => [
+      q(0188),
+      q(0),
+      ],
+   q(saint martin) => [
+      q(0189),
+      q(2),
+      ],
+   q(saint martin (french part)) => [
+      q(0189),
+      q(0),
+      ],
+   q(saint pierre and miquelon) => [
+      q(0190),
+      q(0),
+      ],
+   q(saint vincent and the grenadines) => [
+      q(0191),
+      q(0),
+      ],
+   q(saint-barthelemy) => [
+      q(0185),
+      q(1),
+      ],
+   q(saint-martin) => [
+      q(0189),
+      q(3),
+      ],
+   q(saint-martin (french part)) => [
+      q(0189),
+      q(1),
+      ],
+   q(samoa) => [
+      q(0192),
+      q(0),
+      ],
+   q(san marino) => [
+      q(0193),
+      q(0),
+      ],
+   q(sao tome and principe) => [
+      q(0194),
+      q(0),
+      ],
+   q(sark) => [
+      q(0251),
+      q(0),
+      ],
+   q(saudi arabia) => [
+      q(0195),
+      q(0),
+      ],
+   q(senegal) => [
+      q(0196),
+      q(0),
+      ],
+   q(serbia) => [
+      q(0197),
+      q(0),
+      ],
+   q(seychelles) => [
+      q(0198),
+      q(0),
+      ],
+   q(sierra leone) => [
+      q(0199),
+      q(0),
+      ],
+   q(singapore) => [
+      q(0200),
+      q(0),
+      ],
+   q(sint maarten) => [
+      q(0282),
+      q(0),
+      ],
+   q(sint maarten (dutch part)) => [
+      q(0201),
+      q(0),
+      ],
+   q(slovakia) => [
+      q(0202),
+      q(0),
+      ],
+   q(slovenia) => [
+      q(0203),
+      q(0),
+      ],
+   q(solomon islands) => [
+      q(0204),
+      q(0),
+      ],
+   q(somalia) => [
+      q(0205),
+      q(0),
+      ],
+   q(south africa) => [
+      q(0206),
+      q(0),
+      ],
+   q(south georgia and south sandwich islands) => [
+      q(0283),
+      q(0),
+      ],
+   q(south georgia and the islands) => [
+      q(0207),
+      q(1),
+      ],
+   q(south georgia and the south sandwich islands) => [
+      q(0207),
+      q(0),
+      ],
+   q(south korea) => [
+      q(0119),
+      q(2),
+      ],
+   q(south sudan) => [
+      q(0208),
+      q(0),
+      ],
+   q(spain) => [
+      q(0209),
+      q(0),
+      ],
+   q(spratly islands) => [
+      q(0284),
+      q(0),
+      ],
+   q(sri lanka) => [
+      q(0210),
+      q(0),
+      ],
+   q(state of palestine) => [
+      q(0170),
+      q(1),
+      ],
+   q(sudan) => [
+      q(0211),
+      q(0),
+      ],
+   q(suriname) => [
+      q(0212),
+      q(0),
+      ],
+   q(svalbard) => [
+      q(0285),
+      q(0),
+      ],
+   q(svalbard and jan mayen) => [
+      q(0213),
+      q(0),
+      ],
+   q(svalbard and jan mayen islands) => [
+      q(0213),
+      q(1),
+      ],
+   q(swaziland) => [
+      q(0214),
+      q(0),
+      ],
+   q(sweden) => [
+      q(0215),
+      q(0),
+      ],
+   q(switzerland) => [
+      q(0216),
+      q(0),
+      ],
+   q(syria) => [
+      q(0217),
+      q(1),
+      ],
+   q(syrian arab republic) => [
+      q(0217),
+      q(0),
+      ],
+   q(taiwan) => [
+      q(0218),
+      q(1),
+      ],
+   q(taiwan, province of china) => [
+      q(0218),
+      q(0),
+      ],
+   q(tajikistan) => [
+      q(0219),
+      q(0),
+      ],
+   q(tanzania) => [
+      q(0286),
+      q(0),
+      ],
+   q(tanzania, united republic of) => [
+      q(0220),
+      q(0),
+      ],
+   q(thailand) => [
+      q(0221),
+      q(0),
+      ],
+   q(the bahamas) => [
+      q(0017),
+      q(2),
+      ],
+   q(the democratic republic of the congo) => [
+      q(0052),
+      q(3),
+      ],
+   q(the former yugoslav republic of macedonia) => [
+      q(0132),
+      q(1),
+      ],
+   q(the republic of the congo) => [
+      q(0051),
+      q(3),
+      ],
+   q(timor-leste) => [
+      q(0222),
+      q(0),
+      ],
+   q(togo) => [
+      q(0223),
+      q(0),
+      ],
+   q(tokelau) => [
+      q(0224),
+      q(0),
+      ],
+   q(tonga) => [
+      q(0225),
+      q(0),
+      ],
+   q(trinidad and tobago) => [
+      q(0226),
+      q(0),
+      ],
+   q(tromelin island) => [
+      q(0287),
+      q(0),
+      ],
+   q(tunisia) => [
+      q(0227),
+      q(0),
+      ],
+   q(turkey) => [
+      q(0228),
+      q(0),
+      ],
+   q(turkmenistan) => [
+      q(0229),
+      q(0),
+      ],
+   q(turks and caicos islands) => [
+      q(0230),
+      q(0),
+      ],
+   q(tuvalu) => [
+      q(0231),
+      q(0),
+      ],
+   q(uganda) => [
+      q(0232),
+      q(0),
+      ],
+   q(uk) => [
+      q(0235),
+      q(3),
+      ],
+   q(ukraine) => [
+      q(0233),
+      q(0),
+      ],
+   q(united arab emirates) => [
+      q(0234),
+      q(0),
+      ],
+   q(united kingdom) => [
+      q(0235),
+      q(0),
+      ],
+   q(united kingdom of great britain and northern ireland) => [
+      q(0235),
+      q(1),
+      ],
+   q(united republic of tanzania) => [
+      q(0220),
+      q(1),
+      ],
+   q(united states) => [
+      q(0236),
+      q(0),
+      ],
+   q(united states minor outlying islands) => [
+      q(0237),
+      q(0),
+      ],
+   q(united states of america) => [
+      q(0236),
+      q(1),
+      ],
+   q(united states virgin islands) => [
+      q(0244),
+      q(1),
+      ],
+   q(uruguay) => [
+      q(0238),
+      q(0),
+      ],
+   q(us) => [
+      q(0236),
+      q(2),
+      ],
+   q(usa) => [
+      q(0236),
+      q(3),
+      ],
+   q(ussr) => [
+      q(0293),
+      q(0),
+      ],
+   q(uzbekistan) => [
+      q(0239),
+      q(0),
+      ],
+   q(vanuatu) => [
+      q(0240),
+      q(0),
+      ],
+   q(vatican city) => [
+      q(0098),
+      q(2),
+      ],
+   q(venezuela) => [
+      q(0241),
+      q(2),
+      ],
+   q(venezuela (bolivarian republic of)) => [
+      q(0241),
+      q(1),
+      ],
+   q(venezuela, bolivarian republic of) => [
+      q(0241),
+      q(0),
+      ],
+   q(viet nam) => [
+      q(0242),
+      q(0),
+      ],
+   q(vietnam) => [
+      q(0242),
+      q(1),
+      ],
+   q(virgin islands) => [
+      q(0244),
+      q(3),
+      ],
+   q(virgin islands (uk)) => [
+      q(0243),
+      q(2),
+      ],
+   q(virgin islands (us)) => [
+      q(0244),
+      q(2),
+      ],
+   q(virgin islands, british) => [
+      q(0243),
+      q(0),
+      ],
+   q(virgin islands, u.s.) => [
+      q(0244),
+      q(0),
+      ],
+   q(wake island) => [
+      q(0288),
+      q(0),
+      ],
+   q(wallis and futuna) => [
+      q(0245),
+      q(0),
+      ],
+   q(wallis and futuna islands) => [
+      q(0245),
+      q(1),
+      ],
+   q(west bank) => [
+      q(0289),
+      q(0),
+      ],
+   q(western sahara) => [
+      q(0246),
+      q(0),
+      ],
+   q(yemen) => [
+      q(0247),
+      q(0),
+      ],
+   q(zambia) => [
+      q(0248),
+      q(0),
+      ],
+   q(zimbabwe) => [
+      q(0249),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'country'}{'code2id'} = {
+   q(alpha-2) => {
+      q(ad) => [
+         q(0006),
+         q(0),
+         ],
+      q(ae) => [
+         q(0234),
+         q(0),
+         ],
+      q(af) => [
+         q(0001),
+         q(0),
+         ],
+      q(ag) => [
+         q(0010),
+         q(0),
+         ],
+      q(ai) => [
+         q(0008),
+         q(0),
+         ],
+      q(al) => [
+         q(0003),
+         q(0),
+         ],
+      q(am) => [
+         q(0012),
+         q(0),
+         ],
+      q(ao) => [
+         q(0007),
+         q(0),
+         ],
+      q(aq) => [
+         q(0009),
+         q(0),
+         ],
+      q(ar) => [
+         q(0011),
+         q(0),
+         ],
+      q(as) => [
+         q(0005),
+         q(0),
+         ],
+      q(at) => [
+         q(0015),
+         q(0),
+         ],
+      q(au) => [
+         q(0014),
+         q(0),
+         ],
+      q(aw) => [
+         q(0013),
+         q(0),
+         ],
+      q(ax) => [
+         q(0002),
+         q(0),
+         ],
+      q(az) => [
+         q(0016),
+         q(0),
+         ],
+      q(ba) => [
+         q(0029),
+         q(0),
+         ],
+      q(bb) => [
+         q(0020),
+         q(0),
+         ],
+      q(bd) => [
+         q(0019),
+         q(0),
+         ],
+      q(be) => [
+         q(0022),
+         q(0),
+         ],
+      q(bf) => [
+         q(0036),
+         q(0),
+         ],
+      q(bg) => [
+         q(0035),
+         q(0),
+         ],
+      q(bh) => [
+         q(0018),
+         q(0),
+         ],
+      q(bi) => [
+         q(0037),
+         q(0),
+         ],
+      q(bj) => [
+         q(0024),
+         q(0),
+         ],
+      q(bl) => [
+         q(0185),
+         q(0),
+         ],
+      q(bm) => [
+         q(0025),
+         q(0),
+         ],
+      q(bn) => [
+         q(0034),
+         q(0),
+         ],
+      q(bo) => [
+         q(0027),
+         q(0),
+         ],
+      q(bq) => [
+         q(0028),
+         q(0),
+         ],
+      q(br) => [
+         q(0032),
+         q(0),
+         ],
+      q(bs) => [
+         q(0017),
+         q(0),
+         ],
+      q(bt) => [
+         q(0026),
+         q(0),
+         ],
+      q(bv) => [
+         q(0031),
+         q(0),
+         ],
+      q(bw) => [
+         q(0030),
+         q(0),
+         ],
+      q(by) => [
+         q(0021),
+         q(0),
+         ],
+      q(bz) => [
+         q(0023),
+         q(0),
+         ],
+      q(ca) => [
+         q(0040),
+         q(0),
+         ],
+      q(cc) => [
+         q(0048),
+         q(0),
+         ],
+      q(cd) => [
+         q(0052),
+         q(0),
+         ],
+      q(cf) => [
+         q(0043),
+         q(0),
+         ],
+      q(cg) => [
+         q(0051),
+         q(0),
+         ],
+      q(ch) => [
+         q(0216),
+         q(0),
+         ],
+      q(ci) => [
+         q(0055),
+         q(0),
+         ],
+      q(ck) => [
+         q(0053),
+         q(0),
+         ],
+      q(cl) => [
+         q(0045),
+         q(0),
+         ],
+      q(cm) => [
+         q(0039),
+         q(0),
+         ],
+      q(cn) => [
+         q(0046),
+         q(0),
+         ],
+      q(co) => [
+         q(0049),
+         q(0),
+         ],
+      q(cr) => [
+         q(0054),
+         q(0),
+         ],
+      q(cu) => [
+         q(0057),
+         q(0),
+         ],
+      q(cv) => [
+         q(0041),
+         q(0),
+         ],
+      q(cw) => [
+         q(0058),
+         q(0),
+         ],
+      q(cx) => [
+         q(0047),
+         q(0),
+         ],
+      q(cy) => [
+         q(0059),
+         q(0),
+         ],
+      q(cz) => [
+         q(0060),
+         q(0),
+         ],
+      q(de) => [
+         q(0083),
+         q(0),
+         ],
+      q(dj) => [
+         q(0062),
+         q(0),
+         ],
+      q(dk) => [
+         q(0061),
+         q(0),
+         ],
+      q(dm) => [
+         q(0063),
+         q(0),
+         ],
+      q(do) => [
+         q(0064),
+         q(0),
+         ],
+      q(dz) => [
+         q(0004),
+         q(0),
+         ],
+      q(ec) => [
+         q(0065),
+         q(0),
+         ],
+      q(ee) => [
+         q(0070),
+         q(0),
+         ],
+      q(eg) => [
+         q(0066),
+         q(0),
+         ],
+      q(eh) => [
+         q(0246),
+         q(0),
+         ],
+      q(er) => [
+         q(0069),
+         q(0),
+         ],
+      q(es) => [
+         q(0209),
+         q(0),
+         ],
+      q(et) => [
+         q(0071),
+         q(0),
+         ],
+      q(fi) => [
+         q(0075),
+         q(0),
+         ],
+      q(fj) => [
+         q(0074),
+         q(0),
+         ],
+      q(fk) => [
+         q(0072),
+         q(0),
+         ],
+      q(fm) => [
+         q(0145),
+         q(0),
+         ],
+      q(fo) => [
+         q(0073),
+         q(0),
+         ],
+      q(fr) => [
+         q(0076),
+         q(0),
+         ],
+      q(ga) => [
+         q(0080),
+         q(0),
+         ],
+      q(gb) => [
+         q(0235),
+         q(0),
+         ],
+      q(gd) => [
+         q(0088),
+         q(0),
+         ],
+      q(ge) => [
+         q(0082),
+         q(0),
+         ],
+      q(gf) => [
+         q(0077),
+         q(0),
+         ],
+      q(gg) => [
+         q(0092),
+         q(0),
+         ],
+      q(gh) => [
+         q(0084),
+         q(0),
+         ],
+      q(gi) => [
+         q(0085),
+         q(0),
+         ],
+      q(gl) => [
+         q(0087),
+         q(0),
+         ],
+      q(gm) => [
+         q(0081),
+         q(0),
+         ],
+      q(gn) => [
+         q(0093),
+         q(0),
+         ],
+      q(gp) => [
+         q(0089),
+         q(0),
+         ],
+      q(gq) => [
+         q(0068),
+         q(0),
+         ],
+      q(gr) => [
+         q(0086),
+         q(0),
+         ],
+      q(gs) => [
+         q(0207),
+         q(0),
+         ],
+      q(gt) => [
+         q(0091),
+         q(0),
+         ],
+      q(gu) => [
+         q(0090),
+         q(0),
+         ],
+      q(gw) => [
+         q(0094),
+         q(0),
+         ],
+      q(gy) => [
+         q(0095),
+         q(0),
+         ],
+      q(hk) => [
+         q(0100),
+         q(0),
+         ],
+      q(hm) => [
+         q(0097),
+         q(0),
+         ],
+      q(hn) => [
+         q(0099),
+         q(0),
+         ],
+      q(hr) => [
+         q(0056),
+         q(0),
+         ],
+      q(ht) => [
+         q(0096),
+         q(0),
+         ],
+      q(hu) => [
+         q(0101),
+         q(0),
+         ],
+      q(id) => [
+         q(0104),
+         q(0),
+         ],
+      q(ie) => [
+         q(0107),
+         q(0),
+         ],
+      q(il) => [
+         q(0109),
+         q(0),
+         ],
+      q(im) => [
+         q(0108),
+         q(0),
+         ],
+      q(in) => [
+         q(0103),
+         q(0),
+         ],
+      q(io) => [
+         q(0033),
+         q(0),
+         ],
+      q(iq) => [
+         q(0106),
+         q(0),
+         ],
+      q(ir) => [
+         q(0105),
+         q(0),
+         ],
+      q(is) => [
+         q(0102),
+         q(0),
+         ],
+      q(it) => [
+         q(0110),
+         q(0),
+         ],
+      q(je) => [
+         q(0113),
+         q(0),
+         ],
+      q(jm) => [
+         q(0111),
+         q(0),
+         ],
+      q(jo) => [
+         q(0114),
+         q(0),
+         ],
+      q(jp) => [
+         q(0112),
+         q(0),
+         ],
+      q(ke) => [
+         q(0116),
+         q(0),
+         ],
+      q(kg) => [
+         q(0121),
+         q(0),
+         ],
+      q(kh) => [
+         q(0038),
+         q(0),
+         ],
+      q(ki) => [
+         q(0117),
+         q(0),
+         ],
+      q(km) => [
+         q(0050),
+         q(0),
+         ],
+      q(kn) => [
+         q(0187),
+         q(0),
+         ],
+      q(kp) => [
+         q(0118),
+         q(0),
+         ],
+      q(kr) => [
+         q(0119),
+         q(0),
+         ],
+      q(kw) => [
+         q(0120),
+         q(0),
+         ],
+      q(ky) => [
+         q(0042),
+         q(0),
+         ],
+      q(kz) => [
+         q(0115),
+         q(0),
+         ],
+      q(la) => [
+         q(0122),
+         q(0),
+         ],
+      q(lb) => [
+         q(0124),
+         q(0),
+         ],
+      q(lc) => [
+         q(0188),
+         q(0),
+         ],
+      q(li) => [
+         q(0128),
+         q(0),
+         ],
+      q(lk) => [
+         q(0210),
+         q(0),
+         ],
+      q(lr) => [
+         q(0126),
+         q(0),
+         ],
+      q(ls) => [
+         q(0125),
+         q(0),
+         ],
+      q(lt) => [
+         q(0129),
+         q(0),
+         ],
+      q(lu) => [
+         q(0130),
+         q(0),
+         ],
+      q(lv) => [
+         q(0123),
+         q(0),
+         ],
+      q(ly) => [
+         q(0127),
+         q(0),
+         ],
+      q(ma) => [
+         q(0151),
+         q(0),
+         ],
+      q(mc) => [
+         q(0147),
+         q(0),
+         ],
+      q(md) => [
+         q(0146),
+         q(0),
+         ],
+      q(me) => [
+         q(0149),
+         q(0),
+         ],
+      q(mf) => [
+         q(0189),
+         q(0),
+         ],
+      q(mg) => [
+         q(0133),
+         q(0),
+         ],
+      q(mh) => [
+         q(0139),
+         q(0),
+         ],
+      q(mk) => [
+         q(0132),
+         q(0),
+         ],
+      q(ml) => [
+         q(0137),
+         q(0),
+         ],
+      q(mm) => [
+         q(0153),
+         q(0),
+         ],
+      q(mn) => [
+         q(0148),
+         q(0),
+         ],
+      q(mo) => [
+         q(0131),
+         q(0),
+         ],
+      q(mp) => [
+         q(0165),
+         q(0),
+         ],
+      q(mq) => [
+         q(0140),
+         q(0),
+         ],
+      q(mr) => [
+         q(0141),
+         q(0),
+         ],
+      q(ms) => [
+         q(0150),
+         q(0),
+         ],
+      q(mt) => [
+         q(0138),
+         q(0),
+         ],
+      q(mu) => [
+         q(0142),
+         q(0),
+         ],
+      q(mv) => [
+         q(0136),
+         q(0),
+         ],
+      q(mw) => [
+         q(0134),
+         q(0),
+         ],
+      q(mx) => [
+         q(0144),
+         q(0),
+         ],
+      q(my) => [
+         q(0135),
+         q(0),
+         ],
+      q(mz) => [
+         q(0152),
+         q(0),
+         ],
+      q(na) => [
+         q(0154),
+         q(0),
+         ],
+      q(nc) => [
+         q(0158),
+         q(0),
+         ],
+      q(ne) => [
+         q(0161),
+         q(0),
+         ],
+      q(nf) => [
+         q(0164),
+         q(0),
+         ],
+      q(ng) => [
+         q(0162),
+         q(0),
+         ],
+      q(ni) => [
+         q(0160),
+         q(0),
+         ],
+      q(nl) => [
+         q(0157),
+         q(0),
+         ],
+      q(no) => [
+         q(0166),
+         q(0),
+         ],
+      q(np) => [
+         q(0156),
+         q(0),
+         ],
+      q(nr) => [
+         q(0155),
+         q(0),
+         ],
+      q(nu) => [
+         q(0163),
+         q(0),
+         ],
+      q(nz) => [
+         q(0159),
+         q(0),
+         ],
+      q(om) => [
+         q(0167),
+         q(0),
+         ],
+      q(pa) => [
+         q(0171),
+         q(0),
+         ],
+      q(pe) => [
+         q(0174),
+         q(0),
+         ],
+      q(pf) => [
+         q(0078),
+         q(0),
+         ],
+      q(pg) => [
+         q(0172),
+         q(0),
+         ],
+      q(ph) => [
+         q(0175),
+         q(0),
+         ],
+      q(pk) => [
+         q(0168),
+         q(0),
+         ],
+      q(pl) => [
+         q(0177),
+         q(0),
+         ],
+      q(pm) => [
+         q(0190),
+         q(0),
+         ],
+      q(pn) => [
+         q(0176),
+         q(0),
+         ],
+      q(pr) => [
+         q(0179),
+         q(0),
+         ],
+      q(ps) => [
+         q(0170),
+         q(0),
+         ],
+      q(pt) => [
+         q(0178),
+         q(0),
+         ],
+      q(pw) => [
+         q(0169),
+         q(0),
+         ],
+      q(py) => [
+         q(0173),
+         q(0),
+         ],
+      q(qa) => [
+         q(0180),
+         q(0),
+         ],
+      q(re) => [
+         q(0181),
+         q(0),
+         ],
+      q(ro) => [
+         q(0182),
+         q(0),
+         ],
+      q(rs) => [
+         q(0197),
+         q(0),
+         ],
+      q(ru) => [
+         q(0183),
+         q(0),
+         ],
+      q(rw) => [
+         q(0184),
+         q(0),
+         ],
+      q(sa) => [
+         q(0195),
+         q(0),
+         ],
+      q(sb) => [
+         q(0204),
+         q(0),
+         ],
+      q(sc) => [
+         q(0198),
+         q(0),
+         ],
+      q(sd) => [
+         q(0211),
+         q(0),
+         ],
+      q(se) => [
+         q(0215),
+         q(0),
+         ],
+      q(sg) => [
+         q(0200),
+         q(0),
+         ],
+      q(sh) => [
+         q(0186),
+         q(0),
+         ],
+      q(si) => [
+         q(0203),
+         q(0),
+         ],
+      q(sj) => [
+         q(0213),
+         q(0),
+         ],
+      q(sk) => [
+         q(0202),
+         q(0),
+         ],
+      q(sl) => [
+         q(0199),
+         q(0),
+         ],
+      q(sm) => [
+         q(0193),
+         q(0),
+         ],
+      q(sn) => [
+         q(0196),
+         q(0),
+         ],
+      q(so) => [
+         q(0205),
+         q(0),
+         ],
+      q(sr) => [
+         q(0212),
+         q(0),
+         ],
+      q(ss) => [
+         q(0208),
+         q(0),
+         ],
+      q(st) => [
+         q(0194),
+         q(0),
+         ],
+      q(sv) => [
+         q(0067),
+         q(0),
+         ],
+      q(sx) => [
+         q(0201),
+         q(0),
+         ],
+      q(sy) => [
+         q(0217),
+         q(0),
+         ],
+      q(sz) => [
+         q(0214),
+         q(0),
+         ],
+      q(tc) => [
+         q(0230),
+         q(0),
+         ],
+      q(td) => [
+         q(0044),
+         q(0),
+         ],
+      q(tf) => [
+         q(0079),
+         q(0),
+         ],
+      q(tg) => [
+         q(0223),
+         q(0),
+         ],
+      q(th) => [
+         q(0221),
+         q(0),
+         ],
+      q(tj) => [
+         q(0219),
+         q(0),
+         ],
+      q(tk) => [
+         q(0224),
+         q(0),
+         ],
+      q(tl) => [
+         q(0222),
+         q(0),
+         ],
+      q(tm) => [
+         q(0229),
+         q(0),
+         ],
+      q(tn) => [
+         q(0227),
+         q(0),
+         ],
+      q(to) => [
+         q(0225),
+         q(0),
+         ],
+      q(tr) => [
+         q(0228),
+         q(0),
+         ],
+      q(tt) => [
+         q(0226),
+         q(0),
+         ],
+      q(tv) => [
+         q(0231),
+         q(0),
+         ],
+      q(tw) => [
+         q(0218),
+         q(0),
+         ],
+      q(tz) => [
+         q(0220),
+         q(0),
+         ],
+      q(ua) => [
+         q(0233),
+         q(0),
+         ],
+      q(ug) => [
+         q(0232),
+         q(0),
+         ],
+      q(um) => [
+         q(0237),
+         q(0),
+         ],
+      q(us) => [
+         q(0236),
+         q(0),
+         ],
+      q(uy) => [
+         q(0238),
+         q(0),
+         ],
+      q(uz) => [
+         q(0239),
+         q(0),
+         ],
+      q(va) => [
+         q(0098),
+         q(0),
+         ],
+      q(vc) => [
+         q(0191),
+         q(0),
+         ],
+      q(ve) => [
+         q(0241),
+         q(0),
+         ],
+      q(vg) => [
+         q(0243),
+         q(0),
+         ],
+      q(vi) => [
+         q(0244),
+         q(0),
+         ],
+      q(vn) => [
+         q(0242),
+         q(0),
+         ],
+      q(vu) => [
+         q(0240),
+         q(0),
+         ],
+      q(wf) => [
+         q(0245),
+         q(0),
+         ],
+      q(ws) => [
+         q(0192),
+         q(0),
+         ],
+      q(ye) => [
+         q(0247),
+         q(0),
+         ],
+      q(yt) => [
+         q(0143),
+         q(0),
+         ],
+      q(za) => [
+         q(0206),
+         q(0),
+         ],
+      q(zm) => [
+         q(0248),
+         q(0),
+         ],
+      q(zw) => [
+         q(0249),
+         q(0),
+         ],
+      },
+   q(alpha-3) => {
+      q(abw) => [
+         q(0013),
+         q(0),
+         ],
+      q(afg) => [
+         q(0001),
+         q(0),
+         ],
+      q(ago) => [
+         q(0007),
+         q(0),
+         ],
+      q(aia) => [
+         q(0008),
+         q(0),
+         ],
+      q(ala) => [
+         q(0002),
+         q(0),
+         ],
+      q(alb) => [
+         q(0003),
+         q(0),
+         ],
+      q(and) => [
+         q(0006),
+         q(0),
+         ],
+      q(are) => [
+         q(0234),
+         q(0),
+         ],
+      q(arg) => [
+         q(0011),
+         q(0),
+         ],
+      q(arm) => [
+         q(0012),
+         q(0),
+         ],
+      q(asm) => [
+         q(0005),
+         q(0),
+         ],
+      q(atg) => [
+         q(0010),
+         q(0),
+         ],
+      q(aus) => [
+         q(0014),
+         q(0),
+         ],
+      q(aut) => [
+         q(0015),
+         q(0),
+         ],
+      q(aze) => [
+         q(0016),
+         q(0),
+         ],
+      q(bdi) => [
+         q(0037),
+         q(0),
+         ],
+      q(bel) => [
+         q(0022),
+         q(0),
+         ],
+      q(ben) => [
+         q(0024),
+         q(0),
+         ],
+      q(bes) => [
+         q(0028),
+         q(0),
+         ],
+      q(bfa) => [
+         q(0036),
+         q(0),
+         ],
+      q(bgd) => [
+         q(0019),
+         q(0),
+         ],
+      q(bgr) => [
+         q(0035),
+         q(0),
+         ],
+      q(bhr) => [
+         q(0018),
+         q(0),
+         ],
+      q(bhs) => [
+         q(0017),
+         q(0),
+         ],
+      q(bih) => [
+         q(0029),
+         q(0),
+         ],
+      q(blm) => [
+         q(0185),
+         q(1),
+         ],
+      q(blr) => [
+         q(0021),
+         q(0),
+         ],
+      q(blz) => [
+         q(0023),
+         q(0),
+         ],
+      q(bmu) => [
+         q(0025),
+         q(0),
+         ],
+      q(bol) => [
+         q(0027),
+         q(1),
+         ],
+      q(bra) => [
+         q(0032),
+         q(0),
+         ],
+      q(brb) => [
+         q(0020),
+         q(0),
+         ],
+      q(brn) => [
+         q(0034),
+         q(0),
+         ],
+      q(btn) => [
+         q(0026),
+         q(0),
+         ],
+      q(bwa) => [
+         q(0030),
+         q(0),
+         ],
+      q(caf) => [
+         q(0043),
+         q(0),
+         ],
+      q(can) => [
+         q(0040),
+         q(0),
+         ],
+      q(che) => [
+         q(0216),
+         q(0),
+         ],
+      q(chl) => [
+         q(0045),
+         q(0),
+         ],
+      q(chn) => [
+         q(0046),
+         q(0),
+         ],
+      q(civ) => [
+         q(0055),
+         q(0),
+         ],
+      q(cmr) => [
+         q(0039),
+         q(0),
+         ],
+      q(cod) => [
+         q(0052),
+         q(1),
+         ],
+      q(cog) => [
+         q(0051),
+         q(0),
+         ],
+      q(cok) => [
+         q(0053),
+         q(0),
+         ],
+      q(col) => [
+         q(0049),
+         q(0),
+         ],
+      q(com) => [
+         q(0050),
+         q(0),
+         ],
+      q(cpv) => [
+         q(0041),
+         q(0),
+         ],
+      q(cri) => [
+         q(0054),
+         q(0),
+         ],
+      q(cub) => [
+         q(0057),
+         q(0),
+         ],
+      q(cuw) => [
+         q(0058),
+         q(0),
+         ],
+      q(cym) => [
+         q(0042),
+         q(0),
+         ],
+      q(cyp) => [
+         q(0059),
+         q(0),
+         ],
+      q(cze) => [
+         q(0060),
+         q(0),
+         ],
+      q(deu) => [
+         q(0083),
+         q(0),
+         ],
+      q(dji) => [
+         q(0062),
+         q(0),
+         ],
+      q(dma) => [
+         q(0063),
+         q(0),
+         ],
+      q(dnk) => [
+         q(0061),
+         q(0),
+         ],
+      q(dom) => [
+         q(0064),
+         q(0),
+         ],
+      q(dza) => [
+         q(0004),
+         q(0),
+         ],
+      q(ecu) => [
+         q(0065),
+         q(0),
+         ],
+      q(egy) => [
+         q(0066),
+         q(0),
+         ],
+      q(eri) => [
+         q(0069),
+         q(0),
+         ],
+      q(esh) => [
+         q(0246),
+         q(0),
+         ],
+      q(esp) => [
+         q(0209),
+         q(0),
+         ],
+      q(est) => [
+         q(0070),
+         q(0),
+         ],
+      q(eth) => [
+         q(0071),
+         q(0),
+         ],
+      q(fin) => [
+         q(0075),
+         q(0),
+         ],
+      q(fji) => [
+         q(0074),
+         q(0),
+         ],
+      q(flk) => [
+         q(0072),
+         q(0),
+         ],
+      q(fra) => [
+         q(0076),
+         q(0),
+         ],
+      q(fro) => [
+         q(0073),
+         q(1),
+         ],
+      q(fsm) => [
+         q(0145),
+         q(1),
+         ],
+      q(gab) => [
+         q(0080),
+         q(0),
+         ],
+      q(gbr) => [
+         q(0235),
+         q(1),
+         ],
+      q(geo) => [
+         q(0082),
+         q(0),
+         ],
+      q(ggy) => [
+         q(0092),
+         q(0),
+         ],
+      q(gha) => [
+         q(0084),
+         q(0),
+         ],
+      q(gib) => [
+         q(0085),
+         q(0),
+         ],
+      q(gin) => [
+         q(0093),
+         q(0),
+         ],
+      q(glp) => [
+         q(0089),
+         q(0),
+         ],
+      q(gmb) => [
+         q(0081),
+         q(0),
+         ],
+      q(gnb) => [
+         q(0094),
+         q(0),
+         ],
+      q(gnq) => [
+         q(0068),
+         q(0),
+         ],
+      q(grc) => [
+         q(0086),
+         q(0),
+         ],
+      q(grd) => [
+         q(0088),
+         q(0),
+         ],
+      q(grl) => [
+         q(0087),
+         q(0),
+         ],
+      q(gtm) => [
+         q(0091),
+         q(0),
+         ],
+      q(guf) => [
+         q(0077),
+         q(0),
+         ],
+      q(gum) => [
+         q(0090),
+         q(0),
+         ],
+      q(guy) => [
+         q(0095),
+         q(0),
+         ],
+      q(hkg) => [
+         q(0100),
+         q(1),
+         ],
+      q(hnd) => [
+         q(0099),
+         q(0),
+         ],
+      q(hrv) => [
+         q(0056),
+         q(0),
+         ],
+      q(hti) => [
+         q(0096),
+         q(0),
+         ],
+      q(hun) => [
+         q(0101),
+         q(0),
+         ],
+      q(idn) => [
+         q(0104),
+         q(0),
+         ],
+      q(imn) => [
+         q(0108),
+         q(0),
+         ],
+      q(ind) => [
+         q(0103),
+         q(0),
+         ],
+      q(irl) => [
+         q(0107),
+         q(0),
+         ],
+      q(irn) => [
+         q(0105),
+         q(1),
+         ],
+      q(irq) => [
+         q(0106),
+         q(0),
+         ],
+      q(isl) => [
+         q(0102),
+         q(0),
+         ],
+      q(isr) => [
+         q(0109),
+         q(0),
+         ],
+      q(ita) => [
+         q(0110),
+         q(0),
+         ],
+      q(jam) => [
+         q(0111),
+         q(0),
+         ],
+      q(jey) => [
+         q(0113),
+         q(0),
+         ],
+      q(jor) => [
+         q(0114),
+         q(0),
+         ],
+      q(jpn) => [
+         q(0112),
+         q(0),
+         ],
+      q(kaz) => [
+         q(0115),
+         q(0),
+         ],
+      q(ken) => [
+         q(0116),
+         q(0),
+         ],
+      q(kgz) => [
+         q(0121),
+         q(0),
+         ],
+      q(khm) => [
+         q(0038),
+         q(0),
+         ],
+      q(kir) => [
+         q(0117),
+         q(0),
+         ],
+      q(kna) => [
+         q(0187),
+         q(0),
+         ],
+      q(kor) => [
+         q(0119),
+         q(1),
+         ],
+      q(kwt) => [
+         q(0120),
+         q(0),
+         ],
+      q(lao) => [
+         q(0122),
+         q(0),
+         ],
+      q(lbn) => [
+         q(0124),
+         q(0),
+         ],
+      q(lbr) => [
+         q(0126),
+         q(0),
+         ],
+      q(lby) => [
+         q(0127),
+         q(0),
+         ],
+      q(lca) => [
+         q(0188),
+         q(0),
+         ],
+      q(lie) => [
+         q(0128),
+         q(0),
+         ],
+      q(lka) => [
+         q(0210),
+         q(0),
+         ],
+      q(lso) => [
+         q(0125),
+         q(0),
+         ],
+      q(ltu) => [
+         q(0129),
+         q(0),
+         ],
+      q(lux) => [
+         q(0130),
+         q(0),
+         ],
+      q(lva) => [
+         q(0123),
+         q(0),
+         ],
+      q(mac) => [
+         q(0131),
+         q(1),
+         ],
+      q(maf) => [
+         q(0189),
+         q(1),
+         ],
+      q(mar) => [
+         q(0151),
+         q(0),
+         ],
+      q(mco) => [
+         q(0147),
+         q(0),
+         ],
+      q(mda) => [
+         q(0146),
+         q(1),
+         ],
+      q(mdg) => [
+         q(0133),
+         q(0),
+         ],
+      q(mdv) => [
+         q(0136),
+         q(0),
+         ],
+      q(mex) => [
+         q(0144),
+         q(0),
+         ],
+      q(mhl) => [
+         q(0139),
+         q(0),
+         ],
+      q(mkd) => [
+         q(0132),
+         q(1),
+         ],
+      q(mli) => [
+         q(0137),
+         q(0),
+         ],
+      q(mlt) => [
+         q(0138),
+         q(0),
+         ],
+      q(mmr) => [
+         q(0153),
+         q(0),
+         ],
+      q(mne) => [
+         q(0149),
+         q(0),
+         ],
+      q(mng) => [
+         q(0148),
+         q(0),
+         ],
+      q(mnp) => [
+         q(0165),
+         q(0),
+         ],
+      q(moz) => [
+         q(0152),
+         q(0),
+         ],
+      q(mrt) => [
+         q(0141),
+         q(0),
+         ],
+      q(msr) => [
+         q(0150),
+         q(0),
+         ],
+      q(mtq) => [
+         q(0140),
+         q(0),
+         ],
+      q(mus) => [
+         q(0142),
+         q(0),
+         ],
+      q(mwi) => [
+         q(0134),
+         q(0),
+         ],
+      q(mys) => [
+         q(0135),
+         q(0),
+         ],
+      q(myt) => [
+         q(0143),
+         q(0),
+         ],
+      q(nam) => [
+         q(0154),
+         q(0),
+         ],
+      q(ncl) => [
+         q(0158),
+         q(0),
+         ],
+      q(ner) => [
+         q(0161),
+         q(0),
+         ],
+      q(nfk) => [
+         q(0164),
+         q(0),
+         ],
+      q(nga) => [
+         q(0162),
+         q(0),
+         ],
+      q(nic) => [
+         q(0160),
+         q(0),
+         ],
+      q(niu) => [
+         q(0163),
+         q(0),
+         ],
+      q(nld) => [
+         q(0157),
+         q(0),
+         ],
+      q(nor) => [
+         q(0166),
+         q(0),
+         ],
+      q(npl) => [
+         q(0156),
+         q(0),
+         ],
+      q(nru) => [
+         q(0155),
+         q(0),
+         ],
+      q(nzl) => [
+         q(0159),
+         q(0),
+         ],
+      q(omn) => [
+         q(0167),
+         q(0),
+         ],
+      q(pak) => [
+         q(0168),
+         q(0),
+         ],
+      q(pan) => [
+         q(0171),
+         q(0),
+         ],
+      q(pcn) => [
+         q(0176),
+         q(0),
+         ],
+      q(per) => [
+         q(0174),
+         q(0),
+         ],
+      q(phl) => [
+         q(0175),
+         q(0),
+         ],
+      q(plw) => [
+         q(0169),
+         q(0),
+         ],
+      q(png) => [
+         q(0172),
+         q(0),
+         ],
+      q(pol) => [
+         q(0177),
+         q(0),
+         ],
+      q(pri) => [
+         q(0179),
+         q(0),
+         ],
+      q(prk) => [
+         q(0118),
+         q(1),
+         ],
+      q(prt) => [
+         q(0178),
+         q(0),
+         ],
+      q(pry) => [
+         q(0173),
+         q(0),
+         ],
+      q(pse) => [
+         q(0170),
+         q(1),
+         ],
+      q(pyf) => [
+         q(0078),
+         q(0),
+         ],
+      q(qat) => [
+         q(0180),
+         q(0),
+         ],
+      q(reu) => [
+         q(0181),
+         q(0),
+         ],
+      q(rou) => [
+         q(0182),
+         q(0),
+         ],
+      q(rus) => [
+         q(0183),
+         q(0),
+         ],
+      q(rwa) => [
+         q(0184),
+         q(0),
+         ],
+      q(sau) => [
+         q(0195),
+         q(0),
+         ],
+      q(sdn) => [
+         q(0211),
+         q(0),
+         ],
+      q(sen) => [
+         q(0196),
+         q(0),
+         ],
+      q(sgp) => [
+         q(0200),
+         q(0),
+         ],
+      q(shn) => [
+         q(0186),
+         q(1),
+         ],
+      q(sjm) => [
+         q(0213),
+         q(1),
+         ],
+      q(slb) => [
+         q(0204),
+         q(0),
+         ],
+      q(sle) => [
+         q(0199),
+         q(0),
+         ],
+      q(slv) => [
+         q(0067),
+         q(0),
+         ],
+      q(smr) => [
+         q(0193),
+         q(0),
+         ],
+      q(som) => [
+         q(0205),
+         q(0),
+         ],
+      q(spm) => [
+         q(0190),
+         q(0),
+         ],
+      q(srb) => [
+         q(0197),
+         q(0),
+         ],
+      q(ssd) => [
+         q(0208),
+         q(0),
+         ],
+      q(stp) => [
+         q(0194),
+         q(0),
+         ],
+      q(sur) => [
+         q(0212),
+         q(0),
+         ],
+      q(svk) => [
+         q(0202),
+         q(0),
+         ],
+      q(svn) => [
+         q(0203),
+         q(0),
+         ],
+      q(swe) => [
+         q(0215),
+         q(0),
+         ],
+      q(swz) => [
+         q(0214),
+         q(0),
+         ],
+      q(sxm) => [
+         q(0201),
+         q(0),
+         ],
+      q(syc) => [
+         q(0198),
+         q(0),
+         ],
+      q(syr) => [
+         q(0217),
+         q(0),
+         ],
+      q(tca) => [
+         q(0230),
+         q(0),
+         ],
+      q(tcd) => [
+         q(0044),
+         q(0),
+         ],
+      q(tgo) => [
+         q(0223),
+         q(0),
+         ],
+      q(tha) => [
+         q(0221),
+         q(0),
+         ],
+      q(tjk) => [
+         q(0219),
+         q(0),
+         ],
+      q(tkl) => [
+         q(0224),
+         q(0),
+         ],
+      q(tkm) => [
+         q(0229),
+         q(0),
+         ],
+      q(tls) => [
+         q(0222),
+         q(0),
+         ],
+      q(ton) => [
+         q(0225),
+         q(0),
+         ],
+      q(tto) => [
+         q(0226),
+         q(0),
+         ],
+      q(tun) => [
+         q(0227),
+         q(0),
+         ],
+      q(tur) => [
+         q(0228),
+         q(0),
+         ],
+      q(tuv) => [
+         q(0231),
+         q(0),
+         ],
+      q(tza) => [
+         q(0220),
+         q(1),
+         ],
+      q(uga) => [
+         q(0232),
+         q(0),
+         ],
+      q(ukr) => [
+         q(0233),
+         q(0),
+         ],
+      q(ury) => [
+         q(0238),
+         q(0),
+         ],
+      q(usa) => [
+         q(0236),
+         q(1),
+         ],
+      q(uzb) => [
+         q(0239),
+         q(0),
+         ],
+      q(vat) => [
+         q(0098),
+         q(1),
+         ],
+      q(vct) => [
+         q(0191),
+         q(0),
+         ],
+      q(ven) => [
+         q(0241),
+         q(1),
+         ],
+      q(vgb) => [
+         q(0243),
+         q(1),
+         ],
+      q(vir) => [
+         q(0244),
+         q(1),
+         ],
+      q(vnm) => [
+         q(0242),
+         q(0),
+         ],
+      q(vut) => [
+         q(0240),
+         q(0),
+         ],
+      q(wlf) => [
+         q(0245),
+         q(1),
+         ],
+      q(wsm) => [
+         q(0192),
+         q(0),
+         ],
+      q(yem) => [
+         q(0247),
+         q(0),
+         ],
+      q(zaf) => [
+         q(0206),
+         q(0),
+         ],
+      q(zmb) => [
+         q(0248),
+         q(0),
+         ],
+      q(zwe) => [
+         q(0249),
+         q(0),
+         ],
+      },
+   q(dom) => {
+      q(ac) => [
+         q(0290),
+         q(0),
+         ],
+      q(ad) => [
+         q(0006),
+         q(0),
+         ],
+      q(ae) => [
+         q(0234),
+         q(0),
+         ],
+      q(af) => [
+         q(0001),
+         q(0),
+         ],
+      q(ag) => [
+         q(0010),
+         q(0),
+         ],
+      q(ai) => [
+         q(0008),
+         q(0),
+         ],
+      q(al) => [
+         q(0003),
+         q(0),
+         ],
+      q(am) => [
+         q(0012),
+         q(0),
+         ],
+      q(an) => [
+         q(0291),
+         q(0),
+         ],
+      q(ao) => [
+         q(0007),
+         q(0),
+         ],
+      q(aq) => [
+         q(0009),
+         q(0),
+         ],
+      q(ar) => [
+         q(0011),
+         q(0),
+         ],
+      q(as) => [
+         q(0005),
+         q(0),
+         ],
+      q(at) => [
+         q(0015),
+         q(0),
+         ],
+      q(au) => [
+         q(0014),
+         q(0),
+         ],
+      q(aw) => [
+         q(0013),
+         q(0),
+         ],
+      q(ax) => [
+         q(0002),
+         q(0),
+         ],
+      q(az) => [
+         q(0016),
+         q(0),
+         ],
+      q(ba) => [
+         q(0029),
+         q(0),
+         ],
+      q(bb) => [
+         q(0020),
+         q(0),
+         ],
+      q(bd) => [
+         q(0019),
+         q(0),
+         ],
+      q(be) => [
+         q(0022),
+         q(0),
+         ],
+      q(bf) => [
+         q(0036),
+         q(0),
+         ],
+      q(bg) => [
+         q(0035),
+         q(0),
+         ],
+      q(bh) => [
+         q(0018),
+         q(0),
+         ],
+      q(bi) => [
+         q(0037),
+         q(0),
+         ],
+      q(bj) => [
+         q(0024),
+         q(0),
+         ],
+      q(bl) => [
+         q(0185),
+         q(0),
+         ],
+      q(bm) => [
+         q(0025),
+         q(0),
+         ],
+      q(bn) => [
+         q(0034),
+         q(0),
+         ],
+      q(bo) => [
+         q(0027),
+         q(0),
+         ],
+      q(bq) => [
+         q(0028),
+         q(0),
+         ],
+      q(br) => [
+         q(0032),
+         q(0),
+         ],
+      q(bs) => [
+         q(0017),
+         q(0),
+         ],
+      q(bt) => [
+         q(0026),
+         q(0),
+         ],
+      q(bv) => [
+         q(0031),
+         q(0),
+         ],
+      q(bw) => [
+         q(0030),
+         q(0),
+         ],
+      q(by) => [
+         q(0021),
+         q(0),
+         ],
+      q(bz) => [
+         q(0023),
+         q(0),
+         ],
+      q(ca) => [
+         q(0040),
+         q(0),
+         ],
+      q(cc) => [
+         q(0048),
+         q(0),
+         ],
+      q(cd) => [
+         q(0052),
+         q(0),
+         ],
+      q(cf) => [
+         q(0043),
+         q(0),
+         ],
+      q(cg) => [
+         q(0051),
+         q(0),
+         ],
+      q(ch) => [
+         q(0216),
+         q(0),
+         ],
+      q(ci) => [
+         q(0055),
+         q(0),
+         ],
+      q(ck) => [
+         q(0053),
+         q(0),
+         ],
+      q(cl) => [
+         q(0045),
+         q(0),
+         ],
+      q(cm) => [
+         q(0039),
+         q(0),
+         ],
+      q(cn) => [
+         q(0046),
+         q(0),
+         ],
+      q(co) => [
+         q(0049),
+         q(0),
+         ],
+      q(cr) => [
+         q(0054),
+         q(0),
+         ],
+      q(cu) => [
+         q(0057),
+         q(0),
+         ],
+      q(cv) => [
+         q(0041),
+         q(0),
+         ],
+      q(cw) => [
+         q(0058),
+         q(0),
+         ],
+      q(cx) => [
+         q(0047),
+         q(0),
+         ],
+      q(cy) => [
+         q(0059),
+         q(0),
+         ],
+      q(cz) => [
+         q(0060),
+         q(0),
+         ],
+      q(de) => [
+         q(0083),
+         q(0),
+         ],
+      q(dj) => [
+         q(0062),
+         q(0),
+         ],
+      q(dk) => [
+         q(0061),
+         q(0),
+         ],
+      q(dm) => [
+         q(0063),
+         q(0),
+         ],
+      q(do) => [
+         q(0064),
+         q(0),
+         ],
+      q(dz) => [
+         q(0004),
+         q(0),
+         ],
+      q(ec) => [
+         q(0065),
+         q(0),
+         ],
+      q(ee) => [
+         q(0070),
+         q(0),
+         ],
+      q(eg) => [
+         q(0066),
+         q(0),
+         ],
+      q(eh) => [
+         q(0246),
+         q(0),
+         ],
+      q(er) => [
+         q(0069),
+         q(0),
+         ],
+      q(es) => [
+         q(0209),
+         q(0),
+         ],
+      q(et) => [
+         q(0071),
+         q(0),
+         ],
+      q(eu) => [
+         q(0292),
+         q(0),
+         ],
+      q(fi) => [
+         q(0075),
+         q(0),
+         ],
+      q(fj) => [
+         q(0074),
+         q(0),
+         ],
+      q(fk) => [
+         q(0072),
+         q(0),
+         ],
+      q(fm) => [
+         q(0145),
+         q(0),
+         ],
+      q(fo) => [
+         q(0073),
+         q(0),
+         ],
+      q(fr) => [
+         q(0076),
+         q(0),
+         ],
+      q(ga) => [
+         q(0080),
+         q(0),
+         ],
+      q(gb) => [
+         q(0235),
+         q(0),
+         ],
+      q(gd) => [
+         q(0088),
+         q(0),
+         ],
+      q(ge) => [
+         q(0082),
+         q(0),
+         ],
+      q(gf) => [
+         q(0077),
+         q(0),
+         ],
+      q(gg) => [
+         q(0092),
+         q(0),
+         ],
+      q(gh) => [
+         q(0084),
+         q(0),
+         ],
+      q(gi) => [
+         q(0085),
+         q(0),
+         ],
+      q(gl) => [
+         q(0087),
+         q(0),
+         ],
+      q(gm) => [
+         q(0081),
+         q(0),
+         ],
+      q(gn) => [
+         q(0093),
+         q(0),
+         ],
+      q(gp) => [
+         q(0089),
+         q(0),
+         ],
+      q(gq) => [
+         q(0068),
+         q(0),
+         ],
+      q(gr) => [
+         q(0086),
+         q(0),
+         ],
+      q(gs) => [
+         q(0207),
+         q(0),
+         ],
+      q(gt) => [
+         q(0091),
+         q(0),
+         ],
+      q(gu) => [
+         q(0090),
+         q(0),
+         ],
+      q(gw) => [
+         q(0094),
+         q(0),
+         ],
+      q(gy) => [
+         q(0095),
+         q(0),
+         ],
+      q(hk) => [
+         q(0100),
+         q(0),
+         ],
+      q(hm) => [
+         q(0097),
+         q(0),
+         ],
+      q(hn) => [
+         q(0099),
+         q(0),
+         ],
+      q(hr) => [
+         q(0056),
+         q(0),
+         ],
+      q(ht) => [
+         q(0096),
+         q(0),
+         ],
+      q(hu) => [
+         q(0101),
+         q(0),
+         ],
+      q(id) => [
+         q(0104),
+         q(0),
+         ],
+      q(ie) => [
+         q(0107),
+         q(0),
+         ],
+      q(il) => [
+         q(0109),
+         q(0),
+         ],
+      q(im) => [
+         q(0108),
+         q(0),
+         ],
+      q(in) => [
+         q(0103),
+         q(0),
+         ],
+      q(io) => [
+         q(0033),
+         q(0),
+         ],
+      q(iq) => [
+         q(0106),
+         q(0),
+         ],
+      q(ir) => [
+         q(0105),
+         q(0),
+         ],
+      q(is) => [
+         q(0102),
+         q(0),
+         ],
+      q(it) => [
+         q(0110),
+         q(0),
+         ],
+      q(je) => [
+         q(0113),
+         q(0),
+         ],
+      q(jm) => [
+         q(0111),
+         q(0),
+         ],
+      q(jo) => [
+         q(0114),
+         q(0),
+         ],
+      q(jp) => [
+         q(0112),
+         q(0),
+         ],
+      q(ke) => [
+         q(0116),
+         q(0),
+         ],
+      q(kg) => [
+         q(0121),
+         q(0),
+         ],
+      q(kh) => [
+         q(0038),
+         q(0),
+         ],
+      q(ki) => [
+         q(0117),
+         q(0),
+         ],
+      q(km) => [
+         q(0050),
+         q(0),
+         ],
+      q(kn) => [
+         q(0187),
+         q(0),
+         ],
+      q(kp) => [
+         q(0118),
+         q(0),
+         ],
+      q(kr) => [
+         q(0119),
+         q(0),
+         ],
+      q(kw) => [
+         q(0120),
+         q(0),
+         ],
+      q(ky) => [
+         q(0042),
+         q(0),
+         ],
+      q(kz) => [
+         q(0115),
+         q(0),
+         ],
+      q(la) => [
+         q(0122),
+         q(0),
+         ],
+      q(lb) => [
+         q(0124),
+         q(0),
+         ],
+      q(lc) => [
+         q(0188),
+         q(0),
+         ],
+      q(li) => [
+         q(0128),
+         q(0),
+         ],
+      q(lk) => [
+         q(0210),
+         q(0),
+         ],
+      q(lr) => [
+         q(0126),
+         q(0),
+         ],
+      q(ls) => [
+         q(0125),
+         q(0),
+         ],
+      q(lt) => [
+         q(0129),
+         q(0),
+         ],
+      q(lu) => [
+         q(0130),
+         q(0),
+         ],
+      q(lv) => [
+         q(0123),
+         q(0),
+         ],
+      q(ly) => [
+         q(0127),
+         q(0),
+         ],
+      q(ma) => [
+         q(0151),
+         q(0),
+         ],
+      q(mc) => [
+         q(0147),
+         q(0),
+         ],
+      q(md) => [
+         q(0146),
+         q(0),
+         ],
+      q(me) => [
+         q(0149),
+         q(0),
+         ],
+      q(mf) => [
+         q(0189),
+         q(0),
+         ],
+      q(mg) => [
+         q(0133),
+         q(0),
+         ],
+      q(mh) => [
+         q(0139),
+         q(0),
+         ],
+      q(mk) => [
+         q(0132),
+         q(0),
+         ],
+      q(ml) => [
+         q(0137),
+         q(0),
+         ],
+      q(mm) => [
+         q(0153),
+         q(0),
+         ],
+      q(mn) => [
+         q(0148),
+         q(0),
+         ],
+      q(mo) => [
+         q(0131),
+         q(0),
+         ],
+      q(mp) => [
+         q(0165),
+         q(0),
+         ],
+      q(mq) => [
+         q(0140),
+         q(0),
+         ],
+      q(mr) => [
+         q(0141),
+         q(0),
+         ],
+      q(ms) => [
+         q(0150),
+         q(0),
+         ],
+      q(mt) => [
+         q(0138),
+         q(0),
+         ],
+      q(mu) => [
+         q(0142),
+         q(0),
+         ],
+      q(mv) => [
+         q(0136),
+         q(0),
+         ],
+      q(mw) => [
+         q(0134),
+         q(0),
+         ],
+      q(mx) => [
+         q(0144),
+         q(0),
+         ],
+      q(my) => [
+         q(0135),
+         q(0),
+         ],
+      q(mz) => [
+         q(0152),
+         q(0),
+         ],
+      q(na) => [
+         q(0154),
+         q(0),
+         ],
+      q(nc) => [
+         q(0158),
+         q(0),
+         ],
+      q(ne) => [
+         q(0161),
+         q(0),
+         ],
+      q(nf) => [
+         q(0164),
+         q(0),
+         ],
+      q(ng) => [
+         q(0162),
+         q(0),
+         ],
+      q(ni) => [
+         q(0160),
+         q(0),
+         ],
+      q(nl) => [
+         q(0157),
+         q(0),
+         ],
+      q(no) => [
+         q(0166),
+         q(0),
+         ],
+      q(np) => [
+         q(0156),
+         q(0),
+         ],
+      q(nr) => [
+         q(0155),
+         q(0),
+         ],
+      q(nu) => [
+         q(0163),
+         q(0),
+         ],
+      q(nz) => [
+         q(0159),
+         q(0),
+         ],
+      q(om) => [
+         q(0167),
+         q(0),
+         ],
+      q(pa) => [
+         q(0171),
+         q(0),
+         ],
+      q(pe) => [
+         q(0174),
+         q(0),
+         ],
+      q(pf) => [
+         q(0078),
+         q(0),
+         ],
+      q(pg) => [
+         q(0172),
+         q(0),
+         ],
+      q(ph) => [
+         q(0175),
+         q(0),
+         ],
+      q(pk) => [
+         q(0168),
+         q(0),
+         ],
+      q(pl) => [
+         q(0177),
+         q(0),
+         ],
+      q(pm) => [
+         q(0190),
+         q(0),
+         ],
+      q(pn) => [
+         q(0176),
+         q(0),
+         ],
+      q(pr) => [
+         q(0179),
+         q(0),
+         ],
+      q(ps) => [
+         q(0170),
+         q(0),
+         ],
+      q(pt) => [
+         q(0178),
+         q(0),
+         ],
+      q(pw) => [
+         q(0169),
+         q(0),
+         ],
+      q(py) => [
+         q(0173),
+         q(0),
+         ],
+      q(qa) => [
+         q(0180),
+         q(0),
+         ],
+      q(re) => [
+         q(0181),
+         q(0),
+         ],
+      q(ro) => [
+         q(0182),
+         q(0),
+         ],
+      q(rs) => [
+         q(0197),
+         q(0),
+         ],
+      q(ru) => [
+         q(0183),
+         q(0),
+         ],
+      q(rw) => [
+         q(0184),
+         q(0),
+         ],
+      q(sa) => [
+         q(0195),
+         q(0),
+         ],
+      q(sb) => [
+         q(0204),
+         q(0),
+         ],
+      q(sc) => [
+         q(0198),
+         q(0),
+         ],
+      q(sd) => [
+         q(0211),
+         q(0),
+         ],
+      q(se) => [
+         q(0215),
+         q(0),
+         ],
+      q(sg) => [
+         q(0200),
+         q(0),
+         ],
+      q(sh) => [
+         q(0186),
+         q(0),
+         ],
+      q(si) => [
+         q(0203),
+         q(0),
+         ],
+      q(sj) => [
+         q(0213),
+         q(0),
+         ],
+      q(sk) => [
+         q(0202),
+         q(0),
+         ],
+      q(sl) => [
+         q(0199),
+         q(0),
+         ],
+      q(sm) => [
+         q(0193),
+         q(0),
+         ],
+      q(sn) => [
+         q(0196),
+         q(0),
+         ],
+      q(so) => [
+         q(0205),
+         q(0),
+         ],
+      q(sr) => [
+         q(0212),
+         q(0),
+         ],
+      q(ss) => [
+         q(0208),
+         q(0),
+         ],
+      q(st) => [
+         q(0194),
+         q(0),
+         ],
+      q(su) => [
+         q(0293),
+         q(0),
+         ],
+      q(sv) => [
+         q(0067),
+         q(0),
+         ],
+      q(sx) => [
+         q(0201),
+         q(0),
+         ],
+      q(sy) => [
+         q(0217),
+         q(0),
+         ],
+      q(sz) => [
+         q(0214),
+         q(0),
+         ],
+      q(tc) => [
+         q(0230),
+         q(0),
+         ],
+      q(td) => [
+         q(0044),
+         q(0),
+         ],
+      q(tf) => [
+         q(0079),
+         q(0),
+         ],
+      q(tg) => [
+         q(0223),
+         q(0),
+         ],
+      q(th) => [
+         q(0221),
+         q(0),
+         ],
+      q(tj) => [
+         q(0219),
+         q(0),
+         ],
+      q(tk) => [
+         q(0224),
+         q(0),
+         ],
+      q(tl) => [
+         q(0222),
+         q(0),
+         ],
+      q(tm) => [
+         q(0229),
+         q(0),
+         ],
+      q(tn) => [
+         q(0227),
+         q(0),
+         ],
+      q(to) => [
+         q(0225),
+         q(0),
+         ],
+      q(tp) => [
+         q(0222),
+         q(1),
+         ],
+      q(tr) => [
+         q(0228),
+         q(0),
+         ],
+      q(tt) => [
+         q(0226),
+         q(0),
+         ],
+      q(tv) => [
+         q(0231),
+         q(0),
+         ],
+      q(tw) => [
+         q(0218),
+         q(0),
+         ],
+      q(tz) => [
+         q(0220),
+         q(0),
+         ],
+      q(ua) => [
+         q(0233),
+         q(0),
+         ],
+      q(ug) => [
+         q(0232),
+         q(0),
+         ],
+      q(uk) => [
+         q(0235),
+         q(0),
+         ],
+      q(um) => [
+         q(0237),
+         q(0),
+         ],
+      q(us) => [
+         q(0236),
+         q(0),
+         ],
+      q(uy) => [
+         q(0238),
+         q(0),
+         ],
+      q(uz) => [
+         q(0239),
+         q(0),
+         ],
+      q(va) => [
+         q(0098),
+         q(0),
+         ],
+      q(vc) => [
+         q(0191),
+         q(0),
+         ],
+      q(ve) => [
+         q(0241),
+         q(0),
+         ],
+      q(vg) => [
+         q(0243),
+         q(0),
+         ],
+      q(vi) => [
+         q(0244),
+         q(0),
+         ],
+      q(vn) => [
+         q(0242),
+         q(0),
+         ],
+      q(vu) => [
+         q(0240),
+         q(0),
+         ],
+      q(wf) => [
+         q(0245),
+         q(0),
+         ],
+      q(ws) => [
+         q(0192),
+         q(0),
+         ],
+      q(ye) => [
+         q(0247),
+         q(0),
+         ],
+      q(yt) => [
+         q(0143),
+         q(0),
+         ],
+      q(za) => [
+         q(0206),
+         q(0),
+         ],
+      q(zm) => [
+         q(0248),
+         q(0),
+         ],
+      q(zw) => [
+         q(0249),
+         q(0),
+         ],
+      },
+   q(fips-10) => {
+      q(AA) => [
+         q(0013),
+         q(0),
+         ],
+      q(AC) => [
+         q(0010),
+         q(0),
+         ],
+      q(AE) => [
+         q(0234),
+         q(0),
+         ],
+      q(AF) => [
+         q(0001),
+         q(0),
+         ],
+      q(AG) => [
+         q(0004),
+         q(0),
+         ],
+      q(AJ) => [
+         q(0016),
+         q(0),
+         ],
+      q(AL) => [
+         q(0003),
+         q(0),
+         ],
+      q(AM) => [
+         q(0012),
+         q(0),
+         ],
+      q(AN) => [
+         q(0006),
+         q(0),
+         ],
+      q(AO) => [
+         q(0007),
+         q(0),
+         ],
+      q(AQ) => [
+         q(0005),
+         q(0),
+         ],
+      q(AR) => [
+         q(0011),
+         q(0),
+         ],
+      q(AS) => [
+         q(0014),
+         q(0),
+         ],
+      q(AT) => [
+         q(0253),
+         q(0),
+         ],
+      q(AU) => [
+         q(0015),
+         q(0),
+         ],
+      q(AV) => [
+         q(0008),
+         q(0),
+         ],
+      q(AX) => [
+         q(0252),
+         q(0),
+         ],
+      q(AY) => [
+         q(0009),
+         q(0),
+         ],
+      q(BA) => [
+         q(0018),
+         q(0),
+         ],
+      q(BB) => [
+         q(0020),
+         q(0),
+         ],
+      q(BC) => [
+         q(0030),
+         q(0),
+         ],
+      q(BD) => [
+         q(0025),
+         q(0),
+         ],
+      q(BE) => [
+         q(0022),
+         q(0),
+         ],
+      q(BF) => [
+         q(0017),
+         q(1),
+         ],
+      q(BG) => [
+         q(0019),
+         q(0),
+         ],
+      q(BH) => [
+         q(0023),
+         q(0),
+         ],
+      q(BK) => [
+         q(0029),
+         q(0),
+         ],
+      q(BL) => [
+         q(0027),
+         q(2),
+         ],
+      q(BM) => [
+         q(0153),
+         q(1),
+         ],
+      q(BN) => [
+         q(0024),
+         q(0),
+         ],
+      q(BO) => [
+         q(0021),
+         q(0),
+         ],
+      q(BP) => [
+         q(0204),
+         q(0),
+         ],
+      q(BQ) => [
+         q(0277),
+         q(0),
+         ],
+      q(BR) => [
+         q(0032),
+         q(0),
+         ],
+      q(BS) => [
+         q(0255),
+         q(0),
+         ],
+      q(BT) => [
+         q(0026),
+         q(0),
+         ],
+      q(BU) => [
+         q(0035),
+         q(0),
+         ],
+      q(BV) => [
+         q(0031),
+         q(0),
+         ],
+      q(BX) => [
+         q(0034),
+         q(1),
+         ],
+      q(BY) => [
+         q(0037),
+         q(0),
+         ],
+      q(CA) => [
+         q(0040),
+         q(0),
+         ],
+      q(CB) => [
+         q(0038),
+         q(0),
+         ],
+      q(CD) => [
+         q(0044),
+         q(0),
+         ],
+      q(CE) => [
+         q(0210),
+         q(0),
+         ],
+      q(CF) => [
+         q(0051),
+         q(1),
+         ],
+      q(CG) => [
+         q(0257),
+         q(0),
+         ],
+      q(CH) => [
+         q(0046),
+         q(0),
+         ],
+      q(CI) => [
+         q(0045),
+         q(0),
+         ],
+      q(CJ) => [
+         q(0042),
+         q(0),
+         ],
+      q(CK) => [
+         q(0048),
+         q(0),
+         ],
+      q(CM) => [
+         q(0039),
+         q(0),
+         ],
+      q(CN) => [
+         q(0050),
+         q(0),
+         ],
+      q(CO) => [
+         q(0049),
+         q(0),
+         ],
+      q(CQ) => [
+         q(0165),
+         q(0),
+         ],
+      q(CR) => [
+         q(0258),
+         q(0),
+         ],
+      q(CS) => [
+         q(0054),
+         q(0),
+         ],
+      q(CT) => [
+         q(0043),
+         q(0),
+         ],
+      q(CU) => [
+         q(0057),
+         q(0),
+         ],
+      q(CV) => [
+         q(0041),
+         q(0),
+         ],
+      q(CW) => [
+         q(0053),
+         q(0),
+         ],
+      q(CY) => [
+         q(0059),
+         q(0),
+         ],
+      q(DA) => [
+         q(0061),
+         q(0),
+         ],
+      q(DJ) => [
+         q(0062),
+         q(0),
+         ],
+      q(DO) => [
+         q(0063),
+         q(0),
+         ],
+      q(DQ) => [
+         q(0267),
+         q(0),
+         ],
+      q(DR) => [
+         q(0064),
+         q(0),
+         ],
+      q(DX) => [
+         q(0259),
+         q(0),
+         ],
+      q(EC) => [
+         q(0065),
+         q(0),
+         ],
+      q(EG) => [
+         q(0066),
+         q(0),
+         ],
+      q(EI) => [
+         q(0107),
+         q(0),
+         ],
+      q(EK) => [
+         q(0068),
+         q(0),
+         ],
+      q(EN) => [
+         q(0070),
+         q(0),
+         ],
+      q(ER) => [
+         q(0069),
+         q(0),
+         ],
+      q(ES) => [
+         q(0067),
+         q(0),
+         ],
+      q(ET) => [
+         q(0071),
+         q(0),
+         ],
+      q(EU) => [
+         q(0261),
+         q(0),
+         ],
+      q(EZ) => [
+         q(0060),
+         q(0),
+         ],
+      q(FG) => [
+         q(0077),
+         q(0),
+         ],
+      q(FI) => [
+         q(0075),
+         q(0),
+         ],
+      q(FJ) => [
+         q(0074),
+         q(0),
+         ],
+      q(FK) => [
+         q(0072),
+         q(1),
+         ],
+      q(FM) => [
+         q(0145),
+         q(0),
+         ],
+      q(FO) => [
+         q(0073),
+         q(0),
+         ],
+      q(FP) => [
+         q(0078),
+         q(0),
+         ],
+      q(FQ) => [
+         q(0254),
+         q(0),
+         ],
+      q(FR) => [
+         q(0076),
+         q(0),
+         ],
+      q(FS) => [
+         q(0079),
+         q(1),
+         ],
+      q(GA) => [
+         q(0081),
+         q(1),
+         ],
+      q(GB) => [
+         q(0080),
+         q(0),
+         ],
+      q(GG) => [
+         q(0082),
+         q(0),
+         ],
+      q(GH) => [
+         q(0084),
+         q(0),
+         ],
+      q(GI) => [
+         q(0085),
+         q(0),
+         ],
+      q(GJ) => [
+         q(0088),
+         q(0),
+         ],
+      q(GK) => [
+         q(0092),
+         q(0),
+         ],
+      q(GL) => [
+         q(0087),
+         q(0),
+         ],
+      q(GM) => [
+         q(0083),
+         q(0),
+         ],
+      q(GO) => [
+         q(0263),
+         q(0),
+         ],
+      q(GP) => [
+         q(0089),
+         q(0),
+         ],
+      q(GQ) => [
+         q(0090),
+         q(0),
+         ],
+      q(GR) => [
+         q(0086),
+         q(0),
+         ],
+      q(GT) => [
+         q(0091),
+         q(0),
+         ],
+      q(GV) => [
+         q(0093),
+         q(0),
+         ],
+      q(GY) => [
+         q(0095),
+         q(0),
+         ],
+      q(GZ) => [
+         q(0262),
+         q(0),
+         ],
+      q(HA) => [
+         q(0096),
+         q(0),
+         ],
+      q(HK) => [
+         q(0100),
+         q(0),
+         ],
+      q(HM) => [
+         q(0264),
+         q(0),
+         ],
+      q(HO) => [
+         q(0099),
+         q(0),
+         ],
+      q(HQ) => [
+         q(0265),
+         q(0),
+         ],
+      q(HR) => [
+         q(0056),
+         q(0),
+         ],
+      q(HU) => [
+         q(0101),
+         q(0),
+         ],
+      q(IC) => [
+         q(0102),
+         q(0),
+         ],
+      q(ID) => [
+         q(0104),
+         q(0),
+         ],
+      q(IM) => [
+         q(0108),
+         q(0),
+         ],
+      q(IN) => [
+         q(0103),
+         q(0),
+         ],
+      q(IO) => [
+         q(0033),
+         q(0),
+         ],
+      q(IP) => [
+         q(0256),
+         q(0),
+         ],
+      q(IR) => [
+         q(0105),
+         q(2),
+         ],
+      q(IS) => [
+         q(0109),
+         q(0),
+         ],
+      q(IT) => [
+         q(0110),
+         q(0),
+         ],
+      q(IV) => [
+         q(0055),
+         q(0),
+         ],
+      q(IZ) => [
+         q(0106),
+         q(0),
+         ],
+      q(JA) => [
+         q(0112),
+         q(0),
+         ],
+      q(JE) => [
+         q(0113),
+         q(0),
+         ],
+      q(JM) => [
+         q(0111),
+         q(0),
+         ],
+      q(JN) => [
+         q(0266),
+         q(0),
+         ],
+      q(JO) => [
+         q(0114),
+         q(0),
+         ],
+      q(JQ) => [
+         q(0268),
+         q(0),
+         ],
+      q(JU) => [
+         q(0269),
+         q(0),
+         ],
+      q(KE) => [
+         q(0116),
+         q(0),
+         ],
+      q(KG) => [
+         q(0121),
+         q(0),
+         ],
+      q(KN) => [
+         q(0271),
+         q(0),
+         ],
+      q(KQ) => [
+         q(0270),
+         q(0),
+         ],
+      q(KR) => [
+         q(0117),
+         q(0),
+         ],
+      q(KS) => [
+         q(0272),
+         q(0),
+         ],
+      q(KT) => [
+         q(0047),
+         q(0),
+         ],
+      q(KU) => [
+         q(0120),
+         q(0),
+         ],
+      q(KV) => [
+         q(0273),
+         q(0),
+         ],
+      q(KZ) => [
+         q(0115),
+         q(0),
+         ],
+      q(LA) => [
+         q(0274),
+         q(0),
+         ],
+      q(LE) => [
+         q(0124),
+         q(0),
+         ],
+      q(LG) => [
+         q(0123),
+         q(0),
+         ],
+      q(LH) => [
+         q(0129),
+         q(0),
+         ],
+      q(LI) => [
+         q(0126),
+         q(0),
+         ],
+      q(LO) => [
+         q(0202),
+         q(0),
+         ],
+      q(LQ) => [
+         q(0278),
+         q(0),
+         ],
+      q(LS) => [
+         q(0128),
+         q(0),
+         ],
+      q(LT) => [
+         q(0125),
+         q(0),
+         ],
+      q(LU) => [
+         q(0130),
+         q(0),
+         ],
+      q(LY) => [
+         q(0127),
+         q(0),
+         ],
+      q(MA) => [
+         q(0133),
+         q(0),
+         ],
+      q(MB) => [
+         q(0140),
+         q(0),
+         ],
+      q(MC) => [
+         q(0131),
+         q(2),
+         ],
+      q(MD) => [
+         q(0276),
+         q(0),
+         ],
+      q(MF) => [
+         q(0143),
+         q(0),
+         ],
+      q(MG) => [
+         q(0148),
+         q(0),
+         ],
+      q(MH) => [
+         q(0150),
+         q(0),
+         ],
+      q(MI) => [
+         q(0134),
+         q(0),
+         ],
+      q(MJ) => [
+         q(0149),
+         q(0),
+         ],
+      q(MK) => [
+         q(0132),
+         q(2),
+         ],
+      q(ML) => [
+         q(0137),
+         q(0),
+         ],
+      q(MN) => [
+         q(0147),
+         q(0),
+         ],
+      q(MO) => [
+         q(0151),
+         q(0),
+         ],
+      q(MP) => [
+         q(0142),
+         q(0),
+         ],
+      q(MQ) => [
+         q(0275),
+         q(0),
+         ],
+      q(MR) => [
+         q(0141),
+         q(0),
+         ],
+      q(MT) => [
+         q(0138),
+         q(0),
+         ],
+      q(MU) => [
+         q(0167),
+         q(0),
+         ],
+      q(MV) => [
+         q(0136),
+         q(0),
+         ],
+      q(MX) => [
+         q(0144),
+         q(0),
+         ],
+      q(MY) => [
+         q(0135),
+         q(0),
+         ],
+      q(MZ) => [
+         q(0152),
+         q(0),
+         ],
+      q(NC) => [
+         q(0158),
+         q(0),
+         ],
+      q(NE) => [
+         q(0163),
+         q(0),
+         ],
+      q(NF) => [
+         q(0164),
+         q(0),
+         ],
+      q(NG) => [
+         q(0161),
+         q(0),
+         ],
+      q(NH) => [
+         q(0240),
+         q(0),
+         ],
+      q(NI) => [
+         q(0162),
+         q(0),
+         ],
+      q(NL) => [
+         q(0157),
+         q(0),
+         ],
+      q(NN) => [
+         q(0282),
+         q(0),
+         ],
+      q(NO) => [
+         q(0166),
+         q(0),
+         ],
+      q(NP) => [
+         q(0156),
+         q(0),
+         ],
+      q(NR) => [
+         q(0155),
+         q(0),
+         ],
+      q(NS) => [
+         q(0212),
+         q(0),
+         ],
+      q(NU) => [
+         q(0160),
+         q(0),
+         ],
+      q(NZ) => [
+         q(0159),
+         q(0),
+         ],
+      q(OD) => [
+         q(0208),
+         q(0),
+         ],
+      q(PA) => [
+         q(0173),
+         q(0),
+         ],
+      q(PC) => [
+         q(0176),
+         q(1),
+         ],
+      q(PE) => [
+         q(0174),
+         q(0),
+         ],
+      q(PF) => [
+         q(0279),
+         q(0),
+         ],
+      q(PG) => [
+         q(0284),
+         q(0),
+         ],
+      q(PJ) => [
+         q(0260),
+         q(0),
+         ],
+      q(PK) => [
+         q(0168),
+         q(0),
+         ],
+      q(PL) => [
+         q(0177),
+         q(0),
+         ],
+      q(PM) => [
+         q(0171),
+         q(0),
+         ],
+      q(PO) => [
+         q(0178),
+         q(0),
+         ],
+      q(PP) => [
+         q(0172),
+         q(0),
+         ],
+      q(PS) => [
+         q(0169),
+         q(0),
+         ],
+      q(PU) => [
+         q(0094),
+         q(0),
+         ],
+      q(QA) => [
+         q(0180),
+         q(0),
+         ],
+      q(RE) => [
+         q(0181),
+         q(0),
+         ],
+      q(RI) => [
+         q(0197),
+         q(0),
+         ],
+      q(RM) => [
+         q(0139),
+         q(0),
+         ],
+      q(RN) => [
+         q(0189),
+         q(2),
+         ],
+      q(RO) => [
+         q(0182),
+         q(0),
+         ],
+      q(RP) => [
+         q(0175),
+         q(0),
+         ],
+      q(RQ) => [
+         q(0179),
+         q(0),
+         ],
+      q(RS) => [
+         q(0280),
+         q(0),
+         ],
+      q(RW) => [
+         q(0184),
+         q(0),
+         ],
+      q(SA) => [
+         q(0195),
+         q(0),
+         ],
+      q(SB) => [
+         q(0190),
+         q(0),
+         ],
+      q(SC) => [
+         q(0187),
+         q(0),
+         ],
+      q(SE) => [
+         q(0198),
+         q(0),
+         ],
+      q(SF) => [
+         q(0206),
+         q(0),
+         ],
+      q(SG) => [
+         q(0196),
+         q(0),
+         ],
+      q(SH) => [
+         q(0281),
+         q(0),
+         ],
+      q(SI) => [
+         q(0203),
+         q(0),
+         ],
+      q(SL) => [
+         q(0199),
+         q(0),
+         ],
+      q(SM) => [
+         q(0193),
+         q(0),
+         ],
+      q(SN) => [
+         q(0200),
+         q(0),
+         ],
+      q(SO) => [
+         q(0205),
+         q(0),
+         ],
+      q(SP) => [
+         q(0209),
+         q(0),
+         ],
+      q(ST) => [
+         q(0188),
+         q(0),
+         ],
+      q(SU) => [
+         q(0211),
+         q(0),
+         ],
+      q(SV) => [
+         q(0285),
+         q(0),
+         ],
+      q(SW) => [
+         q(0215),
+         q(0),
+         ],
+      q(SX) => [
+         q(0283),
+         q(0),
+         ],
+      q(SY) => [
+         q(0217),
+         q(1),
+         ],
+      q(SZ) => [
+         q(0216),
+         q(0),
+         ],
+      q(TB) => [
+         q(0185),
+         q(0),
+         ],
+      q(TD) => [
+         q(0226),
+         q(0),
+         ],
+      q(TE) => [
+         q(0287),
+         q(0),
+         ],
+      q(TH) => [
+         q(0221),
+         q(0),
+         ],
+      q(TI) => [
+         q(0219),
+         q(0),
+         ],
+      q(TK) => [
+         q(0230),
+         q(0),
+         ],
+      q(TL) => [
+         q(0224),
+         q(0),
+         ],
+      q(TN) => [
+         q(0225),
+         q(0),
+         ],
+      q(TO) => [
+         q(0223),
+         q(0),
+         ],
+      q(TP) => [
+         q(0194),
+         q(0),
+         ],
+      q(TS) => [
+         q(0227),
+         q(0),
+         ],
+      q(TT) => [
+         q(0222),
+         q(0),
+         ],
+      q(TU) => [
+         q(0228),
+         q(0),
+         ],
+      q(TV) => [
+         q(0231),
+         q(0),
+         ],
+      q(TW) => [
+         q(0218),
+         q(1),
+         ],
+      q(TX) => [
+         q(0229),
+         q(0),
+         ],
+      q(TZ) => [
+         q(0286),
+         q(0),
+         ],
+      q(UC) => [
+         q(0058),
+         q(0),
+         ],
+      q(UG) => [
+         q(0232),
+         q(0),
+         ],
+      q(UK) => [
+         q(0235),
+         q(0),
+         ],
+      q(UP) => [
+         q(0233),
+         q(0),
+         ],
+      q(US) => [
+         q(0236),
+         q(0),
+         ],
+      q(UV) => [
+         q(0036),
+         q(0),
+         ],
+      q(UY) => [
+         q(0238),
+         q(0),
+         ],
+      q(UZ) => [
+         q(0239),
+         q(0),
+         ],
+      q(VC) => [
+         q(0191),
+         q(0),
+         ],
+      q(VE) => [
+         q(0241),
+         q(2),
+         ],
+      q(VI) => [
+         q(0243),
+         q(0),
+         ],
+      q(VM) => [
+         q(0242),
+         q(1),
+         ],
+      q(VQ) => [
+         q(0244),
+         q(0),
+         ],
+      q(VT) => [
+         q(0098),
+         q(2),
+         ],
+      q(WA) => [
+         q(0154),
+         q(0),
+         ],
+      q(WE) => [
+         q(0289),
+         q(0),
+         ],
+      q(WF) => [
+         q(0245),
+         q(0),
+         ],
+      q(WI) => [
+         q(0246),
+         q(0),
+         ],
+      q(WQ) => [
+         q(0288),
+         q(0),
+         ],
+      q(WS) => [
+         q(0192),
+         q(0),
+         ],
+      q(WZ) => [
+         q(0214),
+         q(0),
+         ],
+      q(YM) => [
+         q(0247),
+         q(0),
+         ],
+      q(ZA) => [
+         q(0248),
+         q(0),
+         ],
+      q(ZI) => [
+         q(0249),
+         q(0),
+         ],
+      },
+   q(numeric) => {
+      q(004) => [
+         q(0001),
+         q(0),
+         ],
+      q(008) => [
+         q(0003),
+         q(0),
+         ],
+      q(012) => [
+         q(0004),
+         q(0),
+         ],
+      q(016) => [
+         q(0005),
+         q(0),
+         ],
+      q(020) => [
+         q(0006),
+         q(0),
+         ],
+      q(024) => [
+         q(0007),
+         q(0),
+         ],
+      q(028) => [
+         q(0010),
+         q(0),
+         ],
+      q(031) => [
+         q(0016),
+         q(0),
+         ],
+      q(032) => [
+         q(0011),
+         q(0),
+         ],
+      q(036) => [
+         q(0014),
+         q(0),
+         ],
+      q(040) => [
+         q(0015),
+         q(0),
+         ],
+      q(044) => [
+         q(0017),
+         q(0),
+         ],
+      q(048) => [
+         q(0018),
+         q(0),
+         ],
+      q(050) => [
+         q(0019),
+         q(0),
+         ],
+      q(051) => [
+         q(0012),
+         q(0),
+         ],
+      q(052) => [
+         q(0020),
+         q(0),
+         ],
+      q(056) => [
+         q(0022),
+         q(0),
+         ],
+      q(060) => [
+         q(0025),
+         q(0),
+         ],
+      q(064) => [
+         q(0026),
+         q(0),
+         ],
+      q(068) => [
+         q(0027),
+         q(1),
+         ],
+      q(070) => [
+         q(0029),
+         q(0),
+         ],
+      q(072) => [
+         q(0030),
+         q(0),
+         ],
+      q(076) => [
+         q(0032),
+         q(0),
+         ],
+      q(084) => [
+         q(0023),
+         q(0),
+         ],
+      q(090) => [
+         q(0204),
+         q(0),
+         ],
+      q(092) => [
+         q(0243),
+         q(1),
+         ],
+      q(096) => [
+         q(0034),
+         q(0),
+         ],
+      q(100) => [
+         q(0035),
+         q(0),
+         ],
+      q(104) => [
+         q(0153),
+         q(0),
+         ],
+      q(108) => [
+         q(0037),
+         q(0),
+         ],
+      q(112) => [
+         q(0021),
+         q(0),
+         ],
+      q(116) => [
+         q(0038),
+         q(0),
+         ],
+      q(120) => [
+         q(0039),
+         q(0),
+         ],
+      q(124) => [
+         q(0040),
+         q(0),
+         ],
+      q(132) => [
+         q(0041),
+         q(0),
+         ],
+      q(136) => [
+         q(0042),
+         q(0),
+         ],
+      q(140) => [
+         q(0043),
+         q(0),
+         ],
+      q(144) => [
+         q(0210),
+         q(0),
+         ],
+      q(148) => [
+         q(0044),
+         q(0),
+         ],
+      q(152) => [
+         q(0045),
+         q(0),
+         ],
+      q(156) => [
+         q(0046),
+         q(0),
+         ],
+      q(170) => [
+         q(0049),
+         q(0),
+         ],
+      q(174) => [
+         q(0050),
+         q(0),
+         ],
+      q(175) => [
+         q(0143),
+         q(0),
+         ],
+      q(178) => [
+         q(0051),
+         q(0),
+         ],
+      q(180) => [
+         q(0052),
+         q(1),
+         ],
+      q(184) => [
+         q(0053),
+         q(0),
+         ],
+      q(188) => [
+         q(0054),
+         q(0),
+         ],
+      q(191) => [
+         q(0056),
+         q(0),
+         ],
+      q(192) => [
+         q(0057),
+         q(0),
+         ],
+      q(196) => [
+         q(0059),
+         q(0),
+         ],
+      q(203) => [
+         q(0060),
+         q(0),
+         ],
+      q(204) => [
+         q(0024),
+         q(0),
+         ],
+      q(208) => [
+         q(0061),
+         q(0),
+         ],
+      q(212) => [
+         q(0063),
+         q(0),
+         ],
+      q(214) => [
+         q(0064),
+         q(0),
+         ],
+      q(218) => [
+         q(0065),
+         q(0),
+         ],
+      q(222) => [
+         q(0067),
+         q(0),
+         ],
+      q(226) => [
+         q(0068),
+         q(0),
+         ],
+      q(231) => [
+         q(0071),
+         q(0),
+         ],
+      q(232) => [
+         q(0069),
+         q(0),
+         ],
+      q(233) => [
+         q(0070),
+         q(0),
+         ],
+      q(234) => [
+         q(0073),
+         q(1),
+         ],
+      q(238) => [
+         q(0072),
+         q(0),
+         ],
+      q(242) => [
+         q(0074),
+         q(0),
+         ],
+      q(246) => [
+         q(0075),
+         q(0),
+         ],
+      q(248) => [
+         q(0002),
+         q(0),
+         ],
+      q(250) => [
+         q(0076),
+         q(0),
+         ],
+      q(254) => [
+         q(0077),
+         q(0),
+         ],
+      q(258) => [
+         q(0078),
+         q(0),
+         ],
+      q(262) => [
+         q(0062),
+         q(0),
+         ],
+      q(266) => [
+         q(0080),
+         q(0),
+         ],
+      q(268) => [
+         q(0082),
+         q(0),
+         ],
+      q(270) => [
+         q(0081),
+         q(0),
+         ],
+      q(275) => [
+         q(0170),
+         q(1),
+         ],
+      q(276) => [
+         q(0083),
+         q(0),
+         ],
+      q(288) => [
+         q(0084),
+         q(0),
+         ],
+      q(292) => [
+         q(0085),
+         q(0),
+         ],
+      q(296) => [
+         q(0117),
+         q(0),
+         ],
+      q(300) => [
+         q(0086),
+         q(0),
+         ],
+      q(304) => [
+         q(0087),
+         q(0),
+         ],
+      q(308) => [
+         q(0088),
+         q(0),
+         ],
+      q(312) => [
+         q(0089),
+         q(0),
+         ],
+      q(316) => [
+         q(0090),
+         q(0),
+         ],
+      q(320) => [
+         q(0091),
+         q(0),
+         ],
+      q(324) => [
+         q(0093),
+         q(0),
+         ],
+      q(328) => [
+         q(0095),
+         q(0),
+         ],
+      q(332) => [
+         q(0096),
+         q(0),
+         ],
+      q(336) => [
+         q(0098),
+         q(1),
+         ],
+      q(340) => [
+         q(0099),
+         q(0),
+         ],
+      q(344) => [
+         q(0100),
+         q(1),
+         ],
+      q(348) => [
+         q(0101),
+         q(0),
+         ],
+      q(352) => [
+         q(0102),
+         q(0),
+         ],
+      q(356) => [
+         q(0103),
+         q(0),
+         ],
+      q(360) => [
+         q(0104),
+         q(0),
+         ],
+      q(364) => [
+         q(0105),
+         q(1),
+         ],
+      q(368) => [
+         q(0106),
+         q(0),
+         ],
+      q(372) => [
+         q(0107),
+         q(0),
+         ],
+      q(376) => [
+         q(0109),
+         q(0),
+         ],
+      q(380) => [
+         q(0110),
+         q(0),
+         ],
+      q(384) => [
+         q(0055),
+         q(0),
+         ],
+      q(388) => [
+         q(0111),
+         q(0),
+         ],
+      q(392) => [
+         q(0112),
+         q(0),
+         ],
+      q(398) => [
+         q(0115),
+         q(0),
+         ],
+      q(400) => [
+         q(0114),
+         q(0),
+         ],
+      q(404) => [
+         q(0116),
+         q(0),
+         ],
+      q(408) => [
+         q(0118),
+         q(1),
+         ],
+      q(410) => [
+         q(0119),
+         q(1),
+         ],
+      q(414) => [
+         q(0120),
+         q(0),
+         ],
+      q(417) => [
+         q(0121),
+         q(0),
+         ],
+      q(418) => [
+         q(0122),
+         q(0),
+         ],
+      q(422) => [
+         q(0124),
+         q(0),
+         ],
+      q(426) => [
+         q(0125),
+         q(0),
+         ],
+      q(428) => [
+         q(0123),
+         q(0),
+         ],
+      q(430) => [
+         q(0126),
+         q(0),
+         ],
+      q(434) => [
+         q(0127),
+         q(0),
+         ],
+      q(438) => [
+         q(0128),
+         q(0),
+         ],
+      q(440) => [
+         q(0129),
+         q(0),
+         ],
+      q(442) => [
+         q(0130),
+         q(0),
+         ],
+      q(446) => [
+         q(0131),
+         q(1),
+         ],
+      q(450) => [
+         q(0133),
+         q(0),
+         ],
+      q(454) => [
+         q(0134),
+         q(0),
+         ],
+      q(458) => [
+         q(0135),
+         q(0),
+         ],
+      q(462) => [
+         q(0136),
+         q(0),
+         ],
+      q(466) => [
+         q(0137),
+         q(0),
+         ],
+      q(470) => [
+         q(0138),
+         q(0),
+         ],
+      q(474) => [
+         q(0140),
+         q(0),
+         ],
+      q(478) => [
+         q(0141),
+         q(0),
+         ],
+      q(480) => [
+         q(0142),
+         q(0),
+         ],
+      q(484) => [
+         q(0144),
+         q(0),
+         ],
+      q(492) => [
+         q(0147),
+         q(0),
+         ],
+      q(496) => [
+         q(0148),
+         q(0),
+         ],
+      q(498) => [
+         q(0146),
+         q(1),
+         ],
+      q(499) => [
+         q(0149),
+         q(0),
+         ],
+      q(500) => [
+         q(0150),
+         q(0),
+         ],
+      q(504) => [
+         q(0151),
+         q(0),
+         ],
+      q(508) => [
+         q(0152),
+         q(0),
+         ],
+      q(512) => [
+         q(0167),
+         q(0),
+         ],
+      q(516) => [
+         q(0154),
+         q(0),
+         ],
+      q(520) => [
+         q(0155),
+         q(0),
+         ],
+      q(524) => [
+         q(0156),
+         q(0),
+         ],
+      q(528) => [
+         q(0157),
+         q(0),
+         ],
+      q(531) => [
+         q(0058),
+         q(0),
+         ],
+      q(533) => [
+         q(0013),
+         q(0),
+         ],
+      q(534) => [
+         q(0201),
+         q(0),
+         ],
+      q(535) => [
+         q(0028),
+         q(0),
+         ],
+      q(540) => [
+         q(0158),
+         q(0),
+         ],
+      q(548) => [
+         q(0240),
+         q(0),
+         ],
+      q(554) => [
+         q(0159),
+         q(0),
+         ],
+      q(558) => [
+         q(0160),
+         q(0),
+         ],
+      q(562) => [
+         q(0161),
+         q(0),
+         ],
+      q(566) => [
+         q(0162),
+         q(0),
+         ],
+      q(570) => [
+         q(0163),
+         q(0),
+         ],
+      q(574) => [
+         q(0164),
+         q(0),
+         ],
+      q(578) => [
+         q(0166),
+         q(0),
+         ],
+      q(580) => [
+         q(0165),
+         q(0),
+         ],
+      q(583) => [
+         q(0145),
+         q(1),
+         ],
+      q(584) => [
+         q(0139),
+         q(0),
+         ],
+      q(585) => [
+         q(0169),
+         q(0),
+         ],
+      q(586) => [
+         q(0168),
+         q(0),
+         ],
+      q(591) => [
+         q(0171),
+         q(0),
+         ],
+      q(598) => [
+         q(0172),
+         q(0),
+         ],
+      q(600) => [
+         q(0173),
+         q(0),
+         ],
+      q(604) => [
+         q(0174),
+         q(0),
+         ],
+      q(608) => [
+         q(0175),
+         q(0),
+         ],
+      q(612) => [
+         q(0176),
+         q(0),
+         ],
+      q(616) => [
+         q(0177),
+         q(0),
+         ],
+      q(620) => [
+         q(0178),
+         q(0),
+         ],
+      q(624) => [
+         q(0094),
+         q(0),
+         ],
+      q(626) => [
+         q(0222),
+         q(0),
+         ],
+      q(630) => [
+         q(0179),
+         q(0),
+         ],
+      q(634) => [
+         q(0180),
+         q(0),
+         ],
+      q(638) => [
+         q(0181),
+         q(0),
+         ],
+      q(642) => [
+         q(0182),
+         q(0),
+         ],
+      q(643) => [
+         q(0183),
+         q(0),
+         ],
+      q(646) => [
+         q(0184),
+         q(0),
+         ],
+      q(652) => [
+         q(0185),
+         q(1),
+         ],
+      q(654) => [
+         q(0186),
+         q(1),
+         ],
+      q(659) => [
+         q(0187),
+         q(0),
+         ],
+      q(660) => [
+         q(0008),
+         q(0),
+         ],
+      q(662) => [
+         q(0188),
+         q(0),
+         ],
+      q(663) => [
+         q(0189),
+         q(1),
+         ],
+      q(666) => [
+         q(0190),
+         q(0),
+         ],
+      q(670) => [
+         q(0191),
+         q(0),
+         ],
+      q(674) => [
+         q(0193),
+         q(0),
+         ],
+      q(678) => [
+         q(0194),
+         q(0),
+         ],
+      q(680) => [
+         q(0251),
+         q(0),
+         ],
+      q(682) => [
+         q(0195),
+         q(0),
+         ],
+      q(686) => [
+         q(0196),
+         q(0),
+         ],
+      q(688) => [
+         q(0197),
+         q(0),
+         ],
+      q(690) => [
+         q(0198),
+         q(0),
+         ],
+      q(694) => [
+         q(0199),
+         q(0),
+         ],
+      q(702) => [
+         q(0200),
+         q(0),
+         ],
+      q(703) => [
+         q(0202),
+         q(0),
+         ],
+      q(704) => [
+         q(0242),
+         q(0),
+         ],
+      q(705) => [
+         q(0203),
+         q(0),
+         ],
+      q(706) => [
+         q(0205),
+         q(0),
+         ],
+      q(710) => [
+         q(0206),
+         q(0),
+         ],
+      q(716) => [
+         q(0249),
+         q(0),
+         ],
+      q(724) => [
+         q(0209),
+         q(0),
+         ],
+      q(728) => [
+         q(0208),
+         q(0),
+         ],
+      q(729) => [
+         q(0211),
+         q(0),
+         ],
+      q(732) => [
+         q(0246),
+         q(0),
+         ],
+      q(740) => [
+         q(0212),
+         q(0),
+         ],
+      q(744) => [
+         q(0213),
+         q(1),
+         ],
+      q(748) => [
+         q(0214),
+         q(0),
+         ],
+      q(752) => [
+         q(0215),
+         q(0),
+         ],
+      q(756) => [
+         q(0216),
+         q(0),
+         ],
+      q(760) => [
+         q(0217),
+         q(0),
+         ],
+      q(762) => [
+         q(0219),
+         q(0),
+         ],
+      q(764) => [
+         q(0221),
+         q(0),
+         ],
+      q(768) => [
+         q(0223),
+         q(0),
+         ],
+      q(772) => [
+         q(0224),
+         q(0),
+         ],
+      q(776) => [
+         q(0225),
+         q(0),
+         ],
+      q(780) => [
+         q(0226),
+         q(0),
+         ],
+      q(784) => [
+         q(0234),
+         q(0),
+         ],
+      q(788) => [
+         q(0227),
+         q(0),
+         ],
+      q(792) => [
+         q(0228),
+         q(0),
+         ],
+      q(795) => [
+         q(0229),
+         q(0),
+         ],
+      q(796) => [
+         q(0230),
+         q(0),
+         ],
+      q(798) => [
+         q(0231),
+         q(0),
+         ],
+      q(800) => [
+         q(0232),
+         q(0),
+         ],
+      q(804) => [
+         q(0233),
+         q(0),
+         ],
+      q(807) => [
+         q(0132),
+         q(1),
+         ],
+      q(818) => [
+         q(0066),
+         q(0),
+         ],
+      q(826) => [
+         q(0235),
+         q(1),
+         ],
+      q(830) => [
+         q(0250),
+         q(0),
+         ],
+      q(831) => [
+         q(0092),
+         q(0),
+         ],
+      q(832) => [
+         q(0113),
+         q(0),
+         ],
+      q(833) => [
+         q(0108),
+         q(0),
+         ],
+      q(834) => [
+         q(0220),
+         q(1),
+         ],
+      q(840) => [
+         q(0236),
+         q(1),
+         ],
+      q(850) => [
+         q(0244),
+         q(1),
+         ],
+      q(854) => [
+         q(0036),
+         q(0),
+         ],
+      q(858) => [
+         q(0238),
+         q(0),
+         ],
+      q(860) => [
+         q(0239),
+         q(0),
+         ],
+      q(862) => [
+         q(0241),
+         q(1),
+         ],
+      q(876) => [
+         q(0245),
+         q(1),
+         ],
+      q(882) => [
+         q(0192),
+         q(0),
+         ],
+      q(887) => [
+         q(0247),
+         q(0),
+         ],
+      q(894) => [
+         q(0248),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'country'}{'id2code'} = {
+   q(alpha-2) => {
+      q(0001) => q(af),
+      q(0002) => q(ax),
+      q(0003) => q(al),
+      q(0004) => q(dz),
+      q(0005) => q(as),
+      q(0006) => q(ad),
+      q(0007) => q(ao),
+      q(0008) => q(ai),
+      q(0009) => q(aq),
+      q(0010) => q(ag),
+      q(0011) => q(ar),
+      q(0012) => q(am),
+      q(0013) => q(aw),
+      q(0014) => q(au),
+      q(0015) => q(at),
+      q(0016) => q(az),
+      q(0017) => q(bs),
+      q(0018) => q(bh),
+      q(0019) => q(bd),
+      q(0020) => q(bb),
+      q(0021) => q(by),
+      q(0022) => q(be),
+      q(0023) => q(bz),
+      q(0024) => q(bj),
+      q(0025) => q(bm),
+      q(0026) => q(bt),
+      q(0027) => q(bo),
+      q(0028) => q(bq),
+      q(0029) => q(ba),
+      q(0030) => q(bw),
+      q(0031) => q(bv),
+      q(0032) => q(br),
+      q(0033) => q(io),
+      q(0034) => q(bn),
+      q(0035) => q(bg),
+      q(0036) => q(bf),
+      q(0037) => q(bi),
+      q(0038) => q(kh),
+      q(0039) => q(cm),
+      q(0040) => q(ca),
+      q(0041) => q(cv),
+      q(0042) => q(ky),
+      q(0043) => q(cf),
+      q(0044) => q(td),
+      q(0045) => q(cl),
+      q(0046) => q(cn),
+      q(0047) => q(cx),
+      q(0048) => q(cc),
+      q(0049) => q(co),
+      q(0050) => q(km),
+      q(0051) => q(cg),
+      q(0052) => q(cd),
+      q(0053) => q(ck),
+      q(0054) => q(cr),
+      q(0055) => q(ci),
+      q(0056) => q(hr),
+      q(0057) => q(cu),
+      q(0058) => q(cw),
+      q(0059) => q(cy),
+      q(0060) => q(cz),
+      q(0061) => q(dk),
+      q(0062) => q(dj),
+      q(0063) => q(dm),
+      q(0064) => q(do),
+      q(0065) => q(ec),
+      q(0066) => q(eg),
+      q(0067) => q(sv),
+      q(0068) => q(gq),
+      q(0069) => q(er),
+      q(0070) => q(ee),
+      q(0071) => q(et),
+      q(0072) => q(fk),
+      q(0073) => q(fo),
+      q(0074) => q(fj),
+      q(0075) => q(fi),
+      q(0076) => q(fr),
+      q(0077) => q(gf),
+      q(0078) => q(pf),
+      q(0079) => q(tf),
+      q(0080) => q(ga),
+      q(0081) => q(gm),
+      q(0082) => q(ge),
+      q(0083) => q(de),
+      q(0084) => q(gh),
+      q(0085) => q(gi),
+      q(0086) => q(gr),
+      q(0087) => q(gl),
+      q(0088) => q(gd),
+      q(0089) => q(gp),
+      q(0090) => q(gu),
+      q(0091) => q(gt),
+      q(0092) => q(gg),
+      q(0093) => q(gn),
+      q(0094) => q(gw),
+      q(0095) => q(gy),
+      q(0096) => q(ht),
+      q(0097) => q(hm),
+      q(0098) => q(va),
+      q(0099) => q(hn),
+      q(0100) => q(hk),
+      q(0101) => q(hu),
+      q(0102) => q(is),
+      q(0103) => q(in),
+      q(0104) => q(id),
+      q(0105) => q(ir),
+      q(0106) => q(iq),
+      q(0107) => q(ie),
+      q(0108) => q(im),
+      q(0109) => q(il),
+      q(0110) => q(it),
+      q(0111) => q(jm),
+      q(0112) => q(jp),
+      q(0113) => q(je),
+      q(0114) => q(jo),
+      q(0115) => q(kz),
+      q(0116) => q(ke),
+      q(0117) => q(ki),
+      q(0118) => q(kp),
+      q(0119) => q(kr),
+      q(0120) => q(kw),
+      q(0121) => q(kg),
+      q(0122) => q(la),
+      q(0123) => q(lv),
+      q(0124) => q(lb),
+      q(0125) => q(ls),
+      q(0126) => q(lr),
+      q(0127) => q(ly),
+      q(0128) => q(li),
+      q(0129) => q(lt),
+      q(0130) => q(lu),
+      q(0131) => q(mo),
+      q(0132) => q(mk),
+      q(0133) => q(mg),
+      q(0134) => q(mw),
+      q(0135) => q(my),
+      q(0136) => q(mv),
+      q(0137) => q(ml),
+      q(0138) => q(mt),
+      q(0139) => q(mh),
+      q(0140) => q(mq),
+      q(0141) => q(mr),
+      q(0142) => q(mu),
+      q(0143) => q(yt),
+      q(0144) => q(mx),
+      q(0145) => q(fm),
+      q(0146) => q(md),
+      q(0147) => q(mc),
+      q(0148) => q(mn),
+      q(0149) => q(me),
+      q(0150) => q(ms),
+      q(0151) => q(ma),
+      q(0152) => q(mz),
+      q(0153) => q(mm),
+      q(0154) => q(na),
+      q(0155) => q(nr),
+      q(0156) => q(np),
+      q(0157) => q(nl),
+      q(0158) => q(nc),
+      q(0159) => q(nz),
+      q(0160) => q(ni),
+      q(0161) => q(ne),
+      q(0162) => q(ng),
+      q(0163) => q(nu),
+      q(0164) => q(nf),
+      q(0165) => q(mp),
+      q(0166) => q(no),
+      q(0167) => q(om),
+      q(0168) => q(pk),
+      q(0169) => q(pw),
+      q(0170) => q(ps),
+      q(0171) => q(pa),
+      q(0172) => q(pg),
+      q(0173) => q(py),
+      q(0174) => q(pe),
+      q(0175) => q(ph),
+      q(0176) => q(pn),
+      q(0177) => q(pl),
+      q(0178) => q(pt),
+      q(0179) => q(pr),
+      q(0180) => q(qa),
+      q(0181) => q(re),
+      q(0182) => q(ro),
+      q(0183) => q(ru),
+      q(0184) => q(rw),
+      q(0185) => q(bl),
+      q(0186) => q(sh),
+      q(0187) => q(kn),
+      q(0188) => q(lc),
+      q(0189) => q(mf),
+      q(0190) => q(pm),
+      q(0191) => q(vc),
+      q(0192) => q(ws),
+      q(0193) => q(sm),
+      q(0194) => q(st),
+      q(0195) => q(sa),
+      q(0196) => q(sn),
+      q(0197) => q(rs),
+      q(0198) => q(sc),
+      q(0199) => q(sl),
+      q(0200) => q(sg),
+      q(0201) => q(sx),
+      q(0202) => q(sk),
+      q(0203) => q(si),
+      q(0204) => q(sb),
+      q(0205) => q(so),
+      q(0206) => q(za),
+      q(0207) => q(gs),
+      q(0208) => q(ss),
+      q(0209) => q(es),
+      q(0210) => q(lk),
+      q(0211) => q(sd),
+      q(0212) => q(sr),
+      q(0213) => q(sj),
+      q(0214) => q(sz),
+      q(0215) => q(se),
+      q(0216) => q(ch),
+      q(0217) => q(sy),
+      q(0218) => q(tw),
+      q(0219) => q(tj),
+      q(0220) => q(tz),
+      q(0221) => q(th),
+      q(0222) => q(tl),
+      q(0223) => q(tg),
+      q(0224) => q(tk),
+      q(0225) => q(to),
+      q(0226) => q(tt),
+      q(0227) => q(tn),
+      q(0228) => q(tr),
+      q(0229) => q(tm),
+      q(0230) => q(tc),
+      q(0231) => q(tv),
+      q(0232) => q(ug),
+      q(0233) => q(ua),
+      q(0234) => q(ae),
+      q(0235) => q(gb),
+      q(0236) => q(us),
+      q(0237) => q(um),
+      q(0238) => q(uy),
+      q(0239) => q(uz),
+      q(0240) => q(vu),
+      q(0241) => q(ve),
+      q(0242) => q(vn),
+      q(0243) => q(vg),
+      q(0244) => q(vi),
+      q(0245) => q(wf),
+      q(0246) => q(eh),
+      q(0247) => q(ye),
+      q(0248) => q(zm),
+      q(0249) => q(zw),
+      },
+   q(alpha-3) => {
+      q(0001) => q(afg),
+      q(0002) => q(ala),
+      q(0003) => q(alb),
+      q(0004) => q(dza),
+      q(0005) => q(asm),
+      q(0006) => q(and),
+      q(0007) => q(ago),
+      q(0008) => q(aia),
+      q(0010) => q(atg),
+      q(0011) => q(arg),
+      q(0012) => q(arm),
+      q(0013) => q(abw),
+      q(0014) => q(aus),
+      q(0015) => q(aut),
+      q(0016) => q(aze),
+      q(0017) => q(bhs),
+      q(0018) => q(bhr),
+      q(0019) => q(bgd),
+      q(0020) => q(brb),
+      q(0021) => q(blr),
+      q(0022) => q(bel),
+      q(0023) => q(blz),
+      q(0024) => q(ben),
+      q(0025) => q(bmu),
+      q(0026) => q(btn),
+      q(0027) => q(bol),
+      q(0028) => q(bes),
+      q(0029) => q(bih),
+      q(0030) => q(bwa),
+      q(0032) => q(bra),
+      q(0034) => q(brn),
+      q(0035) => q(bgr),
+      q(0036) => q(bfa),
+      q(0037) => q(bdi),
+      q(0038) => q(khm),
+      q(0039) => q(cmr),
+      q(0040) => q(can),
+      q(0041) => q(cpv),
+      q(0042) => q(cym),
+      q(0043) => q(caf),
+      q(0044) => q(tcd),
+      q(0045) => q(chl),
+      q(0046) => q(chn),
+      q(0049) => q(col),
+      q(0050) => q(com),
+      q(0051) => q(cog),
+      q(0052) => q(cod),
+      q(0053) => q(cok),
+      q(0054) => q(cri),
+      q(0055) => q(civ),
+      q(0056) => q(hrv),
+      q(0057) => q(cub),
+      q(0058) => q(cuw),
+      q(0059) => q(cyp),
+      q(0060) => q(cze),
+      q(0061) => q(dnk),
+      q(0062) => q(dji),
+      q(0063) => q(dma),
+      q(0064) => q(dom),
+      q(0065) => q(ecu),
+      q(0066) => q(egy),
+      q(0067) => q(slv),
+      q(0068) => q(gnq),
+      q(0069) => q(eri),
+      q(0070) => q(est),
+      q(0071) => q(eth),
+      q(0072) => q(flk),
+      q(0073) => q(fro),
+      q(0074) => q(fji),
+      q(0075) => q(fin),
+      q(0076) => q(fra),
+      q(0077) => q(guf),
+      q(0078) => q(pyf),
+      q(0080) => q(gab),
+      q(0081) => q(gmb),
+      q(0082) => q(geo),
+      q(0083) => q(deu),
+      q(0084) => q(gha),
+      q(0085) => q(gib),
+      q(0086) => q(grc),
+      q(0087) => q(grl),
+      q(0088) => q(grd),
+      q(0089) => q(glp),
+      q(0090) => q(gum),
+      q(0091) => q(gtm),
+      q(0092) => q(ggy),
+      q(0093) => q(gin),
+      q(0094) => q(gnb),
+      q(0095) => q(guy),
+      q(0096) => q(hti),
+      q(0098) => q(vat),
+      q(0099) => q(hnd),
+      q(0100) => q(hkg),
+      q(0101) => q(hun),
+      q(0102) => q(isl),
+      q(0103) => q(ind),
+      q(0104) => q(idn),
+      q(0105) => q(irn),
+      q(0106) => q(irq),
+      q(0107) => q(irl),
+      q(0108) => q(imn),
+      q(0109) => q(isr),
+      q(0110) => q(ita),
+      q(0111) => q(jam),
+      q(0112) => q(jpn),
+      q(0113) => q(jey),
+      q(0114) => q(jor),
+      q(0115) => q(kaz),
+      q(0116) => q(ken),
+      q(0117) => q(kir),
+      q(0118) => q(prk),
+      q(0119) => q(kor),
+      q(0120) => q(kwt),
+      q(0121) => q(kgz),
+      q(0122) => q(lao),
+      q(0123) => q(lva),
+      q(0124) => q(lbn),
+      q(0125) => q(lso),
+      q(0126) => q(lbr),
+      q(0127) => q(lby),
+      q(0128) => q(lie),
+      q(0129) => q(ltu),
+      q(0130) => q(lux),
+      q(0131) => q(mac),
+      q(0132) => q(mkd),
+      q(0133) => q(mdg),
+      q(0134) => q(mwi),
+      q(0135) => q(mys),
+      q(0136) => q(mdv),
+      q(0137) => q(mli),
+      q(0138) => q(mlt),
+      q(0139) => q(mhl),
+      q(0140) => q(mtq),
+      q(0141) => q(mrt),
+      q(0142) => q(mus),
+      q(0143) => q(myt),
+      q(0144) => q(mex),
+      q(0145) => q(fsm),
+      q(0146) => q(mda),
+      q(0147) => q(mco),
+      q(0148) => q(mng),
+      q(0149) => q(mne),
+      q(0150) => q(msr),
+      q(0151) => q(mar),
+      q(0152) => q(moz),
+      q(0153) => q(mmr),
+      q(0154) => q(nam),
+      q(0155) => q(nru),
+      q(0156) => q(npl),
+      q(0157) => q(nld),
+      q(0158) => q(ncl),
+      q(0159) => q(nzl),
+      q(0160) => q(nic),
+      q(0161) => q(ner),
+      q(0162) => q(nga),
+      q(0163) => q(niu),
+      q(0164) => q(nfk),
+      q(0165) => q(mnp),
+      q(0166) => q(nor),
+      q(0167) => q(omn),
+      q(0168) => q(pak),
+      q(0169) => q(plw),
+      q(0170) => q(pse),
+      q(0171) => q(pan),
+      q(0172) => q(png),
+      q(0173) => q(pry),
+      q(0174) => q(per),
+      q(0175) => q(phl),
+      q(0176) => q(pcn),
+      q(0177) => q(pol),
+      q(0178) => q(prt),
+      q(0179) => q(pri),
+      q(0180) => q(qat),
+      q(0181) => q(reu),
+      q(0182) => q(rou),
+      q(0183) => q(rus),
+      q(0184) => q(rwa),
+      q(0185) => q(blm),
+      q(0186) => q(shn),
+      q(0187) => q(kna),
+      q(0188) => q(lca),
+      q(0189) => q(maf),
+      q(0190) => q(spm),
+      q(0191) => q(vct),
+      q(0192) => q(wsm),
+      q(0193) => q(smr),
+      q(0194) => q(stp),
+      q(0195) => q(sau),
+      q(0196) => q(sen),
+      q(0197) => q(srb),
+      q(0198) => q(syc),
+      q(0199) => q(sle),
+      q(0200) => q(sgp),
+      q(0201) => q(sxm),
+      q(0202) => q(svk),
+      q(0203) => q(svn),
+      q(0204) => q(slb),
+      q(0205) => q(som),
+      q(0206) => q(zaf),
+      q(0208) => q(ssd),
+      q(0209) => q(esp),
+      q(0210) => q(lka),
+      q(0211) => q(sdn),
+      q(0212) => q(sur),
+      q(0213) => q(sjm),
+      q(0214) => q(swz),
+      q(0215) => q(swe),
+      q(0216) => q(che),
+      q(0217) => q(syr),
+      q(0219) => q(tjk),
+      q(0220) => q(tza),
+      q(0221) => q(tha),
+      q(0222) => q(tls),
+      q(0223) => q(tgo),
+      q(0224) => q(tkl),
+      q(0225) => q(ton),
+      q(0226) => q(tto),
+      q(0227) => q(tun),
+      q(0228) => q(tur),
+      q(0229) => q(tkm),
+      q(0230) => q(tca),
+      q(0231) => q(tuv),
+      q(0232) => q(uga),
+      q(0233) => q(ukr),
+      q(0234) => q(are),
+      q(0235) => q(gbr),
+      q(0236) => q(usa),
+      q(0238) => q(ury),
+      q(0239) => q(uzb),
+      q(0240) => q(vut),
+      q(0241) => q(ven),
+      q(0242) => q(vnm),
+      q(0243) => q(vgb),
+      q(0244) => q(vir),
+      q(0245) => q(wlf),
+      q(0246) => q(esh),
+      q(0247) => q(yem),
+      q(0248) => q(zmb),
+      q(0249) => q(zwe),
+      },
+   q(dom) => {
+      q(0001) => q(af),
+      q(0002) => q(ax),
+      q(0003) => q(al),
+      q(0004) => q(dz),
+      q(0005) => q(as),
+      q(0006) => q(ad),
+      q(0007) => q(ao),
+      q(0008) => q(ai),
+      q(0009) => q(aq),
+      q(0010) => q(ag),
+      q(0011) => q(ar),
+      q(0012) => q(am),
+      q(0013) => q(aw),
+      q(0014) => q(au),
+      q(0015) => q(at),
+      q(0016) => q(az),
+      q(0017) => q(bs),
+      q(0018) => q(bh),
+      q(0019) => q(bd),
+      q(0020) => q(bb),
+      q(0021) => q(by),
+      q(0022) => q(be),
+      q(0023) => q(bz),
+      q(0024) => q(bj),
+      q(0025) => q(bm),
+      q(0026) => q(bt),
+      q(0027) => q(bo),
+      q(0028) => q(bq),
+      q(0029) => q(ba),
+      q(0030) => q(bw),
+      q(0031) => q(bv),
+      q(0032) => q(br),
+      q(0033) => q(io),
+      q(0034) => q(bn),
+      q(0035) => q(bg),
+      q(0036) => q(bf),
+      q(0037) => q(bi),
+      q(0038) => q(kh),
+      q(0039) => q(cm),
+      q(0040) => q(ca),
+      q(0041) => q(cv),
+      q(0042) => q(ky),
+      q(0043) => q(cf),
+      q(0044) => q(td),
+      q(0045) => q(cl),
+      q(0046) => q(cn),
+      q(0047) => q(cx),
+      q(0048) => q(cc),
+      q(0049) => q(co),
+      q(0050) => q(km),
+      q(0051) => q(cg),
+      q(0052) => q(cd),
+      q(0053) => q(ck),
+      q(0054) => q(cr),
+      q(0055) => q(ci),
+      q(0056) => q(hr),
+      q(0057) => q(cu),
+      q(0058) => q(cw),
+      q(0059) => q(cy),
+      q(0060) => q(cz),
+      q(0061) => q(dk),
+      q(0062) => q(dj),
+      q(0063) => q(dm),
+      q(0064) => q(do),
+      q(0065) => q(ec),
+      q(0066) => q(eg),
+      q(0067) => q(sv),
+      q(0068) => q(gq),
+      q(0069) => q(er),
+      q(0070) => q(ee),
+      q(0071) => q(et),
+      q(0072) => q(fk),
+      q(0073) => q(fo),
+      q(0074) => q(fj),
+      q(0075) => q(fi),
+      q(0076) => q(fr),
+      q(0077) => q(gf),
+      q(0078) => q(pf),
+      q(0079) => q(tf),
+      q(0080) => q(ga),
+      q(0081) => q(gm),
+      q(0082) => q(ge),
+      q(0083) => q(de),
+      q(0084) => q(gh),
+      q(0085) => q(gi),
+      q(0086) => q(gr),
+      q(0087) => q(gl),
+      q(0088) => q(gd),
+      q(0089) => q(gp),
+      q(0090) => q(gu),
+      q(0091) => q(gt),
+      q(0092) => q(gg),
+      q(0093) => q(gn),
+      q(0094) => q(gw),
+      q(0095) => q(gy),
+      q(0096) => q(ht),
+      q(0097) => q(hm),
+      q(0098) => q(va),
+      q(0099) => q(hn),
+      q(0100) => q(hk),
+      q(0101) => q(hu),
+      q(0102) => q(is),
+      q(0103) => q(in),
+      q(0104) => q(id),
+      q(0105) => q(ir),
+      q(0106) => q(iq),
+      q(0107) => q(ie),
+      q(0108) => q(im),
+      q(0109) => q(il),
+      q(0110) => q(it),
+      q(0111) => q(jm),
+      q(0112) => q(jp),
+      q(0113) => q(je),
+      q(0114) => q(jo),
+      q(0115) => q(kz),
+      q(0116) => q(ke),
+      q(0117) => q(ki),
+      q(0118) => q(kp),
+      q(0119) => q(kr),
+      q(0120) => q(kw),
+      q(0121) => q(kg),
+      q(0122) => q(la),
+      q(0123) => q(lv),
+      q(0124) => q(lb),
+      q(0125) => q(ls),
+      q(0126) => q(lr),
+      q(0127) => q(ly),
+      q(0128) => q(li),
+      q(0129) => q(lt),
+      q(0130) => q(lu),
+      q(0131) => q(mo),
+      q(0132) => q(mk),
+      q(0133) => q(mg),
+      q(0134) => q(mw),
+      q(0135) => q(my),
+      q(0136) => q(mv),
+      q(0137) => q(ml),
+      q(0138) => q(mt),
+      q(0139) => q(mh),
+      q(0140) => q(mq),
+      q(0141) => q(mr),
+      q(0142) => q(mu),
+      q(0143) => q(yt),
+      q(0144) => q(mx),
+      q(0145) => q(fm),
+      q(0146) => q(md),
+      q(0147) => q(mc),
+      q(0148) => q(mn),
+      q(0149) => q(me),
+      q(0150) => q(ms),
+      q(0151) => q(ma),
+      q(0152) => q(mz),
+      q(0153) => q(mm),
+      q(0154) => q(na),
+      q(0155) => q(nr),
+      q(0156) => q(np),
+      q(0157) => q(nl),
+      q(0158) => q(nc),
+      q(0159) => q(nz),
+      q(0160) => q(ni),
+      q(0161) => q(ne),
+      q(0162) => q(ng),
+      q(0163) => q(nu),
+      q(0164) => q(nf),
+      q(0165) => q(mp),
+      q(0166) => q(no),
+      q(0167) => q(om),
+      q(0168) => q(pk),
+      q(0169) => q(pw),
+      q(0170) => q(ps),
+      q(0171) => q(pa),
+      q(0172) => q(pg),
+      q(0173) => q(py),
+      q(0174) => q(pe),
+      q(0175) => q(ph),
+      q(0176) => q(pn),
+      q(0177) => q(pl),
+      q(0178) => q(pt),
+      q(0179) => q(pr),
+      q(0180) => q(qa),
+      q(0181) => q(re),
+      q(0182) => q(ro),
+      q(0183) => q(ru),
+      q(0184) => q(rw),
+      q(0185) => q(bl),
+      q(0186) => q(sh),
+      q(0187) => q(kn),
+      q(0188) => q(lc),
+      q(0189) => q(mf),
+      q(0190) => q(pm),
+      q(0191) => q(vc),
+      q(0192) => q(ws),
+      q(0193) => q(sm),
+      q(0194) => q(st),
+      q(0195) => q(sa),
+      q(0196) => q(sn),
+      q(0197) => q(rs),
+      q(0198) => q(sc),
+      q(0199) => q(sl),
+      q(0200) => q(sg),
+      q(0201) => q(sx),
+      q(0202) => q(sk),
+      q(0203) => q(si),
+      q(0204) => q(sb),
+      q(0205) => q(so),
+      q(0206) => q(za),
+      q(0207) => q(gs),
+      q(0208) => q(ss),
+      q(0209) => q(es),
+      q(0210) => q(lk),
+      q(0211) => q(sd),
+      q(0212) => q(sr),
+      q(0213) => q(sj),
+      q(0214) => q(sz),
+      q(0215) => q(se),
+      q(0216) => q(ch),
+      q(0217) => q(sy),
+      q(0218) => q(tw),
+      q(0219) => q(tj),
+      q(0220) => q(tz),
+      q(0221) => q(th),
+      q(0222) => q(tp),
+      q(0223) => q(tg),
+      q(0224) => q(tk),
+      q(0225) => q(to),
+      q(0226) => q(tt),
+      q(0227) => q(tn),
+      q(0228) => q(tr),
+      q(0229) => q(tm),
+      q(0230) => q(tc),
+      q(0231) => q(tv),
+      q(0232) => q(ug),
+      q(0233) => q(ua),
+      q(0234) => q(ae),
+      q(0235) => q(uk),
+      q(0236) => q(us),
+      q(0237) => q(um),
+      q(0238) => q(uy),
+      q(0239) => q(uz),
+      q(0240) => q(vu),
+      q(0241) => q(ve),
+      q(0242) => q(vn),
+      q(0243) => q(vg),
+      q(0244) => q(vi),
+      q(0245) => q(wf),
+      q(0246) => q(eh),
+      q(0247) => q(ye),
+      q(0248) => q(zm),
+      q(0249) => q(zw),
+      q(0290) => q(ac),
+      q(0291) => q(an),
+      q(0292) => q(eu),
+      q(0293) => q(su),
+      },
+   q(fips-10) => {
+      q(0001) => q(AF),
+      q(0003) => q(AL),
+      q(0004) => q(AG),
+      q(0005) => q(AQ),
+      q(0006) => q(AN),
+      q(0007) => q(AO),
+      q(0008) => q(AV),
+      q(0009) => q(AY),
+      q(0010) => q(AC),
+      q(0011) => q(AR),
+      q(0012) => q(AM),
+      q(0013) => q(AA),
+      q(0014) => q(AS),
+      q(0015) => q(AU),
+      q(0016) => q(AJ),
+      q(0017) => q(BF),
+      q(0018) => q(BA),
+      q(0019) => q(BG),
+      q(0020) => q(BB),
+      q(0021) => q(BO),
+      q(0022) => q(BE),
+      q(0023) => q(BH),
+      q(0024) => q(BN),
+      q(0025) => q(BD),
+      q(0026) => q(BT),
+      q(0027) => q(BL),
+      q(0029) => q(BK),
+      q(0030) => q(BC),
+      q(0031) => q(BV),
+      q(0032) => q(BR),
+      q(0033) => q(IO),
+      q(0034) => q(BX),
+      q(0035) => q(BU),
+      q(0036) => q(UV),
+      q(0037) => q(BY),
+      q(0038) => q(CB),
+      q(0039) => q(CM),
+      q(0040) => q(CA),
+      q(0041) => q(CV),
+      q(0042) => q(CJ),
+      q(0043) => q(CT),
+      q(0044) => q(CD),
+      q(0045) => q(CI),
+      q(0046) => q(CH),
+      q(0047) => q(KT),
+      q(0048) => q(CK),
+      q(0049) => q(CO),
+      q(0050) => q(CN),
+      q(0051) => q(CF),
+      q(0053) => q(CW),
+      q(0054) => q(CS),
+      q(0055) => q(IV),
+      q(0056) => q(HR),
+      q(0057) => q(CU),
+      q(0058) => q(UC),
+      q(0059) => q(CY),
+      q(0060) => q(EZ),
+      q(0061) => q(DA),
+      q(0062) => q(DJ),
+      q(0063) => q(DO),
+      q(0064) => q(DR),
+      q(0065) => q(EC),
+      q(0066) => q(EG),
+      q(0067) => q(ES),
+      q(0068) => q(EK),
+      q(0069) => q(ER),
+      q(0070) => q(EN),
+      q(0071) => q(ET),
+      q(0072) => q(FK),
+      q(0073) => q(FO),
+      q(0074) => q(FJ),
+      q(0075) => q(FI),
+      q(0076) => q(FR),
+      q(0077) => q(FG),
+      q(0078) => q(FP),
+      q(0079) => q(FS),
+      q(0080) => q(GB),
+      q(0081) => q(GA),
+      q(0082) => q(GG),
+      q(0083) => q(GM),
+      q(0084) => q(GH),
+      q(0085) => q(GI),
+      q(0086) => q(GR),
+      q(0087) => q(GL),
+      q(0088) => q(GJ),
+      q(0089) => q(GP),
+      q(0090) => q(GQ),
+      q(0091) => q(GT),
+      q(0092) => q(GK),
+      q(0093) => q(GV),
+      q(0094) => q(PU),
+      q(0095) => q(GY),
+      q(0096) => q(HA),
+      q(0098) => q(VT),
+      q(0099) => q(HO),
+      q(0100) => q(HK),
+      q(0101) => q(HU),
+      q(0102) => q(IC),
+      q(0103) => q(IN),
+      q(0104) => q(ID),
+      q(0105) => q(IR),
+      q(0106) => q(IZ),
+      q(0107) => q(EI),
+      q(0108) => q(IM),
+      q(0109) => q(IS),
+      q(0110) => q(IT),
+      q(0111) => q(JM),
+      q(0112) => q(JA),
+      q(0113) => q(JE),
+      q(0114) => q(JO),
+      q(0115) => q(KZ),
+      q(0116) => q(KE),
+      q(0117) => q(KR),
+      q(0120) => q(KU),
+      q(0121) => q(KG),
+      q(0123) => q(LG),
+      q(0124) => q(LE),
+      q(0125) => q(LT),
+      q(0126) => q(LI),
+      q(0127) => q(LY),
+      q(0128) => q(LS),
+      q(0129) => q(LH),
+      q(0130) => q(LU),
+      q(0131) => q(MC),
+      q(0132) => q(MK),
+      q(0133) => q(MA),
+      q(0134) => q(MI),
+      q(0135) => q(MY),
+      q(0136) => q(MV),
+      q(0137) => q(ML),
+      q(0138) => q(MT),
+      q(0139) => q(RM),
+      q(0140) => q(MB),
+      q(0141) => q(MR),
+      q(0142) => q(MP),
+      q(0143) => q(MF),
+      q(0144) => q(MX),
+      q(0145) => q(FM),
+      q(0147) => q(MN),
+      q(0148) => q(MG),
+      q(0149) => q(MJ),
+      q(0150) => q(MH),
+      q(0151) => q(MO),
+      q(0152) => q(MZ),
+      q(0153) => q(BM),
+      q(0154) => q(WA),
+      q(0155) => q(NR),
+      q(0156) => q(NP),
+      q(0157) => q(NL),
+      q(0158) => q(NC),
+      q(0159) => q(NZ),
+      q(0160) => q(NU),
+      q(0161) => q(NG),
+      q(0162) => q(NI),
+      q(0163) => q(NE),
+      q(0164) => q(NF),
+      q(0165) => q(CQ),
+      q(0166) => q(NO),
+      q(0167) => q(MU),
+      q(0168) => q(PK),
+      q(0169) => q(PS),
+      q(0171) => q(PM),
+      q(0172) => q(PP),
+      q(0173) => q(PA),
+      q(0174) => q(PE),
+      q(0175) => q(RP),
+      q(0176) => q(PC),
+      q(0177) => q(PL),
+      q(0178) => q(PO),
+      q(0179) => q(RQ),
+      q(0180) => q(QA),
+      q(0181) => q(RE),
+      q(0182) => q(RO),
+      q(0184) => q(RW),
+      q(0185) => q(TB),
+      q(0187) => q(SC),
+      q(0188) => q(ST),
+      q(0189) => q(RN),
+      q(0190) => q(SB),
+      q(0191) => q(VC),
+      q(0192) => q(WS),
+      q(0193) => q(SM),
+      q(0194) => q(TP),
+      q(0195) => q(SA),
+      q(0196) => q(SG),
+      q(0197) => q(RI),
+      q(0198) => q(SE),
+      q(0199) => q(SL),
+      q(0200) => q(SN),
+      q(0202) => q(LO),
+      q(0203) => q(SI),
+      q(0204) => q(BP),
+      q(0205) => q(SO),
+      q(0206) => q(SF),
+      q(0208) => q(OD),
+      q(0209) => q(SP),
+      q(0210) => q(CE),
+      q(0211) => q(SU),
+      q(0212) => q(NS),
+      q(0214) => q(WZ),
+      q(0215) => q(SW),
+      q(0216) => q(SZ),
+      q(0217) => q(SY),
+      q(0218) => q(TW),
+      q(0219) => q(TI),
+      q(0221) => q(TH),
+      q(0222) => q(TT),
+      q(0223) => q(TO),
+      q(0224) => q(TL),
+      q(0225) => q(TN),
+      q(0226) => q(TD),
+      q(0227) => q(TS),
+      q(0228) => q(TU),
+      q(0229) => q(TX),
+      q(0230) => q(TK),
+      q(0231) => q(TV),
+      q(0232) => q(UG),
+      q(0233) => q(UP),
+      q(0234) => q(AE),
+      q(0235) => q(UK),
+      q(0236) => q(US),
+      q(0238) => q(UY),
+      q(0239) => q(UZ),
+      q(0240) => q(NH),
+      q(0241) => q(VE),
+      q(0242) => q(VM),
+      q(0243) => q(VI),
+      q(0244) => q(VQ),
+      q(0245) => q(WF),
+      q(0246) => q(WI),
+      q(0247) => q(YM),
+      q(0248) => q(ZA),
+      q(0249) => q(ZI),
+      q(0252) => q(AX),
+      q(0253) => q(AT),
+      q(0254) => q(FQ),
+      q(0255) => q(BS),
+      q(0256) => q(IP),
+      q(0257) => q(CG),
+      q(0258) => q(CR),
+      q(0259) => q(DX),
+      q(0260) => q(PJ),
+      q(0261) => q(EU),
+      q(0262) => q(GZ),
+      q(0263) => q(GO),
+      q(0264) => q(HM),
+      q(0265) => q(HQ),
+      q(0266) => q(JN),
+      q(0267) => q(DQ),
+      q(0268) => q(JQ),
+      q(0269) => q(JU),
+      q(0270) => q(KQ),
+      q(0271) => q(KN),
+      q(0272) => q(KS),
+      q(0273) => q(KV),
+      q(0274) => q(LA),
+      q(0275) => q(MQ),
+      q(0276) => q(MD),
+      q(0277) => q(BQ),
+      q(0278) => q(LQ),
+      q(0279) => q(PF),
+      q(0280) => q(RS),
+      q(0281) => q(SH),
+      q(0282) => q(NN),
+      q(0283) => q(SX),
+      q(0284) => q(PG),
+      q(0285) => q(SV),
+      q(0286) => q(TZ),
+      q(0287) => q(TE),
+      q(0288) => q(WQ),
+      q(0289) => q(WE),
+      },
+   q(numeric) => {
+      q(0001) => q(004),
+      q(0002) => q(248),
+      q(0003) => q(008),
+      q(0004) => q(012),
+      q(0005) => q(016),
+      q(0006) => q(020),
+      q(0007) => q(024),
+      q(0008) => q(660),
+      q(0010) => q(028),
+      q(0011) => q(032),
+      q(0012) => q(051),
+      q(0013) => q(533),
+      q(0014) => q(036),
+      q(0015) => q(040),
+      q(0016) => q(031),
+      q(0017) => q(044),
+      q(0018) => q(048),
+      q(0019) => q(050),
+      q(0020) => q(052),
+      q(0021) => q(112),
+      q(0022) => q(056),
+      q(0023) => q(084),
+      q(0024) => q(204),
+      q(0025) => q(060),
+      q(0026) => q(064),
+      q(0027) => q(068),
+      q(0028) => q(535),
+      q(0029) => q(070),
+      q(0030) => q(072),
+      q(0032) => q(076),
+      q(0034) => q(096),
+      q(0035) => q(100),
+      q(0036) => q(854),
+      q(0037) => q(108),
+      q(0038) => q(116),
+      q(0039) => q(120),
+      q(0040) => q(124),
+      q(0041) => q(132),
+      q(0042) => q(136),
+      q(0043) => q(140),
+      q(0044) => q(148),
+      q(0045) => q(152),
+      q(0046) => q(156),
+      q(0049) => q(170),
+      q(0050) => q(174),
+      q(0051) => q(178),
+      q(0052) => q(180),
+      q(0053) => q(184),
+      q(0054) => q(188),
+      q(0055) => q(384),
+      q(0056) => q(191),
+      q(0057) => q(192),
+      q(0058) => q(531),
+      q(0059) => q(196),
+      q(0060) => q(203),
+      q(0061) => q(208),
+      q(0062) => q(262),
+      q(0063) => q(212),
+      q(0064) => q(214),
+      q(0065) => q(218),
+      q(0066) => q(818),
+      q(0067) => q(222),
+      q(0068) => q(226),
+      q(0069) => q(232),
+      q(0070) => q(233),
+      q(0071) => q(231),
+      q(0072) => q(238),
+      q(0073) => q(234),
+      q(0074) => q(242),
+      q(0075) => q(246),
+      q(0076) => q(250),
+      q(0077) => q(254),
+      q(0078) => q(258),
+      q(0080) => q(266),
+      q(0081) => q(270),
+      q(0082) => q(268),
+      q(0083) => q(276),
+      q(0084) => q(288),
+      q(0085) => q(292),
+      q(0086) => q(300),
+      q(0087) => q(304),
+      q(0088) => q(308),
+      q(0089) => q(312),
+      q(0090) => q(316),
+      q(0091) => q(320),
+      q(0092) => q(831),
+      q(0093) => q(324),
+      q(0094) => q(624),
+      q(0095) => q(328),
+      q(0096) => q(332),
+      q(0098) => q(336),
+      q(0099) => q(340),
+      q(0100) => q(344),
+      q(0101) => q(348),
+      q(0102) => q(352),
+      q(0103) => q(356),
+      q(0104) => q(360),
+      q(0105) => q(364),
+      q(0106) => q(368),
+      q(0107) => q(372),
+      q(0108) => q(833),
+      q(0109) => q(376),
+      q(0110) => q(380),
+      q(0111) => q(388),
+      q(0112) => q(392),
+      q(0113) => q(832),
+      q(0114) => q(400),
+      q(0115) => q(398),
+      q(0116) => q(404),
+      q(0117) => q(296),
+      q(0118) => q(408),
+      q(0119) => q(410),
+      q(0120) => q(414),
+      q(0121) => q(417),
+      q(0122) => q(418),
+      q(0123) => q(428),
+      q(0124) => q(422),
+      q(0125) => q(426),
+      q(0126) => q(430),
+      q(0127) => q(434),
+      q(0128) => q(438),
+      q(0129) => q(440),
+      q(0130) => q(442),
+      q(0131) => q(446),
+      q(0132) => q(807),
+      q(0133) => q(450),
+      q(0134) => q(454),
+      q(0135) => q(458),
+      q(0136) => q(462),
+      q(0137) => q(466),
+      q(0138) => q(470),
+      q(0139) => q(584),
+      q(0140) => q(474),
+      q(0141) => q(478),
+      q(0142) => q(480),
+      q(0143) => q(175),
+      q(0144) => q(484),
+      q(0145) => q(583),
+      q(0146) => q(498),
+      q(0147) => q(492),
+      q(0148) => q(496),
+      q(0149) => q(499),
+      q(0150) => q(500),
+      q(0151) => q(504),
+      q(0152) => q(508),
+      q(0153) => q(104),
+      q(0154) => q(516),
+      q(0155) => q(520),
+      q(0156) => q(524),
+      q(0157) => q(528),
+      q(0158) => q(540),
+      q(0159) => q(554),
+      q(0160) => q(558),
+      q(0161) => q(562),
+      q(0162) => q(566),
+      q(0163) => q(570),
+      q(0164) => q(574),
+      q(0165) => q(580),
+      q(0166) => q(578),
+      q(0167) => q(512),
+      q(0168) => q(586),
+      q(0169) => q(585),
+      q(0170) => q(275),
+      q(0171) => q(591),
+      q(0172) => q(598),
+      q(0173) => q(600),
+      q(0174) => q(604),
+      q(0175) => q(608),
+      q(0176) => q(612),
+      q(0177) => q(616),
+      q(0178) => q(620),
+      q(0179) => q(630),
+      q(0180) => q(634),
+      q(0181) => q(638),
+      q(0182) => q(642),
+      q(0183) => q(643),
+      q(0184) => q(646),
+      q(0185) => q(652),
+      q(0186) => q(654),
+      q(0187) => q(659),
+      q(0188) => q(662),
+      q(0189) => q(663),
+      q(0190) => q(666),
+      q(0191) => q(670),
+      q(0192) => q(882),
+      q(0193) => q(674),
+      q(0194) => q(678),
+      q(0195) => q(682),
+      q(0196) => q(686),
+      q(0197) => q(688),
+      q(0198) => q(690),
+      q(0199) => q(694),
+      q(0200) => q(702),
+      q(0201) => q(534),
+      q(0202) => q(703),
+      q(0203) => q(705),
+      q(0204) => q(090),
+      q(0205) => q(706),
+      q(0206) => q(710),
+      q(0208) => q(728),
+      q(0209) => q(724),
+      q(0210) => q(144),
+      q(0211) => q(729),
+      q(0212) => q(740),
+      q(0213) => q(744),
+      q(0214) => q(748),
+      q(0215) => q(752),
+      q(0216) => q(756),
+      q(0217) => q(760),
+      q(0219) => q(762),
+      q(0220) => q(834),
+      q(0221) => q(764),
+      q(0222) => q(626),
+      q(0223) => q(768),
+      q(0224) => q(772),
+      q(0225) => q(776),
+      q(0226) => q(780),
+      q(0227) => q(788),
+      q(0228) => q(792),
+      q(0229) => q(795),
+      q(0230) => q(796),
+      q(0231) => q(798),
+      q(0232) => q(800),
+      q(0233) => q(804),
+      q(0234) => q(784),
+      q(0235) => q(826),
+      q(0236) => q(840),
+      q(0238) => q(858),
+      q(0239) => q(860),
+      q(0240) => q(548),
+      q(0241) => q(862),
+      q(0242) => q(704),
+      q(0243) => q(092),
+      q(0244) => q(850),
+      q(0245) => q(876),
+      q(0246) => q(732),
+      q(0247) => q(887),
+      q(0248) => q(894),
+      q(0249) => q(716),
+      q(0250) => q(830),
+      q(0251) => q(680),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Country_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,702 @@
+package Locale::Codes::Country_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Country_Retired - retired country codes for the Locale::Codes::Country module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Country module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'country'}{'alpha-2'}{'code'} = {
+   q(an) => q(Netherlands Antilles),
+   q(cs) => q(Serbia and Montenegro),
+   q(fx) => q(France, Metropolitan),
+   q(tp) => q(East Timor),
+   q(yu) => q(Yugoslavia),
+   q(zr) => q(Zaire),
+};
+
+$Locale::Codes::Retired{'country'}{'alpha-3'}{'code'} = {
+   q(ant) => q(Netherlands Antilles),
+   q(ata) => q(Antarctica),
+   q(atf) => q(French Southern and Antarctic Lands),
+   q(bvt) => q(Bouvet Island),
+   q(cck) => q(Cocos (Keeling) Islands),
+   q(cxr) => q(Christmas Island),
+   q(fxx) => q(France, Metropolitan),
+   q(hmd) => q(Heard Island and Mcdonald Islands),
+   q(iot) => q(British Indian Ocean Territory),
+   q(rom) => q(Romania),
+   q(scg) => q(Serbia and Montenegro),
+   q(sgs) => q(South Georgia and the Islands),
+   q(tmp) => q(East Timor),
+   q(twn) => q(Taiwan),
+   q(umi) => q(United States Minor Outlying Islands),
+   q(yug) => q(Yugoslavia),
+   q(zar) => q(Zaire),
+};
+
+$Locale::Codes::Retired{'country'}{'dom'}{'code'} = {
+   q(AC) => q(Ascension Island),
+   q(AD) => q(Andorra),
+   q(AE) => q(United Arab Emirates),
+   q(AF) => q(Afghanistan),
+   q(AG) => q(Antigua and Barbuda),
+   q(AI) => q(Anguilla),
+   q(AL) => q(Albania),
+   q(AM) => q(Armenia),
+   q(AN) => q(Netherlands Antilles),
+   q(AO) => q(Angola),
+   q(AQ) => q(Antarctica),
+   q(AR) => q(Argentina),
+   q(AS) => q(American Samoa),
+   q(AT) => q(Austria),
+   q(AU) => q(Australia),
+   q(AW) => q(Aruba),
+   q(AX) => q(Aland Islands),
+   q(AZ) => q(Azerbaijan),
+   q(BA) => q(Bosnia and Herzegovina),
+   q(BB) => q(Barbados),
+   q(BD) => q(Bangladesh),
+   q(BE) => q(Belgium),
+   q(BF) => q(Burkina Faso),
+   q(BG) => q(Bulgaria),
+   q(BH) => q(Bahrain),
+   q(BI) => q(Burundi),
+   q(BJ) => q(Benin),
+   q(BL) => q(Saint Barthelemy),
+   q(BM) => q(Bermuda),
+   q(BN) => q(Brunei Darussalam),
+   q(BO) => q(Bolivia, Plurinational State of),
+   q(BQ) => q(Bonaire, Sint Eustatius and Saba),
+   q(BR) => q(Brazil),
+   q(BS) => q(Bahamas),
+   q(BT) => q(Bhutan),
+   q(BV) => q(Bouvet Island),
+   q(BW) => q(Botswana),
+   q(BY) => q(Belarus),
+   q(BZ) => q(Belize),
+   q(CA) => q(Canada),
+   q(CC) => q(Cocos (Keeling) Islands),
+   q(CD) => q(Congo, The Democratic Republic of the),
+   q(CF) => q(Central African Republic),
+   q(CG) => q(Congo),
+   q(CH) => q(Switzerland),
+   q(CI) => q(Cote d'Ivoire),
+   q(CK) => q(Cook Islands),
+   q(CL) => q(Chile),
+   q(CM) => q(Cameroon),
+   q(CN) => q(China),
+   q(CO) => q(Colombia),
+   q(CR) => q(Costa Rica),
+   q(CU) => q(Cuba),
+   q(CV) => q(Cape Verde),
+   q(CW) => q(Curacao),
+   q(CX) => q(Christmas Island),
+   q(CY) => q(Cyprus),
+   q(CZ) => q(Czech Republic),
+   q(DE) => q(Germany),
+   q(DJ) => q(Djibouti),
+   q(DK) => q(Denmark),
+   q(DM) => q(Dominica),
+   q(DO) => q(Dominican Republic),
+   q(DZ) => q(Algeria),
+   q(EC) => q(Ecuador),
+   q(EE) => q(Estonia),
+   q(EG) => q(Egypt),
+   q(EH) => q(Western Sahara),
+   q(ER) => q(Eritrea),
+   q(ES) => q(Spain),
+   q(ET) => q(Ethiopia),
+   q(EU) => q(European Union),
+   q(FI) => q(Finland),
+   q(FJ) => q(Fiji),
+   q(FK) => q(Falkland Islands (Malvinas)),
+   q(FM) => q(Micronesia, Federated States of),
+   q(FO) => q(Faroe Islands),
+   q(FR) => q(France),
+   q(FX) => q(France, Metropolitan),
+   q(GA) => q(Gabon),
+   q(GB) => q(United Kingdom),
+   q(GD) => q(Grenada),
+   q(GE) => q(Georgia),
+   q(GF) => q(French Guiana),
+   q(GG) => q(Guernsey),
+   q(GH) => q(Ghana),
+   q(GI) => q(Gibraltar),
+   q(GL) => q(Greenland),
+   q(GM) => q(Gambia),
+   q(GN) => q(Guinea),
+   q(GP) => q(Guadeloupe),
+   q(GQ) => q(Equatorial Guinea),
+   q(GR) => q(Greece),
+   q(GS) => q(South Georgia and the South Sandwich Islands),
+   q(GT) => q(Guatemala),
+   q(GU) => q(Guam),
+   q(GW) => q(Guinea-Bissau),
+   q(GY) => q(Guyana),
+   q(HK) => q(Hong Kong),
+   q(HM) => q(Heard Island and Mcdonald Islands),
+   q(HN) => q(Honduras),
+   q(HR) => q(Croatia),
+   q(HT) => q(Haiti),
+   q(HU) => q(Hungary),
+   q(ID) => q(Indonesia),
+   q(IE) => q(Ireland),
+   q(IL) => q(Israel),
+   q(IM) => q(Isle of Man),
+   q(IN) => q(India),
+   q(IO) => q(British Indian Ocean Territory),
+   q(IQ) => q(Iraq),
+   q(IR) => q(Iran, Islamic Republic of),
+   q(IS) => q(Iceland),
+   q(IT) => q(Italy),
+   q(JE) => q(Jersey),
+   q(JM) => q(Jamaica),
+   q(JO) => q(Jordan),
+   q(JP) => q(Japan),
+   q(KE) => q(Kenya),
+   q(KG) => q(Kyrgyzstan),
+   q(KH) => q(Cambodia),
+   q(KI) => q(Kiribati),
+   q(KM) => q(Comoros),
+   q(KN) => q(Saint Kitts and Nevis),
+   q(KP) => q(Korea, Democratic People's Republic of),
+   q(KR) => q(Korea, Republic of),
+   q(KW) => q(Kuwait),
+   q(KY) => q(Cayman Islands),
+   q(KZ) => q(Kazakhstan),
+   q(LA) => q(Lao People's Democratic Republic),
+   q(LB) => q(Lebanon),
+   q(LC) => q(Saint Lucia),
+   q(LI) => q(Liechtenstein),
+   q(LK) => q(Sri Lanka),
+   q(LR) => q(Liberia),
+   q(LS) => q(Lesotho),
+   q(LT) => q(Lithuania),
+   q(LU) => q(Luxembourg),
+   q(LV) => q(Latvia),
+   q(LY) => q(Libya),
+   q(MA) => q(Morocco),
+   q(MC) => q(Monaco),
+   q(MD) => q(Moldova, Republic of),
+   q(ME) => q(Montenegro),
+   q(MF) => q(Saint Martin (French part)),
+   q(MG) => q(Madagascar),
+   q(MH) => q(Marshall Islands),
+   q(MK) => q(Macedonia, The Former Yugoslav Republic of),
+   q(ML) => q(Mali),
+   q(MM) => q(Myanmar),
+   q(MN) => q(Mongolia),
+   q(MO) => q(Macao),
+   q(MP) => q(Northern Mariana Islands),
+   q(MQ) => q(Martinique),
+   q(MR) => q(Mauritania),
+   q(MS) => q(Montserrat),
+   q(MT) => q(Malta),
+   q(MU) => q(Mauritius),
+   q(MV) => q(Maldives),
+   q(MW) => q(Malawi),
+   q(MX) => q(Mexico),
+   q(MY) => q(Malaysia),
+   q(MZ) => q(Mozambique),
+   q(NA) => q(Namibia),
+   q(NC) => q(New Caledonia),
+   q(NE) => q(Niger),
+   q(NF) => q(Norfolk Island),
+   q(NG) => q(Nigeria),
+   q(NI) => q(Nicaragua),
+   q(NL) => q(Netherlands),
+   q(NO) => q(Norway),
+   q(NP) => q(Nepal),
+   q(NR) => q(Nauru),
+   q(NU) => q(Niue),
+   q(NZ) => q(New Zealand),
+   q(OM) => q(Oman),
+   q(PA) => q(Panama),
+   q(PE) => q(Peru),
+   q(PF) => q(French Polynesia),
+   q(PG) => q(Papua New Guinea),
+   q(PH) => q(Philippines),
+   q(PK) => q(Pakistan),
+   q(PL) => q(Poland),
+   q(PM) => q(Saint Pierre and Miquelon),
+   q(PN) => q(Pitcairn),
+   q(PR) => q(Puerto Rico),
+   q(PS) => q(Palestinian Territory, Occupied),
+   q(PT) => q(Portugal),
+   q(PW) => q(Palau),
+   q(PY) => q(Paraguay),
+   q(QA) => q(Qatar),
+   q(RE) => q(Reunion),
+   q(RO) => q(Romania),
+   q(RS) => q(Serbia),
+   q(RU) => q(Russian Federation),
+   q(RW) => q(Rwanda),
+   q(SA) => q(Saudi Arabia),
+   q(SB) => q(Solomon Islands),
+   q(SC) => q(Seychelles),
+   q(SD) => q(Sudan),
+   q(SE) => q(Sweden),
+   q(SG) => q(Singapore),
+   q(SH) => q(Saint Helena, Ascension and Tristan da Cunha),
+   q(SI) => q(Slovenia),
+   q(SJ) => q(Svalbard and Jan Mayen),
+   q(SK) => q(Slovakia),
+   q(SL) => q(Sierra Leone),
+   q(SM) => q(San Marino),
+   q(SN) => q(Senegal),
+   q(SO) => q(Somalia),
+   q(SR) => q(Suriname),
+   q(SS) => q(South Sudan),
+   q(ST) => q(Sao Tome and Principe),
+   q(SU) => q(Soviet Union),
+   q(SV) => q(El Salvador),
+   q(SX) => q(Sint Maarten (Dutch part)),
+   q(SY) => q(Syrian Arab Republic),
+   q(SZ) => q(Swaziland),
+   q(TC) => q(Turks and Caicos Islands),
+   q(TD) => q(Chad),
+   q(TF) => q(French Southern Territories),
+   q(TG) => q(Togo),
+   q(TH) => q(Thailand),
+   q(TJ) => q(Tajikistan),
+   q(TK) => q(Tokelau),
+   q(TL) => q(Timor-Leste),
+   q(TM) => q(Turkmenistan),
+   q(TN) => q(Tunisia),
+   q(TO) => q(Tonga),
+   q(TP) => q(Portuguese Timor),
+   q(TR) => q(Turkey),
+   q(TT) => q(Trinidad and Tobago),
+   q(TV) => q(Tuvalu),
+   q(TW) => q(Taiwan, Province of China),
+   q(TZ) => q(Tanzania, United Republic of),
+   q(UA) => q(Ukraine),
+   q(UG) => q(Uganda),
+   q(UK) => q(United Kingdom),
+   q(UM) => q(United States Minor Outlying Islands),
+   q(US) => q(United States),
+   q(UY) => q(Uruguay),
+   q(UZ) => q(Uzbekistan),
+   q(VA) => q(Holy See (Vatican City State)),
+   q(VC) => q(Saint Vincent and the Grenadines),
+   q(VE) => q(Venezuela, Bolivarian Republic of),
+   q(VG) => q(Virgin Islands, British),
+   q(VI) => q(Virgin Islands, U.S.),
+   q(VN) => q(Viet Nam),
+   q(VU) => q(Vanuatu),
+   q(WF) => q(Wallis and Futuna),
+   q(WS) => q(Samoa),
+   q(YE) => q(Yemen),
+   q(YT) => q(Mayotte),
+   q(YU) => q(Yugoslavia ),
+   q(ZA) => q(South Africa),
+   q(ZM) => q(Zambia),
+   q(ZW) => q(Zimbabwe),
+};
+
+$Locale::Codes::Retired{'country'}{'fips-10'}{'code'} = {
+   q(KV) => q(Kosovo),
+   q(MJ) => q(Montenegro),
+   q(NN) => q(Sint Maarten),
+   q(NT) => q(Netherlands Antilles),
+   q(RI) => q(Serbia),
+   q(RN) => q(Saint Martin),
+   q(TB) => q(Saint Barthelemy),
+   q(UC) => q(Curacao),
+   q(YI) => q(Serbia and Montenegro),
+};
+
+$Locale::Codes::Retired{'country'}{'numeric'}{'code'} = {
+   q(010) => q(Antarctica),
+   q(074) => q(Bouvet Island),
+   q(086) => q(British Indian Ocean Territory),
+   q(158) => q(Taiwan),
+   q(162) => q(Christmas Island),
+   q(166) => q(Cocos (Keeling) Islands),
+   q(239) => q(South Georgia and the Islands),
+   q(249) => q(France, Metropolitan),
+   q(260) => q(French Southern and Antarctic Lands),
+   q(334) => q(Heard Island and Mcdonald Islands),
+   q(530) => q(Netherlands Antilles),
+   q(581) => q(United States Minor Outlying Islands),
+   q(736) => q(Sudan),
+   q(891) => q(Serbia and Montenegro),
+};
+
+$Locale::Codes::Retired{'country'}{'alpha-2'}{'name'} = {
+   q(bolivia) => [ q(bo), q(Bolivia) ],
+   q(bosnia and herzegowina) => [ q(ba), q(Bosnia and Herzegowina) ],
+   q(east timor) => [ q(tl), q(East Timor) ],
+   q(france, metropolitan) => [ q(fx), q(France, Metropolitan) ],
+   q(heard and mc donald islands) => [ q(hm), q(Heard and Mc Donald Islands) ],
+   q(iran (islamic republic of)) => [ q(ir), q(Iran (Islamic Republic of)) ],
+   q(kazakstan) => [ q(kz), q(Kazakstan) ],
+   q(libyan arab jamahiriya) => [ q(ly), q(Libyan Arab Jamahiriya) ],
+   q(macau) => [ q(mo), q(Macau) ],
+   q(micronesia (federated states of)) => [ q(fm), q(Micronesia (Federated States of)) ],
+   q(netherlands antilles) => [ q(an), q(Netherlands Antilles) ],
+   q(saint helena) => [ q(sh), q(Saint Helena) ],
+   q(saint martin) => [ q(mf), q(Saint Martin) ],
+   q(serbia and montenegro) => [ q(cs), q(Serbia and Montenegro) ],
+   q(st. helena) => [ q(sh), q(St. Helena) ],
+   q(st. pierre and miquelon) => [ q(pm), q(St. Pierre and Miquelon) ],
+   q(svalbard and jan mayen islands) => [ q(sj), q(Svalbard and Jan Mayen Islands) ],
+   q(vatican city state (holy see)) => [ q(va), q(Vatican City State (Holy See)) ],
+   q(venezuela) => [ q(ve), q(Venezuela) ],
+   q(vietnam) => [ q(vn), q(Vietnam) ],
+   q(virgin islands (british)) => [ q(vg), q(Virgin Islands (British)) ],
+   q(virgin islands (u.s.)) => [ q(vi), q(Virgin Islands (U.S.)) ],
+   q(wallis and futuna islands) => [ q(wf), q(Wallis and Futuna Islands) ],
+   q(yugoslavia) => [ q(yu), q(Yugoslavia) ],
+   q(zaire) => [ q(zr), q(Zaire) ],
+};
+
+$Locale::Codes::Retired{'country'}{'alpha-3'}{'name'} = {
+   q(antarctica) => [ q(ata), q(Antarctica) ],
+   q(bolivia) => [ q(bol), q(Bolivia) ],
+   q(bouvet island) => [ q(bvt), q(Bouvet Island) ],
+   q(british indian ocean territory) => [ q(iot), q(British Indian Ocean Territory) ],
+   q(christmas island) => [ q(cxr), q(Christmas Island) ],
+   q(cocos (keeling) islands) => [ q(cck), q(Cocos (Keeling) Islands) ],
+   q(congo, the democratic republic of the) => [ q(cod), q(Congo, The Democratic Republic of the) ],
+   q(east timor) => [ q(tls), q(East Timor) ],
+   q(faroe islands) => [ q(fro), q(Faroe Islands) ],
+   q(france, metropolitan) => [ q(fxx), q(France, Metropolitan) ],
+   q(french southern and antarctic lands) => [ q(atf), q(French Southern and Antarctic Lands) ],
+   q(french southern territories) => [ q(atf), q(French Southern Territories) ],
+   q(heard island and mcdonald islands) => [ q(hmd), q(Heard Island and Mcdonald Islands) ],
+   q(holy see (vatican city state)) => [ q(vat), q(Holy See (Vatican City State)) ],
+   q(hong kong) => [ q(hkg), q(Hong Kong) ],
+   q(hong kong special administrative region of china) => [ q(hkg), q(Hong Kong Special Administrative Region of China) ],
+   q(iran, islamic republic of) => [ q(irn), q(Iran, Islamic Republic of) ],
+   q(kazakstan) => [ q(kaz), q(Kazakstan) ],
+   q(korea, democratic people's republic of) => [ q(prk), q(Korea, Democratic People's Republic of) ],
+   q(korea, republic of) => [ q(kor), q(Korea, Republic of) ],
+   q(libyan arab jamahiriya) => [ q(lby), q(Libyan Arab Jamahiriya) ],
+   q(macao) => [ q(mac), q(Macao) ],
+   q(macao special administrative region of china) => [ q(mac), q(Macao Special Administrative Region of China) ],
+   q(macau) => [ q(mac), q(Macau) ],
+   q(macedonia, the former yugoslav republic of) => [ q(mkd), q(Macedonia, the Former Yugoslav Republic of) ],
+   q(micronesia, federated states of) => [ q(fsm), q(Micronesia, Federated States of) ],
+   q(moldova, republic of) => [ q(mda), q(Moldova, Republic of) ],
+   q(netherlands antilles) => [ q(ant), q(Netherlands Antilles) ],
+   q(palestinian territory, occupied) => [ q(pse), q(Palestinian Territory, Occupied) ],
+   q(serbia and montenegro) => [ q(scg), q(Serbia and Montenegro) ],
+   q(south georgia and the islands) => [ q(sgs), q(South Georgia and the Islands) ],
+   q(south georgia and the south sandwich islands) => [ q(sgs), q(South Georgia and the South Sandwich Islands) ],
+   q(svalbard and jan mayen) => [ q(sjm), q(Svalbard and Jan Mayen) ],
+   q(taiwan) => [ q(twn), q(Taiwan) ],
+   q(taiwan, province of china) => [ q(twn), q(Taiwan, Province of China) ],
+   q(tanzania, united republic of) => [ q(tza), q(Tanzania, United Republic of) ],
+   q(united kingdom) => [ q(gbr), q(United Kingdom) ],
+   q(united states) => [ q(usa), q(United States) ],
+   q(united states minor outlying islands) => [ q(umi), q(United States Minor Outlying Islands) ],
+   q(venezuela) => [ q(ven), q(Venezuela) ],
+   q(vietnam) => [ q(vnm), q(Vietnam) ],
+   q(virgin islands, british) => [ q(vgb), q(Virgin Islands, British) ],
+   q(virgin islands, u.s.) => [ q(vir), q(Virgin Islands, U.S.) ],
+   q(wallis and futuna) => [ q(wlf), q(Wallis and Futuna) ],
+   q(yugoslavia) => [ q(yug), q(Yugoslavia) ],
+   q(zaire) => [ q(zar), q(Zaire) ],
+};
+
+$Locale::Codes::Retired{'country'}{'dom'}{'name'} = {
+   q(bonaire, saint eustatius and saba) => [ q(BQ), q(Bonaire, Saint Eustatius and Saba) ],
+   q(bonaire, sint eustatius and saba) => [ q(BQ), q(Bonaire, Sint Eustatius and Saba) ],
+   q(france, metropolitan) => [ q(FX), q(France, Metropolitan) ],
+   q(libyan arab jamahiriya) => [ q(LY), q(Libyan Arab Jamahiriya) ],
+   q(portuguese timor) => [ q(TP), q(Portuguese Timor) ],
+   q(portuguese timor ) => [ q(TP), q(Portuguese Timor ) ],
+   q(saint helena, ascension and tristan da cunha) => [ q(SH), q(Saint Helena, Ascension and Tristan da Cunha) ],
+   q(saint martin) => [ q(MF), q(Saint Martin) ],
+   q(soviet union) => [ q(SU), q(Soviet Union) ],
+   q(soviet union ) => [ q(SU), q(Soviet Union ) ],
+   q(taiwan) => [ q(TW), q(Taiwan) ],
+   q(yugoslavia ) => [ q(YU), q(Yugoslavia ) ],
+};
+
+$Locale::Codes::Retired{'country'}{'fips-10'}{'name'} = {
+   q(arab republic of egypt) => [ q(EG), q(Arab Republic of Egypt) ],
+   q(argentine republic) => [ q(AR), q(Argentine Republic) ],
+   q(bailiwick of guernsey) => [ q(GK), q(Bailiwick of Guernsey) ],
+   q(bailiwick of jersey) => [ q(JE), q(Bailiwick of Jersey) ],
+   q(bolivarian republic of venezuela) => [ q(VE), q(Bolivarian Republic of Venezuela) ],
+   q(british virgin islands) => [ q(VI), q(British Virgin Islands) ],
+   q(co-operative republic of guyana) => [ q(GY), q(Co-operative Republic of Guyana) ],
+   q(commonwealth of australia) => [ q(AS), q(Commonwealth of Australia) ],
+   q(commonwealth of dominica) => [ q(DO), q(Commonwealth of Dominica) ],
+   q(commonwealth of puerto rico) => [ q(RQ), q(Commonwealth of Puerto Rico) ],
+   q(commonwealth of the bahamas) => [ q(BF), q(Commonwealth of the Bahamas) ],
+   q(commonwealth of the northern mariana islands) => [ q(CQ), q(Commonwealth of the Northern Mariana Islands) ],
+   q(coral sea islands territory) => [ q(CR), q(Coral Sea Islands Territory) ],
+   q(curacao) => [ q(UC), q(Curacao) ],
+   q(democratic republic of sao tome and principe) => [ q(TP), q(Democratic Republic of Sao Tome and Principe) ],
+   q(democratic socialist republic of sri lanka) => [ q(CE), q(Democratic Socialist Republic of Sri Lanka) ],
+   q(department of guadeloupe) => [ q(GP), q(Department of Guadeloupe) ],
+   q(department of guiana) => [ q(FG), q(Department of Guiana) ],
+   q(department of martinique) => [ q(MB), q(Department of Martinique) ],
+   q(department of reunion) => [ q(RE), q(Department of Reunion) ],
+   q(east timor) => [ q(TT), q(East Timor) ],
+   q(federal democratic republic of ethiopia) => [ q(ET), q(Federal Democratic Republic of Ethiopia) ],
+   q(federal islamic republic of the comoros) => [ q(CN), q(Federal Islamic Republic of the Comoros) ],
+   q(federal republic of germany) => [ q(GM), q(Federal Republic of Germany) ],
+   q(federal republic of nigeria) => [ q(NI), q(Federal Republic of Nigeria) ],
+   q(federated states of micronesia) => [ q(FM), q(Federated States of Micronesia) ],
+   q(federation of saint kitts and nevis) => [ q(SC), q(Federation of Saint Kitts and Nevis) ],
+   q(federative republic of brazil) => [ q(BR), q(Federative Republic of Brazil) ],
+   q(french republic) => [ q(FR), q(French Republic) ],
+   q(gabonese republic) => [ q(GB), q(Gabonese Republic) ],
+   q(grand duchy of luxembourg) => [ q(LU), q(Grand Duchy of Luxembourg) ],
+   q(great socialist people's libyan arab jamahiriya) => [ q(LY), q(Great Socialist People's Libyan Arab Jamahiriya) ],
+   q(hashemite kingdom of jordan) => [ q(JO), q(Hashemite Kingdom of Jordan) ],
+   q(heard island and mcdonald islands) => [ q(HM), q(Heard Island and Mcdonald Islands) ],
+   q(hellenic republic) => [ q(GR), q(Hellenic Republic) ],
+   q(hong kong s.a.r.) => [ q(HK), q(Hong Kong S.A.R.) ],
+   q(hong kong special administrative region) => [ q(HK), q(Hong Kong Special Administrative Region) ],
+   q(independent state of papua new guinea) => [ q(PP), q(Independent State of Papua New Guinea) ],
+   q(independent state of samoa) => [ q(WS), q(Independent State of Samoa) ],
+   q(islamic republic of iran) => [ q(IR), q(Islamic Republic of Iran) ],
+   q(islamic republic of mauritania) => [ q(MR), q(Islamic Republic of Mauritania) ],
+   q(islamic republic of pakistan) => [ q(PK), q(Islamic Republic of Pakistan) ],
+   q(islamic state of afghanistan) => [ q(AF), q(Islamic State of Afghanistan) ],
+   q(italian republic) => [ q(IT), q(Italian Republic) ],
+   q(kingdom of belgium) => [ q(BE), q(Kingdom of Belgium) ],
+   q(kingdom of bhutan) => [ q(BT), q(Kingdom of Bhutan) ],
+   q(kingdom of cambodia) => [ q(CB), q(Kingdom of Cambodia) ],
+   q(kingdom of denmark) => [ q(DA), q(Kingdom of Denmark) ],
+   q(kingdom of morocco) => [ q(MO), q(Kingdom of Morocco) ],
+   q(kingdom of nepal) => [ q(NP), q(Kingdom of Nepal) ],
+   q(kingdom of norway) => [ q(NO), q(Kingdom of Norway) ],
+   q(kingdom of saudi arabia) => [ q(SA), q(Kingdom of Saudi Arabia) ],
+   q(kingdom of spain) => [ q(SP), q(Kingdom of Spain) ],
+   q(kingdom of swaziland) => [ q(WZ), q(Kingdom of Swaziland) ],
+   q(kingdom of sweden) => [ q(SW), q(Kingdom of Sweden) ],
+   q(kingdom of thailand) => [ q(TH), q(Kingdom of Thailand) ],
+   q(kingdom of the netherlands) => [ q(NL), q(Kingdom of the Netherlands) ],
+   q(kingdom of tonga) => [ q(TN), q(Kingdom of Tonga) ],
+   q(kosovo) => [ q(KV), q(Kosovo) ],
+   q(kyrgyz republic) => [ q(KG), q(Kyrgyz Republic) ],
+   q(lebanese republic) => [ q(LE), q(Lebanese Republic) ],
+   q(macau s.a.r) => [ q(MC), q(Macau S.A.R) ],
+   q(macau special administrative region) => [ q(MC), q(Macau Special Administrative Region) ],
+   q(montenegro) => [ q(MJ), q(Montenegro) ],
+   q(negara brunei darussalam) => [ q(BX), q(Negara Brunei Darussalam) ],
+   q(netherlands antilles) => [ q(NT), q(Netherlands Antilles) ],
+   q(oriental republic of uruguay) => [ q(UY), q(Oriental Republic of Uruguay) ],
+   q(people's democratic republic of algeria) => [ q(AG), q(People's Democratic Republic of Algeria) ],
+   q(people's republic of bangladesh) => [ q(BG), q(People's Republic of Bangladesh) ],
+   q(people's republic of china) => [ q(CH), q(People's Republic of China) ],
+   q(pitcairn, henderson, ducie and oeno islands) => [ q(PC), q(Pitcairn, Henderson, Ducie and Oeno Islands) ],
+   q(portuguese republic) => [ q(PO), q(Portuguese Republic) ],
+   q(principality of andorra) => [ q(AN), q(Principality of Andorra) ],
+   q(principality of liechtenstein) => [ q(LS), q(Principality of Liechtenstein) ],
+   q(principality of monaco) => [ q(MN), q(Principality of Monaco) ],
+   q(republic of albania) => [ q(AL), q(Republic of Albania) ],
+   q(republic of angola) => [ q(AO), q(Republic of Angola) ],
+   q(republic of armenia) => [ q(AM), q(Republic of Armenia) ],
+   q(republic of austria) => [ q(AU), q(Republic of Austria) ],
+   q(republic of azerbaijan) => [ q(AJ), q(Republic of Azerbaijan) ],
+   q(republic of belarus) => [ q(BO), q(Republic of Belarus) ],
+   q(republic of benin) => [ q(BN), q(Republic of Benin) ],
+   q(republic of bolivia) => [ q(BL), q(Republic of Bolivia) ],
+   q(republic of botswana) => [ q(BC), q(Republic of Botswana) ],
+   q(republic of burundi) => [ q(BY), q(Republic of Burundi) ],
+   q(republic of cameroon) => [ q(CM), q(Republic of Cameroon) ],
+   q(republic of cape verde) => [ q(CV), q(Republic of Cape Verde) ],
+   q(republic of chad) => [ q(CD), q(Republic of Chad) ],
+   q(republic of chile) => [ q(CI), q(Republic of Chile) ],
+   q(republic of colombia) => [ q(CO), q(Republic of Colombia) ],
+   q(republic of costa rica) => [ q(CS), q(Republic of Costa Rica) ],
+   q(republic of cote d'ivoire) => [ q(IV), q(Republic of Cote D'Ivoire) ],
+   q(republic of croatia) => [ q(HR), q(Republic of Croatia) ],
+   q(republic of cuba) => [ q(CU), q(Republic of Cuba) ],
+   q(republic of cyprus) => [ q(CY), q(Republic of Cyprus) ],
+   q(republic of djibouti) => [ q(DJ), q(Republic of Djibouti) ],
+   q(republic of ecuador) => [ q(EC), q(Republic of Ecuador) ],
+   q(republic of el salvador) => [ q(ES), q(Republic of El Salvador) ],
+   q(republic of equatorial guinea) => [ q(EK), q(Republic of Equatorial Guinea) ],
+   q(republic of estonia) => [ q(EN), q(Republic of Estonia) ],
+   q(republic of finland) => [ q(FI), q(Republic of Finland) ],
+   q(republic of ghana) => [ q(GH), q(Republic of Ghana) ],
+   q(republic of guatemala) => [ q(GT), q(Republic of Guatemala) ],
+   q(republic of guinea) => [ q(GV), q(Republic of Guinea) ],
+   q(republic of guinea-bissau) => [ q(PU), q(Republic of Guinea-Bissau) ],
+   q(republic of haiti) => [ q(HA), q(Republic of Haiti) ],
+   q(republic of honduras) => [ q(HO), q(Republic of Honduras) ],
+   q(republic of hungary) => [ q(HU), q(Republic of Hungary) ],
+   q(republic of iceland) => [ q(IC), q(Republic of Iceland) ],
+   q(republic of india) => [ q(IN), q(Republic of India) ],
+   q(republic of indonesia) => [ q(ID), q(Republic of Indonesia) ],
+   q(republic of iraq) => [ q(IZ), q(Republic of Iraq) ],
+   q(republic of kazakhstan) => [ q(KZ), q(Republic of Kazakhstan) ],
+   q(republic of kenya) => [ q(KE), q(Republic of Kenya) ],
+   q(republic of kiribati) => [ q(KR), q(Republic of Kiribati) ],
+   q(republic of latvia) => [ q(LG), q(Republic of Latvia) ],
+   q(republic of lesotho) => [ q(LT), q(Republic of Lesotho) ],
+   q(republic of liberia) => [ q(LI), q(Republic of Liberia) ],
+   q(republic of lithuania) => [ q(LH), q(Republic of Lithuania) ],
+   q(republic of macedonia) => [ q(MK), q(Republic of Macedonia) ],
+   q(republic of madagascar) => [ q(MA), q(Republic of Madagascar) ],
+   q(republic of malawi) => [ q(MI), q(Republic of Malawi) ],
+   q(republic of maldives) => [ q(MV), q(Republic of Maldives) ],
+   q(republic of mali) => [ q(ML), q(Republic of Mali) ],
+   q(republic of malta) => [ q(MT), q(Republic of Malta) ],
+   q(republic of mauritius) => [ q(MP), q(Republic of Mauritius) ],
+   q(republic of mozambique) => [ q(MZ), q(Republic of Mozambique) ],
+   q(republic of namibia) => [ q(WA), q(Republic of Namibia) ],
+   q(republic of nauru) => [ q(NR), q(Republic of Nauru) ],
+   q(republic of nicaragua) => [ q(NU), q(Republic of Nicaragua) ],
+   q(republic of niger) => [ q(NG), q(Republic of Niger) ],
+   q(republic of palau) => [ q(PS), q(Republic of Palau) ],
+   q(republic of panama) => [ q(PM), q(Republic of Panama) ],
+   q(republic of paraguay) => [ q(PA), q(Republic of Paraguay) ],
+   q(republic of peru) => [ q(PE), q(Republic of Peru) ],
+   q(republic of poland) => [ q(PL), q(Republic of Poland) ],
+   q(republic of san marino) => [ q(SM), q(Republic of San Marino) ],
+   q(republic of senegal) => [ q(SG), q(Republic of Senegal) ],
+   q(republic of seychelles) => [ q(SE), q(Republic of Seychelles) ],
+   q(republic of sierra leone) => [ q(SL), q(Republic of Sierra Leone) ],
+   q(republic of singapore) => [ q(SN), q(Republic of Singapore) ],
+   q(republic of slovenia) => [ q(SI), q(Republic of Slovenia) ],
+   q(republic of south africa) => [ q(SF), q(Republic of South Africa) ],
+   q(republic of suriname) => [ q(NS), q(Republic of Suriname) ],
+   q(republic of tajikistan) => [ q(TI), q(Republic of Tajikistan) ],
+   q(republic of the congo) => [ q(CF), q(Republic of the Congo) ],
+   q(republic of the fiji islands) => [ q(FJ), q(Republic of the Fiji Islands) ],
+   q(republic of the gambia) => [ q(GA), q(Republic of the Gambia) ],
+   q(republic of the marshall islands) => [ q(RM), q(Republic of the Marshall Islands) ],
+   q(republic of the philippines) => [ q(RP), q(Republic of the Philippines) ],
+   q(republic of the sudan) => [ q(SU), q(Republic of the Sudan) ],
+   q(republic of trinidad and tobago) => [ q(TD), q(Republic of Trinidad and Tobago) ],
+   q(republic of tunisia) => [ q(TS), q(Republic of Tunisia) ],
+   q(republic of turkey) => [ q(TU), q(Republic of Turkey) ],
+   q(republic of uzbekistan) => [ q(UZ), q(Republic of Uzbekistan) ],
+   q(republic of vanuatu) => [ q(NH), q(Republic of Vanuatu) ],
+   q(republic of yemen) => [ q(YM), q(Republic of Yemen) ],
+   q(republic of zambia) => [ q(ZA), q(Republic of Zambia) ],
+   q(republic of zimbabwe) => [ q(ZI), q(Republic of Zimbabwe) ],
+   q(rwandese republic) => [ q(RW), q(Rwandese Republic) ],
+   q(saint barthelemy) => [ q(TB), q(Saint Barthelemy) ],
+   q(saint helena) => [ q(SH), q(Saint Helena) ],
+   q(saint martin) => [ q(RN), q(Saint Martin) ],
+   q(serbia) => [ q(RI), q(Serbia) ],
+   q(serbia and montenegro) => [ q(YI), q(Serbia and Montenegro) ],
+   q(sint maarten) => [ q(NN), q(Sint Maarten) ],
+   q(slovak republic) => [ q(LO), q(Slovak Republic) ],
+   q(socialist republic of vietnam) => [ q(VM), q(Socialist Republic of Vietnam) ],
+   q(south georgia and the south sandwich islands) => [ q(SX), q(South Georgia and the South Sandwich Islands) ],
+   q(state of bahrain) => [ q(BA), q(State of Bahrain) ],
+   q(state of eritrea) => [ q(ER), q(State of Eritrea) ],
+   q(state of israel) => [ q(IS), q(State of Israel) ],
+   q(state of kuwait) => [ q(KU), q(State of Kuwait) ],
+   q(state of qatar) => [ q(QA), q(State of Qatar) ],
+   q(state of the vatican city) => [ q(VT), q(State of the Vatican City) ],
+   q(sultanate of oman) => [ q(MU), q(Sultanate of Oman) ],
+   q(swiss confederation) => [ q(SZ), q(Swiss Confederation) ],
+   q(territorial collectivity of mayotte) => [ q(MF), q(Territorial Collectivity of Mayotte) ],
+   q(territorial collectivity of saint pierre and miquelon) => [ q(SB), q(Territorial Collectivity of Saint Pierre and Miquelon) ],
+   q(territory of american samoa) => [ q(AQ), q(Territory of American Samoa) ],
+   q(territory of ashmore and cartier islands) => [ q(AT), q(Territory of Ashmore and Cartier Islands) ],
+   q(territory of christmas island) => [ q(KT), q(Territory of Christmas Island) ],
+   q(territory of cocos (keeling) islands) => [ q(CK), q(Territory of Cocos (Keeling) Islands) ],
+   q(territory of french polynesia) => [ q(FP), q(Territory of French Polynesia) ],
+   q(territory of guam) => [ q(GQ), q(Territory of Guam) ],
+   q(territory of heard island and mcdonald islands) => [ q(HM), q(Territory of Heard Island and McDonald Islands) ],
+   q(territory of new caledonia and dependencies) => [ q(NC), q(Territory of New Caledonia and Dependencies) ],
+   q(territory of norfolk island) => [ q(NF), q(Territory of Norfolk Island) ],
+   q(territory of the french southern and antarctic lands) => [ q(FS), q(Territory of the French Southern and Antarctic Lands) ],
+   q(territory of the wallis and futuna islands) => [ q(WF), q(Territory of the Wallis and Futuna Islands) ],
+   q(togolese republic) => [ q(TO), q(Togolese Republic) ],
+   q(union of burma) => [ q(BM), q(Union of Burma) ],
+   q(united mexican states) => [ q(MX), q(United Mexican States) ],
+   q(virgin islands) => [ q(VQ), q(Virgin Islands) ],
+   q(virgin islands of the united states) => [ q(VQ), q(Virgin Islands of the United States) ],
+   q(wake atoll) => [ q(WQ), q(Wake Atoll) ],
+};
+
+$Locale::Codes::Retired{'country'}{'numeric'}{'name'} = {
+   q(antarctica) => [ q(010), q(Antarctica) ],
+   q(bolivia) => [ q(068), q(Bolivia) ],
+   q(bouvet island) => [ q(074), q(Bouvet Island) ],
+   q(british indian ocean territory) => [ q(086), q(British Indian Ocean Territory) ],
+   q(christmas island) => [ q(162), q(Christmas Island) ],
+   q(cocos (keeling) islands) => [ q(166), q(Cocos (Keeling) Islands) ],
+   q(congo, the democratic republic of the) => [ q(180), q(Congo, The Democratic Republic of the) ],
+   q(east timor) => [ q(626), q(East Timor) ],
+   q(faroe islands) => [ q(234), q(Faroe Islands) ],
+   q(france, metropolitan) => [ q(249), q(France, Metropolitan) ],
+   q(french southern and antarctic lands) => [ q(260), q(French Southern and Antarctic Lands) ],
+   q(french southern territories) => [ q(260), q(French Southern Territories) ],
+   q(heard island and mcdonald islands) => [ q(334), q(Heard Island and Mcdonald Islands) ],
+   q(holy see (vatican city state)) => [ q(336), q(Holy See (Vatican City State)) ],
+   q(hong kong) => [ q(344), q(Hong Kong) ],
+   q(hong kong special administrative region of china) => [ q(344), q(Hong Kong Special Administrative Region of China) ],
+   q(iran, islamic republic of) => [ q(364), q(Iran, Islamic Republic of) ],
+   q(kazakstan) => [ q(398), q(Kazakstan) ],
+   q(korea, democratic people's republic of) => [ q(408), q(Korea, Democratic People's Republic of) ],
+   q(korea, republic of) => [ q(410), q(Korea, Republic of) ],
+   q(libyan arab jamahiriya) => [ q(434), q(Libyan Arab Jamahiriya) ],
+   q(macao) => [ q(446), q(Macao) ],
+   q(macao special administrative region of china) => [ q(446), q(Macao Special Administrative Region of China) ],
+   q(macau) => [ q(446), q(Macau) ],
+   q(macedonia, the former yugoslav republic of) => [ q(807), q(Macedonia, the Former Yugoslav Republic of) ],
+   q(micronesia, federated states of) => [ q(583), q(Micronesia, Federated States of) ],
+   q(moldova, republic of) => [ q(498), q(Moldova, Republic of) ],
+   q(netherlands antilles) => [ q(530), q(Netherlands Antilles) ],
+   q(palestinian territory, occupied) => [ q(275), q(Palestinian Territory, Occupied) ],
+   q(serbia and montenegro) => [ q(891), q(Serbia and Montenegro) ],
+   q(south georgia and the islands) => [ q(239), q(South Georgia and the Islands) ],
+   q(south georgia and the south sandwich islands) => [ q(239), q(South Georgia and the South Sandwich Islands) ],
+   q(svalbard and jan mayen) => [ q(744), q(Svalbard and Jan Mayen) ],
+   q(taiwan) => [ q(158), q(Taiwan) ],
+   q(taiwan, province of china) => [ q(158), q(Taiwan, Province of China) ],
+   q(tanzania, united republic of) => [ q(834), q(Tanzania, United Republic of) ],
+   q(united kingdom) => [ q(826), q(United Kingdom) ],
+   q(united states) => [ q(840), q(United States) ],
+   q(united states minor outlying islands) => [ q(581), q(United States Minor Outlying Islands) ],
+   q(venezuela) => [ q(862), q(Venezuela) ],
+   q(vietnam) => [ q(704), q(Vietnam) ],
+   q(virgin islands, british) => [ q(092), q(Virgin Islands, British) ],
+   q(virgin islands, u.s.) => [ q(850), q(Virgin Islands, U.S.) ],
+   q(wallis and futuna) => [ q(876), q(Wallis and Futuna) ],
+   q(yugoslavia) => [ q(891), q(Yugoslavia) ],
+   q(zaire) => [ q(180), q(Zaire) ],
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,127 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Currency - standard codes for currency identification
+
+=head1 SYNOPSIS
+
+    use Locale::Codes::Currency;
+
+    $curr = code2currency('usd');     # $curr gets 'US Dollar'
+    $code = currency2code('Euro');    # $code gets 'eur'
+
+    @codes   = all_currency_codes();
+    @names   = all_currency_names();
+
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::Currency> module provides access to standard codes used
+for identifying currencies and funds, such as those defined in ISO 4217.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+4217 three-letter codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+currencies. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $curr = code2currency('usd','alpha');
+   $curr = code2currency('usd',LOCALE_CURR_ALPHA);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha, LOCALE_CURR_ALPHA>
+
+This is a set of three-letter (uppercase) codes from ISO 4217 such
+as EUR for Euro.
+
+Two of the codes specified by the standard (XTS which is reserved
+for testing purposes and XXX which is for transactions where no
+currency is involved) are omitted.
+
+This is the default code set.
+
+=item B<num, LOCALE_CURR_NUMERIC>
+
+This is the set of three-digit numeric codes from ISO 4217.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2currency ( CODE [,CODESET] )>
+
+=item B<currency2code ( NAME [,CODESET] )>
+
+=item B<currency_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_currency_codes ( [CODESET] )>
+
+=item B<all_currency_names ( [CODESET] )>
+
+=item B<Locale::Codes::Currency::rename_currency  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::Currency::add_currency  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::Currency::delete_currency  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::Currency::add_currency_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::Currency::delete_currency_alias  ( NAME )>
+
+=item B<Locale::Codes::Currency::rename_currency_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Currency::add_currency_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Currency::delete_currency_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.iso.org/iso/support/currency_codes_list-1.htm>
+
+The ISO 4217 data.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001      Michael Hennecke
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3108 @@
+package Locale::Codes::Currency_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:26 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Currency_Codes - currency codes for the Locale::Codes::Currency module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Currency module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'currency'}{'id'} = '0180';
+
+$Locale::Codes::Data{'currency'}{'id2names'} = {
+   q(0001) => [
+      q(Afghani),
+      ],
+   q(0002) => [
+      q(Euro),
+      ],
+   q(0003) => [
+      q(Lek),
+      ],
+   q(0004) => [
+      q(Algerian Dinar),
+      ],
+   q(0005) => [
+      q(US Dollar),
+      ],
+   q(0006) => [
+      q(Kwanza),
+      ],
+   q(0007) => [
+      q(East Caribbean Dollar),
+      ],
+   q(0008) => [
+      q(Argentine Peso),
+      ],
+   q(0009) => [
+      q(Armenian Dram),
+      ],
+   q(0010) => [
+      q(Aruban Florin),
+      ],
+   q(0011) => [
+      q(Australian Dollar),
+      ],
+   q(0012) => [
+      q(Azerbaijanian Manat),
+      ],
+   q(0013) => [
+      q(Bahamian Dollar),
+      ],
+   q(0014) => [
+      q(Bahraini Dinar),
+      ],
+   q(0015) => [
+      q(Taka),
+      ],
+   q(0016) => [
+      q(Barbados Dollar),
+      ],
+   q(0017) => [
+      q(Belarussian Ruble),
+      ],
+   q(0018) => [
+      q(Belize Dollar),
+      ],
+   q(0019) => [
+      q(CFA Franc BCEAO),
+      ],
+   q(0020) => [
+      q(Bermudian Dollar),
+      ],
+   q(0021) => [
+      q(Ngultrum),
+      ],
+   q(0022) => [
+      q(Indian Rupee),
+      ],
+   q(0023) => [
+      q(Boliviano),
+      ],
+   q(0024) => [
+      q(Mvdol),
+      ],
+   q(0025) => [
+      q(Convertible Mark),
+      ],
+   q(0026) => [
+      q(Pula),
+      ],
+   q(0027) => [
+      q(Norwegian Krone),
+      ],
+   q(0028) => [
+      q(Brazilian Real),
+      ],
+   q(0029) => [
+      q(Brunei Dollar),
+      ],
+   q(0030) => [
+      q(Bulgarian Lev),
+      ],
+   q(0031) => [
+      q(Burundi Franc),
+      ],
+   q(0032) => [
+      q(Riel),
+      ],
+   q(0033) => [
+      q(CFA Franc BEAC),
+      ],
+   q(0034) => [
+      q(Canadian Dollar),
+      ],
+   q(0035) => [
+      q(Cape Verde Escudo),
+      ],
+   q(0036) => [
+      q(Cayman Islands Dollar),
+      ],
+   q(0037) => [
+      q(Unidades de fomento),
+      ],
+   q(0038) => [
+      q(Chilean Peso),
+      ],
+   q(0039) => [
+      q(Yuan Renminbi),
+      ],
+   q(0040) => [
+      q(Colombian Peso),
+      ],
+   q(0041) => [
+      q(Unidad de Valor Real),
+      ],
+   q(0042) => [
+      q(Comoro Franc),
+      ],
+   q(0043) => [
+      q(Congolese Franc),
+      ],
+   q(0044) => [
+      q(New Zealand Dollar),
+      ],
+   q(0045) => [
+      q(Costa Rican Colon),
+      ],
+   q(0046) => [
+      q(Croatian Kuna),
+      ],
+   q(0047) => [
+      q(Peso Convertible),
+      ],
+   q(0048) => [
+      q(Cuban Peso),
+      ],
+   q(0049) => [
+      q(Netherlands Antillean Guilder),
+      ],
+   q(0050) => [
+      q(Czech Koruna),
+      ],
+   q(0051) => [
+      q(Danish Krone),
+      ],
+   q(0052) => [
+      q(Djibouti Franc),
+      ],
+   q(0053) => [
+      q(Dominican Peso),
+      ],
+   q(0054) => [
+      q(Egyptian Pound),
+      ],
+   q(0055) => [
+      q(El Salvador Colon),
+      ],
+   q(0056) => [
+      q(Nakfa),
+      ],
+   q(0057) => [
+      q(Ethiopian Birr),
+      ],
+   q(0058) => [
+      q(Falkland Islands Pound),
+      ],
+   q(0059) => [
+      q(Fiji Dollar),
+      ],
+   q(0060) => [
+      q(CFP Franc),
+      ],
+   q(0061) => [
+      q(Dalasi),
+      ],
+   q(0062) => [
+      q(Lari),
+      ],
+   q(0063) => [
+      q(Ghana Cedi),
+      ],
+   q(0064) => [
+      q(Gibraltar Pound),
+      ],
+   q(0065) => [
+      q(Quetzal),
+      ],
+   q(0066) => [
+      q(Pound Sterling),
+      ],
+   q(0067) => [
+      q(Guinea Franc),
+      ],
+   q(0068) => [
+      q(Guyana Dollar),
+      ],
+   q(0069) => [
+      q(Gourde),
+      ],
+   q(0070) => [
+      q(Lempira),
+      ],
+   q(0071) => [
+      q(Hong Kong Dollar),
+      ],
+   q(0072) => [
+      q(Forint),
+      ],
+   q(0073) => [
+      q(Iceland Krona),
+      ],
+   q(0074) => [
+      q(Rupiah),
+      ],
+   q(0075) => [
+      q(SDR (Special Drawing Right)),
+      ],
+   q(0076) => [
+      q(Iranian Rial),
+      ],
+   q(0077) => [
+      q(Iraqi Dinar),
+      ],
+   q(0078) => [
+      q(New Israeli Sheqel),
+      ],
+   q(0079) => [
+      q(Jamaican Dollar),
+      ],
+   q(0080) => [
+      q(Yen),
+      ],
+   q(0081) => [
+      q(Jordanian Dinar),
+      ],
+   q(0082) => [
+      q(Tenge),
+      ],
+   q(0083) => [
+      q(Kenyan Shilling),
+      ],
+   q(0084) => [
+      q(North Korean Won),
+      ],
+   q(0085) => [
+      q(Won),
+      ],
+   q(0086) => [
+      q(Kuwaiti Dinar),
+      ],
+   q(0087) => [
+      q(Som),
+      ],
+   q(0088) => [
+      q(Kip),
+      ],
+   q(0089) => [
+      q(Latvian Lats),
+      ],
+   q(0090) => [
+      q(Lebanese Pound),
+      ],
+   q(0091) => [
+      q(Loti),
+      ],
+   q(0092) => [
+      q(Rand),
+      ],
+   q(0093) => [
+      q(Liberian Dollar),
+      ],
+   q(0094) => [
+      q(Libyan Dinar),
+      ],
+   q(0095) => [
+      q(Swiss Franc),
+      ],
+   q(0096) => [
+      q(Lithuanian Litas),
+      ],
+   q(0097) => [
+      q(Pataca),
+      ],
+   q(0098) => [
+      q(Denar),
+      ],
+   q(0099) => [
+      q(Malagasy Ariary),
+      ],
+   q(0100) => [
+      q(Kwacha),
+      ],
+   q(0101) => [
+      q(Malaysian Ringgit),
+      ],
+   q(0102) => [
+      q(Rufiyaa),
+      ],
+   q(0103) => [
+      q(Ouguiya),
+      ],
+   q(0104) => [
+      q(Mauritius Rupee),
+      ],
+   q(0105) => [
+      q(ADB Unit of Account),
+      ],
+   q(0106) => [
+      q(Mexican Peso),
+      ],
+   q(0107) => [
+      q(Mexican Unidad de Inversion (UDI)),
+      ],
+   q(0108) => [
+      q(Moldovan Leu),
+      ],
+   q(0109) => [
+      q(Tugrik),
+      ],
+   q(0110) => [
+      q(Moroccan Dirham),
+      ],
+   q(0111) => [
+      q(Mozambique Metical),
+      ],
+   q(0112) => [
+      q(Kyat),
+      ],
+   q(0113) => [
+      q(Namibia Dollar),
+      ],
+   q(0114) => [
+      q(Nepalese Rupee),
+      ],
+   q(0115) => [
+      q(Cordoba Oro),
+      ],
+   q(0116) => [
+      q(Naira),
+      ],
+   q(0117) => [
+      q(Rial Omani),
+      ],
+   q(0118) => [
+      q(Pakistan Rupee),
+      ],
+   q(0119) => [
+      q(Balboa),
+      ],
+   q(0120) => [
+      q(Kina),
+      ],
+   q(0121) => [
+      q(Guarani),
+      ],
+   q(0122) => [
+      q(Nuevo Sol),
+      ],
+   q(0123) => [
+      q(Philippine Peso),
+      ],
+   q(0124) => [
+      q(Zloty),
+      ],
+   q(0125) => [
+      q(Qatari Rial),
+      ],
+   q(0126) => [
+      q(New Romanian Leu),
+      ],
+   q(0127) => [
+      q(Russian Ruble),
+      ],
+   q(0128) => [
+      q(Rwanda Franc),
+      ],
+   q(0129) => [
+      q(Saint Helena Pound),
+      ],
+   q(0130) => [
+      q(Tala),
+      ],
+   q(0131) => [
+      q(Dobra),
+      ],
+   q(0132) => [
+      q(Saudi Riyal),
+      ],
+   q(0133) => [
+      q(Serbian Dinar),
+      ],
+   q(0134) => [
+      q(Seychelles Rupee),
+      ],
+   q(0135) => [
+      q(Leone),
+      ],
+   q(0136) => [
+      q(Singapore Dollar),
+      ],
+   q(0137) => [
+      q(Sucre),
+      ],
+   q(0138) => [
+      q(Solomon Islands Dollar),
+      ],
+   q(0139) => [
+      q(Somali Shilling),
+      ],
+   q(0140) => [
+      q(South Sudanese Pound),
+      ],
+   q(0141) => [
+      q(Sri Lanka Rupee),
+      ],
+   q(0142) => [
+      q(Sudanese Pound),
+      ],
+   q(0143) => [
+      q(Surinam Dollar),
+      ],
+   q(0144) => [
+      q(Lilangeni),
+      ],
+   q(0145) => [
+      q(Swedish Krona),
+      ],
+   q(0146) => [
+      q(WIR Euro),
+      ],
+   q(0147) => [
+      q(WIR Franc),
+      ],
+   q(0148) => [
+      q(Syrian Pound),
+      ],
+   q(0149) => [
+      q(New Taiwan Dollar),
+      ],
+   q(0150) => [
+      q(Somoni),
+      ],
+   q(0151) => [
+      q(Tanzanian Shilling),
+      ],
+   q(0152) => [
+      q(Baht),
+      ],
+   q(0153) => [
+      q(Pa'anga),
+      ],
+   q(0154) => [
+      q(Trinidad and Tobago Dollar),
+      ],
+   q(0155) => [
+      q(Tunisian Dinar),
+      ],
+   q(0156) => [
+      q(Turkish Lira),
+      ],
+   q(0157) => [
+      q(Turkmenistan New Manat),
+      ],
+   q(0158) => [
+      q(Uganda Shilling),
+      ],
+   q(0159) => [
+      q(Hryvnia),
+      ],
+   q(0160) => [
+      q(UAE Dirham),
+      ],
+   q(0161) => [
+      q(US Dollar (Next day)),
+      ],
+   q(0162) => [
+      q(US Dollar (Same day)),
+      ],
+   q(0163) => [
+      q(Uruguay Peso en Unidades Indexadas (URUIURUI)),
+      ],
+   q(0164) => [
+      q(Peso Uruguayo),
+      ],
+   q(0165) => [
+      q(Uzbekistan Sum),
+      ],
+   q(0166) => [
+      q(Vatu),
+      ],
+   q(0167) => [
+      q(Bolivar),
+      ],
+   q(0168) => [
+      q(Dong),
+      ],
+   q(0169) => [
+      q(Yemeni Rial),
+      ],
+   q(0170) => [
+      q(Zambian Kwacha),
+      ],
+   q(0171) => [
+      q(Zimbabwe Dollar),
+      ],
+   q(0172) => [
+      q(Bond Markets Unit European Composite Unit (EURCO)),
+      ],
+   q(0173) => [
+      q(Bond Markets Unit European Monetary Unit (E.M.U.-6)),
+      ],
+   q(0174) => [
+      q(Bond Markets Unit European Unit of Account 9 (E.U.A.-9)),
+      ],
+   q(0175) => [
+      q(Bond Markets Unit European Unit of Account 17 (E.U.A.-17)),
+      ],
+   q(0176) => [
+      q(Gold),
+      ],
+   q(0177) => [
+      q(Palladium),
+      ],
+   q(0178) => [
+      q(Platinum),
+      ],
+   q(0179) => [
+      q(Silver),
+      ],
+};
+
+$Locale::Codes::Data{'currency'}{'alias2id'} = {
+   q(adb unit of account) => [
+      q(0105),
+      q(0),
+      ],
+   q(afghani) => [
+      q(0001),
+      q(0),
+      ],
+   q(algerian dinar) => [
+      q(0004),
+      q(0),
+      ],
+   q(argentine peso) => [
+      q(0008),
+      q(0),
+      ],
+   q(armenian dram) => [
+      q(0009),
+      q(0),
+      ],
+   q(aruban florin) => [
+      q(0010),
+      q(0),
+      ],
+   q(australian dollar) => [
+      q(0011),
+      q(0),
+      ],
+   q(azerbaijanian manat) => [
+      q(0012),
+      q(0),
+      ],
+   q(bahamian dollar) => [
+      q(0013),
+      q(0),
+      ],
+   q(bahraini dinar) => [
+      q(0014),
+      q(0),
+      ],
+   q(baht) => [
+      q(0152),
+      q(0),
+      ],
+   q(balboa) => [
+      q(0119),
+      q(0),
+      ],
+   q(barbados dollar) => [
+      q(0016),
+      q(0),
+      ],
+   q(belarussian ruble) => [
+      q(0017),
+      q(0),
+      ],
+   q(belize dollar) => [
+      q(0018),
+      q(0),
+      ],
+   q(bermudian dollar) => [
+      q(0020),
+      q(0),
+      ],
+   q(bolivar) => [
+      q(0167),
+      q(0),
+      ],
+   q(boliviano) => [
+      q(0023),
+      q(0),
+      ],
+   q(bond markets unit european composite unit (eurco)) => [
+      q(0172),
+      q(0),
+      ],
+   q(bond markets unit european monetary unit (e.m.u.-6)) => [
+      q(0173),
+      q(0),
+      ],
+   q(bond markets unit european unit of account 17 (e.u.a.-17)) => [
+      q(0175),
+      q(0),
+      ],
+   q(bond markets unit european unit of account 9 (e.u.a.-9)) => [
+      q(0174),
+      q(0),
+      ],
+   q(brazilian real) => [
+      q(0028),
+      q(0),
+      ],
+   q(brunei dollar) => [
+      q(0029),
+      q(0),
+      ],
+   q(bulgarian lev) => [
+      q(0030),
+      q(0),
+      ],
+   q(burundi franc) => [
+      q(0031),
+      q(0),
+      ],
+   q(canadian dollar) => [
+      q(0034),
+      q(0),
+      ],
+   q(cape verde escudo) => [
+      q(0035),
+      q(0),
+      ],
+   q(cayman islands dollar) => [
+      q(0036),
+      q(0),
+      ],
+   q(cfa franc bceao) => [
+      q(0019),
+      q(0),
+      ],
+   q(cfa franc beac) => [
+      q(0033),
+      q(0),
+      ],
+   q(cfp franc) => [
+      q(0060),
+      q(0),
+      ],
+   q(chilean peso) => [
+      q(0038),
+      q(0),
+      ],
+   q(colombian peso) => [
+      q(0040),
+      q(0),
+      ],
+   q(comoro franc) => [
+      q(0042),
+      q(0),
+      ],
+   q(congolese franc) => [
+      q(0043),
+      q(0),
+      ],
+   q(convertible mark) => [
+      q(0025),
+      q(0),
+      ],
+   q(cordoba oro) => [
+      q(0115),
+      q(0),
+      ],
+   q(costa rican colon) => [
+      q(0045),
+      q(0),
+      ],
+   q(croatian kuna) => [
+      q(0046),
+      q(0),
+      ],
+   q(cuban peso) => [
+      q(0048),
+      q(0),
+      ],
+   q(czech koruna) => [
+      q(0050),
+      q(0),
+      ],
+   q(dalasi) => [
+      q(0061),
+      q(0),
+      ],
+   q(danish krone) => [
+      q(0051),
+      q(0),
+      ],
+   q(denar) => [
+      q(0098),
+      q(0),
+      ],
+   q(djibouti franc) => [
+      q(0052),
+      q(0),
+      ],
+   q(dobra) => [
+      q(0131),
+      q(0),
+      ],
+   q(dominican peso) => [
+      q(0053),
+      q(0),
+      ],
+   q(dong) => [
+      q(0168),
+      q(0),
+      ],
+   q(east caribbean dollar) => [
+      q(0007),
+      q(0),
+      ],
+   q(egyptian pound) => [
+      q(0054),
+      q(0),
+      ],
+   q(el salvador colon) => [
+      q(0055),
+      q(0),
+      ],
+   q(ethiopian birr) => [
+      q(0057),
+      q(0),
+      ],
+   q(euro) => [
+      q(0002),
+      q(0),
+      ],
+   q(falkland islands pound) => [
+      q(0058),
+      q(0),
+      ],
+   q(fiji dollar) => [
+      q(0059),
+      q(0),
+      ],
+   q(forint) => [
+      q(0072),
+      q(0),
+      ],
+   q(ghana cedi) => [
+      q(0063),
+      q(0),
+      ],
+   q(gibraltar pound) => [
+      q(0064),
+      q(0),
+      ],
+   q(gold) => [
+      q(0176),
+      q(0),
+      ],
+   q(gourde) => [
+      q(0069),
+      q(0),
+      ],
+   q(guarani) => [
+      q(0121),
+      q(0),
+      ],
+   q(guinea franc) => [
+      q(0067),
+      q(0),
+      ],
+   q(guyana dollar) => [
+      q(0068),
+      q(0),
+      ],
+   q(hong kong dollar) => [
+      q(0071),
+      q(0),
+      ],
+   q(hryvnia) => [
+      q(0159),
+      q(0),
+      ],
+   q(iceland krona) => [
+      q(0073),
+      q(0),
+      ],
+   q(indian rupee) => [
+      q(0022),
+      q(0),
+      ],
+   q(iranian rial) => [
+      q(0076),
+      q(0),
+      ],
+   q(iraqi dinar) => [
+      q(0077),
+      q(0),
+      ],
+   q(jamaican dollar) => [
+      q(0079),
+      q(0),
+      ],
+   q(jordanian dinar) => [
+      q(0081),
+      q(0),
+      ],
+   q(kenyan shilling) => [
+      q(0083),
+      q(0),
+      ],
+   q(kina) => [
+      q(0120),
+      q(0),
+      ],
+   q(kip) => [
+      q(0088),
+      q(0),
+      ],
+   q(kuwaiti dinar) => [
+      q(0086),
+      q(0),
+      ],
+   q(kwacha) => [
+      q(0100),
+      q(0),
+      ],
+   q(kwanza) => [
+      q(0006),
+      q(0),
+      ],
+   q(kyat) => [
+      q(0112),
+      q(0),
+      ],
+   q(lari) => [
+      q(0062),
+      q(0),
+      ],
+   q(latvian lats) => [
+      q(0089),
+      q(0),
+      ],
+   q(lebanese pound) => [
+      q(0090),
+      q(0),
+      ],
+   q(lek) => [
+      q(0003),
+      q(0),
+      ],
+   q(lempira) => [
+      q(0070),
+      q(0),
+      ],
+   q(leone) => [
+      q(0135),
+      q(0),
+      ],
+   q(liberian dollar) => [
+      q(0093),
+      q(0),
+      ],
+   q(libyan dinar) => [
+      q(0094),
+      q(0),
+      ],
+   q(lilangeni) => [
+      q(0144),
+      q(0),
+      ],
+   q(lithuanian litas) => [
+      q(0096),
+      q(0),
+      ],
+   q(loti) => [
+      q(0091),
+      q(0),
+      ],
+   q(malagasy ariary) => [
+      q(0099),
+      q(0),
+      ],
+   q(malaysian ringgit) => [
+      q(0101),
+      q(0),
+      ],
+   q(mauritius rupee) => [
+      q(0104),
+      q(0),
+      ],
+   q(mexican peso) => [
+      q(0106),
+      q(0),
+      ],
+   q(mexican unidad de inversion (udi)) => [
+      q(0107),
+      q(0),
+      ],
+   q(moldovan leu) => [
+      q(0108),
+      q(0),
+      ],
+   q(moroccan dirham) => [
+      q(0110),
+      q(0),
+      ],
+   q(mozambique metical) => [
+      q(0111),
+      q(0),
+      ],
+   q(mvdol) => [
+      q(0024),
+      q(0),
+      ],
+   q(naira) => [
+      q(0116),
+      q(0),
+      ],
+   q(nakfa) => [
+      q(0056),
+      q(0),
+      ],
+   q(namibia dollar) => [
+      q(0113),
+      q(0),
+      ],
+   q(nepalese rupee) => [
+      q(0114),
+      q(0),
+      ],
+   q(netherlands antillean guilder) => [
+      q(0049),
+      q(0),
+      ],
+   q(new israeli sheqel) => [
+      q(0078),
+      q(0),
+      ],
+   q(new romanian leu) => [
+      q(0126),
+      q(0),
+      ],
+   q(new taiwan dollar) => [
+      q(0149),
+      q(0),
+      ],
+   q(new zealand dollar) => [
+      q(0044),
+      q(0),
+      ],
+   q(ngultrum) => [
+      q(0021),
+      q(0),
+      ],
+   q(north korean won) => [
+      q(0084),
+      q(0),
+      ],
+   q(norwegian krone) => [
+      q(0027),
+      q(0),
+      ],
+   q(nuevo sol) => [
+      q(0122),
+      q(0),
+      ],
+   q(ouguiya) => [
+      q(0103),
+      q(0),
+      ],
+   q(pa'anga) => [
+      q(0153),
+      q(0),
+      ],
+   q(pakistan rupee) => [
+      q(0118),
+      q(0),
+      ],
+   q(palladium) => [
+      q(0177),
+      q(0),
+      ],
+   q(pataca) => [
+      q(0097),
+      q(0),
+      ],
+   q(peso convertible) => [
+      q(0047),
+      q(0),
+      ],
+   q(peso uruguayo) => [
+      q(0164),
+      q(0),
+      ],
+   q(philippine peso) => [
+      q(0123),
+      q(0),
+      ],
+   q(platinum) => [
+      q(0178),
+      q(0),
+      ],
+   q(pound sterling) => [
+      q(0066),
+      q(0),
+      ],
+   q(pula) => [
+      q(0026),
+      q(0),
+      ],
+   q(qatari rial) => [
+      q(0125),
+      q(0),
+      ],
+   q(quetzal) => [
+      q(0065),
+      q(0),
+      ],
+   q(rand) => [
+      q(0092),
+      q(0),
+      ],
+   q(rial omani) => [
+      q(0117),
+      q(0),
+      ],
+   q(riel) => [
+      q(0032),
+      q(0),
+      ],
+   q(rufiyaa) => [
+      q(0102),
+      q(0),
+      ],
+   q(rupiah) => [
+      q(0074),
+      q(0),
+      ],
+   q(russian ruble) => [
+      q(0127),
+      q(0),
+      ],
+   q(rwanda franc) => [
+      q(0128),
+      q(0),
+      ],
+   q(saint helena pound) => [
+      q(0129),
+      q(0),
+      ],
+   q(saudi riyal) => [
+      q(0132),
+      q(0),
+      ],
+   q(sdr (special drawing right)) => [
+      q(0075),
+      q(0),
+      ],
+   q(serbian dinar) => [
+      q(0133),
+      q(0),
+      ],
+   q(seychelles rupee) => [
+      q(0134),
+      q(0),
+      ],
+   q(silver) => [
+      q(0179),
+      q(0),
+      ],
+   q(singapore dollar) => [
+      q(0136),
+      q(0),
+      ],
+   q(solomon islands dollar) => [
+      q(0138),
+      q(0),
+      ],
+   q(som) => [
+      q(0087),
+      q(0),
+      ],
+   q(somali shilling) => [
+      q(0139),
+      q(0),
+      ],
+   q(somoni) => [
+      q(0150),
+      q(0),
+      ],
+   q(south sudanese pound) => [
+      q(0140),
+      q(0),
+      ],
+   q(sri lanka rupee) => [
+      q(0141),
+      q(0),
+      ],
+   q(sucre) => [
+      q(0137),
+      q(0),
+      ],
+   q(sudanese pound) => [
+      q(0142),
+      q(0),
+      ],
+   q(surinam dollar) => [
+      q(0143),
+      q(0),
+      ],
+   q(swedish krona) => [
+      q(0145),
+      q(0),
+      ],
+   q(swiss franc) => [
+      q(0095),
+      q(0),
+      ],
+   q(syrian pound) => [
+      q(0148),
+      q(0),
+      ],
+   q(taka) => [
+      q(0015),
+      q(0),
+      ],
+   q(tala) => [
+      q(0130),
+      q(0),
+      ],
+   q(tanzanian shilling) => [
+      q(0151),
+      q(0),
+      ],
+   q(tenge) => [
+      q(0082),
+      q(0),
+      ],
+   q(trinidad and tobago dollar) => [
+      q(0154),
+      q(0),
+      ],
+   q(tugrik) => [
+      q(0109),
+      q(0),
+      ],
+   q(tunisian dinar) => [
+      q(0155),
+      q(0),
+      ],
+   q(turkish lira) => [
+      q(0156),
+      q(0),
+      ],
+   q(turkmenistan new manat) => [
+      q(0157),
+      q(0),
+      ],
+   q(uae dirham) => [
+      q(0160),
+      q(0),
+      ],
+   q(uganda shilling) => [
+      q(0158),
+      q(0),
+      ],
+   q(unidad de valor real) => [
+      q(0041),
+      q(0),
+      ],
+   q(unidades de fomento) => [
+      q(0037),
+      q(0),
+      ],
+   q(uruguay peso en unidades indexadas (uruiurui)) => [
+      q(0163),
+      q(0),
+      ],
+   q(us dollar) => [
+      q(0005),
+      q(0),
+      ],
+   q(us dollar (next day)) => [
+      q(0161),
+      q(0),
+      ],
+   q(us dollar (same day)) => [
+      q(0162),
+      q(0),
+      ],
+   q(uzbekistan sum) => [
+      q(0165),
+      q(0),
+      ],
+   q(vatu) => [
+      q(0166),
+      q(0),
+      ],
+   q(wir euro) => [
+      q(0146),
+      q(0),
+      ],
+   q(wir franc) => [
+      q(0147),
+      q(0),
+      ],
+   q(won) => [
+      q(0085),
+      q(0),
+      ],
+   q(yemeni rial) => [
+      q(0169),
+      q(0),
+      ],
+   q(yen) => [
+      q(0080),
+      q(0),
+      ],
+   q(yuan renminbi) => [
+      q(0039),
+      q(0),
+      ],
+   q(zambian kwacha) => [
+      q(0170),
+      q(0),
+      ],
+   q(zimbabwe dollar) => [
+      q(0171),
+      q(0),
+      ],
+   q(zloty) => [
+      q(0124),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'currency'}{'code2id'} = {
+   q(alpha) => {
+      q(AED) => [
+         q(0160),
+         q(0),
+         ],
+      q(AFN) => [
+         q(0001),
+         q(0),
+         ],
+      q(ALL) => [
+         q(0003),
+         q(0),
+         ],
+      q(AMD) => [
+         q(0009),
+         q(0),
+         ],
+      q(ANG) => [
+         q(0049),
+         q(0),
+         ],
+      q(AOA) => [
+         q(0006),
+         q(0),
+         ],
+      q(ARS) => [
+         q(0008),
+         q(0),
+         ],
+      q(AUD) => [
+         q(0011),
+         q(0),
+         ],
+      q(AWG) => [
+         q(0010),
+         q(0),
+         ],
+      q(AZN) => [
+         q(0012),
+         q(0),
+         ],
+      q(BAM) => [
+         q(0025),
+         q(0),
+         ],
+      q(BBD) => [
+         q(0016),
+         q(0),
+         ],
+      q(BDT) => [
+         q(0015),
+         q(0),
+         ],
+      q(BGN) => [
+         q(0030),
+         q(0),
+         ],
+      q(BHD) => [
+         q(0014),
+         q(0),
+         ],
+      q(BIF) => [
+         q(0031),
+         q(0),
+         ],
+      q(BMD) => [
+         q(0020),
+         q(0),
+         ],
+      q(BND) => [
+         q(0029),
+         q(0),
+         ],
+      q(BOB) => [
+         q(0023),
+         q(0),
+         ],
+      q(BOV) => [
+         q(0024),
+         q(0),
+         ],
+      q(BRL) => [
+         q(0028),
+         q(0),
+         ],
+      q(BSD) => [
+         q(0013),
+         q(0),
+         ],
+      q(BTN) => [
+         q(0021),
+         q(0),
+         ],
+      q(BWP) => [
+         q(0026),
+         q(0),
+         ],
+      q(BYR) => [
+         q(0017),
+         q(0),
+         ],
+      q(BZD) => [
+         q(0018),
+         q(0),
+         ],
+      q(CAD) => [
+         q(0034),
+         q(0),
+         ],
+      q(CDF) => [
+         q(0043),
+         q(0),
+         ],
+      q(CHE) => [
+         q(0146),
+         q(0),
+         ],
+      q(CHF) => [
+         q(0095),
+         q(0),
+         ],
+      q(CHW) => [
+         q(0147),
+         q(0),
+         ],
+      q(CLF) => [
+         q(0037),
+         q(0),
+         ],
+      q(CLP) => [
+         q(0038),
+         q(0),
+         ],
+      q(CNY) => [
+         q(0039),
+         q(0),
+         ],
+      q(COP) => [
+         q(0040),
+         q(0),
+         ],
+      q(COU) => [
+         q(0041),
+         q(0),
+         ],
+      q(CRC) => [
+         q(0045),
+         q(0),
+         ],
+      q(CUC) => [
+         q(0047),
+         q(0),
+         ],
+      q(CUP) => [
+         q(0048),
+         q(0),
+         ],
+      q(CVE) => [
+         q(0035),
+         q(0),
+         ],
+      q(CZK) => [
+         q(0050),
+         q(0),
+         ],
+      q(DJF) => [
+         q(0052),
+         q(0),
+         ],
+      q(DKK) => [
+         q(0051),
+         q(0),
+         ],
+      q(DOP) => [
+         q(0053),
+         q(0),
+         ],
+      q(DZD) => [
+         q(0004),
+         q(0),
+         ],
+      q(EGP) => [
+         q(0054),
+         q(0),
+         ],
+      q(ERN) => [
+         q(0056),
+         q(0),
+         ],
+      q(ETB) => [
+         q(0057),
+         q(0),
+         ],
+      q(EUR) => [
+         q(0002),
+         q(0),
+         ],
+      q(FJD) => [
+         q(0059),
+         q(0),
+         ],
+      q(FKP) => [
+         q(0058),
+         q(0),
+         ],
+      q(GBP) => [
+         q(0066),
+         q(0),
+         ],
+      q(GEL) => [
+         q(0062),
+         q(0),
+         ],
+      q(GHS) => [
+         q(0063),
+         q(0),
+         ],
+      q(GIP) => [
+         q(0064),
+         q(0),
+         ],
+      q(GMD) => [
+         q(0061),
+         q(0),
+         ],
+      q(GNF) => [
+         q(0067),
+         q(0),
+         ],
+      q(GTQ) => [
+         q(0065),
+         q(0),
+         ],
+      q(GYD) => [
+         q(0068),
+         q(0),
+         ],
+      q(HKD) => [
+         q(0071),
+         q(0),
+         ],
+      q(HNL) => [
+         q(0070),
+         q(0),
+         ],
+      q(HRK) => [
+         q(0046),
+         q(0),
+         ],
+      q(HTG) => [
+         q(0069),
+         q(0),
+         ],
+      q(HUF) => [
+         q(0072),
+         q(0),
+         ],
+      q(IDR) => [
+         q(0074),
+         q(0),
+         ],
+      q(ILS) => [
+         q(0078),
+         q(0),
+         ],
+      q(INR) => [
+         q(0022),
+         q(0),
+         ],
+      q(IQD) => [
+         q(0077),
+         q(0),
+         ],
+      q(IRR) => [
+         q(0076),
+         q(0),
+         ],
+      q(ISK) => [
+         q(0073),
+         q(0),
+         ],
+      q(JMD) => [
+         q(0079),
+         q(0),
+         ],
+      q(JOD) => [
+         q(0081),
+         q(0),
+         ],
+      q(JPY) => [
+         q(0080),
+         q(0),
+         ],
+      q(KES) => [
+         q(0083),
+         q(0),
+         ],
+      q(KGS) => [
+         q(0087),
+         q(0),
+         ],
+      q(KHR) => [
+         q(0032),
+         q(0),
+         ],
+      q(KMF) => [
+         q(0042),
+         q(0),
+         ],
+      q(KPW) => [
+         q(0084),
+         q(0),
+         ],
+      q(KRW) => [
+         q(0085),
+         q(0),
+         ],
+      q(KWD) => [
+         q(0086),
+         q(0),
+         ],
+      q(KYD) => [
+         q(0036),
+         q(0),
+         ],
+      q(KZT) => [
+         q(0082),
+         q(0),
+         ],
+      q(LAK) => [
+         q(0088),
+         q(0),
+         ],
+      q(LBP) => [
+         q(0090),
+         q(0),
+         ],
+      q(LKR) => [
+         q(0141),
+         q(0),
+         ],
+      q(LRD) => [
+         q(0093),
+         q(0),
+         ],
+      q(LSL) => [
+         q(0091),
+         q(0),
+         ],
+      q(LTL) => [
+         q(0096),
+         q(0),
+         ],
+      q(LVL) => [
+         q(0089),
+         q(0),
+         ],
+      q(LYD) => [
+         q(0094),
+         q(0),
+         ],
+      q(MAD) => [
+         q(0110),
+         q(0),
+         ],
+      q(MDL) => [
+         q(0108),
+         q(0),
+         ],
+      q(MGA) => [
+         q(0099),
+         q(0),
+         ],
+      q(MKD) => [
+         q(0098),
+         q(0),
+         ],
+      q(MMK) => [
+         q(0112),
+         q(0),
+         ],
+      q(MNT) => [
+         q(0109),
+         q(0),
+         ],
+      q(MOP) => [
+         q(0097),
+         q(0),
+         ],
+      q(MRO) => [
+         q(0103),
+         q(0),
+         ],
+      q(MUR) => [
+         q(0104),
+         q(0),
+         ],
+      q(MVR) => [
+         q(0102),
+         q(0),
+         ],
+      q(MWK) => [
+         q(0100),
+         q(0),
+         ],
+      q(MXN) => [
+         q(0106),
+         q(0),
+         ],
+      q(MXV) => [
+         q(0107),
+         q(0),
+         ],
+      q(MYR) => [
+         q(0101),
+         q(0),
+         ],
+      q(MZN) => [
+         q(0111),
+         q(0),
+         ],
+      q(NAD) => [
+         q(0113),
+         q(0),
+         ],
+      q(NGN) => [
+         q(0116),
+         q(0),
+         ],
+      q(NIO) => [
+         q(0115),
+         q(0),
+         ],
+      q(NOK) => [
+         q(0027),
+         q(0),
+         ],
+      q(NPR) => [
+         q(0114),
+         q(0),
+         ],
+      q(NZD) => [
+         q(0044),
+         q(0),
+         ],
+      q(OMR) => [
+         q(0117),
+         q(0),
+         ],
+      q(PAB) => [
+         q(0119),
+         q(0),
+         ],
+      q(PEN) => [
+         q(0122),
+         q(0),
+         ],
+      q(PGK) => [
+         q(0120),
+         q(0),
+         ],
+      q(PHP) => [
+         q(0123),
+         q(0),
+         ],
+      q(PKR) => [
+         q(0118),
+         q(0),
+         ],
+      q(PLN) => [
+         q(0124),
+         q(0),
+         ],
+      q(PYG) => [
+         q(0121),
+         q(0),
+         ],
+      q(QAR) => [
+         q(0125),
+         q(0),
+         ],
+      q(RON) => [
+         q(0126),
+         q(0),
+         ],
+      q(RSD) => [
+         q(0133),
+         q(0),
+         ],
+      q(RUB) => [
+         q(0127),
+         q(0),
+         ],
+      q(RWF) => [
+         q(0128),
+         q(0),
+         ],
+      q(SAR) => [
+         q(0132),
+         q(0),
+         ],
+      q(SBD) => [
+         q(0138),
+         q(0),
+         ],
+      q(SCR) => [
+         q(0134),
+         q(0),
+         ],
+      q(SDG) => [
+         q(0142),
+         q(0),
+         ],
+      q(SEK) => [
+         q(0145),
+         q(0),
+         ],
+      q(SGD) => [
+         q(0136),
+         q(0),
+         ],
+      q(SHP) => [
+         q(0129),
+         q(0),
+         ],
+      q(SLL) => [
+         q(0135),
+         q(0),
+         ],
+      q(SOS) => [
+         q(0139),
+         q(0),
+         ],
+      q(SRD) => [
+         q(0143),
+         q(0),
+         ],
+      q(SSP) => [
+         q(0140),
+         q(0),
+         ],
+      q(STD) => [
+         q(0131),
+         q(0),
+         ],
+      q(SVC) => [
+         q(0055),
+         q(0),
+         ],
+      q(SYP) => [
+         q(0148),
+         q(0),
+         ],
+      q(SZL) => [
+         q(0144),
+         q(0),
+         ],
+      q(THB) => [
+         q(0152),
+         q(0),
+         ],
+      q(TJS) => [
+         q(0150),
+         q(0),
+         ],
+      q(TMT) => [
+         q(0157),
+         q(0),
+         ],
+      q(TND) => [
+         q(0155),
+         q(0),
+         ],
+      q(TOP) => [
+         q(0153),
+         q(0),
+         ],
+      q(TRY) => [
+         q(0156),
+         q(0),
+         ],
+      q(TTD) => [
+         q(0154),
+         q(0),
+         ],
+      q(TWD) => [
+         q(0149),
+         q(0),
+         ],
+      q(TZS) => [
+         q(0151),
+         q(0),
+         ],
+      q(UAH) => [
+         q(0159),
+         q(0),
+         ],
+      q(UGX) => [
+         q(0158),
+         q(0),
+         ],
+      q(USD) => [
+         q(0005),
+         q(0),
+         ],
+      q(USN) => [
+         q(0161),
+         q(0),
+         ],
+      q(USS) => [
+         q(0162),
+         q(0),
+         ],
+      q(UYI) => [
+         q(0163),
+         q(0),
+         ],
+      q(UYU) => [
+         q(0164),
+         q(0),
+         ],
+      q(UZS) => [
+         q(0165),
+         q(0),
+         ],
+      q(VEF) => [
+         q(0167),
+         q(0),
+         ],
+      q(VND) => [
+         q(0168),
+         q(0),
+         ],
+      q(VUV) => [
+         q(0166),
+         q(0),
+         ],
+      q(WST) => [
+         q(0130),
+         q(0),
+         ],
+      q(XAF) => [
+         q(0033),
+         q(0),
+         ],
+      q(XAG) => [
+         q(0179),
+         q(0),
+         ],
+      q(XAU) => [
+         q(0176),
+         q(0),
+         ],
+      q(XBA) => [
+         q(0172),
+         q(0),
+         ],
+      q(XBB) => [
+         q(0173),
+         q(0),
+         ],
+      q(XBC) => [
+         q(0174),
+         q(0),
+         ],
+      q(XBD) => [
+         q(0175),
+         q(0),
+         ],
+      q(XCD) => [
+         q(0007),
+         q(0),
+         ],
+      q(XDR) => [
+         q(0075),
+         q(0),
+         ],
+      q(XOF) => [
+         q(0019),
+         q(0),
+         ],
+      q(XPD) => [
+         q(0177),
+         q(0),
+         ],
+      q(XPF) => [
+         q(0060),
+         q(0),
+         ],
+      q(XPT) => [
+         q(0178),
+         q(0),
+         ],
+      q(XSU) => [
+         q(0137),
+         q(0),
+         ],
+      q(XUA) => [
+         q(0105),
+         q(0),
+         ],
+      q(YER) => [
+         q(0169),
+         q(0),
+         ],
+      q(ZAR) => [
+         q(0092),
+         q(0),
+         ],
+      q(ZMW) => [
+         q(0170),
+         q(0),
+         ],
+      q(ZWL) => [
+         q(0171),
+         q(0),
+         ],
+      },
+   q(num) => {
+      q(008) => [
+         q(0003),
+         q(0),
+         ],
+      q(012) => [
+         q(0004),
+         q(0),
+         ],
+      q(032) => [
+         q(0008),
+         q(0),
+         ],
+      q(036) => [
+         q(0011),
+         q(0),
+         ],
+      q(044) => [
+         q(0013),
+         q(0),
+         ],
+      q(048) => [
+         q(0014),
+         q(0),
+         ],
+      q(050) => [
+         q(0015),
+         q(0),
+         ],
+      q(051) => [
+         q(0009),
+         q(0),
+         ],
+      q(052) => [
+         q(0016),
+         q(0),
+         ],
+      q(060) => [
+         q(0020),
+         q(0),
+         ],
+      q(064) => [
+         q(0021),
+         q(0),
+         ],
+      q(068) => [
+         q(0023),
+         q(0),
+         ],
+      q(072) => [
+         q(0026),
+         q(0),
+         ],
+      q(084) => [
+         q(0018),
+         q(0),
+         ],
+      q(090) => [
+         q(0138),
+         q(0),
+         ],
+      q(096) => [
+         q(0029),
+         q(0),
+         ],
+      q(104) => [
+         q(0112),
+         q(0),
+         ],
+      q(108) => [
+         q(0031),
+         q(0),
+         ],
+      q(116) => [
+         q(0032),
+         q(0),
+         ],
+      q(124) => [
+         q(0034),
+         q(0),
+         ],
+      q(132) => [
+         q(0035),
+         q(0),
+         ],
+      q(136) => [
+         q(0036),
+         q(0),
+         ],
+      q(144) => [
+         q(0141),
+         q(0),
+         ],
+      q(152) => [
+         q(0038),
+         q(0),
+         ],
+      q(156) => [
+         q(0039),
+         q(0),
+         ],
+      q(170) => [
+         q(0040),
+         q(0),
+         ],
+      q(174) => [
+         q(0042),
+         q(0),
+         ],
+      q(188) => [
+         q(0045),
+         q(0),
+         ],
+      q(191) => [
+         q(0046),
+         q(0),
+         ],
+      q(192) => [
+         q(0048),
+         q(0),
+         ],
+      q(203) => [
+         q(0050),
+         q(0),
+         ],
+      q(208) => [
+         q(0051),
+         q(0),
+         ],
+      q(214) => [
+         q(0053),
+         q(0),
+         ],
+      q(222) => [
+         q(0055),
+         q(0),
+         ],
+      q(230) => [
+         q(0057),
+         q(0),
+         ],
+      q(232) => [
+         q(0056),
+         q(0),
+         ],
+      q(238) => [
+         q(0058),
+         q(0),
+         ],
+      q(242) => [
+         q(0059),
+         q(0),
+         ],
+      q(262) => [
+         q(0052),
+         q(0),
+         ],
+      q(270) => [
+         q(0061),
+         q(0),
+         ],
+      q(292) => [
+         q(0064),
+         q(0),
+         ],
+      q(320) => [
+         q(0065),
+         q(0),
+         ],
+      q(324) => [
+         q(0067),
+         q(0),
+         ],
+      q(328) => [
+         q(0068),
+         q(0),
+         ],
+      q(332) => [
+         q(0069),
+         q(0),
+         ],
+      q(340) => [
+         q(0070),
+         q(0),
+         ],
+      q(344) => [
+         q(0071),
+         q(0),
+         ],
+      q(348) => [
+         q(0072),
+         q(0),
+         ],
+      q(352) => [
+         q(0073),
+         q(0),
+         ],
+      q(356) => [
+         q(0022),
+         q(0),
+         ],
+      q(360) => [
+         q(0074),
+         q(0),
+         ],
+      q(364) => [
+         q(0076),
+         q(0),
+         ],
+      q(368) => [
+         q(0077),
+         q(0),
+         ],
+      q(376) => [
+         q(0078),
+         q(0),
+         ],
+      q(388) => [
+         q(0079),
+         q(0),
+         ],
+      q(392) => [
+         q(0080),
+         q(0),
+         ],
+      q(398) => [
+         q(0082),
+         q(0),
+         ],
+      q(400) => [
+         q(0081),
+         q(0),
+         ],
+      q(404) => [
+         q(0083),
+         q(0),
+         ],
+      q(408) => [
+         q(0084),
+         q(0),
+         ],
+      q(410) => [
+         q(0085),
+         q(0),
+         ],
+      q(414) => [
+         q(0086),
+         q(0),
+         ],
+      q(417) => [
+         q(0087),
+         q(0),
+         ],
+      q(418) => [
+         q(0088),
+         q(0),
+         ],
+      q(422) => [
+         q(0090),
+         q(0),
+         ],
+      q(426) => [
+         q(0091),
+         q(0),
+         ],
+      q(428) => [
+         q(0089),
+         q(0),
+         ],
+      q(430) => [
+         q(0093),
+         q(0),
+         ],
+      q(434) => [
+         q(0094),
+         q(0),
+         ],
+      q(440) => [
+         q(0096),
+         q(0),
+         ],
+      q(446) => [
+         q(0097),
+         q(0),
+         ],
+      q(454) => [
+         q(0100),
+         q(0),
+         ],
+      q(458) => [
+         q(0101),
+         q(0),
+         ],
+      q(462) => [
+         q(0102),
+         q(0),
+         ],
+      q(478) => [
+         q(0103),
+         q(0),
+         ],
+      q(480) => [
+         q(0104),
+         q(0),
+         ],
+      q(484) => [
+         q(0106),
+         q(0),
+         ],
+      q(496) => [
+         q(0109),
+         q(0),
+         ],
+      q(498) => [
+         q(0108),
+         q(0),
+         ],
+      q(504) => [
+         q(0110),
+         q(0),
+         ],
+      q(512) => [
+         q(0117),
+         q(0),
+         ],
+      q(516) => [
+         q(0113),
+         q(0),
+         ],
+      q(524) => [
+         q(0114),
+         q(0),
+         ],
+      q(532) => [
+         q(0049),
+         q(0),
+         ],
+      q(533) => [
+         q(0010),
+         q(0),
+         ],
+      q(548) => [
+         q(0166),
+         q(0),
+         ],
+      q(554) => [
+         q(0044),
+         q(0),
+         ],
+      q(558) => [
+         q(0115),
+         q(0),
+         ],
+      q(566) => [
+         q(0116),
+         q(0),
+         ],
+      q(578) => [
+         q(0027),
+         q(0),
+         ],
+      q(586) => [
+         q(0118),
+         q(0),
+         ],
+      q(590) => [
+         q(0119),
+         q(0),
+         ],
+      q(598) => [
+         q(0120),
+         q(0),
+         ],
+      q(600) => [
+         q(0121),
+         q(0),
+         ],
+      q(604) => [
+         q(0122),
+         q(0),
+         ],
+      q(608) => [
+         q(0123),
+         q(0),
+         ],
+      q(634) => [
+         q(0125),
+         q(0),
+         ],
+      q(643) => [
+         q(0127),
+         q(0),
+         ],
+      q(646) => [
+         q(0128),
+         q(0),
+         ],
+      q(654) => [
+         q(0129),
+         q(0),
+         ],
+      q(678) => [
+         q(0131),
+         q(0),
+         ],
+      q(682) => [
+         q(0132),
+         q(0),
+         ],
+      q(690) => [
+         q(0134),
+         q(0),
+         ],
+      q(694) => [
+         q(0135),
+         q(0),
+         ],
+      q(702) => [
+         q(0136),
+         q(0),
+         ],
+      q(704) => [
+         q(0168),
+         q(0),
+         ],
+      q(706) => [
+         q(0139),
+         q(0),
+         ],
+      q(710) => [
+         q(0092),
+         q(0),
+         ],
+      q(728) => [
+         q(0140),
+         q(0),
+         ],
+      q(748) => [
+         q(0144),
+         q(0),
+         ],
+      q(752) => [
+         q(0145),
+         q(0),
+         ],
+      q(756) => [
+         q(0095),
+         q(0),
+         ],
+      q(760) => [
+         q(0148),
+         q(0),
+         ],
+      q(764) => [
+         q(0152),
+         q(0),
+         ],
+      q(776) => [
+         q(0153),
+         q(0),
+         ],
+      q(780) => [
+         q(0154),
+         q(0),
+         ],
+      q(784) => [
+         q(0160),
+         q(0),
+         ],
+      q(788) => [
+         q(0155),
+         q(0),
+         ],
+      q(800) => [
+         q(0158),
+         q(0),
+         ],
+      q(807) => [
+         q(0098),
+         q(0),
+         ],
+      q(818) => [
+         q(0054),
+         q(0),
+         ],
+      q(826) => [
+         q(0066),
+         q(0),
+         ],
+      q(834) => [
+         q(0151),
+         q(0),
+         ],
+      q(840) => [
+         q(0005),
+         q(0),
+         ],
+      q(858) => [
+         q(0164),
+         q(0),
+         ],
+      q(860) => [
+         q(0165),
+         q(0),
+         ],
+      q(882) => [
+         q(0130),
+         q(0),
+         ],
+      q(886) => [
+         q(0169),
+         q(0),
+         ],
+      q(901) => [
+         q(0149),
+         q(0),
+         ],
+      q(931) => [
+         q(0047),
+         q(0),
+         ],
+      q(932) => [
+         q(0171),
+         q(0),
+         ],
+      q(934) => [
+         q(0157),
+         q(0),
+         ],
+      q(936) => [
+         q(0063),
+         q(0),
+         ],
+      q(937) => [
+         q(0167),
+         q(0),
+         ],
+      q(938) => [
+         q(0142),
+         q(0),
+         ],
+      q(940) => [
+         q(0163),
+         q(0),
+         ],
+      q(941) => [
+         q(0133),
+         q(0),
+         ],
+      q(943) => [
+         q(0111),
+         q(0),
+         ],
+      q(944) => [
+         q(0012),
+         q(0),
+         ],
+      q(946) => [
+         q(0126),
+         q(0),
+         ],
+      q(947) => [
+         q(0146),
+         q(0),
+         ],
+      q(948) => [
+         q(0147),
+         q(0),
+         ],
+      q(949) => [
+         q(0156),
+         q(0),
+         ],
+      q(950) => [
+         q(0033),
+         q(0),
+         ],
+      q(951) => [
+         q(0007),
+         q(0),
+         ],
+      q(952) => [
+         q(0019),
+         q(0),
+         ],
+      q(953) => [
+         q(0060),
+         q(0),
+         ],
+      q(955) => [
+         q(0172),
+         q(0),
+         ],
+      q(956) => [
+         q(0173),
+         q(0),
+         ],
+      q(957) => [
+         q(0174),
+         q(0),
+         ],
+      q(958) => [
+         q(0175),
+         q(0),
+         ],
+      q(959) => [
+         q(0176),
+         q(0),
+         ],
+      q(960) => [
+         q(0075),
+         q(0),
+         ],
+      q(961) => [
+         q(0179),
+         q(0),
+         ],
+      q(962) => [
+         q(0178),
+         q(0),
+         ],
+      q(964) => [
+         q(0177),
+         q(0),
+         ],
+      q(965) => [
+         q(0105),
+         q(0),
+         ],
+      q(967) => [
+         q(0170),
+         q(0),
+         ],
+      q(968) => [
+         q(0143),
+         q(0),
+         ],
+      q(969) => [
+         q(0099),
+         q(0),
+         ],
+      q(970) => [
+         q(0041),
+         q(0),
+         ],
+      q(971) => [
+         q(0001),
+         q(0),
+         ],
+      q(972) => [
+         q(0150),
+         q(0),
+         ],
+      q(973) => [
+         q(0006),
+         q(0),
+         ],
+      q(974) => [
+         q(0017),
+         q(0),
+         ],
+      q(975) => [
+         q(0030),
+         q(0),
+         ],
+      q(976) => [
+         q(0043),
+         q(0),
+         ],
+      q(977) => [
+         q(0025),
+         q(0),
+         ],
+      q(978) => [
+         q(0002),
+         q(0),
+         ],
+      q(979) => [
+         q(0107),
+         q(0),
+         ],
+      q(980) => [
+         q(0159),
+         q(0),
+         ],
+      q(981) => [
+         q(0062),
+         q(0),
+         ],
+      q(984) => [
+         q(0024),
+         q(0),
+         ],
+      q(985) => [
+         q(0124),
+         q(0),
+         ],
+      q(986) => [
+         q(0028),
+         q(0),
+         ],
+      q(990) => [
+         q(0037),
+         q(0),
+         ],
+      q(994) => [
+         q(0137),
+         q(0),
+         ],
+      q(997) => [
+         q(0161),
+         q(0),
+         ],
+      q(998) => [
+         q(0162),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'currency'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(AFN),
+      q(0002) => q(EUR),
+      q(0003) => q(ALL),
+      q(0004) => q(DZD),
+      q(0005) => q(USD),
+      q(0006) => q(AOA),
+      q(0007) => q(XCD),
+      q(0008) => q(ARS),
+      q(0009) => q(AMD),
+      q(0010) => q(AWG),
+      q(0011) => q(AUD),
+      q(0012) => q(AZN),
+      q(0013) => q(BSD),
+      q(0014) => q(BHD),
+      q(0015) => q(BDT),
+      q(0016) => q(BBD),
+      q(0017) => q(BYR),
+      q(0018) => q(BZD),
+      q(0019) => q(XOF),
+      q(0020) => q(BMD),
+      q(0021) => q(BTN),
+      q(0022) => q(INR),
+      q(0023) => q(BOB),
+      q(0024) => q(BOV),
+      q(0025) => q(BAM),
+      q(0026) => q(BWP),
+      q(0027) => q(NOK),
+      q(0028) => q(BRL),
+      q(0029) => q(BND),
+      q(0030) => q(BGN),
+      q(0031) => q(BIF),
+      q(0032) => q(KHR),
+      q(0033) => q(XAF),
+      q(0034) => q(CAD),
+      q(0035) => q(CVE),
+      q(0036) => q(KYD),
+      q(0037) => q(CLF),
+      q(0038) => q(CLP),
+      q(0039) => q(CNY),
+      q(0040) => q(COP),
+      q(0041) => q(COU),
+      q(0042) => q(KMF),
+      q(0043) => q(CDF),
+      q(0044) => q(NZD),
+      q(0045) => q(CRC),
+      q(0046) => q(HRK),
+      q(0047) => q(CUC),
+      q(0048) => q(CUP),
+      q(0049) => q(ANG),
+      q(0050) => q(CZK),
+      q(0051) => q(DKK),
+      q(0052) => q(DJF),
+      q(0053) => q(DOP),
+      q(0054) => q(EGP),
+      q(0055) => q(SVC),
+      q(0056) => q(ERN),
+      q(0057) => q(ETB),
+      q(0058) => q(FKP),
+      q(0059) => q(FJD),
+      q(0060) => q(XPF),
+      q(0061) => q(GMD),
+      q(0062) => q(GEL),
+      q(0063) => q(GHS),
+      q(0064) => q(GIP),
+      q(0065) => q(GTQ),
+      q(0066) => q(GBP),
+      q(0067) => q(GNF),
+      q(0068) => q(GYD),
+      q(0069) => q(HTG),
+      q(0070) => q(HNL),
+      q(0071) => q(HKD),
+      q(0072) => q(HUF),
+      q(0073) => q(ISK),
+      q(0074) => q(IDR),
+      q(0075) => q(XDR),
+      q(0076) => q(IRR),
+      q(0077) => q(IQD),
+      q(0078) => q(ILS),
+      q(0079) => q(JMD),
+      q(0080) => q(JPY),
+      q(0081) => q(JOD),
+      q(0082) => q(KZT),
+      q(0083) => q(KES),
+      q(0084) => q(KPW),
+      q(0085) => q(KRW),
+      q(0086) => q(KWD),
+      q(0087) => q(KGS),
+      q(0088) => q(LAK),
+      q(0089) => q(LVL),
+      q(0090) => q(LBP),
+      q(0091) => q(LSL),
+      q(0092) => q(ZAR),
+      q(0093) => q(LRD),
+      q(0094) => q(LYD),
+      q(0095) => q(CHF),
+      q(0096) => q(LTL),
+      q(0097) => q(MOP),
+      q(0098) => q(MKD),
+      q(0099) => q(MGA),
+      q(0100) => q(MWK),
+      q(0101) => q(MYR),
+      q(0102) => q(MVR),
+      q(0103) => q(MRO),
+      q(0104) => q(MUR),
+      q(0105) => q(XUA),
+      q(0106) => q(MXN),
+      q(0107) => q(MXV),
+      q(0108) => q(MDL),
+      q(0109) => q(MNT),
+      q(0110) => q(MAD),
+      q(0111) => q(MZN),
+      q(0112) => q(MMK),
+      q(0113) => q(NAD),
+      q(0114) => q(NPR),
+      q(0115) => q(NIO),
+      q(0116) => q(NGN),
+      q(0117) => q(OMR),
+      q(0118) => q(PKR),
+      q(0119) => q(PAB),
+      q(0120) => q(PGK),
+      q(0121) => q(PYG),
+      q(0122) => q(PEN),
+      q(0123) => q(PHP),
+      q(0124) => q(PLN),
+      q(0125) => q(QAR),
+      q(0126) => q(RON),
+      q(0127) => q(RUB),
+      q(0128) => q(RWF),
+      q(0129) => q(SHP),
+      q(0130) => q(WST),
+      q(0131) => q(STD),
+      q(0132) => q(SAR),
+      q(0133) => q(RSD),
+      q(0134) => q(SCR),
+      q(0135) => q(SLL),
+      q(0136) => q(SGD),
+      q(0137) => q(XSU),
+      q(0138) => q(SBD),
+      q(0139) => q(SOS),
+      q(0140) => q(SSP),
+      q(0141) => q(LKR),
+      q(0142) => q(SDG),
+      q(0143) => q(SRD),
+      q(0144) => q(SZL),
+      q(0145) => q(SEK),
+      q(0146) => q(CHE),
+      q(0147) => q(CHW),
+      q(0148) => q(SYP),
+      q(0149) => q(TWD),
+      q(0150) => q(TJS),
+      q(0151) => q(TZS),
+      q(0152) => q(THB),
+      q(0153) => q(TOP),
+      q(0154) => q(TTD),
+      q(0155) => q(TND),
+      q(0156) => q(TRY),
+      q(0157) => q(TMT),
+      q(0158) => q(UGX),
+      q(0159) => q(UAH),
+      q(0160) => q(AED),
+      q(0161) => q(USN),
+      q(0162) => q(USS),
+      q(0163) => q(UYI),
+      q(0164) => q(UYU),
+      q(0165) => q(UZS),
+      q(0166) => q(VUV),
+      q(0167) => q(VEF),
+      q(0168) => q(VND),
+      q(0169) => q(YER),
+      q(0170) => q(ZMW),
+      q(0171) => q(ZWL),
+      q(0172) => q(XBA),
+      q(0173) => q(XBB),
+      q(0174) => q(XBC),
+      q(0175) => q(XBD),
+      q(0176) => q(XAU),
+      q(0177) => q(XPD),
+      q(0178) => q(XPT),
+      q(0179) => q(XAG),
+      },
+   q(num) => {
+      q(0001) => q(971),
+      q(0002) => q(978),
+      q(0003) => q(008),
+      q(0004) => q(012),
+      q(0005) => q(840),
+      q(0006) => q(973),
+      q(0007) => q(951),
+      q(0008) => q(032),
+      q(0009) => q(051),
+      q(0010) => q(533),
+      q(0011) => q(036),
+      q(0012) => q(944),
+      q(0013) => q(044),
+      q(0014) => q(048),
+      q(0015) => q(050),
+      q(0016) => q(052),
+      q(0017) => q(974),
+      q(0018) => q(084),
+      q(0019) => q(952),
+      q(0020) => q(060),
+      q(0021) => q(064),
+      q(0022) => q(356),
+      q(0023) => q(068),
+      q(0024) => q(984),
+      q(0025) => q(977),
+      q(0026) => q(072),
+      q(0027) => q(578),
+      q(0028) => q(986),
+      q(0029) => q(096),
+      q(0030) => q(975),
+      q(0031) => q(108),
+      q(0032) => q(116),
+      q(0033) => q(950),
+      q(0034) => q(124),
+      q(0035) => q(132),
+      q(0036) => q(136),
+      q(0037) => q(990),
+      q(0038) => q(152),
+      q(0039) => q(156),
+      q(0040) => q(170),
+      q(0041) => q(970),
+      q(0042) => q(174),
+      q(0043) => q(976),
+      q(0044) => q(554),
+      q(0045) => q(188),
+      q(0046) => q(191),
+      q(0047) => q(931),
+      q(0048) => q(192),
+      q(0049) => q(532),
+      q(0050) => q(203),
+      q(0051) => q(208),
+      q(0052) => q(262),
+      q(0053) => q(214),
+      q(0054) => q(818),
+      q(0055) => q(222),
+      q(0056) => q(232),
+      q(0057) => q(230),
+      q(0058) => q(238),
+      q(0059) => q(242),
+      q(0060) => q(953),
+      q(0061) => q(270),
+      q(0062) => q(981),
+      q(0063) => q(936),
+      q(0064) => q(292),
+      q(0065) => q(320),
+      q(0066) => q(826),
+      q(0067) => q(324),
+      q(0068) => q(328),
+      q(0069) => q(332),
+      q(0070) => q(340),
+      q(0071) => q(344),
+      q(0072) => q(348),
+      q(0073) => q(352),
+      q(0074) => q(360),
+      q(0075) => q(960),
+      q(0076) => q(364),
+      q(0077) => q(368),
+      q(0078) => q(376),
+      q(0079) => q(388),
+      q(0080) => q(392),
+      q(0081) => q(400),
+      q(0082) => q(398),
+      q(0083) => q(404),
+      q(0084) => q(408),
+      q(0085) => q(410),
+      q(0086) => q(414),
+      q(0087) => q(417),
+      q(0088) => q(418),
+      q(0089) => q(428),
+      q(0090) => q(422),
+      q(0091) => q(426),
+      q(0092) => q(710),
+      q(0093) => q(430),
+      q(0094) => q(434),
+      q(0095) => q(756),
+      q(0096) => q(440),
+      q(0097) => q(446),
+      q(0098) => q(807),
+      q(0099) => q(969),
+      q(0100) => q(454),
+      q(0101) => q(458),
+      q(0102) => q(462),
+      q(0103) => q(478),
+      q(0104) => q(480),
+      q(0105) => q(965),
+      q(0106) => q(484),
+      q(0107) => q(979),
+      q(0108) => q(498),
+      q(0109) => q(496),
+      q(0110) => q(504),
+      q(0111) => q(943),
+      q(0112) => q(104),
+      q(0113) => q(516),
+      q(0114) => q(524),
+      q(0115) => q(558),
+      q(0116) => q(566),
+      q(0117) => q(512),
+      q(0118) => q(586),
+      q(0119) => q(590),
+      q(0120) => q(598),
+      q(0121) => q(600),
+      q(0122) => q(604),
+      q(0123) => q(608),
+      q(0124) => q(985),
+      q(0125) => q(634),
+      q(0126) => q(946),
+      q(0127) => q(643),
+      q(0128) => q(646),
+      q(0129) => q(654),
+      q(0130) => q(882),
+      q(0131) => q(678),
+      q(0132) => q(682),
+      q(0133) => q(941),
+      q(0134) => q(690),
+      q(0135) => q(694),
+      q(0136) => q(702),
+      q(0137) => q(994),
+      q(0138) => q(090),
+      q(0139) => q(706),
+      q(0140) => q(728),
+      q(0141) => q(144),
+      q(0142) => q(938),
+      q(0143) => q(968),
+      q(0144) => q(748),
+      q(0145) => q(752),
+      q(0146) => q(947),
+      q(0147) => q(948),
+      q(0148) => q(760),
+      q(0149) => q(901),
+      q(0150) => q(972),
+      q(0151) => q(834),
+      q(0152) => q(764),
+      q(0153) => q(776),
+      q(0154) => q(780),
+      q(0155) => q(788),
+      q(0156) => q(949),
+      q(0157) => q(934),
+      q(0158) => q(800),
+      q(0159) => q(980),
+      q(0160) => q(784),
+      q(0161) => q(997),
+      q(0162) => q(998),
+      q(0163) => q(940),
+      q(0164) => q(858),
+      q(0165) => q(860),
+      q(0166) => q(548),
+      q(0167) => q(937),
+      q(0168) => q(704),
+      q(0169) => q(886),
+      q(0170) => q(967),
+      q(0171) => q(932),
+      q(0172) => q(955),
+      q(0173) => q(956),
+      q(0174) => q(957),
+      q(0175) => q(958),
+      q(0176) => q(959),
+      q(0177) => q(964),
+      q(0178) => q(962),
+      q(0179) => q(961),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Currency_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,175 @@
+package Locale::Codes::Currency_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Currency_Retired - retired currency codes for the Locale::Codes::Currency module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Currency module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'currency'}{'alpha'}{'code'} = {
+   q(ADP) => q(Andorran Peseta),
+   q(AFA) => q(Afghani),
+   q(AON) => q(New Kwanza),
+   q(AOR) => q(Kwanza Reajustado),
+   q(ATS) => q(Schilling),
+   q(AZM) => q(Azerbaijanian Manat),
+   q(BEF) => q(Belgian Franc),
+   q(BGL) => q(Lev),
+   q(BYB) => q(Belarussian Ruble),
+   q(CYP) => q(Cyprus Pound),
+   q(DEM) => q(German Mark),
+   q(ECS) => q(Sucre),
+   q(ECV) => q(Unidad de Valor Constante (UVC)),
+   q(EEK) => q(Kroon),
+   q(ESP) => q(Spanish Peseta),
+   q(FIM) => q(Markka),
+   q(FRF) => q(French Franc),
+   q(GHC) => q(Cedi),
+   q(GRD) => q(Drachma),
+   q(GWP) => q(Guinea-Bissau Peso),
+   q(IEP) => q(Irish Pound),
+   q(ITL) => q(Italian Lira),
+   q(LUF) => q(Luxembourg Franc),
+   q(MGF) => q(Malagasy Franc),
+   q(MTL) => q(Maltese Lira),
+   q(MZM) => q(Metical),
+   q(NLG) => q(Netherlands Guilder),
+   q(PTE) => q(Portuguese Escudo),
+   q(ROL) => q(Leu),
+   q(RUR) => q(Russian Ruble),
+   q(SDD) => q(Sudanese Dinar),
+   q(SIT) => q(Tolar),
+   q(SKK) => q(Slovak Koruna),
+   q(SRG) => q(Surinam Guilder),
+   q(TJR) => q(Tajik Ruble),
+   q(TMM) => q(Manat),
+   q(TPE) => q(Timor Escudo),
+   q(TRL) => q(Turkish Lira),
+   q(UAK) => q(Karbovanets),
+   q(VEB) => q(Bolivar),
+   q(XB5) => q(European Unit of Account 17),
+   q(XEU) => q(ECU (until 1998-12-31)),
+   q(XFO) => q(Gold-Franc),
+   q(XFU) => q(UIC-Franc),
+   q(YUM) => q(New Dinar),
+   q(ZAL) => q(Financial Rand),
+   q(ZRN) => q(New Zaire),
+   q(ZWD) => q(Zimbabwe Dollar),
+};
+
+$Locale::Codes::Retired{'currency'}{'num'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'currency'}{'alpha'}{'name'} = {
+   q(andorran peseta) => [ q(ADP), q(Andorran Peseta) ],
+   q(aruban guilder) => [ q(AWG), q(Aruban Guilder) ],
+   q(belgian franc) => [ q(BEF), q(Belgian Franc) ],
+   q(bermudian dollar (customarily known as bermuda dollar)) => [ q(BMD), q(Bermudian Dollar (customarily known as Bermuda Dollar)) ],
+   q(bolivar) => [ q(VEB), q(Bolivar) ],
+   q(bolivar fuerte) => [ q(VEF), q(Bolivar Fuerte) ],
+   q(bond markets units european composite unit (eurco)) => [ q(XBA), q(Bond Markets Units European Composite Unit (EURCO)) ],
+   q(candian dollar) => [ q(CAD), q(Candian Dollar) ],
+   q(cedi) => [ q(GHS), q(Cedi) ],
+   q(convertible marks) => [ q(BAM), q(Convertible Marks) ],
+   q(cyprus pound) => [ q(CYP), q(Cyprus Pound) ],
+   q(dinar) => [ q(BHD), q(Dinar) ],
+   q(drachma) => [ q(GRD), q(Drachma) ],
+   q(ecu (until 1998-12-31)) => [ q(XEU), q(ECU (until 1998-12-31)) ],
+   q(european composite unit) => [ q(XBA), q(European Composite Unit) ],
+   q(european monetary unit) => [ q(XBB), q(European Monetary Unit) ],
+   q(european monetary unit (e.m.u.-6)) => [ q(XBB), q(European Monetary Unit (E.M.U.-6)) ],
+   q(european unit of account 17) => [ q(XB5), q(European Unit of Account 17) ],
+   q(european unit of account 17(e.u.a.-17)) => [ q(XBD), q(European Unit of Account 17(E.U.A.-17)) ],
+   q(european unit of account 9) => [ q(XBC), q(European Unit of Account 9) ],
+   q(european unit of account 9(e.u.a.-9)) => [ q(XBC), q(European Unit of Account 9(E.U.A.-9)) ],
+   q(financial rand) => [ q(ZAL), q(Financial Rand) ],
+   q(franc congolais) => [ q(CDF), q(Franc Congolais) ],
+   q(french franc) => [ q(FRF), q(French Franc) ],
+   q(german mark) => [ q(DEM), q(German Mark) ],
+   q(gold-franc) => [ q(XFO), q(Gold-Franc) ],
+   q(guinea-bissau peso) => [ q(GWP), q(Guinea-Bissau Peso) ],
+   q(irish pound) => [ q(IEP), q(Irish Pound) ],
+   q(italian lira) => [ q(ITL), q(Italian Lira) ],
+   q(karbovanets) => [ q(UAK), q(Karbovanets) ],
+   q(kroon) => [ q(EEK), q(Kroon) ],
+   q(kuna) => [ q(HRK), q(Kuna) ],
+   q(kwanza reajustado) => [ q(AOR), q(Kwanza Reajustado) ],
+   q(leu) => [ q(RON), q(Leu) ],
+   q(lev) => [ q(BGL), q(Lev) ],
+   q(luxembourg franc) => [ q(LUF), q(Luxembourg Franc) ],
+   q(malagasy franc) => [ q(MGF), q(Malagasy Franc) ],
+   q(maltese lira) => [ q(MTL), q(Maltese Lira) ],
+   q(manat) => [ q(TMT), q(Manat) ],
+   q(markka) => [ q(FIM), q(Markka) ],
+   q(metical) => [ q(MZN), q(Metical) ],
+   q(mexican nuevo peso) => [ q(MXN), q(Mexican Nuevo Peso) ],
+   q(netherlands antillian guilder) => [ q(ANG), q(Netherlands Antillian Guilder) ],
+   q(netherlands guilder) => [ q(NLG), q(Netherlands Guilder) ],
+   q(new dinar) => [ q(YUM), q(New Dinar) ],
+   q(new kwanza) => [ q(AON), q(New Kwanza) ],
+   q(new leu) => [ q(RON), q(New Leu) ],
+   q(new manat) => [ q(TMT), q(New Manat) ],
+   q(new zaire) => [ q(ZRN), q(New Zaire) ],
+   q(portuguese escudo) => [ q(PTE), q(Portuguese Escudo) ],
+   q(schilling) => [ q(ATS), q(Schilling) ],
+   q(sdr) => [ q(XDR), q(SDR) ],
+   q(shekel) => [ q(ILS), q(Shekel) ],
+   q(slovak koruna) => [ q(SKK), q(Slovak Koruna) ],
+   q(spanish peseta) => [ q(ESP), q(Spanish Peseta) ],
+   q(st. helena pound) => [ q(SHP), q(St. Helena Pound) ],
+   q(sudanese dinar) => [ q(SDD), q(Sudanese Dinar) ],
+   q(surinam guilder) => [ q(SRG), q(Surinam Guilder) ],
+   q(tajik ruble) => [ q(TJR), q(Tajik Ruble) ],
+   q(timor escudo) => [ q(TPE), q(Timor Escudo) ],
+   q(tolar) => [ q(SIT), q(Tolar) ],
+   q(tunisian dollar) => [ q(TND), q(Tunisian Dollar) ],
+   q(uic-franc) => [ q(XFU), q(UIC-Franc) ],
+   q(unidad de valor constante (uvc)) => [ q(ECV), q(Unidad de Valor Constante (UVC)) ],
+   q(unidades de formento) => [ q(CLF), q(Unidades de Formento) ],
+   q(uruguay peso en unidades indexadas) => [ q(UYI), q(Uruguay Peso en Unidades Indexadas) ],
+};
+
+$Locale::Codes::Retired{'currency'}{'num'}{'name'} = {
+   q(bolivar fuerte) => [ q(937), q(Bolivar Fuerte) ],
+   q(cedi) => [ q(936), q(Cedi) ],
+   q(leu) => [ q(946), q(Leu) ],
+   q(metical) => [ q(943), q(Metical) ],
+   q(new manat) => [ q(934), q(New Manat) ],
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,95 @@
+package Locale::Codes::LangExt;
+# Copyright (c) 2011-2013 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+require 5.006;
+use warnings;
+
+require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Codes::Constants;
+use Locale::Codes::LangExt_Codes;
+use Locale::Codes::LangExt_Retired;
+
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
+
+our($VERSION, at ISA, at EXPORT, at EXPORT_OK);
+
+$VERSION='3.25';
+ at ISA       = qw(Exporter);
+ at EXPORT    = qw(code2langext
+                langext2code
+                all_langext_codes
+                all_langext_names
+                langext_code2code
+                LOCALE_LANGEXT_ALPHA
+               );
+
+sub code2langext {
+   return Locale::Codes::_code2name('langext', at _);
+}
+
+sub langext2code {
+   return Locale::Codes::_name2code('langext', at _);
+}
+
+sub langext_code2code {
+   return Locale::Codes::_code2code('langext', at _);
+}
+
+sub all_langext_codes {
+   return Locale::Codes::_all_codes('langext', at _);
+}
+
+sub all_langext_names {
+   return Locale::Codes::_all_names('langext', at _);
+}
+
+sub rename_langext {
+   return Locale::Codes::_rename('langext', at _);
+}
+
+sub add_langext {
+   return Locale::Codes::_add_code('langext', at _);
+}
+
+sub delete_langext {
+   return Locale::Codes::_delete_code('langext', at _);
+}
+
+sub add_langext_alias {
+   return Locale::Codes::_add_alias('langext', at _);
+}
+
+sub delete_langext_alias {
+   return Locale::Codes::_delete_alias('langext', at _);
+}
+
+sub rename_langext_code {
+   return Locale::Codes::_rename_code('langext', at _);
+}
+
+sub add_langext_code_alias {
+   return Locale::Codes::_add_code_alias('langext', at _);
+}
+
+sub delete_langext_code_alias {
+   return Locale::Codes::_delete_code_alias('langext', at _);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangExt - standard codes for language extension identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::LangExt;
+
+   $lext = code2langext('acm');                 # $lext gets 'Mesopotamian Arabic'
+   $code = langext2code('Mesopotamian Arabic'); # $code gets 'acm'
+
+   @codes   = all_langext_codes();
+   @names   = all_langext_names();
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::LangExt> module provides access to standard codes
+used for identifying language extensions, such as those as defined in
+the IANA language registry.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default IANA
+language registry codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+language extensions. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $lext = code2langext('acm','alpha');
+   $lext = code2langext('acm',LOCALE_LANGEXT_ALPHA);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha>
+
+This is the set of three-letter (lowercase) codes from the IANA
+language registry, such as 'acm' for Mesopotamian Arabic. 
+
+This is the default code set.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2langext ( CODE [,CODESET] )>
+
+=item B<langext2code ( NAME [,CODESET] )>
+
+=item B<langext_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_langext_codes ( [CODESET] )>
+
+=item B<all_langext_names ( [CODESET] )>
+
+=item B<Locale::Codes::LangExt::rename_langext  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangExt::add_langext  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangExt::delete_langext  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangExt::add_langext_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::LangExt::delete_langext_alias  ( NAME )>
+
+=item B<Locale::Codes::LangExt::rename_langext_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangExt::add_langext_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangExt::delete_langext_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.iana.org/assignments/language-subtag-registry>
+
+The IANA language subtag registry.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 2011-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2850 @@
+package Locale::Codes::LangExt_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:32 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangExt_Codes - langext codes for the Locale::Codes::LangExt module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangExt module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'langext'}{'id'} = '0228';
+
+$Locale::Codes::Data{'langext'}{'id2names'} = {
+   q(0001) => [
+      q(Algerian Saharan Arabic),
+      ],
+   q(0002) => [
+      q(Tajiki Arabic),
+      ],
+   q(0003) => [
+      q(Baharna Arabic),
+      ],
+   q(0004) => [
+      q(Mesopotamian Arabic),
+      ],
+   q(0005) => [
+      q(Ta'izzi-Adeni Arabic),
+      ],
+   q(0006) => [
+      q(Hijazi Arabic),
+      ],
+   q(0007) => [
+      q(Omani Arabic),
+      ],
+   q(0008) => [
+      q(Cypriot Arabic),
+      ],
+   q(0009) => [
+      q(Dhofari Arabic),
+      ],
+   q(0010) => [
+      q(Adamorobe Sign Language),
+      ],
+   q(0011) => [
+      q(Tunisian Arabic),
+      ],
+   q(0012) => [
+      q(Saidi Arabic),
+      ],
+   q(0013) => [
+      q(Argentine Sign Language),
+      ],
+   q(0014) => [
+      q(Armenian Sign Language),
+      ],
+   q(0015) => [
+      q(Gulf Arabic),
+      ],
+   q(0016) => [
+      q(Afghan Sign Language),
+      ],
+   q(0017) => [
+      q(South Levantine Arabic),
+      ],
+   q(0018) => [
+      q(North Levantine Arabic),
+      ],
+   q(0019) => [
+      q(Sudanese Arabic),
+      ],
+   q(0020) => [
+      q(Standard Arabic),
+      ],
+   q(0021) => [
+      q(Algerian Arabic),
+      ],
+   q(0022) => [
+      q(Najdi Arabic),
+      ],
+   q(0023) => [
+      q(Moroccan Arabic),
+      ],
+   q(0024) => [
+      q(Egyptian Arabic),
+      ],
+   q(0025) => [
+      q(American Sign Language),
+      ],
+   q(0026) => [
+      q(Australian Sign Language),
+      ],
+   q(0027) => [
+      q(Algerian Sign Language),
+      ],
+   q(0028) => [
+      q(Austrian Sign Language),
+      ],
+   q(0029) => [
+      q(Australian Aborigines Sign Language),
+      ],
+   q(0030) => [
+      q(Uzbeki Arabic),
+      ],
+   q(0031) => [
+      q(Eastern Egyptian Bedawi Arabic),
+      ],
+   q(0032) => [
+      q(Hadrami Arabic),
+      ],
+   q(0033) => [
+      q(Libyan Arabic),
+      ],
+   q(0034) => [
+      q(Sanaani Arabic),
+      ],
+   q(0035) => [
+      q(North Mesopotamian Arabic),
+      ],
+   q(0036) => [
+      q(Babalia Creole Arabic),
+      ],
+   q(0037) => [
+      q(British Sign Language),
+      ],
+   q(0038) => [
+      q(Ban Khor Sign Language),
+      ],
+   q(0039) => [
+      q(Banjar),
+      ],
+   q(0040) => [
+      q(Bamako Sign Language),
+      ],
+   q(0041) => [
+      q(Bulgarian Sign Language),
+      ],
+   q(0042) => [
+      q(Bengkala Sign Language),
+      ],
+   q(0043) => [
+      q(Bacanese Malay),
+      ],
+   q(0044) => [
+      q(Berau Malay),
+      ],
+   q(0045) => [
+      q(Bolivian Sign Language),
+      ],
+   q(0046) => [
+      q(Bukit Malay),
+      ],
+   q(0047) => [
+      q(Brazilian Sign Language),
+      ],
+   q(0048) => [
+      q(Min Dong Chinese),
+      ],
+   q(0049) => [
+      q(Chadian Sign Language),
+      ],
+   q(0050) => [
+      q(Jinyu Chinese),
+      ],
+   q(0051) => [
+      q(Mandarin Chinese),
+      ],
+   q(0052) => [
+      q(Cocos Islands Malay),
+      ],
+   q(0053) => [
+      q(Pu-Xian Chinese),
+      ],
+   q(0054) => [
+      q(Catalan Sign Language),
+      q(Lengua de senas catalana),
+      q(Llengua de Signes Catalana),
+      ],
+   q(0055) => [
+      q(Chiangmai Sign Language),
+      ],
+   q(0056) => [
+      q(Czech Sign Language),
+      ],
+   q(0057) => [
+      q(Cuba Sign Language),
+      ],
+   q(0058) => [
+      q(Chilean Sign Language),
+      ],
+   q(0059) => [
+      q(Chinese Sign Language),
+      ],
+   q(0060) => [
+      q(Colombian Sign Language),
+      ],
+   q(0061) => [
+      q(Croatia Sign Language),
+      ],
+   q(0062) => [
+      q(Costa Rican Sign Language),
+      ],
+   q(0063) => [
+      q(Huizhou Chinese),
+      ],
+   q(0064) => [
+      q(Min Zhong Chinese),
+      ],
+   q(0065) => [
+      q(Dominican Sign Language),
+      ],
+   q(0066) => [
+      q(Dutch Sign Language),
+      ],
+   q(0067) => [
+      q(Danish Sign Language),
+      ],
+   q(0068) => [
+      q(Duano),
+      ],
+   q(0069) => [
+      q(Ecuadorian Sign Language),
+      ],
+   q(0070) => [
+      q(Egypt Sign Language),
+      ],
+   q(0071) => [
+      q(Salvadoran Sign Language),
+      ],
+   q(0072) => [
+      q(Estonian Sign Language),
+      ],
+   q(0073) => [
+      q(Ethiopian Sign Language),
+      ],
+   q(0074) => [
+      q(Quebec Sign Language),
+      ],
+   q(0075) => [
+      q(Finnish Sign Language),
+      ],
+   q(0076) => [
+      q(French Sign Language),
+      ],
+   q(0077) => [
+      q(Finland-Swedish Sign Language),
+      q(finlandssvenskt teckensprak),
+      q(suomenruotsalainen viittomakieli),
+      ],
+   q(0078) => [
+      q(Gan Chinese),
+      ],
+   q(0079) => [
+      q(Ghandruk Sign Language),
+      ],
+   q(0080) => [
+      q(Goan Konkani),
+      ],
+   q(0081) => [
+      q(Ghanaian Sign Language),
+      ],
+   q(0082) => [
+      q(German Sign Language),
+      ],
+   q(0083) => [
+      q(Guatemalan Sign Language),
+      ],
+   q(0084) => [
+      q(Greek Sign Language),
+      ],
+   q(0085) => [
+      q(Guinean Sign Language),
+      ],
+   q(0086) => [
+      q(Hanoi Sign Language),
+      ],
+   q(0087) => [
+      q(Haiphong Sign Language),
+      ],
+   q(0088) => [
+      q(Hakka Chinese),
+      ],
+   q(0089) => [
+      q(Honduras Sign Language),
+      ],
+   q(0090) => [
+      q(Haji),
+      ],
+   q(0091) => [
+      q(Hong Kong Sign Language),
+      q(Heung Kong Sau Yue),
+      ],
+   q(0092) => [
+      q(Ho Chi Minh City Sign Language),
+      ],
+   q(0093) => [
+      q(Hawai'i Pidgin Sign Language),
+      ],
+   q(0094) => [
+      q(Hungarian Sign Language),
+      ],
+   q(0095) => [
+      q(Hausa Sign Language),
+      ],
+   q(0096) => [
+      q(Xiang Chinese),
+      ],
+   q(0097) => [
+      q(Icelandic Sign Language),
+      ],
+   q(0098) => [
+      q(International Sign),
+      ],
+   q(0099) => [
+      q(Indonesian Sign Language),
+      ],
+   q(0100) => [
+      q(Indian Sign Language),
+      ],
+   q(0101) => [
+      q(Italian Sign Language),
+      ],
+   q(0102) => [
+      q(Irish Sign Language),
+      ],
+   q(0103) => [
+      q(Israeli Sign Language),
+      ],
+   q(0104) => [
+      q(Jakun),
+      ],
+   q(0105) => [
+      q(Jambi Malay),
+      ],
+   q(0106) => [
+      q(Jamaican Country Sign Language),
+      ],
+   q(0107) => [
+      q(Jhankot Sign Language),
+      ],
+   q(0108) => [
+      q(Jamaican Sign Language),
+      ],
+   q(0109) => [
+      q(Jordanian Sign Language),
+      ],
+   q(0110) => [
+      q(Japanese Sign Language),
+      ],
+   q(0111) => [
+      q(Jumla Sign Language),
+      ],
+   q(0112) => [
+      q(Selangor Sign Language),
+      ],
+   q(0113) => [
+      q(Konkani (individual language)),
+      ],
+   q(0114) => [
+      q(Kubu),
+      ],
+   q(0115) => [
+      q(Korean Sign Language),
+      ],
+   q(0116) => [
+      q(Kerinci),
+      ],
+   q(0117) => [
+      q(Brunei),
+      ],
+   q(0118) => [
+      q(Libyan Sign Language),
+      ],
+   q(0119) => [
+      q(Loncong),
+      ],
+   q(0120) => [
+      q(Lubu),
+      ],
+   q(0121) => [
+      q(Col),
+      ],
+   q(0122) => [
+      q(Lithuanian Sign Language),
+      ],
+   q(0123) => [
+      q(Lyons Sign Language),
+      ],
+   q(0124) => [
+      q(Latvian Sign Language),
+      ],
+   q(0125) => [
+      q(Laos Sign Language),
+      ],
+   q(0126) => [
+      q(Panamanian Sign Language),
+      q(Lengua de Senas Panamenas),
+      ],
+   q(0127) => [
+      q(Trinidad and Tobago Sign Language),
+      ],
+   q(0128) => [
+      q(Mauritian Sign Language),
+      ],
+   q(0129) => [
+      q(Latgalian),
+      ],
+   q(0130) => [
+      q(Standard Latvian),
+      ],
+   q(0131) => [
+      q(Literary Chinese),
+      ],
+   q(0132) => [
+      q(North Moluccan Malay),
+      ],
+   q(0133) => [
+      q(Maltese Sign Language),
+      ],
+   q(0134) => [
+      q(Kedah Malay),
+      ],
+   q(0135) => [
+      q(Pattani Malay),
+      ],
+   q(0136) => [
+      q(Bangka),
+      ],
+   q(0137) => [
+      q(Mexican Sign Language),
+      ],
+   q(0138) => [
+      q(Minangkabau),
+      ],
+   q(0139) => [
+      q(Min Bei Chinese),
+      ],
+   q(0140) => [
+      q(Kota Bangun Kutai Malay),
+      ],
+   q(0141) => [
+      q(Martha's Vineyard Sign Language),
+      ],
+   q(0142) => [
+      q(Yucatec Maya Sign Language),
+      ],
+   q(0143) => [
+      q(Sabah Malay),
+      ],
+   q(0144) => [
+      q(Mongolian Sign Language),
+      ],
+   q(0145) => [
+      q(Musi),
+      ],
+   q(0146) => [
+      q(Madagascar Sign Language),
+      ],
+   q(0147) => [
+      q(Monastic Sign Language),
+      ],
+   q(0148) => [
+      q(Mozambican Sign Language),
+      ],
+   q(0149) => [
+      q(Min Nan Chinese),
+      ],
+   q(0150) => [
+      q(Namibian Sign Language),
+      ],
+   q(0151) => [
+      q(Nicaraguan Sign Language),
+      ],
+   q(0152) => [
+      q(Nigerian Sign Language),
+      ],
+   q(0153) => [
+      q(Norwegian Sign Language),
+      ],
+   q(0154) => [
+      q(Nepalese Sign Language),
+      ],
+   q(0155) => [
+      q(Maritime Sign Language),
+      ],
+   q(0156) => [
+      q(New Zealand Sign Language),
+      ],
+   q(0157) => [
+      q(Old Kentish Sign Language),
+      ],
+   q(0158) => [
+      q(Orang Kanaq),
+      ],
+   q(0159) => [
+      q(Orang Seletar),
+      ],
+   q(0160) => [
+      q(Pekal),
+      ],
+   q(0161) => [
+      q(Sudanese Creole Arabic),
+      ],
+   q(0162) => [
+      q(Pakistan Sign Language),
+      ],
+   q(0163) => [
+      q(Peruvian Sign Language),
+      ],
+   q(0164) => [
+      q(Providencia Sign Language),
+      ],
+   q(0165) => [
+      q(Persian Sign Language),
+      ],
+   q(0166) => [
+      q(Plains Indian Sign Language),
+      ],
+   q(0167) => [
+      q(Central Malay),
+      ],
+   q(0168) => [
+      q(Penang Sign Language),
+      ],
+   q(0169) => [
+      q(Puerto Rican Sign Language),
+      ],
+   q(0170) => [
+      q(Polish Sign Language),
+      ],
+   q(0171) => [
+      q(Philippine Sign Language),
+      ],
+   q(0172) => [
+      q(Portuguese Sign Language),
+      ],
+   q(0173) => [
+      q(Paraguayan Sign Language),
+      q(Lengua de Senas del Paraguay),
+      ],
+   q(0174) => [
+      q(Romanian Sign Language),
+      ],
+   q(0175) => [
+      q(Rennellese Sign Language),
+      ],
+   q(0176) => [
+      q(Russian Sign Language),
+      ],
+   q(0177) => [
+      q(Saudi Arabian Sign Language),
+      ],
+   q(0178) => [
+      q(Langue des signes de Belgique Francophone),
+      q(French Belgian Sign Language),
+      ],
+   q(0179) => [
+      q(South African Sign Language),
+      ],
+   q(0180) => [
+      q(Swiss-German Sign Language),
+      ],
+   q(0181) => [
+      q(Sierra Leone Sign Language),
+      ],
+   q(0182) => [
+      q(Chadian Arabic),
+      ],
+   q(0183) => [
+      q(Swiss-Italian Sign Language),
+      ],
+   q(0184) => [
+      q(Singapore Sign Language),
+      ],
+   q(0185) => [
+      q(Albanian Sign Language),
+      ],
+   q(0186) => [
+      q(Sri Lankan Sign Language),
+      ],
+   q(0187) => [
+      q(Shihhi Arabic),
+      ],
+   q(0188) => [
+      q(Spanish Sign Language),
+      ],
+   q(0189) => [
+      q(Swiss-French Sign Language),
+      ],
+   q(0190) => [
+      q(Slovakian Sign Language),
+      ],
+   q(0191) => [
+      q(Congo Swahili),
+      ],
+   q(0192) => [
+      q(Swahili (individual language)),
+      q(Kiswahili),
+      ],
+   q(0193) => [
+      q(Swedish Sign Language),
+      ],
+   q(0194) => [
+      q(Al-Sayyid Bedouin Sign Language),
+      ],
+   q(0195) => [
+      q(Temuan),
+      ],
+   q(0196) => [
+      q(Tunisian Sign Language),
+      ],
+   q(0197) => [
+      q(Turkish Sign Language),
+      q(Turk Isaret Dili),
+      ],
+   q(0198) => [
+      q(Thai Sign Language),
+      ],
+   q(0199) => [
+      q(Taiwan Sign Language),
+      ],
+   q(0200) => [
+      q(Tebul Sign Language),
+      ],
+   q(0201) => [
+      q(Tanzanian Sign Language),
+      ],
+   q(0202) => [
+      q(Ugandan Sign Language),
+      ],
+   q(0203) => [
+      q(Uruguayan Sign Language),
+      ],
+   q(0204) => [
+      q(Ukrainian Sign Language),
+      ],
+   q(0205) => [
+      q(Urubu-Kaapor Sign Language),
+      q(Kaapor Sign Language),
+      ],
+   q(0206) => [
+      q(Urak Lawoi'),
+      ],
+   q(0207) => [
+      q(Northern Uzbek),
+      ],
+   q(0208) => [
+      q(Southern Uzbek),
+      ],
+   q(0209) => [
+      q(Vlaamse Gebarentaal),
+      q(Flemish Sign Language),
+      ],
+   q(0210) => [
+      q(Kaur),
+      ],
+   q(0211) => [
+      q(Tenggarong Kutai Malay),
+      ],
+   q(0212) => [
+      q(Moldova Sign Language),
+      ],
+   q(0213) => [
+      q(Venezuelan Sign Language),
+      ],
+   q(0214) => [
+      q(Valencian Sign Language),
+      q(Llengua de signes valenciana),
+      ],
+   q(0215) => [
+      q(Wu Chinese),
+      ],
+   q(0216) => [
+      q(Kenyan Sign Language),
+      ],
+   q(0217) => [
+      q(Malaysian Sign Language),
+      ],
+   q(0218) => [
+      q(Manado Malay),
+      ],
+   q(0219) => [
+      q(Moroccan Sign Language),
+      ],
+   q(0220) => [
+      q(Yiddish Sign Language),
+      ],
+   q(0221) => [
+      q(Yugoslavian Sign Language),
+      ],
+   q(0222) => [
+      q(Yue Chinese),
+      ],
+   q(0223) => [
+      q(Zimbabwe Sign Language),
+      ],
+   q(0224) => [
+      q(Malay (individual language)),
+      ],
+   q(0225) => [
+      q(Negeri Sembilan Malay),
+      ],
+   q(0226) => [
+      q(Zambian Sign Language),
+      ],
+   q(0227) => [
+      q(Standard Malay),
+      ],
+};
+
+$Locale::Codes::Data{'langext'}{'alias2id'} = {
+   q(adamorobe sign language) => [
+      q(0010),
+      q(0),
+      ],
+   q(afghan sign language) => [
+      q(0016),
+      q(0),
+      ],
+   q(al-sayyid bedouin sign language) => [
+      q(0194),
+      q(0),
+      ],
+   q(albanian sign language) => [
+      q(0185),
+      q(0),
+      ],
+   q(algerian arabic) => [
+      q(0021),
+      q(0),
+      ],
+   q(algerian saharan arabic) => [
+      q(0001),
+      q(0),
+      ],
+   q(algerian sign language) => [
+      q(0027),
+      q(0),
+      ],
+   q(american sign language) => [
+      q(0025),
+      q(0),
+      ],
+   q(argentine sign language) => [
+      q(0013),
+      q(0),
+      ],
+   q(armenian sign language) => [
+      q(0014),
+      q(0),
+      ],
+   q(australian aborigines sign language) => [
+      q(0029),
+      q(0),
+      ],
+   q(australian sign language) => [
+      q(0026),
+      q(0),
+      ],
+   q(austrian sign language) => [
+      q(0028),
+      q(0),
+      ],
+   q(babalia creole arabic) => [
+      q(0036),
+      q(0),
+      ],
+   q(bacanese malay) => [
+      q(0043),
+      q(0),
+      ],
+   q(baharna arabic) => [
+      q(0003),
+      q(0),
+      ],
+   q(bamako sign language) => [
+      q(0040),
+      q(0),
+      ],
+   q(ban khor sign language) => [
+      q(0038),
+      q(0),
+      ],
+   q(bangka) => [
+      q(0136),
+      q(0),
+      ],
+   q(banjar) => [
+      q(0039),
+      q(0),
+      ],
+   q(bengkala sign language) => [
+      q(0042),
+      q(0),
+      ],
+   q(berau malay) => [
+      q(0044),
+      q(0),
+      ],
+   q(bolivian sign language) => [
+      q(0045),
+      q(0),
+      ],
+   q(brazilian sign language) => [
+      q(0047),
+      q(0),
+      ],
+   q(british sign language) => [
+      q(0037),
+      q(0),
+      ],
+   q(brunei) => [
+      q(0117),
+      q(0),
+      ],
+   q(bukit malay) => [
+      q(0046),
+      q(0),
+      ],
+   q(bulgarian sign language) => [
+      q(0041),
+      q(0),
+      ],
+   q(catalan sign language) => [
+      q(0054),
+      q(0),
+      ],
+   q(central malay) => [
+      q(0167),
+      q(0),
+      ],
+   q(chadian arabic) => [
+      q(0182),
+      q(0),
+      ],
+   q(chadian sign language) => [
+      q(0049),
+      q(0),
+      ],
+   q(chiangmai sign language) => [
+      q(0055),
+      q(0),
+      ],
+   q(chilean sign language) => [
+      q(0058),
+      q(0),
+      ],
+   q(chinese sign language) => [
+      q(0059),
+      q(0),
+      ],
+   q(cocos islands malay) => [
+      q(0052),
+      q(0),
+      ],
+   q(col) => [
+      q(0121),
+      q(0),
+      ],
+   q(colombian sign language) => [
+      q(0060),
+      q(0),
+      ],
+   q(congo swahili) => [
+      q(0191),
+      q(0),
+      ],
+   q(costa rican sign language) => [
+      q(0062),
+      q(0),
+      ],
+   q(croatia sign language) => [
+      q(0061),
+      q(0),
+      ],
+   q(cuba sign language) => [
+      q(0057),
+      q(0),
+      ],
+   q(cypriot arabic) => [
+      q(0008),
+      q(0),
+      ],
+   q(czech sign language) => [
+      q(0056),
+      q(0),
+      ],
+   q(danish sign language) => [
+      q(0067),
+      q(0),
+      ],
+   q(dhofari arabic) => [
+      q(0009),
+      q(0),
+      ],
+   q(dominican sign language) => [
+      q(0065),
+      q(0),
+      ],
+   q(duano) => [
+      q(0068),
+      q(0),
+      ],
+   q(dutch sign language) => [
+      q(0066),
+      q(0),
+      ],
+   q(eastern egyptian bedawi arabic) => [
+      q(0031),
+      q(0),
+      ],
+   q(ecuadorian sign language) => [
+      q(0069),
+      q(0),
+      ],
+   q(egypt sign language) => [
+      q(0070),
+      q(0),
+      ],
+   q(egyptian arabic) => [
+      q(0024),
+      q(0),
+      ],
+   q(estonian sign language) => [
+      q(0072),
+      q(0),
+      ],
+   q(ethiopian sign language) => [
+      q(0073),
+      q(0),
+      ],
+   q(finland-swedish sign language) => [
+      q(0077),
+      q(0),
+      ],
+   q(finlandssvenskt teckensprak) => [
+      q(0077),
+      q(0),
+      ],
+   q(finnish sign language) => [
+      q(0075),
+      q(0),
+      ],
+   q(flemish sign language) => [
+      q(0209),
+      q(0),
+      ],
+   q(french belgian sign language) => [
+      q(0178),
+      q(0),
+      ],
+   q(french sign language) => [
+      q(0076),
+      q(0),
+      ],
+   q(gan chinese) => [
+      q(0078),
+      q(0),
+      ],
+   q(german sign language) => [
+      q(0082),
+      q(0),
+      ],
+   q(ghanaian sign language) => [
+      q(0081),
+      q(0),
+      ],
+   q(ghandruk sign language) => [
+      q(0079),
+      q(0),
+      ],
+   q(goan konkani) => [
+      q(0080),
+      q(0),
+      ],
+   q(greek sign language) => [
+      q(0084),
+      q(0),
+      ],
+   q(guatemalan sign language) => [
+      q(0083),
+      q(0),
+      ],
+   q(guinean sign language) => [
+      q(0085),
+      q(0),
+      ],
+   q(gulf arabic) => [
+      q(0015),
+      q(0),
+      ],
+   q(hadrami arabic) => [
+      q(0032),
+      q(0),
+      ],
+   q(haiphong sign language) => [
+      q(0087),
+      q(0),
+      ],
+   q(haji) => [
+      q(0090),
+      q(0),
+      ],
+   q(hakka chinese) => [
+      q(0088),
+      q(0),
+      ],
+   q(hanoi sign language) => [
+      q(0086),
+      q(0),
+      ],
+   q(hausa sign language) => [
+      q(0095),
+      q(0),
+      ],
+   q(hawai'i pidgin sign language) => [
+      q(0093),
+      q(0),
+      ],
+   q(heung kong sau yue) => [
+      q(0091),
+      q(0),
+      ],
+   q(hijazi arabic) => [
+      q(0006),
+      q(0),
+      ],
+   q(ho chi minh city sign language) => [
+      q(0092),
+      q(0),
+      ],
+   q(honduras sign language) => [
+      q(0089),
+      q(0),
+      ],
+   q(hong kong sign language) => [
+      q(0091),
+      q(0),
+      ],
+   q(huizhou chinese) => [
+      q(0063),
+      q(0),
+      ],
+   q(hungarian sign language) => [
+      q(0094),
+      q(0),
+      ],
+   q(icelandic sign language) => [
+      q(0097),
+      q(0),
+      ],
+   q(indian sign language) => [
+      q(0100),
+      q(0),
+      ],
+   q(indonesian sign language) => [
+      q(0099),
+      q(0),
+      ],
+   q(international sign) => [
+      q(0098),
+      q(0),
+      ],
+   q(irish sign language) => [
+      q(0102),
+      q(0),
+      ],
+   q(israeli sign language) => [
+      q(0103),
+      q(0),
+      ],
+   q(italian sign language) => [
+      q(0101),
+      q(0),
+      ],
+   q(jakun) => [
+      q(0104),
+      q(0),
+      ],
+   q(jamaican country sign language) => [
+      q(0106),
+      q(0),
+      ],
+   q(jamaican sign language) => [
+      q(0108),
+      q(0),
+      ],
+   q(jambi malay) => [
+      q(0105),
+      q(0),
+      ],
+   q(japanese sign language) => [
+      q(0110),
+      q(0),
+      ],
+   q(jhankot sign language) => [
+      q(0107),
+      q(0),
+      ],
+   q(jinyu chinese) => [
+      q(0050),
+      q(0),
+      ],
+   q(jordanian sign language) => [
+      q(0109),
+      q(0),
+      ],
+   q(jumla sign language) => [
+      q(0111),
+      q(0),
+      ],
+   q(kaapor sign language) => [
+      q(0205),
+      q(0),
+      ],
+   q(kaur) => [
+      q(0210),
+      q(0),
+      ],
+   q(kedah malay) => [
+      q(0134),
+      q(0),
+      ],
+   q(kenyan sign language) => [
+      q(0216),
+      q(0),
+      ],
+   q(kerinci) => [
+      q(0116),
+      q(0),
+      ],
+   q(kiswahili) => [
+      q(0192),
+      q(0),
+      ],
+   q(konkani (individual language)) => [
+      q(0113),
+      q(0),
+      ],
+   q(korean sign language) => [
+      q(0115),
+      q(0),
+      ],
+   q(kota bangun kutai malay) => [
+      q(0140),
+      q(0),
+      ],
+   q(kubu) => [
+      q(0114),
+      q(0),
+      ],
+   q(langue des signes de belgique francophone) => [
+      q(0178),
+      q(0),
+      ],
+   q(laos sign language) => [
+      q(0125),
+      q(0),
+      ],
+   q(latgalian) => [
+      q(0129),
+      q(0),
+      ],
+   q(latvian sign language) => [
+      q(0124),
+      q(0),
+      ],
+   q(lengua de senas catalana) => [
+      q(0054),
+      q(0),
+      ],
+   q(lengua de senas del paraguay) => [
+      q(0173),
+      q(0),
+      ],
+   q(lengua de senas panamenas) => [
+      q(0126),
+      q(0),
+      ],
+   q(libyan arabic) => [
+      q(0033),
+      q(0),
+      ],
+   q(libyan sign language) => [
+      q(0118),
+      q(0),
+      ],
+   q(literary chinese) => [
+      q(0131),
+      q(0),
+      ],
+   q(lithuanian sign language) => [
+      q(0122),
+      q(0),
+      ],
+   q(llengua de signes catalana) => [
+      q(0054),
+      q(0),
+      ],
+   q(llengua de signes valenciana) => [
+      q(0214),
+      q(0),
+      ],
+   q(loncong) => [
+      q(0119),
+      q(0),
+      ],
+   q(lubu) => [
+      q(0120),
+      q(0),
+      ],
+   q(lyons sign language) => [
+      q(0123),
+      q(0),
+      ],
+   q(madagascar sign language) => [
+      q(0146),
+      q(0),
+      ],
+   q(malay (individual language)) => [
+      q(0224),
+      q(0),
+      ],
+   q(malaysian sign language) => [
+      q(0217),
+      q(0),
+      ],
+   q(maltese sign language) => [
+      q(0133),
+      q(0),
+      ],
+   q(manado malay) => [
+      q(0218),
+      q(0),
+      ],
+   q(mandarin chinese) => [
+      q(0051),
+      q(0),
+      ],
+   q(maritime sign language) => [
+      q(0155),
+      q(0),
+      ],
+   q(martha's vineyard sign language) => [
+      q(0141),
+      q(0),
+      ],
+   q(mauritian sign language) => [
+      q(0128),
+      q(0),
+      ],
+   q(mesopotamian arabic) => [
+      q(0004),
+      q(0),
+      ],
+   q(mexican sign language) => [
+      q(0137),
+      q(0),
+      ],
+   q(min bei chinese) => [
+      q(0139),
+      q(0),
+      ],
+   q(min dong chinese) => [
+      q(0048),
+      q(0),
+      ],
+   q(min nan chinese) => [
+      q(0149),
+      q(0),
+      ],
+   q(min zhong chinese) => [
+      q(0064),
+      q(0),
+      ],
+   q(minangkabau) => [
+      q(0138),
+      q(0),
+      ],
+   q(moldova sign language) => [
+      q(0212),
+      q(0),
+      ],
+   q(monastic sign language) => [
+      q(0147),
+      q(0),
+      ],
+   q(mongolian sign language) => [
+      q(0144),
+      q(0),
+      ],
+   q(moroccan arabic) => [
+      q(0023),
+      q(0),
+      ],
+   q(moroccan sign language) => [
+      q(0219),
+      q(0),
+      ],
+   q(mozambican sign language) => [
+      q(0148),
+      q(0),
+      ],
+   q(musi) => [
+      q(0145),
+      q(0),
+      ],
+   q(najdi arabic) => [
+      q(0022),
+      q(0),
+      ],
+   q(namibian sign language) => [
+      q(0150),
+      q(0),
+      ],
+   q(negeri sembilan malay) => [
+      q(0225),
+      q(0),
+      ],
+   q(nepalese sign language) => [
+      q(0154),
+      q(0),
+      ],
+   q(new zealand sign language) => [
+      q(0156),
+      q(0),
+      ],
+   q(nicaraguan sign language) => [
+      q(0151),
+      q(0),
+      ],
+   q(nigerian sign language) => [
+      q(0152),
+      q(0),
+      ],
+   q(north levantine arabic) => [
+      q(0018),
+      q(0),
+      ],
+   q(north mesopotamian arabic) => [
+      q(0035),
+      q(0),
+      ],
+   q(north moluccan malay) => [
+      q(0132),
+      q(0),
+      ],
+   q(northern uzbek) => [
+      q(0207),
+      q(0),
+      ],
+   q(norwegian sign language) => [
+      q(0153),
+      q(0),
+      ],
+   q(old kentish sign language) => [
+      q(0157),
+      q(0),
+      ],
+   q(omani arabic) => [
+      q(0007),
+      q(0),
+      ],
+   q(orang kanaq) => [
+      q(0158),
+      q(0),
+      ],
+   q(orang seletar) => [
+      q(0159),
+      q(0),
+      ],
+   q(pakistan sign language) => [
+      q(0162),
+      q(0),
+      ],
+   q(panamanian sign language) => [
+      q(0126),
+      q(0),
+      ],
+   q(paraguayan sign language) => [
+      q(0173),
+      q(0),
+      ],
+   q(pattani malay) => [
+      q(0135),
+      q(0),
+      ],
+   q(pekal) => [
+      q(0160),
+      q(0),
+      ],
+   q(penang sign language) => [
+      q(0168),
+      q(0),
+      ],
+   q(persian sign language) => [
+      q(0165),
+      q(0),
+      ],
+   q(peruvian sign language) => [
+      q(0163),
+      q(0),
+      ],
+   q(philippine sign language) => [
+      q(0171),
+      q(0),
+      ],
+   q(plains indian sign language) => [
+      q(0166),
+      q(0),
+      ],
+   q(polish sign language) => [
+      q(0170),
+      q(0),
+      ],
+   q(portuguese sign language) => [
+      q(0172),
+      q(0),
+      ],
+   q(providencia sign language) => [
+      q(0164),
+      q(0),
+      ],
+   q(pu-xian chinese) => [
+      q(0053),
+      q(0),
+      ],
+   q(puerto rican sign language) => [
+      q(0169),
+      q(0),
+      ],
+   q(quebec sign language) => [
+      q(0074),
+      q(0),
+      ],
+   q(rennellese sign language) => [
+      q(0175),
+      q(0),
+      ],
+   q(romanian sign language) => [
+      q(0174),
+      q(0),
+      ],
+   q(russian sign language) => [
+      q(0176),
+      q(0),
+      ],
+   q(sabah malay) => [
+      q(0143),
+      q(0),
+      ],
+   q(saidi arabic) => [
+      q(0012),
+      q(0),
+      ],
+   q(salvadoran sign language) => [
+      q(0071),
+      q(0),
+      ],
+   q(sanaani arabic) => [
+      q(0034),
+      q(0),
+      ],
+   q(saudi arabian sign language) => [
+      q(0177),
+      q(0),
+      ],
+   q(selangor sign language) => [
+      q(0112),
+      q(0),
+      ],
+   q(shihhi arabic) => [
+      q(0187),
+      q(0),
+      ],
+   q(sierra leone sign language) => [
+      q(0181),
+      q(0),
+      ],
+   q(singapore sign language) => [
+      q(0184),
+      q(0),
+      ],
+   q(slovakian sign language) => [
+      q(0190),
+      q(0),
+      ],
+   q(south african sign language) => [
+      q(0179),
+      q(0),
+      ],
+   q(south levantine arabic) => [
+      q(0017),
+      q(0),
+      ],
+   q(southern uzbek) => [
+      q(0208),
+      q(0),
+      ],
+   q(spanish sign language) => [
+      q(0188),
+      q(0),
+      ],
+   q(sri lankan sign language) => [
+      q(0186),
+      q(0),
+      ],
+   q(standard arabic) => [
+      q(0020),
+      q(0),
+      ],
+   q(standard latvian) => [
+      q(0130),
+      q(0),
+      ],
+   q(standard malay) => [
+      q(0227),
+      q(0),
+      ],
+   q(sudanese arabic) => [
+      q(0019),
+      q(0),
+      ],
+   q(sudanese creole arabic) => [
+      q(0161),
+      q(0),
+      ],
+   q(suomenruotsalainen viittomakieli) => [
+      q(0077),
+      q(0),
+      ],
+   q(swahili (individual language)) => [
+      q(0192),
+      q(0),
+      ],
+   q(swedish sign language) => [
+      q(0193),
+      q(0),
+      ],
+   q(swiss-french sign language) => [
+      q(0189),
+      q(0),
+      ],
+   q(swiss-german sign language) => [
+      q(0180),
+      q(0),
+      ],
+   q(swiss-italian sign language) => [
+      q(0183),
+      q(0),
+      ],
+   q(ta'izzi-adeni arabic) => [
+      q(0005),
+      q(0),
+      ],
+   q(taiwan sign language) => [
+      q(0199),
+      q(0),
+      ],
+   q(tajiki arabic) => [
+      q(0002),
+      q(0),
+      ],
+   q(tanzanian sign language) => [
+      q(0201),
+      q(0),
+      ],
+   q(tebul sign language) => [
+      q(0200),
+      q(0),
+      ],
+   q(temuan) => [
+      q(0195),
+      q(0),
+      ],
+   q(tenggarong kutai malay) => [
+      q(0211),
+      q(0),
+      ],
+   q(thai sign language) => [
+      q(0198),
+      q(0),
+      ],
+   q(trinidad and tobago sign language) => [
+      q(0127),
+      q(0),
+      ],
+   q(tunisian arabic) => [
+      q(0011),
+      q(0),
+      ],
+   q(tunisian sign language) => [
+      q(0196),
+      q(0),
+      ],
+   q(turk isaret dili) => [
+      q(0197),
+      q(0),
+      ],
+   q(turkish sign language) => [
+      q(0197),
+      q(0),
+      ],
+   q(ugandan sign language) => [
+      q(0202),
+      q(0),
+      ],
+   q(ukrainian sign language) => [
+      q(0204),
+      q(0),
+      ],
+   q(urak lawoi') => [
+      q(0206),
+      q(0),
+      ],
+   q(urubu-kaapor sign language) => [
+      q(0205),
+      q(0),
+      ],
+   q(uruguayan sign language) => [
+      q(0203),
+      q(0),
+      ],
+   q(uzbeki arabic) => [
+      q(0030),
+      q(0),
+      ],
+   q(valencian sign language) => [
+      q(0214),
+      q(0),
+      ],
+   q(venezuelan sign language) => [
+      q(0213),
+      q(0),
+      ],
+   q(vlaamse gebarentaal) => [
+      q(0209),
+      q(0),
+      ],
+   q(wu chinese) => [
+      q(0215),
+      q(0),
+      ],
+   q(xiang chinese) => [
+      q(0096),
+      q(0),
+      ],
+   q(yiddish sign language) => [
+      q(0220),
+      q(0),
+      ],
+   q(yucatec maya sign language) => [
+      q(0142),
+      q(0),
+      ],
+   q(yue chinese) => [
+      q(0222),
+      q(0),
+      ],
+   q(yugoslavian sign language) => [
+      q(0221),
+      q(0),
+      ],
+   q(zambian sign language) => [
+      q(0226),
+      q(0),
+      ],
+   q(zimbabwe sign language) => [
+      q(0223),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'langext'}{'code2id'} = {
+   q(alpha) => {
+      q(aao) => [
+         q(0001),
+         q(0),
+         ],
+      q(abh) => [
+         q(0002),
+         q(0),
+         ],
+      q(abv) => [
+         q(0003),
+         q(0),
+         ],
+      q(acm) => [
+         q(0004),
+         q(0),
+         ],
+      q(acq) => [
+         q(0005),
+         q(0),
+         ],
+      q(acw) => [
+         q(0006),
+         q(0),
+         ],
+      q(acx) => [
+         q(0007),
+         q(0),
+         ],
+      q(acy) => [
+         q(0008),
+         q(0),
+         ],
+      q(adf) => [
+         q(0009),
+         q(0),
+         ],
+      q(ads) => [
+         q(0010),
+         q(0),
+         ],
+      q(aeb) => [
+         q(0011),
+         q(0),
+         ],
+      q(aec) => [
+         q(0012),
+         q(0),
+         ],
+      q(aed) => [
+         q(0013),
+         q(0),
+         ],
+      q(aen) => [
+         q(0014),
+         q(0),
+         ],
+      q(afb) => [
+         q(0015),
+         q(0),
+         ],
+      q(afg) => [
+         q(0016),
+         q(0),
+         ],
+      q(ajp) => [
+         q(0017),
+         q(0),
+         ],
+      q(apc) => [
+         q(0018),
+         q(0),
+         ],
+      q(apd) => [
+         q(0019),
+         q(0),
+         ],
+      q(arb) => [
+         q(0020),
+         q(0),
+         ],
+      q(arq) => [
+         q(0021),
+         q(0),
+         ],
+      q(ars) => [
+         q(0022),
+         q(0),
+         ],
+      q(ary) => [
+         q(0023),
+         q(0),
+         ],
+      q(arz) => [
+         q(0024),
+         q(0),
+         ],
+      q(ase) => [
+         q(0025),
+         q(0),
+         ],
+      q(asf) => [
+         q(0026),
+         q(0),
+         ],
+      q(asp) => [
+         q(0027),
+         q(0),
+         ],
+      q(asq) => [
+         q(0028),
+         q(0),
+         ],
+      q(asw) => [
+         q(0029),
+         q(0),
+         ],
+      q(auz) => [
+         q(0030),
+         q(0),
+         ],
+      q(avl) => [
+         q(0031),
+         q(0),
+         ],
+      q(ayh) => [
+         q(0032),
+         q(0),
+         ],
+      q(ayl) => [
+         q(0033),
+         q(0),
+         ],
+      q(ayn) => [
+         q(0034),
+         q(0),
+         ],
+      q(ayp) => [
+         q(0035),
+         q(0),
+         ],
+      q(bbz) => [
+         q(0036),
+         q(0),
+         ],
+      q(bfi) => [
+         q(0037),
+         q(0),
+         ],
+      q(bfk) => [
+         q(0038),
+         q(0),
+         ],
+      q(bjn) => [
+         q(0039),
+         q(0),
+         ],
+      q(bog) => [
+         q(0040),
+         q(0),
+         ],
+      q(bqn) => [
+         q(0041),
+         q(0),
+         ],
+      q(bqy) => [
+         q(0042),
+         q(0),
+         ],
+      q(btj) => [
+         q(0043),
+         q(0),
+         ],
+      q(bve) => [
+         q(0044),
+         q(0),
+         ],
+      q(bvl) => [
+         q(0045),
+         q(0),
+         ],
+      q(bvu) => [
+         q(0046),
+         q(0),
+         ],
+      q(bzs) => [
+         q(0047),
+         q(0),
+         ],
+      q(cdo) => [
+         q(0048),
+         q(0),
+         ],
+      q(cds) => [
+         q(0049),
+         q(0),
+         ],
+      q(cjy) => [
+         q(0050),
+         q(0),
+         ],
+      q(cmn) => [
+         q(0051),
+         q(0),
+         ],
+      q(coa) => [
+         q(0052),
+         q(0),
+         ],
+      q(cpx) => [
+         q(0053),
+         q(0),
+         ],
+      q(csc) => [
+         q(0054),
+         q(0),
+         ],
+      q(csd) => [
+         q(0055),
+         q(0),
+         ],
+      q(cse) => [
+         q(0056),
+         q(0),
+         ],
+      q(csf) => [
+         q(0057),
+         q(0),
+         ],
+      q(csg) => [
+         q(0058),
+         q(0),
+         ],
+      q(csl) => [
+         q(0059),
+         q(0),
+         ],
+      q(csn) => [
+         q(0060),
+         q(0),
+         ],
+      q(csq) => [
+         q(0061),
+         q(0),
+         ],
+      q(csr) => [
+         q(0062),
+         q(0),
+         ],
+      q(czh) => [
+         q(0063),
+         q(0),
+         ],
+      q(czo) => [
+         q(0064),
+         q(0),
+         ],
+      q(doq) => [
+         q(0065),
+         q(0),
+         ],
+      q(dse) => [
+         q(0066),
+         q(0),
+         ],
+      q(dsl) => [
+         q(0067),
+         q(0),
+         ],
+      q(dup) => [
+         q(0068),
+         q(0),
+         ],
+      q(ecs) => [
+         q(0069),
+         q(0),
+         ],
+      q(esl) => [
+         q(0070),
+         q(0),
+         ],
+      q(esn) => [
+         q(0071),
+         q(0),
+         ],
+      q(eso) => [
+         q(0072),
+         q(0),
+         ],
+      q(eth) => [
+         q(0073),
+         q(0),
+         ],
+      q(fcs) => [
+         q(0074),
+         q(0),
+         ],
+      q(fse) => [
+         q(0075),
+         q(0),
+         ],
+      q(fsl) => [
+         q(0076),
+         q(0),
+         ],
+      q(fss) => [
+         q(0077),
+         q(0),
+         ],
+      q(gan) => [
+         q(0078),
+         q(0),
+         ],
+      q(gds) => [
+         q(0079),
+         q(0),
+         ],
+      q(gom) => [
+         q(0080),
+         q(0),
+         ],
+      q(gse) => [
+         q(0081),
+         q(0),
+         ],
+      q(gsg) => [
+         q(0082),
+         q(0),
+         ],
+      q(gsm) => [
+         q(0083),
+         q(0),
+         ],
+      q(gss) => [
+         q(0084),
+         q(0),
+         ],
+      q(gus) => [
+         q(0085),
+         q(0),
+         ],
+      q(hab) => [
+         q(0086),
+         q(0),
+         ],
+      q(haf) => [
+         q(0087),
+         q(0),
+         ],
+      q(hak) => [
+         q(0088),
+         q(0),
+         ],
+      q(hds) => [
+         q(0089),
+         q(0),
+         ],
+      q(hji) => [
+         q(0090),
+         q(0),
+         ],
+      q(hks) => [
+         q(0091),
+         q(0),
+         ],
+      q(hos) => [
+         q(0092),
+         q(0),
+         ],
+      q(hps) => [
+         q(0093),
+         q(0),
+         ],
+      q(hsh) => [
+         q(0094),
+         q(0),
+         ],
+      q(hsl) => [
+         q(0095),
+         q(0),
+         ],
+      q(hsn) => [
+         q(0096),
+         q(0),
+         ],
+      q(icl) => [
+         q(0097),
+         q(0),
+         ],
+      q(ils) => [
+         q(0098),
+         q(0),
+         ],
+      q(inl) => [
+         q(0099),
+         q(0),
+         ],
+      q(ins) => [
+         q(0100),
+         q(0),
+         ],
+      q(ise) => [
+         q(0101),
+         q(0),
+         ],
+      q(isg) => [
+         q(0102),
+         q(0),
+         ],
+      q(isr) => [
+         q(0103),
+         q(0),
+         ],
+      q(jak) => [
+         q(0104),
+         q(0),
+         ],
+      q(jax) => [
+         q(0105),
+         q(0),
+         ],
+      q(jcs) => [
+         q(0106),
+         q(0),
+         ],
+      q(jhs) => [
+         q(0107),
+         q(0),
+         ],
+      q(jls) => [
+         q(0108),
+         q(0),
+         ],
+      q(jos) => [
+         q(0109),
+         q(0),
+         ],
+      q(jsl) => [
+         q(0110),
+         q(0),
+         ],
+      q(jus) => [
+         q(0111),
+         q(0),
+         ],
+      q(kgi) => [
+         q(0112),
+         q(0),
+         ],
+      q(knn) => [
+         q(0113),
+         q(0),
+         ],
+      q(kvb) => [
+         q(0114),
+         q(0),
+         ],
+      q(kvk) => [
+         q(0115),
+         q(0),
+         ],
+      q(kvr) => [
+         q(0116),
+         q(0),
+         ],
+      q(kxd) => [
+         q(0117),
+         q(0),
+         ],
+      q(lbs) => [
+         q(0118),
+         q(0),
+         ],
+      q(lce) => [
+         q(0119),
+         q(0),
+         ],
+      q(lcf) => [
+         q(0120),
+         q(0),
+         ],
+      q(liw) => [
+         q(0121),
+         q(0),
+         ],
+      q(lls) => [
+         q(0122),
+         q(0),
+         ],
+      q(lsg) => [
+         q(0123),
+         q(0),
+         ],
+      q(lsl) => [
+         q(0124),
+         q(0),
+         ],
+      q(lso) => [
+         q(0125),
+         q(0),
+         ],
+      q(lsp) => [
+         q(0126),
+         q(0),
+         ],
+      q(lst) => [
+         q(0127),
+         q(0),
+         ],
+      q(lsy) => [
+         q(0128),
+         q(0),
+         ],
+      q(ltg) => [
+         q(0129),
+         q(0),
+         ],
+      q(lvs) => [
+         q(0130),
+         q(0),
+         ],
+      q(lzh) => [
+         q(0131),
+         q(0),
+         ],
+      q(max) => [
+         q(0132),
+         q(0),
+         ],
+      q(mdl) => [
+         q(0133),
+         q(0),
+         ],
+      q(meo) => [
+         q(0134),
+         q(0),
+         ],
+      q(mfa) => [
+         q(0135),
+         q(0),
+         ],
+      q(mfb) => [
+         q(0136),
+         q(0),
+         ],
+      q(mfs) => [
+         q(0137),
+         q(0),
+         ],
+      q(min) => [
+         q(0138),
+         q(0),
+         ],
+      q(mnp) => [
+         q(0139),
+         q(0),
+         ],
+      q(mqg) => [
+         q(0140),
+         q(0),
+         ],
+      q(mre) => [
+         q(0141),
+         q(0),
+         ],
+      q(msd) => [
+         q(0142),
+         q(0),
+         ],
+      q(msi) => [
+         q(0143),
+         q(0),
+         ],
+      q(msr) => [
+         q(0144),
+         q(0),
+         ],
+      q(mui) => [
+         q(0145),
+         q(0),
+         ],
+      q(mzc) => [
+         q(0146),
+         q(0),
+         ],
+      q(mzg) => [
+         q(0147),
+         q(0),
+         ],
+      q(mzy) => [
+         q(0148),
+         q(0),
+         ],
+      q(nan) => [
+         q(0149),
+         q(0),
+         ],
+      q(nbs) => [
+         q(0150),
+         q(0),
+         ],
+      q(ncs) => [
+         q(0151),
+         q(0),
+         ],
+      q(nsi) => [
+         q(0152),
+         q(0),
+         ],
+      q(nsl) => [
+         q(0153),
+         q(0),
+         ],
+      q(nsp) => [
+         q(0154),
+         q(0),
+         ],
+      q(nsr) => [
+         q(0155),
+         q(0),
+         ],
+      q(nzs) => [
+         q(0156),
+         q(0),
+         ],
+      q(okl) => [
+         q(0157),
+         q(0),
+         ],
+      q(orn) => [
+         q(0158),
+         q(0),
+         ],
+      q(ors) => [
+         q(0159),
+         q(0),
+         ],
+      q(pel) => [
+         q(0160),
+         q(0),
+         ],
+      q(pga) => [
+         q(0161),
+         q(0),
+         ],
+      q(pks) => [
+         q(0162),
+         q(0),
+         ],
+      q(prl) => [
+         q(0163),
+         q(0),
+         ],
+      q(prz) => [
+         q(0164),
+         q(0),
+         ],
+      q(psc) => [
+         q(0165),
+         q(0),
+         ],
+      q(psd) => [
+         q(0166),
+         q(0),
+         ],
+      q(pse) => [
+         q(0167),
+         q(0),
+         ],
+      q(psg) => [
+         q(0168),
+         q(0),
+         ],
+      q(psl) => [
+         q(0169),
+         q(0),
+         ],
+      q(pso) => [
+         q(0170),
+         q(0),
+         ],
+      q(psp) => [
+         q(0171),
+         q(0),
+         ],
+      q(psr) => [
+         q(0172),
+         q(0),
+         ],
+      q(pys) => [
+         q(0173),
+         q(0),
+         ],
+      q(rms) => [
+         q(0174),
+         q(0),
+         ],
+      q(rsi) => [
+         q(0175),
+         q(0),
+         ],
+      q(rsl) => [
+         q(0176),
+         q(0),
+         ],
+      q(sdl) => [
+         q(0177),
+         q(0),
+         ],
+      q(sfb) => [
+         q(0178),
+         q(0),
+         ],
+      q(sfs) => [
+         q(0179),
+         q(0),
+         ],
+      q(sgg) => [
+         q(0180),
+         q(0),
+         ],
+      q(sgx) => [
+         q(0181),
+         q(0),
+         ],
+      q(shu) => [
+         q(0182),
+         q(0),
+         ],
+      q(slf) => [
+         q(0183),
+         q(0),
+         ],
+      q(sls) => [
+         q(0184),
+         q(0),
+         ],
+      q(sqk) => [
+         q(0185),
+         q(0),
+         ],
+      q(sqs) => [
+         q(0186),
+         q(0),
+         ],
+      q(ssh) => [
+         q(0187),
+         q(0),
+         ],
+      q(ssp) => [
+         q(0188),
+         q(0),
+         ],
+      q(ssr) => [
+         q(0189),
+         q(0),
+         ],
+      q(svk) => [
+         q(0190),
+         q(0),
+         ],
+      q(swc) => [
+         q(0191),
+         q(0),
+         ],
+      q(swh) => [
+         q(0192),
+         q(0),
+         ],
+      q(swl) => [
+         q(0193),
+         q(0),
+         ],
+      q(syy) => [
+         q(0194),
+         q(0),
+         ],
+      q(tmw) => [
+         q(0195),
+         q(0),
+         ],
+      q(tse) => [
+         q(0196),
+         q(0),
+         ],
+      q(tsm) => [
+         q(0197),
+         q(0),
+         ],
+      q(tsq) => [
+         q(0198),
+         q(0),
+         ],
+      q(tss) => [
+         q(0199),
+         q(0),
+         ],
+      q(tsy) => [
+         q(0200),
+         q(0),
+         ],
+      q(tza) => [
+         q(0201),
+         q(0),
+         ],
+      q(ugn) => [
+         q(0202),
+         q(0),
+         ],
+      q(ugy) => [
+         q(0203),
+         q(0),
+         ],
+      q(ukl) => [
+         q(0204),
+         q(0),
+         ],
+      q(uks) => [
+         q(0205),
+         q(0),
+         ],
+      q(urk) => [
+         q(0206),
+         q(0),
+         ],
+      q(uzn) => [
+         q(0207),
+         q(0),
+         ],
+      q(uzs) => [
+         q(0208),
+         q(0),
+         ],
+      q(vgt) => [
+         q(0209),
+         q(0),
+         ],
+      q(vkk) => [
+         q(0210),
+         q(0),
+         ],
+      q(vkt) => [
+         q(0211),
+         q(0),
+         ],
+      q(vsi) => [
+         q(0212),
+         q(0),
+         ],
+      q(vsl) => [
+         q(0213),
+         q(0),
+         ],
+      q(vsv) => [
+         q(0214),
+         q(0),
+         ],
+      q(wuu) => [
+         q(0215),
+         q(0),
+         ],
+      q(xki) => [
+         q(0216),
+         q(0),
+         ],
+      q(xml) => [
+         q(0217),
+         q(0),
+         ],
+      q(xmm) => [
+         q(0218),
+         q(0),
+         ],
+      q(xms) => [
+         q(0219),
+         q(0),
+         ],
+      q(yds) => [
+         q(0220),
+         q(0),
+         ],
+      q(ysl) => [
+         q(0221),
+         q(0),
+         ],
+      q(yue) => [
+         q(0222),
+         q(0),
+         ],
+      q(zib) => [
+         q(0223),
+         q(0),
+         ],
+      q(zlm) => [
+         q(0224),
+         q(0),
+         ],
+      q(zmi) => [
+         q(0225),
+         q(0),
+         ],
+      q(zsl) => [
+         q(0226),
+         q(0),
+         ],
+      q(zsm) => [
+         q(0227),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'langext'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(aao),
+      q(0002) => q(abh),
+      q(0003) => q(abv),
+      q(0004) => q(acm),
+      q(0005) => q(acq),
+      q(0006) => q(acw),
+      q(0007) => q(acx),
+      q(0008) => q(acy),
+      q(0009) => q(adf),
+      q(0010) => q(ads),
+      q(0011) => q(aeb),
+      q(0012) => q(aec),
+      q(0013) => q(aed),
+      q(0014) => q(aen),
+      q(0015) => q(afb),
+      q(0016) => q(afg),
+      q(0017) => q(ajp),
+      q(0018) => q(apc),
+      q(0019) => q(apd),
+      q(0020) => q(arb),
+      q(0021) => q(arq),
+      q(0022) => q(ars),
+      q(0023) => q(ary),
+      q(0024) => q(arz),
+      q(0025) => q(ase),
+      q(0026) => q(asf),
+      q(0027) => q(asp),
+      q(0028) => q(asq),
+      q(0029) => q(asw),
+      q(0030) => q(auz),
+      q(0031) => q(avl),
+      q(0032) => q(ayh),
+      q(0033) => q(ayl),
+      q(0034) => q(ayn),
+      q(0035) => q(ayp),
+      q(0036) => q(bbz),
+      q(0037) => q(bfi),
+      q(0038) => q(bfk),
+      q(0039) => q(bjn),
+      q(0040) => q(bog),
+      q(0041) => q(bqn),
+      q(0042) => q(bqy),
+      q(0043) => q(btj),
+      q(0044) => q(bve),
+      q(0045) => q(bvl),
+      q(0046) => q(bvu),
+      q(0047) => q(bzs),
+      q(0048) => q(cdo),
+      q(0049) => q(cds),
+      q(0050) => q(cjy),
+      q(0051) => q(cmn),
+      q(0052) => q(coa),
+      q(0053) => q(cpx),
+      q(0054) => q(csc),
+      q(0055) => q(csd),
+      q(0056) => q(cse),
+      q(0057) => q(csf),
+      q(0058) => q(csg),
+      q(0059) => q(csl),
+      q(0060) => q(csn),
+      q(0061) => q(csq),
+      q(0062) => q(csr),
+      q(0063) => q(czh),
+      q(0064) => q(czo),
+      q(0065) => q(doq),
+      q(0066) => q(dse),
+      q(0067) => q(dsl),
+      q(0068) => q(dup),
+      q(0069) => q(ecs),
+      q(0070) => q(esl),
+      q(0071) => q(esn),
+      q(0072) => q(eso),
+      q(0073) => q(eth),
+      q(0074) => q(fcs),
+      q(0075) => q(fse),
+      q(0076) => q(fsl),
+      q(0077) => q(fss),
+      q(0078) => q(gan),
+      q(0079) => q(gds),
+      q(0080) => q(gom),
+      q(0081) => q(gse),
+      q(0082) => q(gsg),
+      q(0083) => q(gsm),
+      q(0084) => q(gss),
+      q(0085) => q(gus),
+      q(0086) => q(hab),
+      q(0087) => q(haf),
+      q(0088) => q(hak),
+      q(0089) => q(hds),
+      q(0090) => q(hji),
+      q(0091) => q(hks),
+      q(0092) => q(hos),
+      q(0093) => q(hps),
+      q(0094) => q(hsh),
+      q(0095) => q(hsl),
+      q(0096) => q(hsn),
+      q(0097) => q(icl),
+      q(0098) => q(ils),
+      q(0099) => q(inl),
+      q(0100) => q(ins),
+      q(0101) => q(ise),
+      q(0102) => q(isg),
+      q(0103) => q(isr),
+      q(0104) => q(jak),
+      q(0105) => q(jax),
+      q(0106) => q(jcs),
+      q(0107) => q(jhs),
+      q(0108) => q(jls),
+      q(0109) => q(jos),
+      q(0110) => q(jsl),
+      q(0111) => q(jus),
+      q(0112) => q(kgi),
+      q(0113) => q(knn),
+      q(0114) => q(kvb),
+      q(0115) => q(kvk),
+      q(0116) => q(kvr),
+      q(0117) => q(kxd),
+      q(0118) => q(lbs),
+      q(0119) => q(lce),
+      q(0120) => q(lcf),
+      q(0121) => q(liw),
+      q(0122) => q(lls),
+      q(0123) => q(lsg),
+      q(0124) => q(lsl),
+      q(0125) => q(lso),
+      q(0126) => q(lsp),
+      q(0127) => q(lst),
+      q(0128) => q(lsy),
+      q(0129) => q(ltg),
+      q(0130) => q(lvs),
+      q(0131) => q(lzh),
+      q(0132) => q(max),
+      q(0133) => q(mdl),
+      q(0134) => q(meo),
+      q(0135) => q(mfa),
+      q(0136) => q(mfb),
+      q(0137) => q(mfs),
+      q(0138) => q(min),
+      q(0139) => q(mnp),
+      q(0140) => q(mqg),
+      q(0141) => q(mre),
+      q(0142) => q(msd),
+      q(0143) => q(msi),
+      q(0144) => q(msr),
+      q(0145) => q(mui),
+      q(0146) => q(mzc),
+      q(0147) => q(mzg),
+      q(0148) => q(mzy),
+      q(0149) => q(nan),
+      q(0150) => q(nbs),
+      q(0151) => q(ncs),
+      q(0152) => q(nsi),
+      q(0153) => q(nsl),
+      q(0154) => q(nsp),
+      q(0155) => q(nsr),
+      q(0156) => q(nzs),
+      q(0157) => q(okl),
+      q(0158) => q(orn),
+      q(0159) => q(ors),
+      q(0160) => q(pel),
+      q(0161) => q(pga),
+      q(0162) => q(pks),
+      q(0163) => q(prl),
+      q(0164) => q(prz),
+      q(0165) => q(psc),
+      q(0166) => q(psd),
+      q(0167) => q(pse),
+      q(0168) => q(psg),
+      q(0169) => q(psl),
+      q(0170) => q(pso),
+      q(0171) => q(psp),
+      q(0172) => q(psr),
+      q(0173) => q(pys),
+      q(0174) => q(rms),
+      q(0175) => q(rsi),
+      q(0176) => q(rsl),
+      q(0177) => q(sdl),
+      q(0178) => q(sfb),
+      q(0179) => q(sfs),
+      q(0180) => q(sgg),
+      q(0181) => q(sgx),
+      q(0182) => q(shu),
+      q(0183) => q(slf),
+      q(0184) => q(sls),
+      q(0185) => q(sqk),
+      q(0186) => q(sqs),
+      q(0187) => q(ssh),
+      q(0188) => q(ssp),
+      q(0189) => q(ssr),
+      q(0190) => q(svk),
+      q(0191) => q(swc),
+      q(0192) => q(swh),
+      q(0193) => q(swl),
+      q(0194) => q(syy),
+      q(0195) => q(tmw),
+      q(0196) => q(tse),
+      q(0197) => q(tsm),
+      q(0198) => q(tsq),
+      q(0199) => q(tss),
+      q(0200) => q(tsy),
+      q(0201) => q(tza),
+      q(0202) => q(ugn),
+      q(0203) => q(ugy),
+      q(0204) => q(ukl),
+      q(0205) => q(uks),
+      q(0206) => q(urk),
+      q(0207) => q(uzn),
+      q(0208) => q(uzs),
+      q(0209) => q(vgt),
+      q(0210) => q(vkk),
+      q(0211) => q(vkt),
+      q(0212) => q(vsi),
+      q(0213) => q(vsl),
+      q(0214) => q(vsv),
+      q(0215) => q(wuu),
+      q(0216) => q(xki),
+      q(0217) => q(xml),
+      q(0218) => q(xmm),
+      q(0219) => q(xms),
+      q(0220) => q(yds),
+      q(0221) => q(ysl),
+      q(0222) => q(yue),
+      q(0223) => q(zib),
+      q(0224) => q(zlm),
+      q(0225) => q(zmi),
+      q(0226) => q(zsl),
+      q(0227) => q(zsm),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangExt_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+package Locale::Codes::LangExt_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangExt_Retired - retired langext codes for the Locale::Codes::LangExt module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangExt module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'langext'}{'alpha'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'langext'}{'alpha'}{'name'} = {
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,95 @@
+package Locale::Codes::LangFam;
+# Copyright (c) 2011-2013 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+require 5.006;
+use warnings;
+
+require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Codes::Constants;
+use Locale::Codes::LangFam_Codes;
+use Locale::Codes::LangFam_Retired;
+
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
+
+our($VERSION, at ISA, at EXPORT, at EXPORT_OK);
+
+$VERSION='3.25';
+ at ISA       = qw(Exporter);
+ at EXPORT    = qw(code2langfam
+                langfam2code
+                all_langfam_codes
+                all_langfam_names
+                langfam_code2code
+                LOCALE_LANGFAM_ALPHA
+               );
+
+sub code2langfam {
+   return Locale::Codes::_code2name('langfam', at _);
+}
+
+sub langfam2code {
+   return Locale::Codes::_name2code('langfam', at _);
+}
+
+sub langfam_code2code {
+   return Locale::Codes::_code2code('langfam', at _);
+}
+
+sub all_langfam_codes {
+   return Locale::Codes::_all_codes('langfam', at _);
+}
+
+sub all_langfam_names {
+   return Locale::Codes::_all_names('langfam', at _);
+}
+
+sub rename_langfam {
+   return Locale::Codes::_rename('langfam', at _);
+}
+
+sub add_langfam {
+   return Locale::Codes::_add_code('langfam', at _);
+}
+
+sub delete_langfam {
+   return Locale::Codes::_delete_code('langfam', at _);
+}
+
+sub add_langfam_alias {
+   return Locale::Codes::_add_alias('langfam', at _);
+}
+
+sub delete_langfam_alias {
+   return Locale::Codes::_delete_alias('langfam', at _);
+}
+
+sub rename_langfam_code {
+   return Locale::Codes::_rename_code('langfam', at _);
+}
+
+sub add_langfam_code_alias {
+   return Locale::Codes::_add_code_alias('langfam', at _);
+}
+
+sub delete_langfam_code_alias {
+   return Locale::Codes::_delete_code_alias('langfam', at _);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangFam - standard codes for language extension identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::LangFam;
+
+   $lext = code2langfam('apa');                 # $lext gets 'Apache languages'
+   $code = langfam2code('Apache languages');    # $code gets 'apa'
+
+   @codes   = all_langfam_codes();
+   @names   = all_langfam_names();
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::LangFam> module provides access to standard codes
+used for identifying language families, such as those as defined in
+ISO 639-5.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO 639-5
+language family codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+language families. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $lext = code2langfam('apa','alpha');
+   $lext = code2langfam('apa',LOCALE_LANGFAM_ALPHA);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha>
+
+This is the set of three-letter (lowercase) codes from ISO 639-5
+such as 'apa' for Apache languages.
+
+This is the default code set.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2langfam ( CODE [,CODESET] )>
+
+=item B<langfam2code ( NAME [,CODESET] )>
+
+=item B<langfam_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_langfam_codes ( [CODESET] )>
+
+=item B<all_langfam_names ( [CODESET] )>
+
+=item B<Locale::Codes::LangFam::rename_langfam  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangFam::add_langfam  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangFam::delete_langfam  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangFam::add_langfam_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::LangFam::delete_langfam_alias  ( NAME )>
+
+=item B<Locale::Codes::LangFam::rename_langfam_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangFam::add_langfam_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangFam::delete_langfam_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.loc.gov/standards/iso639-5/id.php>
+
+ISO 639-5 .
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 2011-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1441 @@
+package Locale::Codes::LangFam_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:35 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangFam_Codes - langfam codes for the Locale::Codes::LangFam module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangFam module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'langfam'}{'id'} = '0116';
+
+$Locale::Codes::Data{'langfam'}{'id2names'} = {
+   q(0001) => [
+      q(Austro-Asiatic languages),
+      ],
+   q(0002) => [
+      q(Afro-Asiatic languages),
+      ],
+   q(0003) => [
+      q(Algonquian languages),
+      ],
+   q(0004) => [
+      q(Atlantic-Congo languages),
+      ],
+   q(0005) => [
+      q(Apache languages),
+      ],
+   q(0006) => [
+      q(Alacalufan languages),
+      ],
+   q(0007) => [
+      q(Algic languages),
+      ],
+   q(0008) => [
+      q(Artificial languages),
+      ],
+   q(0009) => [
+      q(Athapascan languages),
+      ],
+   q(0010) => [
+      q(Arauan languages),
+      ],
+   q(0011) => [
+      q(Australian languages),
+      ],
+   q(0012) => [
+      q(Arawakan languages),
+      ],
+   q(0013) => [
+      q(Uto-Aztecan languages),
+      ],
+   q(0014) => [
+      q(Banda languages),
+      ],
+   q(0015) => [
+      q(Bamileke languages),
+      ],
+   q(0016) => [
+      q(Baltic languages),
+      ],
+   q(0017) => [
+      q(Berber languages),
+      ],
+   q(0018) => [
+      q(Bihari languages),
+      ],
+   q(0019) => [
+      q(Bantu languages),
+      ],
+   q(0020) => [
+      q(Batak languages),
+      ],
+   q(0021) => [
+      q(Central American Indian languages),
+      ],
+   q(0022) => [
+      q(Caucasian languages),
+      ],
+   q(0023) => [
+      q(Chibchan languages),
+      ],
+   q(0024) => [
+      q(North Caucasian languages),
+      ],
+   q(0025) => [
+      q(South Caucasian languages),
+      ],
+   q(0026) => [
+      q(Chadic languages),
+      ],
+   q(0027) => [
+      q(Caddoan languages),
+      ],
+   q(0028) => [
+      q(Celtic languages),
+      ],
+   q(0029) => [
+      q(Chamic languages),
+      ],
+   q(0030) => [
+      q(Creoles and pidgins, English-based),
+      ],
+   q(0031) => [
+      q(Creoles and pidgins, French-based),
+      ],
+   q(0032) => [
+      q(Creoles and pidgins, Portuguese-based),
+      ],
+   q(0033) => [
+      q(Creoles and pidgins),
+      ],
+   q(0034) => [
+      q(Central Sudanic languages),
+      ],
+   q(0035) => [
+      q(Cushitic languages),
+      ],
+   q(0036) => [
+      q(Land Dayak languages),
+      ],
+   q(0037) => [
+      q(Mande languages),
+      ],
+   q(0038) => [
+      q(Dravidian languages),
+      ],
+   q(0039) => [
+      q(Egyptian languages),
+      ],
+   q(0040) => [
+      q(Eskimo-Aleut languages),
+      ],
+   q(0041) => [
+      q(Basque (family)),
+      ],
+   q(0042) => [
+      q(Finno-Ugrian languages),
+      ],
+   q(0043) => [
+      q(Formosan languages),
+      ],
+   q(0044) => [
+      q(Germanic languages),
+      ],
+   q(0045) => [
+      q(East Germanic languages),
+      ],
+   q(0046) => [
+      q(North Germanic languages),
+      ],
+   q(0047) => [
+      q(West Germanic languages),
+      ],
+   q(0048) => [
+      q(Greek languages),
+      ],
+   q(0049) => [
+      q(Hmong-Mien languages),
+      ],
+   q(0050) => [
+      q(Hokan languages),
+      ],
+   q(0051) => [
+      q(Armenian (family)),
+      ],
+   q(0052) => [
+      q(Indo-Iranian languages),
+      ],
+   q(0053) => [
+      q(Ijo languages),
+      ],
+   q(0054) => [
+      q(Indic languages),
+      ],
+   q(0055) => [
+      q(Indo-European languages),
+      ],
+   q(0056) => [
+      q(Iranian languages),
+      ],
+   q(0057) => [
+      q(Iroquoian languages),
+      ],
+   q(0058) => [
+      q(Italic languages),
+      ],
+   q(0059) => [
+      q(Japanese (family)),
+      ],
+   q(0060) => [
+      q(Karen languages),
+      ],
+   q(0061) => [
+      q(Kordofanian languages),
+      ],
+   q(0062) => [
+      q(Khoisan languages),
+      ],
+   q(0063) => [
+      q(Kru languages),
+      ],
+   q(0064) => [
+      q(Austronesian languages),
+      ],
+   q(0065) => [
+      q(Mon-Khmer languages),
+      ],
+   q(0066) => [
+      q(Manobo languages),
+      ],
+   q(0067) => [
+      q(Munda languages),
+      ],
+   q(0068) => [
+      q(Mayan languages),
+      ],
+   q(0069) => [
+      q(Nahuatl languages),
+      ],
+   q(0070) => [
+      q(North American Indian languages),
+      ],
+   q(0071) => [
+      q(Trans-New Guinea languages),
+      ],
+   q(0072) => [
+      q(Niger-Kordofanian languages),
+      ],
+   q(0073) => [
+      q(Nubian languages),
+      ],
+   q(0074) => [
+      q(Oto-Manguean languages),
+      ],
+   q(0075) => [
+      q(Omotic languages),
+      ],
+   q(0076) => [
+      q(Otomian languages),
+      ],
+   q(0077) => [
+      q(Papuan languages),
+      ],
+   q(0078) => [
+      q(Philippine languages),
+      ],
+   q(0079) => [
+      q(Central Malayo-Polynesian languages),
+      ],
+   q(0080) => [
+      q(Malayo-Polynesian languages),
+      ],
+   q(0081) => [
+      q(Eastern Malayo-Polynesian languages),
+      ],
+   q(0082) => [
+      q(Western Malayo-Polynesian languages),
+      ],
+   q(0083) => [
+      q(Prakrit languages),
+      ],
+   q(0084) => [
+      q(Quechuan (family)),
+      ],
+   q(0085) => [
+      q(Romance languages),
+      ],
+   q(0086) => [
+      q(South American Indian languages),
+      ],
+   q(0087) => [
+      q(Salishan languages),
+      ],
+   q(0088) => [
+      q(Eastern Sudanic languages),
+      ],
+   q(0089) => [
+      q(Semitic languages),
+      ],
+   q(0090) => [
+      q(sign languages),
+      ],
+   q(0091) => [
+      q(Siouan languages),
+      ],
+   q(0092) => [
+      q(Sino-Tibetan languages),
+      ],
+   q(0093) => [
+      q(Slavic languages),
+      ],
+   q(0094) => [
+      q(Sami languages),
+      ],
+   q(0095) => [
+      q(Songhai languages),
+      ],
+   q(0096) => [
+      q(Albanian languages),
+      ],
+   q(0097) => [
+      q(Nilo-Saharan languages),
+      ],
+   q(0098) => [
+      q(Samoyedic languages),
+      ],
+   q(0099) => [
+      q(Tai languages),
+      ],
+   q(0100) => [
+      q(Tibeto-Burman languages),
+      ],
+   q(0101) => [
+      q(Turkic languages),
+      ],
+   q(0102) => [
+      q(Tupi languages),
+      ],
+   q(0103) => [
+      q(Altaic languages),
+      ],
+   q(0104) => [
+      q(Tungus languages),
+      ],
+   q(0105) => [
+      q(Uralic languages),
+      ],
+   q(0106) => [
+      q(Wakashan languages),
+      ],
+   q(0107) => [
+      q(Sorbian languages),
+      ],
+   q(0108) => [
+      q(Mongolian languages),
+      ],
+   q(0109) => [
+      q(Na-Dene languages),
+      ],
+   q(0110) => [
+      q(Yupik languages),
+      ],
+   q(0111) => [
+      q(Chinese (family)),
+      ],
+   q(0112) => [
+      q(East Slavic languages),
+      ],
+   q(0113) => [
+      q(South Slavic languages),
+      ],
+   q(0114) => [
+      q(West Slavic languages),
+      ],
+   q(0115) => [
+      q(Zande languages),
+      ],
+};
+
+$Locale::Codes::Data{'langfam'}{'alias2id'} = {
+   q(afro-asiatic languages) => [
+      q(0002),
+      q(0),
+      ],
+   q(alacalufan languages) => [
+      q(0006),
+      q(0),
+      ],
+   q(albanian languages) => [
+      q(0096),
+      q(0),
+      ],
+   q(algic languages) => [
+      q(0007),
+      q(0),
+      ],
+   q(algonquian languages) => [
+      q(0003),
+      q(0),
+      ],
+   q(altaic languages) => [
+      q(0103),
+      q(0),
+      ],
+   q(apache languages) => [
+      q(0005),
+      q(0),
+      ],
+   q(arauan languages) => [
+      q(0010),
+      q(0),
+      ],
+   q(arawakan languages) => [
+      q(0012),
+      q(0),
+      ],
+   q(armenian (family)) => [
+      q(0051),
+      q(0),
+      ],
+   q(artificial languages) => [
+      q(0008),
+      q(0),
+      ],
+   q(athapascan languages) => [
+      q(0009),
+      q(0),
+      ],
+   q(atlantic-congo languages) => [
+      q(0004),
+      q(0),
+      ],
+   q(australian languages) => [
+      q(0011),
+      q(0),
+      ],
+   q(austro-asiatic languages) => [
+      q(0001),
+      q(0),
+      ],
+   q(austronesian languages) => [
+      q(0064),
+      q(0),
+      ],
+   q(baltic languages) => [
+      q(0016),
+      q(0),
+      ],
+   q(bamileke languages) => [
+      q(0015),
+      q(0),
+      ],
+   q(banda languages) => [
+      q(0014),
+      q(0),
+      ],
+   q(bantu languages) => [
+      q(0019),
+      q(0),
+      ],
+   q(basque (family)) => [
+      q(0041),
+      q(0),
+      ],
+   q(batak languages) => [
+      q(0020),
+      q(0),
+      ],
+   q(berber languages) => [
+      q(0017),
+      q(0),
+      ],
+   q(bihari languages) => [
+      q(0018),
+      q(0),
+      ],
+   q(caddoan languages) => [
+      q(0027),
+      q(0),
+      ],
+   q(caucasian languages) => [
+      q(0022),
+      q(0),
+      ],
+   q(celtic languages) => [
+      q(0028),
+      q(0),
+      ],
+   q(central american indian languages) => [
+      q(0021),
+      q(0),
+      ],
+   q(central malayo-polynesian languages) => [
+      q(0079),
+      q(0),
+      ],
+   q(central sudanic languages) => [
+      q(0034),
+      q(0),
+      ],
+   q(chadic languages) => [
+      q(0026),
+      q(0),
+      ],
+   q(chamic languages) => [
+      q(0029),
+      q(0),
+      ],
+   q(chibchan languages) => [
+      q(0023),
+      q(0),
+      ],
+   q(chinese (family)) => [
+      q(0111),
+      q(0),
+      ],
+   q(creoles and pidgins) => [
+      q(0033),
+      q(0),
+      ],
+   q(creoles and pidgins, english-based) => [
+      q(0030),
+      q(0),
+      ],
+   q(creoles and pidgins, french-based) => [
+      q(0031),
+      q(0),
+      ],
+   q(creoles and pidgins, portuguese-based) => [
+      q(0032),
+      q(0),
+      ],
+   q(cushitic languages) => [
+      q(0035),
+      q(0),
+      ],
+   q(dravidian languages) => [
+      q(0038),
+      q(0),
+      ],
+   q(east germanic languages) => [
+      q(0045),
+      q(0),
+      ],
+   q(east slavic languages) => [
+      q(0112),
+      q(0),
+      ],
+   q(eastern malayo-polynesian languages) => [
+      q(0081),
+      q(0),
+      ],
+   q(eastern sudanic languages) => [
+      q(0088),
+      q(0),
+      ],
+   q(egyptian languages) => [
+      q(0039),
+      q(0),
+      ],
+   q(eskimo-aleut languages) => [
+      q(0040),
+      q(0),
+      ],
+   q(finno-ugrian languages) => [
+      q(0042),
+      q(0),
+      ],
+   q(formosan languages) => [
+      q(0043),
+      q(0),
+      ],
+   q(germanic languages) => [
+      q(0044),
+      q(0),
+      ],
+   q(greek languages) => [
+      q(0048),
+      q(0),
+      ],
+   q(hmong-mien languages) => [
+      q(0049),
+      q(0),
+      ],
+   q(hokan languages) => [
+      q(0050),
+      q(0),
+      ],
+   q(ijo languages) => [
+      q(0053),
+      q(0),
+      ],
+   q(indic languages) => [
+      q(0054),
+      q(0),
+      ],
+   q(indo-european languages) => [
+      q(0055),
+      q(0),
+      ],
+   q(indo-iranian languages) => [
+      q(0052),
+      q(0),
+      ],
+   q(iranian languages) => [
+      q(0056),
+      q(0),
+      ],
+   q(iroquoian languages) => [
+      q(0057),
+      q(0),
+      ],
+   q(italic languages) => [
+      q(0058),
+      q(0),
+      ],
+   q(japanese (family)) => [
+      q(0059),
+      q(0),
+      ],
+   q(karen languages) => [
+      q(0060),
+      q(0),
+      ],
+   q(khoisan languages) => [
+      q(0062),
+      q(0),
+      ],
+   q(kordofanian languages) => [
+      q(0061),
+      q(0),
+      ],
+   q(kru languages) => [
+      q(0063),
+      q(0),
+      ],
+   q(land dayak languages) => [
+      q(0036),
+      q(0),
+      ],
+   q(malayo-polynesian languages) => [
+      q(0080),
+      q(0),
+      ],
+   q(mande languages) => [
+      q(0037),
+      q(0),
+      ],
+   q(manobo languages) => [
+      q(0066),
+      q(0),
+      ],
+   q(mayan languages) => [
+      q(0068),
+      q(0),
+      ],
+   q(mon-khmer languages) => [
+      q(0065),
+      q(0),
+      ],
+   q(mongolian languages) => [
+      q(0108),
+      q(0),
+      ],
+   q(munda languages) => [
+      q(0067),
+      q(0),
+      ],
+   q(na-dene languages) => [
+      q(0109),
+      q(0),
+      ],
+   q(nahuatl languages) => [
+      q(0069),
+      q(0),
+      ],
+   q(niger-kordofanian languages) => [
+      q(0072),
+      q(0),
+      ],
+   q(nilo-saharan languages) => [
+      q(0097),
+      q(0),
+      ],
+   q(north american indian languages) => [
+      q(0070),
+      q(0),
+      ],
+   q(north caucasian languages) => [
+      q(0024),
+      q(0),
+      ],
+   q(north germanic languages) => [
+      q(0046),
+      q(0),
+      ],
+   q(nubian languages) => [
+      q(0073),
+      q(0),
+      ],
+   q(omotic languages) => [
+      q(0075),
+      q(0),
+      ],
+   q(oto-manguean languages) => [
+      q(0074),
+      q(0),
+      ],
+   q(otomian languages) => [
+      q(0076),
+      q(0),
+      ],
+   q(papuan languages) => [
+      q(0077),
+      q(0),
+      ],
+   q(philippine languages) => [
+      q(0078),
+      q(0),
+      ],
+   q(prakrit languages) => [
+      q(0083),
+      q(0),
+      ],
+   q(quechuan (family)) => [
+      q(0084),
+      q(0),
+      ],
+   q(romance languages) => [
+      q(0085),
+      q(0),
+      ],
+   q(salishan languages) => [
+      q(0087),
+      q(0),
+      ],
+   q(sami languages) => [
+      q(0094),
+      q(0),
+      ],
+   q(samoyedic languages) => [
+      q(0098),
+      q(0),
+      ],
+   q(semitic languages) => [
+      q(0089),
+      q(0),
+      ],
+   q(sign languages) => [
+      q(0090),
+      q(0),
+      ],
+   q(sino-tibetan languages) => [
+      q(0092),
+      q(0),
+      ],
+   q(siouan languages) => [
+      q(0091),
+      q(0),
+      ],
+   q(slavic languages) => [
+      q(0093),
+      q(0),
+      ],
+   q(songhai languages) => [
+      q(0095),
+      q(0),
+      ],
+   q(sorbian languages) => [
+      q(0107),
+      q(0),
+      ],
+   q(south american indian languages) => [
+      q(0086),
+      q(0),
+      ],
+   q(south caucasian languages) => [
+      q(0025),
+      q(0),
+      ],
+   q(south slavic languages) => [
+      q(0113),
+      q(0),
+      ],
+   q(tai languages) => [
+      q(0099),
+      q(0),
+      ],
+   q(tibeto-burman languages) => [
+      q(0100),
+      q(0),
+      ],
+   q(trans-new guinea languages) => [
+      q(0071),
+      q(0),
+      ],
+   q(tungus languages) => [
+      q(0104),
+      q(0),
+      ],
+   q(tupi languages) => [
+      q(0102),
+      q(0),
+      ],
+   q(turkic languages) => [
+      q(0101),
+      q(0),
+      ],
+   q(uralic languages) => [
+      q(0105),
+      q(0),
+      ],
+   q(uto-aztecan languages) => [
+      q(0013),
+      q(0),
+      ],
+   q(wakashan languages) => [
+      q(0106),
+      q(0),
+      ],
+   q(west germanic languages) => [
+      q(0047),
+      q(0),
+      ],
+   q(west slavic languages) => [
+      q(0114),
+      q(0),
+      ],
+   q(western malayo-polynesian languages) => [
+      q(0082),
+      q(0),
+      ],
+   q(yupik languages) => [
+      q(0110),
+      q(0),
+      ],
+   q(zande languages) => [
+      q(0115),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'langfam'}{'code2id'} = {
+   q(alpha) => {
+      q(aav) => [
+         q(0001),
+         q(0),
+         ],
+      q(afa) => [
+         q(0002),
+         q(0),
+         ],
+      q(alg) => [
+         q(0003),
+         q(0),
+         ],
+      q(alv) => [
+         q(0004),
+         q(0),
+         ],
+      q(apa) => [
+         q(0005),
+         q(0),
+         ],
+      q(aqa) => [
+         q(0006),
+         q(0),
+         ],
+      q(aql) => [
+         q(0007),
+         q(0),
+         ],
+      q(art) => [
+         q(0008),
+         q(0),
+         ],
+      q(ath) => [
+         q(0009),
+         q(0),
+         ],
+      q(auf) => [
+         q(0010),
+         q(0),
+         ],
+      q(aus) => [
+         q(0011),
+         q(0),
+         ],
+      q(awd) => [
+         q(0012),
+         q(0),
+         ],
+      q(azc) => [
+         q(0013),
+         q(0),
+         ],
+      q(bad) => [
+         q(0014),
+         q(0),
+         ],
+      q(bai) => [
+         q(0015),
+         q(0),
+         ],
+      q(bat) => [
+         q(0016),
+         q(0),
+         ],
+      q(ber) => [
+         q(0017),
+         q(0),
+         ],
+      q(bih) => [
+         q(0018),
+         q(0),
+         ],
+      q(bnt) => [
+         q(0019),
+         q(0),
+         ],
+      q(btk) => [
+         q(0020),
+         q(0),
+         ],
+      q(cai) => [
+         q(0021),
+         q(0),
+         ],
+      q(cau) => [
+         q(0022),
+         q(0),
+         ],
+      q(cba) => [
+         q(0023),
+         q(0),
+         ],
+      q(ccn) => [
+         q(0024),
+         q(0),
+         ],
+      q(ccs) => [
+         q(0025),
+         q(0),
+         ],
+      q(cdc) => [
+         q(0026),
+         q(0),
+         ],
+      q(cdd) => [
+         q(0027),
+         q(0),
+         ],
+      q(cel) => [
+         q(0028),
+         q(0),
+         ],
+      q(cmc) => [
+         q(0029),
+         q(0),
+         ],
+      q(cpe) => [
+         q(0030),
+         q(0),
+         ],
+      q(cpf) => [
+         q(0031),
+         q(0),
+         ],
+      q(cpp) => [
+         q(0032),
+         q(0),
+         ],
+      q(crp) => [
+         q(0033),
+         q(0),
+         ],
+      q(csu) => [
+         q(0034),
+         q(0),
+         ],
+      q(cus) => [
+         q(0035),
+         q(0),
+         ],
+      q(day) => [
+         q(0036),
+         q(0),
+         ],
+      q(dmn) => [
+         q(0037),
+         q(0),
+         ],
+      q(dra) => [
+         q(0038),
+         q(0),
+         ],
+      q(egx) => [
+         q(0039),
+         q(0),
+         ],
+      q(esx) => [
+         q(0040),
+         q(0),
+         ],
+      q(euq) => [
+         q(0041),
+         q(0),
+         ],
+      q(fiu) => [
+         q(0042),
+         q(0),
+         ],
+      q(fox) => [
+         q(0043),
+         q(0),
+         ],
+      q(gem) => [
+         q(0044),
+         q(0),
+         ],
+      q(gme) => [
+         q(0045),
+         q(0),
+         ],
+      q(gmq) => [
+         q(0046),
+         q(0),
+         ],
+      q(gmw) => [
+         q(0047),
+         q(0),
+         ],
+      q(grk) => [
+         q(0048),
+         q(0),
+         ],
+      q(hmx) => [
+         q(0049),
+         q(0),
+         ],
+      q(hok) => [
+         q(0050),
+         q(0),
+         ],
+      q(hyx) => [
+         q(0051),
+         q(0),
+         ],
+      q(iir) => [
+         q(0052),
+         q(0),
+         ],
+      q(ijo) => [
+         q(0053),
+         q(0),
+         ],
+      q(inc) => [
+         q(0054),
+         q(0),
+         ],
+      q(ine) => [
+         q(0055),
+         q(0),
+         ],
+      q(ira) => [
+         q(0056),
+         q(0),
+         ],
+      q(iro) => [
+         q(0057),
+         q(0),
+         ],
+      q(itc) => [
+         q(0058),
+         q(0),
+         ],
+      q(jpx) => [
+         q(0059),
+         q(0),
+         ],
+      q(kar) => [
+         q(0060),
+         q(0),
+         ],
+      q(kdo) => [
+         q(0061),
+         q(0),
+         ],
+      q(khi) => [
+         q(0062),
+         q(0),
+         ],
+      q(kro) => [
+         q(0063),
+         q(0),
+         ],
+      q(map) => [
+         q(0064),
+         q(0),
+         ],
+      q(mkh) => [
+         q(0065),
+         q(0),
+         ],
+      q(mno) => [
+         q(0066),
+         q(0),
+         ],
+      q(mun) => [
+         q(0067),
+         q(0),
+         ],
+      q(myn) => [
+         q(0068),
+         q(0),
+         ],
+      q(nah) => [
+         q(0069),
+         q(0),
+         ],
+      q(nai) => [
+         q(0070),
+         q(0),
+         ],
+      q(ngf) => [
+         q(0071),
+         q(0),
+         ],
+      q(nic) => [
+         q(0072),
+         q(0),
+         ],
+      q(nub) => [
+         q(0073),
+         q(0),
+         ],
+      q(omq) => [
+         q(0074),
+         q(0),
+         ],
+      q(omv) => [
+         q(0075),
+         q(0),
+         ],
+      q(oto) => [
+         q(0076),
+         q(0),
+         ],
+      q(paa) => [
+         q(0077),
+         q(0),
+         ],
+      q(phi) => [
+         q(0078),
+         q(0),
+         ],
+      q(plf) => [
+         q(0079),
+         q(0),
+         ],
+      q(poz) => [
+         q(0080),
+         q(0),
+         ],
+      q(pqe) => [
+         q(0081),
+         q(0),
+         ],
+      q(pqw) => [
+         q(0082),
+         q(0),
+         ],
+      q(pra) => [
+         q(0083),
+         q(0),
+         ],
+      q(qwe) => [
+         q(0084),
+         q(0),
+         ],
+      q(roa) => [
+         q(0085),
+         q(0),
+         ],
+      q(sai) => [
+         q(0086),
+         q(0),
+         ],
+      q(sal) => [
+         q(0087),
+         q(0),
+         ],
+      q(sdv) => [
+         q(0088),
+         q(0),
+         ],
+      q(sem) => [
+         q(0089),
+         q(0),
+         ],
+      q(sgn) => [
+         q(0090),
+         q(0),
+         ],
+      q(sio) => [
+         q(0091),
+         q(0),
+         ],
+      q(sit) => [
+         q(0092),
+         q(0),
+         ],
+      q(sla) => [
+         q(0093),
+         q(0),
+         ],
+      q(smi) => [
+         q(0094),
+         q(0),
+         ],
+      q(son) => [
+         q(0095),
+         q(0),
+         ],
+      q(sqj) => [
+         q(0096),
+         q(0),
+         ],
+      q(ssa) => [
+         q(0097),
+         q(0),
+         ],
+      q(syd) => [
+         q(0098),
+         q(0),
+         ],
+      q(tai) => [
+         q(0099),
+         q(0),
+         ],
+      q(tbq) => [
+         q(0100),
+         q(0),
+         ],
+      q(trk) => [
+         q(0101),
+         q(0),
+         ],
+      q(tup) => [
+         q(0102),
+         q(0),
+         ],
+      q(tut) => [
+         q(0103),
+         q(0),
+         ],
+      q(tuw) => [
+         q(0104),
+         q(0),
+         ],
+      q(urj) => [
+         q(0105),
+         q(0),
+         ],
+      q(wak) => [
+         q(0106),
+         q(0),
+         ],
+      q(wen) => [
+         q(0107),
+         q(0),
+         ],
+      q(xgn) => [
+         q(0108),
+         q(0),
+         ],
+      q(xnd) => [
+         q(0109),
+         q(0),
+         ],
+      q(ypk) => [
+         q(0110),
+         q(0),
+         ],
+      q(zhx) => [
+         q(0111),
+         q(0),
+         ],
+      q(zle) => [
+         q(0112),
+         q(0),
+         ],
+      q(zls) => [
+         q(0113),
+         q(0),
+         ],
+      q(zlw) => [
+         q(0114),
+         q(0),
+         ],
+      q(znd) => [
+         q(0115),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'langfam'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(aav),
+      q(0002) => q(afa),
+      q(0003) => q(alg),
+      q(0004) => q(alv),
+      q(0005) => q(apa),
+      q(0006) => q(aqa),
+      q(0007) => q(aql),
+      q(0008) => q(art),
+      q(0009) => q(ath),
+      q(0010) => q(auf),
+      q(0011) => q(aus),
+      q(0012) => q(awd),
+      q(0013) => q(azc),
+      q(0014) => q(bad),
+      q(0015) => q(bai),
+      q(0016) => q(bat),
+      q(0017) => q(ber),
+      q(0018) => q(bih),
+      q(0019) => q(bnt),
+      q(0020) => q(btk),
+      q(0021) => q(cai),
+      q(0022) => q(cau),
+      q(0023) => q(cba),
+      q(0024) => q(ccn),
+      q(0025) => q(ccs),
+      q(0026) => q(cdc),
+      q(0027) => q(cdd),
+      q(0028) => q(cel),
+      q(0029) => q(cmc),
+      q(0030) => q(cpe),
+      q(0031) => q(cpf),
+      q(0032) => q(cpp),
+      q(0033) => q(crp),
+      q(0034) => q(csu),
+      q(0035) => q(cus),
+      q(0036) => q(day),
+      q(0037) => q(dmn),
+      q(0038) => q(dra),
+      q(0039) => q(egx),
+      q(0040) => q(esx),
+      q(0041) => q(euq),
+      q(0042) => q(fiu),
+      q(0043) => q(fox),
+      q(0044) => q(gem),
+      q(0045) => q(gme),
+      q(0046) => q(gmq),
+      q(0047) => q(gmw),
+      q(0048) => q(grk),
+      q(0049) => q(hmx),
+      q(0050) => q(hok),
+      q(0051) => q(hyx),
+      q(0052) => q(iir),
+      q(0053) => q(ijo),
+      q(0054) => q(inc),
+      q(0055) => q(ine),
+      q(0056) => q(ira),
+      q(0057) => q(iro),
+      q(0058) => q(itc),
+      q(0059) => q(jpx),
+      q(0060) => q(kar),
+      q(0061) => q(kdo),
+      q(0062) => q(khi),
+      q(0063) => q(kro),
+      q(0064) => q(map),
+      q(0065) => q(mkh),
+      q(0066) => q(mno),
+      q(0067) => q(mun),
+      q(0068) => q(myn),
+      q(0069) => q(nah),
+      q(0070) => q(nai),
+      q(0071) => q(ngf),
+      q(0072) => q(nic),
+      q(0073) => q(nub),
+      q(0074) => q(omq),
+      q(0075) => q(omv),
+      q(0076) => q(oto),
+      q(0077) => q(paa),
+      q(0078) => q(phi),
+      q(0079) => q(plf),
+      q(0080) => q(poz),
+      q(0081) => q(pqe),
+      q(0082) => q(pqw),
+      q(0083) => q(pra),
+      q(0084) => q(qwe),
+      q(0085) => q(roa),
+      q(0086) => q(sai),
+      q(0087) => q(sal),
+      q(0088) => q(sdv),
+      q(0089) => q(sem),
+      q(0090) => q(sgn),
+      q(0091) => q(sio),
+      q(0092) => q(sit),
+      q(0093) => q(sla),
+      q(0094) => q(smi),
+      q(0095) => q(son),
+      q(0096) => q(sqj),
+      q(0097) => q(ssa),
+      q(0098) => q(syd),
+      q(0099) => q(tai),
+      q(0100) => q(tbq),
+      q(0101) => q(trk),
+      q(0102) => q(tup),
+      q(0103) => q(tut),
+      q(0104) => q(tuw),
+      q(0105) => q(urj),
+      q(0106) => q(wak),
+      q(0107) => q(wen),
+      q(0108) => q(xgn),
+      q(0109) => q(xnd),
+      q(0110) => q(ypk),
+      q(0111) => q(zhx),
+      q(0112) => q(zle),
+      q(0113) => q(zls),
+      q(0114) => q(zlw),
+      q(0115) => q(znd),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangFam_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+package Locale::Codes::LangFam_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Tue Sep 27 15:40:31 EDT 2011
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangFam_Retired - retired langfam codes for the Locale::Codes::LangFam module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangFam module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+use warnings;
+require 5.002;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'langfam'}{'alpha'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'langfam'}{'alpha'}{'name'} = {
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,96 @@
+package Locale::Codes::LangVar;
+# Copyright (c) 2011-2013 Sullivan Beck
+# This program is free software; you can redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+require 5.006;
+use warnings;
+
+require Exporter;
+use Carp;
+use Locale::Codes;
+use Locale::Codes::Constants;
+use Locale::Codes::LangVar_Codes;
+use Locale::Codes::LangVar_Retired;
+
+#=======================================================================
+#       Public Global Variables
+#=======================================================================
+
+our($VERSION, at ISA, at EXPORT, at EXPORT_OK);
+
+$VERSION='3.25';
+ at ISA       = qw(Exporter);
+ at EXPORT    = qw(code2langvar
+                langvar2code
+                all_langvar_codes
+                all_langvar_names
+                langvar_code2code
+                LOCALE_LANGVAR_ALPHA
+               );
+
+sub code2langvar {
+   return Locale::Codes::_code2name('langvar', at _);
+}
+
+sub langvar2code {
+   return Locale::Codes::_name2code('langvar', at _);
+}
+
+sub langvar_code2code {
+
+   return Locale::Codes::_code2code('langvar', at _);
+}
+
+sub all_langvar_codes {
+   return Locale::Codes::_all_codes('langvar', at _);
+}
+
+sub all_langvar_names {
+   return Locale::Codes::_all_names('langvar', at _);
+}
+
+sub rename_langvar {
+   return Locale::Codes::_rename('langvar', at _);
+}
+
+sub add_langvar {
+   return Locale::Codes::_add_code('langvar', at _);
+}
+
+sub delete_langvar {
+   return Locale::Codes::_delete_code('langvar', at _);
+}
+
+sub add_langvar_alias {
+   return Locale::Codes::_add_alias('langvar', at _);
+}
+
+sub delete_langvar_alias {
+   return Locale::Codes::_delete_alias('langvar', at _);
+}
+
+sub rename_langvar_code {
+   return Locale::Codes::_rename_code('langvar', at _);
+}
+
+sub add_langvar_code_alias {
+   return Locale::Codes::_add_code_alias('langvar', at _);
+}
+
+sub delete_langvar_code_alias {
+   return Locale::Codes::_delete_code_alias('langvar', at _);
+}
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,118 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangVar - standard codes for language variation identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::LangVar;
+
+   $lvar = code2langvar('acm');                 # $lvar gets 'Mesopotamian Arabic'
+   $code = langvar2code('Mesopotamian Arabic'); # $code gets 'acm'
+
+   @codes   = all_langvar_codes();
+   @names   = all_langvar_names();
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::LangVar> module provides access to standard codes
+used for identifying language variations, such as those as defined in
+the IANA language registry.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default IANA
+language registry codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+language variations. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $lvar = code2langvar('en','alpha-2');
+   $lvar = code2langvar('en',LOCALE_CODE_ALPHA_2);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha>
+
+This is the set of alphanumeric codes from the IANA
+language registry, such as 'arevela' for Eastern Armenian. 
+
+This code set is identified with the symbol C<LOCALE_LANGVAR_ALPHA>.
+
+This is the default code set.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2langvar ( CODE [,CODESET] )>
+
+=item B<langvar2code ( NAME [,CODESET] )>
+
+=item B<langvar_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_langvar_codes ( [CODESET] )>
+
+=item B<all_langvar_names ( [CODESET] )>
+
+=item B<Locale::Codes::LangVar::rename_langvar  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangVar::add_langvar  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::LangVar::delete_langvar  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangVar::add_langvar_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::LangVar::delete_langvar_alias  ( NAME )>
+
+=item B<Locale::Codes::LangVar::rename_langvar_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangVar::add_langvar_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::LangVar::delete_langvar_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.iana.org/assignments/language-subtag-registry>
+
+The IANA language subtag registry.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 2011-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,882 @@
+package Locale::Codes::LangVar_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:34 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangVar_Codes - langvar codes for the Locale::Codes::LangVar module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangVar module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'langvar'}{'id'} = '0061';
+
+$Locale::Codes::Data{'langvar'}{'id2names'} = {
+   q(0001) => [
+      q(Late Middle French (to 1606)),
+      ],
+   q(0002) => [
+      q(Early Modern French),
+      ],
+   q(0003) => [
+      q(Traditional German orthography),
+      ],
+   q(0004) => [
+      q("Academic" ("governmental") variant of Belarusian as),
+      q("Academic" ("governmental") variant of Belarusian as),
+      ],
+   q(0005) => [
+      q(Standardized Resian orthography),
+      ],
+   q(0006) => [
+      q(German orthography of 1996),
+      ],
+   q(0007) => [
+      q(ALA-LC Romanization, 1997 edition),
+      ],
+   q(0008) => [
+      q(Aluku dialect),
+      q(Boni dialect),
+      ],
+   q(0009) => [
+      q(Eastern Armenian),
+      ],
+   q(0010) => [
+      q(Western Armenian),
+      ],
+   q(0011) => [
+      q(Unified Turkic Latin Alphabet (Historical)),
+      ],
+   q(0012) => [
+      q(Buddhist Hybrid Sanskrit),
+      ],
+   q(0013) => [
+      q(Biscayan dialect of Basque),
+      ],
+   q(0014) => [
+      q(The San Giorgio dialect of Resian),
+      q(The Bila dialect of Resian),
+      ],
+   q(0015) => [
+      q(Slovene in Bohorič alphabet),
+      ],
+   q(0016) => [
+      q(Boontling),
+      ],
+   q(0017) => [
+      q(Slovene in Dajnko alphabet),
+      ],
+   q(0018) => [
+      q(Early Modern English (1500-1700)),
+      ],
+   q(0019) => [
+      q(International Phonetic Alphabet),
+      ],
+   q(0020) => [
+      q(Uralic Phonetic Alphabet),
+      ],
+   q(0021) => [
+      q(X-SAMPA transcription),
+      ],
+   q(0022) => [
+      q(Hepburn romanization),
+      ],
+   q(0023) => [
+      q(Norwegian in Hognorsk (High Norwegian) orthography),
+      ],
+   q(0024) => [
+      q(Epic Sanskrit),
+      ],
+   q(0025) => [
+      q(Jauer dialect of Romansh),
+      ],
+   q(0026) => [
+      q(Jyutping Cantonese Romanization),
+      ],
+   q(0027) => [
+      q(Common Cornish orthography of Revived Cornish),
+      ],
+   q(0028) => [
+      q(Standard Cornish orthography of Revived Cornish),
+      q(Kernowek Standard),
+      ],
+   q(0029) => [
+      q(Classical Sanskrit),
+      ],
+   q(0030) => [
+      q(The Lipovaz dialect of Resian),
+      q(The Lipovec dialect of Resian),
+      ],
+   q(0031) => [
+      q(Post-1917 Russian orthography),
+      ],
+   q(0032) => [
+      q(Slovene in Metelko alphabet),
+      ],
+   q(0033) => [
+      q(Monotonic Greek),
+      ],
+   q(0034) => [
+      q(Ndyuka dialect),
+      q(Aukan dialect),
+      ],
+   q(0035) => [
+      q(Natisone dialect),
+      q(Nadiza dialect),
+      ],
+   q(0036) => [
+      q(The Gniva dialect of Resian),
+      q(The Njiva dialect of Resian),
+      ],
+   q(0037) => [
+      q(Volapuk nulik),
+      q(Volapuk perevidol),
+      q(Volapuk nuladik),
+      q(de Jong's Volapuk),
+      q(New Volapuk),
+      q(Revised Volapuk),
+      q(Modern Volapuk),
+      ],
+   q(0038) => [
+      q(The Oseacco dialect of Resian),
+      q(The Osojane dialect of Resian),
+      ],
+   q(0039) => [
+      q(Pamaka dialect),
+      ],
+   q(0040) => [
+      q(Petrine orthography),
+      ],
+   q(0041) => [
+      q(Pinyin romanization),
+      ],
+   q(0042) => [
+      q(Polytonic Greek),
+      ],
+   q(0043) => [
+      q(Puter idiom of Romansh),
+      ],
+   q(0044) => [
+      q(Volapuk rigik),
+      q(Schleyer's Volapuk),
+      q(Original Volapuk),
+      q(Classic Volapuk),
+      ],
+   q(0045) => [
+      q(Resian),
+      q(Resianic),
+      q(Rezijan),
+      ],
+   q(0046) => [
+      q(Rumantsch Grischun),
+      ],
+   q(0047) => [
+      q(Scottish Standard English),
+      ],
+   q(0048) => [
+      q(Scouse),
+      ],
+   q(0049) => [
+      q(The Stolvizza dialect of Resian),
+      q(The Solbica dialect of Resian),
+      ],
+   q(0050) => [
+      q(Surmiran idiom of Romansh),
+      ],
+   q(0051) => [
+      q(Sursilvan idiom of Romansh),
+      ],
+   q(0052) => [
+      q(Sutsilvan idiom of Romansh),
+      ],
+   q(0053) => [
+      q(Belarusian in Taraskievica orthography),
+      ],
+   q(0054) => [
+      q(Unified Cornish orthography of Revived Cornish),
+      ],
+   q(0055) => [
+      q(Unified Cornish Revised orthography of Revived Cornish),
+      ],
+   q(0056) => [
+      q(Ulster dialect of Scots),
+      ],
+   q(0057) => [
+      q(Vedic Sanskrit),
+      ],
+   q(0058) => [
+      q(Valencian),
+      ],
+   q(0059) => [
+      q(Vallader idiom of Romansh),
+      ],
+   q(0060) => [
+      q(Wade-Giles romanization),
+      ],
+};
+
+$Locale::Codes::Data{'langvar'}{'alias2id'} = {
+   q("academic" ("governmental") variant of belarusian as) => [
+      q(0004),
+      q(0),
+      ],
+   q(ala-lc romanization, 1997 edition) => [
+      q(0007),
+      q(0),
+      ],
+   q(aluku dialect) => [
+      q(0008),
+      q(0),
+      ],
+   q(aukan dialect) => [
+      q(0034),
+      q(0),
+      ],
+   q(belarusian in taraskievica orthography) => [
+      q(0053),
+      q(0),
+      ],
+   q(biscayan dialect of basque) => [
+      q(0013),
+      q(0),
+      ],
+   q(boni dialect) => [
+      q(0008),
+      q(0),
+      ],
+   q(boontling) => [
+      q(0016),
+      q(0),
+      ],
+   q(buddhist hybrid sanskrit) => [
+      q(0012),
+      q(0),
+      ],
+   q(classic volapuk) => [
+      q(0044),
+      q(0),
+      ],
+   q(classical sanskrit) => [
+      q(0029),
+      q(0),
+      ],
+   q(common cornish orthography of revived cornish) => [
+      q(0027),
+      q(0),
+      ],
+   q(de jong's volapuk) => [
+      q(0037),
+      q(0),
+      ],
+   q(early modern english (1500-1700)) => [
+      q(0018),
+      q(0),
+      ],
+   q(early modern french) => [
+      q(0002),
+      q(0),
+      ],
+   q(eastern armenian) => [
+      q(0009),
+      q(0),
+      ],
+   q(epic sanskrit) => [
+      q(0024),
+      q(0),
+      ],
+   q(german orthography of 1996) => [
+      q(0006),
+      q(0),
+      ],
+   q(hepburn romanization) => [
+      q(0022),
+      q(0),
+      ],
+   q(international phonetic alphabet) => [
+      q(0019),
+      q(0),
+      ],
+   q(jauer dialect of romansh) => [
+      q(0025),
+      q(0),
+      ],
+   q(jyutping cantonese romanization) => [
+      q(0026),
+      q(0),
+      ],
+   q(kernowek standard) => [
+      q(0028),
+      q(0),
+      ],
+   q(late middle french (to 1606)) => [
+      q(0001),
+      q(0),
+      ],
+   q(modern volapuk) => [
+      q(0037),
+      q(0),
+      ],
+   q(monotonic greek) => [
+      q(0033),
+      q(0),
+      ],
+   q(nadiza dialect) => [
+      q(0035),
+      q(0),
+      ],
+   q(natisone dialect) => [
+      q(0035),
+      q(0),
+      ],
+   q(ndyuka dialect) => [
+      q(0034),
+      q(0),
+      ],
+   q(new volapuk) => [
+      q(0037),
+      q(0),
+      ],
+   q(norwegian in hognorsk (high norwegian) orthography) => [
+      q(0023),
+      q(0),
+      ],
+   q(original volapuk) => [
+      q(0044),
+      q(0),
+      ],
+   q(pamaka dialect) => [
+      q(0039),
+      q(0),
+      ],
+   q(petrine orthography) => [
+      q(0040),
+      q(0),
+      ],
+   q(pinyin romanization) => [
+      q(0041),
+      q(0),
+      ],
+   q(polytonic greek) => [
+      q(0042),
+      q(0),
+      ],
+   q(post-1917 russian orthography) => [
+      q(0031),
+      q(0),
+      ],
+   q(puter idiom of romansh) => [
+      q(0043),
+      q(0),
+      ],
+   q(resian) => [
+      q(0045),
+      q(0),
+      ],
+   q(resianic) => [
+      q(0045),
+      q(0),
+      ],
+   q(revised volapuk) => [
+      q(0037),
+      q(0),
+      ],
+   q(rezijan) => [
+      q(0045),
+      q(0),
+      ],
+   q(rumantsch grischun) => [
+      q(0046),
+      q(0),
+      ],
+   q(schleyer's volapuk) => [
+      q(0044),
+      q(0),
+      ],
+   q(scottish standard english) => [
+      q(0047),
+      q(0),
+      ],
+   q(scouse) => [
+      q(0048),
+      q(0),
+      ],
+   q(slovene in bohorič alphabet) => [
+      q(0015),
+      q(0),
+      ],
+   q(slovene in dajnko alphabet) => [
+      q(0017),
+      q(0),
+      ],
+   q(slovene in metelko alphabet) => [
+      q(0032),
+      q(0),
+      ],
+   q(standard cornish orthography of revived cornish) => [
+      q(0028),
+      q(0),
+      ],
+   q(standardized resian orthography) => [
+      q(0005),
+      q(0),
+      ],
+   q(surmiran idiom of romansh) => [
+      q(0050),
+      q(0),
+      ],
+   q(sursilvan idiom of romansh) => [
+      q(0051),
+      q(0),
+      ],
+   q(sutsilvan idiom of romansh) => [
+      q(0052),
+      q(0),
+      ],
+   q(the bila dialect of resian) => [
+      q(0014),
+      q(0),
+      ],
+   q(the gniva dialect of resian) => [
+      q(0036),
+      q(0),
+      ],
+   q(the lipovaz dialect of resian) => [
+      q(0030),
+      q(0),
+      ],
+   q(the lipovec dialect of resian) => [
+      q(0030),
+      q(0),
+      ],
+   q(the njiva dialect of resian) => [
+      q(0036),
+      q(0),
+      ],
+   q(the oseacco dialect of resian) => [
+      q(0038),
+      q(0),
+      ],
+   q(the osojane dialect of resian) => [
+      q(0038),
+      q(0),
+      ],
+   q(the san giorgio dialect of resian) => [
+      q(0014),
+      q(0),
+      ],
+   q(the solbica dialect of resian) => [
+      q(0049),
+      q(0),
+      ],
+   q(the stolvizza dialect of resian) => [
+      q(0049),
+      q(0),
+      ],
+   q(traditional german orthography) => [
+      q(0003),
+      q(0),
+      ],
+   q(ulster dialect of scots) => [
+      q(0056),
+      q(0),
+      ],
+   q(unified cornish orthography of revived cornish) => [
+      q(0054),
+      q(0),
+      ],
+   q(unified cornish revised orthography of revived cornish) => [
+      q(0055),
+      q(0),
+      ],
+   q(unified turkic latin alphabet (historical)) => [
+      q(0011),
+      q(0),
+      ],
+   q(uralic phonetic alphabet) => [
+      q(0020),
+      q(0),
+      ],
+   q(valencian) => [
+      q(0058),
+      q(0),
+      ],
+   q(vallader idiom of romansh) => [
+      q(0059),
+      q(0),
+      ],
+   q(vedic sanskrit) => [
+      q(0057),
+      q(0),
+      ],
+   q(volapuk nuladik) => [
+      q(0037),
+      q(0),
+      ],
+   q(volapuk nulik) => [
+      q(0037),
+      q(0),
+      ],
+   q(volapuk perevidol) => [
+      q(0037),
+      q(0),
+      ],
+   q(volapuk rigik) => [
+      q(0044),
+      q(0),
+      ],
+   q(wade-giles romanization) => [
+      q(0060),
+      q(0),
+      ],
+   q(western armenian) => [
+      q(0010),
+      q(0),
+      ],
+   q(x-sampa transcription) => [
+      q(0021),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'langvar'}{'code2id'} = {
+   q(alpha) => {
+      q(1606nict) => [
+         q(0001),
+         q(0),
+         ],
+      q(1694acad) => [
+         q(0002),
+         q(0),
+         ],
+      q(1901) => [
+         q(0003),
+         q(0),
+         ],
+      q(1959acad) => [
+         q(0004),
+         q(0),
+         ],
+      q(1994) => [
+         q(0005),
+         q(0),
+         ],
+      q(1996) => [
+         q(0006),
+         q(0),
+         ],
+      q(alalc97) => [
+         q(0007),
+         q(0),
+         ],
+      q(aluku) => [
+         q(0008),
+         q(0),
+         ],
+      q(arevela) => [
+         q(0009),
+         q(0),
+         ],
+      q(arevmda) => [
+         q(0010),
+         q(0),
+         ],
+      q(baku1926) => [
+         q(0011),
+         q(0),
+         ],
+      q(bauddha) => [
+         q(0012),
+         q(0),
+         ],
+      q(biscayan) => [
+         q(0013),
+         q(0),
+         ],
+      q(biske) => [
+         q(0014),
+         q(0),
+         ],
+      q(bohoric) => [
+         q(0015),
+         q(0),
+         ],
+      q(boont) => [
+         q(0016),
+         q(0),
+         ],
+      q(dajnko) => [
+         q(0017),
+         q(0),
+         ],
+      q(emodeng) => [
+         q(0018),
+         q(0),
+         ],
+      q(fonipa) => [
+         q(0019),
+         q(0),
+         ],
+      q(fonupa) => [
+         q(0020),
+         q(0),
+         ],
+      q(fonxsamp) => [
+         q(0021),
+         q(0),
+         ],
+      q(hepburn) => [
+         q(0022),
+         q(0),
+         ],
+      q(hognorsk) => [
+         q(0023),
+         q(0),
+         ],
+      q(itihasa) => [
+         q(0024),
+         q(0),
+         ],
+      q(jauer) => [
+         q(0025),
+         q(0),
+         ],
+      q(jyutping) => [
+         q(0026),
+         q(0),
+         ],
+      q(kkcor) => [
+         q(0027),
+         q(0),
+         ],
+      q(kscor) => [
+         q(0028),
+         q(0),
+         ],
+      q(laukika) => [
+         q(0029),
+         q(0),
+         ],
+      q(lipaw) => [
+         q(0030),
+         q(0),
+         ],
+      q(luna1918) => [
+         q(0031),
+         q(0),
+         ],
+      q(metelko) => [
+         q(0032),
+         q(0),
+         ],
+      q(monoton) => [
+         q(0033),
+         q(0),
+         ],
+      q(ndyuka) => [
+         q(0034),
+         q(0),
+         ],
+      q(nedis) => [
+         q(0035),
+         q(0),
+         ],
+      q(njiva) => [
+         q(0036),
+         q(0),
+         ],
+      q(nulik) => [
+         q(0037),
+         q(0),
+         ],
+      q(osojs) => [
+         q(0038),
+         q(0),
+         ],
+      q(pamaka) => [
+         q(0039),
+         q(0),
+         ],
+      q(petr1708) => [
+         q(0040),
+         q(0),
+         ],
+      q(pinyin) => [
+         q(0041),
+         q(0),
+         ],
+      q(polyton) => [
+         q(0042),
+         q(0),
+         ],
+      q(puter) => [
+         q(0043),
+         q(0),
+         ],
+      q(rigik) => [
+         q(0044),
+         q(0),
+         ],
+      q(rozaj) => [
+         q(0045),
+         q(0),
+         ],
+      q(rumgr) => [
+         q(0046),
+         q(0),
+         ],
+      q(scotland) => [
+         q(0047),
+         q(0),
+         ],
+      q(scouse) => [
+         q(0048),
+         q(0),
+         ],
+      q(solba) => [
+         q(0049),
+         q(0),
+         ],
+      q(surmiran) => [
+         q(0050),
+         q(0),
+         ],
+      q(sursilv) => [
+         q(0051),
+         q(0),
+         ],
+      q(sutsilv) => [
+         q(0052),
+         q(0),
+         ],
+      q(tarask) => [
+         q(0053),
+         q(0),
+         ],
+      q(uccor) => [
+         q(0054),
+         q(0),
+         ],
+      q(ucrcor) => [
+         q(0055),
+         q(0),
+         ],
+      q(ulster) => [
+         q(0056),
+         q(0),
+         ],
+      q(vaidika) => [
+         q(0057),
+         q(0),
+         ],
+      q(valencia) => [
+         q(0058),
+         q(0),
+         ],
+      q(vallader) => [
+         q(0059),
+         q(0),
+         ],
+      q(wadegile) => [
+         q(0060),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'langvar'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(1606nict),
+      q(0002) => q(1694acad),
+      q(0003) => q(1901),
+      q(0004) => q(1959acad),
+      q(0005) => q(1994),
+      q(0006) => q(1996),
+      q(0007) => q(alalc97),
+      q(0008) => q(aluku),
+      q(0009) => q(arevela),
+      q(0010) => q(arevmda),
+      q(0011) => q(baku1926),
+      q(0012) => q(bauddha),
+      q(0013) => q(biscayan),
+      q(0014) => q(biske),
+      q(0015) => q(bohoric),
+      q(0016) => q(boont),
+      q(0017) => q(dajnko),
+      q(0018) => q(emodeng),
+      q(0019) => q(fonipa),
+      q(0020) => q(fonupa),
+      q(0021) => q(fonxsamp),
+      q(0022) => q(hepburn),
+      q(0023) => q(hognorsk),
+      q(0024) => q(itihasa),
+      q(0025) => q(jauer),
+      q(0026) => q(jyutping),
+      q(0027) => q(kkcor),
+      q(0028) => q(kscor),
+      q(0029) => q(laukika),
+      q(0030) => q(lipaw),
+      q(0031) => q(luna1918),
+      q(0032) => q(metelko),
+      q(0033) => q(monoton),
+      q(0034) => q(ndyuka),
+      q(0035) => q(nedis),
+      q(0036) => q(njiva),
+      q(0037) => q(nulik),
+      q(0038) => q(osojs),
+      q(0039) => q(pamaka),
+      q(0040) => q(petr1708),
+      q(0041) => q(pinyin),
+      q(0042) => q(polyton),
+      q(0043) => q(puter),
+      q(0044) => q(rigik),
+      q(0045) => q(rozaj),
+      q(0046) => q(rumgr),
+      q(0047) => q(scotland),
+      q(0048) => q(scouse),
+      q(0049) => q(solba),
+      q(0050) => q(surmiran),
+      q(0051) => q(sursilv),
+      q(0052) => q(sutsilv),
+      q(0053) => q(tarask),
+      q(0054) => q(uccor),
+      q(0055) => q(ucrcor),
+      q(0056) => q(ulster),
+      q(0057) => q(vaidika),
+      q(0058) => q(valencia),
+      q(0059) => q(vallader),
+      q(0060) => q(wadegile),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/LangVar_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+package Locale::Codes::LangVar_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::LangVar_Retired - retired langvar codes for the Locale::Codes::LangVar module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::LangVar module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'langvar'}{'alpha'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'langvar'}{'alpha'}{'name'} = {
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,137 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Language - standard codes for language identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::Language;
+
+   $lang = code2language('en');        # $lang gets 'English'
+   $code = language2code('French');    # $code gets 'fr'
+
+   @codes   = all_language_codes();
+   @names   = all_language_names();
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::Language> module provides access to standard codes used
+for identifying languages, such as those as defined in ISO 639.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+639 two-letter codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+languages. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $lang = code2language('en','alpha-2');
+   $lang = code2language('en',LOCALE_CODE_ALPHA_2);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha-2, LOCALE_LANG_ALPHA_2>
+
+This is the set of two-letter (lowercase) codes from ISO 639-1, such
+as 'he' for Hebrew.  It also includes additions to this set included
+in the IANA language registry.
+
+This is the default code set.
+
+=item B<alpha-3, LOCALE_LANG_ALPHA_3>
+
+This is the set of three-letter (lowercase) bibliographic codes from
+ISO 639-2 and 639-5, such as 'heb' for Hebrew.  It also includes
+additions to this set included in the IANA language registry.
+
+=item B<term, LOCALE_LANG_TERM>
+
+This is the set of three-letter (lowercase) terminologic codes from
+ISO 639.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2language ( CODE [,CODESET] )>
+
+=item B<language2code ( NAME [,CODESET] )>
+
+=item B<language_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_language_codes ( [CODESET] )>
+
+=item B<all_language_names ( [CODESET] )>
+
+=item B<Locale::Codes::Language::rename_language  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::Language::add_language  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::Language::delete_language  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::Language::add_language_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::Language::delete_language_alias  ( NAME )>
+
+=item B<Locale::Codes::Language::rename_language_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Language::add_language_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Language::delete_language_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.loc.gov/standards/iso639-2/>
+
+Source of the ISO 639-2 codes.
+
+=item B<http://www.loc.gov/standards/iso639-5/>
+
+Source of the ISO 639-5 codes.
+
+=item B<http://www.iana.org/assignments/language-subtag-registry>
+
+The IANA language subtag registry.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,97190 @@
+package Locale::Codes::Language_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:21 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Language_Codes - language codes for the Locale::Codes::Language module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Language module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'language'}{'id'} = '7887';
+
+$Locale::Codes::Data{'language'}{'id2names'} = {
+   q(0001) => [
+      q(Afar),
+      ],
+   q(0002) => [
+      q(Abkhazian),
+      ],
+   q(0003) => [
+      q(Achinese),
+      ],
+   q(0004) => [
+      q(Acoli),
+      ],
+   q(0005) => [
+      q(Adangme),
+      ],
+   q(0006) => [
+      q(Adyghe),
+      q(Adygei),
+      ],
+   q(0007) => [
+      q(Afro-Asiatic languages),
+      ],
+   q(0008) => [
+      q(Afrihili),
+      ],
+   q(0009) => [
+      q(Afrikaans),
+      ],
+   q(0010) => [
+      q(Ainu),
+      q(Ainu (Japan)),
+      ],
+   q(0011) => [
+      q(Akan),
+      ],
+   q(0012) => [
+      q(Akkadian),
+      ],
+   q(0013) => [
+      q(Albanian),
+      ],
+   q(0014) => [
+      q(Aleut),
+      ],
+   q(0015) => [
+      q(Algonquian languages),
+      ],
+   q(0016) => [
+      q(Southern Altai),
+      ],
+   q(0017) => [
+      q(Amharic),
+      ],
+   q(0018) => [
+      q(English, Old (ca.450-1100)),
+      q(Old English (ca. 450-1100)),
+      ],
+   q(0019) => [
+      q(Angika),
+      ],
+   q(0020) => [
+      q(Apache languages),
+      ],
+   q(0021) => [
+      q(Arabic),
+      ],
+   q(0022) => [
+      q(Official Aramaic (700-300 BCE)),
+      q(Imperial Aramaic (700-300 BCE)),
+      ],
+   q(0023) => [
+      q(Aragonese),
+      ],
+   q(0024) => [
+      q(Armenian),
+      ],
+   q(0025) => [
+      q(Mapudungun),
+      q(Mapuche),
+      ],
+   q(0026) => [
+      q(Arapaho),
+      ],
+   q(0027) => [
+      q(Artificial languages),
+      ],
+   q(0028) => [
+      q(Arawak),
+      ],
+   q(0029) => [
+      q(Assamese),
+      ],
+   q(0030) => [
+      q(Asturian),
+      q(Bable),
+      q(Leonese),
+      q(Asturleonese),
+      ],
+   q(0031) => [
+      q(Athapascan languages),
+      ],
+   q(0032) => [
+      q(Australian languages),
+      ],
+   q(0033) => [
+      q(Avaric),
+      ],
+   q(0034) => [
+      q(Avestan),
+      ],
+   q(0035) => [
+      q(Awadhi),
+      ],
+   q(0036) => [
+      q(Aymara),
+      ],
+   q(0037) => [
+      q(Azerbaijani),
+      ],
+   q(0038) => [
+      q(Banda languages),
+      ],
+   q(0039) => [
+      q(Bamileke languages),
+      ],
+   q(0040) => [
+      q(Bashkir),
+      ],
+   q(0041) => [
+      q(Baluchi),
+      ],
+   q(0042) => [
+      q(Bambara),
+      ],
+   q(0043) => [
+      q(Balinese),
+      ],
+   q(0044) => [
+      q(Basque),
+      ],
+   q(0045) => [
+      q(Basa),
+      q(Basa (Cameroon)),
+      ],
+   q(0046) => [
+      q(Baltic languages),
+      ],
+   q(0047) => [
+      q(Beja),
+      q(Bedawiyet),
+      ],
+   q(0048) => [
+      q(Belarusian),
+      ],
+   q(0049) => [
+      q(Bemba),
+      q(Bemba (Zambia)),
+      ],
+   q(0050) => [
+      q(Bengali),
+      ],
+   q(0051) => [
+      q(Berber languages),
+      ],
+   q(0052) => [
+      q(Bhojpuri),
+      ],
+   q(0053) => [
+      q(Bihari languages),
+      ],
+   q(0054) => [
+      q(Bikol),
+      ],
+   q(0055) => [
+      q(Bini),
+      q(Edo),
+      ],
+   q(0056) => [
+      q(Bislama),
+      ],
+   q(0057) => [
+      q(Siksika),
+      ],
+   q(0058) => [
+      q(Bantu (Other)),
+      q(Bantu languages),
+      ],
+   q(0059) => [
+      q(Bosnian),
+      ],
+   q(0060) => [
+      q(Braj),
+      ],
+   q(0061) => [
+      q(Breton),
+      ],
+   q(0062) => [
+      q(Batak languages),
+      ],
+   q(0063) => [
+      q(Buriat),
+      ],
+   q(0064) => [
+      q(Buginese),
+      ],
+   q(0065) => [
+      q(Bulgarian),
+      ],
+   q(0066) => [
+      q(Burmese),
+      ],
+   q(0067) => [
+      q(Blin),
+      q(Bilin),
+      ],
+   q(0068) => [
+      q(Caddo),
+      ],
+   q(0069) => [
+      q(Central American Indian languages),
+      ],
+   q(0070) => [
+      q(Galibi Carib),
+      ],
+   q(0071) => [
+      q(Catalan),
+      q(Valencian),
+      ],
+   q(0072) => [
+      q(Caucasian languages),
+      ],
+   q(0073) => [
+      q(Cebuano),
+      ],
+   q(0074) => [
+      q(Celtic languages),
+      ],
+   q(0075) => [
+      q(Chamorro),
+      ],
+   q(0076) => [
+      q(Chibcha),
+      ],
+   q(0077) => [
+      q(Chechen),
+      ],
+   q(0078) => [
+      q(Chagatai),
+      ],
+   q(0079) => [
+      q(Chinese),
+      ],
+   q(0080) => [
+      q(Chuukese),
+      ],
+   q(0081) => [
+      q(Mari),
+      q(Mari (Russia)),
+      ],
+   q(0082) => [
+      q(Chinook jargon),
+      ],
+   q(0083) => [
+      q(Choctaw),
+      ],
+   q(0084) => [
+      q(Chipewyan),
+      q(Dene Suline),
+      ],
+   q(0085) => [
+      q(Cherokee),
+      ],
+   q(0086) => [
+      q(Church Slavic),
+      q(Old Slavonic),
+      q(Church Slavonic),
+      q(Old Bulgarian),
+      q(Old Church Slavonic),
+      ],
+   q(0087) => [
+      q(Chuvash),
+      ],
+   q(0088) => [
+      q(Cheyenne),
+      ],
+   q(0089) => [
+      q(Chamic languages),
+      ],
+   q(0090) => [
+      q(Coptic),
+      ],
+   q(0091) => [
+      q(Cornish),
+      ],
+   q(0092) => [
+      q(Corsican),
+      ],
+   q(0093) => [
+      q(Creoles and pidgins, English based),
+      q(Creoles and pidgins, English-based),
+      q(English-based creoles and pidgins),
+      ],
+   q(0094) => [
+      q(Creoles and pidgins, French-based ),
+      q(Creoles and pidgins, French-based),
+      q(French-based creoles and pidgins),
+      ],
+   q(0095) => [
+      q(Creoles and pidgins, Portuguese-based ),
+      q(Creoles and pidgins, Portuguese-based),
+      q(Portuguese-based creoles and pidgins),
+      ],
+   q(0096) => [
+      q(Cree),
+      ],
+   q(0097) => [
+      q(Crimean Tatar),
+      q(Crimean Turkish),
+      ],
+   q(0098) => [
+      q(Creoles and pidgins ),
+      q(Creoles and pidgins),
+      ],
+   q(0099) => [
+      q(Kashubian),
+      ],
+   q(0100) => [
+      q(Cushitic languages),
+      ],
+   q(0101) => [
+      q(Czech),
+      ],
+   q(0102) => [
+      q(Dakota),
+      ],
+   q(0103) => [
+      q(Danish),
+      ],
+   q(0104) => [
+      q(Dargwa),
+      ],
+   q(0105) => [
+      q(Land Dayak languages),
+      ],
+   q(0106) => [
+      q(Delaware),
+      ],
+   q(0107) => [
+      q(Slave (Athapascan)),
+      ],
+   q(0108) => [
+      q(Dogrib),
+      ],
+   q(0109) => [
+      q(Dinka),
+      ],
+   q(0110) => [
+      q(Divehi),
+      q(Dhivehi),
+      q(Maldivian),
+      ],
+   q(0111) => [
+      q(Dogri),
+      q(Dogri (macrolanguage)),
+      ],
+   q(0112) => [
+      q(Dravidian languages),
+      ],
+   q(0113) => [
+      q(Lower Sorbian),
+      ],
+   q(0114) => [
+      q(Duala),
+      ],
+   q(0115) => [
+      q(Dutch, Middle (ca.1050-1350)),
+      q(Middle Dutch (ca. 1050-1350)),
+      ],
+   q(0116) => [
+      q(Dutch),
+      q(Flemish),
+      ],
+   q(0117) => [
+      q(Dyula),
+      ],
+   q(0118) => [
+      q(Dzongkha),
+      ],
+   q(0119) => [
+      q(Efik),
+      ],
+   q(0120) => [
+      q(Egyptian (Ancient)),
+      ],
+   q(0121) => [
+      q(Ekajuk),
+      ],
+   q(0122) => [
+      q(Elamite),
+      ],
+   q(0123) => [
+      q(English),
+      ],
+   q(0124) => [
+      q(English, Middle (1100-1500)),
+      q(Middle English (1100-1500)),
+      ],
+   q(0125) => [
+      q(Esperanto),
+      ],
+   q(0126) => [
+      q(Estonian),
+      ],
+   q(0127) => [
+      q(Ewe),
+      ],
+   q(0128) => [
+      q(Ewondo),
+      ],
+   q(0129) => [
+      q(Fang),
+      q(Fang (Equatorial Guinea)),
+      ],
+   q(0130) => [
+      q(Faroese),
+      ],
+   q(0131) => [
+      q(Fanti),
+      ],
+   q(0132) => [
+      q(Fijian),
+      ],
+   q(0133) => [
+      q(Filipino),
+      q(Pilipino),
+      ],
+   q(0134) => [
+      q(Finnish),
+      ],
+   q(0135) => [
+      q(Finno-Ugrian languages),
+      ],
+   q(0136) => [
+      q(Fon),
+      ],
+   q(0137) => [
+      q(French),
+      ],
+   q(0138) => [
+      q(French, Middle (ca.1400-1600)),
+      q(Middle French (ca. 1400-1600)),
+      ],
+   q(0139) => [
+      q(French, Old (842-ca.1400)),
+      q(Old French (842-ca. 1400)),
+      ],
+   q(0140) => [
+      q(Northern Frisian),
+      ],
+   q(0141) => [
+      q(Eastern Frisian),
+      ],
+   q(0142) => [
+      q(Western Frisian),
+      ],
+   q(0143) => [
+      q(Fulah),
+      ],
+   q(0144) => [
+      q(Friulian),
+      ],
+   q(0145) => [
+      q(Ga),
+      ],
+   q(0146) => [
+      q(Gayo),
+      ],
+   q(0147) => [
+      q(Gbaya),
+      q(Gbaya (Central African Republic)),
+      ],
+   q(0148) => [
+      q(Germanic languages),
+      ],
+   q(0149) => [
+      q(Georgian),
+      ],
+   q(0150) => [
+      q(German),
+      ],
+   q(0151) => [
+      q(Geez),
+      ],
+   q(0152) => [
+      q(Gilbertese),
+      ],
+   q(0153) => [
+      q(Gaelic),
+      q(Scottish Gaelic),
+      ],
+   q(0154) => [
+      q(Irish),
+      ],
+   q(0155) => [
+      q(Galician),
+      ],
+   q(0156) => [
+      q(Manx),
+      ],
+   q(0157) => [
+      q(German, Middle High (ca.1050-1500)),
+      q(Middle High German (ca. 1050-1500)),
+      ],
+   q(0158) => [
+      q(German, Old High (ca.750-1050)),
+      q(Old High German (ca. 750-1050)),
+      ],
+   q(0159) => [
+      q(Gondi),
+      ],
+   q(0160) => [
+      q(Gorontalo),
+      ],
+   q(0161) => [
+      q(Gothic),
+      ],
+   q(0162) => [
+      q(Grebo),
+      ],
+   q(0163) => [
+      q(Greek, Ancient (to 1453)),
+      q(Ancient Greek (to 1453)),
+      ],
+   q(0164) => [
+      q(Greek, Modern (1453-)),
+      q(Modern Greek (1453-)),
+      q(Greek),
+      ],
+   q(0165) => [
+      q(Guarani),
+      ],
+   q(0166) => [
+      q(Swiss German),
+      q(Alemannic),
+      q(Alsatian),
+      ],
+   q(0167) => [
+      q(Gujarati),
+      ],
+   q(0168) => [
+      q(Gwich'in),
+      ],
+   q(0169) => [
+      q(Haida),
+      ],
+   q(0170) => [
+      q(Haitian),
+      q(Haitian Creole),
+      ],
+   q(0171) => [
+      q(Hausa),
+      ],
+   q(0172) => [
+      q(Hawaiian),
+      ],
+   q(0173) => [
+      q(Hebrew),
+      ],
+   q(0174) => [
+      q(Herero),
+      ],
+   q(0175) => [
+      q(Hiligaynon),
+      ],
+   q(0176) => [
+      q(Himachali languages),
+      q(Western Pahari languages),
+      ],
+   q(0177) => [
+      q(Hindi),
+      ],
+   q(0178) => [
+      q(Hittite),
+      ],
+   q(0179) => [
+      q(Hmong),
+      q(Mong),
+      ],
+   q(0180) => [
+      q(Hiri Motu),
+      ],
+   q(0181) => [
+      q(Croatian),
+      ],
+   q(0182) => [
+      q(Upper Sorbian),
+      ],
+   q(0183) => [
+      q(Hungarian),
+      ],
+   q(0184) => [
+      q(Hupa),
+      ],
+   q(0185) => [
+      q(Iban),
+      ],
+   q(0186) => [
+      q(Igbo),
+      ],
+   q(0187) => [
+      q(Icelandic),
+      ],
+   q(0188) => [
+      q(Ido),
+      ],
+   q(0189) => [
+      q(Sichuan Yi),
+      q(Nuosu),
+      ],
+   q(0190) => [
+      q(Ijo languages),
+      ],
+   q(0191) => [
+      q(Inuktitut),
+      ],
+   q(0192) => [
+      q(Interlingue),
+      q(Occidental),
+      ],
+   q(0193) => [
+      q(Iloko),
+      ],
+   q(0194) => [
+      q(Interlingua (International Auxiliary Language Association)),
+      ],
+   q(0195) => [
+      q(Indic languages),
+      ],
+   q(0196) => [
+      q(Indonesian),
+      ],
+   q(0197) => [
+      q(Indo-European languages),
+      ],
+   q(0198) => [
+      q(Ingush),
+      ],
+   q(0199) => [
+      q(Inupiaq),
+      ],
+   q(0200) => [
+      q(Iranian languages),
+      ],
+   q(0201) => [
+      q(Iroquoian languages),
+      ],
+   q(0202) => [
+      q(Italian),
+      ],
+   q(0203) => [
+      q(Javanese),
+      ],
+   q(0204) => [
+      q(Lojban),
+      ],
+   q(0205) => [
+      q(Japanese),
+      ],
+   q(0206) => [
+      q(Judeo-Persian),
+      ],
+   q(0207) => [
+      q(Judeo-Arabic),
+      ],
+   q(0208) => [
+      q(Kara-Kalpak),
+      ],
+   q(0209) => [
+      q(Kabyle),
+      ],
+   q(0210) => [
+      q(Kachin),
+      q(Jingpho),
+      ],
+   q(0211) => [
+      q(Kalaallisut),
+      q(Greenlandic),
+      ],
+   q(0212) => [
+      q(Kamba),
+      q(Kamba (Kenya)),
+      ],
+   q(0213) => [
+      q(Kannada),
+      ],
+   q(0214) => [
+      q(Karen languages),
+      ],
+   q(0215) => [
+      q(Kashmiri),
+      ],
+   q(0216) => [
+      q(Kanuri),
+      ],
+   q(0217) => [
+      q(Kawi),
+      ],
+   q(0218) => [
+      q(Kazakh),
+      ],
+   q(0219) => [
+      q(Kabardian),
+      ],
+   q(0220) => [
+      q(Khasi),
+      ],
+   q(0221) => [
+      q(Khoisan languages),
+      ],
+   q(0222) => [
+      q(Central Khmer),
+      ],
+   q(0223) => [
+      q(Khotanese),
+      q(Sakan),
+      ],
+   q(0224) => [
+      q(Kikuyu),
+      q(Gikuyu),
+      ],
+   q(0225) => [
+      q(Kinyarwanda),
+      ],
+   q(0226) => [
+      q(Kirghiz),
+      q(Kyrgyz),
+      ],
+   q(0227) => [
+      q(Kimbundu),
+      ],
+   q(0228) => [
+      q(Konkani),
+      q(Konkani (macrolanguage)),
+      ],
+   q(0229) => [
+      q(Komi),
+      ],
+   q(0230) => [
+      q(Kongo),
+      ],
+   q(0231) => [
+      q(Korean),
+      ],
+   q(0232) => [
+      q(Kosraean),
+      ],
+   q(0233) => [
+      q(Kpelle),
+      ],
+   q(0234) => [
+      q(Karachay-Balkar),
+      ],
+   q(0235) => [
+      q(Karelian),
+      ],
+   q(0236) => [
+      q(Kru languages),
+      ],
+   q(0237) => [
+      q(Kurukh),
+      ],
+   q(0238) => [
+      q(Kuanyama),
+      q(Kwanyama),
+      ],
+   q(0239) => [
+      q(Kumyk),
+      ],
+   q(0240) => [
+      q(Kurdish),
+      ],
+   q(0241) => [
+      q(Kutenai),
+      ],
+   q(0242) => [
+      q(Ladino),
+      ],
+   q(0243) => [
+      q(Lahnda),
+      ],
+   q(0244) => [
+      q(Lamba),
+      ],
+   q(0245) => [
+      q(Lao),
+      ],
+   q(0246) => [
+      q(Latin),
+      ],
+   q(0247) => [
+      q(Latvian),
+      ],
+   q(0248) => [
+      q(Lezghian),
+      ],
+   q(0249) => [
+      q(Limburgan),
+      q(Limburger),
+      q(Limburgish),
+      ],
+   q(0250) => [
+      q(Lingala),
+      ],
+   q(0251) => [
+      q(Lithuanian),
+      ],
+   q(0252) => [
+      q(Mongo),
+      ],
+   q(0253) => [
+      q(Lozi),
+      ],
+   q(0254) => [
+      q(Luxembourgish),
+      q(Letzeburgesch),
+      ],
+   q(0255) => [
+      q(Luba-Lulua),
+      ],
+   q(0256) => [
+      q(Luba-Katanga),
+      ],
+   q(0257) => [
+      q(Ganda),
+      ],
+   q(0258) => [
+      q(Luiseno),
+      ],
+   q(0259) => [
+      q(Lunda),
+      ],
+   q(0260) => [
+      q(Luo (Kenya and Tanzania)),
+      q(Dholuo),
+      ],
+   q(0261) => [
+      q(Lushai),
+      ],
+   q(0262) => [
+      q(Macedonian),
+      ],
+   q(0263) => [
+      q(Madurese),
+      ],
+   q(0264) => [
+      q(Magahi),
+      ],
+   q(0265) => [
+      q(Marshallese),
+      ],
+   q(0266) => [
+      q(Maithili),
+      ],
+   q(0267) => [
+      q(Makasar),
+      ],
+   q(0268) => [
+      q(Malayalam),
+      ],
+   q(0269) => [
+      q(Mandingo),
+      ],
+   q(0270) => [
+      q(Maori),
+      ],
+   q(0271) => [
+      q(Austronesian languages),
+      ],
+   q(0272) => [
+      q(Marathi),
+      ],
+   q(0273) => [
+      q(Masai),
+      ],
+   q(0274) => [
+      q(Malay),
+      q(Malay (macrolanguage)),
+      ],
+   q(0275) => [
+      q(Moksha),
+      ],
+   q(0276) => [
+      q(Mandar),
+      ],
+   q(0277) => [
+      q(Mende),
+      q(Mende (Sierra Leone)),
+      ],
+   q(0278) => [
+      q(Irish, Middle (900-1200)),
+      q(Middle Irish (900-1200)),
+      ],
+   q(0279) => [
+      q(Mi'kmaq),
+      q(Micmac),
+      ],
+   q(0280) => [
+      q(Minangkabau),
+      ],
+   q(0281) => [
+      q(Uncoded languages),
+      ],
+   q(0282) => [
+      q(Mon-Khmer languages),
+      ],
+   q(0283) => [
+      q(Malagasy),
+      ],
+   q(0284) => [
+      q(Maltese),
+      ],
+   q(0285) => [
+      q(Manchu),
+      ],
+   q(0286) => [
+      q(Manipuri),
+      ],
+   q(0287) => [
+      q(Manobo languages),
+      ],
+   q(0288) => [
+      q(Mohawk),
+      ],
+   q(0289) => [
+      q(Mongolian),
+      ],
+   q(0290) => [
+      q(Mossi),
+      ],
+   q(0291) => [
+      q(Multiple languages),
+      ],
+   q(0292) => [
+      q(Munda languages),
+      ],
+   q(0293) => [
+      q(Creek),
+      ],
+   q(0294) => [
+      q(Mirandese),
+      ],
+   q(0295) => [
+      q(Marwari),
+      ],
+   q(0296) => [
+      q(Mayan languages),
+      ],
+   q(0297) => [
+      q(Erzya),
+      ],
+   q(0298) => [
+      q(Nahuatl languages),
+      ],
+   q(0299) => [
+      q(North American Indian languages),
+      ],
+   q(0300) => [
+      q(Neapolitan),
+      ],
+   q(0301) => [
+      q(Nauru),
+      ],
+   q(0302) => [
+      q(Navajo),
+      q(Navaho),
+      ],
+   q(0303) => [
+      q(Ndebele, South),
+      q(South Ndebele),
+      ],
+   q(0304) => [
+      q(Ndebele, North),
+      q(North Ndebele),
+      ],
+   q(0305) => [
+      q(Ndonga),
+      ],
+   q(0306) => [
+      q(Low German),
+      q(Low Saxon),
+      q(German, Low),
+      q(Saxon, Low),
+      ],
+   q(0307) => [
+      q(Nepali),
+      q(Nepali (macrolanguage)),
+      ],
+   q(0308) => [
+      q(Nepal Bhasa),
+      q(Newari),
+      ],
+   q(0309) => [
+      q(Nias),
+      ],
+   q(0310) => [
+      q(Niger-Kordofanian languages),
+      ],
+   q(0311) => [
+      q(Niuean),
+      ],
+   q(0312) => [
+      q(Norwegian Nynorsk),
+      q(Nynorsk, Norwegian),
+      ],
+   q(0313) => [
+      q(Bokmal, Norwegian),
+      q(Norwegian Bokmal),
+      ],
+   q(0314) => [
+      q(Nogai),
+      ],
+   q(0315) => [
+      q(Norse, Old),
+      q(Old Norse),
+      ],
+   q(0316) => [
+      q(Norwegian),
+      ],
+   q(0317) => [
+      q(N'Ko),
+      ],
+   q(0318) => [
+      q(Pedi),
+      q(Sepedi),
+      q(Northern Sotho),
+      ],
+   q(0319) => [
+      q(Nubian languages),
+      ],
+   q(0320) => [
+      q(Classical Newari),
+      q(Old Newari),
+      q(Classical Nepal Bhasa),
+      ],
+   q(0321) => [
+      q(Chichewa),
+      q(Chewa),
+      q(Nyanja),
+      ],
+   q(0322) => [
+      q(Nyamwezi),
+      ],
+   q(0323) => [
+      q(Nyankole),
+      ],
+   q(0324) => [
+      q(Nyoro),
+      ],
+   q(0325) => [
+      q(Nzima),
+      ],
+   q(0326) => [
+      q(Occitan (post 1500)),
+      q(Provencal),
+      ],
+   q(0327) => [
+      q(Ojibwa),
+      ],
+   q(0328) => [
+      q(Oriya),
+      q(Oriya (macrolanguage)),
+      ],
+   q(0329) => [
+      q(Oromo),
+      ],
+   q(0330) => [
+      q(Osage),
+      ],
+   q(0331) => [
+      q(Ossetian),
+      q(Ossetic),
+      ],
+   q(0332) => [
+      q(Turkish, Ottoman (1500-1928)),
+      q(Ottoman Turkish (1500-1928)),
+      ],
+   q(0333) => [
+      q(Otomian languages),
+      ],
+   q(0334) => [
+      q(Papuan languages),
+      ],
+   q(0335) => [
+      q(Pangasinan),
+      ],
+   q(0336) => [
+      q(Pahlavi),
+      ],
+   q(0337) => [
+      q(Pampanga),
+      q(Kapampangan),
+      ],
+   q(0338) => [
+      q(Panjabi),
+      q(Punjabi),
+      ],
+   q(0339) => [
+      q(Papiamento),
+      ],
+   q(0340) => [
+      q(Palauan),
+      ],
+   q(0341) => [
+      q(Persian, Old (ca.600-400 B.C.)),
+      q(Old Persian (ca. 600-400 B.C.)),
+      ],
+   q(0342) => [
+      q(Persian),
+      ],
+   q(0343) => [
+      q(Philippine languages),
+      ],
+   q(0344) => [
+      q(Phoenician),
+      ],
+   q(0345) => [
+      q(Pali),
+      ],
+   q(0346) => [
+      q(Polish),
+      ],
+   q(0347) => [
+      q(Pohnpeian),
+      ],
+   q(0348) => [
+      q(Portuguese),
+      ],
+   q(0349) => [
+      q(Prakrit languages),
+      ],
+   q(0350) => [
+      q(Provencal, Old (to 1500)),
+      q(Old Provencal (to 1500)),
+      q(Old Occitan (to 1500)),
+      ],
+   q(0351) => [
+      q(Pushto),
+      q(Pashto),
+      ],
+   q(0352) => [
+      q(Reserved for local use),
+      ],
+   q(0353) => [
+      q(Quechua),
+      ],
+   q(0354) => [
+      q(Rajasthani),
+      ],
+   q(0355) => [
+      q(Rapanui),
+      ],
+   q(0356) => [
+      q(Rarotongan),
+      q(Cook Islands Maori),
+      ],
+   q(0357) => [
+      q(Romance languages),
+      ],
+   q(0358) => [
+      q(Romansh),
+      ],
+   q(0359) => [
+      q(Romany),
+      ],
+   q(0360) => [
+      q(Romanian),
+      q(Moldavian),
+      q(Moldovan),
+      ],
+   q(0361) => [
+      q(Rundi),
+      ],
+   q(0362) => [
+      q(Aromanian),
+      q(Arumanian),
+      q(Macedo-Romanian),
+      ],
+   q(0363) => [
+      q(Russian),
+      ],
+   q(0364) => [
+      q(Sandawe),
+      ],
+   q(0365) => [
+      q(Sango),
+      ],
+   q(0366) => [
+      q(Yakut),
+      ],
+   q(0367) => [
+      q(South American Indian (Other)),
+      q(South American Indian languages),
+      ],
+   q(0368) => [
+      q(Salishan languages),
+      ],
+   q(0369) => [
+      q(Samaritan Aramaic),
+      ],
+   q(0370) => [
+      q(Sanskrit),
+      ],
+   q(0371) => [
+      q(Sasak),
+      ],
+   q(0372) => [
+      q(Santali),
+      ],
+   q(0373) => [
+      q(Sicilian),
+      ],
+   q(0374) => [
+      q(Scots),
+      ],
+   q(0375) => [
+      q(Selkup),
+      ],
+   q(0376) => [
+      q(Semitic languages),
+      ],
+   q(0377) => [
+      q(Irish, Old (to 900)),
+      q(Old Irish (to 900)),
+      ],
+   q(0378) => [
+      q(Sign Languages),
+      ],
+   q(0379) => [
+      q(Shan),
+      ],
+   q(0380) => [
+      q(Sidamo),
+      ],
+   q(0381) => [
+      q(Sinhala),
+      q(Sinhalese),
+      ],
+   q(0382) => [
+      q(Siouan languages),
+      ],
+   q(0383) => [
+      q(Sino-Tibetan languages),
+      ],
+   q(0384) => [
+      q(Slavic languages),
+      ],
+   q(0385) => [
+      q(Slovak),
+      ],
+   q(0386) => [
+      q(Slovenian),
+      ],
+   q(0387) => [
+      q(Southern Sami),
+      ],
+   q(0388) => [
+      q(Northern Sami),
+      ],
+   q(0389) => [
+      q(Sami languages),
+      ],
+   q(0390) => [
+      q(Lule Sami),
+      ],
+   q(0391) => [
+      q(Inari Sami),
+      ],
+   q(0392) => [
+      q(Samoan),
+      ],
+   q(0393) => [
+      q(Skolt Sami),
+      ],
+   q(0394) => [
+      q(Shona),
+      ],
+   q(0395) => [
+      q(Sindhi),
+      ],
+   q(0396) => [
+      q(Soninke),
+      ],
+   q(0397) => [
+      q(Sogdian),
+      ],
+   q(0398) => [
+      q(Somali),
+      ],
+   q(0399) => [
+      q(Songhai languages),
+      ],
+   q(0400) => [
+      q(Sotho, Southern),
+      q(Southern Sotho),
+      ],
+   q(0401) => [
+      q(Spanish),
+      q(Castilian),
+      ],
+   q(0402) => [
+      q(Sardinian),
+      ],
+   q(0403) => [
+      q(Sranan Tongo),
+      ],
+   q(0404) => [
+      q(Serbian),
+      ],
+   q(0405) => [
+      q(Serer),
+      ],
+   q(0406) => [
+      q(Nilo-Saharan languages),
+      ],
+   q(0407) => [
+      q(Swati),
+      ],
+   q(0408) => [
+      q(Sukuma),
+      ],
+   q(0409) => [
+      q(Sundanese),
+      ],
+   q(0410) => [
+      q(Susu),
+      ],
+   q(0411) => [
+      q(Sumerian),
+      ],
+   q(0412) => [
+      q(Swahili),
+      q(Swahili (macrolanguage)),
+      ],
+   q(0413) => [
+      q(Swedish),
+      ],
+   q(0414) => [
+      q(Classical Syriac),
+      ],
+   q(0415) => [
+      q(Syriac),
+      ],
+   q(0416) => [
+      q(Tahitian),
+      ],
+   q(0417) => [
+      q(Tai languages),
+      ],
+   q(0418) => [
+      q(Tamil),
+      ],
+   q(0419) => [
+      q(Tatar),
+      ],
+   q(0420) => [
+      q(Telugu),
+      ],
+   q(0421) => [
+      q(Timne),
+      ],
+   q(0422) => [
+      q(Tereno),
+      ],
+   q(0423) => [
+      q(Tetum),
+      ],
+   q(0424) => [
+      q(Tajik),
+      ],
+   q(0425) => [
+      q(Tagalog),
+      ],
+   q(0426) => [
+      q(Thai),
+      ],
+   q(0427) => [
+      q(Tibetan),
+      ],
+   q(0428) => [
+      q(Tigre),
+      ],
+   q(0429) => [
+      q(Tigrinya),
+      ],
+   q(0430) => [
+      q(Tiv),
+      ],
+   q(0431) => [
+      q(Tokelau),
+      ],
+   q(0432) => [
+      q(Klingon),
+      q(tlhIngan-Hol),
+      ],
+   q(0433) => [
+      q(Tlingit),
+      ],
+   q(0434) => [
+      q(Tamashek),
+      ],
+   q(0435) => [
+      q(Tonga (Nyasa)),
+      ],
+   q(0436) => [
+      q(Tonga (Tonga Islands)),
+      q(Tonga),
+      ],
+   q(0437) => [
+      q(Tok Pisin),
+      ],
+   q(0438) => [
+      q(Tsimshian),
+      ],
+   q(0439) => [
+      q(Tswana),
+      ],
+   q(0440) => [
+      q(Tsonga),
+      ],
+   q(0441) => [
+      q(Turkmen),
+      ],
+   q(0442) => [
+      q(Tumbuka),
+      ],
+   q(0443) => [
+      q(Tupi languages),
+      ],
+   q(0444) => [
+      q(Turkish),
+      ],
+   q(0445) => [
+      q(Altaic languages),
+      ],
+   q(0446) => [
+      q(Tuvalu),
+      ],
+   q(0447) => [
+      q(Twi),
+      ],
+   q(0448) => [
+      q(Tuvinian),
+      ],
+   q(0449) => [
+      q(Udmurt),
+      ],
+   q(0450) => [
+      q(Ugaritic),
+      ],
+   q(0451) => [
+      q(Uighur),
+      q(Uyghur),
+      ],
+   q(0452) => [
+      q(Ukrainian),
+      ],
+   q(0453) => [
+      q(Umbundu),
+      ],
+   q(0454) => [
+      q(Undetermined),
+      ],
+   q(0455) => [
+      q(Urdu),
+      ],
+   q(0456) => [
+      q(Uzbek),
+      ],
+   q(0457) => [
+      q(Vai),
+      ],
+   q(0458) => [
+      q(Venda),
+      ],
+   q(0459) => [
+      q(Vietnamese),
+      ],
+   q(0460) => [
+      q(Volapuk),
+      ],
+   q(0461) => [
+      q(Votic),
+      ],
+   q(0462) => [
+      q(Wakashan languages),
+      ],
+   q(0463) => [
+      q(Walamo),
+      q(Wolaytta),
+      q(Wolaitta),
+      ],
+   q(0464) => [
+      q(Waray),
+      q(Waray (Philippines)),
+      ],
+   q(0465) => [
+      q(Washo),
+      ],
+   q(0466) => [
+      q(Welsh),
+      ],
+   q(0467) => [
+      q(Sorbian languages),
+      ],
+   q(0468) => [
+      q(Walloon),
+      ],
+   q(0469) => [
+      q(Wolof),
+      ],
+   q(0470) => [
+      q(Kalmyk),
+      q(Oirat),
+      ],
+   q(0471) => [
+      q(Xhosa),
+      ],
+   q(0472) => [
+      q(Yao),
+      ],
+   q(0473) => [
+      q(Yapese),
+      ],
+   q(0474) => [
+      q(Yiddish),
+      ],
+   q(0475) => [
+      q(Yoruba),
+      ],
+   q(0476) => [
+      q(Yupik languages),
+      ],
+   q(0477) => [
+      q(Zapotec),
+      ],
+   q(0478) => [
+      q(Blissymbols),
+      q(Blissymbolics),
+      q(Bliss),
+      ],
+   q(0479) => [
+      q(Zenaga),
+      ],
+   q(0480) => [
+      q(Standard Moroccan Tamazight),
+      ],
+   q(0481) => [
+      q(Zhuang),
+      q(Chuang),
+      ],
+   q(0482) => [
+      q(Zande languages),
+      ],
+   q(0483) => [
+      q(Zulu),
+      ],
+   q(0484) => [
+      q(Zuni),
+      ],
+   q(0485) => [
+      q(No linguistic content),
+      q(Not applicable),
+      ],
+   q(0486) => [
+      q(Zaza),
+      q(Dimili),
+      q(Dimli),
+      q(Kirdki),
+      q(Kirmanjki),
+      q(Zazaki),
+      q(Dimli (macrolanguage)),
+      q(Kirmanjki (macrolanguage)),
+      ],
+   q(0487) => [
+      q(Austro-Asiatic languages),
+      ],
+   q(0488) => [
+      q(Atlantic-Congo languages),
+      ],
+   q(0489) => [
+      q(Alacalufan languages),
+      ],
+   q(0490) => [
+      q(Algic languages),
+      ],
+   q(0491) => [
+      q(Arauan languages),
+      ],
+   q(0492) => [
+      q(Arawakan languages),
+      ],
+   q(0493) => [
+      q(Uto-Aztecan languages),
+      ],
+   q(0494) => [
+      q(Chibchan languages),
+      ],
+   q(0495) => [
+      q(North Caucasian languages),
+      ],
+   q(0496) => [
+      q(South Caucasian languages),
+      ],
+   q(0497) => [
+      q(Chadic languages),
+      ],
+   q(0498) => [
+      q(Caddoan languages),
+      ],
+   q(0499) => [
+      q(Central Sudanic languages),
+      ],
+   q(0500) => [
+      q(Mande languages),
+      ],
+   q(0501) => [
+      q(Egyptian languages),
+      ],
+   q(0502) => [
+      q(Eskimo-Aleut languages),
+      ],
+   q(0503) => [
+      q(Basque (family)),
+      ],
+   q(0504) => [
+      q(Formosan languages),
+      ],
+   q(0505) => [
+      q(East Germanic languages),
+      ],
+   q(0506) => [
+      q(North Germanic languages),
+      ],
+   q(0507) => [
+      q(West Germanic languages),
+      ],
+   q(0508) => [
+      q(Greek languages),
+      ],
+   q(0509) => [
+      q(Hmong-Mien languages),
+      ],
+   q(0510) => [
+      q(Hokan languages),
+      ],
+   q(0511) => [
+      q(Armenian (family)),
+      ],
+   q(0512) => [
+      q(Indo-Iranian languages),
+      ],
+   q(0513) => [
+      q(Italic languages),
+      ],
+   q(0514) => [
+      q(Japanese (family)),
+      ],
+   q(0515) => [
+      q(Kordofanian languages),
+      ],
+   q(0516) => [
+      q(Trans-New Guinea languages),
+      ],
+   q(0517) => [
+      q(Oto-Manguean languages),
+      ],
+   q(0518) => [
+      q(Omotic languages),
+      ],
+   q(0519) => [
+      q(Central Malayo-Polynesian languages),
+      ],
+   q(0520) => [
+      q(Malayo-Polynesian languages),
+      ],
+   q(0521) => [
+      q(Eastern Malayo-Polynesian languages),
+      ],
+   q(0522) => [
+      q(Western Malayo-Polynesian languages),
+      ],
+   q(0523) => [
+      q(Quechuan (family)),
+      ],
+   q(0524) => [
+      q(Eastern Sudanic languages),
+      ],
+   q(0525) => [
+      q(Albanian languages),
+      ],
+   q(0526) => [
+      q(Samoyedic languages),
+      ],
+   q(0527) => [
+      q(Tibeto-Burman languages),
+      ],
+   q(0528) => [
+      q(Turkic languages),
+      ],
+   q(0529) => [
+      q(Tungus languages),
+      ],
+   q(0530) => [
+      q(Uralic languages),
+      ],
+   q(0531) => [
+      q(Mongolian languages),
+      ],
+   q(0532) => [
+      q(Na-Dene languages),
+      ],
+   q(0533) => [
+      q(Chinese (family)),
+      ],
+   q(0534) => [
+      q(East Slavic languages),
+      ],
+   q(0535) => [
+      q(South Slavic languages),
+      ],
+   q(0536) => [
+      q(West Slavic languages),
+      ],
+   q(0537) => [
+      q(Serbo-Croatian),
+      ],
+   q(0538) => [
+      q(Ghotuo),
+      ],
+   q(0539) => [
+      q(Alumu-Tesu),
+      ],
+   q(0540) => [
+      q(Ari),
+      ],
+   q(0541) => [
+      q(Amal),
+      ],
+   q(0542) => [
+      q(Arbereshe Albanian),
+      ],
+   q(0543) => [
+      q(Aranadan),
+      ],
+   q(0544) => [
+      q(Ambrak),
+      ],
+   q(0545) => [
+      q(Abu' Arapesh),
+      ],
+   q(0546) => [
+      q(Arifama-Miniafia),
+      ],
+   q(0547) => [
+      q(Ankave),
+      ],
+   q(0548) => [
+      q(Afade),
+      ],
+   q(0549) => [
+      q(Aramanik),
+      ],
+   q(0550) => [
+      q(Anambe),
+      ],
+   q(0551) => [
+      q(Algerian Saharan Arabic),
+      ],
+   q(0552) => [
+      q(Para Arara),
+      ],
+   q(0553) => [
+      q(Eastern Abnaki),
+      ],
+   q(0554) => [
+      q(Aasax),
+      ],
+   q(0555) => [
+      q(Arvanitika Albanian),
+      ],
+   q(0556) => [
+      q(Abau),
+      ],
+   q(0557) => [
+      q(Solong),
+      ],
+   q(0558) => [
+      q(Mandobo Atas),
+      ],
+   q(0559) => [
+      q(Amarasi),
+      ],
+   q(0560) => [
+      q(Abe),
+      ],
+   q(0561) => [
+      q(Bankon),
+      ],
+   q(0562) => [
+      q(Ambala Ayta),
+      ],
+   q(0563) => [
+      q(Manide),
+      ],
+   q(0564) => [
+      q(Western Abnaki),
+      ],
+   q(0565) => [
+      q(Abai Sungai),
+      ],
+   q(0566) => [
+      q(Abaga),
+      ],
+   q(0567) => [
+      q(Tajiki Arabic),
+      ],
+   q(0568) => [
+      q(Abidji),
+      ],
+   q(0569) => [
+      q(Aka-Bea),
+      ],
+   q(0570) => [
+      q(Lampung Nyo),
+      ],
+   q(0571) => [
+      q(Abanyom),
+      ],
+   q(0572) => [
+      q(Abua),
+      ],
+   q(0573) => [
+      q(Abon),
+      ],
+   q(0574) => [
+      q(Abellen Ayta),
+      ],
+   q(0575) => [
+      q(Abaza),
+      ],
+   q(0576) => [
+      q(Abron),
+      ],
+   q(0577) => [
+      q(Ambonese Malay),
+      ],
+   q(0578) => [
+      q(Ambulas),
+      ],
+   q(0579) => [
+      q(Abure),
+      ],
+   q(0580) => [
+      q(Baharna Arabic),
+      ],
+   q(0581) => [
+      q(Pal),
+      ],
+   q(0582) => [
+      q(Inabaknon),
+      ],
+   q(0583) => [
+      q(Aneme Wake),
+      ],
+   q(0584) => [
+      q(Abui),
+      ],
+   q(0585) => [
+      q(Achagua),
+      ],
+   q(0586) => [
+      q(Anca),
+      ],
+   q(0587) => [
+      q(Gikyode),
+      ],
+   q(0588) => [
+      q(Saint Lucian Creole French),
+      ],
+   q(0589) => [
+      q(Aka-Cari),
+      ],
+   q(0590) => [
+      q(Aka-Kora),
+      ],
+   q(0591) => [
+      q(Akar-Bale),
+      ],
+   q(0592) => [
+      q(Mesopotamian Arabic),
+      ],
+   q(0593) => [
+      q(Achang),
+      ],
+   q(0594) => [
+      q(Eastern Acipa),
+      ],
+   q(0595) => [
+      q(Ta'izzi-Adeni Arabic),
+      ],
+   q(0596) => [
+      q(Achi),
+      ],
+   q(0597) => [
+      q(Acroa),
+      ],
+   q(0598) => [
+      q(Achterhoeks),
+      ],
+   q(0599) => [
+      q(Achuar-Shiwiar),
+      ],
+   q(0600) => [
+      q(Achumawi),
+      ],
+   q(0601) => [
+      q(Hijazi Arabic),
+      ],
+   q(0602) => [
+      q(Omani Arabic),
+      ],
+   q(0603) => [
+      q(Cypriot Arabic),
+      ],
+   q(0604) => [
+      q(Acheron),
+      ],
+   q(0605) => [
+      q(Adabe),
+      ],
+   q(0606) => [
+      q(Dzodinka),
+      ],
+   q(0607) => [
+      q(Adele),
+      ],
+   q(0608) => [
+      q(Dhofari Arabic),
+      ],
+   q(0609) => [
+      q(Andegerebinha),
+      ],
+   q(0610) => [
+      q(Adhola),
+      ],
+   q(0611) => [
+      q(Adi),
+      ],
+   q(0612) => [
+      q(Adioukrou),
+      ],
+   q(0613) => [
+      q(Galo),
+      ],
+   q(0614) => [
+      q(Adang),
+      ],
+   q(0615) => [
+      q(Abu),
+      ],
+   q(0616) => [
+      q(Adap),
+      ],
+   q(0617) => [
+      q(Adangbe),
+      ],
+   q(0618) => [
+      q(Adonara),
+      ],
+   q(0619) => [
+      q(Adamorobe Sign Language),
+      ],
+   q(0620) => [
+      q(Adnyamathanha),
+      ],
+   q(0621) => [
+      q(Aduge),
+      ],
+   q(0622) => [
+      q(Amundava),
+      ],
+   q(0623) => [
+      q(Amdo Tibetan),
+      ],
+   q(0624) => [
+      q(Adzera),
+      ],
+   q(0625) => [
+      q(Areba),
+      ],
+   q(0626) => [
+      q(Tunisian Arabic),
+      ],
+   q(0627) => [
+      q(Saidi Arabic),
+      ],
+   q(0628) => [
+      q(Argentine Sign Language),
+      ],
+   q(0629) => [
+      q(Northeast Pashayi),
+      ],
+   q(0630) => [
+      q(Haeke),
+      ],
+   q(0631) => [
+      q(Ambele),
+      ],
+   q(0632) => [
+      q(Arem),
+      ],
+   q(0633) => [
+      q(Armenian Sign Language),
+      ],
+   q(0634) => [
+      q(Aer),
+      ],
+   q(0635) => [
+      q(Eastern Arrernte),
+      ],
+   q(0636) => [
+      q(Alsea),
+      ],
+   q(0637) => [
+      q(Akeu),
+      ],
+   q(0638) => [
+      q(Ambakich),
+      ],
+   q(0639) => [
+      q(Amele),
+      ],
+   q(0640) => [
+      q(Aeka),
+      ],
+   q(0641) => [
+      q(Gulf Arabic),
+      ],
+   q(0642) => [
+      q(Andai),
+      ],
+   q(0643) => [
+      q(Putukwam),
+      ],
+   q(0644) => [
+      q(Afghan Sign Language),
+      ],
+   q(0645) => [
+      q(Akrukay),
+      ],
+   q(0646) => [
+      q(Nanubae),
+      ],
+   q(0647) => [
+      q(Defaka),
+      ],
+   q(0648) => [
+      q(Eloyi),
+      ],
+   q(0649) => [
+      q(Tapei),
+      ],
+   q(0650) => [
+      q(Afro-Seminole Creole),
+      ],
+   q(0651) => [
+      q(Afitti),
+      ],
+   q(0652) => [
+      q(Awutu),
+      ],
+   q(0653) => [
+      q(Obokuitai),
+      ],
+   q(0654) => [
+      q(Aguano),
+      ],
+   q(0655) => [
+      q(Legbo),
+      ],
+   q(0656) => [
+      q(Agatu),
+      ],
+   q(0657) => [
+      q(Agarabi),
+      ],
+   q(0658) => [
+      q(Angal),
+      ],
+   q(0659) => [
+      q(Arguni),
+      ],
+   q(0660) => [
+      q(Angor),
+      ],
+   q(0661) => [
+      q(Ngelima),
+      ],
+   q(0662) => [
+      q(Agariya),
+      ],
+   q(0663) => [
+      q(Argobba),
+      ],
+   q(0664) => [
+      q(Isarog Agta),
+      ],
+   q(0665) => [
+      q(Fembe),
+      ],
+   q(0666) => [
+      q(Angaataha),
+      ],
+   q(0667) => [
+      q(Agutaynen),
+      ],
+   q(0668) => [
+      q(Tainae),
+      ],
+   q(0669) => [
+      q(Aghem),
+      ],
+   q(0670) => [
+      q(Aguaruna),
+      ],
+   q(0671) => [
+      q(Esimbi),
+      ],
+   q(0672) => [
+      q(Central Cagayan Agta),
+      ],
+   q(0673) => [
+      q(Aguacateco),
+      ],
+   q(0674) => [
+      q(Remontado Dumagat),
+      ],
+   q(0675) => [
+      q(Kahua),
+      ],
+   q(0676) => [
+      q(Aghul),
+      ],
+   q(0677) => [
+      q(Southern Alta),
+      ],
+   q(0678) => [
+      q(Mt. Iriga Agta),
+      ],
+   q(0679) => [
+      q(Ahanta),
+      ],
+   q(0680) => [
+      q(Axamb),
+      ],
+   q(0681) => [
+      q(Qimant),
+      ],
+   q(0682) => [
+      q(Aghu),
+      ],
+   q(0683) => [
+      q(Tiagbamrin Aizi),
+      ],
+   q(0684) => [
+      q(Akha),
+      ],
+   q(0685) => [
+      q(Igo),
+      ],
+   q(0686) => [
+      q(Mobumrin Aizi),
+      ],
+   q(0687) => [
+      q(Ahan),
+      ],
+   q(0688) => [
+      q(Ahom),
+      ],
+   q(0689) => [
+      q(Aproumu Aizi),
+      ],
+   q(0690) => [
+      q(Ahirani),
+      ],
+   q(0691) => [
+      q(Ashe),
+      ],
+   q(0692) => [
+      q(Ahtena),
+      ],
+   q(0693) => [
+      q(Arosi),
+      ],
+   q(0694) => [
+      q(Ainu (China)),
+      ],
+   q(0695) => [
+      q(Ainbai),
+      ],
+   q(0696) => [
+      q(Alngith),
+      ],
+   q(0697) => [
+      q(Amara),
+      ],
+   q(0698) => [
+      q(Agi),
+      ],
+   q(0699) => [
+      q(Antigua and Barbuda Creole English),
+      ],
+   q(0700) => [
+      q(Ai-Cham),
+      ],
+   q(0701) => [
+      q(Assyrian Neo-Aramaic),
+      ],
+   q(0702) => [
+      q(Lishanid Noshan),
+      ],
+   q(0703) => [
+      q(Ake),
+      ],
+   q(0704) => [
+      q(Aimele),
+      ],
+   q(0705) => [
+      q(Aimol),
+      ],
+   q(0706) => [
+      q(Aiton),
+      ],
+   q(0707) => [
+      q(Burumakok),
+      ],
+   q(0708) => [
+      q(Aimaq),
+      ],
+   q(0709) => [
+      q(Airoran),
+      ],
+   q(0710) => [
+      q(Nataoran Amis),
+      ],
+   q(0711) => [
+      q(Arikem),
+      ],
+   q(0712) => [
+      q(Aari),
+      ],
+   q(0713) => [
+      q(Aighon),
+      ],
+   q(0714) => [
+      q(Ali),
+      ],
+   q(0715) => [
+      q(Aja (Sudan)),
+      ],
+   q(0716) => [
+      q(Aja (Benin)),
+      ],
+   q(0717) => [
+      q(Ajie),
+      ],
+   q(0718) => [
+      q(Andajin),
+      ],
+   q(0719) => [
+      q(South Levantine Arabic),
+      ],
+   q(0720) => [
+      q(Judeo-Tunisian Arabic),
+      ],
+   q(0721) => [
+      q(Judeo-Moroccan Arabic),
+      ],
+   q(0722) => [
+      q(Ajawa),
+      ],
+   q(0723) => [
+      q(Amri Karbi),
+      ],
+   q(0724) => [
+      q(Batak Angkola),
+      ],
+   q(0725) => [
+      q(Mpur),
+      ],
+   q(0726) => [
+      q(Ukpet-Ehom),
+      ],
+   q(0727) => [
+      q(Akawaio),
+      ],
+   q(0728) => [
+      q(Akpa),
+      ],
+   q(0729) => [
+      q(Anakalangu),
+      ],
+   q(0730) => [
+      q(Angal Heneng),
+      ],
+   q(0731) => [
+      q(Aiome),
+      ],
+   q(0732) => [
+      q(Aka-Jeru),
+      ],
+   q(0733) => [
+      q(Aklanon),
+      ],
+   q(0734) => [
+      q(Aka-Bo),
+      ],
+   q(0735) => [
+      q(Akurio),
+      ],
+   q(0736) => [
+      q(Siwu),
+      ],
+   q(0737) => [
+      q(Ak),
+      ],
+   q(0738) => [
+      q(Araki),
+      ],
+   q(0739) => [
+      q(Akaselem),
+      ],
+   q(0740) => [
+      q(Akolet),
+      ],
+   q(0741) => [
+      q(Akum),
+      ],
+   q(0742) => [
+      q(Akhvakh),
+      ],
+   q(0743) => [
+      q(Akwa),
+      ],
+   q(0744) => [
+      q(Aka-Kede),
+      ],
+   q(0745) => [
+      q(Aka-Kol),
+      ],
+   q(0746) => [
+      q(Alabama),
+      ],
+   q(0747) => [
+      q(Alago),
+      ],
+   q(0748) => [
+      q(Qawasqar),
+      ],
+   q(0749) => [
+      q(Alladian),
+      ],
+   q(0750) => [
+      q(Alege),
+      ],
+   q(0751) => [
+      q(Alawa),
+      ],
+   q(0752) => [
+      q(Amaimon),
+      ],
+   q(0753) => [
+      q(Alangan),
+      ],
+   q(0754) => [
+      q(Alak),
+      ],
+   q(0755) => [
+      q(Allar),
+      ],
+   q(0756) => [
+      q(Amblong),
+      ],
+   q(0757) => [
+      q(Gheg Albanian),
+      ],
+   q(0758) => [
+      q(Larike-Wakasihu),
+      ],
+   q(0759) => [
+      q(Alune),
+      ],
+   q(0760) => [
+      q(Algonquin),
+      ],
+   q(0761) => [
+      q(Alutor),
+      ],
+   q(0762) => [
+      q(Tosk Albanian),
+      ],
+   q(0763) => [
+      q('Are'are),
+      ],
+   q(0764) => [
+      q(Alaba-K'abeena),
+      q(Wanbasana),
+      ],
+   q(0765) => [
+      q(Amol),
+      ],
+   q(0766) => [
+      q(Alyawarr),
+      ],
+   q(0767) => [
+      q(Alur),
+      ],
+   q(0768) => [
+      q(Amanaye),
+      ],
+   q(0769) => [
+      q(Ambo),
+      ],
+   q(0770) => [
+      q(Amahuaca),
+      ],
+   q(0771) => [
+      q(Yanesha'),
+      ],
+   q(0772) => [
+      q(Hamer-Banna),
+      ],
+   q(0773) => [
+      q(Amurdak),
+      ],
+   q(0774) => [
+      q(Amis),
+      ],
+   q(0775) => [
+      q(Amdang),
+      ],
+   q(0776) => [
+      q(Ambai),
+      ],
+   q(0777) => [
+      q(War-Jaintia),
+      ],
+   q(0778) => [
+      q(Ama (Papua New Guinea)),
+      ],
+   q(0779) => [
+      q(Amanab),
+      ],
+   q(0780) => [
+      q(Amo),
+      ],
+   q(0781) => [
+      q(Alamblak),
+      ],
+   q(0782) => [
+      q(Amahai),
+      ],
+   q(0783) => [
+      q(Amarakaeri),
+      ],
+   q(0784) => [
+      q(Southern Amami-Oshima),
+      ],
+   q(0785) => [
+      q(Amto),
+      ],
+   q(0786) => [
+      q(Guerrero Amuzgo),
+      ],
+   q(0787) => [
+      q(Ambelau),
+      ],
+   q(0788) => [
+      q(Western Neo-Aramaic),
+      ],
+   q(0789) => [
+      q(Anmatyerre),
+      ],
+   q(0790) => [
+      q(Ami),
+      ],
+   q(0791) => [
+      q(Atampaya),
+      ],
+   q(0792) => [
+      q(Andaqui),
+      ],
+   q(0793) => [
+      q(Andoa),
+      ],
+   q(0794) => [
+      q(Ngas),
+      ],
+   q(0795) => [
+      q(Ansus),
+      ],
+   q(0796) => [
+      q(Xaracuu),
+      ],
+   q(0797) => [
+      q(Animere),
+      ],
+   q(0798) => [
+      q(Nend),
+      ],
+   q(0799) => [
+      q(Andi),
+      ],
+   q(0800) => [
+      q(Anor),
+      ],
+   q(0801) => [
+      q(Goemai),
+      ],
+   q(0802) => [
+      q(Anu-Hkongso Chin),
+      ],
+   q(0803) => [
+      q(Anal),
+      ],
+   q(0804) => [
+      q(Obolo),
+      ],
+   q(0805) => [
+      q(Andoque),
+      ],
+   q(0806) => [
+      q(Jarawa (India)),
+      ],
+   q(0807) => [
+      q(Andh),
+      ],
+   q(0808) => [
+      q(Anserma),
+      ],
+   q(0809) => [
+      q(Antakarinya),
+      ],
+   q(0810) => [
+      q(Anuak),
+      ],
+   q(0811) => [
+      q(Denya),
+      ],
+   q(0812) => [
+      q(Anaang),
+      ],
+   q(0813) => [
+      q(Andra-Hus),
+      ],
+   q(0814) => [
+      q(Anyin),
+      ],
+   q(0815) => [
+      q(Anem),
+      ],
+   q(0816) => [
+      q(Angolar),
+      ],
+   q(0817) => [
+      q(Abom),
+      ],
+   q(0818) => [
+      q(Pemon),
+      ],
+   q(0819) => [
+      q(Andarum),
+      ],
+   q(0820) => [
+      q(Angal Enen),
+      ],
+   q(0821) => [
+      q(Bragat),
+      ],
+   q(0822) => [
+      q(Angoram),
+      ],
+   q(0823) => [
+      q(Arma),
+      ],
+   q(0824) => [
+      q(Anindilyakwa),
+      ],
+   q(0825) => [
+      q(Mufian),
+      ],
+   q(0826) => [
+      q(Arho),
+      ],
+   q(0827) => [
+      q(Alor),
+      ],
+   q(0828) => [
+      q(Omie),
+      ],
+   q(0829) => [
+      q(Bumbita Arapesh),
+      ],
+   q(0830) => [
+      q(Aore),
+      ],
+   q(0831) => [
+      q(Taikat),
+      ],
+   q(0832) => [
+      q(A'tong),
+      ],
+   q(0833) => [
+      q(A'ou),
+      ],
+   q(0834) => [
+      q(Atorada),
+      ],
+   q(0835) => [
+      q(Uab Meto),
+      ],
+   q(0836) => [
+      q(Sa'a),
+      ],
+   q(0837) => [
+      q(North Levantine Arabic),
+      ],
+   q(0838) => [
+      q(Sudanese Arabic),
+      ],
+   q(0839) => [
+      q(Bukiyip),
+      ],
+   q(0840) => [
+      q(Pahanan Agta),
+      ],
+   q(0841) => [
+      q(Ampanang),
+      ],
+   q(0842) => [
+      q(Athpariya),
+      ],
+   q(0843) => [
+      q(Apiaka),
+      ],
+   q(0844) => [
+      q(Jicarilla Apache),
+      ],
+   q(0845) => [
+      q(Kiowa Apache),
+      ],
+   q(0846) => [
+      q(Lipan Apache),
+      ],
+   q(0847) => [
+      q(Mescalero-Chiricahua Apache),
+      ],
+   q(0848) => [
+      q(Apinaye),
+      ],
+   q(0849) => [
+      q(Ambul),
+      ],
+   q(0850) => [
+      q(Apma),
+      ],
+   q(0851) => [
+      q(A-Pucikwar),
+      ],
+   q(0852) => [
+      q(Arop-Lokep),
+      ],
+   q(0853) => [
+      q(Arop-Sissano),
+      ],
+   q(0854) => [
+      q(Apatani),
+      ],
+   q(0855) => [
+      q(Apurina),
+      ],
+   q(0856) => [
+      q(Alapmunte),
+      ],
+   q(0857) => [
+      q(Western Apache),
+      ],
+   q(0858) => [
+      q(Aputai),
+      ],
+   q(0859) => [
+      q(Apalai),
+      ],
+   q(0860) => [
+      q(Safeyoka),
+      ],
+   q(0861) => [
+      q(Archi),
+      ],
+   q(0862) => [
+      q(Ampari Dogon),
+      ],
+   q(0863) => [
+      q(Arigidi),
+      ],
+   q(0864) => [
+      q(Atohwaim),
+      ],
+   q(0865) => [
+      q(Northern Alta),
+      ],
+   q(0866) => [
+      q(Atakapa),
+      ],
+   q(0867) => [
+      q(Arha),
+      ],
+   q(0868) => [
+      q(Akuntsu),
+      ],
+   q(0869) => [
+      q(Standard Arabic),
+      ],
+   q(0870) => [
+      q(Arabana),
+      ],
+   q(0871) => [
+      q(Western Arrarnta),
+      ],
+   q(0872) => [
+      q(Arhuaco),
+      ],
+   q(0873) => [
+      q(Arikara),
+      ],
+   q(0874) => [
+      q(Arapaso),
+      ],
+   q(0875) => [
+      q(Arikapu),
+      ],
+   q(0876) => [
+      q(Arabela),
+      ],
+   q(0877) => [
+      q(Araona),
+      ],
+   q(0878) => [
+      q(Algerian Arabic),
+      ],
+   q(0879) => [
+      q(Karo (Brazil)),
+      ],
+   q(0880) => [
+      q(Najdi Arabic),
+      ],
+   q(0881) => [
+      q(Arua (Amazonas State)),
+      q(Arawa),
+      ],
+   q(0882) => [
+      q(Arbore),
+      ],
+   q(0883) => [
+      q(Arua (Rodonia State)),
+      ],
+   q(0884) => [
+      q(Moroccan Arabic),
+      ],
+   q(0885) => [
+      q(Egyptian Arabic),
+      ],
+   q(0886) => [
+      q(Asu (Tanzania)),
+      ],
+   q(0887) => [
+      q(Assiniboine),
+      ],
+   q(0888) => [
+      q(Casuarina Coast Asmat),
+      ],
+   q(0889) => [
+      q(Asas),
+      ],
+   q(0890) => [
+      q(American Sign Language),
+      ],
+   q(0891) => [
+      q(Australian Sign Language),
+      ],
+   q(0892) => [
+      q(Cishingini),
+      ],
+   q(0893) => [
+      q(Abishira),
+      ],
+   q(0894) => [
+      q(Buruwai),
+      ],
+   q(0895) => [
+      q(Nsari),
+      ],
+   q(0896) => [
+      q(Ashkun),
+      ],
+   q(0897) => [
+      q(Asilulu),
+      ],
+   q(0898) => [
+      q(Xingu Asurini),
+      ],
+   q(0899) => [
+      q(Dano),
+      ],
+   q(0900) => [
+      q(Algerian Sign Language),
+      ],
+   q(0901) => [
+      q(Austrian Sign Language),
+      ],
+   q(0902) => [
+      q(Asuri),
+      ],
+   q(0903) => [
+      q(Ipulo),
+      ],
+   q(0904) => [
+      q(Tocantins Asurini),
+      ],
+   q(0905) => [
+      q(Asoa),
+      ],
+   q(0906) => [
+      q(Australian Aborigines Sign Language),
+      ],
+   q(0907) => [
+      q(Muratayak),
+      ],
+   q(0908) => [
+      q(Yaosakor Asmat),
+      ],
+   q(0909) => [
+      q(As),
+      ],
+   q(0910) => [
+      q(Pele-Ata),
+      ],
+   q(0911) => [
+      q(Zaiwa),
+      ],
+   q(0912) => [
+      q(Atsahuaca),
+      ],
+   q(0913) => [
+      q(Ata Manobo),
+      ],
+   q(0914) => [
+      q(Atemble),
+      ],
+   q(0915) => [
+      q(Ivbie North-Okpela-Arhe),
+      ],
+   q(0916) => [
+      q(Attie),
+      ],
+   q(0917) => [
+      q(Atikamekw),
+      ],
+   q(0918) => [
+      q(Ati),
+      ],
+   q(0919) => [
+      q(Mt. Iraya Agta),
+      ],
+   q(0920) => [
+      q(Ata),
+      ],
+   q(0921) => [
+      q(Ashtiani),
+      ],
+   q(0922) => [
+      q(Atong),
+      ],
+   q(0923) => [
+      q(Pudtol Atta),
+      ],
+   q(0924) => [
+      q(Aralle-Tabulahan),
+      ],
+   q(0925) => [
+      q(Waimiri-Atroari),
+      ],
+   q(0926) => [
+      q(Gros Ventre),
+      ],
+   q(0927) => [
+      q(Pamplona Atta),
+      ],
+   q(0928) => [
+      q(Reel),
+      ],
+   q(0929) => [
+      q(Northern Altai),
+      ],
+   q(0930) => [
+      q(Atsugewi),
+      ],
+   q(0931) => [
+      q(Arutani),
+      ],
+   q(0932) => [
+      q(Aneityum),
+      ],
+   q(0933) => [
+      q(Arta),
+      ],
+   q(0934) => [
+      q(Asumboa),
+      ],
+   q(0935) => [
+      q(Alugu),
+      ],
+   q(0936) => [
+      q(Waorani),
+      ],
+   q(0937) => [
+      q(Anuta),
+      ],
+   q(0938) => [
+      q(=/Kx'au//'ein),
+      ],
+   q(0939) => [
+      q(Aguna),
+      ],
+   q(0940) => [
+      q(Aushi),
+      ],
+   q(0941) => [
+      q(Anuki),
+      ],
+   q(0942) => [
+      q(Awjilah),
+      ],
+   q(0943) => [
+      q(Heyo),
+      ],
+   q(0944) => [
+      q(Aulua),
+      ],
+   q(0945) => [
+      q(Asu (Nigeria)),
+      ],
+   q(0946) => [
+      q(Molmo One),
+      ],
+   q(0947) => [
+      q(Auyokawa),
+      ],
+   q(0948) => [
+      q(Makayam),
+      ],
+   q(0949) => [
+      q(Anus),
+      q(Korur),
+      ],
+   q(0950) => [
+      q(Aruek),
+      ],
+   q(0951) => [
+      q(Austral),
+      ],
+   q(0952) => [
+      q(Auye),
+      ],
+   q(0953) => [
+      q(Awyi),
+      ],
+   q(0954) => [
+      q(Aura),
+      ],
+   q(0955) => [
+      q(Awiyaana),
+      ],
+   q(0956) => [
+      q(Uzbeki Arabic),
+      ],
+   q(0957) => [
+      q(Avau),
+      ],
+   q(0958) => [
+      q(Alviri-Vidari),
+      ],
+   q(0959) => [
+      q(Avikam),
+      ],
+   q(0960) => [
+      q(Kotava),
+      ],
+   q(0961) => [
+      q(Eastern Egyptian Bedawi Arabic),
+      ],
+   q(0962) => [
+      q(Angkamuthi),
+      ],
+   q(0963) => [
+      q(Avatime),
+      ],
+   q(0964) => [
+      q(Agavotaguerra),
+      ],
+   q(0965) => [
+      q(Aushiri),
+      ],
+   q(0966) => [
+      q(Au),
+      ],
+   q(0967) => [
+      q(Avokaya),
+      ],
+   q(0968) => [
+      q(Ava-Canoeiro),
+      ],
+   q(0969) => [
+      q(Awa (Papua New Guinea)),
+      ],
+   q(0970) => [
+      q(Cicipu),
+      ],
+   q(0971) => [
+      q(Aweti),
+      ],
+   q(0972) => [
+      q(Anguthimri),
+      ],
+   q(0973) => [
+      q(Awbono),
+      ],
+   q(0974) => [
+      q(Aekyom),
+      ],
+   q(0975) => [
+      q(Awabakal),
+      ],
+   q(0976) => [
+      q(Arawum),
+      ],
+   q(0977) => [
+      q(Awngi),
+      ],
+   q(0978) => [
+      q(Awak),
+      ],
+   q(0979) => [
+      q(Awera),
+      ],
+   q(0980) => [
+      q(South Awyu),
+      ],
+   q(0981) => [
+      q(Arawete),
+      ],
+   q(0982) => [
+      q(Central Awyu),
+      ],
+   q(0983) => [
+      q(Jair Awyu),
+      ],
+   q(0984) => [
+      q(Awun),
+      ],
+   q(0985) => [
+      q(Awara),
+      ],
+   q(0986) => [
+      q(Edera Awyu),
+      ],
+   q(0987) => [
+      q(Abipon),
+      ],
+   q(0988) => [
+      q(Ayerrerenge),
+      ],
+   q(0989) => [
+      q(Mato Grosso Arara),
+      ],
+   q(0990) => [
+      q(Yaka (Central African Republic)),
+      ],
+   q(0991) => [
+      q(Middle Armenian),
+      ],
+   q(0992) => [
+      q(Xaragure),
+      ],
+   q(0993) => [
+      q(Awar),
+      ],
+   q(0994) => [
+      q(Ayizo Gbe),
+      ],
+   q(0995) => [
+      q(Southern Aymara),
+      ],
+   q(0996) => [
+      q(Ayabadhu),
+      ],
+   q(0997) => [
+      q(Ayere),
+      ],
+   q(0998) => [
+      q(Ginyanga),
+      ],
+   q(0999) => [
+      q(Hadrami Arabic),
+      ],
+   q(1000) => [
+      q(Leyigha),
+      ],
+   q(1001) => [
+      q(Akuku),
+      ],
+   q(1002) => [
+      q(Libyan Arabic),
+      ],
+   q(1003) => [
+      q(Sanaani Arabic),
+      ],
+   q(1004) => [
+      q(Ayoreo),
+      ],
+   q(1005) => [
+      q(North Mesopotamian Arabic),
+      ],
+   q(1006) => [
+      q(Ayi (Papua New Guinea)),
+      ],
+   q(1007) => [
+      q(Central Aymara),
+      ],
+   q(1008) => [
+      q(Sorsogon Ayta),
+      ],
+   q(1009) => [
+      q(Magbukun Ayta),
+      ],
+   q(1010) => [
+      q(Ayu),
+      ],
+   q(1011) => [
+      q(Tayabas Ayta),
+      ],
+   q(1012) => [
+      q(Mai Brat),
+      ],
+   q(1013) => [
+      q(Azha),
+      ],
+   q(1014) => [
+      q(South Azerbaijani),
+      ],
+   q(1015) => [
+      q(Eastern Durango Nahuatl),
+      ],
+   q(1016) => [
+      q(San Pedro Amuzgos Amuzgo),
+      ],
+   q(1017) => [
+      q(North Azerbaijani),
+      ],
+   q(1018) => [
+      q(Ipalapa Amuzgo),
+      ],
+   q(1019) => [
+      q(Western Durango Nahuatl),
+      ],
+   q(1020) => [
+      q(Awing),
+      ],
+   q(1021) => [
+      q(Faire Atta),
+      ],
+   q(1022) => [
+      q(Highland Puebla Nahuatl),
+      ],
+   q(1023) => [
+      q(Babatana),
+      ],
+   q(1024) => [
+      q(Bainouk-Gunyuno),
+      ],
+   q(1025) => [
+      q(Badui),
+      ],
+   q(1026) => [
+      q(Bare),
+      ],
+   q(1027) => [
+      q(Nubaca),
+      ],
+   q(1028) => [
+      q(Tuki),
+      ],
+   q(1029) => [
+      q(Bahamas Creole English),
+      ],
+   q(1030) => [
+      q(Barakai),
+      ],
+   q(1031) => [
+      q(Waimaha),
+      ],
+   q(1032) => [
+      q(Bantawa),
+      ],
+   q(1033) => [
+      q(Bavarian),
+      ],
+   q(1034) => [
+      q(Bada (Nigeria)),
+      ],
+   q(1035) => [
+      q(Vengo),
+      ],
+   q(1036) => [
+      q(Bambili-Bambui),
+      ],
+   q(1037) => [
+      q(Bamun),
+      ],
+   q(1038) => [
+      q(Batuley),
+      ],
+   q(1039) => [
+      q(Baatonum),
+      ],
+   q(1040) => [
+      q(Barai),
+      ],
+   q(1041) => [
+      q(Batak Toba),
+      ],
+   q(1042) => [
+      q(Bau),
+      ],
+   q(1043) => [
+      q(Bangba),
+      ],
+   q(1044) => [
+      q(Baibai),
+      ],
+   q(1045) => [
+      q(Barama),
+      ],
+   q(1046) => [
+      q(Bugan),
+      ],
+   q(1047) => [
+      q(Barombi),
+      ],
+   q(1048) => [
+      q(Ghomala'),
+      ],
+   q(1049) => [
+      q(Babanki),
+      ],
+   q(1050) => [
+      q(Bats),
+      ],
+   q(1051) => [
+      q(Babango),
+      ],
+   q(1052) => [
+      q(Uneapa),
+      ],
+   q(1053) => [
+      q(Northern Bobo Madare),
+      q(Konabere),
+      ],
+   q(1054) => [
+      q(West Central Banda),
+      ],
+   q(1055) => [
+      q(Bamali),
+      ],
+   q(1056) => [
+      q(Girawa),
+      ],
+   q(1057) => [
+      q(Bakpinka),
+      ],
+   q(1058) => [
+      q(Mburku),
+      ],
+   q(1059) => [
+      q(Kulung (Nigeria)),
+      ],
+   q(1060) => [
+      q(Karnai),
+      ],
+   q(1061) => [
+      q(Baba),
+      ],
+   q(1062) => [
+      q(Bubia),
+      ],
+   q(1063) => [
+      q(Befang),
+      ],
+   q(1064) => [
+      q(Babalia Creole Arabic),
+      ],
+   q(1065) => [
+      q(Central Bai),
+      ],
+   q(1066) => [
+      q(Bainouk-Samik),
+      ],
+   q(1067) => [
+      q(Southern Balochi),
+      ],
+   q(1068) => [
+      q(North Babar),
+      ],
+   q(1069) => [
+      q(Bamenyam),
+      ],
+   q(1070) => [
+      q(Bamu),
+      ],
+   q(1071) => [
+      q(Baga Binari),
+      ],
+   q(1072) => [
+      q(Bariai),
+      ],
+   q(1073) => [
+      q(Baoule),
+      ],
+   q(1074) => [
+      q(Bardi),
+      ],
+   q(1075) => [
+      q(Bunaba),
+      ],
+   q(1076) => [
+      q(Central Bikol),
+      ],
+   q(1077) => [
+      q(Bannoni),
+      ],
+   q(1078) => [
+      q(Bali (Nigeria)),
+      ],
+   q(1079) => [
+      q(Kaluli),
+      ],
+   q(1080) => [
+      q(Bali (Democratic Republic of Congo)),
+      ],
+   q(1081) => [
+      q(Bench),
+      ],
+   q(1082) => [
+      q(Babine),
+      ],
+   q(1083) => [
+      q(Kohumono),
+      ],
+   q(1084) => [
+      q(Bendi),
+      ],
+   q(1085) => [
+      q(Awad Bing),
+      ],
+   q(1086) => [
+      q(Shoo-Minda-Nye),
+      ],
+   q(1087) => [
+      q(Bana),
+      ],
+   q(1088) => [
+      q(Bacama),
+      ],
+   q(1089) => [
+      q(Bainouk-Gunyaamolo),
+      ],
+   q(1090) => [
+      q(Bayot),
+      ],
+   q(1091) => [
+      q(Basap),
+      ],
+   q(1092) => [
+      q(Embera-Baudo),
+      ],
+   q(1093) => [
+      q(Bunama),
+      ],
+   q(1094) => [
+      q(Bade),
+      ],
+   q(1095) => [
+      q(Biage),
+      ],
+   q(1096) => [
+      q(Bonggi),
+      ],
+   q(1097) => [
+      q(Baka (Sudan)),
+      ],
+   q(1098) => [
+      q(Burun),
+      ],
+   q(1099) => [
+      q(Bai),
+      ],
+   q(1100) => [
+      q(Budukh),
+      ],
+   q(1101) => [
+      q(Indonesian Bajau),
+      ],
+   q(1102) => [
+      q(Buduma),
+      ],
+   q(1103) => [
+      q(Baldemu),
+      ],
+   q(1104) => [
+      q(Morom),
+      ],
+   q(1105) => [
+      q(Bende),
+      ],
+   q(1106) => [
+      q(Bahnar),
+      ],
+   q(1107) => [
+      q(West Coast Bajau),
+      ],
+   q(1108) => [
+      q(Burunge),
+      ],
+   q(1109) => [
+      q(Bokoto),
+      ],
+   q(1110) => [
+      q(Oroko),
+      ],
+   q(1111) => [
+      q(Bodo Parja),
+      ],
+   q(1112) => [
+      q(Baham),
+      ],
+   q(1113) => [
+      q(Budong-Budong),
+      ],
+   q(1114) => [
+      q(Bandjalang),
+      ],
+   q(1115) => [
+      q(Badeshi),
+      ],
+   q(1116) => [
+      q(Beaver),
+      ],
+   q(1117) => [
+      q(Bebele),
+      ],
+   q(1118) => [
+      q(Iceve-Maci),
+      ],
+   q(1119) => [
+      q(Bedoanas),
+      ],
+   q(1120) => [
+      q(Byangsi),
+      ],
+   q(1121) => [
+      q(Benabena),
+      ],
+   q(1122) => [
+      q(Belait),
+      ],
+   q(1123) => [
+      q(Biali),
+      ],
+   q(1124) => [
+      q(Bekati'),
+      ],
+   q(1125) => [
+      q(Bebeli),
+      ],
+   q(1126) => [
+      q(Beami),
+      ],
+   q(1127) => [
+      q(Besoa),
+      ],
+   q(1128) => [
+      q(Beembe),
+      ],
+   q(1129) => [
+      q(Besme),
+      ],
+   q(1130) => [
+      q(Guiberoua Bete),
+      ],
+   q(1131) => [
+      q(Blagar),
+      ],
+   q(1132) => [
+      q(Daloa Bete),
+      ],
+   q(1133) => [
+      q(Betawi),
+      ],
+   q(1134) => [
+      q(Jur Modo),
+      ],
+   q(1135) => [
+      q(Beli (Papua New Guinea)),
+      ],
+   q(1136) => [
+      q(Bena (Tanzania)),
+      ],
+   q(1137) => [
+      q(Bari),
+      ],
+   q(1138) => [
+      q(Pauri Bareli),
+      ],
+   q(1139) => [
+      q(Northern Bai),
+      ],
+   q(1140) => [
+      q(Bafut),
+      ],
+   q(1141) => [
+      q(Betaf),
+      q(Tena),
+      ],
+   q(1142) => [
+      q(Bofi),
+      ],
+   q(1143) => [
+      q(Busang Kayan),
+      ],
+   q(1144) => [
+      q(Blafe),
+      ],
+   q(1145) => [
+      q(British Sign Language),
+      ],
+   q(1146) => [
+      q(Bafanji),
+      ],
+   q(1147) => [
+      q(Ban Khor Sign Language),
+      ],
+   q(1148) => [
+      q(Banda-Ndele),
+      ],
+   q(1149) => [
+      q(Mmen),
+      ],
+   q(1150) => [
+      q(Bunak),
+      ],
+   q(1151) => [
+      q(Malba Birifor),
+      ],
+   q(1152) => [
+      q(Beba),
+      ],
+   q(1153) => [
+      q(Badaga),
+      ],
+   q(1154) => [
+      q(Bazigar),
+      ],
+   q(1155) => [
+      q(Southern Bai),
+      ],
+   q(1156) => [
+      q(Balti),
+      ],
+   q(1157) => [
+      q(Gahri),
+      ],
+   q(1158) => [
+      q(Bondo),
+      ],
+   q(1159) => [
+      q(Bantayanon),
+      ],
+   q(1160) => [
+      q(Bagheli),
+      ],
+   q(1161) => [
+      q(Mahasu Pahari),
+      ],
+   q(1162) => [
+      q(Gwamhi-Wuri),
+      ],
+   q(1163) => [
+      q(Bobongko),
+      ],
+   q(1164) => [
+      q(Haryanvi),
+      ],
+   q(1165) => [
+      q(Rathwi Bareli),
+      ],
+   q(1166) => [
+      q(Bauria),
+      ],
+   q(1167) => [
+      q(Bangandu),
+      ],
+   q(1168) => [
+      q(Bugun),
+      ],
+   q(1169) => [
+      q(Giangan),
+      ],
+   q(1170) => [
+      q(Bangolan),
+      ],
+   q(1171) => [
+      q(Bit),
+      q(Buxinhua),
+      ],
+   q(1172) => [
+      q(Bo (Laos)),
+      ],
+   q(1173) => [
+      q(Baga Mboteni),
+      ],
+   q(1174) => [
+      q(Western Balochi),
+      ],
+   q(1175) => [
+      q(Baga Koga),
+      ],
+   q(1176) => [
+      q(Eastern Balochi),
+      ],
+   q(1177) => [
+      q(Bagri),
+      ],
+   q(1178) => [
+      q(Bawm Chin),
+      ],
+   q(1179) => [
+      q(Tagabawa),
+      ],
+   q(1180) => [
+      q(Bughotu),
+      ],
+   q(1181) => [
+      q(Mbongno),
+      ],
+   q(1182) => [
+      q(Warkay-Bipim),
+      ],
+   q(1183) => [
+      q(Bhatri),
+      ],
+   q(1184) => [
+      q(Balkan Gagauz Turkish),
+      ],
+   q(1185) => [
+      q(Benggoi),
+      ],
+   q(1186) => [
+      q(Banggai),
+      ],
+   q(1187) => [
+      q(Bharia),
+      ],
+   q(1188) => [
+      q(Bhili),
+      ],
+   q(1189) => [
+      q(Biga),
+      ],
+   q(1190) => [
+      q(Bhadrawahi),
+      ],
+   q(1191) => [
+      q(Bhaya),
+      ],
+   q(1192) => [
+      q(Odiai),
+      ],
+   q(1193) => [
+      q(Binandere),
+      ],
+   q(1194) => [
+      q(Bukharic),
+      ],
+   q(1195) => [
+      q(Bhilali),
+      ],
+   q(1196) => [
+      q(Bahing),
+      ],
+   q(1197) => [
+      q(Bimin),
+      ],
+   q(1198) => [
+      q(Bathari),
+      ],
+   q(1199) => [
+      q(Bohtan Neo-Aramaic),
+      ],
+   q(1200) => [
+      q(Bima),
+      ],
+   q(1201) => [
+      q(Tukang Besi South),
+      ],
+   q(1202) => [
+      q(Bara Malagasy),
+      ],
+   q(1203) => [
+      q(Buwal),
+      ],
+   q(1204) => [
+      q(Bhattiyali),
+      ],
+   q(1205) => [
+      q(Bhunjia),
+      ],
+   q(1206) => [
+      q(Bahau),
+      ],
+   q(1207) => [
+      q(Biak),
+      ],
+   q(1208) => [
+      q(Bhalay),
+      ],
+   q(1209) => [
+      q(Bhele),
+      ],
+   q(1210) => [
+      q(Bada (Indonesia)),
+      ],
+   q(1211) => [
+      q(Badimaya),
+      ],
+   q(1212) => [
+      q(Bissa),
+      q(Bisa),
+      ],
+   q(1213) => [
+      q(Bikaru),
+      ],
+   q(1214) => [
+      q(Bidiyo),
+      ],
+   q(1215) => [
+      q(Bepour),
+      ],
+   q(1216) => [
+      q(Biafada),
+      ],
+   q(1217) => [
+      q(Biangai),
+      ],
+   q(1218) => [
+      q(Vaghat-Ya-Bijim-Legeri),
+      ],
+   q(1219) => [
+      q(Bile),
+      ],
+   q(1220) => [
+      q(Bimoba),
+      ],
+   q(1221) => [
+      q(Nai),
+      ],
+   q(1222) => [
+      q(Bila),
+      ],
+   q(1223) => [
+      q(Bipi),
+      ],
+   q(1224) => [
+      q(Bisorio),
+      ],
+   q(1225) => [
+      q(Berinomo),
+      ],
+   q(1226) => [
+      q(Biete),
+      ],
+   q(1227) => [
+      q(Southern Birifor),
+      ],
+   q(1228) => [
+      q(Kol (Cameroon)),
+      ],
+   q(1229) => [
+      q(Bijori),
+      ],
+   q(1230) => [
+      q(Birhor),
+      ],
+   q(1231) => [
+      q(Baloi),
+      ],
+   q(1232) => [
+      q(Budza),
+      ],
+   q(1233) => [
+      q(Banggarla),
+      ],
+   q(1234) => [
+      q(Bariji),
+      ],
+   q(1235) => [
+      q(Biao-Jiao Mien),
+      ],
+   q(1236) => [
+      q(Barzani Jewish Neo-Aramaic),
+      ],
+   q(1237) => [
+      q(Bidyogo),
+      ],
+   q(1238) => [
+      q(Bahinemo),
+      ],
+   q(1239) => [
+      q(Burji),
+      ],
+   q(1240) => [
+      q(Kanauji),
+      ],
+   q(1241) => [
+      q(Barok),
+      ],
+   q(1242) => [
+      q(Bulu (Papua New Guinea)),
+      ],
+   q(1243) => [
+      q(Bajelani),
+      ],
+   q(1244) => [
+      q(Banjar),
+      ],
+   q(1245) => [
+      q(Mid-Southern Banda),
+      ],
+   q(1246) => [
+      q(Binumarien),
+      ],
+   q(1247) => [
+      q(Bajan),
+      ],
+   q(1248) => [
+      q(Balanta-Ganja),
+      ],
+   q(1249) => [
+      q(Busuu),
+      ],
+   q(1250) => [
+      q(Bedjond),
+      ],
+   q(1251) => [
+      q(Bakwe),
+      ],
+   q(1252) => [
+      q(Banao Itneg),
+      ],
+   q(1253) => [
+      q(Bayali),
+      ],
+   q(1254) => [
+      q(Baruga),
+      ],
+   q(1255) => [
+      q(Kyak),
+      ],
+   q(1256) => [
+      q(Baka (Cameroon)),
+      ],
+   q(1257) => [
+      q(Binukid),
+      q(Talaandig),
+      ],
+   q(1258) => [
+      q(Beeke),
+      ],
+   q(1259) => [
+      q(Buraka),
+      ],
+   q(1260) => [
+      q(Bakoko),
+      ],
+   q(1261) => [
+      q(Baki),
+      ],
+   q(1262) => [
+      q(Pande),
+      ],
+   q(1263) => [
+      q(Brokskat),
+      ],
+   q(1264) => [
+      q(Berik),
+      ],
+   q(1265) => [
+      q(Kom (Cameroon)),
+      ],
+   q(1266) => [
+      q(Bukitan),
+      ],
+   q(1267) => [
+      q(Kwa'),
+      ],
+   q(1268) => [
+      q(Boko (Democratic Republic of Congo)),
+      ],
+   q(1269) => [
+      q(Bakairi),
+      ],
+   q(1270) => [
+      q(Bakumpai),
+      ],
+   q(1271) => [
+      q(Northern Sorsoganon),
+      ],
+   q(1272) => [
+      q(Boloki),
+      ],
+   q(1273) => [
+      q(Buhid),
+      ],
+   q(1274) => [
+      q(Bekwarra),
+      ],
+   q(1275) => [
+      q(Bekwel),
+      ],
+   q(1276) => [
+      q(Baikeno),
+      ],
+   q(1277) => [
+      q(Bokyi),
+      ],
+   q(1278) => [
+      q(Bungku),
+      ],
+   q(1279) => [
+      q(Bilua),
+      ],
+   q(1280) => [
+      q(Bella Coola),
+      ],
+   q(1281) => [
+      q(Bolango),
+      ],
+   q(1282) => [
+      q(Balanta-Kentohe),
+      ],
+   q(1283) => [
+      q(Buol),
+      ],
+   q(1284) => [
+      q(Balau),
+      ],
+   q(1285) => [
+      q(Kuwaa),
+      ],
+   q(1286) => [
+      q(Bolia),
+      ],
+   q(1287) => [
+      q(Bolongan),
+      ],
+   q(1288) => [
+      q(Pa'o Karen),
+      q(Pa'O),
+      ],
+   q(1289) => [
+      q(Biloxi),
+      ],
+   q(1290) => [
+      q(Beli (Sudan)),
+      ],
+   q(1291) => [
+      q(Southern Catanduanes Bikol),
+      ],
+   q(1292) => [
+      q(Anii),
+      ],
+   q(1293) => [
+      q(Blablanga),
+      ],
+   q(1294) => [
+      q(Baluan-Pam),
+      ],
+   q(1295) => [
+      q(Blang),
+      ],
+   q(1296) => [
+      q(Balaesang),
+      ],
+   q(1297) => [
+      q(Tai Dam),
+      ],
+   q(1298) => [
+      q(Bolo),
+      ],
+   q(1299) => [
+      q(Balangao),
+      ],
+   q(1300) => [
+      q(Mag-Indi Ayta),
+      ],
+   q(1301) => [
+      q(Notre),
+      ],
+   q(1302) => [
+      q(Balantak),
+      ],
+   q(1303) => [
+      q(Lame),
+      ],
+   q(1304) => [
+      q(Bembe),
+      ],
+   q(1305) => [
+      q(Biem),
+      ],
+   q(1306) => [
+      q(Baga Manduri),
+      ],
+   q(1307) => [
+      q(Limassa),
+      ],
+   q(1308) => [
+      q(Bom),
+      ],
+   q(1309) => [
+      q(Bamwe),
+      ],
+   q(1310) => [
+      q(Kein),
+      ],
+   q(1311) => [
+      q(Bagirmi),
+      ],
+   q(1312) => [
+      q(Bote-Majhi),
+      ],
+   q(1313) => [
+      q(Ghayavi),
+      ],
+   q(1314) => [
+      q(Bomboli),
+      ],
+   q(1315) => [
+      q(Northern Betsimisaraka Malagasy),
+      ],
+   q(1316) => [
+      q(Bina (Papua New Guinea)),
+      ],
+   q(1317) => [
+      q(Bambalang),
+      ],
+   q(1318) => [
+      q(Bulgebi),
+      ],
+   q(1319) => [
+      q(Bomu),
+      ],
+   q(1320) => [
+      q(Muinane),
+      ],
+   q(1321) => [
+      q(Bilma Kanuri),
+      ],
+   q(1322) => [
+      q(Biao Mon),
+      ],
+   q(1323) => [
+      q(Somba-Siawari),
+      ],
+   q(1324) => [
+      q(Bum),
+      ],
+   q(1325) => [
+      q(Bomwali),
+      ],
+   q(1326) => [
+      q(Baimak),
+      ],
+   q(1327) => [
+      q(Bemba (Democratic Republic of Congo)),
+      ],
+   q(1328) => [
+      q(Baramu),
+      ],
+   q(1329) => [
+      q(Bonerate),
+      ],
+   q(1330) => [
+      q(Bookan),
+      ],
+   q(1331) => [
+      q(Bontok),
+      ],
+   q(1332) => [
+      q(Banda (Indonesia)),
+      ],
+   q(1333) => [
+      q(Bintauna),
+      ],
+   q(1334) => [
+      q(Masiwang),
+      ],
+   q(1335) => [
+      q(Benga),
+      ],
+   q(1336) => [
+      q(Bangi),
+      ],
+   q(1337) => [
+      q(Eastern Tawbuid),
+      ],
+   q(1338) => [
+      q(Bierebo),
+      ],
+   q(1339) => [
+      q(Boon),
+      ],
+   q(1340) => [
+      q(Batanga),
+      ],
+   q(1341) => [
+      q(Bunun),
+      ],
+   q(1342) => [
+      q(Bantoanon),
+      ],
+   q(1343) => [
+      q(Bola),
+      ],
+   q(1344) => [
+      q(Bantik),
+      ],
+   q(1345) => [
+      q(Butmas-Tur),
+      ],
+   q(1346) => [
+      q(Bundeli),
+      ],
+   q(1347) => [
+      q(Bentong),
+      ],
+   q(1348) => [
+      q(Bonerif),
+      q(Beneraf),
+      q(Edwas),
+      ],
+   q(1349) => [
+      q(Bisis),
+      ],
+   q(1350) => [
+      q(Bangubangu),
+      ],
+   q(1351) => [
+      q(Bintulu),
+      ],
+   q(1352) => [
+      q(Beezen),
+      ],
+   q(1353) => [
+      q(Bora),
+      ],
+   q(1354) => [
+      q(Aweer),
+      ],
+   q(1355) => [
+      q(Mundabli),
+      ],
+   q(1356) => [
+      q(Bolon),
+      ],
+   q(1357) => [
+      q(Bamako Sign Language),
+      ],
+   q(1358) => [
+      q(Boma),
+      ],
+   q(1359) => [
+      q(Barbareno),
+      ],
+   q(1360) => [
+      q(Anjam),
+      ],
+   q(1361) => [
+      q(Bonjo),
+      ],
+   q(1362) => [
+      q(Bole),
+      ],
+   q(1363) => [
+      q(Berom),
+      ],
+   q(1364) => [
+      q(Bine),
+      ],
+   q(1365) => [
+      q(Tiemacewe Bozo),
+      ],
+   q(1366) => [
+      q(Bonkiman),
+      ],
+   q(1367) => [
+      q(Bogaya),
+      ],
+   q(1368) => [
+      q(Bororo),
+      ],
+   q(1369) => [
+      q(Bongo),
+      ],
+   q(1370) => [
+      q(Bondei),
+      ],
+   q(1371) => [
+      q(Tuwuli),
+      ],
+   q(1372) => [
+      q(Rema),
+      ],
+   q(1373) => [
+      q(Buamu),
+      ],
+   q(1374) => [
+      q(Bodo (Central African Republic)),
+      ],
+   q(1375) => [
+      q(Tieyaxo Bozo),
+      ],
+   q(1376) => [
+      q(Dakaka),
+      ],
+   q(1377) => [
+      q(Barbacoas),
+      ],
+   q(1378) => [
+      q(Banda-Banda),
+      ],
+   q(1379) => [
+      q(Bonggo),
+      ],
+   q(1380) => [
+      q(Botlikh),
+      ],
+   q(1381) => [
+      q(Bagupi),
+      ],
+   q(1382) => [
+      q(Binji),
+      ],
+   q(1383) => [
+      q(Orowe),
+      ],
+   q(1384) => [
+      q(Broome Pearling Lugger Pidgin),
+      ],
+   q(1385) => [
+      q(Biyom),
+      ],
+   q(1386) => [
+      q(Dzao Min),
+      ],
+   q(1387) => [
+      q(Anasi),
+      ],
+   q(1388) => [
+      q(Kaure),
+      ],
+   q(1389) => [
+      q(Banda Malay),
+      ],
+   q(1390) => [
+      q(Koronadal Blaan),
+      ],
+   q(1391) => [
+      q(Sarangani Blaan),
+      ],
+   q(1392) => [
+      q(Barrow Point),
+      ],
+   q(1393) => [
+      q(Bongu),
+      ],
+   q(1394) => [
+      q(Bian Marind),
+      ],
+   q(1395) => [
+      q(Bo (Papua New Guinea)),
+      ],
+   q(1396) => [
+      q(Palya Bareli),
+      ],
+   q(1397) => [
+      q(Bishnupriya),
+      ],
+   q(1398) => [
+      q(Bilba),
+      ],
+   q(1399) => [
+      q(Tchumbuli),
+      ],
+   q(1400) => [
+      q(Bagusa),
+      ],
+   q(1401) => [
+      q(Boko (Benin)),
+      ],
+   q(1402) => [
+      q(Bung),
+      ],
+   q(1403) => [
+      q(Baga Kaloum),
+      ],
+   q(1404) => [
+      q(Bago-Kusuntu),
+      ],
+   q(1405) => [
+      q(Baima),
+      ],
+   q(1406) => [
+      q(Bakhtiari),
+      ],
+   q(1407) => [
+      q(Bandial),
+      ],
+   q(1408) => [
+      q(Banda-Mbres),
+      ],
+   q(1409) => [
+      q(Bilakura),
+      ],
+   q(1410) => [
+      q(Wumboko),
+      ],
+   q(1411) => [
+      q(Bulgarian Sign Language),
+      ],
+   q(1412) => [
+      q(Balo),
+      ],
+   q(1413) => [
+      q(Busa),
+      ],
+   q(1414) => [
+      q(Biritai),
+      ],
+   q(1415) => [
+      q(Burusu),
+      ],
+   q(1416) => [
+      q(Bosngun),
+      ],
+   q(1417) => [
+      q(Bamukumbit),
+      ],
+   q(1418) => [
+      q(Boguru),
+      ],
+   q(1419) => [
+      q(Koro Wachi),
+      q(Begbere-Ejar),
+      ],
+   q(1420) => [
+      q(Buru (Nigeria)),
+      ],
+   q(1421) => [
+      q(Baangi),
+      ],
+   q(1422) => [
+      q(Bengkala Sign Language),
+      ],
+   q(1423) => [
+      q(Bakaka),
+      ],
+   q(1424) => [
+      q(Lave),
+      ],
+   q(1425) => [
+      q(Berbice Creole Dutch),
+      ],
+   q(1426) => [
+      q(Baraamu),
+      ],
+   q(1427) => [
+      q(Bera),
+      ],
+   q(1428) => [
+      q(Baure),
+      ],
+   q(1429) => [
+      q(Brahui),
+      ],
+   q(1430) => [
+      q(Mokpwe),
+      ],
+   q(1431) => [
+      q(Bieria),
+      ],
+   q(1432) => [
+      q(Birked),
+      ],
+   q(1433) => [
+      q(Birwa),
+      ],
+   q(1434) => [
+      q(Barambu),
+      ],
+   q(1435) => [
+      q(Boruca),
+      ],
+   q(1436) => [
+      q(Brokkat),
+      ],
+   q(1437) => [
+      q(Barapasi),
+      ],
+   q(1438) => [
+      q(Breri),
+      ],
+   q(1439) => [
+      q(Birao),
+      ],
+   q(1440) => [
+      q(Baras),
+      ],
+   q(1441) => [
+      q(Bitare),
+      ],
+   q(1442) => [
+      q(Eastern Bru),
+      ],
+   q(1443) => [
+      q(Western Bru),
+      ],
+   q(1444) => [
+      q(Bellari),
+      ],
+   q(1445) => [
+      q(Bodo (India)),
+      ],
+   q(1446) => [
+      q(Burui),
+      ],
+   q(1447) => [
+      q(Bilbil),
+      ],
+   q(1448) => [
+      q(Abinomn),
+      ],
+   q(1449) => [
+      q(Brunei Bisaya),
+      ],
+   q(1450) => [
+      q(Bassari),
+      q(Oniyan),
+      ],
+   q(1451) => [
+      q(Wushi),
+      ],
+   q(1452) => [
+      q(Bauchi),
+      ],
+   q(1453) => [
+      q(Bashkardi),
+      ],
+   q(1454) => [
+      q(Kati),
+      ],
+   q(1455) => [
+      q(Bassossi),
+      ],
+   q(1456) => [
+      q(Bangwinji),
+      ],
+   q(1457) => [
+      q(Burushaski),
+      ],
+   q(1458) => [
+      q(Basa-Gumna),
+      ],
+   q(1459) => [
+      q(Busami),
+      ],
+   q(1460) => [
+      q(Barasana-Eduria),
+      ],
+   q(1461) => [
+      q(Buso),
+      ],
+   q(1462) => [
+      q(Baga Sitemu),
+      ],
+   q(1463) => [
+      q(Bassa),
+      ],
+   q(1464) => [
+      q(Bassa-Kontagora),
+      ],
+   q(1465) => [
+      q(Akoose),
+      ],
+   q(1466) => [
+      q(Basketo),
+      ],
+   q(1467) => [
+      q(Bahonsuai),
+      ],
+   q(1468) => [
+      q(Baga Sobane),
+      ],
+   q(1469) => [
+      q(Baiso),
+      ],
+   q(1470) => [
+      q(Yangkam),
+      ],
+   q(1471) => [
+      q(Sabah Bisaya),
+      ],
+   q(1472) => [
+      q(Bata),
+      ],
+   q(1473) => [
+      q(Bati (Cameroon)),
+      ],
+   q(1474) => [
+      q(Batak Dairi),
+      ],
+   q(1475) => [
+      q(Gamo-Ningi),
+      ],
+   q(1476) => [
+      q(Birgit),
+      ],
+   q(1477) => [
+      q(Gagnoa Bete),
+      ],
+   q(1478) => [
+      q(Biatah Bidayuh),
+      ],
+   q(1479) => [
+      q(Burate),
+      ],
+   q(1480) => [
+      q(Bacanese Malay),
+      ],
+   q(1481) => [
+      q(Bhatola),
+      ],
+   q(1482) => [
+      q(Batak Mandailing),
+      ],
+   q(1483) => [
+      q(Ratagnon),
+      ],
+   q(1484) => [
+      q(Rinconada Bikol),
+      ],
+   q(1485) => [
+      q(Budibud),
+      ],
+   q(1486) => [
+      q(Batek),
+      ],
+   q(1487) => [
+      q(Baetora),
+      ],
+   q(1488) => [
+      q(Batak Simalungun),
+      ],
+   q(1489) => [
+      q(Bete-Bendi),
+      ],
+   q(1490) => [
+      q(Batu),
+      ],
+   q(1491) => [
+      q(Bateri),
+      ],
+   q(1492) => [
+      q(Butuanon),
+      ],
+   q(1493) => [
+      q(Batak Karo),
+      ],
+   q(1494) => [
+      q(Bobot),
+      ],
+   q(1495) => [
+      q(Batak Alas-Kluet),
+      ],
+   q(1496) => [
+      q(Bua),
+      ],
+   q(1497) => [
+      q(Bushi),
+      ],
+   q(1498) => [
+      q(Ntcham),
+      ],
+   q(1499) => [
+      q(Beothuk),
+      ],
+   q(1500) => [
+      q(Bushoong),
+      ],
+   q(1501) => [
+      q(Younuo Bunu),
+      ],
+   q(1502) => [
+      q(Bongili),
+      ],
+   q(1503) => [
+      q(Basa-Gurmana),
+      ],
+   q(1504) => [
+      q(Bugawac),
+      ],
+   q(1505) => [
+      q(Bulu (Cameroon)),
+      ],
+   q(1506) => [
+      q(Sherbro),
+      ],
+   q(1507) => [
+      q(Terei),
+      ],
+   q(1508) => [
+      q(Busoa),
+      ],
+   q(1509) => [
+      q(Brem),
+      ],
+   q(1510) => [
+      q(Bokobaru),
+      ],
+   q(1511) => [
+      q(Bungain),
+      ],
+   q(1512) => [
+      q(Budu),
+      ],
+   q(1513) => [
+      q(Bun),
+      ],
+   q(1514) => [
+      q(Bubi),
+      ],
+   q(1515) => [
+      q(Boghom),
+      ],
+   q(1516) => [
+      q(Bullom So),
+      ],
+   q(1517) => [
+      q(Bukwen),
+      ],
+   q(1518) => [
+      q(Barein),
+      ],
+   q(1519) => [
+      q(Bube),
+      ],
+   q(1520) => [
+      q(Baelelea),
+      ],
+   q(1521) => [
+      q(Baeggu),
+      ],
+   q(1522) => [
+      q(Berau Malay),
+      ],
+   q(1523) => [
+      q(Boor),
+      ],
+   q(1524) => [
+      q(Bonkeng),
+      ],
+   q(1525) => [
+      q(Bure),
+      ],
+   q(1526) => [
+      q(Belanda Viri),
+      ],
+   q(1527) => [
+      q(Baan),
+      ],
+   q(1528) => [
+      q(Bukat),
+      ],
+   q(1529) => [
+      q(Bolivian Sign Language),
+      ],
+   q(1530) => [
+      q(Bamunka),
+      ],
+   q(1531) => [
+      q(Buna),
+      ],
+   q(1532) => [
+      q(Bolgo),
+      ],
+   q(1533) => [
+      q(Birri),
+      ],
+   q(1534) => [
+      q(Burarra),
+      ],
+   q(1535) => [
+      q(Bati (Indonesia)),
+      ],
+   q(1536) => [
+      q(Bukit Malay),
+      ],
+   q(1537) => [
+      q(Baniva),
+      ],
+   q(1538) => [
+      q(Boga),
+      ],
+   q(1539) => [
+      q(Dibole),
+      ],
+   q(1540) => [
+      q(Baybayanon),
+      ],
+   q(1541) => [
+      q(Bauzi),
+      ],
+   q(1542) => [
+      q(Bwatoo),
+      ],
+   q(1543) => [
+      q(Namosi-Naitasiri-Serua),
+      ],
+   q(1544) => [
+      q(Bwile),
+      ],
+   q(1545) => [
+      q(Bwaidoka),
+      ],
+   q(1546) => [
+      q(Bwe Karen),
+      ],
+   q(1547) => [
+      q(Boselewa),
+      ],
+   q(1548) => [
+      q(Barwe),
+      ],
+   q(1549) => [
+      q(Bishuo),
+      ],
+   q(1550) => [
+      q(Baniwa),
+      ],
+   q(1551) => [
+      q(Laa Laa Bwamu),
+      ],
+   q(1552) => [
+      q(Bauwaki),
+      ],
+   q(1553) => [
+      q(Bwela),
+      ],
+   q(1554) => [
+      q(Biwat),
+      ],
+   q(1555) => [
+      q(Wunai Bunu),
+      ],
+   q(1556) => [
+      q(Boro (Ethiopia)),
+      q(Borna (Ethiopia)),
+      ],
+   q(1557) => [
+      q(Mandobo Bawah),
+      ],
+   q(1558) => [
+      q(Southern Bobo Madare),
+      ],
+   q(1559) => [
+      q(Bura-Pabir),
+      ],
+   q(1560) => [
+      q(Bomboma),
+      ],
+   q(1561) => [
+      q(Bafaw-Balong),
+      ],
+   q(1562) => [
+      q(Buli (Ghana)),
+      ],
+   q(1563) => [
+      q(Bwa),
+      ],
+   q(1564) => [
+      q(Bu-Nao Bunu),
+      ],
+   q(1565) => [
+      q(Cwi Bwamu),
+      ],
+   q(1566) => [
+      q(Bwisi),
+      ],
+   q(1567) => [
+      q(Bauro),
+      ],
+   q(1568) => [
+      q(Belanda Bor),
+      ],
+   q(1569) => [
+      q(Molengue),
+      ],
+   q(1570) => [
+      q(Pela),
+      ],
+   q(1571) => [
+      q(Birale),
+      ],
+   q(1572) => [
+      q(Bilur),
+      ],
+   q(1573) => [
+      q(Bangala),
+      ],
+   q(1574) => [
+      q(Buhutu),
+      ],
+   q(1575) => [
+      q(Pirlatapa),
+      ],
+   q(1576) => [
+      q(Bayungu),
+      ],
+   q(1577) => [
+      q(Bukusu),
+      q(Lubukusu),
+      ],
+   q(1578) => [
+      q(Jalkunan),
+      ],
+   q(1579) => [
+      q(Mongolia Buriat),
+      ],
+   q(1580) => [
+      q(Burduna),
+      ],
+   q(1581) => [
+      q(Barikanchi),
+      ],
+   q(1582) => [
+      q(Bebil),
+      ],
+   q(1583) => [
+      q(Beele),
+      ],
+   q(1584) => [
+      q(Russia Buriat),
+      ],
+   q(1585) => [
+      q(Busam),
+      ],
+   q(1586) => [
+      q(China Buriat),
+      ],
+   q(1587) => [
+      q(Berakou),
+      ],
+   q(1588) => [
+      q(Bankagooma),
+      ],
+   q(1589) => [
+      q(Borna (Democratic Republic of Congo)),
+      ],
+   q(1590) => [
+      q(Binahari),
+      ],
+   q(1591) => [
+      q(Batak),
+      ],
+   q(1592) => [
+      q(Bikya),
+      ],
+   q(1593) => [
+      q(Ubaghara),
+      ],
+   q(1594) => [
+      q(Benyadu'),
+      ],
+   q(1595) => [
+      q(Pouye),
+      ],
+   q(1596) => [
+      q(Bete),
+      ],
+   q(1597) => [
+      q(Baygo),
+      ],
+   q(1598) => [
+      q(Bhujel),
+      ],
+   q(1599) => [
+      q(Buyu),
+      ],
+   q(1600) => [
+      q(Bina (Nigeria)),
+      ],
+   q(1601) => [
+      q(Biao),
+      ],
+   q(1602) => [
+      q(Bayono),
+      ],
+   q(1603) => [
+      q(Bidyara),
+      ],
+   q(1604) => [
+      q(Biyo),
+      ],
+   q(1605) => [
+      q(Bumaji),
+      ],
+   q(1606) => [
+      q(Basay),
+      ],
+   q(1607) => [
+      q(Baruya),
+      q(Yipma),
+      ],
+   q(1608) => [
+      q(Burak),
+      ],
+   q(1609) => [
+      q(Berti),
+      ],
+   q(1610) => [
+      q(Medumba),
+      ],
+   q(1611) => [
+      q(Belhariya),
+      ],
+   q(1612) => [
+      q(Qaqet),
+      ],
+   q(1613) => [
+      q(Buya),
+      ],
+   q(1614) => [
+      q(Banaro),
+      ],
+   q(1615) => [
+      q(Bandi),
+      ],
+   q(1616) => [
+      q(Andio),
+      ],
+   q(1617) => [
+      q(Southern Betsimisaraka Malagasy),
+      ],
+   q(1618) => [
+      q(Bribri),
+      ],
+   q(1619) => [
+      q(Jenaama Bozo),
+      ],
+   q(1620) => [
+      q(Boikin),
+      ],
+   q(1621) => [
+      q(Babuza),
+      ],
+   q(1622) => [
+      q(Mapos Buang),
+      ],
+   q(1623) => [
+      q(Bisu),
+      ],
+   q(1624) => [
+      q(Belize Kriol English),
+      ],
+   q(1625) => [
+      q(Nicaragua Creole English),
+      ],
+   q(1626) => [
+      q(Boano (Sulawesi)),
+      ],
+   q(1627) => [
+      q(Bolondo),
+      ],
+   q(1628) => [
+      q(Boano (Maluku)),
+      ],
+   q(1629) => [
+      q(Bozaba),
+      ],
+   q(1630) => [
+      q(Kemberano),
+      ],
+   q(1631) => [
+      q(Buli (Indonesia)),
+      ],
+   q(1632) => [
+      q(Biri),
+      ],
+   q(1633) => [
+      q(Brazilian Sign Language),
+      ],
+   q(1634) => [
+      q(Brithenig),
+      ],
+   q(1635) => [
+      q(Burmeso),
+      ],
+   q(1636) => [
+      q(Bebe),
+      ],
+   q(1637) => [
+      q(Basa (Nigeria)),
+      ],
+   q(1638) => [
+      q(Kelengazxo Bozo),
+      ],
+   q(1639) => [
+      q(Obanliku),
+      ],
+   q(1640) => [
+      q(Evant),
+      ],
+   q(1641) => [
+      q(Chorti),
+      ],
+   q(1642) => [
+      q(Garifuna),
+      ],
+   q(1643) => [
+      q(Chuj),
+      ],
+   q(1644) => [
+      q(Lehar),
+      q(Laalaa),
+      ],
+   q(1645) => [
+      q(Southern Carrier),
+      ],
+   q(1646) => [
+      q(Nivacle),
+      ],
+   q(1647) => [
+      q(Cahuarano),
+      ],
+   q(1648) => [
+      q(Chane),
+      ],
+   q(1649) => [
+      q(Kaqchikel),
+      q(Cakchiquel),
+      ],
+   q(1650) => [
+      q(Carolinian),
+      ],
+   q(1651) => [
+      q(Cemuhi),
+      ],
+   q(1652) => [
+      q(Chambri),
+      ],
+   q(1653) => [
+      q(Chacobo),
+      ],
+   q(1654) => [
+      q(Chipaya),
+      ],
+   q(1655) => [
+      q(Car Nicobarese),
+      ],
+   q(1656) => [
+      q(Tsimane),
+      ],
+   q(1657) => [
+      q(Cavinena),
+      ],
+   q(1658) => [
+      q(Callawalla),
+      ],
+   q(1659) => [
+      q(Chiquitano),
+      ],
+   q(1660) => [
+      q(Cayuga),
+      ],
+   q(1661) => [
+      q(Canichana),
+      ],
+   q(1662) => [
+      q(Cabiyari),
+      ],
+   q(1663) => [
+      q(Carapana),
+      ],
+   q(1664) => [
+      q(Carijona),
+      ],
+   q(1665) => [
+      q(Chipiajes),
+      ],
+   q(1666) => [
+      q(Chimila),
+      ],
+   q(1667) => [
+      q(Cagua),
+      ],
+   q(1668) => [
+      q(Chachi),
+      ],
+   q(1669) => [
+      q(Ede Cabe),
+      ],
+   q(1670) => [
+      q(Chavacano),
+      ],
+   q(1671) => [
+      q(Bualkhaw Chin),
+      ],
+   q(1672) => [
+      q(Nyahkur),
+      ],
+   q(1673) => [
+      q(Izora),
+      ],
+   q(1674) => [
+      q(Cashibo-Cacataibo),
+      ],
+   q(1675) => [
+      q(Cashinahua),
+      ],
+   q(1676) => [
+      q(Chayahuita),
+      ],
+   q(1677) => [
+      q(Candoshi-Shapra),
+      ],
+   q(1678) => [
+      q(Cacua),
+      ],
+   q(1679) => [
+      q(Kinabalian),
+      ],
+   q(1680) => [
+      q(Carabayo),
+      ],
+   q(1681) => [
+      q(Cauca),
+      ],
+   q(1682) => [
+      q(Chamicuro),
+      ],
+   q(1683) => [
+      q(Cafundo Creole),
+      ],
+   q(1684) => [
+      q(Chopi),
+      ],
+   q(1685) => [
+      q(Samba Daka),
+      ],
+   q(1686) => [
+      q(Atsam),
+      ],
+   q(1687) => [
+      q(Kasanga),
+      ],
+   q(1688) => [
+      q(Cutchi-Swahili),
+      ],
+   q(1689) => [
+      q(Malaccan Creole Malay),
+      ],
+   q(1690) => [
+      q(Comaltepec Chinantec),
+      ],
+   q(1691) => [
+      q(Chakma),
+      ],
+   q(1692) => [
+      q(Cacaopera),
+      ],
+   q(1693) => [
+      q(Choni),
+      ],
+   q(1694) => [
+      q(Chenchu),
+      ],
+   q(1695) => [
+      q(Chiru),
+      ],
+   q(1696) => [
+      q(Chamari),
+      ],
+   q(1697) => [
+      q(Chambeali),
+      ],
+   q(1698) => [
+      q(Chodri),
+      ],
+   q(1699) => [
+      q(Churahi),
+      ],
+   q(1700) => [
+      q(Chepang),
+      ],
+   q(1701) => [
+      q(Chaudangsi),
+      ],
+   q(1702) => [
+      q(Min Dong Chinese),
+      ],
+   q(1703) => [
+      q(Cinda-Regi-Tiyal),
+      ],
+   q(1704) => [
+      q(Chadian Sign Language),
+      ],
+   q(1705) => [
+      q(Chadong),
+      ],
+   q(1706) => [
+      q(Koda),
+      ],
+   q(1707) => [
+      q(Lower Chehalis),
+      ],
+   q(1708) => [
+      q(Chamacoco),
+      ],
+   q(1709) => [
+      q(Eastern Khumi Chin),
+      ],
+   q(1710) => [
+      q(Cen),
+      ],
+   q(1711) => [
+      q(Centuum),
+      ],
+   q(1712) => [
+      q(Dijim-Bwilim),
+      ],
+   q(1713) => [
+      q(Cara),
+      ],
+   q(1714) => [
+      q(Como Karim),
+      ],
+   q(1715) => [
+      q(Falam Chin),
+      ],
+   q(1716) => [
+      q(Changriwa),
+      ],
+   q(1717) => [
+      q(Kagayanen),
+      ],
+   q(1718) => [
+      q(Chiga),
+      ],
+   q(1719) => [
+      q(Chocangacakha),
+      ],
+   q(1720) => [
+      q(Catawba),
+      ],
+   q(1721) => [
+      q(Highland Oaxaca Chontal),
+      ],
+   q(1722) => [
+      q(Tabasco Chontal),
+      ],
+   q(1723) => [
+      q(Chinook),
+      ],
+   q(1724) => [
+      q(Ojitlan Chinantec),
+      ],
+   q(1725) => [
+      q(Cahuilla),
+      ],
+   q(1726) => [
+      q(Quiotepec Chinantec),
+      ],
+   q(1727) => [
+      q(Cholon),
+      ],
+   q(1728) => [
+      q(Chuwabu),
+      ],
+   q(1729) => [
+      q(Chantyal),
+      ],
+   q(1730) => [
+      q(Ozumacin Chinantec),
+      ],
+   q(1731) => [
+      q(Cia-Cia),
+      ],
+   q(1732) => [
+      q(Ci Gbe),
+      ],
+   q(1733) => [
+      q(Chickasaw),
+      ],
+   q(1734) => [
+      q(Chimariko),
+      ],
+   q(1735) => [
+      q(Cineni),
+      ],
+   q(1736) => [
+      q(Chinali),
+      ],
+   q(1737) => [
+      q(Chitkuli Kinnauri),
+      ],
+   q(1738) => [
+      q(Cimbrian),
+      ],
+   q(1739) => [
+      q(Cinta Larga),
+      ],
+   q(1740) => [
+      q(Chiapanec),
+      ],
+   q(1741) => [
+      q(Tiri),
+      ],
+   q(1742) => [
+      q(Chippewa),
+      ],
+   q(1743) => [
+      q(Chaima),
+      ],
+   q(1744) => [
+      q(Western Cham),
+      ],
+   q(1745) => [
+      q(Chru),
+      ],
+   q(1746) => [
+      q(Upper Chehalis),
+      ],
+   q(1747) => [
+      q(Chamalal),
+      ],
+   q(1748) => [
+      q(Chokwe),
+      ],
+   q(1749) => [
+      q(Eastern Cham),
+      ],
+   q(1750) => [
+      q(Chenapian),
+      ],
+   q(1751) => [
+      q(Asheninka Pajonal),
+      ],
+   q(1752) => [
+      q(Cabecar),
+      ],
+   q(1753) => [
+      q(Shor),
+      ],
+   q(1754) => [
+      q(Chuave),
+      ],
+   q(1755) => [
+      q(Jinyu Chinese),
+      ],
+   q(1756) => [
+      q(Central Kurdish),
+      ],
+   q(1757) => [
+      q(Chak),
+      ],
+   q(1758) => [
+      q(Cibak),
+      ],
+   q(1759) => [
+      q(Anufo),
+      ],
+   q(1760) => [
+      q(Kajakse),
+      ],
+   q(1761) => [
+      q(Kairak),
+      ],
+   q(1762) => [
+      q(Tayo),
+      ],
+   q(1763) => [
+      q(Chukot),
+      ],
+   q(1764) => [
+      q(Koasati),
+      ],
+   q(1765) => [
+      q(Kavalan),
+      ],
+   q(1766) => [
+      q(Caka),
+      ],
+   q(1767) => [
+      q(Cakfem-Mushere),
+      ],
+   q(1768) => [
+      q(Cakchiquel-Quiche Mixed Language),
+      ],
+   q(1769) => [
+      q(Ron),
+      ],
+   q(1770) => [
+      q(Chilcotin),
+      ],
+   q(1771) => [
+      q(Chaldean Neo-Aramaic),
+      ],
+   q(1772) => [
+      q(Lealao Chinantec),
+      ],
+   q(1773) => [
+      q(Chilisso),
+      ],
+   q(1774) => [
+      q(Chakali),
+      ],
+   q(1775) => [
+      q(Laitu Chin),
+      ],
+   q(1776) => [
+      q(Idu-Mishmi),
+      ],
+   q(1777) => [
+      q(Chala),
+      ],
+   q(1778) => [
+      q(Clallam),
+      ],
+   q(1779) => [
+      q(Lowland Oaxaca Chontal),
+      ],
+   q(1780) => [
+      q(Lautu Chin),
+      ],
+   q(1781) => [
+      q(Caluyanun),
+      ],
+   q(1782) => [
+      q(Chulym),
+      ],
+   q(1783) => [
+      q(Eastern Highland Chatino),
+      ],
+   q(1784) => [
+      q(Maa),
+      ],
+   q(1785) => [
+      q(Cerma),
+      ],
+   q(1786) => [
+      q(Classical Mongolian),
+      ],
+   q(1787) => [
+      q(Embera-Chami),
+      ],
+   q(1788) => [
+      q(Campalagian),
+      ],
+   q(1789) => [
+      q(Michigamea),
+      ],
+   q(1790) => [
+      q(Mandarin Chinese),
+      ],
+   q(1791) => [
+      q(Central Mnong),
+      ],
+   q(1792) => [
+      q(Mro-Khimi Chin),
+      ],
+   q(1793) => [
+      q(Messapic),
+      ],
+   q(1794) => [
+      q(Camtho),
+      ],
+   q(1795) => [
+      q(Changthang),
+      ],
+   q(1796) => [
+      q(Chinbon Chin),
+      ],
+   q(1797) => [
+      q(Coong),
+      ],
+   q(1798) => [
+      q(Northern Qiang),
+      ],
+   q(1799) => [
+      q(Haka Chin),
+      ],
+   q(1800) => [
+      q(Ashaninka),
+      ],
+   q(1801) => [
+      q(Khumi Chin),
+      ],
+   q(1802) => [
+      q(Lalana Chinantec),
+      ],
+   q(1803) => [
+      q(Con),
+      ],
+   q(1804) => [
+      q(Central Asmat),
+      ],
+   q(1805) => [
+      q(Tepetotutla Chinantec),
+      ],
+   q(1806) => [
+      q(Chenoua),
+      ],
+   q(1807) => [
+      q(Ngawn Chin),
+      ],
+   q(1808) => [
+      q(Middle Cornish),
+      ],
+   q(1809) => [
+      q(Cocos Islands Malay),
+      ],
+   q(1810) => [
+      q(Chicomuceltec),
+      ],
+   q(1811) => [
+      q(Cocopa),
+      ],
+   q(1812) => [
+      q(Cocama-Cocamilla),
+      ],
+   q(1813) => [
+      q(Koreguaje),
+      ],
+   q(1814) => [
+      q(Colorado),
+      ],
+   q(1815) => [
+      q(Chong),
+      ],
+   q(1816) => [
+      q(Chonyi-Dzihana-Kauma),
+      q(Chichonyi-Chidzihana-Chikauma),
+      ],
+   q(1817) => [
+      q(Cochimi),
+      ],
+   q(1818) => [
+      q(Santa Teresa Cora),
+      ],
+   q(1819) => [
+      q(Columbia-Wenatchi),
+      ],
+   q(1820) => [
+      q(Comanche),
+      ],
+   q(1821) => [
+      q(Cofan),
+      ],
+   q(1822) => [
+      q(Comox),
+      ],
+   q(1823) => [
+      q(Coquille),
+      ],
+   q(1824) => [
+      q(Caquinte),
+      ],
+   q(1825) => [
+      q(Wamey),
+      ],
+   q(1826) => [
+      q(Cao Miao),
+      ],
+   q(1827) => [
+      q(Cowlitz),
+      ],
+   q(1828) => [
+      q(Nanti),
+      ],
+   q(1829) => [
+      q(Coyaima),
+      ],
+   q(1830) => [
+      q(Chochotec),
+      ],
+   q(1831) => [
+      q(Palantla Chinantec),
+      ],
+   q(1832) => [
+      q(Ucayali-Yurua Asheninka),
+      ],
+   q(1833) => [
+      q(Ajyininka Apurucayali),
+      ],
+   q(1834) => [
+      q(Cappadocian Greek),
+      ],
+   q(1835) => [
+      q(Chinese Pidgin English),
+      ],
+   q(1836) => [
+      q(Cherepon),
+      ],
+   q(1837) => [
+      q(Capiznon),
+      ],
+   q(1838) => [
+      q(Pichis Asheninka),
+      ],
+   q(1839) => [
+      q(Pu-Xian Chinese),
+      ],
+   q(1840) => [
+      q(South Ucayali Asheninka),
+      ],
+   q(1841) => [
+      q(Chuanqiandian Cluster Miao),
+      ],
+   q(1842) => [
+      q(Chilean Quechua),
+      ],
+   q(1843) => [
+      q(Chara),
+      ],
+   q(1844) => [
+      q(Island Carib),
+      ],
+   q(1845) => [
+      q(Lonwolwol),
+      ],
+   q(1846) => [
+      q(Coeur d'Alene),
+      ],
+   q(1847) => [
+      q(Caramanta),
+      ],
+   q(1848) => [
+      q(Michif),
+      ],
+   q(1849) => [
+      q(Saotomense),
+      ],
+   q(1850) => [
+      q(Southern East Cree),
+      ],
+   q(1851) => [
+      q(Plains Cree),
+      ],
+   q(1852) => [
+      q(Northern East Cree),
+      ],
+   q(1853) => [
+      q(Moose Cree),
+      ],
+   q(1854) => [
+      q(El Nayar Cora),
+      ],
+   q(1855) => [
+      q(Crow),
+      ],
+   q(1856) => [
+      q(Iyo'wujwa Chorote),
+      ],
+   q(1857) => [
+      q(Carolina Algonquian),
+      ],
+   q(1858) => [
+      q(Seselwa Creole French),
+      ],
+   q(1859) => [
+      q(Iyojwa'ja Chorote),
+      ],
+   q(1860) => [
+      q(Chaura),
+      ],
+   q(1861) => [
+      q(Chrau),
+      ],
+   q(1862) => [
+      q(Carrier),
+      ],
+   q(1863) => [
+      q(Cori),
+      ],
+   q(1864) => [
+      q(Cruzeno),
+      ],
+   q(1865) => [
+      q(Chiltepec Chinantec),
+      ],
+   q(1866) => [
+      q(Catalan Sign Language),
+      q(Lengua de senas catalana),
+      q(Llengua de Signes Catalana),
+      ],
+   q(1867) => [
+      q(Chiangmai Sign Language),
+      ],
+   q(1868) => [
+      q(Czech Sign Language),
+      ],
+   q(1869) => [
+      q(Cuba Sign Language),
+      ],
+   q(1870) => [
+      q(Chilean Sign Language),
+      ],
+   q(1871) => [
+      q(Asho Chin),
+      ],
+   q(1872) => [
+      q(Coast Miwok),
+      ],
+   q(1873) => [
+      q(Jola-Kasa),
+      ],
+   q(1874) => [
+      q(Chinese Sign Language),
+      ],
+   q(1875) => [
+      q(Central Sierra Miwok),
+      ],
+   q(1876) => [
+      q(Colombian Sign Language),
+      ],
+   q(1877) => [
+      q(Sochiapam Chinantec),
+      q(Sochiapan Chinantec),
+      ],
+   q(1878) => [
+      q(Croatia Sign Language),
+      ],
+   q(1879) => [
+      q(Costa Rican Sign Language),
+      ],
+   q(1880) => [
+      q(Southern Ohlone),
+      ],
+   q(1881) => [
+      q(Northern Ohlone),
+      ],
+   q(1882) => [
+      q(Sumtu Chin),
+      ],
+   q(1883) => [
+      q(Swampy Cree),
+      ],
+   q(1884) => [
+      q(Siyin Chin),
+      ],
+   q(1885) => [
+      q(Coos),
+      ],
+   q(1886) => [
+      q(Tataltepec Chatino),
+      ],
+   q(1887) => [
+      q(Chetco),
+      ],
+   q(1888) => [
+      q(Tedim Chin),
+      ],
+   q(1889) => [
+      q(Tepinapa Chinantec),
+      ],
+   q(1890) => [
+      q(Chittagonian),
+      ],
+   q(1891) => [
+      q(Thaiphum Chin),
+      ],
+   q(1892) => [
+      q(Tlacoatzintepec Chinantec),
+      ],
+   q(1893) => [
+      q(Chitimacha),
+      ],
+   q(1894) => [
+      q(Chhintange),
+      ],
+   q(1895) => [
+      q(Embera-Catio),
+      ],
+   q(1896) => [
+      q(Western Highland Chatino),
+      ],
+   q(1897) => [
+      q(Northern Catanduanes Bikol),
+      ],
+   q(1898) => [
+      q(Wayanad Chetti),
+      ],
+   q(1899) => [
+      q(Chol),
+      ],
+   q(1900) => [
+      q(Zacatepec Chatino),
+      ],
+   q(1901) => [
+      q(Cua),
+      ],
+   q(1902) => [
+      q(Cubeo),
+      ],
+   q(1903) => [
+      q(Usila Chinantec),
+      ],
+   q(1904) => [
+      q(Cung),
+      ],
+   q(1905) => [
+      q(Chuka),
+      q(Gichuka),
+      ],
+   q(1906) => [
+      q(Cuiba),
+      ],
+   q(1907) => [
+      q(Mashco Piro),
+      ],
+   q(1908) => [
+      q(San Blas Kuna),
+      ],
+   q(1909) => [
+      q(Culina),
+      q(Kulina),
+      ],
+   q(1910) => [
+      q(Cumeral),
+      ],
+   q(1911) => [
+      q(Cumanagoto),
+      ],
+   q(1912) => [
+      q(Cupeno),
+      ],
+   q(1913) => [
+      q(Cun),
+      ],
+   q(1914) => [
+      q(Chhulung),
+      ],
+   q(1915) => [
+      q(Teutila Cuicatec),
+      ],
+   q(1916) => [
+      q(Tai Ya),
+      ],
+   q(1917) => [
+      q(Cuvok),
+      ],
+   q(1918) => [
+      q(Chukwa),
+      ],
+   q(1919) => [
+      q(Tepeuxila Cuicatec),
+      ],
+   q(1920) => [
+      q(Chug),
+      ],
+   q(1921) => [
+      q(Valle Nacional Chinantec),
+      ],
+   q(1922) => [
+      q(Kabwa),
+      ],
+   q(1923) => [
+      q(Maindo),
+      ],
+   q(1924) => [
+      q(Woods Cree),
+      ],
+   q(1925) => [
+      q(Kwere),
+      ],
+   q(1926) => [
+      q(Chewong),
+      q(Cheq Wong),
+      ],
+   q(1927) => [
+      q(Kuwaataay),
+      ],
+   q(1928) => [
+      q(Nopala Chatino),
+      ],
+   q(1929) => [
+      q(Cayubaba),
+      ],
+   q(1930) => [
+      q(Cuyonon),
+      ],
+   q(1931) => [
+      q(Huizhou Chinese),
+      ],
+   q(1932) => [
+      q(Knaanic),
+      ],
+   q(1933) => [
+      q(Zenzontepec Chatino),
+      ],
+   q(1934) => [
+      q(Min Zhong Chinese),
+      ],
+   q(1935) => [
+      q(Zotung Chin),
+      ],
+   q(1936) => [
+      q(Dangaleat),
+      ],
+   q(1937) => [
+      q(Dambi),
+      ],
+   q(1938) => [
+      q(Marik),
+      ],
+   q(1939) => [
+      q(Duupa),
+      ],
+   q(1940) => [
+      q(Dan),
+      ],
+   q(1941) => [
+      q(Dagbani),
+      ],
+   q(1942) => [
+      q(Gwahatike),
+      ],
+   q(1943) => [
+      q(Day),
+      ],
+   q(1944) => [
+      q(Dar Fur Daju),
+      ],
+   q(1945) => [
+      q(Dahalo),
+      ],
+   q(1946) => [
+      q(Damakawa),
+      ],
+   q(1947) => [
+      q(Daai Chin),
+      ],
+   q(1948) => [
+      q(Dandami Maria),
+      ],
+   q(1949) => [
+      q(Daho-Doo),
+      ],
+   q(1950) => [
+      q(Dar Sila Daju),
+      ],
+   q(1951) => [
+      q(Taita),
+      q(Dawida),
+      ],
+   q(1952) => [
+      q(Davawenyo),
+      ],
+   q(1953) => [
+      q(Dayi),
+      ],
+   q(1954) => [
+      q(Dao),
+      ],
+   q(1955) => [
+      q(Bangi Me),
+      ],
+   q(1956) => [
+      q(Deno),
+      ],
+   q(1957) => [
+      q(Dadiya),
+      ],
+   q(1958) => [
+      q(Dabe),
+      ],
+   q(1959) => [
+      q(Edopi),
+      ],
+   q(1960) => [
+      q(Dogul Dom Dogon),
+      ],
+   q(1961) => [
+      q(Doka),
+      ],
+   q(1962) => [
+      q(Ida'an),
+      ],
+   q(1963) => [
+      q(Dyirbal),
+      ],
+   q(1964) => [
+      q(Duguri),
+      ],
+   q(1965) => [
+      q(Duriankere),
+      ],
+   q(1966) => [
+      q(Dulbu),
+      ],
+   q(1967) => [
+      q(Duwai),
+      ],
+   q(1968) => [
+      q(Daba),
+      ],
+   q(1969) => [
+      q(Dabarre),
+      ],
+   q(1970) => [
+      q(Ben Tey Dogon),
+      ],
+   q(1971) => [
+      q(Bondum Dom Dogon),
+      ],
+   q(1972) => [
+      q(Dungu),
+      ],
+   q(1973) => [
+      q(Bankan Tey Dogon),
+      ],
+   q(1974) => [
+      q(Dibiyaso),
+      ],
+   q(1975) => [
+      q(Deccan),
+      ],
+   q(1976) => [
+      q(Negerhollands),
+      ],
+   q(1977) => [
+      q(Dadi Dadi),
+      ],
+   q(1978) => [
+      q(Dongotono),
+      ],
+   q(1979) => [
+      q(Doondo),
+      ],
+   q(1980) => [
+      q(Fataluku),
+      ],
+   q(1981) => [
+      q(West Goodenough),
+      ],
+   q(1982) => [
+      q(Jaru),
+      ],
+   q(1983) => [
+      q(Dendi (Benin)),
+      ],
+   q(1984) => [
+      q(Dido),
+      ],
+   q(1985) => [
+      q(Dhudhuroa),
+      ],
+   q(1986) => [
+      q(Donno So Dogon),
+      ],
+   q(1987) => [
+      q(Dawera-Daweloor),
+      ],
+   q(1988) => [
+      q(Dagik),
+      ],
+   q(1989) => [
+      q(Dedua),
+      ],
+   q(1990) => [
+      q(Dewoin),
+      ],
+   q(1991) => [
+      q(Dezfuli),
+      ],
+   q(1992) => [
+      q(Degema),
+      ],
+   q(1993) => [
+      q(Dehwari),
+      ],
+   q(1994) => [
+      q(Demisa),
+      ],
+   q(1995) => [
+      q(Dek),
+      ],
+   q(1996) => [
+      q(Dem),
+      ],
+   q(1997) => [
+      q(Pidgin Delaware),
+      ],
+   q(1998) => [
+      q(Dendi (Central African Republic)),
+      ],
+   q(1999) => [
+      q(Deori),
+      ],
+   q(2000) => [
+      q(Desano),
+      ],
+   q(2001) => [
+      q(Domung),
+      ],
+   q(2002) => [
+      q(Dengese),
+      ],
+   q(2003) => [
+      q(Southern Dagaare),
+      ],
+   q(2004) => [
+      q(Bunoge Dogon),
+      ],
+   q(2005) => [
+      q(Casiguran Dumagat Agta),
+      ],
+   q(2006) => [
+      q(Dagaari Dioula),
+      ],
+   q(2007) => [
+      q(Degenan),
+      ],
+   q(2008) => [
+      q(Doga),
+      ],
+   q(2009) => [
+      q(Dghwede),
+      ],
+   q(2010) => [
+      q(Northern Dagara),
+      ],
+   q(2011) => [
+      q(Dagba),
+      ],
+   q(2012) => [
+      q(Andaandi),
+      q(Dongolawi),
+      ],
+   q(2013) => [
+      q(Dagoman),
+      ],
+   q(2014) => [
+      q(Dogri (individual language)),
+      ],
+   q(2015) => [
+      q(Dogoso),
+      ],
+   q(2016) => [
+      q(Ndrag'ngith),
+      ],
+   q(2017) => [
+      q(Degaru),
+      ],
+   q(2018) => [
+      q(Daungwurrung),
+      ],
+   q(2019) => [
+      q(Doghoro),
+      ],
+   q(2020) => [
+      q(Daga),
+      ],
+   q(2021) => [
+      q(Dhundari),
+      ],
+   q(2022) => [
+      q(Dhangu),
+      ],
+   q(2023) => [
+      q(Dhimal),
+      ],
+   q(2024) => [
+      q(Dhalandji),
+      ],
+   q(2025) => [
+      q(Zemba),
+      ],
+   q(2026) => [
+      q(Dhanki),
+      ],
+   q(2027) => [
+      q(Dhodia),
+      ],
+   q(2028) => [
+      q(Dhargari),
+      ],
+   q(2029) => [
+      q(Dhaiso),
+      ],
+   q(2030) => [
+      q(Dhurga),
+      ],
+   q(2031) => [
+      q(Dehu),
+      ],
+   q(2032) => [
+      q(Dhanwar (Nepal)),
+      ],
+   q(2033) => [
+      q(Dia),
+      ],
+   q(2034) => [
+      q(South Central Dinka),
+      ],
+   q(2035) => [
+      q(Lakota Dida),
+      ],
+   q(2036) => [
+      q(Didinga),
+      ],
+   q(2037) => [
+      q(Dieri),
+      ],
+   q(2038) => [
+      q(Digo),
+      q(Chidigo),
+      ],
+   q(2039) => [
+      q(Kumiai),
+      ],
+   q(2040) => [
+      q(Dimbong),
+      ],
+   q(2041) => [
+      q(Dai),
+      ],
+   q(2042) => [
+      q(Southwestern Dinka),
+      ],
+   q(2043) => [
+      q(Dilling),
+      ],
+   q(2044) => [
+      q(Dime),
+      ],
+   q(2045) => [
+      q(Dibo),
+      ],
+   q(2046) => [
+      q(Northeastern Dinka),
+      ],
+   q(2047) => [
+      q(Dimli (individual language)),
+      ],
+   q(2048) => [
+      q(Dirim),
+      ],
+   q(2049) => [
+      q(Dimasa),
+      ],
+   q(2050) => [
+      q(Dirari),
+      ],
+   q(2051) => [
+      q(Diriku),
+      ],
+   q(2052) => [
+      q(Northwestern Dinka),
+      ],
+   q(2053) => [
+      q(Dixon Reef),
+      ],
+   q(2054) => [
+      q(Diuwe),
+      ],
+   q(2055) => [
+      q(Ding),
+      ],
+   q(2056) => [
+      q(Djadjawurrung),
+      ],
+   q(2057) => [
+      q(Djinba),
+      ],
+   q(2058) => [
+      q(Dar Daju Daju),
+      ],
+   q(2059) => [
+      q(Djamindjung),
+      ],
+   q(2060) => [
+      q(Zarma),
+      ],
+   q(2061) => [
+      q(Djangun),
+      ],
+   q(2062) => [
+      q(Djinang),
+      ],
+   q(2063) => [
+      q(Djeebbana),
+      ],
+   q(2064) => [
+      q(Eastern Maroon Creole),
+      q(Businenge Tongo),
+      q(Nenge),
+      ],
+   q(2065) => [
+      q(Djiwarli),
+      ],
+   q(2066) => [
+      q(Jamsay Dogon),
+      ],
+   q(2067) => [
+      q(Djauan),
+      ],
+   q(2068) => [
+      q(Jangkang),
+      ],
+   q(2069) => [
+      q(Djambarrpuyngu),
+      ],
+   q(2070) => [
+      q(Kapriman),
+      ],
+   q(2071) => [
+      q(Djawi),
+      ],
+   q(2072) => [
+      q(Dakpakha),
+      ],
+   q(2073) => [
+      q(Dakka),
+      ],
+   q(2074) => [
+      q(Kuijau),
+      ],
+   q(2075) => [
+      q(Southeastern Dinka),
+      ],
+   q(2076) => [
+      q(Mazagway),
+      ],
+   q(2077) => [
+      q(Dolgan),
+      ],
+   q(2078) => [
+      q(Dalmatian),
+      ],
+   q(2079) => [
+      q(Darlong),
+      ],
+   q(2080) => [
+      q(Duma),
+      ],
+   q(2081) => [
+      q(Mombo Dogon),
+      ],
+   q(2082) => [
+      q(Dimir),
+      ],
+   q(2083) => [
+      q(Madhi Madhi),
+      ],
+   q(2084) => [
+      q(Dugwor),
+      ],
+   q(2085) => [
+      q(Upper Kinabatangan),
+      ],
+   q(2086) => [
+      q(Domaaki),
+      ],
+   q(2087) => [
+      q(Dameli),
+      ],
+   q(2088) => [
+      q(Dama),
+      ],
+   q(2089) => [
+      q(Kemedzung),
+      ],
+   q(2090) => [
+      q(East Damar),
+      ],
+   q(2091) => [
+      q(Dampelas),
+      ],
+   q(2092) => [
+      q(Dubu),
+      q(Tebi),
+      ],
+   q(2093) => [
+      q(Dumpas),
+      ],
+   q(2094) => [
+      q(Dema),
+      ],
+   q(2095) => [
+      q(Demta),
+      q(Sowari),
+      ],
+   q(2096) => [
+      q(Upper Grand Valley Dani),
+      ],
+   q(2097) => [
+      q(Daonda),
+      ],
+   q(2098) => [
+      q(Ndendeule),
+      ],
+   q(2099) => [
+      q(Dungan),
+      ],
+   q(2100) => [
+      q(Lower Grand Valley Dani),
+      ],
+   q(2101) => [
+      q(Dengka),
+      ],
+   q(2102) => [
+      q(Dzuungoo),
+      ],
+   q(2103) => [
+      q(Danaru),
+      ],
+   q(2104) => [
+      q(Mid Grand Valley Dani),
+      ],
+   q(2105) => [
+      q(Danau),
+      ],
+   q(2106) => [
+      q(Danu),
+      ],
+   q(2107) => [
+      q(Western Dani),
+      ],
+   q(2108) => [
+      q(Deni),
+      ],
+   q(2109) => [
+      q(Dom),
+      ],
+   q(2110) => [
+      q(Dobu),
+      ],
+   q(2111) => [
+      q(Northern Dong),
+      ],
+   q(2112) => [
+      q(Doe),
+      ],
+   q(2113) => [
+      q(Domu),
+      ],
+   q(2114) => [
+      q(Dong),
+      ],
+   q(2115) => [
+      q(Dondo),
+      ],
+   q(2116) => [
+      q(Doso),
+      ],
+   q(2117) => [
+      q(Toura (Papua New Guinea)),
+      ],
+   q(2118) => [
+      q(Dongo),
+      ],
+   q(2119) => [
+      q(Lukpa),
+      ],
+   q(2120) => [
+      q(Dominican Sign Language),
+      ],
+   q(2121) => [
+      q(Dori'o),
+      ],
+   q(2122) => [
+      q(Dogose),
+      ],
+   q(2123) => [
+      q(Dass),
+      ],
+   q(2124) => [
+      q(Dombe),
+      ],
+   q(2125) => [
+      q(Doyayo),
+      ],
+   q(2126) => [
+      q(Bussa),
+      ],
+   q(2127) => [
+      q(Dompo),
+      ],
+   q(2128) => [
+      q(Dorze),
+      ],
+   q(2129) => [
+      q(Papar),
+      ],
+   q(2130) => [
+      q(Dair),
+      ],
+   q(2131) => [
+      q(Minderico),
+      ],
+   q(2132) => [
+      q(Darmiya),
+      ],
+   q(2133) => [
+      q(Dolpo),
+      ],
+   q(2134) => [
+      q(Rungus),
+      ],
+   q(2135) => [
+      q(C'lela),
+      ],
+   q(2136) => [
+      q(Paakantyi),
+      ],
+   q(2137) => [
+      q(West Damar),
+      ],
+   q(2138) => [
+      q(Daro-Matu Melanau),
+      ],
+   q(2139) => [
+      q(Dura),
+      ],
+   q(2140) => [
+      q(Dororo),
+      ],
+   q(2141) => [
+      q(Gedeo),
+      ],
+   q(2142) => [
+      q(Drents),
+      ],
+   q(2143) => [
+      q(Rukai),
+      ],
+   q(2144) => [
+      q(Darai),
+      ],
+   q(2145) => [
+      q(Dutch Sign Language),
+      ],
+   q(2146) => [
+      q(Daasanach),
+      ],
+   q(2147) => [
+      q(Disa),
+      ],
+   q(2148) => [
+      q(Danish Sign Language),
+      ],
+   q(2149) => [
+      q(Dusner),
+      ],
+   q(2150) => [
+      q(Desiya),
+      ],
+   q(2151) => [
+      q(Tadaksahak),
+      ],
+   q(2152) => [
+      q(Daur),
+      ],
+   q(2153) => [
+      q(Labuk-Kinabatangan Kadazan),
+      ],
+   q(2154) => [
+      q(Ditidaht),
+      ],
+   q(2155) => [
+      q(Adithinngithigh),
+      ],
+   q(2156) => [
+      q(Ana Tinga Dogon),
+      ],
+   q(2157) => [
+      q(Tene Kan Dogon),
+      ],
+   q(2158) => [
+      q(Tomo Kan Dogon),
+      ],
+   q(2159) => [
+      q(Tommo So Dogon),
+      ],
+   q(2160) => [
+      q(Central Dusun),
+      ],
+   q(2161) => [
+      q(Lotud),
+      ],
+   q(2162) => [
+      q(Toro So Dogon),
+      ],
+   q(2163) => [
+      q(Toro Tegu Dogon),
+      ],
+   q(2164) => [
+      q(Tebul Ure Dogon),
+      ],
+   q(2165) => [
+      q(Dotyali),
+      ],
+   q(2166) => [
+      q(Dubli),
+      ],
+   q(2167) => [
+      q(Duna),
+      ],
+   q(2168) => [
+      q(Hun-Saare),
+      ],
+   q(2169) => [
+      q(Umiray Dumaget Agta),
+      ],
+   q(2170) => [
+      q(Dumbea),
+      ],
+   q(2171) => [
+      q(Duruma),
+      q(Chiduruma),
+      ],
+   q(2172) => [
+      q(Dungra Bhil),
+      ],
+   q(2173) => [
+      q(Dumun),
+      ],
+   q(2174) => [
+      q(Dhuwal),
+      ],
+   q(2175) => [
+      q(Uyajitaya),
+      ],
+   q(2176) => [
+      q(Alabat Island Agta),
+      ],
+   q(2177) => [
+      q(Dusun Deyah),
+      ],
+   q(2178) => [
+      q(Dupaninan Agta),
+      ],
+   q(2179) => [
+      q(Duano),
+      ],
+   q(2180) => [
+      q(Dusun Malang),
+      ],
+   q(2181) => [
+      q(Dii),
+      ],
+   q(2182) => [
+      q(Dumi),
+      ],
+   q(2183) => [
+      q(Drung),
+      ],
+   q(2184) => [
+      q(Duvle),
+      ],
+   q(2185) => [
+      q(Dusun Witu),
+      ],
+   q(2186) => [
+      q(Duungooma),
+      ],
+   q(2187) => [
+      q(Dicamay Agta),
+      ],
+   q(2188) => [
+      q(Duli),
+      ],
+   q(2189) => [
+      q(Duau),
+      ],
+   q(2190) => [
+      q(Diri),
+      ],
+   q(2191) => [
+      q(Dawro),
+      ],
+   q(2192) => [
+      q(Dutton World Speedwords),
+      ],
+   q(2193) => [
+      q(Dawawa),
+      ],
+   q(2194) => [
+      q(Dyan),
+      ],
+   q(2195) => [
+      q(Dyaberdyaber),
+      ],
+   q(2196) => [
+      q(Dyugun),
+      ],
+   q(2197) => [
+      q(Villa Viciosa Agta),
+      ],
+   q(2198) => [
+      q(Djimini Senoufo),
+      ],
+   q(2199) => [
+      q(Yanda Dom Dogon),
+      ],
+   q(2200) => [
+      q(Dyangadi),
+      ],
+   q(2201) => [
+      q(Jola-Fonyi),
+      ],
+   q(2202) => [
+      q(Dyaabugay),
+      ],
+   q(2203) => [
+      q(Tunzu),
+      ],
+   q(2204) => [
+      q(Daza),
+      ],
+   q(2205) => [
+      q(Dazaga),
+      ],
+   q(2206) => [
+      q(Dzalakha),
+      ],
+   q(2207) => [
+      q(Dzando),
+      ],
+   q(2208) => [
+      q(Ebughu),
+      ],
+   q(2209) => [
+      q(Eastern Bontok),
+      ],
+   q(2210) => [
+      q(Teke-Ebo),
+      ],
+   q(2211) => [
+      q(Ebrie),
+      ],
+   q(2212) => [
+      q(Embu),
+      q(Kiembu),
+      ],
+   q(2213) => [
+      q(Eteocretan),
+      ],
+   q(2214) => [
+      q(Ecuadorian Sign Language),
+      ],
+   q(2215) => [
+      q(Eteocypriot),
+      ],
+   q(2216) => [
+      q(E),
+      ],
+   q(2217) => [
+      q(Efai),
+      ],
+   q(2218) => [
+      q(Efe),
+      ],
+   q(2219) => [
+      q(Ega),
+      ],
+   q(2220) => [
+      q(Emilian),
+      ],
+   q(2221) => [
+      q(Eggon),
+      ],
+   q(2222) => [
+      q(Ehueun),
+      ],
+   q(2223) => [
+      q(Eipomek),
+      ],
+   q(2224) => [
+      q(Eitiep),
+      ],
+   q(2225) => [
+      q(Askopan),
+      ],
+   q(2226) => [
+      q(Ejamat),
+      ],
+   q(2227) => [
+      q(Ekit),
+      ],
+   q(2228) => [
+      q(Ekari),
+      ],
+   q(2229) => [
+      q(Eki),
+      ],
+   q(2230) => [
+      q(Standard Estonian),
+      ],
+   q(2231) => [
+      q(Kol (Bangladesh)),
+      q(Kol),
+      ],
+   q(2232) => [
+      q(Elip),
+      ],
+   q(2233) => [
+      q(Koti),
+      ],
+   q(2234) => [
+      q(Ekpeye),
+      ],
+   q(2235) => [
+      q(Yace),
+      ],
+   q(2236) => [
+      q(Eastern Kayah),
+      ],
+   q(2237) => [
+      q(Elepi),
+      ],
+   q(2238) => [
+      q(El Hugeirat),
+      ],
+   q(2239) => [
+      q(Nding),
+      ],
+   q(2240) => [
+      q(Elkei),
+      ],
+   q(2241) => [
+      q(Eleme),
+      ],
+   q(2242) => [
+      q(El Molo),
+      ],
+   q(2243) => [
+      q(Elu),
+      ],
+   q(2244) => [
+      q(Emai-Iuleha-Ora),
+      ],
+   q(2245) => [
+      q(Embaloh),
+      ],
+   q(2246) => [
+      q(Emerillon),
+      ],
+   q(2247) => [
+      q(Eastern Meohang),
+      ],
+   q(2248) => [
+      q(Mussau-Emira),
+      ],
+   q(2249) => [
+      q(Eastern Maninkakan),
+      ],
+   q(2250) => [
+      q(Mamulique),
+      ],
+   q(2251) => [
+      q(Eman),
+      ],
+   q(2252) => [
+      q(Emok),
+      ],
+   q(2253) => [
+      q(Northern Embera),
+      ],
+   q(2254) => [
+      q(Pacific Gulf Yupik),
+      ],
+   q(2255) => [
+      q(Eastern Muria),
+      ],
+   q(2256) => [
+      q(Emplawas),
+      ],
+   q(2257) => [
+      q(Erromintxela),
+      ],
+   q(2258) => [
+      q(Epigraphic Mayan),
+      ],
+   q(2259) => [
+      q(Apali),
+      ],
+   q(2260) => [
+      q(Markweeta),
+      ],
+   q(2261) => [
+      q(En),
+      ],
+   q(2262) => [
+      q(Ende),
+      ],
+   q(2263) => [
+      q(Forest Enets),
+      ],
+   q(2264) => [
+      q(Tundra Enets),
+      ],
+   q(2265) => [
+      q(Engenni),
+      ],
+   q(2266) => [
+      q(Enggano),
+      ],
+   q(2267) => [
+      q(Enga),
+      ],
+   q(2268) => [
+      q(Emumu),
+      q(Emem),
+      ],
+   q(2269) => [
+      q(Enu),
+      ],
+   q(2270) => [
+      q(Enwan (Edu State)),
+      ],
+   q(2271) => [
+      q(Enwan (Akwa Ibom State)),
+      ],
+   q(2272) => [
+      q(Beti (Cote d'Ivoire)),
+      ],
+   q(2273) => [
+      q(Epie),
+      ],
+   q(2274) => [
+      q(Eravallan),
+      ],
+   q(2275) => [
+      q(Sie),
+      ],
+   q(2276) => [
+      q(Eruwa),
+      ],
+   q(2277) => [
+      q(Ogea),
+      ],
+   q(2278) => [
+      q(South Efate),
+      ],
+   q(2279) => [
+      q(Horpa),
+      ],
+   q(2280) => [
+      q(Erre),
+      ],
+   q(2281) => [
+      q(Ersu),
+      ],
+   q(2282) => [
+      q(Eritai),
+      ],
+   q(2283) => [
+      q(Erokwanas),
+      ],
+   q(2284) => [
+      q(Ese Ejja),
+      ],
+   q(2285) => [
+      q(Eshtehardi),
+      ],
+   q(2286) => [
+      q(North Alaskan Inupiatun),
+      ],
+   q(2287) => [
+      q(Northwest Alaska Inupiatun),
+      ],
+   q(2288) => [
+      q(Egypt Sign Language),
+      ],
+   q(2289) => [
+      q(Esuma),
+      ],
+   q(2290) => [
+      q(Salvadoran Sign Language),
+      ],
+   q(2291) => [
+      q(Estonian Sign Language),
+      ],
+   q(2292) => [
+      q(Esselen),
+      ],
+   q(2293) => [
+      q(Central Siberian Yupik),
+      ],
+   q(2294) => [
+      q(Central Yupik),
+      ],
+   q(2295) => [
+      q(Etebi),
+      ],
+   q(2296) => [
+      q(Etchemin),
+      ],
+   q(2297) => [
+      q(Ethiopian Sign Language),
+      ],
+   q(2298) => [
+      q(Eton (Vanuatu)),
+      ],
+   q(2299) => [
+      q(Eton (Cameroon)),
+      ],
+   q(2300) => [
+      q(Edolo),
+      ],
+   q(2301) => [
+      q(Yekhee),
+      ],
+   q(2302) => [
+      q(Etruscan),
+      ],
+   q(2303) => [
+      q(Ejagham),
+      ],
+   q(2304) => [
+      q(Eten),
+      ],
+   q(2305) => [
+      q(Semimi),
+      ],
+   q(2306) => [
+      q(Even),
+      ],
+   q(2307) => [
+      q(Uvbie),
+      ],
+   q(2308) => [
+      q(Evenki),
+      ],
+   q(2309) => [
+      q(Extremaduran),
+      ],
+   q(2310) => [
+      q(Eyak),
+      ],
+   q(2311) => [
+      q(Keiyo),
+      ],
+   q(2312) => [
+      q(Uzekwe),
+      ],
+   q(2313) => [
+      q(Fasu),
+      ],
+   q(2314) => [
+      q(Fa D'ambu),
+      ],
+   q(2315) => [
+      q(Wagi),
+      ],
+   q(2316) => [
+      q(Fagani),
+      ],
+   q(2317) => [
+      q(Finongan),
+      ],
+   q(2318) => [
+      q(Baissa Fali),
+      ],
+   q(2319) => [
+      q(Faiwol),
+      ],
+   q(2320) => [
+      q(Faita),
+      ],
+   q(2321) => [
+      q(Fang (Cameroon)),
+      ],
+   q(2322) => [
+      q(South Fali),
+      ],
+   q(2323) => [
+      q(Fam),
+      ],
+   q(2324) => [
+      q(Palor),
+      ],
+   q(2325) => [
+      q(Fataleka),
+      ],
+   q(2326) => [
+      q(Fayu),
+      ],
+   q(2327) => [
+      q(Fala),
+      ],
+   q(2328) => [
+      q(Southwestern Fars),
+      ],
+   q(2329) => [
+      q(Northwestern Fars),
+      ],
+   q(2330) => [
+      q(West Albay Bikol),
+      ],
+   q(2331) => [
+      q(Quebec Sign Language),
+      ],
+   q(2332) => [
+      q(Feroge),
+      ],
+   q(2333) => [
+      q(Foia Foia),
+      ],
+   q(2334) => [
+      q(Maasina Fulfulde),
+      ],
+   q(2335) => [
+      q(Fongoro),
+      ],
+   q(2336) => [
+      q(Nobiin),
+      ],
+   q(2337) => [
+      q(Fyer),
+      ],
+   q(2338) => [
+      q(Fipa),
+      ],
+   q(2339) => [
+      q(Firan),
+      ],
+   q(2340) => [
+      q(Tornedalen Finnish),
+      ],
+   q(2341) => [
+      q(Fiwaga),
+      ],
+   q(2342) => [
+      q(Kirya-Konzel),
+      ],
+   q(2343) => [
+      q(Kven Finnish),
+      ],
+   q(2344) => [
+      q(Kalispel-Pend d'Oreille),
+      ],
+   q(2345) => [
+      q(Foau),
+      ],
+   q(2346) => [
+      q(Fali),
+      ],
+   q(2347) => [
+      q(North Fali),
+      ],
+   q(2348) => [
+      q(Flinders Island),
+      ],
+   q(2349) => [
+      q(Fuliiru),
+      ],
+   q(2350) => [
+      q(Tsotsitaal),
+      ],
+   q(2351) => [
+      q(Fe'fe'),
+      ],
+   q(2352) => [
+      q(Far Western Muria),
+      ],
+   q(2353) => [
+      q(Fanagalo),
+      ],
+   q(2354) => [
+      q(Fania),
+      ],
+   q(2355) => [
+      q(Foodo),
+      ],
+   q(2356) => [
+      q(Foi),
+      ],
+   q(2357) => [
+      q(Foma),
+      ],
+   q(2358) => [
+      q(Fore),
+      ],
+   q(2359) => [
+      q(Siraya),
+      ],
+   q(2360) => [
+      q(Fernando Po Creole English),
+      ],
+   q(2361) => [
+      q(Fas),
+      ],
+   q(2362) => [
+      q(Cajun French),
+      ],
+   q(2363) => [
+      q(Fordata),
+      ],
+   q(2364) => [
+      q(Frankish),
+      ],
+   q(2365) => [
+      q(Arpitan),
+      q(Francoprovencal),
+      ],
+   q(2366) => [
+      q(Forak),
+      ],
+   q(2367) => [
+      q(Fortsenal),
+      ],
+   q(2368) => [
+      q(Finnish Sign Language),
+      ],
+   q(2369) => [
+      q(French Sign Language),
+      ],
+   q(2370) => [
+      q(Finland-Swedish Sign Language),
+      q(finlandssvenskt teckensprak),
+      q(suomenruotsalainen viittomakieli),
+      ],
+   q(2371) => [
+      q(Adamawa Fulfulde),
+      ],
+   q(2372) => [
+      q(Pulaar),
+      ],
+   q(2373) => [
+      q(East Futuna),
+      ],
+   q(2374) => [
+      q(Borgu Fulfulde),
+      ],
+   q(2375) => [
+      q(Pular),
+      ],
+   q(2376) => [
+      q(Western Niger Fulfulde),
+      ],
+   q(2377) => [
+      q(Bagirmi Fulfulde),
+      ],
+   q(2378) => [
+      q(Ko),
+      ],
+   q(2379) => [
+      q(Fum),
+      ],
+   q(2380) => [
+      q(Fulnio),
+      ],
+   q(2381) => [
+      q(Central-Eastern Niger Fulfulde),
+      ],
+   q(2382) => [
+      q(Futuna-Aniwa),
+      ],
+   q(2383) => [
+      q(Furu),
+      ],
+   q(2384) => [
+      q(Nigerian Fulfulde),
+      ],
+   q(2385) => [
+      q(Fuyug),
+      ],
+   q(2386) => [
+      q(Fur),
+      ],
+   q(2387) => [
+      q(Fwai),
+      ],
+   q(2388) => [
+      q(Fwe),
+      ],
+   q(2389) => [
+      q(Gabri),
+      ],
+   q(2390) => [
+      q(Mixed Great Andamanese),
+      ],
+   q(2391) => [
+      q(Gaddang),
+      ],
+   q(2392) => [
+      q(Guarequena),
+      ],
+   q(2393) => [
+      q(Gende),
+      ],
+   q(2394) => [
+      q(Gagauz),
+      ],
+   q(2395) => [
+      q(Alekano),
+      ],
+   q(2396) => [
+      q(Borei),
+      ],
+   q(2397) => [
+      q(Gadsup),
+      ],
+   q(2398) => [
+      q(Gamkonora),
+      ],
+   q(2399) => [
+      q(Galoli),
+      ],
+   q(2400) => [
+      q(Kandawo),
+      ],
+   q(2401) => [
+      q(Gan Chinese),
+      ],
+   q(2402) => [
+      q(Gants),
+      ],
+   q(2403) => [
+      q(Gal),
+      ],
+   q(2404) => [
+      q(Gata'),
+      ],
+   q(2405) => [
+      q(Galeya),
+      ],
+   q(2406) => [
+      q(Adiwasi Garasia),
+      ],
+   q(2407) => [
+      q(Kenati),
+      ],
+   q(2408) => [
+      q(Mudhili Gadaba),
+      ],
+   q(2409) => [
+      q(Nobonob),
+      ],
+   q(2410) => [
+      q(Borana-Arsi-Guji Oromo),
+      ],
+   q(2411) => [
+      q(West Central Oromo),
+      ],
+   q(2412) => [
+      q(Kaytetye),
+      ],
+   q(2413) => [
+      q(Karadjeri),
+      ],
+   q(2414) => [
+      q(Niksek),
+      ],
+   q(2415) => [
+      q(Gaikundi),
+      ],
+   q(2416) => [
+      q(Gbanziri),
+      ],
+   q(2417) => [
+      q(Defi Gbe),
+      ],
+   q(2418) => [
+      q(Galela),
+      ],
+   q(2419) => [
+      q(Bodo Gadaba),
+      ],
+   q(2420) => [
+      q(Gaddi),
+      ],
+   q(2421) => [
+      q(Gamit),
+      ],
+   q(2422) => [
+      q(Garhwali),
+      ],
+   q(2423) => [
+      q(Mo'da),
+      ],
+   q(2424) => [
+      q(Northern Grebo),
+      ],
+   q(2425) => [
+      q(Gbaya-Bossangoa),
+      ],
+   q(2426) => [
+      q(Gbaya-Bozoum),
+      ],
+   q(2427) => [
+      q(Gbagyi),
+      ],
+   q(2428) => [
+      q(Gbesi Gbe),
+      ],
+   q(2429) => [
+      q(Gagadu),
+      ],
+   q(2430) => [
+      q(Gbanu),
+      ],
+   q(2431) => [
+      q(Eastern Xwla Gbe),
+      ],
+   q(2432) => [
+      q(Gbari),
+      ],
+   q(2433) => [
+      q(Zoroastrian Dari),
+      ],
+   q(2434) => [
+      q(Mali),
+      ],
+   q(2435) => [
+      q(Ganggalida),
+      ],
+   q(2436) => [
+      q(Galice),
+      ],
+   q(2437) => [
+      q(Guadeloupean Creole French),
+      ],
+   q(2438) => [
+      q(Grenadian Creole English),
+      ],
+   q(2439) => [
+      q(Gaina),
+      ],
+   q(2440) => [
+      q(Guianese Creole French),
+      ],
+   q(2441) => [
+      q(Colonia Tovar German),
+      ],
+   q(2442) => [
+      q(Gade Lohar),
+      ],
+   q(2443) => [
+      q(Pottangi Ollar Gadaba),
+      ],
+   q(2444) => [
+      q(Gugu Badhun),
+      ],
+   q(2445) => [
+      q(Gedaged),
+      ],
+   q(2446) => [
+      q(Gude),
+      ],
+   q(2447) => [
+      q(Guduf-Gava),
+      ],
+   q(2448) => [
+      q(Ga'dang),
+      ],
+   q(2449) => [
+      q(Gadjerawang),
+      ],
+   q(2450) => [
+      q(Gundi),
+      ],
+   q(2451) => [
+      q(Gurdjar),
+      ],
+   q(2452) => [
+      q(Gadang),
+      ],
+   q(2453) => [
+      q(Dirasha),
+      ],
+   q(2454) => [
+      q(Laal),
+      ],
+   q(2455) => [
+      q(Umanakaina),
+      ],
+   q(2456) => [
+      q(Ghodoberi),
+      ],
+   q(2457) => [
+      q(Mehri),
+      ],
+   q(2458) => [
+      q(Wipi),
+      ],
+   q(2459) => [
+      q(Ghandruk Sign Language),
+      ],
+   q(2460) => [
+      q(Gudu),
+      ],
+   q(2461) => [
+      q(Godwari),
+      ],
+   q(2462) => [
+      q(Geruma),
+      ],
+   q(2463) => [
+      q(Kire),
+      ],
+   q(2464) => [
+      q(Gboloo Grebo),
+      ],
+   q(2465) => [
+      q(Gade),
+      ],
+   q(2466) => [
+      q(Gengle),
+      ],
+   q(2467) => [
+      q(Hutterite German),
+      q(Hutterisch),
+      ],
+   q(2468) => [
+      q(Gebe),
+      ],
+   q(2469) => [
+      q(Gen),
+      ],
+   q(2470) => [
+      q(Yiwom),
+      ],
+   q(2471) => [
+      q(ut-Ma'in),
+      ],
+   q(2472) => [
+      q(Geme),
+      ],
+   q(2473) => [
+      q(Geser-Gorom),
+      ],
+   q(2474) => [
+      q(Gera),
+      ],
+   q(2475) => [
+      q(Garre),
+      ],
+   q(2476) => [
+      q(Enya),
+      ],
+   q(2477) => [
+      q(Patpatar),
+      ],
+   q(2478) => [
+      q(Gafat),
+      ],
+   q(2479) => [
+      q(Mangetti Dune !Xung),
+      ],
+   q(2480) => [
+      q(Gao),
+      ],
+   q(2481) => [
+      q(Gbii),
+      ],
+   q(2482) => [
+      q(Gugadj),
+      ],
+   q(2483) => [
+      q(Guragone),
+      ],
+   q(2484) => [
+      q(Gurgula),
+      ],
+   q(2485) => [
+      q(Kungarakany),
+      ],
+   q(2486) => [
+      q(Ganglau),
+      ],
+   q(2487) => [
+      q(Eastern Gurung),
+      ],
+   q(2488) => [
+      q(Southern Gondi),
+      ],
+   q(2489) => [
+      q(Aghu Tharnggalu),
+      ],
+   q(2490) => [
+      q(Gitua),
+      ],
+   q(2491) => [
+      q(Gagu),
+      ],
+   q(2492) => [
+      q(Gogodala),
+      ],
+   q(2493) => [
+      q(Ghadames),
+      ],
+   q(2494) => [
+      q(Hiberno-Scottish Gaelic),
+      ],
+   q(2495) => [
+      q(Southern Ghale),
+      ],
+   q(2496) => [
+      q(Northern Ghale),
+      ],
+   q(2497) => [
+      q(Geko Karen),
+      ],
+   q(2498) => [
+      q(Ghulfan),
+      ],
+   q(2499) => [
+      q(Ghanongga),
+      ],
+   q(2500) => [
+      q(Ghomara),
+      ],
+   q(2501) => [
+      q(Ghera),
+      ],
+   q(2502) => [
+      q(Guhu-Samane),
+      ],
+   q(2503) => [
+      q(Kuke),
+      q(Kutang Ghale),
+      ],
+   q(2504) => [
+      q(Kitja),
+      ],
+   q(2505) => [
+      q(Gibanawa),
+      ],
+   q(2506) => [
+      q(Gail),
+      ],
+   q(2507) => [
+      q(Gidar),
+      ],
+   q(2508) => [
+      q(Goaria),
+      ],
+   q(2509) => [
+      q(Gimi (Eastern Highlands)),
+      ],
+   q(2510) => [
+      q(Hinukh),
+      ],
+   q(2511) => [
+      q(Gimi (West New Britain)),
+      ],
+   q(2512) => [
+      q(Green Gelao),
+      ],
+   q(2513) => [
+      q(Red Gelao),
+      ],
+   q(2514) => [
+      q(North Giziga),
+      ],
+   q(2515) => [
+      q(Gitxsan),
+      ],
+   q(2516) => [
+      q(Mulao),
+      ],
+   q(2517) => [
+      q(White Gelao),
+      ],
+   q(2518) => [
+      q(Gilima),
+      ],
+   q(2519) => [
+      q(Giyug),
+      ],
+   q(2520) => [
+      q(South Giziga),
+      ],
+   q(2521) => [
+      q(Geji),
+      ],
+   q(2522) => [
+      q(Kachi Koli),
+      ],
+   q(2523) => [
+      q(Gonja),
+      ],
+   q(2524) => [
+      q(Gujari),
+      ],
+   q(2525) => [
+      q(Guya),
+      ],
+   q(2526) => [
+      q(Ndai),
+      ],
+   q(2527) => [
+      q(Gokana),
+      ],
+   q(2528) => [
+      q(Kok-Nar),
+      ],
+   q(2529) => [
+      q(Guinea Kpelle),
+      ],
+   q(2530) => [
+      q(Bon Gula),
+      ],
+   q(2531) => [
+      q(Nanai),
+      ],
+   q(2532) => [
+      q(Northwest Pashayi),
+      ],
+   q(2533) => [
+      q(Guliguli),
+      ],
+   q(2534) => [
+      q(Gula Iro),
+      ],
+   q(2535) => [
+      q(Gilaki),
+      ],
+   q(2536) => [
+      q(Galambu),
+      ],
+   q(2537) => [
+      q(Glaro-Twabo),
+      ],
+   q(2538) => [
+      q(Gula (Chad)),
+      ],
+   q(2539) => [
+      q(Glavda),
+      ],
+   q(2540) => [
+      q(Gule),
+      ],
+   q(2541) => [
+      q(Gambera),
+      ],
+   q(2542) => [
+      q(Gula'alaa),
+      ],
+   q(2543) => [
+      q(Maghdi),
+      ],
+   q(2544) => [
+      q(Middle Low German),
+      ],
+   q(2545) => [
+      q(Gbaya-Mbodomo),
+      ],
+   q(2546) => [
+      q(Gimnime),
+      ],
+   q(2547) => [
+      q(Gumalu),
+      ],
+   q(2548) => [
+      q(Gamo),
+      ],
+   q(2549) => [
+      q(Magoma),
+      ],
+   q(2550) => [
+      q(Mycenaean Greek),
+      ],
+   q(2551) => [
+      q(Kaansa),
+      ],
+   q(2552) => [
+      q(Gangte),
+      ],
+   q(2553) => [
+      q(Guanche),
+      ],
+   q(2554) => [
+      q(Zulgo-Gemzek),
+      ],
+   q(2555) => [
+      q(Ganang),
+      ],
+   q(2556) => [
+      q(Ngangam),
+      ],
+   q(2557) => [
+      q(Lere),
+      ],
+   q(2558) => [
+      q(Gooniyandi),
+      ],
+   q(2559) => [
+      q(//Gana),
+      ],
+   q(2560) => [
+      q(Gangulu),
+      ],
+   q(2561) => [
+      q(Ginuman),
+      ],
+   q(2562) => [
+      q(Gumatj),
+      ],
+   q(2563) => [
+      q(Northern Gondi),
+      ],
+   q(2564) => [
+      q(Gana),
+      ],
+   q(2565) => [
+      q(Gureng Gureng),
+      ],
+   q(2566) => [
+      q(Guntai),
+      ],
+   q(2567) => [
+      q(Gnau),
+      ],
+   q(2568) => [
+      q(Western Bolivian Guarani),
+      ],
+   q(2569) => [
+      q(Ganzi),
+      ],
+   q(2570) => [
+      q(Guro),
+      ],
+   q(2571) => [
+      q(Playero),
+      ],
+   q(2572) => [
+      q(Gorakor),
+      ],
+   q(2573) => [
+      q(Godie),
+      ],
+   q(2574) => [
+      q(Gongduk),
+      ],
+   q(2575) => [
+      q(Gofa),
+      ],
+   q(2576) => [
+      q(Gogo),
+      ],
+   q(2577) => [
+      q(Gobasi),
+      ],
+   q(2578) => [
+      q(Gowlan),
+      ],
+   q(2579) => [
+      q(Gowli),
+      ],
+   q(2580) => [
+      q(Gola),
+      ],
+   q(2581) => [
+      q(Goan Konkani),
+      ],
+   q(2582) => [
+      q(Gone Dau),
+      ],
+   q(2583) => [
+      q(Yeretuar),
+      ],
+   q(2584) => [
+      q(Gorap),
+      ],
+   q(2585) => [
+      q(Gronings),
+      ],
+   q(2586) => [
+      q(Gavar),
+      ],
+   q(2587) => [
+      q(Gorowa),
+      ],
+   q(2588) => [
+      q(Gobu),
+      ],
+   q(2589) => [
+      q(Goundo),
+      ],
+   q(2590) => [
+      q(Gozarkhani),
+      ],
+   q(2591) => [
+      q(Gupa-Abawa),
+      ],
+   q(2592) => [
+      q(Ghanaian Pidgin English),
+      ],
+   q(2593) => [
+      q(Taiap),
+      ],
+   q(2594) => [
+      q(Ga'anda),
+      ],
+   q(2595) => [
+      q(Guiqiong),
+      ],
+   q(2596) => [
+      q(Guana (Brazil)),
+      ],
+   q(2597) => [
+      q(Gor),
+      ],
+   q(2598) => [
+      q(Qau),
+      ],
+   q(2599) => [
+      q(Rajput Garasia),
+      ],
+   q(2600) => [
+      q(Guruntum-Mbaaru),
+      ],
+   q(2601) => [
+      q(Madi),
+      ],
+   q(2602) => [
+      q(Gbiri-Niragu),
+      ],
+   q(2603) => [
+      q(Ghari),
+      ],
+   q(2604) => [
+      q(Southern Grebo),
+      ],
+   q(2605) => [
+      q(Kota Marudu Talantang),
+      ],
+   q(2606) => [
+      q(Groma),
+      ],
+   q(2607) => [
+      q(Gorovu),
+      ],
+   q(2608) => [
+      q(Taznatit),
+      ],
+   q(2609) => [
+      q(Gresi),
+      ],
+   q(2610) => [
+      q(Garo),
+      ],
+   q(2611) => [
+      q(Kistane),
+      ],
+   q(2612) => [
+      q(Central Grebo),
+      ],
+   q(2613) => [
+      q(Gweda),
+      ],
+   q(2614) => [
+      q(Guriaso),
+      ],
+   q(2615) => [
+      q(Barclayville Grebo),
+      ],
+   q(2616) => [
+      q(Guramalum),
+      ],
+   q(2617) => [
+      q(Ghanaian Sign Language),
+      ],
+   q(2618) => [
+      q(German Sign Language),
+      ],
+   q(2619) => [
+      q(Gusilay),
+      ],
+   q(2620) => [
+      q(Guatemalan Sign Language),
+      ],
+   q(2621) => [
+      q(Gusan),
+      ],
+   q(2622) => [
+      q(Southwest Gbaya),
+      ],
+   q(2623) => [
+      q(Wasembo),
+      ],
+   q(2624) => [
+      q(Greek Sign Language),
+      ],
+   q(2625) => [
+      q(Guato),
+      ],
+   q(2626) => [
+      q(Gbati-ri),
+      ],
+   q(2627) => [
+      q(Shiki),
+      ],
+   q(2628) => [
+      q(Guajajara),
+      ],
+   q(2629) => [
+      q(Wayuu),
+      ],
+   q(2630) => [
+      q(Yocoboue Dida),
+      ],
+   q(2631) => [
+      q(Gurinji),
+      ],
+   q(2632) => [
+      q(Gupapuyngu),
+      ],
+   q(2633) => [
+      q(Paraguayan Guarani),
+      ],
+   q(2634) => [
+      q(Guahibo),
+      ],
+   q(2635) => [
+      q(Eastern Bolivian Guarani),
+      ],
+   q(2636) => [
+      q(Gumuz),
+      ],
+   q(2637) => [
+      q(Sea Island Creole English),
+      ],
+   q(2638) => [
+      q(Guambiano),
+      ],
+   q(2639) => [
+      q(Mbya Guarani),
+      ],
+   q(2640) => [
+      q(Guayabero),
+      ],
+   q(2641) => [
+      q(Gunwinggu),
+      ],
+   q(2642) => [
+      q(Ache),
+      ],
+   q(2643) => [
+      q(Farefare),
+      ],
+   q(2644) => [
+      q(Guinean Sign Language),
+      ],
+   q(2645) => [
+      q(Maleku Jaika),
+      ],
+   q(2646) => [
+      q(Yanomamo),
+      ],
+   q(2647) => [
+      q(Gey),
+      ],
+   q(2648) => [
+      q(Gun),
+      ],
+   q(2649) => [
+      q(Gourmanchema),
+      ],
+   q(2650) => [
+      q(Gusii),
+      q(Ekegusii),
+      ],
+   q(2651) => [
+      q(Guana (Paraguay)),
+      ],
+   q(2652) => [
+      q(Guanano),
+      ],
+   q(2653) => [
+      q(Duwet),
+      ],
+   q(2654) => [
+      q(Golin),
+      ],
+   q(2655) => [
+      q(Guaja),
+      ],
+   q(2656) => [
+      q(Gulay),
+      ],
+   q(2657) => [
+      q(Gurmana),
+      ],
+   q(2658) => [
+      q(Kuku-Yalanji),
+      ],
+   q(2659) => [
+      q(Gaviao Do Jiparana),
+      ],
+   q(2660) => [
+      q(Para Gaviao),
+      ],
+   q(2661) => [
+      q(Western Gurung),
+      ],
+   q(2662) => [
+      q(Gumawana),
+      ],
+   q(2663) => [
+      q(Guyani),
+      ],
+   q(2664) => [
+      q(Mbato),
+      ],
+   q(2665) => [
+      q(Gwa),
+      ],
+   q(2666) => [
+      q(Kalami),
+      ],
+   q(2667) => [
+      q(Gawwada),
+      ],
+   q(2668) => [
+      q(Gweno),
+      ],
+   q(2669) => [
+      q(Gowro),
+      ],
+   q(2670) => [
+      q(Moo),
+      ],
+   q(2671) => [
+      q(/Gwi),
+      ],
+   q(2672) => [
+      q(Awngthim),
+      ],
+   q(2673) => [
+      q(Gwandara),
+      ],
+   q(2674) => [
+      q(Gwere),
+      ],
+   q(2675) => [
+      q(Gawar-Bati),
+      ],
+   q(2676) => [
+      q(Guwamu),
+      ],
+   q(2677) => [
+      q(Kwini),
+      ],
+   q(2678) => [
+      q(Gua),
+      ],
+   q(2679) => [
+      q(We Southern),
+      ],
+   q(2680) => [
+      q(Northwest Gbaya),
+      ],
+   q(2681) => [
+      q(Garus),
+      ],
+   q(2682) => [
+      q(Kayardild),
+      ],
+   q(2683) => [
+      q(Gyem),
+      ],
+   q(2684) => [
+      q(Gungabula),
+      ],
+   q(2685) => [
+      q(Gbayi),
+      ],
+   q(2686) => [
+      q(Gyele),
+      ],
+   q(2687) => [
+      q(Gayil),
+      ],
+   q(2688) => [
+      q(Ngabere),
+      ],
+   q(2689) => [
+      q(Guyanese Creole English),
+      ],
+   q(2690) => [
+      q(Guarayu),
+      ],
+   q(2691) => [
+      q(Gunya),
+      ],
+   q(2692) => [
+      q(Ganza),
+      ],
+   q(2693) => [
+      q(Gazi),
+      ],
+   q(2694) => [
+      q(Gane),
+      ],
+   q(2695) => [
+      q(Han),
+      ],
+   q(2696) => [
+      q(Hanoi Sign Language),
+      ],
+   q(2697) => [
+      q(Gurani),
+      ],
+   q(2698) => [
+      q(Hatam),
+      ],
+   q(2699) => [
+      q(Eastern Oromo),
+      ],
+   q(2700) => [
+      q(Haiphong Sign Language),
+      ],
+   q(2701) => [
+      q(Hanga),
+      ],
+   q(2702) => [
+      q(Hahon),
+      ],
+   q(2703) => [
+      q(Hajong),
+      ],
+   q(2704) => [
+      q(Hakka Chinese),
+      ],
+   q(2705) => [
+      q(Halang),
+      ],
+   q(2706) => [
+      q(Hewa),
+      ],
+   q(2707) => [
+      q(Hangaza),
+      ],
+   q(2708) => [
+      q(Hako),
+      ],
+   q(2709) => [
+      q(Hupla),
+      ],
+   q(2710) => [
+      q(Ha),
+      ],
+   q(2711) => [
+      q(Harari),
+      ],
+   q(2712) => [
+      q(Haisla),
+      ],
+   q(2713) => [
+      q(Havu),
+      ],
+   q(2714) => [
+      q(Southern Haida),
+      ],
+   q(2715) => [
+      q(Haya),
+      ],
+   q(2716) => [
+      q(Hazaragi),
+      ],
+   q(2717) => [
+      q(Hamba),
+      ],
+   q(2718) => [
+      q(Huba),
+      ],
+   q(2719) => [
+      q(Heiban),
+      ],
+   q(2720) => [
+      q(Ancient Hebrew),
+      ],
+   q(2721) => [
+      q(Habu),
+      ],
+   q(2722) => [
+      q(Andaman Creole Hindi),
+      ],
+   q(2723) => [
+      q(Huichol),
+      ],
+   q(2724) => [
+      q(Northern Haida),
+      ],
+   q(2725) => [
+      q(Honduras Sign Language),
+      ],
+   q(2726) => [
+      q(Hadiyya),
+      ],
+   q(2727) => [
+      q(Northern Qiandong Miao),
+      ],
+   q(2728) => [
+      q(Herde),
+      ],
+   q(2729) => [
+      q(Helong),
+      ],
+   q(2730) => [
+      q(Hehe),
+      ],
+   q(2731) => [
+      q(Heiltsuk),
+      ],
+   q(2732) => [
+      q(Hemba),
+      ],
+   q(2733) => [
+      q(Hai//om),
+      ],
+   q(2734) => [
+      q(Haigwai),
+      ],
+   q(2735) => [
+      q(Hoia Hoia),
+      ],
+   q(2736) => [
+      q(Kerak),
+      ],
+   q(2737) => [
+      q(Hoyahoya),
+      ],
+   q(2738) => [
+      q(Lamang),
+      ],
+   q(2739) => [
+      q(Hibito),
+      ],
+   q(2740) => [
+      q(Hidatsa),
+      ],
+   q(2741) => [
+      q(Fiji Hindi),
+      ],
+   q(2742) => [
+      q(Kamwe),
+      ],
+   q(2743) => [
+      q(Pamosu),
+      ],
+   q(2744) => [
+      q(Hinduri),
+      ],
+   q(2745) => [
+      q(Hijuk),
+      ],
+   q(2746) => [
+      q(Seit-Kaitetu),
+      ],
+   q(2747) => [
+      q(Tsoa),
+      ],
+   q(2748) => [
+      q(Himarima),
+      ],
+   q(2749) => [
+      q(Hiw),
+      ],
+   q(2750) => [
+      q(Hixkaryana),
+      ],
+   q(2751) => [
+      q(Haji),
+      ],
+   q(2752) => [
+      q(Kahe),
+      ],
+   q(2753) => [
+      q(Hunde),
+      ],
+   q(2754) => [
+      q(Hunjara-Kaina Ke),
+      ],
+   q(2755) => [
+      q(Hong Kong Sign Language),
+      q(Heung Kong Sau Yue),
+      ],
+   q(2756) => [
+      q(Halia),
+      ],
+   q(2757) => [
+      q(Halbi),
+      ],
+   q(2758) => [
+      q(Halang Doan),
+      ],
+   q(2759) => [
+      q(Hlersu),
+      ],
+   q(2760) => [
+      q(Matu Chin),
+      ],
+   q(2761) => [
+      q(Hieroglyphic Luwian),
+      ],
+   q(2762) => [
+      q(Southern Mashan Hmong),
+      q(Southern Mashan Miao),
+      ],
+   q(2763) => [
+      q(Humburi Senni Songhay),
+      ],
+   q(2764) => [
+      q(Central Huishui Hmong),
+      q(Central Huishui Miao),
+      ],
+   q(2765) => [
+      q(Large Flowery Miao),
+      q(A-hmaos),
+      q(Da-Hua Miao),
+      ],
+   q(2766) => [
+      q(Eastern Huishui Hmong),
+      q(Eastern Huishui Miao),
+      ],
+   q(2767) => [
+      q(Hmong Don),
+      ],
+   q(2768) => [
+      q(Southwestern Guiyang Hmong),
+      ],
+   q(2769) => [
+      q(Southwestern Huishui Hmong),
+      q(Southwestern Huishui Miao),
+      ],
+   q(2770) => [
+      q(Northern Huishui Hmong),
+      q(Northern Huishui Miao),
+      ],
+   q(2771) => [
+      q(Ge),
+      q(Gejia),
+      ],
+   q(2772) => [
+      q(Maek),
+      ],
+   q(2773) => [
+      q(Luopohe Hmong),
+      q(Luopohe Miao),
+      ],
+   q(2774) => [
+      q(Central Mashan Hmong),
+      q(Central Mashan Miao),
+      ],
+   q(2775) => [
+      q(Northern Mashan Hmong),
+      q(Northern Mashan Miao),
+      ],
+   q(2776) => [
+      q(Eastern Qiandong Miao),
+      ],
+   q(2777) => [
+      q(Hmar),
+      ],
+   q(2778) => [
+      q(Southern Qiandong Miao),
+      ],
+   q(2779) => [
+      q(Hamtai),
+      ],
+   q(2780) => [
+      q(Hamap),
+      ],
+   q(2781) => [
+      q(Hmong Do),
+      ],
+   q(2782) => [
+      q(Western Mashan Hmong),
+      q(Western Mashan Miao),
+      ],
+   q(2783) => [
+      q(Southern Guiyang Hmong),
+      q(Southern Guiyang Miao),
+      ],
+   q(2784) => [
+      q(Hmong Shua),
+      q(Sinicized Miao),
+      ],
+   q(2785) => [
+      q(Mina (Cameroon)),
+      ],
+   q(2786) => [
+      q(Southern Hindko),
+      ],
+   q(2787) => [
+      q(Chhattisgarhi),
+      ],
+   q(2788) => [
+      q(//Ani),
+      ],
+   q(2789) => [
+      q(Hani),
+      ],
+   q(2790) => [
+      q(Hmong Njua),
+      q(Mong Leng),
+      q(Mong Njua),
+      ],
+   q(2791) => [
+      q(Hanunoo),
+      ],
+   q(2792) => [
+      q(Northern Hindko),
+      ],
+   q(2793) => [
+      q(Caribbean Hindustani),
+      ],
+   q(2794) => [
+      q(Hung),
+      ],
+   q(2795) => [
+      q(Hoava),
+      ],
+   q(2796) => [
+      q(Mari (Madang Province)),
+      ],
+   q(2797) => [
+      q(Ho),
+      ],
+   q(2798) => [
+      q(Holma),
+      ],
+   q(2799) => [
+      q(Horom),
+      ],
+   q(2800) => [
+      q(Hobyot),
+      ],
+   q(2801) => [
+      q(Holikachuk),
+      ],
+   q(2802) => [
+      q(Hadothi),
+      q(Haroti),
+      ],
+   q(2803) => [
+      q(Holu),
+      ],
+   q(2804) => [
+      q(Homa),
+      ],
+   q(2805) => [
+      q(Holoholo),
+      ],
+   q(2806) => [
+      q(Hopi),
+      ],
+   q(2807) => [
+      q(Horo),
+      ],
+   q(2808) => [
+      q(Ho Chi Minh City Sign Language),
+      ],
+   q(2809) => [
+      q(Hote),
+      q(Male),
+      ],
+   q(2810) => [
+      q(Hovongan),
+      ],
+   q(2811) => [
+      q(Honi),
+      ],
+   q(2812) => [
+      q(Holiya),
+      ],
+   q(2813) => [
+      q(Hozo),
+      ],
+   q(2814) => [
+      q(Hpon),
+      ],
+   q(2815) => [
+      q(Hawai'i Pidgin Sign Language),
+      ],
+   q(2816) => [
+      q(Hrangkhol),
+      ],
+   q(2817) => [
+      q(Hre),
+      ],
+   q(2818) => [
+      q(Haruku),
+      ],
+   q(2819) => [
+      q(Horned Miao),
+      ],
+   q(2820) => [
+      q(Haroi),
+      ],
+   q(2821) => [
+      q(Hertevin),
+      ],
+   q(2822) => [
+      q(Hruso),
+      ],
+   q(2823) => [
+      q(Hunsrik),
+      ],
+   q(2824) => [
+      q(Harzani),
+      ],
+   q(2825) => [
+      q(Hungarian Sign Language),
+      ],
+   q(2826) => [
+      q(Hausa Sign Language),
+      ],
+   q(2827) => [
+      q(Xiang Chinese),
+      ],
+   q(2828) => [
+      q(Harsusi),
+      ],
+   q(2829) => [
+      q(Hoti),
+      ],
+   q(2830) => [
+      q(Minica Huitoto),
+      ],
+   q(2831) => [
+      q(Hadza),
+      ],
+   q(2832) => [
+      q(Hitu),
+      ],
+   q(2833) => [
+      q(Middle Hittite),
+      ],
+   q(2834) => [
+      q(Huambisa),
+      ],
+   q(2835) => [
+      q(=/Hua),
+      ],
+   q(2836) => [
+      q(Huaulu),
+      ],
+   q(2837) => [
+      q(San Francisco Del Mar Huave),
+      ],
+   q(2838) => [
+      q(Humene),
+      ],
+   q(2839) => [
+      q(Huachipaeri),
+      ],
+   q(2840) => [
+      q(Huilliche),
+      ],
+   q(2841) => [
+      q(Huli),
+      ],
+   q(2842) => [
+      q(Northern Guiyang Hmong),
+      q(Northern Guiyang Miao),
+      ],
+   q(2843) => [
+      q(Hulung),
+      ],
+   q(2844) => [
+      q(Hula),
+      ],
+   q(2845) => [
+      q(Hungana),
+      ],
+   q(2846) => [
+      q(Hu),
+      ],
+   q(2847) => [
+      q(Tsat),
+      ],
+   q(2848) => [
+      q(Halkomelem),
+      ],
+   q(2849) => [
+      q(Huastec),
+      ],
+   q(2850) => [
+      q(Humla),
+      ],
+   q(2851) => [
+      q(Murui Huitoto),
+      ],
+   q(2852) => [
+      q(San Mateo Del Mar Huave),
+      ],
+   q(2853) => [
+      q(Hukumina),
+      ],
+   q(2854) => [
+      q(Nupode Huitoto),
+      ],
+   q(2855) => [
+      q(Hulaula),
+      ],
+   q(2856) => [
+      q(Hunzib),
+      ],
+   q(2857) => [
+      q(Haitian Vodoun Culture Language),
+      ],
+   q(2858) => [
+      q(San Dionisio Del Mar Huave),
+      ],
+   q(2859) => [
+      q(Haveke),
+      ],
+   q(2860) => [
+      q(Sabu),
+      ],
+   q(2861) => [
+      q(Santa Maria Del Mar Huave),
+      ],
+   q(2862) => [
+      q(Wane),
+      ],
+   q(2863) => [
+      q(Hawai'i Creole English),
+      ],
+   q(2864) => [
+      q(Hwana),
+      ],
+   q(2865) => [
+      q(Hya),
+      ],
+   q(2866) => [
+      q(Iaai),
+      ],
+   q(2867) => [
+      q(Iatmul),
+      ],
+   q(2868) => [
+      q(Iapama),
+      ],
+   q(2869) => [
+      q(Purari),
+      ],
+   q(2870) => [
+      q(Ibibio),
+      ],
+   q(2871) => [
+      q(Iwaidja),
+      ],
+   q(2872) => [
+      q(Akpes),
+      ],
+   q(2873) => [
+      q(Ibanag),
+      ],
+   q(2874) => [
+      q(Ibaloi),
+      ],
+   q(2875) => [
+      q(Agoi),
+      ],
+   q(2876) => [
+      q(Ibino),
+      ],
+   q(2877) => [
+      q(Ibuoro),
+      ],
+   q(2878) => [
+      q(Ibu),
+      ],
+   q(2879) => [
+      q(Ibani),
+      ],
+   q(2880) => [
+      q(Ede Ica),
+      ],
+   q(2881) => [
+      q(Etkywan),
+      ],
+   q(2882) => [
+      q(Icelandic Sign Language),
+      ],
+   q(2883) => [
+      q(Islander Creole English),
+      ],
+   q(2884) => [
+      q(Idakho-Isukha-Tiriki),
+      q(Luidakho-Luisukha-Lutirichi),
+      ],
+   q(2885) => [
+      q(Indo-Portuguese),
+      ],
+   q(2886) => [
+      q(Idon),
+      ],
+   q(2887) => [
+      q(Ede Idaca),
+      ],
+   q(2888) => [
+      q(Idere),
+      ],
+   q(2889) => [
+      q(Idi),
+      ],
+   q(2890) => [
+      q(Indri),
+      ],
+   q(2891) => [
+      q(Idesa),
+      ],
+   q(2892) => [
+      q(Idate),
+      ],
+   q(2893) => [
+      q(Idoma),
+      ],
+   q(2894) => [
+      q(Amganad Ifugao),
+      ],
+   q(2895) => [
+      q(Batad Ifugao),
+      q(Ayangan Ifugao),
+      ],
+   q(2896) => [
+      q(Ife),
+      ],
+   q(2897) => [
+      q(Ifo),
+      ],
+   q(2898) => [
+      q(Tuwali Ifugao),
+      ],
+   q(2899) => [
+      q(Teke-Fuumu),
+      ],
+   q(2900) => [
+      q(Mayoyao Ifugao),
+      ],
+   q(2901) => [
+      q(Keley-I Kallahan),
+      ],
+   q(2902) => [
+      q(Ebira),
+      ],
+   q(2903) => [
+      q(Igede),
+      ],
+   q(2904) => [
+      q(Igana),
+      ],
+   q(2905) => [
+      q(Igala),
+      ],
+   q(2906) => [
+      q(Kanggape),
+      ],
+   q(2907) => [
+      q(Ignaciano),
+      ],
+   q(2908) => [
+      q(Isebe),
+      ],
+   q(2909) => [
+      q(Interglossa),
+      ],
+   q(2910) => [
+      q(Igwe),
+      ],
+   q(2911) => [
+      q(Iha Based Pidgin),
+      ],
+   q(2912) => [
+      q(Ihievbe),
+      ],
+   q(2913) => [
+      q(Iha),
+      ],
+   q(2914) => [
+      q(Bidhawal),
+      ],
+   q(2915) => [
+      q(Izon),
+      ],
+   q(2916) => [
+      q(Biseni),
+      ],
+   q(2917) => [
+      q(Ede Ije),
+      ],
+   q(2918) => [
+      q(Kalabari),
+      ],
+   q(2919) => [
+      q(Southeast Ijo),
+      ],
+   q(2920) => [
+      q(Eastern Canadian Inuktitut),
+      ],
+   q(2921) => [
+      q(Iko),
+      ],
+   q(2922) => [
+      q(Ika),
+      ],
+   q(2923) => [
+      q(Ikulu),
+      ],
+   q(2924) => [
+      q(Olulumo-Ikom),
+      ],
+   q(2925) => [
+      q(Ikpeshi),
+      ],
+   q(2926) => [
+      q(Inuinnaqtun),
+      q(Western Canadian Inuktitut),
+      ],
+   q(2927) => [
+      q(Iku-Gora-Ankwa),
+      ],
+   q(2928) => [
+      q(Ikwere),
+      ],
+   q(2929) => [
+      q(Ik),
+      ],
+   q(2930) => [
+      q(Ikizu),
+      ],
+   q(2931) => [
+      q(Ile Ape),
+      ],
+   q(2932) => [
+      q(Ila),
+      ],
+   q(2933) => [
+      q(Garig-Ilgar),
+      ],
+   q(2934) => [
+      q(Ili Turki),
+      ],
+   q(2935) => [
+      q(Ilongot),
+      ],
+   q(2936) => [
+      q(Iranun),
+      ],
+   q(2937) => [
+      q(International Sign),
+      ],
+   q(2938) => [
+      q(Ili'uun),
+      ],
+   q(2939) => [
+      q(Ilue),
+      ],
+   q(2940) => [
+      q(Talur),
+      ],
+   q(2941) => [
+      q(Mala Malasar),
+      ],
+   q(2942) => [
+      q(Imeraguen),
+      ],
+   q(2943) => [
+      q(Anamgura),
+      ],
+   q(2944) => [
+      q(Miluk),
+      ],
+   q(2945) => [
+      q(Imonda),
+      ],
+   q(2946) => [
+      q(Imbongu),
+      ],
+   q(2947) => [
+      q(Imroing),
+      ],
+   q(2948) => [
+      q(Marsian),
+      ],
+   q(2949) => [
+      q(Milyan),
+      ],
+   q(2950) => [
+      q(Inga),
+      ],
+   q(2951) => [
+      q(Degexit'an),
+      ],
+   q(2952) => [
+      q(Jungle Inga),
+      ],
+   q(2953) => [
+      q(Indonesian Sign Language),
+      ],
+   q(2954) => [
+      q(Minaean),
+      ],
+   q(2955) => [
+      q(Isinai),
+      ],
+   q(2956) => [
+      q(Inoke-Yate),
+      ],
+   q(2957) => [
+      q(Inapari),
+      ],
+   q(2958) => [
+      q(Indian Sign Language),
+      ],
+   q(2959) => [
+      q(Intha),
+      ],
+   q(2960) => [
+      q(Ineseno),
+      ],
+   q(2961) => [
+      q(Inor),
+      ],
+   q(2962) => [
+      q(Tuma-Irumu),
+      ],
+   q(2963) => [
+      q(Iowa-Oto),
+      ],
+   q(2964) => [
+      q(Ipili),
+      ],
+   q(2965) => [
+      q(Ipiko),
+      ],
+   q(2966) => [
+      q(Iquito),
+      ],
+   q(2967) => [
+      q(Iresim),
+      ],
+   q(2968) => [
+      q(Irarutu),
+      ],
+   q(2969) => [
+      q(Irigwe),
+      ],
+   q(2970) => [
+      q(Iraqw),
+      ],
+   q(2971) => [
+      q(Irantxe),
+      ],
+   q(2972) => [
+      q(Ir),
+      ],
+   q(2973) => [
+      q(Irula),
+      ],
+   q(2974) => [
+      q(Kamberau),
+      ],
+   q(2975) => [
+      q(Iraya),
+      ],
+   q(2976) => [
+      q(Isabi),
+      ],
+   q(2977) => [
+      q(Isconahua),
+      ],
+   q(2978) => [
+      q(Isnag),
+      ],
+   q(2979) => [
+      q(Italian Sign Language),
+      ],
+   q(2980) => [
+      q(Irish Sign Language),
+      ],
+   q(2981) => [
+      q(Esan),
+      ],
+   q(2982) => [
+      q(Nkem-Nkum),
+      ],
+   q(2983) => [
+      q(Ishkashimi),
+      ],
+   q(2984) => [
+      q(Masimasi),
+      ],
+   q(2985) => [
+      q(Isanzu),
+      ],
+   q(2986) => [
+      q(Isoko),
+      ],
+   q(2987) => [
+      q(Israeli Sign Language),
+      ],
+   q(2988) => [
+      q(Istriot),
+      ],
+   q(2989) => [
+      q(Isu (Menchum Division)),
+      ],
+   q(2990) => [
+      q(Binongan Itneg),
+      ],
+   q(2991) => [
+      q(Itene),
+      ],
+   q(2992) => [
+      q(Inlaod Itneg),
+      ],
+   q(2993) => [
+      q(Judeo-Italian),
+      ],
+   q(2994) => [
+      q(Itelmen),
+      ],
+   q(2995) => [
+      q(Itu Mbon Uzo),
+      ],
+   q(2996) => [
+      q(Itonama),
+      ],
+   q(2997) => [
+      q(Iteri),
+      ],
+   q(2998) => [
+      q(Isekiri),
+      ],
+   q(2999) => [
+      q(Maeng Itneg),
+      ],
+   q(3000) => [
+      q(Itawit),
+      ],
+   q(3001) => [
+      q(Ito),
+      ],
+   q(3002) => [
+      q(Itik),
+      ],
+   q(3003) => [
+      q(Moyadan Itneg),
+      ],
+   q(3004) => [
+      q(Itza),
+      ],
+   q(3005) => [
+      q(Iu Mien),
+      ],
+   q(3006) => [
+      q(Ibatan),
+      ],
+   q(3007) => [
+      q(Ivatan),
+      ],
+   q(3008) => [
+      q(I-Wak),
+      ],
+   q(3009) => [
+      q(Iwam),
+      ],
+   q(3010) => [
+      q(Iwur),
+      ],
+   q(3011) => [
+      q(Sepik Iwam),
+      ],
+   q(3012) => [
+      q(Ixcatec),
+      ],
+   q(3013) => [
+      q(Ixil),
+      ],
+   q(3014) => [
+      q(Iyayu),
+      ],
+   q(3015) => [
+      q(Mesaka),
+      ],
+   q(3016) => [
+      q(Yaka (Congo)),
+      ],
+   q(3017) => [
+      q(Ingrian),
+      ],
+   q(3018) => [
+      q(Izi-Ezaa-Ikwo-Mgbo),
+      ],
+   q(3019) => [
+      q(Izere),
+      ],
+   q(3020) => [
+      q(Jamamadi),
+      ],
+   q(3021) => [
+      q(Hyam),
+      ],
+   q(3022) => [
+      q(Popti'),
+      q(Jakalteko),
+      ],
+   q(3023) => [
+      q(Jahanka),
+      ],
+   q(3024) => [
+      q(Yabem),
+      ],
+   q(3025) => [
+      q(Jara),
+      ],
+   q(3026) => [
+      q(Jah Hut),
+      ],
+   q(3027) => [
+      q(Zazao),
+      ],
+   q(3028) => [
+      q(Jakun),
+      ],
+   q(3029) => [
+      q(Yalahatan),
+      ],
+   q(3030) => [
+      q(Jamaican Creole English),
+      ],
+   q(3031) => [
+      q(Jandai),
+      ],
+   q(3032) => [
+      q(Yanyuwa),
+      ],
+   q(3033) => [
+      q(Yaqay),
+      ],
+   q(3034) => [
+      q(New Caledonian Javanese),
+      ],
+   q(3035) => [
+      q(Jakati),
+      ],
+   q(3036) => [
+      q(Yaur),
+      ],
+   q(3037) => [
+      q(Jambi Malay),
+      ],
+   q(3038) => [
+      q(Yan-nhangu),
+      ],
+   q(3039) => [
+      q(Jawe),
+      ],
+   q(3040) => [
+      q(Judeo-Berber),
+      ],
+   q(3041) => [
+      q(Arandai),
+      ],
+   q(3042) => [
+      q(Barikewa),
+      ],
+   q(3043) => [
+      q(Nafusi),
+      ],
+   q(3044) => [
+      q(Jofotek-Bromnya),
+      ],
+   q(3045) => [
+      q(Jabuti),
+      ],
+   q(3046) => [
+      q(Jukun Takum),
+      ],
+   q(3047) => [
+      q(Yawijibaya),
+      ],
+   q(3048) => [
+      q(Jamaican Country Sign Language),
+      ],
+   q(3049) => [
+      q(Krymchak),
+      ],
+   q(3050) => [
+      q(Jad),
+      ],
+   q(3051) => [
+      q(Jadgali),
+      ],
+   q(3052) => [
+      q(Judeo-Tat),
+      ],
+   q(3053) => [
+      q(Jebero),
+      ],
+   q(3054) => [
+      q(Jerung),
+      ],
+   q(3055) => [
+      q(Jeng),
+      ],
+   q(3056) => [
+      q(Jeh),
+      ],
+   q(3057) => [
+      q(Yei),
+      ],
+   q(3058) => [
+      q(Jeri Kuo),
+      ],
+   q(3059) => [
+      q(Yelmek),
+      ],
+   q(3060) => [
+      q(Dza),
+      ],
+   q(3061) => [
+      q(Jere),
+      ],
+   q(3062) => [
+      q(Manem),
+      ],
+   q(3063) => [
+      q(Jonkor Bourmataguil),
+      ],
+   q(3064) => [
+      q(Ngbee),
+      ],
+   q(3065) => [
+      q(Judeo-Georgian),
+      ],
+   q(3066) => [
+      q(Gwak),
+      ],
+   q(3067) => [
+      q(Ngomba),
+      ],
+   q(3068) => [
+      q(Jehai),
+      ],
+   q(3069) => [
+      q(Jhankot Sign Language),
+      ],
+   q(3070) => [
+      q(Jina),
+      ],
+   q(3071) => [
+      q(Jibu),
+      ],
+   q(3072) => [
+      q(Tol),
+      ],
+   q(3073) => [
+      q(Bu),
+      ],
+   q(3074) => [
+      q(Jilbe),
+      ],
+   q(3075) => [
+      q(Djingili),
+      ],
+   q(3076) => [
+      q(sTodsde),
+      q(Shangzhai),
+      ],
+   q(3077) => [
+      q(Jiiddu),
+      ],
+   q(3078) => [
+      q(Jilim),
+      ],
+   q(3079) => [
+      q(Jimi (Cameroon)),
+      ],
+   q(3080) => [
+      q(Jiamao),
+      ],
+   q(3081) => [
+      q(Guanyinqiao),
+      q(Lavrung),
+      ],
+   q(3082) => [
+      q(Jita),
+      ],
+   q(3083) => [
+      q(Youle Jinuo),
+      ],
+   q(3084) => [
+      q(Shuar),
+      ],
+   q(3085) => [
+      q(Buyuan Jinuo),
+      ],
+   q(3086) => [
+      q(Bankal),
+      ],
+   q(3087) => [
+      q(Mobwa Karen),
+      ],
+   q(3088) => [
+      q(Kubo),
+      ],
+   q(3089) => [
+      q(Paku Karen),
+      ],
+   q(3090) => [
+      q(Koro (India)),
+      ],
+   q(3091) => [
+      q(Labir),
+      ],
+   q(3092) => [
+      q(Ngile),
+      ],
+   q(3093) => [
+      q(Jamaican Sign Language),
+      ],
+   q(3094) => [
+      q(Dima),
+      ],
+   q(3095) => [
+      q(Zumbun),
+      ],
+   q(3096) => [
+      q(Machame),
+      ],
+   q(3097) => [
+      q(Yamdena),
+      ],
+   q(3098) => [
+      q(Jimi (Nigeria)),
+      ],
+   q(3099) => [
+      q(Jumli),
+      ],
+   q(3100) => [
+      q(Makuri Naga),
+      ],
+   q(3101) => [
+      q(Kamara),
+      ],
+   q(3102) => [
+      q(Mashi (Nigeria)),
+      ],
+   q(3103) => [
+      q(Mouwase),
+      ],
+   q(3104) => [
+      q(Western Juxtlahuaca Mixtec),
+      ],
+   q(3105) => [
+      q(Jangshung),
+      ],
+   q(3106) => [
+      q(Jandavra),
+      ],
+   q(3107) => [
+      q(Yangman),
+      ],
+   q(3108) => [
+      q(Janji),
+      ],
+   q(3109) => [
+      q(Yemsa),
+      ],
+   q(3110) => [
+      q(Rawat),
+      ],
+   q(3111) => [
+      q(Jaunsari),
+      ],
+   q(3112) => [
+      q(Joba),
+      ],
+   q(3113) => [
+      q(Wojenaka),
+      ],
+   q(3114) => [
+      q(Jora),
+      ],
+   q(3115) => [
+      q(Jordanian Sign Language),
+      ],
+   q(3116) => [
+      q(Jowulu),
+      ],
+   q(3117) => [
+      q(Jewish Palestinian Aramaic),
+      ],
+   q(3118) => [
+      q(Jaqaru),
+      ],
+   q(3119) => [
+      q(Jarai),
+      ],
+   q(3120) => [
+      q(Jiru),
+      ],
+   q(3121) => [
+      q(Jorto),
+      ],
+   q(3122) => [
+      q(Japreria),
+      ],
+   q(3123) => [
+      q(Japanese Sign Language),
+      ],
+   q(3124) => [
+      q(Juma),
+      ],
+   q(3125) => [
+      q(Wannu),
+      ],
+   q(3126) => [
+      q(Jurchen),
+      ],
+   q(3127) => [
+      q(Worodougou),
+      ],
+   q(3128) => [
+      q(Hone),
+      ],
+   q(3129) => [
+      q(Ngadjuri),
+      ],
+   q(3130) => [
+      q(Wapan),
+      ],
+   q(3131) => [
+      q(Jirel),
+      ],
+   q(3132) => [
+      q(Jumjum),
+      ],
+   q(3133) => [
+      q(Juang),
+      ],
+   q(3134) => [
+      q(Jiba),
+      ],
+   q(3135) => [
+      q(Hupde),
+      ],
+   q(3136) => [
+      q(Juruna),
+      ],
+   q(3137) => [
+      q(Jumla Sign Language),
+      ],
+   q(3138) => [
+      q(Jutish),
+      ],
+   q(3139) => [
+      q(Ju),
+      ],
+   q(3140) => [
+      q(Wapha),
+      ],
+   q(3141) => [
+      q(Juray),
+      ],
+   q(3142) => [
+      q(Javindo),
+      ],
+   q(3143) => [
+      q(Caribbean Javanese),
+      ],
+   q(3144) => [
+      q(Jwira-Pepesa),
+      ],
+   q(3145) => [
+      q(Jiarong),
+      ],
+   q(3146) => [
+      q(Judeo-Yemeni Arabic),
+      ],
+   q(3147) => [
+      q(Jaya),
+      ],
+   q(3148) => [
+      q(Adara),
+      ],
+   q(3149) => [
+      q(Ketangalan),
+      ],
+   q(3150) => [
+      q(Katso),
+      ],
+   q(3151) => [
+      q(Kajaman),
+      ],
+   q(3152) => [
+      q(Kara (Central African Republic)),
+      ],
+   q(3153) => [
+      q(Karekare),
+      ],
+   q(3154) => [
+      q(Jju),
+      ],
+   q(3155) => [
+      q(Kayapa Kallahan),
+      ],
+   q(3156) => [
+      q(Xaasongaxango),
+      ],
+   q(3157) => [
+      q(Bezhta),
+      ],
+   q(3158) => [
+      q(Capanahua),
+      ],
+   q(3159) => [
+      q(Katukina),
+      ],
+   q(3160) => [
+      q(Kao),
+      ],
+   q(3161) => [
+      q(Kamayura),
+      ],
+   q(3162) => [
+      q(Kalarko),
+      ],
+   q(3163) => [
+      q(Kaxuiana),
+      ],
+   q(3164) => [
+      q(Kadiweu),
+      ],
+   q(3165) => [
+      q(Kanju),
+      ],
+   q(3166) => [
+      q(Kakauhua),
+      ],
+   q(3167) => [
+      q(Khamba),
+      ],
+   q(3168) => [
+      q(Camsa),
+      ],
+   q(3169) => [
+      q(Kaptiau),
+      ],
+   q(3170) => [
+      q(Kari),
+      ],
+   q(3171) => [
+      q(Grass Koiari),
+      ],
+   q(3172) => [
+      q(Kanembu),
+      ],
+   q(3173) => [
+      q(Iwal),
+      ],
+   q(3174) => [
+      q(Kare (Central African Republic)),
+      ],
+   q(3175) => [
+      q(Keliko),
+      ],
+   q(3176) => [
+      q(Kabiye),
+      ],
+   q(3177) => [
+      q(Kamano),
+      ],
+   q(3178) => [
+      q(Kafa),
+      ],
+   q(3179) => [
+      q(Kande),
+      ],
+   q(3180) => [
+      q(Abadi),
+      ],
+   q(3181) => [
+      q(Kabutra),
+      ],
+   q(3182) => [
+      q(Dera (Indonesia)),
+      ],
+   q(3183) => [
+      q(Kaiep),
+      ],
+   q(3184) => [
+      q(Ap Ma),
+      ],
+   q(3185) => [
+      q(Manga Kanuri),
+      ],
+   q(3186) => [
+      q(Duhwa),
+      ],
+   q(3187) => [
+      q(Khanty),
+      ],
+   q(3188) => [
+      q(Kawacha),
+      ],
+   q(3189) => [
+      q(Lubila),
+      ],
+   q(3190) => [
+      q(Ngkalmpw Kanum),
+      ],
+   q(3191) => [
+      q(Kaivi),
+      ],
+   q(3192) => [
+      q(Ukaan),
+      ],
+   q(3193) => [
+      q(Tyap),
+      ],
+   q(3194) => [
+      q(Vono),
+      ],
+   q(3195) => [
+      q(Kamantan),
+      ],
+   q(3196) => [
+      q(Kobiana),
+      ],
+   q(3197) => [
+      q(Kalanga),
+      ],
+   q(3198) => [
+      q(Kela (Papua New Guinea)),
+      q(Kala),
+      ],
+   q(3199) => [
+      q(Gula (Central African Republic)),
+      ],
+   q(3200) => [
+      q(Nubi),
+      ],
+   q(3201) => [
+      q(Kinalakna),
+      ],
+   q(3202) => [
+      q(Kanga),
+      ],
+   q(3203) => [
+      q(Kamo),
+      ],
+   q(3204) => [
+      q(Katla),
+      ],
+   q(3205) => [
+      q(Koenoem),
+      ],
+   q(3206) => [
+      q(Kaian),
+      ],
+   q(3207) => [
+      q(Kami (Tanzania)),
+      ],
+   q(3208) => [
+      q(Kete),
+      ],
+   q(3209) => [
+      q(Kabwari),
+      ],
+   q(3210) => [
+      q(Kachama-Ganjule),
+      ],
+   q(3211) => [
+      q(Korandje),
+      ],
+   q(3212) => [
+      q(Konongo),
+      ],
+   q(3213) => [
+      q(Worimi),
+      ],
+   q(3214) => [
+      q(Kutu),
+      ],
+   q(3215) => [
+      q(Yankunytjatjara),
+      ],
+   q(3216) => [
+      q(Makonde),
+      ],
+   q(3217) => [
+      q(Mamusi),
+      ],
+   q(3218) => [
+      q(Seba),
+      ],
+   q(3219) => [
+      q(Tem),
+      ],
+   q(3220) => [
+      q(Kumam),
+      ],
+   q(3221) => [
+      q(Karamojong),
+      ],
+   q(3222) => [
+      q(Numee),
+      ],
+   q(3223) => [
+      q(Tsikimba),
+      ],
+   q(3224) => [
+      q(Kagoma),
+      ],
+   q(3225) => [
+      q(Kunda),
+      ],
+   q(3226) => [
+      q(Kaningdon-Nindem),
+      ],
+   q(3227) => [
+      q(Koch),
+      ],
+   q(3228) => [
+      q(Karaim),
+      ],
+   q(3229) => [
+      q(Kuy),
+      ],
+   q(3230) => [
+      q(Kadaru),
+      ],
+   q(3231) => [
+      q(Koneraw),
+      ],
+   q(3232) => [
+      q(Kam),
+      ],
+   q(3233) => [
+      q(Keder),
+      q(Keijar),
+      ],
+   q(3234) => [
+      q(Kwaja),
+      ],
+   q(3235) => [
+      q(Kabuverdianu),
+      ],
+   q(3236) => [
+      q(Kele),
+      ],
+   q(3237) => [
+      q(Keiga),
+      ],
+   q(3238) => [
+      q(Kerewe),
+      ],
+   q(3239) => [
+      q(Eastern Keres),
+      ],
+   q(3240) => [
+      q(Kpessi),
+      ],
+   q(3241) => [
+      q(Tese),
+      ],
+   q(3242) => [
+      q(Keak),
+      ],
+   q(3243) => [
+      q(Kei),
+      ],
+   q(3244) => [
+      q(Kadar),
+      ],
+   q(3245) => [
+      q(Kekchi),
+      ],
+   q(3246) => [
+      q(Kela (Democratic Republic of Congo)),
+      ],
+   q(3247) => [
+      q(Kemak),
+      ],
+   q(3248) => [
+      q(Kenyang),
+      ],
+   q(3249) => [
+      q(Kakwa),
+      ],
+   q(3250) => [
+      q(Kaikadi),
+      ],
+   q(3251) => [
+      q(Kamar),
+      ],
+   q(3252) => [
+      q(Kera),
+      ],
+   q(3253) => [
+      q(Kugbo),
+      ],
+   q(3254) => [
+      q(Ket),
+      ],
+   q(3255) => [
+      q(Akebu),
+      ],
+   q(3256) => [
+      q(Kanikkaran),
+      ],
+   q(3257) => [
+      q(West Kewa),
+      ],
+   q(3258) => [
+      q(Kukna),
+      ],
+   q(3259) => [
+      q(Kupia),
+      ],
+   q(3260) => [
+      q(Kukele),
+      ],
+   q(3261) => [
+      q(Kodava),
+      ],
+   q(3262) => [
+      q(Northwestern Kolami),
+      ],
+   q(3263) => [
+      q(Konda-Dora),
+      ],
+   q(3264) => [
+      q(Korra Koraga),
+      ],
+   q(3265) => [
+      q(Kota (India)),
+      ],
+   q(3266) => [
+      q(Koya),
+      ],
+   q(3267) => [
+      q(Kudiya),
+      ],
+   q(3268) => [
+      q(Kurichiya),
+      ],
+   q(3269) => [
+      q(Kannada Kurumba),
+      ],
+   q(3270) => [
+      q(Kemiehua),
+      ],
+   q(3271) => [
+      q(Kinnauri),
+      ],
+   q(3272) => [
+      q(Kung),
+      ],
+   q(3273) => [
+      q(Khunsari),
+      ],
+   q(3274) => [
+      q(Kuk),
+      ],
+   q(3275) => [
+      q(Koro (Cote d'Ivoire)),
+      ],
+   q(3276) => [
+      q(Korwa),
+      ],
+   q(3277) => [
+      q(Korku),
+      ],
+   q(3278) => [
+      q(Kachchi),
+      ],
+   q(3279) => [
+      q(Bilaspuri),
+      ],
+   q(3280) => [
+      q(Kanjari),
+      ],
+   q(3281) => [
+      q(Katkari),
+      ],
+   q(3282) => [
+      q(Kurmukar),
+      ],
+   q(3283) => [
+      q(Kharam Naga),
+      ],
+   q(3284) => [
+      q(Kullu Pahari),
+      ],
+   q(3285) => [
+      q(Kumaoni),
+      ],
+   q(3286) => [
+      q(Koromfe),
+      ],
+   q(3287) => [
+      q(Koyaga),
+      ],
+   q(3288) => [
+      q(Kawe),
+      ],
+   q(3289) => [
+      q(Kasseng),
+      ],
+   q(3290) => [
+      q(Kataang),
+      ],
+   q(3291) => [
+      q(Komering),
+      ],
+   q(3292) => [
+      q(Kube),
+      ],
+   q(3293) => [
+      q(Kusunda),
+      ],
+   q(3294) => [
+      q(Selangor Sign Language),
+      ],
+   q(3295) => [
+      q(Gamale Kham),
+      ],
+   q(3296) => [
+      q(Kaiwa),
+      ],
+   q(3297) => [
+      q(Kunggari),
+      ],
+   q(3298) => [
+      q(Karipuna),
+      ],
+   q(3299) => [
+      q(Karingani),
+      ],
+   q(3300) => [
+      q(Krongo),
+      ],
+   q(3301) => [
+      q(Kaingang),
+      ],
+   q(3302) => [
+      q(Kamoro),
+      ],
+   q(3303) => [
+      q(Abun),
+      ],
+   q(3304) => [
+      q(Kumbainggar),
+      ],
+   q(3305) => [
+      q(Somyev),
+      ],
+   q(3306) => [
+      q(Kobol),
+      ],
+   q(3307) => [
+      q(Karas),
+      ],
+   q(3308) => [
+      q(Karon Dori),
+      ],
+   q(3309) => [
+      q(Kamaru),
+      ],
+   q(3310) => [
+      q(Kyerung),
+      ],
+   q(3311) => [
+      q(Lu),
+      ],
+   q(3312) => [
+      q(Tukang Besi North),
+      ],
+   q(3313) => [
+      q(Badi Kanum),
+      ],
+   q(3314) => [
+      q(Korowai),
+      ],
+   q(3315) => [
+      q(Khuen),
+      ],
+   q(3316) => [
+      q(Khams Tibetan),
+      ],
+   q(3317) => [
+      q(Kehu),
+      ],
+   q(3318) => [
+      q(Kuturmi),
+      ],
+   q(3319) => [
+      q(Halh Mongolian),
+      ],
+   q(3320) => [
+      q(Lusi),
+      ],
+   q(3321) => [
+      q(Khandesi),
+      ],
+   q(3322) => [
+      q(Kapori),
+      q(Kapauri),
+      ],
+   q(3323) => [
+      q(Koyra Chiini Songhay),
+      ],
+   q(3324) => [
+      q(Kharia),
+      ],
+   q(3325) => [
+      q(Kasua),
+      ],
+   q(3326) => [
+      q(Khamti),
+      ],
+   q(3327) => [
+      q(Nkhumbi),
+      ],
+   q(3328) => [
+      q(Khvarshi),
+      ],
+   q(3329) => [
+      q(Khowar),
+      ],
+   q(3330) => [
+      q(Kanu),
+      ],
+   q(3331) => [
+      q(Kele (Democratic Republic of Congo)),
+      ],
+   q(3332) => [
+      q(Keapara),
+      ],
+   q(3333) => [
+      q(Kim),
+      ],
+   q(3334) => [
+      q(Koalib),
+      ],
+   q(3335) => [
+      q(Kickapoo),
+      ],
+   q(3336) => [
+      q(Koshin),
+      ],
+   q(3337) => [
+      q(Kibet),
+      ],
+   q(3338) => [
+      q(Eastern Parbate Kham),
+      ],
+   q(3339) => [
+      q(Kimaama),
+      q(Kimaghima),
+      ],
+   q(3340) => [
+      q(Kilmeri),
+      ],
+   q(3341) => [
+      q(Kitsai),
+      ],
+   q(3342) => [
+      q(Kilivila),
+      ],
+   q(3343) => [
+      q(Kariya),
+      ],
+   q(3344) => [
+      q(Karagas),
+      ],
+   q(3345) => [
+      q(Kiowa),
+      ],
+   q(3346) => [
+      q(Sheshi Kham),
+      ],
+   q(3347) => [
+      q(Kosadle),
+      q(Kosare),
+      ],
+   q(3348) => [
+      q(Kis),
+      ],
+   q(3349) => [
+      q(Agob),
+      ],
+   q(3350) => [
+      q(Kirmanjki (individual language)),
+      ],
+   q(3351) => [
+      q(Kimbu),
+      ],
+   q(3352) => [
+      q(Northeast Kiwai),
+      ],
+   q(3353) => [
+      q(Khiamniungan Naga),
+      ],
+   q(3354) => [
+      q(Kirikiri),
+      ],
+   q(3355) => [
+      q(Kisi),
+      ],
+   q(3356) => [
+      q(Mlap),
+      ],
+   q(3357) => [
+      q(Q'anjob'al),
+      q(Kanjobal),
+      ],
+   q(3358) => [
+      q(Coastal Konjo),
+      ],
+   q(3359) => [
+      q(Southern Kiwai),
+      ],
+   q(3360) => [
+      q(Kisar),
+      ],
+   q(3361) => [
+      q(Khalaj),
+      ],
+   q(3362) => [
+      q(Khmu),
+      ],
+   q(3363) => [
+      q(Khakas),
+      ],
+   q(3364) => [
+      q(Zabana),
+      ],
+   q(3365) => [
+      q(Khinalugh),
+      ],
+   q(3366) => [
+      q(Highland Konjo),
+      ],
+   q(3367) => [
+      q(Western Parbate Kham),
+      ],
+   q(3368) => [
+      q(Khang),
+      ],
+   q(3369) => [
+      q(Kunjen),
+      ],
+   q(3370) => [
+      q(Harijan Kinnauri),
+      ],
+   q(3371) => [
+      q(Pwo Eastern Karen),
+      ],
+   q(3372) => [
+      q(Western Keres),
+      ],
+   q(3373) => [
+      q(Kurudu),
+      ],
+   q(3374) => [
+      q(East Kewa),
+      ],
+   q(3375) => [
+      q(Phrae Pwo Karen),
+      ],
+   q(3376) => [
+      q(Kashaya),
+      ],
+   q(3377) => [
+      q(Ramopa),
+      ],
+   q(3378) => [
+      q(Erave),
+      ],
+   q(3379) => [
+      q(Bumthangkha),
+      ],
+   q(3380) => [
+      q(Kakanda),
+      ],
+   q(3381) => [
+      q(Kwerisa),
+      ],
+   q(3382) => [
+      q(Odoodee),
+      ],
+   q(3383) => [
+      q(Kinuku),
+      ],
+   q(3384) => [
+      q(Kakabe),
+      ],
+   q(3385) => [
+      q(Kalaktang Monpa),
+      ],
+   q(3386) => [
+      q(Mabaka Valley Kalinga),
+      ],
+   q(3387) => [
+      q(Khun),
+      ],
+   q(3388) => [
+      q(Kagulu),
+      ],
+   q(3389) => [
+      q(Kako),
+      ],
+   q(3390) => [
+      q(Kokota),
+      ],
+   q(3391) => [
+      q(Kosarek Yale),
+      ],
+   q(3392) => [
+      q(Kiong),
+      ],
+   q(3393) => [
+      q(Kon Keu),
+      ],
+   q(3394) => [
+      q(Karko),
+      ],
+   q(3395) => [
+      q(Gugubera),
+      ],
+   q(3396) => [
+      q(Kaiku),
+      ],
+   q(3397) => [
+      q(Kir-Balar),
+      ],
+   q(3398) => [
+      q(Giiwo),
+      ],
+   q(3399) => [
+      q(Koi),
+      ],
+   q(3400) => [
+      q(Tumi),
+      ],
+   q(3401) => [
+      q(Kangean),
+      ],
+   q(3402) => [
+      q(Teke-Kukuya),
+      ],
+   q(3403) => [
+      q(Kohin),
+      ],
+   q(3404) => [
+      q(Guguyimidjir),
+      ],
+   q(3405) => [
+      q(Kaska),
+      ],
+   q(3406) => [
+      q(Klamath-Modoc),
+      ],
+   q(3407) => [
+      q(Kiliwa),
+      ],
+   q(3408) => [
+      q(Kolbila),
+      ],
+   q(3409) => [
+      q(Gamilaraay),
+      ],
+   q(3410) => [
+      q(Kulung (Nepal)),
+      ],
+   q(3411) => [
+      q(Kendeje),
+      ],
+   q(3412) => [
+      q(Tagakaulo),
+      ],
+   q(3413) => [
+      q(Weliki),
+      ],
+   q(3414) => [
+      q(Kalumpang),
+      ],
+   q(3415) => [
+      q(Turkic Khalaj),
+      ],
+   q(3416) => [
+      q(Kono (Nigeria)),
+      ],
+   q(3417) => [
+      q(Kagan Kalagan),
+      ],
+   q(3418) => [
+      q(Migum),
+      ],
+   q(3419) => [
+      q(Kalenjin),
+      ],
+   q(3420) => [
+      q(Kapya),
+      ],
+   q(3421) => [
+      q(Kamasa),
+      ],
+   q(3422) => [
+      q(Rumu),
+      ],
+   q(3423) => [
+      q(Khaling),
+      ],
+   q(3424) => [
+      q(Kalasha),
+      ],
+   q(3425) => [
+      q(Nukna),
+      ],
+   q(3426) => [
+      q(Klao),
+      ],
+   q(3427) => [
+      q(Maskelynes),
+      ],
+   q(3428) => [
+      q(Lindu),
+      ],
+   q(3429) => [
+      q(Koluwawa),
+      ],
+   q(3430) => [
+      q(Kalao),
+      ],
+   q(3431) => [
+      q(Kabola),
+      ],
+   q(3432) => [
+      q(Konni),
+      ],
+   q(3433) => [
+      q(Southern Dong),
+      ],
+   q(3434) => [
+      q(Majukayang Kalinga),
+      ],
+   q(3435) => [
+      q(Bakole),
+      ],
+   q(3436) => [
+      q(Kare (Papua New Guinea)),
+      ],
+   q(3437) => [
+      q(Kate),
+      ],
+   q(3438) => [
+      q(Kalam),
+      ],
+   q(3439) => [
+      q(Kami (Nigeria)),
+      ],
+   q(3440) => [
+      q(Kumarbhag Paharia),
+      ],
+   q(3441) => [
+      q(Limos Kalinga),
+      ],
+   q(3442) => [
+      q(Tanudan Kalinga),
+      ],
+   q(3443) => [
+      q(Kom (India)),
+      ],
+   q(3444) => [
+      q(Awtuw),
+      ],
+   q(3445) => [
+      q(Kwoma),
+      ],
+   q(3446) => [
+      q(Gimme),
+      ],
+   q(3447) => [
+      q(Kwama),
+      ],
+   q(3448) => [
+      q(Northern Kurdish),
+      ],
+   q(3449) => [
+      q(Kamasau),
+      ],
+   q(3450) => [
+      q(Kemtuik),
+      ],
+   q(3451) => [
+      q(Kanite),
+      ],
+   q(3452) => [
+      q(Karipuna Creole French),
+      ],
+   q(3453) => [
+      q(Komo (Democratic Republic of Congo)),
+      ],
+   q(3454) => [
+      q(Waboda),
+      ],
+   q(3455) => [
+      q(Koma),
+      ],
+   q(3456) => [
+      q(Khorasani Turkish),
+      ],
+   q(3457) => [
+      q(Dera (Nigeria)),
+      ],
+   q(3458) => [
+      q(Lubuagan Kalinga),
+      ],
+   q(3459) => [
+      q(Central Kanuri),
+      ],
+   q(3460) => [
+      q(Konda),
+      ],
+   q(3461) => [
+      q(Kankanaey),
+      ],
+   q(3462) => [
+      q(Mankanya),
+      ],
+   q(3463) => [
+      q(Koongo),
+      ],
+   q(3464) => [
+      q(Kanufi),
+      ],
+   q(3465) => [
+      q(Western Kanjobal),
+      ],
+   q(3466) => [
+      q(Kuranko),
+      ],
+   q(3467) => [
+      q(Keninjal),
+      ],
+   q(3468) => [
+      q(Kanamari),
+      ],
+   q(3469) => [
+      q(Konkani (individual language)),
+      ],
+   q(3470) => [
+      q(Kono (Sierra Leone)),
+      ],
+   q(3471) => [
+      q(Kwanja),
+      ],
+   q(3472) => [
+      q(Kintaq),
+      ],
+   q(3473) => [
+      q(Kaningra),
+      ],
+   q(3474) => [
+      q(Kensiu),
+      ],
+   q(3475) => [
+      q(Panoan Katukina),
+      ],
+   q(3476) => [
+      q(Kono (Guinea)),
+      ],
+   q(3477) => [
+      q(Tabo),
+      ],
+   q(3478) => [
+      q(Kung-Ekoka),
+      ],
+   q(3479) => [
+      q(Kendayan),
+      q(Salako),
+      ],
+   q(3480) => [
+      q(Kanyok),
+      ],
+   q(3481) => [
+      q(Kalamse),
+      ],
+   q(3482) => [
+      q(Konomala),
+      ],
+   q(3483) => [
+      q(Kpati),
+      ],
+   q(3484) => [
+      q(Kodi),
+      ],
+   q(3485) => [
+      q(Kacipo-Balesi),
+      ],
+   q(3486) => [
+      q(Kubi),
+      ],
+   q(3487) => [
+      q(Cogui),
+      q(Kogi),
+      ],
+   q(3488) => [
+      q(Koyo),
+      ],
+   q(3489) => [
+      q(Komi-Permyak),
+      ],
+   q(3490) => [
+      q(Sara Dunjo),
+      ],
+   q(3491) => [
+      q(Kol (Papua New Guinea)),
+      ],
+   q(3492) => [
+      q(Konzo),
+      ],
+   q(3493) => [
+      q(Waube),
+      ],
+   q(3494) => [
+      q(Kota (Gabon)),
+      ],
+   q(3495) => [
+      q(Lagwan),
+      ],
+   q(3496) => [
+      q(Koke),
+      ],
+   q(3497) => [
+      q(Kudu-Camo),
+      ],
+   q(3498) => [
+      q(Kugama),
+      ],
+   q(3499) => [
+      q(Coxima),
+      ],
+   q(3500) => [
+      q(Koyukon),
+      ],
+   q(3501) => [
+      q(Korak),
+      ],
+   q(3502) => [
+      q(Kutto),
+      ],
+   q(3503) => [
+      q(Mullu Kurumba),
+      ],
+   q(3504) => [
+      q(Curripaco),
+      ],
+   q(3505) => [
+      q(Koba),
+      ],
+   q(3506) => [
+      q(Komba),
+      ],
+   q(3507) => [
+      q(Kapingamarangi),
+      ],
+   q(3508) => [
+      q(Kplang),
+      ],
+   q(3509) => [
+      q(Kofei),
+      ],
+   q(3510) => [
+      q(Karaja),
+      ],
+   q(3511) => [
+      q(Kpan),
+      ],
+   q(3512) => [
+      q(Kpala),
+      ],
+   q(3513) => [
+      q(Koho),
+      ],
+   q(3514) => [
+      q(Kepkiriwat),
+      ],
+   q(3515) => [
+      q(Ikposo),
+      ],
+   q(3516) => [
+      q(Korupun-Sela),
+      ],
+   q(3517) => [
+      q(Korafe-Yegha),
+      ],
+   q(3518) => [
+      q(Tehit),
+      ],
+   q(3519) => [
+      q(Karata),
+      ],
+   q(3520) => [
+      q(Kafoa),
+      ],
+   q(3521) => [
+      q(Komi-Zyrian),
+      ],
+   q(3522) => [
+      q(Kobon),
+      ],
+   q(3523) => [
+      q(Mountain Koiali),
+      ],
+   q(3524) => [
+      q(Koryak),
+      ],
+   q(3525) => [
+      q(Kupsabiny),
+      ],
+   q(3526) => [
+      q(Mum),
+      ],
+   q(3527) => [
+      q(Kovai),
+      ],
+   q(3528) => [
+      q(Doromu-Koki),
+      ],
+   q(3529) => [
+      q(Koy Sanjaq Surat),
+      ],
+   q(3530) => [
+      q(Kalagan),
+      ],
+   q(3531) => [
+      q(Kakabai),
+      ],
+   q(3532) => [
+      q(Khe),
+      ],
+   q(3533) => [
+      q(Kisankasa),
+      ],
+   q(3534) => [
+      q(Koitabu),
+      ],
+   q(3535) => [
+      q(Koromira),
+      ],
+   q(3536) => [
+      q(Kotafon Gbe),
+      ],
+   q(3537) => [
+      q(Kyenele),
+      ],
+   q(3538) => [
+      q(Khisa),
+      ],
+   q(3539) => [
+      q(Kaonde),
+      ],
+   q(3540) => [
+      q(Eastern Krahn),
+      ],
+   q(3541) => [
+      q(Kimre),
+      ],
+   q(3542) => [
+      q(Krenak),
+      ],
+   q(3543) => [
+      q(Kimaragang),
+      ],
+   q(3544) => [
+      q(Northern Kissi),
+      ],
+   q(3545) => [
+      q(Klias River Kadazan),
+      ],
+   q(3546) => [
+      q(Seroa),
+      ],
+   q(3547) => [
+      q(Okolod),
+      ],
+   q(3548) => [
+      q(Kandas),
+      ],
+   q(3549) => [
+      q(Mser),
+      ],
+   q(3550) => [
+      q(Koorete),
+      ],
+   q(3551) => [
+      q(Korana),
+      ],
+   q(3552) => [
+      q(Kumhali),
+      ],
+   q(3553) => [
+      q(Karkin),
+      ],
+   q(3554) => [
+      q(Kairui-Midiki),
+      ],
+   q(3555) => [
+      q(Panara),
+      ],
+   q(3556) => [
+      q(Koro (Vanuatu)),
+      ],
+   q(3557) => [
+      q(Kurama),
+      ],
+   q(3558) => [
+      q(Krio),
+      ],
+   q(3559) => [
+      q(Kinaray-A),
+      ],
+   q(3560) => [
+      q(Kerek),
+      ],
+   q(3561) => [
+      q(Krim),
+      ],
+   q(3562) => [
+      q(Sapo),
+      ],
+   q(3563) => [
+      q(Korop),
+      ],
+   q(3564) => [
+      q(Kru'ng 2),
+      ],
+   q(3565) => [
+      q(Gbaya (Sudan)),
+      ],
+   q(3566) => [
+      q(Tumari Kanuri),
+      ],
+   q(3567) => [
+      q(Kavet),
+      ],
+   q(3568) => [
+      q(Western Krahn),
+      ],
+   q(3569) => [
+      q(Karon),
+      ],
+   q(3570) => [
+      q(Kryts),
+      ],
+   q(3571) => [
+      q(Sota Kanum),
+      ],
+   q(3572) => [
+      q(Shuwa-Zamani),
+      ],
+   q(3573) => [
+      q(Shambala),
+      ],
+   q(3574) => [
+      q(Southern Kalinga),
+      ],
+   q(3575) => [
+      q(Kuanua),
+      ],
+   q(3576) => [
+      q(Kuni),
+      ],
+   q(3577) => [
+      q(Bafia),
+      ],
+   q(3578) => [
+      q(Kusaghe),
+      ],
+   q(3579) => [
+      q(Kolsch),
+      ],
+   q(3580) => [
+      q(Krisa),
+      q(I'saka),
+      ],
+   q(3581) => [
+      q(Uare),
+      ],
+   q(3582) => [
+      q(Kansa),
+      ],
+   q(3583) => [
+      q(Kumalu),
+      ],
+   q(3584) => [
+      q(Kumba),
+      ],
+   q(3585) => [
+      q(Kasiguranin),
+      ],
+   q(3586) => [
+      q(Kofa),
+      ],
+   q(3587) => [
+      q(Kaba),
+      ],
+   q(3588) => [
+      q(Kwaami),
+      ],
+   q(3589) => [
+      q(Borong),
+      ],
+   q(3590) => [
+      q(Southern Kisi),
+      ],
+   q(3591) => [
+      q(Winye),
+      ],
+   q(3592) => [
+      q(Khamyang),
+      ],
+   q(3593) => [
+      q(Kusu),
+      ],
+   q(3594) => [
+      q(S'gaw Karen),
+      ],
+   q(3595) => [
+      q(Kedang),
+      ],
+   q(3596) => [
+      q(Kharia Thar),
+      ],
+   q(3597) => [
+      q(Kodaku),
+      ],
+   q(3598) => [
+      q(Katua),
+      ],
+   q(3599) => [
+      q(Kambaata),
+      ],
+   q(3600) => [
+      q(Kholok),
+      ],
+   q(3601) => [
+      q(Kokata),
+      ],
+   q(3602) => [
+      q(Nubri),
+      ],
+   q(3603) => [
+      q(Kwami),
+      ],
+   q(3604) => [
+      q(Kalkutung),
+      ],
+   q(3605) => [
+      q(Karanga),
+      ],
+   q(3606) => [
+      q(North Muyu),
+      ],
+   q(3607) => [
+      q(Plapo Krumen),
+      ],
+   q(3608) => [
+      q(Kaniet),
+      ],
+   q(3609) => [
+      q(Koroshi),
+      ],
+   q(3610) => [
+      q(Kurti),
+      ],
+   q(3611) => [
+      q(Karitiana),
+      ],
+   q(3612) => [
+      q(Kuot),
+      ],
+   q(3613) => [
+      q(Kaduo),
+      ],
+   q(3614) => [
+      q(Katabaga),
+      ],
+   q(3615) => [
+      q(Kota Marudu Tinagas),
+      ],
+   q(3616) => [
+      q(South Muyu),
+      ],
+   q(3617) => [
+      q(Ketum),
+      ],
+   q(3618) => [
+      q(Kituba (Democratic Republic of Congo)),
+      ],
+   q(3619) => [
+      q(Eastern Katu),
+      ],
+   q(3620) => [
+      q(Kato),
+      ],
+   q(3621) => [
+      q(Kaxarari),
+      ],
+   q(3622) => [
+      q(Kango (Bas-Uele District)),
+      ],
+   q(3623) => [
+      q(Ju/'hoan),
+      ],
+   q(3624) => [
+      q(Kutep),
+      ],
+   q(3625) => [
+      q(Kwinsu),
+      ],
+   q(3626) => [
+      q('Auhelawa),
+      ],
+   q(3627) => [
+      q(Kuman),
+      ],
+   q(3628) => [
+      q(Western Katu),
+      ],
+   q(3629) => [
+      q(Kupa),
+      ],
+   q(3630) => [
+      q(Kushi),
+      ],
+   q(3631) => [
+      q(Kuikuro-Kalapalo),
+      ],
+   q(3632) => [
+      q(Kuria),
+      ],
+   q(3633) => [
+      q(Kepo'),
+      ],
+   q(3634) => [
+      q(Kulere),
+      ],
+   q(3635) => [
+      q(Kunama),
+      ],
+   q(3636) => [
+      q(Kumukio),
+      ],
+   q(3637) => [
+      q(Kunimaipa),
+      ],
+   q(3638) => [
+      q(Kusaal),
+      ],
+   q(3639) => [
+      q(Upper Kuskokwim),
+      ],
+   q(3640) => [
+      q(Kur),
+      ],
+   q(3641) => [
+      q(Kpagua),
+      ],
+   q(3642) => [
+      q(Kukatja),
+      ],
+   q(3643) => [
+      q(Kuuku-Ya'u),
+      ],
+   q(3644) => [
+      q(Kunza),
+      ],
+   q(3645) => [
+      q(Bagvalal),
+      ],
+   q(3646) => [
+      q(Kubu),
+      ],
+   q(3647) => [
+      q(Kove),
+      ],
+   q(3648) => [
+      q(Kui (Indonesia)),
+      ],
+   q(3649) => [
+      q(Kalabakan),
+      ],
+   q(3650) => [
+      q(Kabalai),
+      ],
+   q(3651) => [
+      q(Kuni-Boazi),
+      ],
+   q(3652) => [
+      q(Komodo),
+      ],
+   q(3653) => [
+      q(Kwang),
+      ],
+   q(3654) => [
+      q(Psikye),
+      ],
+   q(3655) => [
+      q(Korean Sign Language),
+      ],
+   q(3656) => [
+      q(Kayaw),
+      ],
+   q(3657) => [
+      q(Kendem),
+      ],
+   q(3658) => [
+      q(Border Kuna),
+      ],
+   q(3659) => [
+      q(Dobel),
+      ],
+   q(3660) => [
+      q(Kompane),
+      ],
+   q(3661) => [
+      q(Geba Karen),
+      ],
+   q(3662) => [
+      q(Kerinci),
+      ],
+   q(3663) => [
+      q(Kunggara),
+      ],
+   q(3664) => [
+      q(Lahta Karen),
+      q(Lahta),
+      ],
+   q(3665) => [
+      q(Yinbaw Karen),
+      ],
+   q(3666) => [
+      q(Kola),
+      ],
+   q(3667) => [
+      q(Wersing),
+      ],
+   q(3668) => [
+      q(Parkari Koli),
+      ],
+   q(3669) => [
+      q(Yintale Karen),
+      q(Yintale),
+      ],
+   q(3670) => [
+      q(Tsakwambo),
+      q(Tsaukambo),
+      ],
+   q(3671) => [
+      q(Daw),
+      ],
+   q(3672) => [
+      q(Kwa),
+      ],
+   q(3673) => [
+      q(Likwala),
+      ],
+   q(3674) => [
+      q(Kwaio),
+      ],
+   q(3675) => [
+      q(Kwerba),
+      ],
+   q(3676) => [
+      q(Kwara'ae),
+      ],
+   q(3677) => [
+      q(Sara Kaba Deme),
+      ],
+   q(3678) => [
+      q(Kowiai),
+      ],
+   q(3679) => [
+      q(Awa-Cuaiquer),
+      ],
+   q(3680) => [
+      q(Kwanga),
+      ],
+   q(3681) => [
+      q(Kwakiutl),
+      ],
+   q(3682) => [
+      q(Kofyar),
+      ],
+   q(3683) => [
+      q(Kwambi),
+      ],
+   q(3684) => [
+      q(Kwangali),
+      ],
+   q(3685) => [
+      q(Kwomtari),
+      ],
+   q(3686) => [
+      q(Kodia),
+      ],
+   q(3687) => [
+      q(Kwak),
+      ],
+   q(3688) => [
+      q(Kwer),
+      ],
+   q(3689) => [
+      q(Kwese),
+      ],
+   q(3690) => [
+      q(Kwesten),
+      ],
+   q(3691) => [
+      q(Kwakum),
+      ],
+   q(3692) => [
+      q(Sara Kaba Naa),
+      ],
+   q(3693) => [
+      q(Kwinti),
+      ],
+   q(3694) => [
+      q(Khirwar),
+      ],
+   q(3695) => [
+      q(San Salvador Kongo),
+      ],
+   q(3696) => [
+      q(Kwadi),
+      ],
+   q(3697) => [
+      q(Kairiru),
+      ],
+   q(3698) => [
+      q(Krobu),
+      ],
+   q(3699) => [
+      q(Konso),
+      q(Khonso),
+      ],
+   q(3700) => [
+      q(Brunei),
+      ],
+   q(3701) => [
+      q(Kakihum),
+      ],
+   q(3702) => [
+      q(Manumanaw Karen),
+      q(Manumanaw),
+      ],
+   q(3703) => [
+      q(Karo (Ethiopia)),
+      ],
+   q(3704) => [
+      q(Keningau Murut),
+      ],
+   q(3705) => [
+      q(Kulfa),
+      ],
+   q(3706) => [
+      q(Zayein Karen),
+      ],
+   q(3707) => [
+      q(Nepali Kurux),
+      ],
+   q(3708) => [
+      q(Northern Khmer),
+      ],
+   q(3709) => [
+      q(Kanowit-Tanjong Melanau),
+      ],
+   q(3710) => [
+      q(Kanoe),
+      ],
+   q(3711) => [
+      q(Wadiyara Koli),
+      ],
+   q(3712) => [
+      q(Smarky Kanum),
+      ],
+   q(3713) => [
+      q(Koro (Papua New Guinea)),
+      ],
+   q(3714) => [
+      q(Kangjia),
+      ],
+   q(3715) => [
+      q(Koiwat),
+      ],
+   q(3716) => [
+      q(Kui (India)),
+      ],
+   q(3717) => [
+      q(Kuvi),
+      ],
+   q(3718) => [
+      q(Konai),
+      ],
+   q(3719) => [
+      q(Likuba),
+      ],
+   q(3720) => [
+      q(Kayong),
+      ],
+   q(3721) => [
+      q(Kerewo),
+      ],
+   q(3722) => [
+      q(Kwaya),
+      ],
+   q(3723) => [
+      q(Butbut Kalinga),
+      ],
+   q(3724) => [
+      q(Kyaka),
+      ],
+   q(3725) => [
+      q(Karey),
+      ],
+   q(3726) => [
+      q(Krache),
+      ],
+   q(3727) => [
+      q(Kouya),
+      ],
+   q(3728) => [
+      q(Keyagana),
+      ],
+   q(3729) => [
+      q(Karok),
+      ],
+   q(3730) => [
+      q(Kiput),
+      ],
+   q(3731) => [
+      q(Karao),
+      ],
+   q(3732) => [
+      q(Kamayo),
+      ],
+   q(3733) => [
+      q(Kalapuya),
+      ],
+   q(3734) => [
+      q(Kpatili),
+      ],
+   q(3735) => [
+      q(Northern Binukidnon),
+      ],
+   q(3736) => [
+      q(Kelon),
+      ],
+   q(3737) => [
+      q(Kang),
+      ],
+   q(3738) => [
+      q(Kenga),
+      ],
+   q(3739) => [
+      q(Kuruaya),
+      ],
+   q(3740) => [
+      q(Baram Kayan),
+      ],
+   q(3741) => [
+      q(Kayagar),
+      ],
+   q(3742) => [
+      q(Western Kayah),
+      ],
+   q(3743) => [
+      q(Kayort),
+      ],
+   q(3744) => [
+      q(Kudmali),
+      ],
+   q(3745) => [
+      q(Rapoisi),
+      ],
+   q(3746) => [
+      q(Kambaira),
+      ],
+   q(3747) => [
+      q(Kayabi),
+      ],
+   q(3748) => [
+      q(Western Karaboro),
+      ],
+   q(3749) => [
+      q(Kaibobo),
+      ],
+   q(3750) => [
+      q(Bondoukou Kulango),
+      ],
+   q(3751) => [
+      q(Kadai),
+      ],
+   q(3752) => [
+      q(Kosena),
+      ],
+   q(3753) => [
+      q(Da'a Kaili),
+      ],
+   q(3754) => [
+      q(Kikai),
+      ],
+   q(3755) => [
+      q(Kelabit),
+      ],
+   q(3756) => [
+      q(Coastal Kadazan),
+      ],
+   q(3757) => [
+      q(Kazukuru),
+      ],
+   q(3758) => [
+      q(Kayeli),
+      ],
+   q(3759) => [
+      q(Kais),
+      ],
+   q(3760) => [
+      q(Kokola),
+      ],
+   q(3761) => [
+      q(Kaningi),
+      ],
+   q(3762) => [
+      q(Kaidipang),
+      ],
+   q(3763) => [
+      q(Kaike),
+      ],
+   q(3764) => [
+      q(Karang),
+      ],
+   q(3765) => [
+      q(Sugut Dusun),
+      ],
+   q(3766) => [
+      q(Tambunan Dusun),
+      ],
+   q(3767) => [
+      q(Kayupulau),
+      ],
+   q(3768) => [
+      q(Komyandaret),
+      ],
+   q(3769) => [
+      q(Kariri-Xoco),
+      ],
+   q(3770) => [
+      q(Kamarian),
+      ],
+   q(3771) => [
+      q(Kango (Tshopo District)),
+      ],
+   q(3772) => [
+      q(Kalabra),
+      ],
+   q(3773) => [
+      q(Southern Subanen),
+      ],
+   q(3774) => [
+      q(Linear A),
+      ],
+   q(3775) => [
+      q(Lacandon),
+      ],
+   q(3776) => [
+      q(Pattani),
+      ],
+   q(3777) => [
+      q(Lafofa),
+      ],
+   q(3778) => [
+      q(Langi),
+      ],
+   q(3779) => [
+      q(Lambya),
+      ],
+   q(3780) => [
+      q(Lango (Uganda)),
+      ],
+   q(3781) => [
+      q(Laka (Nigeria)),
+      ],
+   q(3782) => [
+      q(Lalia),
+      ],
+   q(3783) => [
+      q(Laru),
+      ],
+   q(3784) => [
+      q(Laka (Chad)),
+      ],
+   q(3785) => [
+      q(Qabiao),
+      ],
+   q(3786) => [
+      q(Larteh),
+      ],
+   q(3787) => [
+      q(Lama (Togo)),
+      ],
+   q(3788) => [
+      q(Laba),
+      ],
+   q(3789) => [
+      q(Lauje),
+      ],
+   q(3790) => [
+      q(Tiwa),
+      ],
+   q(3791) => [
+      q(Lama (Myanmar)),
+      ],
+   q(3792) => [
+      q(Aribwatsa),
+      ],
+   q(3793) => [
+      q(Lui),
+      ],
+   q(3794) => [
+      q(Label),
+      ],
+   q(3795) => [
+      q(Lakkia),
+      ],
+   q(3796) => [
+      q(Lak),
+      ],
+   q(3797) => [
+      q(Tinani),
+      ],
+   q(3798) => [
+      q(Laopang),
+      ],
+   q(3799) => [
+      q(La'bi),
+      ],
+   q(3800) => [
+      q(Ladakhi),
+      ],
+   q(3801) => [
+      q(Central Bontok),
+      ],
+   q(3802) => [
+      q(Libon Bikol),
+      ],
+   q(3803) => [
+      q(Lodhi),
+      ],
+   q(3804) => [
+      q(Lamet),
+      ],
+   q(3805) => [
+      q(Laven),
+      ],
+   q(3806) => [
+      q(Wampar),
+      ],
+   q(3807) => [
+      q(Lohorung),
+      ],
+   q(3808) => [
+      q(Libyan Sign Language),
+      ],
+   q(3809) => [
+      q(Lachi),
+      ],
+   q(3810) => [
+      q(Labu),
+      ],
+   q(3811) => [
+      q(Lavatbura-Lamusong),
+      ],
+   q(3812) => [
+      q(Tolaki),
+      ],
+   q(3813) => [
+      q(Lawangan),
+      ],
+   q(3814) => [
+      q(Lamu-Lamu),
+      ],
+   q(3815) => [
+      q(Lardil),
+      ],
+   q(3816) => [
+      q(Legenyem),
+      ],
+   q(3817) => [
+      q(Lola),
+      ],
+   q(3818) => [
+      q(Loncong),
+      ],
+   q(3819) => [
+      q(Lubu),
+      ],
+   q(3820) => [
+      q(Luchazi),
+      ],
+   q(3821) => [
+      q(Lisela),
+      ],
+   q(3822) => [
+      q(Tungag),
+      ],
+   q(3823) => [
+      q(Western Lawa),
+      ],
+   q(3824) => [
+      q(Lisabata-Nuniali),
+      ],
+   q(3825) => [
+      q(Duya),
+      ],
+   q(3826) => [
+      q(Luri),
+      ],
+   q(3827) => [
+      q(Lenyima),
+      ],
+   q(3828) => [
+      q(Lamja-Dengsa-Tola),
+      ],
+   q(3829) => [
+      q(Laari),
+      ],
+   q(3830) => [
+      q(Lemoro),
+      ],
+   q(3831) => [
+      q(Leelau),
+      ],
+   q(3832) => [
+      q(Kaan),
+      ],
+   q(3833) => [
+      q(Landoma),
+      ],
+   q(3834) => [
+      q(Laadan),
+      ],
+   q(3835) => [
+      q(Loo),
+      ],
+   q(3836) => [
+      q(Tso),
+      ],
+   q(3837) => [
+      q(Lufu),
+      ],
+   q(3838) => [
+      q(Lega-Shabunda),
+      ],
+   q(3839) => [
+      q(Lala-Bisa),
+      ],
+   q(3840) => [
+      q(Leco),
+      ],
+   q(3841) => [
+      q(Lendu),
+      ],
+   q(3842) => [
+      q(Lyele),
+      ],
+   q(3843) => [
+      q(Lelemi),
+      ],
+   q(3844) => [
+      q(Lengua),
+      ],
+   q(3845) => [
+      q(Lenje),
+      ],
+   q(3846) => [
+      q(Lemio),
+      ],
+   q(3847) => [
+      q(Lengola),
+      ],
+   q(3848) => [
+      q(Leipon),
+      ],
+   q(3849) => [
+      q(Lele (Democratic Republic of Congo)),
+      ],
+   q(3850) => [
+      q(Nomaande),
+      ],
+   q(3851) => [
+      q(Lenca),
+      ],
+   q(3852) => [
+      q(Leti (Cameroon)),
+      ],
+   q(3853) => [
+      q(Lepcha),
+      ],
+   q(3854) => [
+      q(Lembena),
+      ],
+   q(3855) => [
+      q(Lenkau),
+      ],
+   q(3856) => [
+      q(Lese),
+      ],
+   q(3857) => [
+      q(Lesing-Gelimi),
+      q(Amio-Gelimi),
+      ],
+   q(3858) => [
+      q(Kara (Papua New Guinea)),
+      ],
+   q(3859) => [
+      q(Lamma),
+      ],
+   q(3860) => [
+      q(Ledo Kaili),
+      ],
+   q(3861) => [
+      q(Luang),
+      ],
+   q(3862) => [
+      q(Lemolang),
+      ],
+   q(3863) => [
+      q(Lefa),
+      ],
+   q(3864) => [
+      q(Lingua Franca Nova),
+      ],
+   q(3865) => [
+      q(Lungga),
+      ],
+   q(3866) => [
+      q(Laghu),
+      ],
+   q(3867) => [
+      q(Lugbara),
+      ],
+   q(3868) => [
+      q(Laghuu),
+      ],
+   q(3869) => [
+      q(Lengilu),
+      ],
+   q(3870) => [
+      q(Lingarak),
+      q(Neverver),
+      ],
+   q(3871) => [
+      q(Wala),
+      ],
+   q(3872) => [
+      q(Lega-Mwenga),
+      ],
+   q(3873) => [
+      q(Opuuo),
+      ],
+   q(3874) => [
+      q(Logba),
+      ],
+   q(3875) => [
+      q(Lengo),
+      ],
+   q(3876) => [
+      q(Pahi),
+      ],
+   q(3877) => [
+      q(Longgu),
+      ],
+   q(3878) => [
+      q(Ligenza),
+      ],
+   q(3879) => [
+      q(Laha (Viet Nam)),
+      ],
+   q(3880) => [
+      q(Laha (Indonesia)),
+      ],
+   q(3881) => [
+      q(Lahu Shi),
+      ],
+   q(3882) => [
+      q(Lahul Lohar),
+      ],
+   q(3883) => [
+      q(Lhomi),
+      ],
+   q(3884) => [
+      q(Lahanan),
+      ],
+   q(3885) => [
+      q(Lhokpu),
+      ],
+   q(3886) => [
+      q(Mlahso),
+      ],
+   q(3887) => [
+      q(Lo-Toga),
+      ],
+   q(3888) => [
+      q(Lahu),
+      ],
+   q(3889) => [
+      q(West-Central Limba),
+      ],
+   q(3890) => [
+      q(Likum),
+      ],
+   q(3891) => [
+      q(Hlai),
+      ],
+   q(3892) => [
+      q(Nyindrou),
+      ],
+   q(3893) => [
+      q(Likila),
+      ],
+   q(3894) => [
+      q(Limbu),
+      ],
+   q(3895) => [
+      q(Ligbi),
+      ],
+   q(3896) => [
+      q(Lihir),
+      ],
+   q(3897) => [
+      q(Lingkhim),
+      ],
+   q(3898) => [
+      q(Ligurian),
+      ],
+   q(3899) => [
+      q(Lika),
+      ],
+   q(3900) => [
+      q(Lillooet),
+      ],
+   q(3901) => [
+      q(Liki),
+      ],
+   q(3902) => [
+      q(Sekpele),
+      ],
+   q(3903) => [
+      q(Libido),
+      ],
+   q(3904) => [
+      q(Liberian English),
+      ],
+   q(3905) => [
+      q(Lisu),
+      ],
+   q(3906) => [
+      q(Logorik),
+      ],
+   q(3907) => [
+      q(Liv),
+      ],
+   q(3908) => [
+      q(Col),
+      ],
+   q(3909) => [
+      q(Liabuku),
+      ],
+   q(3910) => [
+      q(Banda-Bambari),
+      ],
+   q(3911) => [
+      q(Libinza),
+      ],
+   q(3912) => [
+      q(Rampi),
+      ],
+   q(3913) => [
+      q(Laiyolo),
+      ],
+   q(3914) => [
+      q(Li'o),
+      ],
+   q(3915) => [
+      q(Lampung Api),
+      ],
+   q(3916) => [
+      q(Lakalei),
+      ],
+   q(3917) => [
+      q(Kabras),
+      q(Lukabaras),
+      ],
+   q(3918) => [
+      q(Kucong),
+      ],
+   q(3919) => [
+      q(Lakonde),
+      ],
+   q(3920) => [
+      q(Kenyi),
+      ],
+   q(3921) => [
+      q(Lakha),
+      ],
+   q(3922) => [
+      q(Laki),
+      ],
+   q(3923) => [
+      q(Remun),
+      ],
+   q(3924) => [
+      q(Laeko-Libuat),
+      ],
+   q(3925) => [
+      q(Lakon),
+      q(Vure),
+      ],
+   q(3926) => [
+      q(Khayo),
+      q(Olukhayo),
+      ],
+   q(3927) => [
+      q(Pari),
+      ],
+   q(3928) => [
+      q(Kisa),
+      q(Olushisa),
+      ],
+   q(3929) => [
+      q(Lakota),
+      ],
+   q(3930) => [
+      q(Lokoya),
+      ],
+   q(3931) => [
+      q(Lala-Roba),
+      ],
+   q(3932) => [
+      q(Lolo),
+      ],
+   q(3933) => [
+      q(Lele (Guinea)),
+      ],
+   q(3934) => [
+      q(Ladin),
+      ],
+   q(3935) => [
+      q(Lele (Papua New Guinea)),
+      ],
+   q(3936) => [
+      q(Hermit),
+      ],
+   q(3937) => [
+      q(Lole),
+      ],
+   q(3938) => [
+      q(Lamu),
+      ],
+   q(3939) => [
+      q(Teke-Laali),
+      ],
+   q(3940) => [
+      q(Ladji Ladji),
+      ],
+   q(3941) => [
+      q(Lelak),
+      ],
+   q(3942) => [
+      q(Lilau),
+      ],
+   q(3943) => [
+      q(Lasalimu),
+      ],
+   q(3944) => [
+      q(Lele (Chad)),
+      ],
+   q(3945) => [
+      q(Khlor),
+      ],
+   q(3946) => [
+      q(North Efate),
+      ],
+   q(3947) => [
+      q(Lolak),
+      ],
+   q(3948) => [
+      q(Lithuanian Sign Language),
+      ],
+   q(3949) => [
+      q(Lau),
+      ],
+   q(3950) => [
+      q(Lauan),
+      ],
+   q(3951) => [
+      q(East Limba),
+      ],
+   q(3952) => [
+      q(Merei),
+      ],
+   q(3953) => [
+      q(Limilngan),
+      ],
+   q(3954) => [
+      q(Lumun),
+      ],
+   q(3955) => [
+      q(Peve),
+      ],
+   q(3956) => [
+      q(South Lembata),
+      ],
+   q(3957) => [
+      q(Lamogai),
+      ],
+   q(3958) => [
+      q(Lambichhong),
+      ],
+   q(3959) => [
+      q(Lombi),
+      ],
+   q(3960) => [
+      q(West Lembata),
+      ],
+   q(3961) => [
+      q(Lamkang),
+      ],
+   q(3962) => [
+      q(Hano),
+      ],
+   q(3963) => [
+      q(Lamam),
+      ],
+   q(3964) => [
+      q(Lambadi),
+      ],
+   q(3965) => [
+      q(Lombard),
+      ],
+   q(3966) => [
+      q(Limbum),
+      ],
+   q(3967) => [
+      q(Lamatuka),
+      ],
+   q(3968) => [
+      q(Lamalera),
+      ],
+   q(3969) => [
+      q(Lamenu),
+      ],
+   q(3970) => [
+      q(Lomaiviti),
+      ],
+   q(3971) => [
+      q(Lake Miwok),
+      ],
+   q(3972) => [
+      q(Laimbue),
+      ],
+   q(3973) => [
+      q(Lamboya),
+      ],
+   q(3974) => [
+      q(Lumbee),
+      ],
+   q(3975) => [
+      q(Langbashe),
+      ],
+   q(3976) => [
+      q(Mbalanhu),
+      ],
+   q(3977) => [
+      q(Lundayeh),
+      q(Lun Bawang),
+      ],
+   q(3978) => [
+      q(Langobardic),
+      ],
+   q(3979) => [
+      q(Lanoh),
+      ],
+   q(3980) => [
+      q(Daantanai'),
+      ],
+   q(3981) => [
+      q(Leningitij),
+      ],
+   q(3982) => [
+      q(South Central Banda),
+      ],
+   q(3983) => [
+      q(Langam),
+      ],
+   q(3984) => [
+      q(Lorediakarkar),
+      ],
+   q(3985) => [
+      q(Lango (Sudan)),
+      ],
+   q(3986) => [
+      q(Lamnso'),
+      ],
+   q(3987) => [
+      q(Longuda),
+      ],
+   q(3988) => [
+      q(Lonzo),
+      ],
+   q(3989) => [
+      q(Loloda),
+      ],
+   q(3990) => [
+      q(Lobi),
+      ],
+   q(3991) => [
+      q(Inonhan),
+      ],
+   q(3992) => [
+      q(Saluan),
+      ],
+   q(3993) => [
+      q(Logol),
+      ],
+   q(3994) => [
+      q(Logo),
+      ],
+   q(3995) => [
+      q(Narim),
+      ],
+   q(3996) => [
+      q(Loma (Cote d'Ivoire)),
+      ],
+   q(3997) => [
+      q(Lou),
+      ],
+   q(3998) => [
+      q(Loko),
+      ],
+   q(3999) => [
+      q(Loma (Liberia)),
+      ],
+   q(4000) => [
+      q(Malawi Lomwe),
+      ],
+   q(4001) => [
+      q(Lombo),
+      ],
+   q(4002) => [
+      q(Lopa),
+      ],
+   q(4003) => [
+      q(Lobala),
+      ],
+   q(4004) => [
+      q(Teen),
+      ],
+   q(4005) => [
+      q(Loniu),
+      ],
+   q(4006) => [
+      q(Otuho),
+      ],
+   q(4007) => [
+      q(Louisiana Creole French),
+      ],
+   q(4008) => [
+      q(Lopi),
+      ],
+   q(4009) => [
+      q(Tampias Lobu),
+      ],
+   q(4010) => [
+      q(Loun),
+      ],
+   q(4011) => [
+      q(Loke),
+      ],
+   q(4012) => [
+      q(Lelepa),
+      ],
+   q(4013) => [
+      q(Lepki),
+      ],
+   q(4014) => [
+      q(Long Phuri Naga),
+      ],
+   q(4015) => [
+      q(Lipo),
+      ],
+   q(4016) => [
+      q(Lopit),
+      ],
+   q(4017) => [
+      q(Rara Bakati'),
+      ],
+   q(4018) => [
+      q(Northern Luri),
+      ],
+   q(4019) => [
+      q(Laurentian),
+      ],
+   q(4020) => [
+      q(Laragia),
+      ],
+   q(4021) => [
+      q(Marachi),
+      q(Olumarachi),
+      ],
+   q(4022) => [
+      q(Loarki),
+      ],
+   q(4023) => [
+      q(Lari),
+      ],
+   q(4024) => [
+      q(Marama),
+      q(Olumarama),
+      ],
+   q(4025) => [
+      q(Lorang),
+      ],
+   q(4026) => [
+      q(Laro),
+      ],
+   q(4027) => [
+      q(Southern Yamphu),
+      ],
+   q(4028) => [
+      q(Larantuka Malay),
+      ],
+   q(4029) => [
+      q(Larevat),
+      ],
+   q(4030) => [
+      q(Lemerig),
+      ],
+   q(4031) => [
+      q(Lasgerdi),
+      ],
+   q(4032) => [
+      q(Lishana Deni),
+      ],
+   q(4033) => [
+      q(Lusengo),
+      ],
+   q(4034) => [
+      q(Lyons Sign Language),
+      ],
+   q(4035) => [
+      q(Lish),
+      ],
+   q(4036) => [
+      q(Lashi),
+      ],
+   q(4037) => [
+      q(Latvian Sign Language),
+      ],
+   q(4038) => [
+      q(Saamia),
+      q(Olusamia),
+      ],
+   q(4039) => [
+      q(Laos Sign Language),
+      ],
+   q(4040) => [
+      q(Panamanian Sign Language),
+      q(Lengua de Senas Panamenas),
+      ],
+   q(4041) => [
+      q(Aruop),
+      ],
+   q(4042) => [
+      q(Lasi),
+      ],
+   q(4043) => [
+      q(Trinidad and Tobago Sign Language),
+      ],
+   q(4044) => [
+      q(Mauritian Sign Language),
+      ],
+   q(4045) => [
+      q(Late Middle Chinese),
+      ],
+   q(4046) => [
+      q(Latgalian),
+      ],
+   q(4047) => [
+      q(Leti (Indonesia)),
+      ],
+   q(4048) => [
+      q(Latunde),
+      ],
+   q(4049) => [
+      q(Tsotso),
+      q(Olutsotso),
+      ],
+   q(4050) => [
+      q(Tachoni),
+      q(Lutachoni),
+      ],
+   q(4051) => [
+      q(Latu),
+      ],
+   q(4052) => [
+      q(Aringa),
+      ],
+   q(4053) => [
+      q(Ludian),
+      ],
+   q(4054) => [
+      q(Luvale),
+      ],
+   q(4055) => [
+      q(Laua),
+      ],
+   q(4056) => [
+      q(Luna),
+      ],
+   q(4057) => [
+      q(Lunanakha),
+      ],
+   q(4058) => [
+      q(Olu'bo),
+      ],
+   q(4059) => [
+      q(Luimbi),
+      ],
+   q(4060) => [
+      q(Lumbu),
+      ],
+   q(4061) => [
+      q(Lucumi),
+      ],
+   q(4062) => [
+      q(Laura),
+      ],
+   q(4063) => [
+      q(Lushootseed),
+      ],
+   q(4064) => [
+      q(Lumba-Yakkha),
+      ],
+   q(4065) => [
+      q(Luwati),
+      ],
+   q(4066) => [
+      q(Luo (Cameroon)),
+      ],
+   q(4067) => [
+      q(Luyia),
+      q(Oluluyia),
+      ],
+   q(4068) => [
+      q(Southern Luri),
+      ],
+   q(4069) => [
+      q(Maku'a),
+      ],
+   q(4070) => [
+      q(Lavukaleve),
+      ],
+   q(4071) => [
+      q(Standard Latvian),
+      ],
+   q(4072) => [
+      q(Levuka),
+      ],
+   q(4073) => [
+      q(Lwalu),
+      ],
+   q(4074) => [
+      q(Lewo Eleng),
+      ],
+   q(4075) => [
+      q(Wanga),
+      q(Oluwanga),
+      ],
+   q(4076) => [
+      q(White Lachi),
+      ],
+   q(4077) => [
+      q(Eastern Lawa),
+      ],
+   q(4078) => [
+      q(Laomian),
+      ],
+   q(4079) => [
+      q(Luwo),
+      ],
+   q(4080) => [
+      q(Lewotobi),
+      ],
+   q(4081) => [
+      q(Lewo),
+      ],
+   q(4082) => [
+      q(Layakha),
+      ],
+   q(4083) => [
+      q(Lyngngam),
+      ],
+   q(4084) => [
+      q(Luyana),
+      ],
+   q(4085) => [
+      q(Literary Chinese),
+      ],
+   q(4086) => [
+      q(Litzlitz),
+      ],
+   q(4087) => [
+      q(Leinong Naga),
+      ],
+   q(4088) => [
+      q(Laz),
+      ],
+   q(4089) => [
+      q(San Jeronimo Tecoatl Mazatec),
+      ],
+   q(4090) => [
+      q(Yutanduchi Mixtec),
+      ],
+   q(4091) => [
+      q(Bo-Rukul),
+      ],
+   q(4092) => [
+      q(Mafa),
+      ],
+   q(4093) => [
+      q(Jalapa De Diaz Mazatec),
+      ],
+   q(4094) => [
+      q(Mam),
+      ],
+   q(4095) => [
+      q(Chiquihuitlan Mazatec),
+      ],
+   q(4096) => [
+      q(San Francisco Matlatzinca),
+      ],
+   q(4097) => [
+      q(Huautla Mazatec),
+      ],
+   q(4098) => [
+      q(Satere-Mawe),
+      ],
+   q(4099) => [
+      q(Mampruli),
+      ],
+   q(4100) => [
+      q(North Moluccan Malay),
+      ],
+   q(4101) => [
+      q(Central Mazahua),
+      ],
+   q(4102) => [
+      q(Higaonon),
+      ],
+   q(4103) => [
+      q(Western Bukidnon Manobo),
+      ],
+   q(4104) => [
+      q(Macushi),
+      ],
+   q(4105) => [
+      q(Dibabawon Manobo),
+      ],
+   q(4106) => [
+      q(Molale),
+      ],
+   q(4107) => [
+      q(Baba Malay),
+      ],
+   q(4108) => [
+      q(Mangseng),
+      ],
+   q(4109) => [
+      q(Ilianen Manobo),
+      ],
+   q(4110) => [
+      q(Nadeb),
+      ],
+   q(4111) => [
+      q(Malol),
+      ],
+   q(4112) => [
+      q(Maxakali),
+      ],
+   q(4113) => [
+      q(Ombamba),
+      ],
+   q(4114) => [
+      q(Macaguan),
+      ],
+   q(4115) => [
+      q(Mbo (Cameroon)),
+      ],
+   q(4116) => [
+      q(Malayo),
+      ],
+   q(4117) => [
+      q(Maisin),
+      ],
+   q(4118) => [
+      q(Nukak Maku),
+      ],
+   q(4119) => [
+      q(Sarangani Manobo),
+      ],
+   q(4120) => [
+      q(Matigsalug Manobo),
+      ],
+   q(4121) => [
+      q(Mbula-Bwazza),
+      ],
+   q(4122) => [
+      q(Mbulungish),
+      ],
+   q(4123) => [
+      q(Maring),
+      ],
+   q(4124) => [
+      q(Mari (East Sepik Province)),
+      ],
+   q(4125) => [
+      q(Memoni),
+      ],
+   q(4126) => [
+      q(Amoltepec Mixtec),
+      ],
+   q(4127) => [
+      q(Maca),
+      ],
+   q(4128) => [
+      q(Machiguenga),
+      ],
+   q(4129) => [
+      q(Bitur),
+      ],
+   q(4130) => [
+      q(Sharanahua),
+      ],
+   q(4131) => [
+      q(Itundujia Mixtec),
+      ],
+   q(4132) => [
+      q(Matses),
+      ],
+   q(4133) => [
+      q(Mapoyo),
+      ],
+   q(4134) => [
+      q(Maquiritari),
+      ],
+   q(4135) => [
+      q(Mese),
+      ],
+   q(4136) => [
+      q(Mvanip),
+      ],
+   q(4137) => [
+      q(Mbunda),
+      ],
+   q(4138) => [
+      q(Macaguaje),
+      ],
+   q(4139) => [
+      q(Malaccan Creole Portuguese),
+      ],
+   q(4140) => [
+      q(Masana),
+      ],
+   q(4141) => [
+      q(Coatlan Mixe),
+      ],
+   q(4142) => [
+      q(Makaa),
+      ],
+   q(4143) => [
+      q(Ese),
+      ],
+   q(4144) => [
+      q(Menya),
+      ],
+   q(4145) => [
+      q(Mambai),
+      ],
+   q(4146) => [
+      q(Mengisa),
+      ],
+   q(4147) => [
+      q(Cameroon Mambila),
+      ],
+   q(4148) => [
+      q(Minanibai),
+      ],
+   q(4149) => [
+      q(Mawa (Chad)),
+      ],
+   q(4150) => [
+      q(Mpiemo),
+      ],
+   q(4151) => [
+      q(South Watut),
+      ],
+   q(4152) => [
+      q(Mawan),
+      ],
+   q(4153) => [
+      q(Mada (Nigeria)),
+      ],
+   q(4154) => [
+      q(Morigi),
+      ],
+   q(4155) => [
+      q(Male (Papua New Guinea)),
+      ],
+   q(4156) => [
+      q(Mbum),
+      ],
+   q(4157) => [
+      q(Maba (Chad)),
+      ],
+   q(4158) => [
+      q(Massalat),
+      ],
+   q(4159) => [
+      q(Maguindanaon),
+      ],
+   q(4160) => [
+      q(Mamvu),
+      ],
+   q(4161) => [
+      q(Mangbetu),
+      ],
+   q(4162) => [
+      q(Mangbutu),
+      ],
+   q(4163) => [
+      q(Maltese Sign Language),
+      ],
+   q(4164) => [
+      q(Mayogo),
+      ],
+   q(4165) => [
+      q(Mbati),
+      ],
+   q(4166) => [
+      q(Mbala),
+      ],
+   q(4167) => [
+      q(Mbole),
+      ],
+   q(4168) => [
+      q(Maria (Papua New Guinea)),
+      ],
+   q(4169) => [
+      q(Mbere),
+      ],
+   q(4170) => [
+      q(Mboko),
+      ],
+   q(4171) => [
+      q(Santa Lucia Monteverde Mixtec),
+      ],
+   q(4172) => [
+      q(Mbosi),
+      ],
+   q(4173) => [
+      q(Dizin),
+      ],
+   q(4174) => [
+      q(Male (Ethiopia)),
+      ],
+   q(4175) => [
+      q(Surui Do Para),
+      ],
+   q(4176) => [
+      q(Menka),
+      ],
+   q(4177) => [
+      q(Ikobi),
+      ],
+   q(4178) => [
+      q(Mara),
+      ],
+   q(4179) => [
+      q(Melpa),
+      ],
+   q(4180) => [
+      q(Mengen),
+      ],
+   q(4181) => [
+      q(Megam),
+      ],
+   q(4182) => [
+      q(Mea),
+      ],
+   q(4183) => [
+      q(Southwestern Tlaxiaco Mixtec),
+      ],
+   q(4184) => [
+      q(Midob),
+      ],
+   q(4185) => [
+      q(Meyah),
+      ],
+   q(4186) => [
+      q(Mekeo),
+      ],
+   q(4187) => [
+      q(Central Melanau),
+      ],
+   q(4188) => [
+      q(Mangala),
+      ],
+   q(4189) => [
+      q(Kedah Malay),
+      ],
+   q(4190) => [
+      q(Miriwung),
+      ],
+   q(4191) => [
+      q(Merey),
+      ],
+   q(4192) => [
+      q(Meru),
+      ],
+   q(4193) => [
+      q(Masmaje),
+      ],
+   q(4194) => [
+      q(Mato),
+      ],
+   q(4195) => [
+      q(Motu),
+      ],
+   q(4196) => [
+      q(Mann),
+      ],
+   q(4197) => [
+      q(Maaka),
+      ],
+   q(4198) => [
+      q(Hassaniyya),
+      ],
+   q(4199) => [
+      q(Menominee),
+      ],
+   q(4200) => [
+      q(Pattani Malay),
+      ],
+   q(4201) => [
+      q(Bangka),
+      ],
+   q(4202) => [
+      q(Mba),
+      ],
+   q(4203) => [
+      q(Mendankwe-Nkwen),
+      ],
+   q(4204) => [
+      q(Morisyen),
+      ],
+   q(4205) => [
+      q(Naki),
+      ],
+   q(4206) => [
+      q(Mixifore),
+      ],
+   q(4207) => [
+      q(Matal),
+      ],
+   q(4208) => [
+      q(Wandala),
+      ],
+   q(4209) => [
+      q(Mefele),
+      ],
+   q(4210) => [
+      q(North Mofu),
+      ],
+   q(4211) => [
+      q(Putai),
+      ],
+   q(4212) => [
+      q(Marghi South),
+      ],
+   q(4213) => [
+      q(Cross River Mbembe),
+      ],
+   q(4214) => [
+      q(Mbe),
+      ],
+   q(4215) => [
+      q(Makassar Malay),
+      ],
+   q(4216) => [
+      q(Moba),
+      ],
+   q(4217) => [
+      q(Marithiel),
+      ],
+   q(4218) => [
+      q(Mexican Sign Language),
+      ],
+   q(4219) => [
+      q(Mokerang),
+      ],
+   q(4220) => [
+      q(Mbwela),
+      ],
+   q(4221) => [
+      q(Mandjak),
+      ],
+   q(4222) => [
+      q(Mulaha),
+      ],
+   q(4223) => [
+      q(Melo),
+      ],
+   q(4224) => [
+      q(Mayo),
+      ],
+   q(4225) => [
+      q(Mabaan),
+      ],
+   q(4226) => [
+      q(Mararit),
+      ],
+   q(4227) => [
+      q(Morokodo),
+      ],
+   q(4228) => [
+      q(Moru),
+      ],
+   q(4229) => [
+      q(Mango),
+      ],
+   q(4230) => [
+      q(Maklew),
+      ],
+   q(4231) => [
+      q(Mpumpong),
+      ],
+   q(4232) => [
+      q(Makhuwa-Meetto),
+      ],
+   q(4233) => [
+      q(Lijili),
+      ],
+   q(4234) => [
+      q(Abureni),
+      ],
+   q(4235) => [
+      q(Mawes),
+      ],
+   q(4236) => [
+      q(Maleu-Kilenge),
+      ],
+   q(4237) => [
+      q(Mambae),
+      ],
+   q(4238) => [
+      q(Mbangi),
+      ],
+   q(4239) => [
+      q(Meta'),
+      ],
+   q(4240) => [
+      q(Eastern Magar),
+      ],
+   q(4241) => [
+      q(Malila),
+      ],
+   q(4242) => [
+      q(Mambwe-Lungu),
+      ],
+   q(4243) => [
+      q(Manda (Tanzania)),
+      ],
+   q(4244) => [
+      q(Mongol),
+      ],
+   q(4245) => [
+      q(Mailu),
+      ],
+   q(4246) => [
+      q(Matengo),
+      ],
+   q(4247) => [
+      q(Matumbi),
+      ],
+   q(4248) => [
+      q(Mbunga),
+      ],
+   q(4249) => [
+      q(Mbugwe),
+      ],
+   q(4250) => [
+      q(Manda (India)),
+      ],
+   q(4251) => [
+      q(Mahongwe),
+      ],
+   q(4252) => [
+      q(Mocho),
+      ],
+   q(4253) => [
+      q(Mbugu),
+      ],
+   q(4254) => [
+      q(Besisi),
+      q(Mah Meri),
+      ],
+   q(4255) => [
+      q(Mamaa),
+      ],
+   q(4256) => [
+      q(Margu),
+      ],
+   q(4257) => [
+      q(Maskoy Pidgin),
+      ],
+   q(4258) => [
+      q(Ma'di),
+      ],
+   q(4259) => [
+      q(Mogholi),
+      ],
+   q(4260) => [
+      q(Mungaka),
+      ],
+   q(4261) => [
+      q(Mauwake),
+      ],
+   q(4262) => [
+      q(Makhuwa-Moniga),
+      ],
+   q(4263) => [
+      q(Mocheno),
+      ],
+   q(4264) => [
+      q(Mashi (Zambia)),
+      ],
+   q(4265) => [
+      q(Balinese Malay),
+      ],
+   q(4266) => [
+      q(Mandan),
+      ],
+   q(4267) => [
+      q(Eastern Mari),
+      ],
+   q(4268) => [
+      q(Buru (Indonesia)),
+      ],
+   q(4269) => [
+      q(Mandahuaca),
+      ],
+   q(4270) => [
+      q(Digaro-Mishmi),
+      q(Darang Deng),
+      ],
+   q(4271) => [
+      q(Mbukushu),
+      ],
+   q(4272) => [
+      q(Maru),
+      q(Lhaovo),
+      ],
+   q(4273) => [
+      q(Ma'anyan),
+      ],
+   q(4274) => [
+      q(Mor (Mor Islands)),
+      ],
+   q(4275) => [
+      q(Miami),
+      ],
+   q(4276) => [
+      q(Atatlahuca Mixtec),
+      ],
+   q(4277) => [
+      q(Mandaic),
+      ],
+   q(4278) => [
+      q(Ocotepec Mixtec),
+      ],
+   q(4279) => [
+      q(Mofu-Gudur),
+      ],
+   q(4280) => [
+      q(San Miguel El Grande Mixtec),
+      ],
+   q(4281) => [
+      q(Chayuco Mixtec),
+      ],
+   q(4282) => [
+      q(Chigmecatitlan Mixtec),
+      ],
+   q(4283) => [
+      q(Abar),
+      ],
+   q(4284) => [
+      q(Mikasuki),
+      ],
+   q(4285) => [
+      q(Penoles Mixtec),
+      ],
+   q(4286) => [
+      q(Alacatlatzala Mixtec),
+      ],
+   q(4287) => [
+      q(Pinotepa Nacional Mixtec),
+      ],
+   q(4288) => [
+      q(Apasco-Apoala Mixtec),
+      ],
+   q(4289) => [
+      q(Miskito),
+      ],
+   q(4290) => [
+      q(Isthmus Mixe),
+      ],
+   q(4291) => [
+      q(Southern Puebla Mixtec),
+      ],
+   q(4292) => [
+      q(Cacaloxtepec Mixtec),
+      ],
+   q(4293) => [
+      q(Akoye),
+      ],
+   q(4294) => [
+      q(Mixtepec Mixtec),
+      ],
+   q(4295) => [
+      q(Ayutla Mixtec),
+      ],
+   q(4296) => [
+      q(Coatzospan Mixtec),
+      ],
+   q(4297) => [
+      q(San Juan Colorado Mixtec),
+      ],
+   q(4298) => [
+      q(Northwest Maidu),
+      ],
+   q(4299) => [
+      q(Muskum),
+      ],
+   q(4300) => [
+      q(Tu),
+      ],
+   q(4301) => [
+      q(Mwera (Nyasa)),
+      ],
+   q(4302) => [
+      q(Kim Mun),
+      ],
+   q(4303) => [
+      q(Mawak),
+      ],
+   q(4304) => [
+      q(Matukar),
+      ],
+   q(4305) => [
+      q(Mandeali),
+      ],
+   q(4306) => [
+      q(Medebur),
+      ],
+   q(4307) => [
+      q(Ma (Papua New Guinea)),
+      ],
+   q(4308) => [
+      q(Malankuravan),
+      ],
+   q(4309) => [
+      q(Malapandaram),
+      ],
+   q(4310) => [
+      q(Malaryan),
+      ],
+   q(4311) => [
+      q(Malavedan),
+      ],
+   q(4312) => [
+      q(Miship),
+      ],
+   q(4313) => [
+      q(Sauria Paharia),
+      ],
+   q(4314) => [
+      q(Manna-Dora),
+      ],
+   q(4315) => [
+      q(Mannan),
+      ],
+   q(4316) => [
+      q(Karbi),
+      ],
+   q(4317) => [
+      q(Mahali),
+      ],
+   q(4318) => [
+      q(Mahican),
+      ],
+   q(4319) => [
+      q(Majhi),
+      ],
+   q(4320) => [
+      q(Mbre),
+      ],
+   q(4321) => [
+      q(Mal Paharia),
+      ],
+   q(4322) => [
+      q(Siliput),
+      ],
+   q(4323) => [
+      q(Mawchi),
+      ],
+   q(4324) => [
+      q(Miya),
+      ],
+   q(4325) => [
+      q(Mak (China)),
+      ],
+   q(4326) => [
+      q(Dhatki),
+      ],
+   q(4327) => [
+      q(Mokilese),
+      ],
+   q(4328) => [
+      q(Byep),
+      ],
+   q(4329) => [
+      q(Mokole),
+      ],
+   q(4330) => [
+      q(Moklen),
+      ],
+   q(4331) => [
+      q(Kupang Malay),
+      ],
+   q(4332) => [
+      q(Mingang Doso),
+      ],
+   q(4333) => [
+      q(Moikodi),
+      ],
+   q(4334) => [
+      q(Bay Miwok),
+      ],
+   q(4335) => [
+      q(Malas),
+      ],
+   q(4336) => [
+      q(Silacayoapan Mixtec),
+      ],
+   q(4337) => [
+      q(Vamale),
+      ],
+   q(4338) => [
+      q(Konyanka Maninka),
+      ],
+   q(4339) => [
+      q(Mafea),
+      ],
+   q(4340) => [
+      q(Kituba (Congo)),
+      ],
+   q(4341) => [
+      q(Kinamiging Manobo),
+      ],
+   q(4342) => [
+      q(East Makian),
+      ],
+   q(4343) => [
+      q(Makasae),
+      ],
+   q(4344) => [
+      q(Malo),
+      ],
+   q(4345) => [
+      q(Mbule),
+      ],
+   q(4346) => [
+      q(Cao Lan),
+      ],
+   q(4347) => [
+      q(Malakhel),
+      ],
+   q(4348) => [
+      q(Manambu),
+      ],
+   q(4349) => [
+      q(Mal),
+      ],
+   q(4350) => [
+      q(Mape),
+      ],
+   q(4351) => [
+      q(Malimpung),
+      ],
+   q(4352) => [
+      q(Miltu),
+      ],
+   q(4353) => [
+      q(Ilwana),
+      q(Kiwilwana),
+      ],
+   q(4354) => [
+      q(Malua Bay),
+      ],
+   q(4355) => [
+      q(Mulam),
+      ],
+   q(4356) => [
+      q(Malango),
+      ],
+   q(4357) => [
+      q(Mlomp),
+      ],
+   q(4358) => [
+      q(Bargam),
+      ],
+   q(4359) => [
+      q(Western Maninkakan),
+      ],
+   q(4360) => [
+      q(Vame),
+      ],
+   q(4361) => [
+      q(Masalit),
+      ],
+   q(4362) => [
+      q(To'abaita),
+      ],
+   q(4363) => [
+      q(Motlav),
+      q(Mwotlap),
+      ],
+   q(4364) => [
+      q(Moloko),
+      ],
+   q(4365) => [
+      q(Malfaxal),
+      q(Naha'ai),
+      ],
+   q(4366) => [
+      q(Malaynon),
+      ],
+   q(4367) => [
+      q(Mama),
+      ],
+   q(4368) => [
+      q(Momina),
+      ],
+   q(4369) => [
+      q(Michoacan Mazahua),
+      ],
+   q(4370) => [
+      q(Maonan),
+      ],
+   q(4371) => [
+      q(Mae),
+      ],
+   q(4372) => [
+      q(Mundat),
+      ],
+   q(4373) => [
+      q(North Ambrym),
+      ],
+   q(4374) => [
+      q(Mehinaku),
+      ],
+   q(4375) => [
+      q(Musar),
+      ],
+   q(4376) => [
+      q(Majhwar),
+      ],
+   q(4377) => [
+      q(Mukha-Dora),
+      ],
+   q(4378) => [
+      q(Man Met),
+      ],
+   q(4379) => [
+      q(Maii),
+      ],
+   q(4380) => [
+      q(Mamanwa),
+      ],
+   q(4381) => [
+      q(Mangga Buang),
+      ],
+   q(4382) => [
+      q(Siawi),
+      ],
+   q(4383) => [
+      q(Musak),
+      ],
+   q(4384) => [
+      q(Western Xiangxi Miao),
+      ],
+   q(4385) => [
+      q(Malalamai),
+      ],
+   q(4386) => [
+      q(Mmaala),
+      ],
+   q(4387) => [
+      q(Miriti),
+      ],
+   q(4388) => [
+      q(Emae),
+      ],
+   q(4389) => [
+      q(Madak),
+      ],
+   q(4390) => [
+      q(Migaama),
+      ],
+   q(4391) => [
+      q(Mabaale),
+      ],
+   q(4392) => [
+      q(Mbula),
+      ],
+   q(4393) => [
+      q(Muna),
+      ],
+   q(4394) => [
+      q(Monde),
+      ],
+   q(4395) => [
+      q(Naba),
+      ],
+   q(4396) => [
+      q(Mundani),
+      ],
+   q(4397) => [
+      q(Eastern Mnong),
+      ],
+   q(4398) => [
+      q(Mono (Democratic Republic of Congo)),
+      ],
+   q(4399) => [
+      q(Munji),
+      ],
+   q(4400) => [
+      q(Mandinka),
+      ],
+   q(4401) => [
+      q(Tiale),
+      ],
+   q(4402) => [
+      q(Mapena),
+      ],
+   q(4403) => [
+      q(Southern Mnong),
+      ],
+   q(4404) => [
+      q(Min Bei Chinese),
+      ],
+   q(4405) => [
+      q(Minriq),
+      ],
+   q(4406) => [
+      q(Mono (USA)),
+      ],
+   q(4407) => [
+      q(Mansi),
+      ],
+   q(4408) => [
+      q(Maykulan),
+      ],
+   q(4409) => [
+      q(Mer),
+      ],
+   q(4410) => [
+      q(Rennell-Bellona),
+      ],
+   q(4411) => [
+      q(Mon),
+      ],
+   q(4412) => [
+      q(Manikion),
+      ],
+   q(4413) => [
+      q(Manyawa),
+      ],
+   q(4414) => [
+      q(Moni),
+      ],
+   q(4415) => [
+      q(Mwan),
+      ],
+   q(4416) => [
+      q(Mocovi),
+      ],
+   q(4417) => [
+      q(Mobilian),
+      ],
+   q(4418) => [
+      q(Montagnais),
+      ],
+   q(4419) => [
+      q(Mongondow),
+      ],
+   q(4420) => [
+      q(Mboi),
+      ],
+   q(4421) => [
+      q(Monzombo),
+      ],
+   q(4422) => [
+      q(Morori),
+      ],
+   q(4423) => [
+      q(Mangue),
+      ],
+   q(4424) => [
+      q(Monom),
+      ],
+   q(4425) => [
+      q(Mopan Maya),
+      ],
+   q(4426) => [
+      q(Mor (Bomberai Peninsula)),
+      ],
+   q(4427) => [
+      q(Moro),
+      ],
+   q(4428) => [
+      q(Mogum),
+      ],
+   q(4429) => [
+      q(Mohave),
+      ],
+   q(4430) => [
+      q(Moi (Congo)),
+      ],
+   q(4431) => [
+      q(Molima),
+      ],
+   q(4432) => [
+      q(Shekkacho),
+      ],
+   q(4433) => [
+      q(Mukulu),
+      q(Gergiko),
+      ],
+   q(4434) => [
+      q(Mpoto),
+      ],
+   q(4435) => [
+      q(Mullukmulluk),
+      ],
+   q(4436) => [
+      q(Mangarayi),
+      ],
+   q(4437) => [
+      q(Machinere),
+      ],
+   q(4438) => [
+      q(Majang),
+      ],
+   q(4439) => [
+      q(Marba),
+      ],
+   q(4440) => [
+      q(Maung),
+      ],
+   q(4441) => [
+      q(Mpade),
+      ],
+   q(4442) => [
+      q(Martu Wangka),
+      ],
+   q(4443) => [
+      q(Mbara (Chad)),
+      ],
+   q(4444) => [
+      q(Middle Watut),
+      ],
+   q(4445) => [
+      q(Yosondua Mixtec),
+      ],
+   q(4446) => [
+      q(Mindiri),
+      ],
+   q(4447) => [
+      q(Miu),
+      ],
+   q(4448) => [
+      q(Migabac),
+      ],
+   q(4449) => [
+      q(Matis),
+      ],
+   q(4450) => [
+      q(Vangunu),
+      ],
+   q(4451) => [
+      q(Dadibi),
+      ],
+   q(4452) => [
+      q(Mian),
+      ],
+   q(4453) => [
+      q(Makurap),
+      ],
+   q(4454) => [
+      q(Mungkip),
+      ],
+   q(4455) => [
+      q(Mapidian),
+      ],
+   q(4456) => [
+      q(Misima-Panaeati),
+      ],
+   q(4457) => [
+      q(Mapia),
+      ],
+   q(4458) => [
+      q(Mpi),
+      ],
+   q(4459) => [
+      q(Maba (Indonesia)),
+      ],
+   q(4460) => [
+      q(Mbuko),
+      ],
+   q(4461) => [
+      q(Mangole),
+      ],
+   q(4462) => [
+      q(Matepi),
+      ],
+   q(4463) => [
+      q(Momuna),
+      ],
+   q(4464) => [
+      q(Kota Bangun Kutai Malay),
+      ],
+   q(4465) => [
+      q(Tlazoyaltepec Mixtec),
+      ],
+   q(4466) => [
+      q(Mariri),
+      ],
+   q(4467) => [
+      q(Mamasa),
+      ],
+   q(4468) => [
+      q(Rajah Kabunsuwan Manobo),
+      ],
+   q(4469) => [
+      q(Mbelime),
+      ],
+   q(4470) => [
+      q(South Marquesan),
+      ],
+   q(4471) => [
+      q(Moronene),
+      ],
+   q(4472) => [
+      q(Modole),
+      ],
+   q(4473) => [
+      q(Manipa),
+      ],
+   q(4474) => [
+      q(Minokok),
+      ],
+   q(4475) => [
+      q(Mander),
+      ],
+   q(4476) => [
+      q(West Makian),
+      ],
+   q(4477) => [
+      q(Mok),
+      ],
+   q(4478) => [
+      q(Mandari),
+      ],
+   q(4479) => [
+      q(Mosimo),
+      ],
+   q(4480) => [
+      q(Murupi),
+      ],
+   q(4481) => [
+      q(Mamuju),
+      ],
+   q(4482) => [
+      q(Manggarai),
+      ],
+   q(4483) => [
+      q(Pano),
+      ],
+   q(4484) => [
+      q(Mlabri),
+      ],
+   q(4485) => [
+      q(Marino),
+      ],
+   q(4486) => [
+      q(Maricopa),
+      ],
+   q(4487) => [
+      q(Western Magar),
+      ],
+   q(4488) => [
+      q(Martha's Vineyard Sign Language),
+      ],
+   q(4489) => [
+      q(Elseng),
+      ],
+   q(4490) => [
+      q(Mising),
+      ],
+   q(4491) => [
+      q(Mara Chin),
+      ],
+   q(4492) => [
+      q(Western Mari),
+      ],
+   q(4493) => [
+      q(Hmwaveke),
+      ],
+   q(4494) => [
+      q(Mortlockese),
+      ],
+   q(4495) => [
+      q(Merlav),
+      q(Mwerlap),
+      ],
+   q(4496) => [
+      q(Cheke Holo),
+      ],
+   q(4497) => [
+      q(Mru),
+      ],
+   q(4498) => [
+      q(Morouas),
+      ],
+   q(4499) => [
+      q(North Marquesan),
+      ],
+   q(4500) => [
+      q(Maria (India)),
+      ],
+   q(4501) => [
+      q(Maragus),
+      ],
+   q(4502) => [
+      q(Marghi Central),
+      ],
+   q(4503) => [
+      q(Mono (Cameroon)),
+      ],
+   q(4504) => [
+      q(Mangareva),
+      ],
+   q(4505) => [
+      q(Maranao),
+      ],
+   q(4506) => [
+      q(Maremgi),
+      q(Dineor),
+      ],
+   q(4507) => [
+      q(Mandaya),
+      ],
+   q(4508) => [
+      q(Marind),
+      ],
+   q(4509) => [
+      q(Masbatenyo),
+      ],
+   q(4510) => [
+      q(Sankaran Maninka),
+      ],
+   q(4511) => [
+      q(Yucatec Maya Sign Language),
+      ],
+   q(4512) => [
+      q(Musey),
+      ],
+   q(4513) => [
+      q(Mekwei),
+      ],
+   q(4514) => [
+      q(Moraid),
+      ],
+   q(4515) => [
+      q(Masikoro Malagasy),
+      ],
+   q(4516) => [
+      q(Sabah Malay),
+      ],
+   q(4517) => [
+      q(Ma (Democratic Republic of Congo)),
+      ],
+   q(4518) => [
+      q(Mansaka),
+      ],
+   q(4519) => [
+      q(Molof),
+      q(Poule),
+      ],
+   q(4520) => [
+      q(Agusan Manobo),
+      ],
+   q(4521) => [
+      q(Vures),
+      ],
+   q(4522) => [
+      q(Mombum),
+      ],
+   q(4523) => [
+      q(Maritsaua),
+      ],
+   q(4524) => [
+      q(Caac),
+      ],
+   q(4525) => [
+      q(Mongolian Sign Language),
+      ],
+   q(4526) => [
+      q(West Masela),
+      ],
+   q(4527) => [
+      q(Musom),
+      ],
+   q(4528) => [
+      q(Maslam),
+      ],
+   q(4529) => [
+      q(Mansoanka),
+      ],
+   q(4530) => [
+      q(Moresada),
+      ],
+   q(4531) => [
+      q(Aruamu),
+      ],
+   q(4532) => [
+      q(Momare),
+      ],
+   q(4533) => [
+      q(Cotabato Manobo),
+      ],
+   q(4534) => [
+      q(Anyin Morofo),
+      ],
+   q(4535) => [
+      q(Munit),
+      ],
+   q(4536) => [
+      q(Mualang),
+      ],
+   q(4537) => [
+      q(Mono (Solomon Islands)),
+      ],
+   q(4538) => [
+      q(Murik (Papua New Guinea)),
+      ],
+   q(4539) => [
+      q(Una),
+      ],
+   q(4540) => [
+      q(Munggui),
+      ],
+   q(4541) => [
+      q(Maiwa (Papua New Guinea)),
+      ],
+   q(4542) => [
+      q(Moskona),
+      ],
+   q(4543) => [
+      q(Mbe'),
+      ],
+   q(4544) => [
+      q(Montol),
+      ],
+   q(4545) => [
+      q(Mator),
+      ],
+   q(4546) => [
+      q(Matagalpa),
+      ],
+   q(4547) => [
+      q(Totontepec Mixe),
+      ],
+   q(4548) => [
+      q(Wichi Lhamtes Nocten),
+      ],
+   q(4549) => [
+      q(Muong),
+      ],
+   q(4550) => [
+      q(Mewari),
+      ],
+   q(4551) => [
+      q(Yora),
+      ],
+   q(4552) => [
+      q(Mota),
+      ],
+   q(4553) => [
+      q(Tututepec Mixtec),
+      ],
+   q(4554) => [
+      q(Asaro'o),
+      ],
+   q(4555) => [
+      q(Southern Binukidnon),
+      ],
+   q(4556) => [
+      q(Tidaa Mixtec),
+      ],
+   q(4557) => [
+      q(Nabi),
+      ],
+   q(4558) => [
+      q(Mundang),
+      ],
+   q(4559) => [
+      q(Mubi),
+      ],
+   q(4560) => [
+      q(Mbu'),
+      ],
+   q(4561) => [
+      q(Mednyj Aleut),
+      ],
+   q(4562) => [
+      q(Media Lengua),
+      ],
+   q(4563) => [
+      q(Musgu),
+      ],
+   q(4564) => [
+      q(Mundu),
+      ],
+   q(4565) => [
+      q(Musi),
+      ],
+   q(4566) => [
+      q(Mabire),
+      ],
+   q(4567) => [
+      q(Mugom),
+      ],
+   q(4568) => [
+      q(Maiwala),
+      ],
+   q(4569) => [
+      q(Nyong),
+      ],
+   q(4570) => [
+      q(Malvi),
+      ],
+   q(4571) => [
+      q(Eastern Xiangxi Miao),
+      ],
+   q(4572) => [
+      q(Murle),
+      ],
+   q(4573) => [
+      q(Western Muria),
+      ],
+   q(4574) => [
+      q(Yaaku),
+      ],
+   q(4575) => [
+      q(Muthuvan),
+      ],
+   q(4576) => [
+      q(Bo-Ung),
+      ],
+   q(4577) => [
+      q(Muyang),
+      ],
+   q(4578) => [
+      q(Mursi),
+      ],
+   q(4579) => [
+      q(Manam),
+      ],
+   q(4580) => [
+      q(Mattole),
+      ],
+   q(4581) => [
+      q(Mamboru),
+      ],
+   q(4582) => [
+      q(Marwari (Pakistan)),
+      ],
+   q(4583) => [
+      q(Peripheral Mongolian),
+      ],
+   q(4584) => [
+      q(Yucuane Mixtec),
+      ],
+   q(4585) => [
+      q(Mulgi),
+      ],
+   q(4586) => [
+      q(Miyako),
+      ],
+   q(4587) => [
+      q(Mekmek),
+      ],
+   q(4588) => [
+      q(Mbara (Australia)),
+      ],
+   q(4589) => [
+      q(Muya),
+      ],
+   q(4590) => [
+      q(Minaveha),
+      ],
+   q(4591) => [
+      q(Marovo),
+      ],
+   q(4592) => [
+      q(Duri),
+      ],
+   q(4593) => [
+      q(Moere),
+      ],
+   q(4594) => [
+      q(Marau),
+      ],
+   q(4595) => [
+      q(Massep),
+      ],
+   q(4596) => [
+      q(Mpotovoro),
+      ],
+   q(4597) => [
+      q(Marfa),
+      ],
+   q(4598) => [
+      q(Tagal Murut),
+      ],
+   q(4599) => [
+      q(Machinga),
+      ],
+   q(4600) => [
+      q(Meoswar),
+      ],
+   q(4601) => [
+      q(Indus Kohistani),
+      ],
+   q(4602) => [
+      q(Mesqan),
+      ],
+   q(4603) => [
+      q(Mwatebu),
+      ],
+   q(4604) => [
+      q(Juwal),
+      ],
+   q(4605) => [
+      q(Are),
+      ],
+   q(4606) => [
+      q(Mudbura),
+      ],
+   q(4607) => [
+      q(Mwera (Chimwera)),
+      ],
+   q(4608) => [
+      q(Murrinh-Patha),
+      ],
+   q(4609) => [
+      q(Aiklep),
+      ],
+   q(4610) => [
+      q(Mouk-Aria),
+      ],
+   q(4611) => [
+      q(Labo),
+      q(Ninde),
+      ],
+   q(4612) => [
+      q(Maligo),
+      ],
+   q(4613) => [
+      q(Kita Maninkakan),
+      ],
+   q(4614) => [
+      q(Sar),
+      ],
+   q(4615) => [
+      q(Nyamwanga),
+      ],
+   q(4616) => [
+      q(Central Maewo),
+      ],
+   q(4617) => [
+      q(Kala Lagaw Ya),
+      ],
+   q(4618) => [
+      q(Mun Chin),
+      ],
+   q(4619) => [
+      q(Mwimbi-Muthambi),
+      ],
+   q(4620) => [
+      q(Moken),
+      ],
+   q(4621) => [
+      q(Mittu),
+      ],
+   q(4622) => [
+      q(Mentawai),
+      ],
+   q(4623) => [
+      q(Hmong Daw),
+      ],
+   q(4624) => [
+      q(Mediak),
+      ],
+   q(4625) => [
+      q(Mosiro),
+      ],
+   q(4626) => [
+      q(Moingi),
+      ],
+   q(4627) => [
+      q(Northwest Oaxaca Mixtec),
+      ],
+   q(4628) => [
+      q(Tezoatlan Mixtec),
+      ],
+   q(4629) => [
+      q(Manyika),
+      ],
+   q(4630) => [
+      q(Modang),
+      ],
+   q(4631) => [
+      q(Mele-Fila),
+      ],
+   q(4632) => [
+      q(Malgbe),
+      ],
+   q(4633) => [
+      q(Mbangala),
+      ],
+   q(4634) => [
+      q(Mvuba),
+      ],
+   q(4635) => [
+      q(Mozarabic),
+      ],
+   q(4636) => [
+      q(Miju-Mishmi),
+      q(Geman Deng),
+      ],
+   q(4637) => [
+      q(Monumbo),
+      ],
+   q(4638) => [
+      q(Maxi Gbe),
+      ],
+   q(4639) => [
+      q(Meramera),
+      ],
+   q(4640) => [
+      q(Moi (Indonesia)),
+      ],
+   q(4641) => [
+      q(Mbowe),
+      ],
+   q(4642) => [
+      q(Tlahuitoltepec Mixe),
+      ],
+   q(4643) => [
+      q(Juquila Mixe),
+      ],
+   q(4644) => [
+      q(Murik (Malaysia)),
+      ],
+   q(4645) => [
+      q(Huitepec Mixtec),
+      ],
+   q(4646) => [
+      q(Jamiltepec Mixtec),
+      ],
+   q(4647) => [
+      q(Mada (Cameroon)),
+      ],
+   q(4648) => [
+      q(Metlatonoc Mixtec),
+      ],
+   q(4649) => [
+      q(Namo),
+      ],
+   q(4650) => [
+      q(Mahou),
+      q(Mawukakan),
+      ],
+   q(4651) => [
+      q(Southeastern Nochixtlan Mixtec),
+      ],
+   q(4652) => [
+      q(Central Masela),
+      ],
+   q(4653) => [
+      q(Mbay),
+      ],
+   q(4654) => [
+      q(Mayeka),
+      ],
+   q(4655) => [
+      q(Maramba),
+      ],
+   q(4656) => [
+      q(Myene),
+      ],
+   q(4657) => [
+      q(Bambassi),
+      ],
+   q(4658) => [
+      q(Manta),
+      ],
+   q(4659) => [
+      q(Makah),
+      ],
+   q(4660) => [
+      q(Mina (India)),
+      ],
+   q(4661) => [
+      q(Mangayat),
+      ],
+   q(4662) => [
+      q(Mamara Senoufo),
+      ],
+   q(4663) => [
+      q(Moma),
+      ],
+   q(4664) => [
+      q(Me'en),
+      ],
+   q(4665) => [
+      q(Anfillo),
+      ],
+   q(4666) => [
+      q(Piraha),
+      ],
+   q(4667) => [
+      q(Forest Maninka),
+      ],
+   q(4668) => [
+      q(Muniche),
+      ],
+   q(4669) => [
+      q(Mesmes),
+      ],
+   q(4670) => [
+      q(Munduruku),
+      ],
+   q(4671) => [
+      q(Muyuw),
+      ],
+   q(4672) => [
+      q(Masaaba),
+      ],
+   q(4673) => [
+      q(Macuna),
+      ],
+   q(4674) => [
+      q(Classical Mandaic),
+      ],
+   q(4675) => [
+      q(Santa Maria Zacatepec Mixtec),
+      ],
+   q(4676) => [
+      q(Tumzabt),
+      ],
+   q(4677) => [
+      q(Madagascar Sign Language),
+      ],
+   q(4678) => [
+      q(Malimba),
+      ],
+   q(4679) => [
+      q(Morawa),
+      ],
+   q(4680) => [
+      q(Monastic Sign Language),
+      ],
+   q(4681) => [
+      q(Wichi Lhamtes Guisnay),
+      ],
+   q(4682) => [
+      q(Ixcatlan Mazatec),
+      ],
+   q(4683) => [
+      q(Manya),
+      ],
+   q(4684) => [
+      q(Nigeria Mambila),
+      ],
+   q(4685) => [
+      q(Mazatlan Mixe),
+      ],
+   q(4686) => [
+      q(Mumuye),
+      ],
+   q(4687) => [
+      q(Mazanderani),
+      ],
+   q(4688) => [
+      q(Matipuhy),
+      ],
+   q(4689) => [
+      q(Movima),
+      ],
+   q(4690) => [
+      q(Mori Atas),
+      ],
+   q(4691) => [
+      q(Marubo),
+      ],
+   q(4692) => [
+      q(Macanese),
+      ],
+   q(4693) => [
+      q(Mintil),
+      ],
+   q(4694) => [
+      q(Inapang),
+      ],
+   q(4695) => [
+      q(Manza),
+      ],
+   q(4696) => [
+      q(Deg),
+      ],
+   q(4697) => [
+      q(Mawayana),
+      ],
+   q(4698) => [
+      q(Mozambican Sign Language),
+      ],
+   q(4699) => [
+      q(Maiadomu),
+      ],
+   q(4700) => [
+      q(Namla),
+      ],
+   q(4701) => [
+      q(Southern Nambikuara),
+      ],
+   q(4702) => [
+      q(Narak),
+      ],
+   q(4703) => [
+      q(Nijadali),
+      ],
+   q(4704) => [
+      q(Naka'ela),
+      ],
+   q(4705) => [
+      q(Nabak),
+      ],
+   q(4706) => [
+      q(Naga Pidgin),
+      ],
+   q(4707) => [
+      q(Nalu),
+      ],
+   q(4708) => [
+      q(Nakanai),
+      ],
+   q(4709) => [
+      q(Nalik),
+      ],
+   q(4710) => [
+      q(Ngan'gityemerri),
+      ],
+   q(4711) => [
+      q(Min Nan Chinese),
+      ],
+   q(4712) => [
+      q(Naaba),
+      ],
+   q(4713) => [
+      q(Nama (Namibia)),
+      ],
+   q(4714) => [
+      q(Iguta),
+      ],
+   q(4715) => [
+      q(Naasioi),
+      ],
+   q(4716) => [
+      q(Hungworo),
+      ],
+   q(4717) => [
+      q(Nawuri),
+      ],
+   q(4718) => [
+      q(Nakwi),
+      ],
+   q(4719) => [
+      q(Narrinyeri),
+      ],
+   q(4720) => [
+      q(Coatepec Nahuatl),
+      ],
+   q(4721) => [
+      q(Nyemba),
+      ],
+   q(4722) => [
+      q(Ndoe),
+      ],
+   q(4723) => [
+      q(Chang Naga),
+      ],
+   q(4724) => [
+      q(Ngbinda),
+      ],
+   q(4725) => [
+      q(Konyak Naga),
+      ],
+   q(4726) => [
+      q(Nagarchal),
+      ],
+   q(4727) => [
+      q(Ngamo),
+      ],
+   q(4728) => [
+      q(Mao Naga),
+      ],
+   q(4729) => [
+      q(Ngarinman),
+      ],
+   q(4730) => [
+      q(Nake),
+      ],
+   q(4731) => [
+      q(Ngbaka Ma'bo),
+      ],
+   q(4732) => [
+      q(Kuri),
+      ],
+   q(4733) => [
+      q(Nkukoli),
+      ],
+   q(4734) => [
+      q(Nnam),
+      ],
+   q(4735) => [
+      q(Nggem),
+      ],
+   q(4736) => [
+      q(Numana-Nunku-Gbantu-Numbu),
+      ],
+   q(4737) => [
+      q(Namibian Sign Language),
+      ],
+   q(4738) => [
+      q(Na),
+      ],
+   q(4739) => [
+      q(Rongmei Naga),
+      ],
+   q(4740) => [
+      q(Ngamambo),
+      ],
+   q(4741) => [
+      q(Southern Ngbandi),
+      ],
+   q(4742) => [
+      q(Ngura),
+      ],
+   q(4743) => [
+      q(Ningera),
+      ],
+   q(4744) => [
+      q(Iyo),
+      ],
+   q(4745) => [
+      q(Central Nicobarese),
+      ],
+   q(4746) => [
+      q(Ponam),
+      ],
+   q(4747) => [
+      q(Nachering),
+      ],
+   q(4748) => [
+      q(Yale),
+      ],
+   q(4749) => [
+      q(Notsi),
+      ],
+   q(4750) => [
+      q(Nisga'a),
+      ],
+   q(4751) => [
+      q(Central Huasteca Nahuatl),
+      ],
+   q(4752) => [
+      q(Classical Nahuatl),
+      ],
+   q(4753) => [
+      q(Northern Puebla Nahuatl),
+      ],
+   q(4754) => [
+      q(Nakara),
+      ],
+   q(4755) => [
+      q(Michoacan Nahuatl),
+      ],
+   q(4756) => [
+      q(Nambo),
+      ],
+   q(4757) => [
+      q(Nauna),
+      ],
+   q(4758) => [
+      q(Sibe),
+      ],
+   q(4759) => [
+      q(Ndaktup),
+      ],
+   q(4760) => [
+      q(Ncane),
+      ],
+   q(4761) => [
+      q(Nicaraguan Sign Language),
+      ],
+   q(4762) => [
+      q(Chothe Naga),
+      ],
+   q(4763) => [
+      q(Chumburung),
+      ],
+   q(4764) => [
+      q(Central Puebla Nahuatl),
+      ],
+   q(4765) => [
+      q(Natchez),
+      ],
+   q(4766) => [
+      q(Ndasa),
+      ],
+   q(4767) => [
+      q(Kenswei Nsei),
+      ],
+   q(4768) => [
+      q(Ndau),
+      ],
+   q(4769) => [
+      q(Nde-Nsele-Nta),
+      ],
+   q(4770) => [
+      q(Nadruvian),
+      ],
+   q(4771) => [
+      q(Ndengereko),
+      ],
+   q(4772) => [
+      q(Ndali),
+      ],
+   q(4773) => [
+      q(Samba Leko),
+      ],
+   q(4774) => [
+      q(Ndamba),
+      ],
+   q(4775) => [
+      q(Ndaka),
+      ],
+   q(4776) => [
+      q(Ndolo),
+      ],
+   q(4777) => [
+      q(Ndam),
+      ],
+   q(4778) => [
+      q(Ngundi),
+      ],
+   q(4779) => [
+      q(Ndo),
+      ],
+   q(4780) => [
+      q(Ndombe),
+      ],
+   q(4781) => [
+      q(Ndoola),
+      ],
+   q(4782) => [
+      q(Ndunga),
+      ],
+   q(4783) => [
+      q(Dugun),
+      ],
+   q(4784) => [
+      q(Ndut),
+      ],
+   q(4785) => [
+      q(Ndobo),
+      ],
+   q(4786) => [
+      q(Nduga),
+      ],
+   q(4787) => [
+      q(Lutos),
+      ],
+   q(4788) => [
+      q(Ndogo),
+      ],
+   q(4789) => [
+      q(Eastern Ngad'a),
+      ],
+   q(4790) => [
+      q(Toura (Cote d'Ivoire)),
+      ],
+   q(4791) => [
+      q(Nedebang),
+      ],
+   q(4792) => [
+      q(Nde-Gbite),
+      ],
+   q(4793) => [
+      q(Nelemwa-Nixumwak),
+      ],
+   q(4794) => [
+      q(Nefamese),
+      ],
+   q(4795) => [
+      q(Negidal),
+      ],
+   q(4796) => [
+      q(Nyenkha),
+      ],
+   q(4797) => [
+      q(Neo-Hittite),
+      ],
+   q(4798) => [
+      q(Neko),
+      ],
+   q(4799) => [
+      q(Neku),
+      ],
+   q(4800) => [
+      q(Nemi),
+      ],
+   q(4801) => [
+      q(Nengone),
+      ],
+   q(4802) => [
+      q(Na-Meo),
+      ],
+   q(4803) => [
+      q(North Central Mixe),
+      ],
+   q(4804) => [
+      q(Yahadian),
+      ],
+   q(4805) => [
+      q(Bhoti Kinnauri),
+      ],
+   q(4806) => [
+      q(Nete),
+      ],
+   q(4807) => [
+      q(Neo),
+      ],
+   q(4808) => [
+      q(Nyaheun),
+      ],
+   q(4809) => [
+      q(Neme),
+      ],
+   q(4810) => [
+      q(Neyo),
+      ],
+   q(4811) => [
+      q(Nez Perce),
+      ],
+   q(4812) => [
+      q(Dhao),
+      ],
+   q(4813) => [
+      q(Ahwai),
+      ],
+   q(4814) => [
+      q(Ayiwo),
+      q(Aiwoo),
+      ],
+   q(4815) => [
+      q(Nafaanra),
+      ],
+   q(4816) => [
+      q(Mfumte),
+      ],
+   q(4817) => [
+      q(Ngbaka),
+      ],
+   q(4818) => [
+      q(Northern Ngbandi),
+      ],
+   q(4819) => [
+      q(Ngombe (Democratic Republic of Congo)),
+      ],
+   q(4820) => [
+      q(Ngando (Central African Republic)),
+      ],
+   q(4821) => [
+      q(Ngemba),
+      ],
+   q(4822) => [
+      q(Ngbaka Manza),
+      ],
+   q(4823) => [
+      q(N/u),
+      ],
+   q(4824) => [
+      q(Ngizim),
+      ],
+   q(4825) => [
+      q(Ngie),
+      ],
+   q(4826) => [
+      q(Ngalkbun),
+      ],
+   q(4827) => [
+      q(Lomwe),
+      ],
+   q(4828) => [
+      q(Ngatik Men's Creole),
+      ],
+   q(4829) => [
+      q(Ngwo),
+      ],
+   q(4830) => [
+      q(Ngoni),
+      ],
+   q(4831) => [
+      q(Ngulu),
+      ],
+   q(4832) => [
+      q(Ngurimi),
+      q(Ngoreme),
+      ],
+   q(4833) => [
+      q(Engdewu),
+      ],
+   q(4834) => [
+      q(Gvoko),
+      ],
+   q(4835) => [
+      q(Ngeq),
+      ],
+   q(4836) => [
+      q(Guerrero Nahuatl),
+      ],
+   q(4837) => [
+      q(Nagumi),
+      ],
+   q(4838) => [
+      q(Ngwaba),
+      ],
+   q(4839) => [
+      q(Nggwahyi),
+      ],
+   q(4840) => [
+      q(Tibea),
+      ],
+   q(4841) => [
+      q(Ngungwel),
+      ],
+   q(4842) => [
+      q(Nhanda),
+      ],
+   q(4843) => [
+      q(Beng),
+      ],
+   q(4844) => [
+      q(Tabasco Nahuatl),
+      ],
+   q(4845) => [
+      q(Chiripa),
+      q(Ava Guarani),
+      ],
+   q(4846) => [
+      q(Eastern Huasteca Nahuatl),
+      ],
+   q(4847) => [
+      q(Nhuwala),
+      ],
+   q(4848) => [
+      q(Tetelcingo Nahuatl),
+      ],
+   q(4849) => [
+      q(Nahari),
+      ],
+   q(4850) => [
+      q(Zacatlan-Ahuacatlan-Tepetzintla Nahuatl),
+      ],
+   q(4851) => [
+      q(Isthmus-Cosoleacaque Nahuatl),
+      ],
+   q(4852) => [
+      q(Morelos Nahuatl),
+      ],
+   q(4853) => [
+      q(Central Nahuatl),
+      ],
+   q(4854) => [
+      q(Takuu),
+      ],
+   q(4855) => [
+      q(Isthmus-Pajapan Nahuatl),
+      ],
+   q(4856) => [
+      q(Huaxcaleca Nahuatl),
+      ],
+   q(4857) => [
+      q(Naro),
+      ],
+   q(4858) => [
+      q(Ometepec Nahuatl),
+      ],
+   q(4859) => [
+      q(Noone),
+      ],
+   q(4860) => [
+      q(Temascaltepec Nahuatl),
+      ],
+   q(4861) => [
+      q(Western Huasteca Nahuatl),
+      ],
+   q(4862) => [
+      q(Isthmus-Mecayapan Nahuatl),
+      ],
+   q(4863) => [
+      q(Northern Oaxaca Nahuatl),
+      ],
+   q(4864) => [
+      q(Santa Maria La Alta Nahuatl),
+      ],
+   q(4865) => [
+      q(Nakame),
+      ],
+   q(4866) => [
+      q(Ngandi),
+      ],
+   q(4867) => [
+      q(Niellim),
+      ],
+   q(4868) => [
+      q(Nek),
+      ],
+   q(4869) => [
+      q(Ngalakan),
+      ],
+   q(4870) => [
+      q(Nyiha (Tanzania)),
+      ],
+   q(4871) => [
+      q(Nii),
+      ],
+   q(4872) => [
+      q(Ngaju),
+      ],
+   q(4873) => [
+      q(Southern Nicobarese),
+      ],
+   q(4874) => [
+      q(Nila),
+      ],
+   q(4875) => [
+      q(Nilamba),
+      ],
+   q(4876) => [
+      q(Ninzo),
+      ],
+   q(4877) => [
+      q(Nganasan),
+      ],
+   q(4878) => [
+      q(Nandi),
+      ],
+   q(4879) => [
+      q(Nimboran),
+      ],
+   q(4880) => [
+      q(Nimi),
+      ],
+   q(4881) => [
+      q(Southeastern Kolami),
+      ],
+   q(4882) => [
+      q(Gilyak),
+      ],
+   q(4883) => [
+      q(Nimo),
+      ],
+   q(4884) => [
+      q(Hema),
+      ],
+   q(4885) => [
+      q(Ngiti),
+      ],
+   q(4886) => [
+      q(Ningil),
+      ],
+   q(4887) => [
+      q(Nzanyi),
+      ],
+   q(4888) => [
+      q(Nocte Naga),
+      ],
+   q(4889) => [
+      q(Ndonde Hamba),
+      ],
+   q(4890) => [
+      q(Lotha Naga),
+      ],
+   q(4891) => [
+      q(Gudanji),
+      ],
+   q(4892) => [
+      q(Njen),
+      ],
+   q(4893) => [
+      q(Njalgulgule),
+      ],
+   q(4894) => [
+      q(Angami Naga),
+      ],
+   q(4895) => [
+      q(Liangmai Naga),
+      ],
+   q(4896) => [
+      q(Ao Naga),
+      ],
+   q(4897) => [
+      q(Njerep),
+      ],
+   q(4898) => [
+      q(Nisa),
+      ],
+   q(4899) => [
+      q(Ndyuka-Trio Pidgin),
+      ],
+   q(4900) => [
+      q(Ngadjunmaya),
+      ],
+   q(4901) => [
+      q(Kunyi),
+      ],
+   q(4902) => [
+      q(Njyem),
+      ],
+   q(4903) => [
+      q(Nyishi),
+      ],
+   q(4904) => [
+      q(Nkoya),
+      ],
+   q(4905) => [
+      q(Khoibu Naga),
+      ],
+   q(4906) => [
+      q(Nkongho),
+      ],
+   q(4907) => [
+      q(Koireng),
+      ],
+   q(4908) => [
+      q(Duke),
+      ],
+   q(4909) => [
+      q(Inpui Naga),
+      ],
+   q(4910) => [
+      q(Nekgini),
+      ],
+   q(4911) => [
+      q(Khezha Naga),
+      ],
+   q(4912) => [
+      q(Thangal Naga),
+      ],
+   q(4913) => [
+      q(Nakai),
+      ],
+   q(4914) => [
+      q(Nokuku),
+      ],
+   q(4915) => [
+      q(Namat),
+      ],
+   q(4916) => [
+      q(Nkangala),
+      ],
+   q(4917) => [
+      q(Nkonya),
+      ],
+   q(4918) => [
+      q(Niuatoputapu),
+      ],
+   q(4919) => [
+      q(Nkami),
+      ],
+   q(4920) => [
+      q(Nukuoro),
+      ],
+   q(4921) => [
+      q(North Asmat),
+      ],
+   q(4922) => [
+      q(Nyika (Tanzania)),
+      ],
+   q(4923) => [
+      q(Bouna Kulango),
+      ],
+   q(4924) => [
+      q(Nyika (Malawi and Zambia)),
+      ],
+   q(4925) => [
+      q(Nkutu),
+      ],
+   q(4926) => [
+      q(Nkoroo),
+      ],
+   q(4927) => [
+      q(Nkari),
+      ],
+   q(4928) => [
+      q(Ngombale),
+      ],
+   q(4929) => [
+      q(Nalca),
+      ],
+   q(4930) => [
+      q(East Nyala),
+      ],
+   q(4931) => [
+      q(Gela),
+      ],
+   q(4932) => [
+      q(Grangali),
+      ],
+   q(4933) => [
+      q(Nyali),
+      ],
+   q(4934) => [
+      q(Ninia Yali),
+      ],
+   q(4935) => [
+      q(Nihali),
+      ],
+   q(4936) => [
+      q(Ngul),
+      ],
+   q(4937) => [
+      q(Ngarla),
+      ],
+   q(4938) => [
+      q(Nchumbulu),
+      ],
+   q(4939) => [
+      q(Orizaba Nahuatl),
+      ],
+   q(4940) => [
+      q(Nahali),
+      ],
+   q(4941) => [
+      q(Nyamal),
+      ],
+   q(4942) => [
+      q(Nalogo),
+      ],
+   q(4943) => [
+      q(Maram Naga),
+      ],
+   q(4944) => [
+      q(Big Nambas),
+      q(V'enen Taut),
+      ],
+   q(4945) => [
+      q(Ngam),
+      ],
+   q(4946) => [
+      q(Ndumu),
+      ],
+   q(4947) => [
+      q(Mzieme Naga),
+      ],
+   q(4948) => [
+      q(Tangkhul Naga (India)),
+      ],
+   q(4949) => [
+      q(Kwasio),
+      ],
+   q(4950) => [
+      q(Monsang Naga),
+      ],
+   q(4951) => [
+      q(Nyam),
+      ],
+   q(4952) => [
+      q(Ngombe (Central African Republic)),
+      ],
+   q(4953) => [
+      q(Namakura),
+      ],
+   q(4954) => [
+      q(Ndemli),
+      ],
+   q(4955) => [
+      q(Manangba),
+      ],
+   q(4956) => [
+      q(!Xoo),
+      ],
+   q(4957) => [
+      q(Moyon Naga),
+      ],
+   q(4958) => [
+      q(Nimanbur),
+      ],
+   q(4959) => [
+      q(Nambya),
+      ],
+   q(4960) => [
+      q(Nimbari),
+      ],
+   q(4961) => [
+      q(Letemboi),
+      ],
+   q(4962) => [
+      q(Namonuito),
+      ],
+   q(4963) => [
+      q(Northeast Maidu),
+      ],
+   q(4964) => [
+      q(Ngamini),
+      ],
+   q(4965) => [
+      q(Nimoa),
+      ],
+   q(4966) => [
+      q(Nama (Papua New Guinea)),
+      ],
+   q(4967) => [
+      q(Namuyi),
+      ],
+   q(4968) => [
+      q(Nawdm),
+      ],
+   q(4969) => [
+      q(Nyangumarta),
+      ],
+   q(4970) => [
+      q(Nande),
+      ],
+   q(4971) => [
+      q(Nancere),
+      ],
+   q(4972) => [
+      q(West Ambae),
+      ],
+   q(4973) => [
+      q(Ngandyera),
+      ],
+   q(4974) => [
+      q(Ngaing),
+      ],
+   q(4975) => [
+      q(Maring Naga),
+      ],
+   q(4976) => [
+      q(Ngiemboon),
+      ],
+   q(4977) => [
+      q(North Nuaulu),
+      ],
+   q(4978) => [
+      q(Nyangatom),
+      ],
+   q(4979) => [
+      q(Nankina),
+      ],
+   q(4980) => [
+      q(Northern Rengma Naga),
+      ],
+   q(4981) => [
+      q(Namia),
+      ],
+   q(4982) => [
+      q(Ngete),
+      ],
+   q(4983) => [
+      q(Wancho Naga),
+      ],
+   q(4984) => [
+      q(Ngindo),
+      ],
+   q(4985) => [
+      q(Narungga),
+      ],
+   q(4986) => [
+      q(Ningye),
+      ],
+   q(4987) => [
+      q(Nanticoke),
+      ],
+   q(4988) => [
+      q(Dwang),
+      ],
+   q(4989) => [
+      q(Nugunu (Australia)),
+      ],
+   q(4990) => [
+      q(Southern Nuni),
+      ],
+   q(4991) => [
+      q(Ngong),
+      ],
+   q(4992) => [
+      q(Nyangga),
+      ],
+   q(4993) => [
+      q(Nda'nda'),
+      ],
+   q(4994) => [
+      q(Woun Meu),
+      ],
+   q(4995) => [
+      q(Nuk),
+      ],
+   q(4996) => [
+      q(Northern Thai),
+      ],
+   q(4997) => [
+      q(Nimadi),
+      ],
+   q(4998) => [
+      q(Nomane),
+      ],
+   q(4999) => [
+      q(Nomu),
+      ],
+   q(5000) => [
+      q(Noiri),
+      ],
+   q(5001) => [
+      q(Nonuya),
+      ],
+   q(5002) => [
+      q(Nooksack),
+      ],
+   q(5003) => [
+      q(Nocaman),
+      ],
+   q(5004) => [
+      q(Numanggang),
+      ],
+   q(5005) => [
+      q(Ngongo),
+      ],
+   q(5006) => [
+      q(Eastern Nisu),
+      ],
+   q(5007) => [
+      q(Nomatsiguenga),
+      ],
+   q(5008) => [
+      q(Ewage-Notu),
+      ],
+   q(5009) => [
+      q(Novial),
+      ],
+   q(5010) => [
+      q(Nyambo),
+      ],
+   q(5011) => [
+      q(Noy),
+      ],
+   q(5012) => [
+      q(Nayi),
+      ],
+   q(5013) => [
+      q(Nar Phu),
+      ],
+   q(5014) => [
+      q(Nupbikha),
+      ],
+   q(5015) => [
+      q(Ponyo-Gongwang Naga),
+      ],
+   q(5016) => [
+      q(Phom Naga),
+      ],
+   q(5017) => [
+      q(Nepali (individual language)),
+      ],
+   q(5018) => [
+      q(Southeastern Puebla Nahuatl),
+      ],
+   q(5019) => [
+      q(Mondropolon),
+      ],
+   q(5020) => [
+      q(Pochuri Naga),
+      ],
+   q(5021) => [
+      q(Nipsan),
+      ],
+   q(5022) => [
+      q(Puimei Naga),
+      ],
+   q(5023) => [
+      q(Napu),
+      ],
+   q(5024) => [
+      q(Southern Nago),
+      ],
+   q(5025) => [
+      q(Kura Ede Nago),
+      ],
+   q(5026) => [
+      q(Ndom),
+      ],
+   q(5027) => [
+      q(Nen),
+      ],
+   q(5028) => [
+      q(Akyaung Ari Naga),
+      ],
+   q(5029) => [
+      q(Ngom),
+      ],
+   q(5030) => [
+      q(Nara),
+      ],
+   q(5031) => [
+      q(Noric),
+      ],
+   q(5032) => [
+      q(Southern Rengma Naga),
+      ],
+   q(5033) => [
+      q(Narango),
+      ],
+   q(5034) => [
+      q(Chokri Naga),
+      ],
+   q(5035) => [
+      q(Ngarluma),
+      ],
+   q(5036) => [
+      q(Narom),
+      ],
+   q(5037) => [
+      q(Norn),
+      ],
+   q(5038) => [
+      q(North Picene),
+      ],
+   q(5039) => [
+      q(Norra),
+      ],
+   q(5040) => [
+      q(Northern Kalapuya),
+      ],
+   q(5041) => [
+      q(Narua),
+      ],
+   q(5042) => [
+      q(Ngurmbur),
+      ],
+   q(5043) => [
+      q(Lala),
+      ],
+   q(5044) => [
+      q(Sangtam Naga),
+      ],
+   q(5045) => [
+      q(Nshi),
+      ],
+   q(5046) => [
+      q(Southern Nisu),
+      ],
+   q(5047) => [
+      q(Nsenga),
+      ],
+   q(5048) => [
+      q(Northwestern Nisu),
+      ],
+   q(5049) => [
+      q(Ngasa),
+      ],
+   q(5050) => [
+      q(Ngoshie),
+      ],
+   q(5051) => [
+      q(Nigerian Sign Language),
+      ],
+   q(5052) => [
+      q(Naskapi),
+      ],
+   q(5053) => [
+      q(Norwegian Sign Language),
+      ],
+   q(5054) => [
+      q(Sumi Naga),
+      ],
+   q(5055) => [
+      q(Nehan),
+      ],
+   q(5056) => [
+      q(Nepalese Sign Language),
+      ],
+   q(5057) => [
+      q(Northern Sierra Miwok),
+      ],
+   q(5058) => [
+      q(Maritime Sign Language),
+      ],
+   q(5059) => [
+      q(Nali),
+      ],
+   q(5060) => [
+      q(Tase Naga),
+      ],
+   q(5061) => [
+      q(Sierra Negra Nahuatl),
+      ],
+   q(5062) => [
+      q(Southwestern Nisu),
+      ],
+   q(5063) => [
+      q(Navut),
+      ],
+   q(5064) => [
+      q(Nsongo),
+      ],
+   q(5065) => [
+      q(Nasal),
+      ],
+   q(5066) => [
+      q(Nisenan),
+      ],
+   q(5067) => [
+      q(Nathembo),
+      ],
+   q(5068) => [
+      q(Natioro),
+      ],
+   q(5069) => [
+      q(Ngaanyatjarra),
+      ],
+   q(5070) => [
+      q(Ikoma-Nata-Isenye),
+      ],
+   q(5071) => [
+      q(Nateni),
+      ],
+   q(5072) => [
+      q(Ntomba),
+      ],
+   q(5073) => [
+      q(Northern Tepehuan),
+      ],
+   q(5074) => [
+      q(Delo),
+      ],
+   q(5075) => [
+      q(Natagaimas),
+      ],
+   q(5076) => [
+      q(Natugu),
+      ],
+   q(5077) => [
+      q(Nottoway),
+      ],
+   q(5078) => [
+      q(Tangkhul Naga (Myanmar)),
+      ],
+   q(5079) => [
+      q(Mantsi),
+      ],
+   q(5080) => [
+      q(Natanzi),
+      ],
+   q(5081) => [
+      q(Yuaga),
+      ],
+   q(5082) => [
+      q(Nukuini),
+      ],
+   q(5083) => [
+      q(Ngala),
+      ],
+   q(5084) => [
+      q(Ngundu),
+      ],
+   q(5085) => [
+      q(Nusu),
+      ],
+   q(5086) => [
+      q(Nungali),
+      ],
+   q(5087) => [
+      q(Ndunda),
+      ],
+   q(5088) => [
+      q(Ngumbi),
+      ],
+   q(5089) => [
+      q(Nyole),
+      ],
+   q(5090) => [
+      q(Nuu-chah-nulth),
+      q(Nuuchahnulth),
+      ],
+   q(5091) => [
+      q(Nusa Laut),
+      ],
+   q(5092) => [
+      q(Niuafo'ou),
+      ],
+   q(5093) => [
+      q(Anong),
+      ],
+   q(5094) => [
+      q(Nguon),
+      ],
+   q(5095) => [
+      q(Nupe-Nupe-Tako),
+      ],
+   q(5096) => [
+      q(Nukumanu),
+      ],
+   q(5097) => [
+      q(Nukuria),
+      ],
+   q(5098) => [
+      q(Nuer),
+      ],
+   q(5099) => [
+      q(Nung (Viet Nam)),
+      ],
+   q(5100) => [
+      q(Ngbundu),
+      ],
+   q(5101) => [
+      q(Northern Nuni),
+      ],
+   q(5102) => [
+      q(Nguluwan),
+      ],
+   q(5103) => [
+      q(Mehek),
+      ],
+   q(5104) => [
+      q(Nunggubuyu),
+      ],
+   q(5105) => [
+      q(Tlamacazapa Nahuatl),
+      ],
+   q(5106) => [
+      q(Nasarian),
+      ],
+   q(5107) => [
+      q(Namiae),
+      ],
+   q(5108) => [
+      q(Nyokon),
+      ],
+   q(5109) => [
+      q(Nawathinehena),
+      ],
+   q(5110) => [
+      q(Nyabwa),
+      ],
+   q(5111) => [
+      q(Ngwe),
+      ],
+   q(5112) => [
+      q(Ngayawung),
+      ],
+   q(5113) => [
+      q(Southwest Tanna),
+      ],
+   q(5114) => [
+      q(Nyamusa-Molo),
+      ],
+   q(5115) => [
+      q(Nauo),
+      ],
+   q(5116) => [
+      q(Nawaru),
+      ],
+   q(5117) => [
+      q(Middle Newar),
+      ],
+   q(5118) => [
+      q(Nottoway-Meherrin),
+      ],
+   q(5119) => [
+      q(Nauete),
+      ],
+   q(5120) => [
+      q(Ngando (Democratic Republic of Congo)),
+      ],
+   q(5121) => [
+      q(Nage),
+      ],
+   q(5122) => [
+      q(Ngad'a),
+      ],
+   q(5123) => [
+      q(Nindi),
+      ],
+   q(5124) => [
+      q(Koki Naga),
+      ],
+   q(5125) => [
+      q(South Nuaulu),
+      ],
+   q(5126) => [
+      q(Numidian),
+      ],
+   q(5127) => [
+      q(Ngawun),
+      ],
+   q(5128) => [
+      q(Naxi),
+      ],
+   q(5129) => [
+      q(Ninggerum),
+      ],
+   q(5130) => [
+      q(Narau),
+      ],
+   q(5131) => [
+      q(Nafri),
+      ],
+   q(5132) => [
+      q(Nyangbo),
+      ],
+   q(5133) => [
+      q(Nyanga-li),
+      ],
+   q(5134) => [
+      q(Nyore),
+      q(Olunyole),
+      ],
+   q(5135) => [
+      q(Nyengo),
+      ],
+   q(5136) => [
+      q(Giryama),
+      q(Kigiryama),
+      ],
+   q(5137) => [
+      q(Nyindu),
+      ],
+   q(5138) => [
+      q(Nyigina),
+      ],
+   q(5139) => [
+      q(Ama (Sudan)),
+      ],
+   q(5140) => [
+      q(Nyanga),
+      ],
+   q(5141) => [
+      q(Nyaneka),
+      ],
+   q(5142) => [
+      q(Nyeu),
+      ],
+   q(5143) => [
+      q(Nyang'i),
+      ],
+   q(5144) => [
+      q(Nayini),
+      ],
+   q(5145) => [
+      q(Nyiha (Malawi)),
+      ],
+   q(5146) => [
+      q(Nyunga),
+      ],
+   q(5147) => [
+      q(Nyawaygi),
+      ],
+   q(5148) => [
+      q(Nyungwe),
+      ],
+   q(5149) => [
+      q(Nyulnyul),
+      ],
+   q(5150) => [
+      q(Nyaw),
+      ],
+   q(5151) => [
+      q(Nganyaywana),
+      ],
+   q(5152) => [
+      q(Nyakyusa-Ngonde),
+      ],
+   q(5153) => [
+      q(Tigon Mbembe),
+      ],
+   q(5154) => [
+      q(Njebi),
+      ],
+   q(5155) => [
+      q(Nzakara),
+      ],
+   q(5156) => [
+      q(Zeme Naga),
+      ],
+   q(5157) => [
+      q(New Zealand Sign Language),
+      ],
+   q(5158) => [
+      q(Teke-Nzikou),
+      ],
+   q(5159) => [
+      q(Nzakambay),
+      ],
+   q(5160) => [
+      q(Nanga Dama Dogon),
+      ],
+   q(5161) => [
+      q(Orok),
+      ],
+   q(5162) => [
+      q(Oroch),
+      ],
+   q(5163) => [
+      q(Old Aramaic (up to 700 BCE)),
+      q(Ancient Aramaic (up to 700 BCE)),
+      ],
+   q(5164) => [
+      q(Old Avar),
+      ],
+   q(5165) => [
+      q(Obispeno),
+      ],
+   q(5166) => [
+      q(Southern Bontok),
+      ],
+   q(5167) => [
+      q(Oblo),
+      ],
+   q(5168) => [
+      q(Moabite),
+      ],
+   q(5169) => [
+      q(Obo Manobo),
+      ],
+   q(5170) => [
+      q(Old Burmese),
+      ],
+   q(5171) => [
+      q(Old Breton),
+      ],
+   q(5172) => [
+      q(Obulom),
+      ],
+   q(5173) => [
+      q(Ocaina),
+      ],
+   q(5174) => [
+      q(Old Chinese),
+      ],
+   q(5175) => [
+      q(Old Cornish),
+      ],
+   q(5176) => [
+      q(Atzingo Matlatzinca),
+      ],
+   q(5177) => [
+      q(Odut),
+      ],
+   q(5178) => [
+      q(Od),
+      ],
+   q(5179) => [
+      q(Old Dutch),
+      ],
+   q(5180) => [
+      q(Odual),
+      ],
+   q(5181) => [
+      q(Ofo),
+      ],
+   q(5182) => [
+      q(Old Frisian),
+      ],
+   q(5183) => [
+      q(Efutop),
+      ],
+   q(5184) => [
+      q(Ogbia),
+      ],
+   q(5185) => [
+      q(Ogbah),
+      ],
+   q(5186) => [
+      q(Old Georgian),
+      ],
+   q(5187) => [
+      q(Ogbogolo),
+      ],
+   q(5188) => [
+      q(Khana),
+      ],
+   q(5189) => [
+      q(Ogbronuagum),
+      ],
+   q(5190) => [
+      q(Old Hittite),
+      ],
+   q(5191) => [
+      q(Old Hungarian),
+      ],
+   q(5192) => [
+      q(Oirata),
+      ],
+   q(5193) => [
+      q(Inebu One),
+      ],
+   q(5194) => [
+      q(Northwestern Ojibwa),
+      ],
+   q(5195) => [
+      q(Central Ojibwa),
+      ],
+   q(5196) => [
+      q(Eastern Ojibwa),
+      ],
+   q(5197) => [
+      q(Old Japanese),
+      ],
+   q(5198) => [
+      q(Severn Ojibwa),
+      ],
+   q(5199) => [
+      q(Ontong Java),
+      ],
+   q(5200) => [
+      q(Western Ojibwa),
+      ],
+   q(5201) => [
+      q(Okanagan),
+      ],
+   q(5202) => [
+      q(Okobo),
+      ],
+   q(5203) => [
+      q(Okodia),
+      ],
+   q(5204) => [
+      q(Okpe (Southwestern Edo)),
+      ],
+   q(5205) => [
+      q(Koko Babangk),
+      ],
+   q(5206) => [
+      q(Koresh-e Rostam),
+      ],
+   q(5207) => [
+      q(Okiek),
+      ],
+   q(5208) => [
+      q(Oko-Juwoi),
+      ],
+   q(5209) => [
+      q(Kwamtim One),
+      ],
+   q(5210) => [
+      q(Old Kentish Sign Language),
+      ],
+   q(5211) => [
+      q(Middle Korean (10th-16th cent.)),
+      ],
+   q(5212) => [
+      q(Oki-No-Erabu),
+      ],
+   q(5213) => [
+      q(Old Korean (3rd-9th cent.)),
+      ],
+   q(5214) => [
+      q(Kirike),
+      ],
+   q(5215) => [
+      q(Oko-Eni-Osayen),
+      ],
+   q(5216) => [
+      q(Oku),
+      ],
+   q(5217) => [
+      q(Orokaiva),
+      ],
+   q(5218) => [
+      q(Okpe (Northwestern Edo)),
+      ],
+   q(5219) => [
+      q(Walungge),
+      ],
+   q(5220) => [
+      q(Mochi),
+      ],
+   q(5221) => [
+      q(Olekha),
+      ],
+   q(5222) => [
+      q(Oloma),
+      ],
+   q(5223) => [
+      q(Livvi),
+      ],
+   q(5224) => [
+      q(Olrat),
+      ],
+   q(5225) => [
+      q(Omaha-Ponca),
+      ],
+   q(5226) => [
+      q(East Ambae),
+      ],
+   q(5227) => [
+      q(Mochica),
+      ],
+   q(5228) => [
+      q(Omejes),
+      ],
+   q(5229) => [
+      q(Omagua),
+      ],
+   q(5230) => [
+      q(Omi),
+      ],
+   q(5231) => [
+      q(Omok),
+      ],
+   q(5232) => [
+      q(Ombo),
+      ],
+   q(5233) => [
+      q(Minoan),
+      ],
+   q(5234) => [
+      q(Utarmbung),
+      ],
+   q(5235) => [
+      q(Old Manipuri),
+      ],
+   q(5236) => [
+      q(Old Marathi),
+      ],
+   q(5237) => [
+      q(Omotik),
+      ],
+   q(5238) => [
+      q(Omurano),
+      ],
+   q(5239) => [
+      q(South Tairora),
+      ],
+   q(5240) => [
+      q(Old Mon),
+      ],
+   q(5241) => [
+      q(Ona),
+      ],
+   q(5242) => [
+      q(Lingao),
+      ],
+   q(5243) => [
+      q(Oneida),
+      ],
+   q(5244) => [
+      q(Olo),
+      ],
+   q(5245) => [
+      q(Onin),
+      ],
+   q(5246) => [
+      q(Onjob),
+      ],
+   q(5247) => [
+      q(Kabore One),
+      ],
+   q(5248) => [
+      q(Onobasulu),
+      ],
+   q(5249) => [
+      q(Onondaga),
+      ],
+   q(5250) => [
+      q(Sartang),
+      ],
+   q(5251) => [
+      q(Northern One),
+      ],
+   q(5252) => [
+      q(Ono),
+      ],
+   q(5253) => [
+      q(Ontenu),
+      ],
+   q(5254) => [
+      q(Unua),
+      ],
+   q(5255) => [
+      q(Old Nubian),
+      ],
+   q(5256) => [
+      q(Onin Based Pidgin),
+      ],
+   q(5257) => [
+      q(Tohono O'odham),
+      ],
+   q(5258) => [
+      q(Ong),
+      ],
+   q(5259) => [
+      q(Onge),
+      ],
+   q(5260) => [
+      q(Oorlams),
+      ],
+   q(5261) => [
+      q(Old Ossetic),
+      ],
+   q(5262) => [
+      q(Okpamheri),
+      ],
+   q(5263) => [
+      q(Kopkaka),
+      ],
+   q(5264) => [
+      q(Oksapmin),
+      ],
+   q(5265) => [
+      q(Opao),
+      ],
+   q(5266) => [
+      q(Opata),
+      ],
+   q(5267) => [
+      q(Ofaye),
+      ],
+   q(5268) => [
+      q(Oroha),
+      ],
+   q(5269) => [
+      q(Orma),
+      ],
+   q(5270) => [
+      q(Orejon),
+      ],
+   q(5271) => [
+      q(Oring),
+      ],
+   q(5272) => [
+      q(Oroqen),
+      ],
+   q(5273) => [
+      q(Orang Kanaq),
+      ],
+   q(5274) => [
+      q(Orokolo),
+      ],
+   q(5275) => [
+      q(Oruma),
+      ],
+   q(5276) => [
+      q(Orang Seletar),
+      ],
+   q(5277) => [
+      q(Adivasi Oriya),
+      ],
+   q(5278) => [
+      q(Ormuri),
+      ],
+   q(5279) => [
+      q(Old Russian),
+      ],
+   q(5280) => [
+      q(Oro Win),
+      ],
+   q(5281) => [
+      q(Oro),
+      ],
+   q(5282) => [
+      q(Oriya (individual language)),
+      ],
+   q(5283) => [
+      q(Ormu),
+      ],
+   q(5284) => [
+      q(Oscan),
+      ],
+   q(5285) => [
+      q(Osing),
+      ],
+   q(5286) => [
+      q(Ososo),
+      ],
+   q(5287) => [
+      q(Old Spanish),
+      ],
+   q(5288) => [
+      q(Osatu),
+      ],
+   q(5289) => [
+      q(Southern One),
+      ],
+   q(5290) => [
+      q(Old Saxon),
+      ],
+   q(5291) => [
+      q(Old Tibetan),
+      ],
+   q(5292) => [
+      q(Ot Danum),
+      ],
+   q(5293) => [
+      q(Mezquital Otomi),
+      ],
+   q(5294) => [
+      q(Oti),
+      ],
+   q(5295) => [
+      q(Old Turkish),
+      ],
+   q(5296) => [
+      q(Tilapa Otomi),
+      ],
+   q(5297) => [
+      q(Eastern Highland Otomi),
+      ],
+   q(5298) => [
+      q(Tenango Otomi),
+      ],
+   q(5299) => [
+      q(Queretaro Otomi),
+      ],
+   q(5300) => [
+      q(Otoro),
+      ],
+   q(5301) => [
+      q(Estado de Mexico Otomi),
+      ],
+   q(5302) => [
+      q(Temoaya Otomi),
+      ],
+   q(5303) => [
+      q(Otuke),
+      ],
+   q(5304) => [
+      q(Ottawa),
+      ],
+   q(5305) => [
+      q(Texcatepec Otomi),
+      ],
+   q(5306) => [
+      q(Old Tamil),
+      ],
+   q(5307) => [
+      q(Ixtenco Otomi),
+      ],
+   q(5308) => [
+      q(Tagargrent),
+      ],
+   q(5309) => [
+      q(Glio-Oubi),
+      ],
+   q(5310) => [
+      q(Oune),
+      ],
+   q(5311) => [
+      q(Old Uighur),
+      ],
+   q(5312) => [
+      q(Ouma),
+      ],
+   q(5313) => [
+      q(!O!ung),
+      ],
+   q(5314) => [
+      q(Owiniga),
+      ],
+   q(5315) => [
+      q(Old Welsh),
+      ],
+   q(5316) => [
+      q(Oy),
+      ],
+   q(5317) => [
+      q(Oyda),
+      ],
+   q(5318) => [
+      q(Wayampi),
+      ],
+   q(5319) => [
+      q(Oya'oya),
+      ],
+   q(5320) => [
+      q(Koonzime),
+      ],
+   q(5321) => [
+      q(Parecis),
+      ],
+   q(5322) => [
+      q(Pacoh),
+      ],
+   q(5323) => [
+      q(Paumari),
+      ],
+   q(5324) => [
+      q(Pagibete),
+      ],
+   q(5325) => [
+      q(Paranawat),
+      ],
+   q(5326) => [
+      q(Tenharim),
+      ],
+   q(5327) => [
+      q(Pe),
+      ],
+   q(5328) => [
+      q(Parakana),
+      ],
+   q(5329) => [
+      q(Northern Paiute),
+      ],
+   q(5330) => [
+      q(Parya),
+      ],
+   q(5331) => [
+      q(Panamint),
+      q(Timbisha),
+      ],
+   q(5332) => [
+      q(Papasena),
+      ],
+   q(5333) => [
+      q(Papitalai),
+      ],
+   q(5334) => [
+      q(Pakaasnovos),
+      ],
+   q(5335) => [
+      q(Pawnee),
+      ],
+   q(5336) => [
+      q(Pankarare),
+      ],
+   q(5337) => [
+      q(Pech),
+      ],
+   q(5338) => [
+      q(Pankararu),
+      ],
+   q(5339) => [
+      q(Paez),
+      ],
+   q(5340) => [
+      q(Patamona),
+      ],
+   q(5341) => [
+      q(Mezontla Popoloca),
+      ],
+   q(5342) => [
+      q(Coyotepec Popoloca),
+      ],
+   q(5343) => [
+      q(Paraujano),
+      ],
+   q(5344) => [
+      q(E'napa Woromaipu),
+      ],
+   q(5345) => [
+      q(Parkwa),
+      ],
+   q(5346) => [
+      q(Mak (Nigeria)),
+      ],
+   q(5347) => [
+      q(Kpasam),
+      ],
+   q(5348) => [
+      q(Papel),
+      ],
+   q(5349) => [
+      q(Badyara),
+      ],
+   q(5350) => [
+      q(Pangwa),
+      ],
+   q(5351) => [
+      q(Central Pame),
+      ],
+   q(5352) => [
+      q(Southern Pashto),
+      ],
+   q(5353) => [
+      q(Northern Pashto),
+      ],
+   q(5354) => [
+      q(Pnar),
+      ],
+   q(5355) => [
+      q(Pyu),
+      ],
+   q(5356) => [
+      q(Santa Ines Ahuatempan Popoloca),
+      ],
+   q(5357) => [
+      q(Pear),
+      ],
+   q(5358) => [
+      q(Bouyei),
+      ],
+   q(5359) => [
+      q(Picard),
+      ],
+   q(5360) => [
+      q(Ruching Palaung),
+      ],
+   q(5361) => [
+      q(Paliyan),
+      ],
+   q(5362) => [
+      q(Paniya),
+      ],
+   q(5363) => [
+      q(Pardhan),
+      ],
+   q(5364) => [
+      q(Duruwa),
+      ],
+   q(5365) => [
+      q(Parenga),
+      ],
+   q(5366) => [
+      q(Paite Chin),
+      ],
+   q(5367) => [
+      q(Pardhi),
+      ],
+   q(5368) => [
+      q(Nigerian Pidgin),
+      ],
+   q(5369) => [
+      q(Piti),
+      ],
+   q(5370) => [
+      q(Pacahuara),
+      ],
+   q(5371) => [
+      q(Panang),
+      ],
+   q(5372) => [
+      q(Pyapun),
+      ],
+   q(5373) => [
+      q(Anam),
+      ],
+   q(5374) => [
+      q(Pennsylvania German),
+      ],
+   q(5375) => [
+      q(Pa Di),
+      ],
+   q(5376) => [
+      q(Podena),
+      q(Fedan),
+      ],
+   q(5377) => [
+      q(Padoe),
+      ],
+   q(5378) => [
+      q(Plautdietsch),
+      ],
+   q(5379) => [
+      q(Kayan),
+      ],
+   q(5380) => [
+      q(Peranakan Indonesian),
+      ],
+   q(5381) => [
+      q(Eastern Pomo),
+      ],
+   q(5382) => [
+      q(Mala (Papua New Guinea)),
+      ],
+   q(5383) => [
+      q(Taje),
+      ],
+   q(5384) => [
+      q(Northeastern Pomo),
+      ],
+   q(5385) => [
+      q(Pengo),
+      ],
+   q(5386) => [
+      q(Bonan),
+      ],
+   q(5387) => [
+      q(Chichimeca-Jonaz),
+      ],
+   q(5388) => [
+      q(Northern Pomo),
+      ],
+   q(5389) => [
+      q(Penchal),
+      ],
+   q(5390) => [
+      q(Pekal),
+      ],
+   q(5391) => [
+      q(Phende),
+      ],
+   q(5392) => [
+      q(Kunja),
+      ],
+   q(5393) => [
+      q(Southern Pomo),
+      ],
+   q(5394) => [
+      q(Iranian Persian),
+      ],
+   q(5395) => [
+      q(Pemono),
+      ],
+   q(5396) => [
+      q(Petats),
+      ],
+   q(5397) => [
+      q(Petjo),
+      ],
+   q(5398) => [
+      q(Eastern Penan),
+      ],
+   q(5399) => [
+      q(Paafang),
+      ],
+   q(5400) => [
+      q(Peere),
+      ],
+   q(5401) => [
+      q(Pfaelzisch),
+      ],
+   q(5402) => [
+      q(Sudanese Creole Arabic),
+      ],
+   q(5403) => [
+      q(Pangwali),
+      ],
+   q(5404) => [
+      q(Pagi),
+      ],
+   q(5405) => [
+      q(Rerep),
+      ],
+   q(5406) => [
+      q(Primitive Irish),
+      ],
+   q(5407) => [
+      q(Paelignian),
+      ],
+   q(5408) => [
+      q(Pangseng),
+      ],
+   q(5409) => [
+      q(Pagu),
+      ],
+   q(5410) => [
+      q(Pa-Hng),
+      ],
+   q(5411) => [
+      q(Phudagi),
+      ],
+   q(5412) => [
+      q(Phuong),
+      ],
+   q(5413) => [
+      q(Phukha),
+      ],
+   q(5414) => [
+      q(Phake),
+      ],
+   q(5415) => [
+      q(Phalura),
+      q(Palula),
+      ],
+   q(5416) => [
+      q(Phimbi),
+      ],
+   q(5417) => [
+      q(Phunoi),
+      ],
+   q(5418) => [
+      q(Phana'),
+      ],
+   q(5419) => [
+      q(Pahari-Potwari),
+      ],
+   q(5420) => [
+      q(Phu Thai),
+      ],
+   q(5421) => [
+      q(Phuan),
+      ],
+   q(5422) => [
+      q(Pahlavani),
+      ],
+   q(5423) => [
+      q(Phangduwali),
+      ],
+   q(5424) => [
+      q(Pima Bajo),
+      ],
+   q(5425) => [
+      q(Yine),
+      ],
+   q(5426) => [
+      q(Pinji),
+      ],
+   q(5427) => [
+      q(Piaroa),
+      ],
+   q(5428) => [
+      q(Piro),
+      ],
+   q(5429) => [
+      q(Pingelapese),
+      ],
+   q(5430) => [
+      q(Pisabo),
+      ],
+   q(5431) => [
+      q(Pitcairn-Norfolk),
+      ],
+   q(5432) => [
+      q(Pini),
+      ],
+   q(5433) => [
+      q(Pijao),
+      ],
+   q(5434) => [
+      q(Yom),
+      ],
+   q(5435) => [
+      q(Powhatan),
+      ],
+   q(5436) => [
+      q(Piame),
+      ],
+   q(5437) => [
+      q(Piapoco),
+      ],
+   q(5438) => [
+      q(Pero),
+      ],
+   q(5439) => [
+      q(Piratapuyo),
+      ],
+   q(5440) => [
+      q(Pijin),
+      ],
+   q(5441) => [
+      q(Pitta Pitta),
+      ],
+   q(5442) => [
+      q(Pintupi-Luritja),
+      ],
+   q(5443) => [
+      q(Pileni),
+      q(Vaeakau-Taumako),
+      ],
+   q(5444) => [
+      q(Pimbwe),
+      ],
+   q(5445) => [
+      q(Piu),
+      ],
+   q(5446) => [
+      q(Piya-Kwonci),
+      ],
+   q(5447) => [
+      q(Pije),
+      ],
+   q(5448) => [
+      q(Pitjantjatjara),
+      ],
+   q(5449) => [
+      q(Ardhamagadhi Prakrit),
+      ],
+   q(5450) => [
+      q(Pokomo),
+      q(Kipfokomo),
+      ],
+   q(5451) => [
+      q(Paekche),
+      ],
+   q(5452) => [
+      q(Pak-Tong),
+      ],
+   q(5453) => [
+      q(Pankhu),
+      ],
+   q(5454) => [
+      q(Pakanha),
+      ],
+   q(5455) => [
+      q(Pokoot),
+      ],
+   q(5456) => [
+      q(Pukapuka),
+      ],
+   q(5457) => [
+      q(Attapady Kurumba),
+      ],
+   q(5458) => [
+      q(Pakistan Sign Language),
+      ],
+   q(5459) => [
+      q(Maleng),
+      ],
+   q(5460) => [
+      q(Paku),
+      ],
+   q(5461) => [
+      q(Miani),
+      ],
+   q(5462) => [
+      q(Polonombauk),
+      ],
+   q(5463) => [
+      q(Central Palawano),
+      ],
+   q(5464) => [
+      q(Polari),
+      ],
+   q(5465) => [
+      q(Palu'e),
+      ],
+   q(5466) => [
+      q(Pilaga),
+      ],
+   q(5467) => [
+      q(Paulohi),
+      ],
+   q(5468) => [
+      q(Polci),
+      ],
+   q(5469) => [
+      q(Kohistani Shina),
+      ],
+   q(5470) => [
+      q(Shwe Palaung),
+      ],
+   q(5471) => [
+      q(Palenquero),
+      ],
+   q(5472) => [
+      q(Oluta Popoluca),
+      ],
+   q(5473) => [
+      q(Palpa),
+      ],
+   q(5474) => [
+      q(Palaic),
+      ],
+   q(5475) => [
+      q(Palaka Senoufo),
+      ],
+   q(5476) => [
+      q(San Marcos Tlalcoyalco Popoloca),
+      ],
+   q(5477) => [
+      q(Plateau Malagasy),
+      ],
+   q(5478) => [
+      q(Palikur),
+      ],
+   q(5479) => [
+      q(Southwest Palawano),
+      ],
+   q(5480) => [
+      q(Brooke's Point Palawano),
+      ],
+   q(5481) => [
+      q(Bolyu),
+      ],
+   q(5482) => [
+      q(Paluan),
+      ],
+   q(5483) => [
+      q(Paama),
+      ],
+   q(5484) => [
+      q(Pambia),
+      ],
+   q(5485) => [
+      q(Palumata),
+      ],
+   q(5486) => [
+      q(Pallanganmiddang),
+      ],
+   q(5487) => [
+      q(Pwaamei),
+      ],
+   q(5488) => [
+      q(Pamona),
+      ],
+   q(5489) => [
+      q(Maharastri Prakrit),
+      ],
+   q(5490) => [
+      q(Northern Pumi),
+      ],
+   q(5491) => [
+      q(Southern Pumi),
+      ],
+   q(5492) => [
+      q(Pamlico),
+      ],
+   q(5493) => [
+      q(Lingua Franca),
+      ],
+   q(5494) => [
+      q(Pomo),
+      ],
+   q(5495) => [
+      q(Pam),
+      ],
+   q(5496) => [
+      q(Pom),
+      ],
+   q(5497) => [
+      q(Northern Pame),
+      ],
+   q(5498) => [
+      q(Paynamar),
+      ],
+   q(5499) => [
+      q(Piemontese),
+      ],
+   q(5500) => [
+      q(Tuamotuan),
+      ],
+   q(5501) => [
+      q(Mirpur Panjabi),
+      ],
+   q(5502) => [
+      q(Plains Miwok),
+      ],
+   q(5503) => [
+      q(Poumei Naga),
+      ],
+   q(5504) => [
+      q(Papuan Malay),
+      ],
+   q(5505) => [
+      q(Southern Pame),
+      ],
+   q(5506) => [
+      q(Punan Bah-Biau),
+      ],
+   q(5507) => [
+      q(Western Panjabi),
+      ],
+   q(5508) => [
+      q(Pannei),
+      ],
+   q(5509) => [
+      q(Western Penan),
+      ],
+   q(5510) => [
+      q(Pongu),
+      ],
+   q(5511) => [
+      q(Penrhyn),
+      ],
+   q(5512) => [
+      q(Aoheng),
+      ],
+   q(5513) => [
+      q(Paunaka),
+      ],
+   q(5514) => [
+      q(Punan Batu 1),
+      ],
+   q(5515) => [
+      q(Pinai-Hagahai),
+      ],
+   q(5516) => [
+      q(Panobo),
+      ],
+   q(5517) => [
+      q(Pancana),
+      ],
+   q(5518) => [
+      q(Pana (Burkina Faso)),
+      ],
+   q(5519) => [
+      q(Panim),
+      ],
+   q(5520) => [
+      q(Ponosakan),
+      ],
+   q(5521) => [
+      q(Pontic),
+      ],
+   q(5522) => [
+      q(Jiongnai Bunu),
+      ],
+   q(5523) => [
+      q(Pinigura),
+      ],
+   q(5524) => [
+      q(Panytyima),
+      ],
+   q(5525) => [
+      q(Phong-Kniang),
+      ],
+   q(5526) => [
+      q(Pinyin),
+      ],
+   q(5527) => [
+      q(Pana (Central African Republic)),
+      ],
+   q(5528) => [
+      q(Poqomam),
+      ],
+   q(5529) => [
+      q(Ponares),
+      ],
+   q(5530) => [
+      q(San Juan Atzingo Popoloca),
+      ],
+   q(5531) => [
+      q(Poke),
+      ],
+   q(5532) => [
+      q(Potiguara),
+      ],
+   q(5533) => [
+      q(Poqomchi'),
+      ],
+   q(5534) => [
+      q(Highland Popoluca),
+      ],
+   q(5535) => [
+      q(Pokanga),
+      ],
+   q(5536) => [
+      q(Southeastern Pomo),
+      ],
+   q(5537) => [
+      q(Central Pomo),
+      ],
+   q(5538) => [
+      q(Pwapwa),
+      ],
+   q(5539) => [
+      q(Texistepec Popoluca),
+      ],
+   q(5540) => [
+      q(Sayula Popoluca),
+      ],
+   q(5541) => [
+      q(Potawatomi),
+      ],
+   q(5542) => [
+      q(Upper Guinea Crioulo),
+      ],
+   q(5543) => [
+      q(San Felipe Otlaltepec Popoloca),
+      ],
+   q(5544) => [
+      q(Polabian),
+      ],
+   q(5545) => [
+      q(Pogolo),
+      ],
+   q(5546) => [
+      q(Pao),
+      ],
+   q(5547) => [
+      q(Papi),
+      ],
+   q(5548) => [
+      q(Paipai),
+      ],
+   q(5549) => [
+      q(Uma),
+      ],
+   q(5550) => [
+      q(Pipil),
+      q(Nicarao),
+      ],
+   q(5551) => [
+      q(Papuma),
+      ],
+   q(5552) => [
+      q(Papapana),
+      ],
+   q(5553) => [
+      q(Folopa),
+      ],
+   q(5554) => [
+      q(Pelende),
+      ],
+   q(5555) => [
+      q(Pei),
+      ],
+   q(5556) => [
+      q(Piru),
+      ],
+   q(5557) => [
+      q(San Luis Temalacayuca Popoloca),
+      ],
+   q(5558) => [
+      q(Pare),
+      ],
+   q(5559) => [
+      q(Papora),
+      ],
+   q(5560) => [
+      q(Pa'a),
+      ],
+   q(5561) => [
+      q(Malecite-Passamaquoddy),
+      ],
+   q(5562) => [
+      q(Lua'),
+      ],
+   q(5563) => [
+      q(Parachi),
+      ],
+   q(5564) => [
+      q(Parsi-Dari),
+      ],
+   q(5565) => [
+      q(Principense),
+      ],
+   q(5566) => [
+      q(Paranan),
+      ],
+   q(5567) => [
+      q(Prussian),
+      ],
+   q(5568) => [
+      q(Porohanon),
+      ],
+   q(5569) => [
+      q(Paici),
+      ],
+   q(5570) => [
+      q(Parauk),
+      ],
+   q(5571) => [
+      q(Peruvian Sign Language),
+      ],
+   q(5572) => [
+      q(Kibiri),
+      ],
+   q(5573) => [
+      q(Prasuni),
+      ],
+   q(5574) => [
+      q(Parsi),
+      ],
+   q(5575) => [
+      q(Asheninka Perene),
+      ],
+   q(5576) => [
+      q(Puri),
+      ],
+   q(5577) => [
+      q(Dari),
+      q(Afghan Persian),
+      ],
+   q(5578) => [
+      q(Phai),
+      ],
+   q(5579) => [
+      q(Puragi),
+      ],
+   q(5580) => [
+      q(Parawen),
+      ],
+   q(5581) => [
+      q(Purik),
+      ],
+   q(5582) => [
+      q(Pray 3),
+      ],
+   q(5583) => [
+      q(Providencia Sign Language),
+      ],
+   q(5584) => [
+      q(Asue Awyu),
+      ],
+   q(5585) => [
+      q(Persian Sign Language),
+      ],
+   q(5586) => [
+      q(Plains Indian Sign Language),
+      ],
+   q(5587) => [
+      q(Central Malay),
+      ],
+   q(5588) => [
+      q(Penang Sign Language),
+      ],
+   q(5589) => [
+      q(Southwest Pashayi),
+      ],
+   q(5590) => [
+      q(Southeast Pashayi),
+      ],
+   q(5591) => [
+      q(Puerto Rican Sign Language),
+      ],
+   q(5592) => [
+      q(Pauserna),
+      ],
+   q(5593) => [
+      q(Panasuan),
+      ],
+   q(5594) => [
+      q(Polish Sign Language),
+      ],
+   q(5595) => [
+      q(Philippine Sign Language),
+      ],
+   q(5596) => [
+      q(Pasi),
+      ],
+   q(5597) => [
+      q(Portuguese Sign Language),
+      ],
+   q(5598) => [
+      q(Kaulong),
+      ],
+   q(5599) => [
+      q(Central Pashto),
+      ],
+   q(5600) => [
+      q(Sauraseni Prakrit),
+      ],
+   q(5601) => [
+      q(Port Sandwich),
+      ],
+   q(5602) => [
+      q(Piscataway),
+      ],
+   q(5603) => [
+      q(Pai Tavytera),
+      ],
+   q(5604) => [
+      q(Pataxo Ha-Ha-Hae),
+      ],
+   q(5605) => [
+      q(Pintiini),
+      ],
+   q(5606) => [
+      q(Patani),
+      ],
+   q(5607) => [
+      q(Zo'e),
+      ],
+   q(5608) => [
+      q(Patep),
+      ],
+   q(5609) => [
+      q(Piamatsina),
+      ],
+   q(5610) => [
+      q(Enrekang),
+      ],
+   q(5611) => [
+      q(Bambam),
+      ],
+   q(5612) => [
+      q(Port Vato),
+      ],
+   q(5613) => [
+      q(Pentlatch),
+      ],
+   q(5614) => [
+      q(Pathiya),
+      ],
+   q(5615) => [
+      q(Western Highland Purepecha),
+      ],
+   q(5616) => [
+      q(Purum),
+      ],
+   q(5617) => [
+      q(Punan Merap),
+      ],
+   q(5618) => [
+      q(Punan Aput),
+      ],
+   q(5619) => [
+      q(Puelche),
+      ],
+   q(5620) => [
+      q(Punan Merah),
+      ],
+   q(5621) => [
+      q(Phuie),
+      ],
+   q(5622) => [
+      q(Puinave),
+      ],
+   q(5623) => [
+      q(Punan Tubu),
+      ],
+   q(5624) => [
+      q(Pu Ko),
+      ],
+   q(5625) => [
+      q(Puma),
+      ],
+   q(5626) => [
+      q(Puoc),
+      ],
+   q(5627) => [
+      q(Pulabu),
+      ],
+   q(5628) => [
+      q(Puquina),
+      ],
+   q(5629) => [
+      q(Purubora),
+      ],
+   q(5630) => [
+      q(Putoh),
+      ],
+   q(5631) => [
+      q(Punu),
+      ],
+   q(5632) => [
+      q(Puluwatese),
+      ],
+   q(5633) => [
+      q(Puare),
+      ],
+   q(5634) => [
+      q(Purisimeno),
+      ],
+   q(5635) => [
+      q(Purum Naga),
+      ],
+   q(5636) => [
+      q(Pawaia),
+      ],
+   q(5637) => [
+      q(Panawa),
+      ],
+   q(5638) => [
+      q(Gapapaiwa),
+      ],
+   q(5639) => [
+      q(Molbog),
+      ],
+   q(5640) => [
+      q(Paiwan),
+      ],
+   q(5641) => [
+      q(Pwo Western Karen),
+      ],
+   q(5642) => [
+      q(Powari),
+      ],
+   q(5643) => [
+      q(Pwo Northern Karen),
+      ],
+   q(5644) => [
+      q(Quetzaltepec Mixe),
+      ],
+   q(5645) => [
+      q(Pye Krumen),
+      ],
+   q(5646) => [
+      q(Fyam),
+      ],
+   q(5647) => [
+      q(Poyanawa),
+      ],
+   q(5648) => [
+      q(Paraguayan Sign Language),
+      q(Lengua de Senas del Paraguay),
+      ],
+   q(5649) => [
+      q(Puyuma),
+      ],
+   q(5650) => [
+      q(Pyu (Myanmar)),
+      ],
+   q(5651) => [
+      q(Pyen),
+      ],
+   q(5652) => [
+      q(Para Naga),
+      ],
+   q(5653) => [
+      q(Quapaw),
+      ],
+   q(5654) => [
+      q(Huallaga Huanuco Quechua),
+      ],
+   q(5655) => [
+      q(K'iche'),
+      q(Quiche),
+      ],
+   q(5656) => [
+      q(Calderon Highland Quichua),
+      ],
+   q(5657) => [
+      q(Lambayeque Quechua),
+      ],
+   q(5658) => [
+      q(Chimborazo Highland Quichua),
+      ],
+   q(5659) => [
+      q(South Bolivian Quechua),
+      ],
+   q(5660) => [
+      q(Quileute),
+      ],
+   q(5661) => [
+      q(Chachapoyas Quechua),
+      ],
+   q(5662) => [
+      q(North Bolivian Quechua),
+      ],
+   q(5663) => [
+      q(Sipacapense),
+      ],
+   q(5664) => [
+      q(Quinault),
+      ],
+   q(5665) => [
+      q(Southern Pastaza Quechua),
+      ],
+   q(5666) => [
+      q(Quinqui),
+      ],
+   q(5667) => [
+      q(Yanahuanca Pasco Quechua),
+      ],
+   q(5668) => [
+      q(Santiago del Estero Quichua),
+      ],
+   q(5669) => [
+      q(Sacapulteco),
+      ],
+   q(5670) => [
+      q(Tena Lowland Quichua),
+      ],
+   q(5671) => [
+      q(Yauyos Quechua),
+      ],
+   q(5672) => [
+      q(Ayacucho Quechua),
+      ],
+   q(5673) => [
+      q(Cusco Quechua),
+      ],
+   q(5674) => [
+      q(Ambo-Pasco Quechua),
+      ],
+   q(5675) => [
+      q(Cajamarca Quechua),
+      ],
+   q(5676) => [
+      q(Eastern Apurimac Quechua),
+      ],
+   q(5677) => [
+      q(Huamalies-Dos de Mayo Huanuco Quechua),
+      ],
+   q(5678) => [
+      q(Imbabura Highland Quichua),
+      ],
+   q(5679) => [
+      q(Loja Highland Quichua),
+      ],
+   q(5680) => [
+      q(Cajatambo North Lima Quechua),
+      ],
+   q(5681) => [
+      q(Margos-Yarowilca-Lauricocha Quechua),
+      ],
+   q(5682) => [
+      q(North Junin Quechua),
+      ],
+   q(5683) => [
+      q(Napo Lowland Quechua),
+      ],
+   q(5684) => [
+      q(Pacaraos Quechua),
+      ],
+   q(5685) => [
+      q(San Martin Quechua),
+      ],
+   q(5686) => [
+      q(Huaylla Wanca Quechua),
+      ],
+   q(5687) => [
+      q(Queyu),
+      ],
+   q(5688) => [
+      q(Northern Pastaza Quichua),
+      ],
+   q(5689) => [
+      q(Corongo Ancash Quechua),
+      ],
+   q(5690) => [
+      q(Classical Quechua),
+      ],
+   q(5691) => [
+      q(Huaylas Ancash Quechua),
+      ],
+   q(5692) => [
+      q(Kuman (Russia)),
+      ],
+   q(5693) => [
+      q(Sihuas Ancash Quechua),
+      ],
+   q(5694) => [
+      q(Kwalhioqua-Tlatskanai),
+      ],
+   q(5695) => [
+      q(Chiquian Ancash Quechua),
+      ],
+   q(5696) => [
+      q(Chincha Quechua),
+      ],
+   q(5697) => [
+      q(Panao Huanuco Quechua),
+      ],
+   q(5698) => [
+      q(Salasaca Highland Quichua),
+      ],
+   q(5699) => [
+      q(Northern Conchucos Ancash Quechua),
+      ],
+   q(5700) => [
+      q(Southern Conchucos Ancash Quechua),
+      ],
+   q(5701) => [
+      q(Puno Quechua),
+      ],
+   q(5702) => [
+      q(Qashqa'i),
+      ],
+   q(5703) => [
+      q(Canar Highland Quichua),
+      ],
+   q(5704) => [
+      q(Southern Qiang),
+      ],
+   q(5705) => [
+      q(Santa Ana de Tusi Pasco Quechua),
+      ],
+   q(5706) => [
+      q(Arequipa-La Union Quechua),
+      ],
+   q(5707) => [
+      q(Jauja Wanca Quechua),
+      ],
+   q(5708) => [
+      q(Quenya),
+      ],
+   q(5709) => [
+      q(Quiripi),
+      ],
+   q(5710) => [
+      q(Dungmali),
+      ],
+   q(5711) => [
+      q(Camling),
+      ],
+   q(5712) => [
+      q(Rasawa),
+      ],
+   q(5713) => [
+      q(Rade),
+      ],
+   q(5714) => [
+      q(Western Meohang),
+      ],
+   q(5715) => [
+      q(Logooli),
+      q(Lulogooli),
+      ],
+   q(5716) => [
+      q(Rabha),
+      ],
+   q(5717) => [
+      q(Ramoaaina),
+      ],
+   q(5718) => [
+      q(Tulu-Bohuai),
+      ],
+   q(5719) => [
+      q(Ralte),
+      ],
+   q(5720) => [
+      q(Canela),
+      ],
+   q(5721) => [
+      q(Riantana),
+      ],
+   q(5722) => [
+      q(Rao),
+      ],
+   q(5723) => [
+      q(Saam),
+      ],
+   q(5724) => [
+      q(Tegali),
+      ],
+   q(5725) => [
+      q(Razajerdi),
+      ],
+   q(5726) => [
+      q(Raute),
+      ],
+   q(5727) => [
+      q(Sampang),
+      ],
+   q(5728) => [
+      q(Rawang),
+      ],
+   q(5729) => [
+      q(Rang),
+      ],
+   q(5730) => [
+      q(Rapa),
+      ],
+   q(5731) => [
+      q(Rahambuu),
+      ],
+   q(5732) => [
+      q(Rumai Palaung),
+      ],
+   q(5733) => [
+      q(Northern Bontok),
+      ],
+   q(5734) => [
+      q(Miraya Bikol),
+      ],
+   q(5735) => [
+      q(Barababaraba),
+      ],
+   q(5736) => [
+      q(Reunion Creole French),
+      ],
+   q(5737) => [
+      q(Rudbari),
+      ],
+   q(5738) => [
+      q(Rerau),
+      ],
+   q(5739) => [
+      q(Rembong),
+      ],
+   q(5740) => [
+      q(Rejang Kayan),
+      ],
+   q(5741) => [
+      q(Kara (Tanzania)),
+      ],
+   q(5742) => [
+      q(Reli),
+      ],
+   q(5743) => [
+      q(Rejang),
+      ],
+   q(5744) => [
+      q(Rendille),
+      ],
+   q(5745) => [
+      q(Remo),
+      ],
+   q(5746) => [
+      q(Rengao),
+      ],
+   q(5747) => [
+      q(Rer Bare),
+      ],
+   q(5748) => [
+      q(Reshe),
+      ],
+   q(5749) => [
+      q(Retta),
+      ],
+   q(5750) => [
+      q(Reyesano),
+      ],
+   q(5751) => [
+      q(Roria),
+      ],
+   q(5752) => [
+      q(Romano-Greek),
+      ],
+   q(5753) => [
+      q(Rangkas),
+      ],
+   q(5754) => [
+      q(Romagnol),
+      ],
+   q(5755) => [
+      q(Resigaro),
+      ],
+   q(5756) => [
+      q(Southern Roglai),
+      ],
+   q(5757) => [
+      q(Ringgou),
+      ],
+   q(5758) => [
+      q(Rohingya),
+      ],
+   q(5759) => [
+      q(Yahang),
+      ],
+   q(5760) => [
+      q(Riang (India)),
+      ],
+   q(5761) => [
+      q(Rien),
+      ],
+   q(5762) => [
+      q(Tarifit),
+      ],
+   q(5763) => [
+      q(Riang (Myanmar)),
+      ],
+   q(5764) => [
+      q(Nyaturu),
+      ],
+   q(5765) => [
+      q(Nungu),
+      ],
+   q(5766) => [
+      q(Ribun),
+      ],
+   q(5767) => [
+      q(Ritarungo),
+      ],
+   q(5768) => [
+      q(Riung),
+      ],
+   q(5769) => [
+      q(Rajong),
+      ],
+   q(5770) => [
+      q(Raji),
+      ],
+   q(5771) => [
+      q(Rajbanshi),
+      ],
+   q(5772) => [
+      q(Kraol),
+      ],
+   q(5773) => [
+      q(Rikbaktsa),
+      ],
+   q(5774) => [
+      q(Rakahanga-Manihiki),
+      ],
+   q(5775) => [
+      q(Rakhine),
+      ],
+   q(5776) => [
+      q(Marka),
+      ],
+   q(5777) => [
+      q(Rangpuri),
+      q(Kamta),
+      ],
+   q(5778) => [
+      q(Rama),
+      ],
+   q(5779) => [
+      q(Rembarunga),
+      ],
+   q(5780) => [
+      q(Carpathian Romani),
+      ],
+   q(5781) => [
+      q(Traveller Danish),
+      ],
+   q(5782) => [
+      q(Angloromani),
+      ],
+   q(5783) => [
+      q(Kalo Finnish Romani),
+      ],
+   q(5784) => [
+      q(Traveller Norwegian),
+      ],
+   q(5785) => [
+      q(Murkim),
+      ],
+   q(5786) => [
+      q(Lomavren),
+      ],
+   q(5787) => [
+      q(Romkun),
+      ],
+   q(5788) => [
+      q(Baltic Romani),
+      ],
+   q(5789) => [
+      q(Roma),
+      ],
+   q(5790) => [
+      q(Balkan Romani),
+      ],
+   q(5791) => [
+      q(Sinte Romani),
+      ],
+   q(5792) => [
+      q(Rempi),
+      ],
+   q(5793) => [
+      q(Calo),
+      ],
+   q(5794) => [
+      q(Romanian Sign Language),
+      ],
+   q(5795) => [
+      q(Domari),
+      ],
+   q(5796) => [
+      q(Tavringer Romani),
+      ],
+   q(5797) => [
+      q(Romanova),
+      ],
+   q(5798) => [
+      q(Welsh Romani),
+      ],
+   q(5799) => [
+      q(Romam),
+      ],
+   q(5800) => [
+      q(Vlax Romani),
+      ],
+   q(5801) => [
+      q(Marma),
+      ],
+   q(5802) => [
+      q(Runa),
+      ],
+   q(5803) => [
+      q(Ruund),
+      ],
+   q(5804) => [
+      q(Ronga),
+      ],
+   q(5805) => [
+      q(Ranglong),
+      ],
+   q(5806) => [
+      q(Roon),
+      ],
+   q(5807) => [
+      q(Rongpo),
+      ],
+   q(5808) => [
+      q(Nari Nari),
+      ],
+   q(5809) => [
+      q(Rungwa),
+      ],
+   q(5810) => [
+      q(Tae'),
+      ],
+   q(5811) => [
+      q(Cacgia Roglai),
+      ],
+   q(5812) => [
+      q(Rogo),
+      ],
+   q(5813) => [
+      q(Ronji),
+      ],
+   q(5814) => [
+      q(Rombo),
+      ],
+   q(5815) => [
+      q(Northern Roglai),
+      ],
+   q(5816) => [
+      q(Romblomanon),
+      ],
+   q(5817) => [
+      q(Rotokas),
+      ],
+   q(5818) => [
+      q(Kriol),
+      ],
+   q(5819) => [
+      q(Rongga),
+      ],
+   q(5820) => [
+      q(Runga),
+      ],
+   q(5821) => [
+      q(Dela-Oenale),
+      ],
+   q(5822) => [
+      q(Repanbitip),
+      ],
+   q(5823) => [
+      q(Rapting),
+      ],
+   q(5824) => [
+      q(Ririo),
+      ],
+   q(5825) => [
+      q(Waima),
+      ],
+   q(5826) => [
+      q(Arritinngithigh),
+      ],
+   q(5827) => [
+      q(Romano-Serbian),
+      ],
+   q(5828) => [
+      q(Rennellese Sign Language),
+      ],
+   q(5829) => [
+      q(Russian Sign Language),
+      ],
+   q(5830) => [
+      q(Rungtu Chin),
+      ],
+   q(5831) => [
+      q(Ratahan),
+      ],
+   q(5832) => [
+      q(Rotuman),
+      ],
+   q(5833) => [
+      q(Rathawi),
+      ],
+   q(5834) => [
+      q(Gungu),
+      ],
+   q(5835) => [
+      q(Ruuli),
+      ],
+   q(5836) => [
+      q(Rusyn),
+      ],
+   q(5837) => [
+      q(Luguru),
+      ],
+   q(5838) => [
+      q(Roviana),
+      ],
+   q(5839) => [
+      q(Ruga),
+      ],
+   q(5840) => [
+      q(Rufiji),
+      ],
+   q(5841) => [
+      q(Che),
+      ],
+   q(5842) => [
+      q(Istro Romanian),
+      ],
+   q(5843) => [
+      q(Megleno Romanian),
+      ],
+   q(5844) => [
+      q(Rutul),
+      ],
+   q(5845) => [
+      q(Lanas Lobu),
+      ],
+   q(5846) => [
+      q(Mala (Nigeria)),
+      ],
+   q(5847) => [
+      q(Ruma),
+      ],
+   q(5848) => [
+      q(Rawo),
+      ],
+   q(5849) => [
+      q(Rwa),
+      ],
+   q(5850) => [
+      q(Amba (Uganda)),
+      ],
+   q(5851) => [
+      q(Rawa),
+      ],
+   q(5852) => [
+      q(Marwari (India)),
+      ],
+   q(5853) => [
+      q(Northern Amami-Oshima),
+      ],
+   q(5854) => [
+      q(Yaeyama),
+      ],
+   q(5855) => [
+      q(Central Okinawan),
+      ],
+   q(5856) => [
+      q(Saba),
+      ],
+   q(5857) => [
+      q(Buglere),
+      ],
+   q(5858) => [
+      q(Meskwaki),
+      ],
+   q(5859) => [
+      q(Sabane),
+      ],
+   q(5860) => [
+      q(Safaliba),
+      ],
+   q(5861) => [
+      q(Sahu),
+      ],
+   q(5862) => [
+      q(Sake),
+      ],
+   q(5863) => [
+      q(Sause),
+      ],
+   q(5864) => [
+      q(Sanapana),
+      ],
+   q(5865) => [
+      q(Samburu),
+      ],
+   q(5866) => [
+      q(Saraveca),
+      ],
+   q(5867) => [
+      q(Saleman),
+      ],
+   q(5868) => [
+      q(Saafi-Saafi),
+      ],
+   q(5869) => [
+      q(Sawi),
+      ],
+   q(5870) => [
+      q(Sa),
+      ],
+   q(5871) => [
+      q(Saya),
+      ],
+   q(5872) => [
+      q(Saurashtra),
+      ],
+   q(5873) => [
+      q(Ngambay),
+      ],
+   q(5874) => [
+      q(Simbo),
+      ],
+   q(5875) => [
+      q(Kele (Papua New Guinea)),
+      ],
+   q(5876) => [
+      q(Southern Samo),
+      ],
+   q(5877) => [
+      q(Saliba),
+      ],
+   q(5878) => [
+      q(Shabo),
+      ],
+   q(5879) => [
+      q(Seget),
+      ],
+   q(5880) => [
+      q(Sori-Harengan),
+      ],
+   q(5881) => [
+      q(Seti),
+      ],
+   q(5882) => [
+      q(Surbakhal),
+      ],
+   q(5883) => [
+      q(Safwa),
+      ],
+   q(5884) => [
+      q(Botolan Sambal),
+      ],
+   q(5885) => [
+      q(Sagala),
+      ],
+   q(5886) => [
+      q(Sindhi Bhil),
+      ],
+   q(5887) => [
+      q(Sabum),
+      ],
+   q(5888) => [
+      q(Sangu (Tanzania)),
+      ],
+   q(5889) => [
+      q(Sileibi),
+      ],
+   q(5890) => [
+      q(Sembakung Murut),
+      ],
+   q(5891) => [
+      q(Subiya),
+      ],
+   q(5892) => [
+      q(Kimki),
+      ],
+   q(5893) => [
+      q(Stod Bhoti),
+      ],
+   q(5894) => [
+      q(Sabine),
+      ],
+   q(5895) => [
+      q(Simba),
+      ],
+   q(5896) => [
+      q(Seberuang),
+      ],
+   q(5897) => [
+      q(Soli),
+      ],
+   q(5898) => [
+      q(Sara Kaba),
+      ],
+   q(5899) => [
+      q(Chut),
+      ],
+   q(5900) => [
+      q(Dongxiang),
+      ],
+   q(5901) => [
+      q(San Miguel Creole French),
+      ],
+   q(5902) => [
+      q(Sanggau),
+      ],
+   q(5903) => [
+      q(Sakachep),
+      ],
+   q(5904) => [
+      q(Sri Lankan Creole Malay),
+      ],
+   q(5905) => [
+      q(Sadri),
+      ],
+   q(5906) => [
+      q(Shina),
+      ],
+   q(5907) => [
+      q(Helambu Sherpa),
+      ],
+   q(5908) => [
+      q(Sa'och),
+      ],
+   q(5909) => [
+      q(North Slavey),
+      ],
+   q(5910) => [
+      q(Shumcho),
+      ],
+   q(5911) => [
+      q(Sheni),
+      ],
+   q(5912) => [
+      q(Sha),
+      ],
+   q(5913) => [
+      q(Sicel),
+      ],
+   q(5914) => [
+      q(Toraja-Sa'dan),
+      ],
+   q(5915) => [
+      q(Shabak),
+      ],
+   q(5916) => [
+      q(Sassarese Sardinian),
+      ],
+   q(5917) => [
+      q(Surubu),
+      ],
+   q(5918) => [
+      q(Sarli),
+      ],
+   q(5919) => [
+      q(Savi),
+      ],
+   q(5920) => [
+      q(Southern Kurdish),
+      ],
+   q(5921) => [
+      q(Suundi),
+      ],
+   q(5922) => [
+      q(Sos Kundi),
+      ],
+   q(5923) => [
+      q(Saudi Arabian Sign Language),
+      ],
+   q(5924) => [
+      q(Semandang),
+      ],
+   q(5925) => [
+      q(Gallurese Sardinian),
+      ],
+   q(5926) => [
+      q(Bukar-Sadung Bidayuh),
+      ],
+   q(5927) => [
+      q(Sherdukpen),
+      ],
+   q(5928) => [
+      q(Oraon Sadri),
+      ],
+   q(5929) => [
+      q(Sened),
+      ],
+   q(5930) => [
+      q(Shuadit),
+      ],
+   q(5931) => [
+      q(Sarudu),
+      ],
+   q(5932) => [
+      q(Sibu Melanau),
+      ],
+   q(5933) => [
+      q(Sallands),
+      ],
+   q(5934) => [
+      q(Semai),
+      ],
+   q(5935) => [
+      q(Shempire Senoufo),
+      ],
+   q(5936) => [
+      q(Sechelt),
+      ],
+   q(5937) => [
+      q(Sedang),
+      ],
+   q(5938) => [
+      q(Seneca),
+      ],
+   q(5939) => [
+      q(Cebaara Senoufo),
+      ],
+   q(5940) => [
+      q(Segeju),
+      ],
+   q(5941) => [
+      q(Sena),
+      ],
+   q(5942) => [
+      q(Seri),
+      ],
+   q(5943) => [
+      q(Sene),
+      ],
+   q(5944) => [
+      q(Sekani),
+      ],
+   q(5945) => [
+      q(Nanerige Senoufo),
+      ],
+   q(5946) => [
+      q(Suarmin),
+      ],
+   q(5947) => [
+      q(Sicite Senoufo),
+      ],
+   q(5948) => [
+      q(Senara Senoufo),
+      ],
+   q(5949) => [
+      q(Serrano),
+      ],
+   q(5950) => [
+      q(Koyraboro Senni Songhai),
+      ],
+   q(5951) => [
+      q(Sentani),
+      ],
+   q(5952) => [
+      q(Serui-Laut),
+      ],
+   q(5953) => [
+      q(Nyarafolo Senoufo),
+      ],
+   q(5954) => [
+      q(Sewa Bay),
+      ],
+   q(5955) => [
+      q(Secoya),
+      ],
+   q(5956) => [
+      q(Senthang Chin),
+      ],
+   q(5957) => [
+      q(Langue des signes de Belgique Francophone),
+      q(French Belgian Sign Language),
+      ],
+   q(5958) => [
+      q(Eastern Subanen),
+      ],
+   q(5959) => [
+      q(Small Flowery Miao),
+      ],
+   q(5960) => [
+      q(South African Sign Language),
+      ],
+   q(5961) => [
+      q(Sehwi),
+      ],
+   q(5962) => [
+      q(Mag-antsi Ayta),
+      ],
+   q(5963) => [
+      q(Kipsigis),
+      ],
+   q(5964) => [
+      q(Surigaonon),
+      ],
+   q(5965) => [
+      q(Segai),
+      ],
+   q(5966) => [
+      q(Swiss-German Sign Language),
+      ],
+   q(5967) => [
+      q(Shughni),
+      ],
+   q(5968) => [
+      q(Suga),
+      ],
+   q(5969) => [
+      q(Surgujia),
+      ],
+   q(5970) => [
+      q(Sangkong),
+      ],
+   q(5971) => [
+      q(Singa),
+      ],
+   q(5972) => [
+      q(Songa),
+      ],
+   q(5973) => [
+      q(Singpho),
+      ],
+   q(5974) => [
+      q(Sangisari),
+      ],
+   q(5975) => [
+      q(Samogitian),
+      ],
+   q(5976) => [
+      q(Brokpake),
+      ],
+   q(5977) => [
+      q(Salas),
+      ],
+   q(5978) => [
+      q(Sebat Bet Gurage),
+      ],
+   q(5979) => [
+      q(Sierra Leone Sign Language),
+      ],
+   q(5980) => [
+      q(Sanglechi),
+      ],
+   q(5981) => [
+      q(Sursurunga),
+      ],
+   q(5982) => [
+      q(Shall-Zwall),
+      ],
+   q(5983) => [
+      q(Ninam),
+      ],
+   q(5984) => [
+      q(Sonde),
+      ],
+   q(5985) => [
+      q(Kundal Shahi),
+      ],
+   q(5986) => [
+      q(Sheko),
+      ],
+   q(5987) => [
+      q(Shua),
+      ],
+   q(5988) => [
+      q(Shoshoni),
+      ],
+   q(5989) => [
+      q(Tachelhit),
+      ],
+   q(5990) => [
+      q(Shatt),
+      ],
+   q(5991) => [
+      q(Shilluk),
+      ],
+   q(5992) => [
+      q(Shendu),
+      ],
+   q(5993) => [
+      q(Shahrudi),
+      ],
+   q(5994) => [
+      q(Shanga),
+      ],
+   q(5995) => [
+      q(Shipibo-Conibo),
+      ],
+   q(5996) => [
+      q(Sala),
+      ],
+   q(5997) => [
+      q(Shi),
+      ],
+   q(5998) => [
+      q(Shuswap),
+      ],
+   q(5999) => [
+      q(Shasta),
+      ],
+   q(6000) => [
+      q(Chadian Arabic),
+      ],
+   q(6001) => [
+      q(Shehri),
+      ],
+   q(6002) => [
+      q(Shwai),
+      ],
+   q(6003) => [
+      q(She),
+      ],
+   q(6004) => [
+      q(Tachawit),
+      ],
+   q(6005) => [
+      q(Syenara Senoufo),
+      ],
+   q(6006) => [
+      q(Akkala Sami),
+      ],
+   q(6007) => [
+      q(Sebop),
+      ],
+   q(6008) => [
+      q(Simaa),
+      ],
+   q(6009) => [
+      q(Siamou),
+      ],
+   q(6010) => [
+      q(Paasaal),
+      ],
+   q(6011) => [
+      q(Zire),
+      ],
+   q(6012) => [
+      q(Shom Peng),
+      ],
+   q(6013) => [
+      q(Numbami),
+      ],
+   q(6014) => [
+      q(Sikiana),
+      ],
+   q(6015) => [
+      q(Tumulung Sisaala),
+      ],
+   q(6016) => [
+      q(Mende (Papua New Guinea)),
+      ],
+   q(6017) => [
+      q(Sikkimese),
+      ],
+   q(6018) => [
+      q(Sonia),
+      ],
+   q(6019) => [
+      q(Siri),
+      ],
+   q(6020) => [
+      q(Siuslaw),
+      ],
+   q(6021) => [
+      q(Sinagen),
+      ],
+   q(6022) => [
+      q(Sumariup),
+      ],
+   q(6023) => [
+      q(Siwai),
+      ],
+   q(6024) => [
+      q(Sumau),
+      ],
+   q(6025) => [
+      q(Sivandi),
+      ],
+   q(6026) => [
+      q(Siwi),
+      ],
+   q(6027) => [
+      q(Epena),
+      ],
+   q(6028) => [
+      q(Sajau Basap),
+      ],
+   q(6029) => [
+      q(Kildin Sami),
+      ],
+   q(6030) => [
+      q(Pite Sami),
+      ],
+   q(6031) => [
+      q(Assangori),
+      ],
+   q(6032) => [
+      q(Kemi Sami),
+      ],
+   q(6033) => [
+      q(Sajalong),
+      q(Miji),
+      ],
+   q(6034) => [
+      q(Mapun),
+      ],
+   q(6035) => [
+      q(Sindarin),
+      ],
+   q(6036) => [
+      q(Xibe),
+      ],
+   q(6037) => [
+      q(Surjapuri),
+      ],
+   q(6038) => [
+      q(Siar-Lak),
+      ],
+   q(6039) => [
+      q(Senhaja De Srair),
+      ],
+   q(6040) => [
+      q(Ter Sami),
+      ],
+   q(6041) => [
+      q(Ume Sami),
+      ],
+   q(6042) => [
+      q(Shawnee),
+      ],
+   q(6043) => [
+      q(Skagit),
+      ],
+   q(6044) => [
+      q(Saek),
+      ],
+   q(6045) => [
+      q(Ma Manda),
+      ],
+   q(6046) => [
+      q(Southern Sierra Miwok),
+      ],
+   q(6047) => [
+      q(Seke (Vanuatu)),
+      ],
+   q(6048) => [
+      q(Sakirabia),
+      ],
+   q(6049) => [
+      q(Sakalava Malagasy),
+      ],
+   q(6050) => [
+      q(Sikule),
+      ],
+   q(6051) => [
+      q(Sika),
+      ],
+   q(6052) => [
+      q(Seke (Nepal)),
+      ],
+   q(6053) => [
+      q(Sok),
+      ],
+   q(6054) => [
+      q(Kutong),
+      ],
+   q(6055) => [
+      q(Kolibugan Subanon),
+      ],
+   q(6056) => [
+      q(Seko Tengah),
+      ],
+   q(6057) => [
+      q(Sekapan),
+      ],
+   q(6058) => [
+      q(Sininkere),
+      ],
+   q(6059) => [
+      q(Seraiki),
+      ],
+   q(6060) => [
+      q(Maia),
+      ],
+   q(6061) => [
+      q(Sakata),
+      ],
+   q(6062) => [
+      q(Sakao),
+      ],
+   q(6063) => [
+      q(Skou),
+      ],
+   q(6064) => [
+      q(Skepi Creole Dutch),
+      ],
+   q(6065) => [
+      q(Seko Padang),
+      ],
+   q(6066) => [
+      q(Sikaiana),
+      ],
+   q(6067) => [
+      q(Sekar),
+      ],
+   q(6068) => [
+      q(Sissala),
+      ],
+   q(6069) => [
+      q(Sholaga),
+      ],
+   q(6070) => [
+      q(Swiss-Italian Sign Language),
+      ],
+   q(6071) => [
+      q(Selungai Murut),
+      ],
+   q(6072) => [
+      q(Southern Puget Sound Salish),
+      ],
+   q(6073) => [
+      q(Lower Silesian),
+      ],
+   q(6074) => [
+      q(Saluma),
+      ],
+   q(6075) => [
+      q(Salt-Yui),
+      ],
+   q(6076) => [
+      q(Pangutaran Sama),
+      ],
+   q(6077) => [
+      q(Salinan),
+      ],
+   q(6078) => [
+      q(Lamaholot),
+      ],
+   q(6079) => [
+      q(Salchuq),
+      ],
+   q(6080) => [
+      q(Salar),
+      ],
+   q(6081) => [
+      q(Singapore Sign Language),
+      ],
+   q(6082) => [
+      q(Sila),
+      ],
+   q(6083) => [
+      q(Selaru),
+      ],
+   q(6084) => [
+      q(Sialum),
+      ],
+   q(6085) => [
+      q(Salampasu),
+      ],
+   q(6086) => [
+      q(Selayar),
+      ],
+   q(6087) => [
+      q(Ma'ya),
+      ],
+   q(6088) => [
+      q(Simbari),
+      ],
+   q(6089) => [
+      q(Som),
+      ],
+   q(6090) => [
+      q(Sama),
+      ],
+   q(6091) => [
+      q(Auwe),
+      ],
+   q(6092) => [
+      q(Simbali),
+      ],
+   q(6093) => [
+      q(Samei),
+      ],
+   q(6094) => [
+      q(Bolinao),
+      ],
+   q(6095) => [
+      q(Central Sama),
+      ],
+   q(6096) => [
+      q(Musasa),
+      ],
+   q(6097) => [
+      q(Samaritan),
+      ],
+   q(6098) => [
+      q(Samo),
+      ],
+   q(6099) => [
+      q(Simeulue),
+      ],
+   q(6100) => [
+      q(Simte),
+      ],
+   q(6101) => [
+      q(Somray),
+      ],
+   q(6102) => [
+      q(Samvedi),
+      ],
+   q(6103) => [
+      q(Sumbawa),
+      ],
+   q(6104) => [
+      q(Samba),
+      ],
+   q(6105) => [
+      q(Semnani),
+      ],
+   q(6106) => [
+      q(Simeku),
+      ],
+   q(6107) => [
+      q(Sebuyau),
+      ],
+   q(6108) => [
+      q(Sinaugoro),
+      ],
+   q(6109) => [
+      q(Bau Bidayuh),
+      ],
+   q(6110) => [
+      q(Noon),
+      ],
+   q(6111) => [
+      q(Sanga (Democratic Republic of Congo)),
+      ],
+   q(6112) => [
+      q(Shinabo),
+      ],
+   q(6113) => [
+      q(Sensi),
+      ],
+   q(6114) => [
+      q(Riverain Sango),
+      ],
+   q(6115) => [
+      q(Sangil),
+      ],
+   q(6116) => [
+      q(Southern Ma'di),
+      ],
+   q(6117) => [
+      q(Siona),
+      ],
+   q(6118) => [
+      q(Snohomish),
+      ],
+   q(6119) => [
+      q(Siane),
+      ],
+   q(6120) => [
+      q(Sangu (Gabon)),
+      ],
+   q(6121) => [
+      q(Sihan),
+      ],
+   q(6122) => [
+      q(South West Bay),
+      q(Nahavaq),
+      ],
+   q(6123) => [
+      q(Senggi),
+      q(Viid),
+      ],
+   q(6124) => [
+      q(Sa'ban),
+      ],
+   q(6125) => [
+      q(Selee),
+      ],
+   q(6126) => [
+      q(Sam),
+      ],
+   q(6127) => [
+      q(Saniyo-Hiyewe),
+      ],
+   q(6128) => [
+      q(Sinsauru),
+      ],
+   q(6129) => [
+      q(Thai Song),
+      ],
+   q(6130) => [
+      q(Sobei),
+      ],
+   q(6131) => [
+      q(So (Democratic Republic of Congo)),
+      ],
+   q(6132) => [
+      q(Songoora),
+      ],
+   q(6133) => [
+      q(Songomeno),
+      ],
+   q(6134) => [
+      q(Aka),
+      ],
+   q(6135) => [
+      q(Sonha),
+      ],
+   q(6136) => [
+      q(Soi),
+      ],
+   q(6137) => [
+      q(Sokoro),
+      ],
+   q(6138) => [
+      q(Solos),
+      ],
+   q(6139) => [
+      q(Songo),
+      ],
+   q(6140) => [
+      q(Songe),
+      ],
+   q(6141) => [
+      q(Kanasi),
+      ],
+   q(6142) => [
+      q(Somrai),
+      ],
+   q(6143) => [
+      q(Seeku),
+      ],
+   q(6144) => [
+      q(Southern Thai),
+      ],
+   q(6145) => [
+      q(Sonsorol),
+      ],
+   q(6146) => [
+      q(Sowanda),
+      ],
+   q(6147) => [
+      q(Swo),
+      ],
+   q(6148) => [
+      q(Miyobe),
+      ],
+   q(6149) => [
+      q(Temi),
+      ],
+   q(6150) => [
+      q(Sepa (Indonesia)),
+      ],
+   q(6151) => [
+      q(Sape),
+      ],
+   q(6152) => [
+      q(Saep),
+      ],
+   q(6153) => [
+      q(Sepa (Papua New Guinea)),
+      ],
+   q(6154) => [
+      q(Sian),
+      ],
+   q(6155) => [
+      q(Saponi),
+      ],
+   q(6156) => [
+      q(Sengo),
+      ],
+   q(6157) => [
+      q(Selepet),
+      ],
+   q(6158) => [
+      q(Akukem),
+      ],
+   q(6159) => [
+      q(Spokane),
+      ],
+   q(6160) => [
+      q(Supyire Senoufo),
+      ],
+   q(6161) => [
+      q(Loreto-Ucayali Spanish),
+      ],
+   q(6162) => [
+      q(Saparua),
+      ],
+   q(6163) => [
+      q(Saposa),
+      ],
+   q(6164) => [
+      q(Spiti Bhoti),
+      ],
+   q(6165) => [
+      q(Sapuan),
+      ],
+   q(6166) => [
+      q(Sambalpuri),
+      q(Kosli),
+      ],
+   q(6167) => [
+      q(South Picene),
+      ],
+   q(6168) => [
+      q(Sabaot),
+      ],
+   q(6169) => [
+      q(Shama-Sambuga),
+      ],
+   q(6170) => [
+      q(Shau),
+      ],
+   q(6171) => [
+      q(Albanian Sign Language),
+      ],
+   q(6172) => [
+      q(Suma),
+      ],
+   q(6173) => [
+      q(Susquehannock),
+      ],
+   q(6174) => [
+      q(Sorkhei),
+      ],
+   q(6175) => [
+      q(Sou),
+      ],
+   q(6176) => [
+      q(Siculo Arabic),
+      ],
+   q(6177) => [
+      q(Sri Lankan Sign Language),
+      ],
+   q(6178) => [
+      q(Soqotri),
+      ],
+   q(6179) => [
+      q(Squamish),
+      ],
+   q(6180) => [
+      q(Saruga),
+      ],
+   q(6181) => [
+      q(Sora),
+      ],
+   q(6182) => [
+      q(Logudorese Sardinian),
+      ],
+   q(6183) => [
+      q(Sara),
+      ],
+   q(6184) => [
+      q(Nafi),
+      ],
+   q(6185) => [
+      q(Sulod),
+      ],
+   q(6186) => [
+      q(Sarikoli),
+      ],
+   q(6187) => [
+      q(Siriano),
+      ],
+   q(6188) => [
+      q(Serudung Murut),
+      ],
+   q(6189) => [
+      q(Isirawa),
+      ],
+   q(6190) => [
+      q(Saramaccan),
+      ],
+   q(6191) => [
+      q(Campidanese Sardinian),
+      ],
+   q(6192) => [
+      q(Siriono),
+      ],
+   q(6193) => [
+      q(Sarsi),
+      ],
+   q(6194) => [
+      q(Sauri),
+      ],
+   q(6195) => [
+      q(Surui),
+      ],
+   q(6196) => [
+      q(Southern Sorsoganon),
+      ],
+   q(6197) => [
+      q(Serua),
+      ],
+   q(6198) => [
+      q(Sirmauri),
+      ],
+   q(6199) => [
+      q(Sera),
+      ],
+   q(6200) => [
+      q(Shahmirzadi),
+      ],
+   q(6201) => [
+      q(Southern Sama),
+      ],
+   q(6202) => [
+      q(Suba-Simbiti),
+      ],
+   q(6203) => [
+      q(Siroi),
+      ],
+   q(6204) => [
+      q(Balangingi),
+      q(Bangingih Sama),
+      ],
+   q(6205) => [
+      q(Thao),
+      ],
+   q(6206) => [
+      q(Seimat),
+      ],
+   q(6207) => [
+      q(Shihhi Arabic),
+      ],
+   q(6208) => [
+      q(Sansi),
+      ],
+   q(6209) => [
+      q(Sausi),
+      ],
+   q(6210) => [
+      q(Sunam),
+      ],
+   q(6211) => [
+      q(Western Sisaala),
+      ],
+   q(6212) => [
+      q(Semnam),
+      ],
+   q(6213) => [
+      q(Waata),
+      ],
+   q(6214) => [
+      q(Sissano),
+      ],
+   q(6215) => [
+      q(Spanish Sign Language),
+      ],
+   q(6216) => [
+      q(So'a),
+      ],
+   q(6217) => [
+      q(Swiss-French Sign Language),
+      ],
+   q(6218) => [
+      q(So),
+      ],
+   q(6219) => [
+      q(Sinasina),
+      ],
+   q(6220) => [
+      q(Susuami),
+      ],
+   q(6221) => [
+      q(Shark Bay),
+      ],
+   q(6222) => [
+      q(Samberigi),
+      ],
+   q(6223) => [
+      q(Saho),
+      ],
+   q(6224) => [
+      q(Sengseng),
+      ],
+   q(6225) => [
+      q(Settla),
+      ],
+   q(6226) => [
+      q(Northern Subanen),
+      ],
+   q(6227) => [
+      q(Sentinel),
+      ],
+   q(6228) => [
+      q(Liana-Seti),
+      ],
+   q(6229) => [
+      q(Seta),
+      ],
+   q(6230) => [
+      q(Trieng),
+      ],
+   q(6231) => [
+      q(Shelta),
+      ],
+   q(6232) => [
+      q(Bulo Stieng),
+      ],
+   q(6233) => [
+      q(Matya Samo),
+      ],
+   q(6234) => [
+      q(Arammba),
+      ],
+   q(6235) => [
+      q(Stellingwerfs),
+      ],
+   q(6236) => [
+      q(Setaman),
+      ],
+   q(6237) => [
+      q(Owa),
+      ],
+   q(6238) => [
+      q(Stoney),
+      ],
+   q(6239) => [
+      q(Southeastern Tepehuan),
+      ],
+   q(6240) => [
+      q(Saterfriesisch),
+      ],
+   q(6241) => [
+      q(Straits Salish),
+      ],
+   q(6242) => [
+      q(Shumashti),
+      ],
+   q(6243) => [
+      q(Budeh Stieng),
+      ],
+   q(6244) => [
+      q(Samtao),
+      ],
+   q(6245) => [
+      q(Silt'e),
+      ],
+   q(6246) => [
+      q(Satawalese),
+      ],
+   q(6247) => [
+      q(Sulka),
+      ],
+   q(6248) => [
+      q(Suku),
+      ],
+   q(6249) => [
+      q(Western Subanon),
+      ],
+   q(6250) => [
+      q(Suena),
+      ],
+   q(6251) => [
+      q(Suganga),
+      ],
+   q(6252) => [
+      q(Suki),
+      ],
+   q(6253) => [
+      q(Shubi),
+      ],
+   q(6254) => [
+      q(Suri),
+      ],
+   q(6255) => [
+      q(Mwaghavul),
+      ],
+   q(6256) => [
+      q(Subtiaba),
+      ],
+   q(6257) => [
+      q(Puroik),
+      ],
+   q(6258) => [
+      q(Sumbwa),
+      ],
+   q(6259) => [
+      q(Suya),
+      ],
+   q(6260) => [
+      q(Sunwar),
+      ],
+   q(6261) => [
+      q(Svan),
+      ],
+   q(6262) => [
+      q(Ulau-Suain),
+      ],
+   q(6263) => [
+      q(Vincentian Creole English),
+      ],
+   q(6264) => [
+      q(Serili),
+      ],
+   q(6265) => [
+      q(Slovakian Sign Language),
+      ],
+   q(6266) => [
+      q(Savara),
+      ],
+   q(6267) => [
+      q(Savosavo),
+      ],
+   q(6268) => [
+      q(Skalvian),
+      ],
+   q(6269) => [
+      q(Maore Comorian),
+      ],
+   q(6270) => [
+      q(Congo Swahili),
+      ],
+   q(6271) => [
+      q(Sere),
+      ],
+   q(6272) => [
+      q(Swabian),
+      ],
+   q(6273) => [
+      q(Swahili (individual language)),
+      q(Kiswahili),
+      ],
+   q(6274) => [
+      q(Sui),
+      ],
+   q(6275) => [
+      q(Sira),
+      ],
+   q(6276) => [
+      q(Malawi Sena),
+      ],
+   q(6277) => [
+      q(Swedish Sign Language),
+      ],
+   q(6278) => [
+      q(Samosa),
+      ],
+   q(6279) => [
+      q(Sawknah),
+      ],
+   q(6280) => [
+      q(Shanenawa),
+      ],
+   q(6281) => [
+      q(Suau),
+      ],
+   q(6282) => [
+      q(Sharwa),
+      ],
+   q(6283) => [
+      q(Saweru),
+      ],
+   q(6284) => [
+      q(Seluwasan),
+      ],
+   q(6285) => [
+      q(Sawila),
+      ],
+   q(6286) => [
+      q(Suwawa),
+      ],
+   q(6287) => [
+      q(Shekhawati),
+      ],
+   q(6288) => [
+      q(Sowa),
+      ],
+   q(6289) => [
+      q(Suruaha),
+      ],
+   q(6290) => [
+      q(Sarua),
+      ],
+   q(6291) => [
+      q(Suba),
+      ],
+   q(6292) => [
+      q(Sicanian),
+      ],
+   q(6293) => [
+      q(Sighu),
+      ],
+   q(6294) => [
+      q(Shixing),
+      ],
+   q(6295) => [
+      q(Southern Kalapuya),
+      ],
+   q(6296) => [
+      q(Selian),
+      ],
+   q(6297) => [
+      q(Samre),
+      ],
+   q(6298) => [
+      q(Sangir),
+      ],
+   q(6299) => [
+      q(Sorothaptic),
+      ],
+   q(6300) => [
+      q(Saaroa),
+      ],
+   q(6301) => [
+      q(Sasaru),
+      ],
+   q(6302) => [
+      q(Upper Saxon),
+      ],
+   q(6303) => [
+      q(Saxwe Gbe),
+      ],
+   q(6304) => [
+      q(Siang),
+      ],
+   q(6305) => [
+      q(Central Subanen),
+      ],
+   q(6306) => [
+      q(Seki),
+      ],
+   q(6307) => [
+      q(Sukur),
+      ],
+   q(6308) => [
+      q(Sylheti),
+      ],
+   q(6309) => [
+      q(Maya Samo),
+      ],
+   q(6310) => [
+      q(Senaya),
+      ],
+   q(6311) => [
+      q(Suoy),
+      ],
+   q(6312) => [
+      q(Sinyar),
+      ],
+   q(6313) => [
+      q(Kagate),
+      ],
+   q(6314) => [
+      q(Al-Sayyid Bedouin Sign Language),
+      ],
+   q(6315) => [
+      q(Semelai),
+      ],
+   q(6316) => [
+      q(Ngalum),
+      ],
+   q(6317) => [
+      q(Semaq Beri),
+      ],
+   q(6318) => [
+      q(Seru),
+      ],
+   q(6319) => [
+      q(Seze),
+      ],
+   q(6320) => [
+      q(Sengele),
+      ],
+   q(6321) => [
+      q(Silesian),
+      ],
+   q(6322) => [
+      q(Sula),
+      ],
+   q(6323) => [
+      q(Suabo),
+      ],
+   q(6324) => [
+      q(Isu (Fako Division)),
+      ],
+   q(6325) => [
+      q(Sawai),
+      ],
+   q(6326) => [
+      q(Lower Tanana),
+      ],
+   q(6327) => [
+      q(Tabassaran),
+      ],
+   q(6328) => [
+      q(Lowland Tarahumara),
+      ],
+   q(6329) => [
+      q(Tause),
+      ],
+   q(6330) => [
+      q(Tariana),
+      ],
+   q(6331) => [
+      q(Tapirape),
+      ],
+   q(6332) => [
+      q(Tagoi),
+      ],
+   q(6333) => [
+      q(Eastern Tamang),
+      ],
+   q(6334) => [
+      q(Tala),
+      ],
+   q(6335) => [
+      q(Tal),
+      ],
+   q(6336) => [
+      q(Tangale),
+      ],
+   q(6337) => [
+      q(Yami),
+      ],
+   q(6338) => [
+      q(Taabwa),
+      ],
+   q(6339) => [
+      q(Tamasheq),
+      ],
+   q(6340) => [
+      q(Central Tarahumara),
+      ],
+   q(6341) => [
+      q(Tay Boi),
+      ],
+   q(6342) => [
+      q(Upper Tanana),
+      ],
+   q(6343) => [
+      q(Tatuyo),
+      ],
+   q(6344) => [
+      q(Tai),
+      ],
+   q(6345) => [
+      q(Tamki),
+      ],
+   q(6346) => [
+      q(Atayal),
+      ],
+   q(6347) => [
+      q(Tocho),
+      ],
+   q(6348) => [
+      q(Aikana),
+      ],
+   q(6349) => [
+      q(Tapeba),
+      ],
+   q(6350) => [
+      q(Takia),
+      ],
+   q(6351) => [
+      q(Kaki Ae),
+      ],
+   q(6352) => [
+      q(Tanimbili),
+      ],
+   q(6353) => [
+      q(Mandara),
+      ],
+   q(6354) => [
+      q(North Tairora),
+      ],
+   q(6355) => [
+      q(Thurawal),
+      ],
+   q(6356) => [
+      q(Gaam),
+      ],
+   q(6357) => [
+      q(Tiang),
+      ],
+   q(6358) => [
+      q(Calamian Tagbanwa),
+      ],
+   q(6359) => [
+      q(Tboli),
+      ],
+   q(6360) => [
+      q(Tagbu),
+      ],
+   q(6361) => [
+      q(Barro Negro Tunebo),
+      ],
+   q(6362) => [
+      q(Tawala),
+      ],
+   q(6363) => [
+      q(Taworta),
+      q(Diebroud),
+      ],
+   q(6364) => [
+      q(Tumtum),
+      ],
+   q(6365) => [
+      q(Tanguat),
+      ],
+   q(6366) => [
+      q(Tembo (Kitembo)),
+      ],
+   q(6367) => [
+      q(Tubar),
+      ],
+   q(6368) => [
+      q(Tobo),
+      ],
+   q(6369) => [
+      q(Tagbanwa),
+      ],
+   q(6370) => [
+      q(Kapin),
+      ],
+   q(6371) => [
+      q(Tabaru),
+      ],
+   q(6372) => [
+      q(Ditammari),
+      ],
+   q(6373) => [
+      q(Ticuna),
+      ],
+   q(6374) => [
+      q(Tanacross),
+      ],
+   q(6375) => [
+      q(Datooga),
+      ],
+   q(6376) => [
+      q(Tafi),
+      ],
+   q(6377) => [
+      q(Southern Tutchone),
+      ],
+   q(6378) => [
+      q(Malinaltepec Me'phaa),
+      q(Malinaltepec Tlapanec),
+      ],
+   q(6379) => [
+      q(Tamagario),
+      ],
+   q(6380) => [
+      q(Turks And Caicos Creole English),
+      ],
+   q(6381) => [
+      q(Wara),
+      ],
+   q(6382) => [
+      q(Tchitchege),
+      ],
+   q(6383) => [
+      q(Taman (Myanmar)),
+      ],
+   q(6384) => [
+      q(Tanahmerah),
+      ],
+   q(6385) => [
+      q(Tichurong),
+      ],
+   q(6386) => [
+      q(Taungyo),
+      ],
+   q(6387) => [
+      q(Tawr Chin),
+      ],
+   q(6388) => [
+      q(Kaiy),
+      ],
+   q(6389) => [
+      q(Torres Strait Creole),
+      ],
+   q(6390) => [
+      q(T'en),
+      ],
+   q(6391) => [
+      q(Southeastern Tarahumara),
+      ],
+   q(6392) => [
+      q(Tecpatlan Totonac),
+      ],
+   q(6393) => [
+      q(Toda),
+      ],
+   q(6394) => [
+      q(Tulu),
+      ],
+   q(6395) => [
+      q(Thado Chin),
+      ],
+   q(6396) => [
+      q(Tagdal),
+      ],
+   q(6397) => [
+      q(Panchpargania),
+      ],
+   q(6398) => [
+      q(Embera-Tado),
+      ],
+   q(6399) => [
+      q(Tai Nua),
+      ],
+   q(6400) => [
+      q(Tiranige Diga Dogon),
+      ],
+   q(6401) => [
+      q(Talieng),
+      ],
+   q(6402) => [
+      q(Western Tamang),
+      ],
+   q(6403) => [
+      q(Thulung),
+      ],
+   q(6404) => [
+      q(Tomadino),
+      ],
+   q(6405) => [
+      q(Tajio),
+      ],
+   q(6406) => [
+      q(Tambas),
+      ],
+   q(6407) => [
+      q(Sur),
+      ],
+   q(6408) => [
+      q(Tondano),
+      ],
+   q(6409) => [
+      q(Teme),
+      ],
+   q(6410) => [
+      q(Tita),
+      ],
+   q(6411) => [
+      q(Todrah),
+      ],
+   q(6412) => [
+      q(Doutai),
+      ],
+   q(6413) => [
+      q(Tetun Dili),
+      ],
+   q(6414) => [
+      q(Tempasuk Dusun),
+      ],
+   q(6415) => [
+      q(Toro),
+      ],
+   q(6416) => [
+      q(Tandroy-Mahafaly Malagasy),
+      ],
+   q(6417) => [
+      q(Tadyawan),
+      ],
+   q(6418) => [
+      q(Temiar),
+      ],
+   q(6419) => [
+      q(Tetete),
+      ],
+   q(6420) => [
+      q(Terik),
+      ],
+   q(6421) => [
+      q(Tepo Krumen),
+      ],
+   q(6422) => [
+      q(Huehuetla Tepehua),
+      ],
+   q(6423) => [
+      q(Teressa),
+      ],
+   q(6424) => [
+      q(Teke-Tege),
+      ],
+   q(6425) => [
+      q(Tehuelche),
+      ],
+   q(6426) => [
+      q(Torricelli),
+      ],
+   q(6427) => [
+      q(Ibali Teke),
+      ],
+   q(6428) => [
+      q(Tama (Colombia)),
+      ],
+   q(6429) => [
+      q(Teso),
+      ],
+   q(6430) => [
+      q(Tepecano),
+      ],
+   q(6431) => [
+      q(Temein),
+      ],
+   q(6432) => [
+      q(Tengger),
+      ],
+   q(6433) => [
+      q(Soo),
+      ],
+   q(6434) => [
+      q(Teor),
+      ],
+   q(6435) => [
+      q(Tewa (USA)),
+      ],
+   q(6436) => [
+      q(Tennet),
+      ],
+   q(6437) => [
+      q(Tulishi),
+      ],
+   q(6438) => [
+      q(Tofin Gbe),
+      ],
+   q(6439) => [
+      q(Tanaina),
+      ],
+   q(6440) => [
+      q(Tefaro),
+      ],
+   q(6441) => [
+      q(Teribe),
+      ],
+   q(6442) => [
+      q(Ternate),
+      ],
+   q(6443) => [
+      q(Sagalla),
+      ],
+   q(6444) => [
+      q(Tobilung),
+      ],
+   q(6445) => [
+      q(Tigak),
+      ],
+   q(6446) => [
+      q(Ciwogai),
+      ],
+   q(6447) => [
+      q(Eastern Gorkha Tamang),
+      ],
+   q(6448) => [
+      q(Chalikha),
+      ],
+   q(6449) => [
+      q(Tangga),
+      ],
+   q(6450) => [
+      q(Tobagonian Creole English),
+      ],
+   q(6451) => [
+      q(Lawunuia),
+      ],
+   q(6452) => [
+      q(Tagin),
+      ],
+   q(6453) => [
+      q(Tandaganon),
+      ],
+   q(6454) => [
+      q(Sudest),
+      ],
+   q(6455) => [
+      q(Tangoa),
+      ],
+   q(6456) => [
+      q(Tring),
+      ],
+   q(6457) => [
+      q(Tareng),
+      ],
+   q(6458) => [
+      q(Nume),
+      ],
+   q(6459) => [
+      q(Central Tagbanwa),
+      ],
+   q(6460) => [
+      q(Tanggu),
+      ],
+   q(6461) => [
+      q(Tingui-Boto),
+      ],
+   q(6462) => [
+      q(Tagwana Senoufo),
+      ],
+   q(6463) => [
+      q(Tagish),
+      ],
+   q(6464) => [
+      q(Togoyo),
+      ],
+   q(6465) => [
+      q(Tagalaka),
+      ],
+   q(6466) => [
+      q(Tai Hang Tong),
+      ],
+   q(6467) => [
+      q(Thayore),
+      ],
+   q(6468) => [
+      q(Chitwania Tharu),
+      ],
+   q(6469) => [
+      q(Thangmi),
+      ],
+   q(6470) => [
+      q(Northern Tarahumara),
+      ],
+   q(6471) => [
+      q(Tai Long),
+      ],
+   q(6472) => [
+      q(Tharaka),
+      q(Kitharaka),
+      ],
+   q(6473) => [
+      q(Dangaura Tharu),
+      ],
+   q(6474) => [
+      q(Aheu),
+      ],
+   q(6475) => [
+      q(Thachanadan),
+      ],
+   q(6476) => [
+      q(Thompson),
+      ],
+   q(6477) => [
+      q(Kochila Tharu),
+      ],
+   q(6478) => [
+      q(Rana Tharu),
+      ],
+   q(6479) => [
+      q(Thakali),
+      ],
+   q(6480) => [
+      q(Tahltan),
+      ],
+   q(6481) => [
+      q(Thuri),
+      ],
+   q(6482) => [
+      q(Tahaggart Tamahaq),
+      ],
+   q(6483) => [
+      q(Thudam),
+      ],
+   q(6484) => [
+      q(The),
+      ],
+   q(6485) => [
+      q(Tha),
+      ],
+   q(6486) => [
+      q(Tayart Tamajeq),
+      ],
+   q(6487) => [
+      q(Tidikelt Tamazight),
+      ],
+   q(6488) => [
+      q(Tira),
+      ],
+   q(6489) => [
+      q(Tidong),
+      ],
+   q(6490) => [
+      q(Tifal),
+      ],
+   q(6491) => [
+      q(Timugon Murut),
+      ],
+   q(6492) => [
+      q(Tiene),
+      ],
+   q(6493) => [
+      q(Tilung),
+      ],
+   q(6494) => [
+      q(Tikar),
+      ],
+   q(6495) => [
+      q(Tillamook),
+      ],
+   q(6496) => [
+      q(Timbe),
+      ],
+   q(6497) => [
+      q(Tindi),
+      ],
+   q(6498) => [
+      q(Teop),
+      ],
+   q(6499) => [
+      q(Trimuris),
+      ],
+   q(6500) => [
+      q(Tiefo),
+      ],
+   q(6501) => [
+      q(Masadiit Itneg),
+      ],
+   q(6502) => [
+      q(Tinigua),
+      ],
+   q(6503) => [
+      q(Adasen),
+      ],
+   q(6504) => [
+      q(Tiwi),
+      ],
+   q(6505) => [
+      q(Southern Tiwa),
+      ],
+   q(6506) => [
+      q(Tiruray),
+      ],
+   q(6507) => [
+      q(Tai Hongjin),
+      ],
+   q(6508) => [
+      q(Tajuasohn),
+      ],
+   q(6509) => [
+      q(Tunjung),
+      ],
+   q(6510) => [
+      q(Northern Tujia),
+      ],
+   q(6511) => [
+      q(Tai Laing),
+      ],
+   q(6512) => [
+      q(Timucua),
+      ],
+   q(6513) => [
+      q(Tonjon),
+      ],
+   q(6514) => [
+      q(Temacine Tamazight),
+      ],
+   q(6515) => [
+      q(Southern Tujia),
+      ],
+   q(6516) => [
+      q(Tjurruru),
+      ],
+   q(6517) => [
+      q(Truka),
+      ],
+   q(6518) => [
+      q(Buksa),
+      ],
+   q(6519) => [
+      q(Tukudede),
+      ],
+   q(6520) => [
+      q(Takwane),
+      ],
+   q(6521) => [
+      q(Tukumanfed),
+      ],
+   q(6522) => [
+      q(Tesaka Malagasy),
+      ],
+   q(6523) => [
+      q(Takelma),
+      ],
+   q(6524) => [
+      q(Toku-No-Shima),
+      ],
+   q(6525) => [
+      q(Tikopia),
+      ],
+   q(6526) => [
+      q(Tee),
+      ],
+   q(6527) => [
+      q(Tsakhur),
+      ],
+   q(6528) => [
+      q(Takestani),
+      ],
+   q(6529) => [
+      q(Kathoriya Tharu),
+      ],
+   q(6530) => [
+      q(Upper Necaxa Totonac),
+      ],
+   q(6531) => [
+      q(Teanu),
+      ],
+   q(6532) => [
+      q(Tangko),
+      ],
+   q(6533) => [
+      q(Takua),
+      ],
+   q(6534) => [
+      q(Southwestern Tepehuan),
+      ],
+   q(6535) => [
+      q(Tobelo),
+      ],
+   q(6536) => [
+      q(Yecuatla Totonac),
+      ],
+   q(6537) => [
+      q(Talaud),
+      ],
+   q(6538) => [
+      q(Telefol),
+      ],
+   q(6539) => [
+      q(Tofanma),
+      ],
+   q(6540) => [
+      q(Talinga-Bwisi),
+      ],
+   q(6541) => [
+      q(Taloki),
+      ],
+   q(6542) => [
+      q(Tetela),
+      ],
+   q(6543) => [
+      q(Tolomako),
+      ],
+   q(6544) => [
+      q(Talondo'),
+      ],
+   q(6545) => [
+      q(Talodi),
+      ],
+   q(6546) => [
+      q(Filomena Mata-Coahuitlan Totonac),
+      ],
+   q(6547) => [
+      q(Tai Loi),
+      ],
+   q(6548) => [
+      q(Talise),
+      ],
+   q(6549) => [
+      q(Tambotalo),
+      ],
+   q(6550) => [
+      q(Teluti),
+      ],
+   q(6551) => [
+      q(Tulehu),
+      ],
+   q(6552) => [
+      q(Taliabu),
+      ],
+   q(6553) => [
+      q(Khehek),
+      ],
+   q(6554) => [
+      q(Talysh),
+      ],
+   q(6555) => [
+      q(Tama (Chad)),
+      ],
+   q(6556) => [
+      q(Katbol),
+      q(Avava),
+      ],
+   q(6557) => [
+      q(Tumak),
+      ],
+   q(6558) => [
+      q(Haruai),
+      ],
+   q(6559) => [
+      q(Tremembe),
+      ],
+   q(6560) => [
+      q(Toba-Maskoy),
+      ],
+   q(6561) => [
+      q(Ternateno),
+      ],
+   q(6562) => [
+      q(Tutuba),
+      ],
+   q(6563) => [
+      q(Samarokena),
+      ],
+   q(6564) => [
+      q(Northwestern Tamang),
+      ],
+   q(6565) => [
+      q(Tamnim Citak),
+      ],
+   q(6566) => [
+      q(Tai Thanh),
+      ],
+   q(6567) => [
+      q(Taman (Indonesia)),
+      ],
+   q(6568) => [
+      q(Temoq),
+      ],
+   q(6569) => [
+      q(Tai Mene),
+      ],
+   q(6570) => [
+      q(Tumleo),
+      ],
+   q(6571) => [
+      q(Jewish Babylonian Aramaic (ca. 200-1200 CE)),
+      ],
+   q(6572) => [
+      q(Tima),
+      ],
+   q(6573) => [
+      q(Tasmate),
+      ],
+   q(6574) => [
+      q(Iau),
+      ],
+   q(6575) => [
+      q(Tembo (Motembo)),
+      ],
+   q(6576) => [
+      q(Temuan),
+      ],
+   q(6577) => [
+      q(Tami),
+      ],
+   q(6578) => [
+      q(Tamanaku),
+      ],
+   q(6579) => [
+      q(Tacana),
+      ],
+   q(6580) => [
+      q(Western Tunebo),
+      ],
+   q(6581) => [
+      q(Tanimuca-Retuara),
+      ],
+   q(6582) => [
+      q(Angosturas Tunebo),
+      ],
+   q(6583) => [
+      q(Tinoc Kallahan),
+      ],
+   q(6584) => [
+      q(Tobanga),
+      ],
+   q(6585) => [
+      q(Maiani),
+      ],
+   q(6586) => [
+      q(Tandia),
+      ],
+   q(6587) => [
+      q(Kwamera),
+      ],
+   q(6588) => [
+      q(Lenakel),
+      ],
+   q(6589) => [
+      q(Tabla),
+      ],
+   q(6590) => [
+      q(North Tanna),
+      ],
+   q(6591) => [
+      q(Toromono),
+      ],
+   q(6592) => [
+      q(Whitesands),
+      ],
+   q(6593) => [
+      q(Taino),
+      ],
+   q(6594) => [
+      q(Bedik),
+      ],
+   q(6595) => [
+      q(Tenis),
+      ],
+   q(6596) => [
+      q(Tontemboan),
+      ],
+   q(6597) => [
+      q(Tay Khang),
+      ],
+   q(6598) => [
+      q(Tangchangya),
+      ],
+   q(6599) => [
+      q(Tonsawang),
+      ],
+   q(6600) => [
+      q(Tanema),
+      ],
+   q(6601) => [
+      q(Tongwe),
+      ],
+   q(6602) => [
+      q(Tonga (Thailand)),
+      ],
+   q(6603) => [
+      q(Toba),
+      ],
+   q(6604) => [
+      q(Coyutla Totonac),
+      ],
+   q(6605) => [
+      q(Toma),
+      ],
+   q(6606) => [
+      q(Tomedes),
+      ],
+   q(6607) => [
+      q(Gizrra),
+      ],
+   q(6608) => [
+      q(Gitonga),
+      ],
+   q(6609) => [
+      q(Tonga (Zambia)),
+      ],
+   q(6610) => [
+      q(Tojolabal),
+      ],
+   q(6611) => [
+      q(Tolowa),
+      ],
+   q(6612) => [
+      q(Tombulu),
+      ],
+   q(6613) => [
+      q(Xicotepec De Juarez Totonac),
+      ],
+   q(6614) => [
+      q(Papantla Totonac),
+      ],
+   q(6615) => [
+      q(Toposa),
+      ],
+   q(6616) => [
+      q(Togbo-Vara Banda),
+      ],
+   q(6617) => [
+      q(Highland Totonac),
+      ],
+   q(6618) => [
+      q(Tho),
+      ],
+   q(6619) => [
+      q(Upper Taromi),
+      ],
+   q(6620) => [
+      q(Jemez),
+      ],
+   q(6621) => [
+      q(Tobian),
+      ],
+   q(6622) => [
+      q(Topoiyo),
+      ],
+   q(6623) => [
+      q(To),
+      ],
+   q(6624) => [
+      q(Taupota),
+      ],
+   q(6625) => [
+      q(Azoyu Me'phaa),
+      q(Azoyu Tlapanec),
+      ],
+   q(6626) => [
+      q(Tippera),
+      ],
+   q(6627) => [
+      q(Tarpia),
+      ],
+   q(6628) => [
+      q(Kula),
+      ],
+   q(6629) => [
+      q(Tapiete),
+      ],
+   q(6630) => [
+      q(Tupinikin),
+      ],
+   q(6631) => [
+      q(Tlacoapa Me'phaa),
+      q(Tlacoapa Tlapanec),
+      ],
+   q(6632) => [
+      q(Tampulma),
+      ],
+   q(6633) => [
+      q(Tupinamba),
+      ],
+   q(6634) => [
+      q(Tai Pao),
+      ],
+   q(6635) => [
+      q(Pisaflores Tepehua),
+      ],
+   q(6636) => [
+      q(Tukpa),
+      ],
+   q(6637) => [
+      q(Tupari),
+      ],
+   q(6638) => [
+      q(Tlachichilco Tepehua),
+      ],
+   q(6639) => [
+      q(Tampuan),
+      ],
+   q(6640) => [
+      q(Tanapag),
+      ],
+   q(6641) => [
+      q(Tupi),
+      ],
+   q(6642) => [
+      q(Acatepec Me'phaa),
+      q(Acatepec Tlapanec),
+      ],
+   q(6643) => [
+      q(Trumai),
+      ],
+   q(6644) => [
+      q(Tinputz),
+      ],
+   q(6645) => [
+      q(Tembe),
+      ],
+   q(6646) => [
+      q(Lehali),
+      ],
+   q(6647) => [
+      q(Turumsa),
+      ],
+   q(6648) => [
+      q(Tenino),
+      ],
+   q(6649) => [
+      q(Toaripi),
+      ],
+   q(6650) => [
+      q(Tomoip),
+      ],
+   q(6651) => [
+      q(Tunni),
+      ],
+   q(6652) => [
+      q(Torona),
+      ],
+   q(6653) => [
+      q(Western Totonac),
+      ],
+   q(6654) => [
+      q(Touo),
+      ],
+   q(6655) => [
+      q(Tonkawa),
+      ],
+   q(6656) => [
+      q(Tirahi),
+      ],
+   q(6657) => [
+      q(Terebu),
+      ],
+   q(6658) => [
+      q(Copala Triqui),
+      ],
+   q(6659) => [
+      q(Turi),
+      ],
+   q(6660) => [
+      q(East Tarangan),
+      ],
+   q(6661) => [
+      q(Trinidadian Creole English),
+      ],
+   q(6662) => [
+      q(Lishan Didan),
+      ],
+   q(6663) => [
+      q(Turaka),
+      ],
+   q(6664) => [
+      q(Trio),
+      ],
+   q(6665) => [
+      q(Toram),
+      ],
+   q(6666) => [
+      q(Traveller Scottish),
+      ],
+   q(6667) => [
+      q(Tregami),
+      ],
+   q(6668) => [
+      q(Trinitario),
+      ],
+   q(6669) => [
+      q(Tarao Naga),
+      ],
+   q(6670) => [
+      q(Kok Borok),
+      ],
+   q(6671) => [
+      q(San Martin Itunyoso Triqui),
+      ],
+   q(6672) => [
+      q(Taushiro),
+      ],
+   q(6673) => [
+      q(Chicahuaxtla Triqui),
+      ],
+   q(6674) => [
+      q(Tunggare),
+      ],
+   q(6675) => [
+      q(Turoyo),
+      q(Surayt),
+      ],
+   q(6676) => [
+      q(Taroko),
+      ],
+   q(6677) => [
+      q(Torwali),
+      ],
+   q(6678) => [
+      q(Tringgus-Sembaan Bidayuh),
+      ],
+   q(6679) => [
+      q(Turung),
+      ],
+   q(6680) => [
+      q(Tora),
+      ],
+   q(6681) => [
+      q(Tsaangi),
+      ],
+   q(6682) => [
+      q(Tsamai),
+      ],
+   q(6683) => [
+      q(Tswa),
+      ],
+   q(6684) => [
+      q(Tsakonian),
+      ],
+   q(6685) => [
+      q(Tunisian Sign Language),
+      ],
+   q(6686) => [
+      q(Southwestern Tamang),
+      ],
+   q(6687) => [
+      q(Tausug),
+      ],
+   q(6688) => [
+      q(Tsuvan),
+      ],
+   q(6689) => [
+      q(Tshangla),
+      ],
+   q(6690) => [
+      q(Tseku),
+      ],
+   q(6691) => [
+      q(Ts'un-Lao),
+      ],
+   q(6692) => [
+      q(Turkish Sign Language),
+      q(Turk Isaret Dili),
+      ],
+   q(6693) => [
+      q(Northern Toussian),
+      ],
+   q(6694) => [
+      q(Thai Sign Language),
+      ],
+   q(6695) => [
+      q(Akei),
+      ],
+   q(6696) => [
+      q(Taiwan Sign Language),
+      ],
+   q(6697) => [
+      q(Tondi Songway Kiini),
+      ],
+   q(6698) => [
+      q(Tsou),
+      ],
+   q(6699) => [
+      q(Tsogo),
+      ],
+   q(6700) => [
+      q(Tsishingini),
+      ],
+   q(6701) => [
+      q(Mubami),
+      ],
+   q(6702) => [
+      q(Tebul Sign Language),
+      ],
+   q(6703) => [
+      q(Purepecha),
+      ],
+   q(6704) => [
+      q(Tutelo),
+      ],
+   q(6705) => [
+      q(Gaa),
+      ],
+   q(6706) => [
+      q(Tektiteko),
+      ],
+   q(6707) => [
+      q(Tauade),
+      ],
+   q(6708) => [
+      q(Bwanabwana),
+      ],
+   q(6709) => [
+      q(Tuotomb),
+      ],
+   q(6710) => [
+      q(Tutong),
+      ],
+   q(6711) => [
+      q(Upper Ta'oih),
+      ],
+   q(6712) => [
+      q(Tobati),
+      ],
+   q(6713) => [
+      q(Tooro),
+      ],
+   q(6714) => [
+      q(Totoro),
+      ],
+   q(6715) => [
+      q(Totela),
+      ],
+   q(6716) => [
+      q(Northern Tutchone),
+      ],
+   q(6717) => [
+      q(Towei),
+      ],
+   q(6718) => [
+      q(Lower Ta'oih),
+      ],
+   q(6719) => [
+      q(Tombelala),
+      ],
+   q(6720) => [
+      q(Tawallammat Tamajaq),
+      ],
+   q(6721) => [
+      q(Tera),
+      ],
+   q(6722) => [
+      q(Northeastern Thai),
+      ],
+   q(6723) => [
+      q(Muslim Tat),
+      ],
+   q(6724) => [
+      q(Torau),
+      ],
+   q(6725) => [
+      q(Titan),
+      ],
+   q(6726) => [
+      q(Long Wat),
+      ],
+   q(6727) => [
+      q(Sikaritai),
+      ],
+   q(6728) => [
+      q(Tsum),
+      ],
+   q(6729) => [
+      q(Wiarumus),
+      ],
+   q(6730) => [
+      q(Tubatulabal),
+      ],
+   q(6731) => [
+      q(Mutu),
+      ],
+   q(6732) => [
+      q(Tuxa),
+      ],
+   q(6733) => [
+      q(Tuyuca),
+      ],
+   q(6734) => [
+      q(Central Tunebo),
+      ],
+   q(6735) => [
+      q(Tunia),
+      ],
+   q(6736) => [
+      q(Taulil),
+      ],
+   q(6737) => [
+      q(Tupuri),
+      ],
+   q(6738) => [
+      q(Tugutil),
+      ],
+   q(6739) => [
+      q(Tula),
+      ],
+   q(6740) => [
+      q(Tunica),
+      ],
+   q(6741) => [
+      q(Tucano),
+      ],
+   q(6742) => [
+      q(Tedaga),
+      ],
+   q(6743) => [
+      q(Tuscarora),
+      ],
+   q(6744) => [
+      q(Tututni),
+      ],
+   q(6745) => [
+      q(Turkana),
+      ],
+   q(6746) => [
+      q(Tuxinawa),
+      ],
+   q(6747) => [
+      q(Tugen),
+      ],
+   q(6748) => [
+      q(Turka),
+      ],
+   q(6749) => [
+      q(Vaghua),
+      ],
+   q(6750) => [
+      q(Tsuvadi),
+      ],
+   q(6751) => [
+      q(Te'un),
+      ],
+   q(6752) => [
+      q(Southeast Ambrym),
+      ],
+   q(6753) => [
+      q(Tela-Masbuar),
+      ],
+   q(6754) => [
+      q(Tavoyan),
+      ],
+   q(6755) => [
+      q(Tidore),
+      ],
+   q(6756) => [
+      q(Taveta),
+      ],
+   q(6757) => [
+      q(Tutsa Naga),
+      ],
+   q(6758) => [
+      q(Tunen),
+      ],
+   q(6759) => [
+      q(Sedoa),
+      ],
+   q(6760) => [
+      q(Timor Pidgin),
+      ],
+   q(6761) => [
+      q(Twana),
+      ],
+   q(6762) => [
+      q(Western Tawbuid),
+      ],
+   q(6763) => [
+      q(Teshenawa),
+      ],
+   q(6764) => [
+      q(Twents),
+      ],
+   q(6765) => [
+      q(Tewa (Indonesia)),
+      ],
+   q(6766) => [
+      q(Northern Tiwa),
+      ],
+   q(6767) => [
+      q(Tereweng),
+      ],
+   q(6768) => [
+      q(Tai Don),
+      ],
+   q(6769) => [
+      q(Tawara),
+      ],
+   q(6770) => [
+      q(Tawang Monpa),
+      ],
+   q(6771) => [
+      q(Twendi),
+      ],
+   q(6772) => [
+      q(Tswapong),
+      ],
+   q(6773) => [
+      q(Ere),
+      ],
+   q(6774) => [
+      q(Tasawaq),
+      ],
+   q(6775) => [
+      q(Southwestern Tarahumara),
+      ],
+   q(6776) => [
+      q(Turiwara),
+      ],
+   q(6777) => [
+      q(Termanu),
+      ],
+   q(6778) => [
+      q(Tuwari),
+      ],
+   q(6779) => [
+      q(Tewe),
+      ],
+   q(6780) => [
+      q(Tawoyan),
+      ],
+   q(6781) => [
+      q(Tombonuo),
+      ],
+   q(6782) => [
+      q(Tokharian B),
+      ],
+   q(6783) => [
+      q(Tsetsaut),
+      ],
+   q(6784) => [
+      q(Totoli),
+      ],
+   q(6785) => [
+      q(Tangut),
+      ],
+   q(6786) => [
+      q(Thracian),
+      ],
+   q(6787) => [
+      q(Ikpeng),
+      ],
+   q(6788) => [
+      q(Tomini),
+      ],
+   q(6789) => [
+      q(West Tarangan),
+      ],
+   q(6790) => [
+      q(Toto),
+      ],
+   q(6791) => [
+      q(Tii),
+      ],
+   q(6792) => [
+      q(Tartessian),
+      ],
+   q(6793) => [
+      q(Tonsea),
+      ],
+   q(6794) => [
+      q(Citak),
+      ],
+   q(6795) => [
+      q(Kayapo),
+      ],
+   q(6796) => [
+      q(Tatana),
+      ],
+   q(6797) => [
+      q(Tanosy Malagasy),
+      ],
+   q(6798) => [
+      q(Tauya),
+      ],
+   q(6799) => [
+      q(Kyenga),
+      ],
+   q(6800) => [
+      q(O'du),
+      ],
+   q(6801) => [
+      q(Teke-Tsaayi),
+      ],
+   q(6802) => [
+      q(Tai Do),
+      ],
+   q(6803) => [
+      q(Thu Lao),
+      ],
+   q(6804) => [
+      q(Kombai),
+      ],
+   q(6805) => [
+      q(Thaypan),
+      ],
+   q(6806) => [
+      q(Tai Daeng),
+      ],
+   q(6807) => [
+      q(Tay Sa Pa),
+      ],
+   q(6808) => [
+      q(Tay Tac),
+      ],
+   q(6809) => [
+      q(Kua),
+      ],
+   q(6810) => [
+      q(Teke-Tyee),
+      ],
+   q(6811) => [
+      q(Tay),
+      ],
+   q(6812) => [
+      q(Tanzanian Sign Language),
+      ],
+   q(6813) => [
+      q(Tzeltal),
+      ],
+   q(6814) => [
+      q(Tz'utujil),
+      ],
+   q(6815) => [
+      q(Central Atlas Tamazight),
+      ],
+   q(6816) => [
+      q(Tugun),
+      ],
+   q(6817) => [
+      q(Tzotzil),
+      ],
+   q(6818) => [
+      q(Tabriak),
+      ],
+   q(6819) => [
+      q(Uamue),
+      ],
+   q(6820) => [
+      q(Kuan),
+      ],
+   q(6821) => [
+      q(Tairuma),
+      ],
+   q(6822) => [
+      q(Ubang),
+      ],
+   q(6823) => [
+      q(Ubi),
+      ],
+   q(6824) => [
+      q(Buhi'non Bikol),
+      ],
+   q(6825) => [
+      q(Ubir),
+      ],
+   q(6826) => [
+      q(Umbu-Ungu),
+      ],
+   q(6827) => [
+      q(Ubykh),
+      ],
+   q(6828) => [
+      q(Uda),
+      ],
+   q(6829) => [
+      q(Udihe),
+      ],
+   q(6830) => [
+      q(Muduga),
+      ],
+   q(6831) => [
+      q(Udi),
+      ],
+   q(6832) => [
+      q(Ujir),
+      ],
+   q(6833) => [
+      q(Wuzlam),
+      ],
+   q(6834) => [
+      q(Uduk),
+      ],
+   q(6835) => [
+      q(Kioko),
+      ],
+   q(6836) => [
+      q(Ufim),
+      ],
+   q(6837) => [
+      q(Kuku-Ugbanh),
+      ],
+   q(6838) => [
+      q(Ughele),
+      ],
+   q(6839) => [
+      q(Ugandan Sign Language),
+      ],
+   q(6840) => [
+      q(Ugong),
+      ],
+   q(6841) => [
+      q(Uruguayan Sign Language),
+      ],
+   q(6842) => [
+      q(Uhami),
+      ],
+   q(6843) => [
+      q(Damal),
+      ],
+   q(6844) => [
+      q(Uisai),
+      ],
+   q(6845) => [
+      q(Iyive),
+      ],
+   q(6846) => [
+      q(Tanjijili),
+      ],
+   q(6847) => [
+      q(Kaburi),
+      ],
+   q(6848) => [
+      q(Ukuriguma),
+      ],
+   q(6849) => [
+      q(Ukhwejo),
+      ],
+   q(6850) => [
+      q(Ukrainian Sign Language),
+      ],
+   q(6851) => [
+      q(Ukpe-Bayobiri),
+      ],
+   q(6852) => [
+      q(Ukwa),
+      ],
+   q(6853) => [
+      q(Urubu-Kaapor Sign Language),
+      q(Kaapor Sign Language),
+      ],
+   q(6854) => [
+      q(Ukue),
+      ],
+   q(6855) => [
+      q(Ukwuani-Aboh-Ndoni),
+      ],
+   q(6856) => [
+      q(Kuuk-Yak),
+      ],
+   q(6857) => [
+      q(Fungwa),
+      ],
+   q(6858) => [
+      q(Ulukwumi),
+      ],
+   q(6859) => [
+      q(Ulch),
+      ],
+   q(6860) => [
+      q(Usku),
+      q(Afra),
+      ],
+   q(6861) => [
+      q(Ulithian),
+      ],
+   q(6862) => [
+      q(Meriam),
+      ],
+   q(6863) => [
+      q(Ullatan),
+      ],
+   q(6864) => [
+      q(Ulumanda'),
+      ],
+   q(6865) => [
+      q(Unserdeutsch),
+      ],
+   q(6866) => [
+      q(Uma' Lung),
+      ],
+   q(6867) => [
+      q(Ulwa),
+      ],
+   q(6868) => [
+      q(Umatilla),
+      ],
+   q(6869) => [
+      q(Marrucinian),
+      ],
+   q(6870) => [
+      q(Umbindhamu),
+      ],
+   q(6871) => [
+      q(Umbuygamu),
+      ],
+   q(6872) => [
+      q(Ukit),
+      ],
+   q(6873) => [
+      q(Umon),
+      ],
+   q(6874) => [
+      q(Makyan Naga),
+      ],
+   q(6875) => [
+      q(Umotina),
+      ],
+   q(6876) => [
+      q(Umpila),
+      ],
+   q(6877) => [
+      q(Umbugarla),
+      ],
+   q(6878) => [
+      q(Pendau),
+      ],
+   q(6879) => [
+      q(Munsee),
+      ],
+   q(6880) => [
+      q(North Watut),
+      ],
+   q(6881) => [
+      q(Uneme),
+      ],
+   q(6882) => [
+      q(Ngarinyin),
+      ],
+   q(6883) => [
+      q(Enawene-Nawe),
+      ],
+   q(6884) => [
+      q(Unami),
+      ],
+   q(6885) => [
+      q(Mundari),
+      ],
+   q(6886) => [
+      q(Munda),
+      ],
+   q(6887) => [
+      q(Unde Kaili),
+      ],
+   q(6888) => [
+      q(Uokha),
+      ],
+   q(6889) => [
+      q(Umeda),
+      ],
+   q(6890) => [
+      q(Uripiv-Wala-Rano-Atchin),
+      ],
+   q(6891) => [
+      q(Urarina),
+      ],
+   q(6892) => [
+      q(Urubu-Kaapor),
+      q(Kaapor),
+      ],
+   q(6893) => [
+      q(Urningangg),
+      ],
+   q(6894) => [
+      q(Uru),
+      ],
+   q(6895) => [
+      q(Uradhi),
+      ],
+   q(6896) => [
+      q(Urigina),
+      ],
+   q(6897) => [
+      q(Urhobo),
+      ],
+   q(6898) => [
+      q(Urim),
+      ],
+   q(6899) => [
+      q(Urak Lawoi'),
+      ],
+   q(6900) => [
+      q(Urali),
+      ],
+   q(6901) => [
+      q(Urapmin),
+      ],
+   q(6902) => [
+      q(Uruangnirin),
+      ],
+   q(6903) => [
+      q(Ura (Papua New Guinea)),
+      ],
+   q(6904) => [
+      q(Uru-Pa-In),
+      ],
+   q(6905) => [
+      q(Lehalurup),
+      q(Loyop),
+      ],
+   q(6906) => [
+      q(Urat),
+      ],
+   q(6907) => [
+      q(Urumi),
+      ],
+   q(6908) => [
+      q(Uruava),
+      ],
+   q(6909) => [
+      q(Sop),
+      ],
+   q(6910) => [
+      q(Urimo),
+      ],
+   q(6911) => [
+      q(Orya),
+      ],
+   q(6912) => [
+      q(Uru-Eu-Wau-Wau),
+      ],
+   q(6913) => [
+      q(Usarufa),
+      ],
+   q(6914) => [
+      q(Ushojo),
+      ],
+   q(6915) => [
+      q(Usui),
+      ],
+   q(6916) => [
+      q(Usaghade),
+      ],
+   q(6917) => [
+      q(Uspanteco),
+      ],
+   q(6918) => [
+      q(Uya),
+      ],
+   q(6919) => [
+      q(Otank),
+      ],
+   q(6920) => [
+      q(Ute-Southern Paiute),
+      ],
+   q(6921) => [
+      q(Amba (Solomon Islands)),
+      ],
+   q(6922) => [
+      q(Etulo),
+      ],
+   q(6923) => [
+      q(Utu),
+      ],
+   q(6924) => [
+      q(Urum),
+      ],
+   q(6925) => [
+      q(Kulon-Pazeh),
+      ],
+   q(6926) => [
+      q(Ura (Vanuatu)),
+      ],
+   q(6927) => [
+      q(U),
+      ],
+   q(6928) => [
+      q(West Uvean),
+      ],
+   q(6929) => [
+      q(Uri),
+      ],
+   q(6930) => [
+      q(Lote),
+      ],
+   q(6931) => [
+      q(Kuku-Uwanh),
+      ],
+   q(6932) => [
+      q(Doko-Uyanga),
+      ],
+   q(6933) => [
+      q(Northern Uzbek),
+      ],
+   q(6934) => [
+      q(Southern Uzbek),
+      ],
+   q(6935) => [
+      q(Vaagri Booli),
+      ],
+   q(6936) => [
+      q(Vale),
+      ],
+   q(6937) => [
+      q(Vafsi),
+      ],
+   q(6938) => [
+      q(Vagla),
+      ],
+   q(6939) => [
+      q(Varhadi-Nagpuri),
+      ],
+   q(6940) => [
+      q(Vasekela Bushman),
+      ],
+   q(6941) => [
+      q(Vehes),
+      ],
+   q(6942) => [
+      q(Vanimo),
+      ],
+   q(6943) => [
+      q(Valman),
+      ],
+   q(6944) => [
+      q(Vao),
+      ],
+   q(6945) => [
+      q(Vaiphei),
+      ],
+   q(6946) => [
+      q(Huarijio),
+      ],
+   q(6947) => [
+      q(Vasavi),
+      ],
+   q(6948) => [
+      q(Vanuma),
+      ],
+   q(6949) => [
+      q(Varli),
+      ],
+   q(6950) => [
+      q(Wayu),
+      ],
+   q(6951) => [
+      q(Southeast Babar),
+      ],
+   q(6952) => [
+      q(Southwestern Bontok),
+      ],
+   q(6953) => [
+      q(Venetian),
+      ],
+   q(6954) => [
+      q(Veddah),
+      ],
+   q(6955) => [
+      q(Veluws),
+      ],
+   q(6956) => [
+      q(Vemgo-Mabas),
+      ],
+   q(6957) => [
+      q(Ventureno),
+      ],
+   q(6958) => [
+      q(Veps),
+      ],
+   q(6959) => [
+      q(Mom Jango),
+      ],
+   q(6960) => [
+      q(Vaghri),
+      ],
+   q(6961) => [
+      q(Vlaamse Gebarentaal),
+      q(Flemish Sign Language),
+      ],
+   q(6962) => [
+      q(Virgin Islands Creole English),
+      ],
+   q(6963) => [
+      q(Vidunda),
+      ],
+   q(6964) => [
+      q(Vili),
+      ],
+   q(6965) => [
+      q(Viemo),
+      ],
+   q(6966) => [
+      q(Vilela),
+      ],
+   q(6967) => [
+      q(Vinza),
+      ],
+   q(6968) => [
+      q(Vishavan),
+      ],
+   q(6969) => [
+      q(Viti),
+      ],
+   q(6970) => [
+      q(Iduna),
+      ],
+   q(6971) => [
+      q(Kariyarra),
+      ],
+   q(6972) => [
+      q(Ija-Zuba),
+      ],
+   q(6973) => [
+      q(Kujarge),
+      ],
+   q(6974) => [
+      q(Kaur),
+      ],
+   q(6975) => [
+      q(Kulisusu),
+      ],
+   q(6976) => [
+      q(Kamakan),
+      ],
+   q(6977) => [
+      q(Kodeoha),
+      ],
+   q(6978) => [
+      q(Korlai Creole Portuguese),
+      ],
+   q(6979) => [
+      q(Tenggarong Kutai Malay),
+      ],
+   q(6980) => [
+      q(Kurrama),
+      ],
+   q(6981) => [
+      q(Valpei),
+      ],
+   q(6982) => [
+      q(Vlaams),
+      ],
+   q(6983) => [
+      q(Martuyhunira),
+      ],
+   q(6984) => [
+      q(Mbabaram),
+      ],
+   q(6985) => [
+      q(Juxtlahuaca Mixtec),
+      ],
+   q(6986) => [
+      q(Mudu Koraga),
+      ],
+   q(6987) => [
+      q(East Masela),
+      ],
+   q(6988) => [
+      q(Mainfrankisch),
+      ],
+   q(6989) => [
+      q(Minigir),
+      ],
+   q(6990) => [
+      q(Maraghei),
+      ],
+   q(6991) => [
+      q(Miwa),
+      ],
+   q(6992) => [
+      q(Ixtayutla Mixtec),
+      ],
+   q(6993) => [
+      q(Makhuwa-Shirima),
+      ],
+   q(6994) => [
+      q(Malgana),
+      ],
+   q(6995) => [
+      q(Mitlatongo Mixtec),
+      ],
+   q(6996) => [
+      q(Soyaltepec Mazatec),
+      ],
+   q(6997) => [
+      q(Soyaltepec Mixtec),
+      ],
+   q(6998) => [
+      q(Marenje),
+      ],
+   q(6999) => [
+      q(Moksela),
+      ],
+   q(7000) => [
+      q(Muluridyi),
+      ],
+   q(7001) => [
+      q(Valley Maidu),
+      ],
+   q(7002) => [
+      q(Makhuwa),
+      ],
+   q(7003) => [
+      q(Tamazola Mixtec),
+      ],
+   q(7004) => [
+      q(Ayautla Mazatec),
+      ],
+   q(7005) => [
+      q(Mazatlan Mazatec),
+      ],
+   q(7006) => [
+      q(Vano),
+      q(Lovono),
+      ],
+   q(7007) => [
+      q(Vinmavis),
+      q(Neve'ei),
+      ],
+   q(7008) => [
+      q(Vunapu),
+      ],
+   q(7009) => [
+      q(Voro),
+      ],
+   q(7010) => [
+      q(Vera'a),
+      ],
+   q(7011) => [
+      q(Varisi),
+      ],
+   q(7012) => [
+      q(Burmbar),
+      q(Banam Bay),
+      ],
+   q(7013) => [
+      q(Moldova Sign Language),
+      ],
+   q(7014) => [
+      q(Venezuelan Sign Language),
+      ],
+   q(7015) => [
+      q(Valencian Sign Language),
+      q(Llengua de signes valenciana),
+      ],
+   q(7016) => [
+      q(Vitou),
+      ],
+   q(7017) => [
+      q(Vumbu),
+      ],
+   q(7018) => [
+      q(Vunjo),
+      ],
+   q(7019) => [
+      q(Vute),
+      ],
+   q(7020) => [
+      q(Awa (China)),
+      ],
+   q(7021) => [
+      q(Walla Walla),
+      ],
+   q(7022) => [
+      q(Wab),
+      ],
+   q(7023) => [
+      q(Wasco-Wishram),
+      ],
+   q(7024) => [
+      q(Wandamen),
+      ],
+   q(7025) => [
+      q(Walser),
+      ],
+   q(7026) => [
+      q(Wakona),
+      ],
+   q(7027) => [
+      q(Wa'ema),
+      ],
+   q(7028) => [
+      q(Watubela),
+      ],
+   q(7029) => [
+      q(Wares),
+      ],
+   q(7030) => [
+      q(Waffa),
+      ],
+   q(7031) => [
+      q(Wampanoag),
+      ],
+   q(7032) => [
+      q(Wan),
+      ],
+   q(7033) => [
+      q(Wappo),
+      ],
+   q(7034) => [
+      q(Wapishana),
+      ],
+   q(7035) => [
+      q(Wageman),
+      ],
+   q(7036) => [
+      q(Kaninuwa),
+      ],
+   q(7037) => [
+      q(Waura),
+      ],
+   q(7038) => [
+      q(Waka),
+      ],
+   q(7039) => [
+      q(Waiwai),
+      ],
+   q(7040) => [
+      q(Watam),
+      ],
+   q(7041) => [
+      q(Wayana),
+      ],
+   q(7042) => [
+      q(Wampur),
+      ],
+   q(7043) => [
+      q(Warao),
+      ],
+   q(7044) => [
+      q(Wabo),
+      ],
+   q(7045) => [
+      q(Waritai),
+      ],
+   q(7046) => [
+      q(Wanda),
+      ],
+   q(7047) => [
+      q(Vwanji),
+      ],
+   q(7048) => [
+      q(Alagwa),
+      ],
+   q(7049) => [
+      q(Waigali),
+      ],
+   q(7050) => [
+      q(Wakhi),
+      ],
+   q(7051) => [
+      q(Wa),
+      ],
+   q(7052) => [
+      q(Warlpiri),
+      ],
+   q(7053) => [
+      q(Waddar),
+      ],
+   q(7054) => [
+      q(Wagdi),
+      ],
+   q(7055) => [
+      q(Wanman),
+      ],
+   q(7056) => [
+      q(Wajarri),
+      ],
+   q(7057) => [
+      q(Woi),
+      ],
+   q(7058) => [
+      q(Yanomami),
+      ],
+   q(7059) => [
+      q(Waci Gbe),
+      ],
+   q(7060) => [
+      q(Wandji),
+      ],
+   q(7061) => [
+      q(Wadaginam),
+      ],
+   q(7062) => [
+      q(Wadjiginy),
+      ],
+   q(7063) => [
+      q(Wadjigu),
+      ],
+   q(7064) => [
+      q(Wewaw),
+      ],
+   q(7065) => [
+      q(We Western),
+      ],
+   q(7066) => [
+      q(Wedau),
+      ],
+   q(7067) => [
+      q(Weh),
+      ],
+   q(7068) => [
+      q(Kiunum),
+      ],
+   q(7069) => [
+      q(Weme Gbe),
+      ],
+   q(7070) => [
+      q(Wemale),
+      ],
+   q(7071) => [
+      q(Westphalien),
+      ],
+   q(7072) => [
+      q(Weri),
+      ],
+   q(7073) => [
+      q(Cameroon Pidgin),
+      ],
+   q(7074) => [
+      q(Perai),
+      ],
+   q(7075) => [
+      q(Rawngtu Chin),
+      ],
+   q(7076) => [
+      q(Wejewa),
+      ],
+   q(7077) => [
+      q(Yafi),
+      q(Zorop),
+      ],
+   q(7078) => [
+      q(Wagaya),
+      ],
+   q(7079) => [
+      q(Wagawaga),
+      ],
+   q(7080) => [
+      q(Wangganguru),
+      ],
+   q(7081) => [
+      q(Wahgi),
+      ],
+   q(7082) => [
+      q(Waigeo),
+      ],
+   q(7083) => [
+      q(Wirangu),
+      ],
+   q(7084) => [
+      q(Warrgamay),
+      ],
+   q(7085) => [
+      q(Manusela),
+      ],
+   q(7086) => [
+      q(North Wahgi),
+      ],
+   q(7087) => [
+      q(Wahau Kenyah),
+      ],
+   q(7088) => [
+      q(Wahau Kayan),
+      ],
+   q(7089) => [
+      q(Southern Toussian),
+      ],
+   q(7090) => [
+      q(Wichita),
+      ],
+   q(7091) => [
+      q(Wik-Epa),
+      ],
+   q(7092) => [
+      q(Wik-Keyangan),
+      ],
+   q(7093) => [
+      q(Wik-Ngathana),
+      ],
+   q(7094) => [
+      q(Wik-Me'anha),
+      ],
+   q(7095) => [
+      q(Minidien),
+      ],
+   q(7096) => [
+      q(Wik-Iiyanh),
+      ],
+   q(7097) => [
+      q(Wikalkan),
+      ],
+   q(7098) => [
+      q(Wilawila),
+      ],
+   q(7099) => [
+      q(Wik-Mungkan),
+      ],
+   q(7100) => [
+      q(Ho-Chunk),
+      ],
+   q(7101) => [
+      q(Wirafed),
+      ],
+   q(7102) => [
+      q(Wintu),
+      ],
+   q(7103) => [
+      q(Wiru),
+      ],
+   q(7104) => [
+      q(Vitu),
+      ],
+   q(7105) => [
+      q(Wiyot),
+      ],
+   q(7106) => [
+      q(Waja),
+      ],
+   q(7107) => [
+      q(Warji),
+      ],
+   q(7108) => [
+      q(Kw'adza),
+      ],
+   q(7109) => [
+      q(Kumbaran),
+      ],
+   q(7110) => [
+      q(Wakde),
+      q(Mo),
+      ],
+   q(7111) => [
+      q(Kalanadi),
+      ],
+   q(7112) => [
+      q(Kunduvadi),
+      ],
+   q(7113) => [
+      q(Wakawaka),
+      ],
+   q(7114) => [
+      q(Walio),
+      ],
+   q(7115) => [
+      q(Mwali Comorian),
+      ],
+   q(7116) => [
+      q(Wolane),
+      ],
+   q(7117) => [
+      q(Kunbarlang),
+      ],
+   q(7118) => [
+      q(Waioli),
+      ],
+   q(7119) => [
+      q(Wailaki),
+      ],
+   q(7120) => [
+      q(Wali (Sudan)),
+      ],
+   q(7121) => [
+      q(Middle Welsh),
+      ],
+   q(7122) => [
+      q(Wolio),
+      ],
+   q(7123) => [
+      q(Wailapa),
+      ],
+   q(7124) => [
+      q(Wallisian),
+      ],
+   q(7125) => [
+      q(Wuliwuli),
+      ],
+   q(7126) => [
+      q(Wichi Lhamtes Vejoz),
+      ],
+   q(7127) => [
+      q(Walak),
+      ],
+   q(7128) => [
+      q(Wali (Ghana)),
+      ],
+   q(7129) => [
+      q(Waling),
+      ],
+   q(7130) => [
+      q(Mawa (Nigeria)),
+      ],
+   q(7131) => [
+      q(Wambaya),
+      ],
+   q(7132) => [
+      q(Wamas),
+      ],
+   q(7133) => [
+      q(Mamainde),
+      ],
+   q(7134) => [
+      q(Wambule),
+      ],
+   q(7135) => [
+      q(Waima'a),
+      ],
+   q(7136) => [
+      q(Wamin),
+      ],
+   q(7137) => [
+      q(Maiwa (Indonesia)),
+      ],
+   q(7138) => [
+      q(Waamwang),
+      ],
+   q(7139) => [
+      q(Wom (Papua New Guinea)),
+      ],
+   q(7140) => [
+      q(Wambon),
+      ],
+   q(7141) => [
+      q(Walmajarri),
+      ],
+   q(7142) => [
+      q(Mwani),
+      ],
+   q(7143) => [
+      q(Womo),
+      ],
+   q(7144) => [
+      q(Wanambre),
+      ],
+   q(7145) => [
+      q(Wantoat),
+      ],
+   q(7146) => [
+      q(Wandarang),
+      ],
+   q(7147) => [
+      q(Waneci),
+      ],
+   q(7148) => [
+      q(Wanggom),
+      ],
+   q(7149) => [
+      q(Ndzwani Comorian),
+      ],
+   q(7150) => [
+      q(Wanukaka),
+      ],
+   q(7151) => [
+      q(Wanggamala),
+      ],
+   q(7152) => [
+      q(Wano),
+      ],
+   q(7153) => [
+      q(Wanap),
+      ],
+   q(7154) => [
+      q(Usan),
+      ],
+   q(7155) => [
+      q(Wanyi),
+      ],
+   q(7156) => [
+      q(Tyaraity),
+      ],
+   q(7157) => [
+      q(We Northern),
+      ],
+   q(7158) => [
+      q(Wogeo),
+      ],
+   q(7159) => [
+      q(Wolani),
+      ],
+   q(7160) => [
+      q(Woleaian),
+      ],
+   q(7161) => [
+      q(Gambian Wolof),
+      ],
+   q(7162) => [
+      q(Wogamusin),
+      ],
+   q(7163) => [
+      q(Kamang),
+      ],
+   q(7164) => [
+      q(Longto),
+      ],
+   q(7165) => [
+      q(Wom (Nigeria)),
+      ],
+   q(7166) => [
+      q(Wongo),
+      ],
+   q(7167) => [
+      q(Manombai),
+      ],
+   q(7168) => [
+      q(Woria),
+      ],
+   q(7169) => [
+      q(Hanga Hundi),
+      ],
+   q(7170) => [
+      q(Wawonii),
+      ],
+   q(7171) => [
+      q(Weyto),
+      ],
+   q(7172) => [
+      q(Maco),
+      ],
+   q(7173) => [
+      q(Warapu),
+      ],
+   q(7174) => [
+      q(Warluwara),
+      ],
+   q(7175) => [
+      q(Warduji),
+      ],
+   q(7176) => [
+      q(Warungu),
+      ],
+   q(7177) => [
+      q(Wiradhuri),
+      ],
+   q(7178) => [
+      q(Wariyangga),
+      ],
+   q(7179) => [
+      q(Garrwa),
+      ],
+   q(7180) => [
+      q(Warlmanpa),
+      ],
+   q(7181) => [
+      q(Warumungu),
+      ],
+   q(7182) => [
+      q(Warnang),
+      ],
+   q(7183) => [
+      q(Worrorra),
+      ],
+   q(7184) => [
+      q(Waropen),
+      ],
+   q(7185) => [
+      q(Wardaman),
+      ],
+   q(7186) => [
+      q(Waris),
+      ],
+   q(7187) => [
+      q(Waru),
+      ],
+   q(7188) => [
+      q(Waruna),
+      ],
+   q(7189) => [
+      q(Gugu Warra),
+      ],
+   q(7190) => [
+      q(Wae Rana),
+      ],
+   q(7191) => [
+      q(Merwari),
+      ],
+   q(7192) => [
+      q(Waray (Australia)),
+      ],
+   q(7193) => [
+      q(Warembori),
+      ],
+   q(7194) => [
+      q(Wusi),
+      ],
+   q(7195) => [
+      q(Waskia),
+      ],
+   q(7196) => [
+      q(Owenia),
+      ],
+   q(7197) => [
+      q(Wasa),
+      ],
+   q(7198) => [
+      q(Wasu),
+      ],
+   q(7199) => [
+      q(Wotapuri-Katarqalai),
+      ],
+   q(7200) => [
+      q(Watiwa),
+      ],
+   q(7201) => [
+      q(Berta),
+      ],
+   q(7202) => [
+      q(Watakataui),
+      ],
+   q(7203) => [
+      q(Mewati),
+      ],
+   q(7204) => [
+      q(Wotu),
+      ],
+   q(7205) => [
+      q(Wikngenchera),
+      ],
+   q(7206) => [
+      q(Wunambal),
+      ],
+   q(7207) => [
+      q(Wudu),
+      ],
+   q(7208) => [
+      q(Wutunhua),
+      ],
+   q(7209) => [
+      q(Silimo),
+      ],
+   q(7210) => [
+      q(Wumbvu),
+      ],
+   q(7211) => [
+      q(Bungu),
+      ],
+   q(7212) => [
+      q(Wurrugu),
+      ],
+   q(7213) => [
+      q(Wutung),
+      ],
+   q(7214) => [
+      q(Wu Chinese),
+      ],
+   q(7215) => [
+      q(Wuvulu-Aua),
+      ],
+   q(7216) => [
+      q(Wulna),
+      ],
+   q(7217) => [
+      q(Wauyai),
+      ],
+   q(7218) => [
+      q(Waama),
+      ],
+   q(7219) => [
+      q(Wakabunga),
+      ],
+   q(7220) => [
+      q(Wetamut),
+      q(Dorig),
+      ],
+   q(7221) => [
+      q(Warrwa),
+      ],
+   q(7222) => [
+      q(Wawa),
+      ],
+   q(7223) => [
+      q(Waxianghua),
+      ],
+   q(7224) => [
+      q(Wyandot),
+      ],
+   q(7225) => [
+      q(Wangaaybuwan-Ngiyambaa),
+      ],
+   q(7226) => [
+      q(Wymysorys),
+      ],
+   q(7227) => [
+      q(Wayoro),
+      ],
+   q(7228) => [
+      q(Western Fijian),
+      ],
+   q(7229) => [
+      q(Andalusian Arabic),
+      ],
+   q(7230) => [
+      q(Sambe),
+      ],
+   q(7231) => [
+      q(Kachari),
+      ],
+   q(7232) => [
+      q(Adai),
+      ],
+   q(7233) => [
+      q(Aequian),
+      ],
+   q(7234) => [
+      q(Aghwan),
+      ],
+   q(7235) => [
+      q(Kaimbe),
+      ],
+   q(7236) => [
+      q(/Xam),
+      ],
+   q(7237) => [
+      q(Xamtanga),
+      ],
+   q(7238) => [
+      q(Khao),
+      ],
+   q(7239) => [
+      q(Apalachee),
+      ],
+   q(7240) => [
+      q(Aquitanian),
+      ],
+   q(7241) => [
+      q(Karami),
+      ],
+   q(7242) => [
+      q(Kamas),
+      ],
+   q(7243) => [
+      q(Katawixi),
+      ],
+   q(7244) => [
+      q(Kauwera),
+      ],
+   q(7245) => [
+      q(Xavante),
+      ],
+   q(7246) => [
+      q(Kawaiisu),
+      ],
+   q(7247) => [
+      q(Kayan Mahakam),
+      ],
+   q(7248) => [
+      q(Kamba (Brazil)),
+      ],
+   q(7249) => [
+      q(Lower Burdekin),
+      ],
+   q(7250) => [
+      q(Bactrian),
+      ],
+   q(7251) => [
+      q(Kombio),
+      ],
+   q(7252) => [
+      q(Middle Breton),
+      ],
+   q(7253) => [
+      q(Kenaboi),
+      ],
+   q(7254) => [
+      q(Bolgarian),
+      ],
+   q(7255) => [
+      q(Kambera),
+      ],
+   q(7256) => [
+      q(Kambiwa),
+      ],
+   q(7257) => [
+      q(Kabixi),
+      ],
+   q(7258) => [
+      q(Cumbric),
+      ],
+   q(7259) => [
+      q(Camunic),
+      ],
+   q(7260) => [
+      q(Celtiberian),
+      ],
+   q(7261) => [
+      q(Cisalpine Gaulish),
+      ],
+   q(7262) => [
+      q(Chemakum),
+      q(Chimakum),
+      ],
+   q(7263) => [
+      q(Classical Armenian),
+      ],
+   q(7264) => [
+      q(Comecrudo),
+      ],
+   q(7265) => [
+      q(Cotoname),
+      ],
+   q(7266) => [
+      q(Chorasmian),
+      ],
+   q(7267) => [
+      q(Carian),
+      ],
+   q(7268) => [
+      q(Classical Tibetan),
+      ],
+   q(7269) => [
+      q(Curonian),
+      ],
+   q(7270) => [
+      q(Chuvantsy),
+      ],
+   q(7271) => [
+      q(Coahuilteco),
+      ],
+   q(7272) => [
+      q(Cayuse),
+      ],
+   q(7273) => [
+      q(Dacian),
+      ],
+   q(7274) => [
+      q(Edomite),
+      ],
+   q(7275) => [
+      q(Malayic Dayak),
+      ],
+   q(7276) => [
+      q(Eblan),
+      ],
+   q(7277) => [
+      q(Hdi),
+      ],
+   q(7278) => [
+      q(//Xegwi),
+      ],
+   q(7279) => [
+      q(Kelo),
+      ],
+   q(7280) => [
+      q(Kembayan),
+      ],
+   q(7281) => [
+      q(Epi-Olmec),
+      ],
+   q(7282) => [
+      q(Xerente),
+      ],
+   q(7283) => [
+      q(Kesawai),
+      ],
+   q(7284) => [
+      q(Xeta),
+      ],
+   q(7285) => [
+      q(Keoru-Ahia),
+      ],
+   q(7286) => [
+      q(Faliscan),
+      ],
+   q(7287) => [
+      q(Galatian),
+      ],
+   q(7288) => [
+      q(Gbin),
+      ],
+   q(7289) => [
+      q(Gabrielino-Fernandeno),
+      ],
+   q(7290) => [
+      q(Galindan),
+      ],
+   q(7291) => [
+      q(Garza),
+      ],
+   q(7292) => [
+      q(Unggumi),
+      ],
+   q(7293) => [
+      q(Harami),
+      ],
+   q(7294) => [
+      q(Hunnic),
+      ],
+   q(7295) => [
+      q(Hadrami),
+      ],
+   q(7296) => [
+      q(Khetrani),
+      ],
+   q(7297) => [
+      q(Hernican),
+      ],
+   q(7298) => [
+      q(Hattic),
+      ],
+   q(7299) => [
+      q(Hurrian),
+      ],
+   q(7300) => [
+      q(Khua),
+      ],
+   q(7301) => [
+      q(Xiandao),
+      ],
+   q(7302) => [
+      q(Iberian),
+      ],
+   q(7303) => [
+      q(Xiri),
+      ],
+   q(7304) => [
+      q(Illyrian),
+      ],
+   q(7305) => [
+      q(Xinca),
+      ],
+   q(7306) => [
+      q(Xipinawa),
+      ],
+   q(7307) => [
+      q(Xiriana),
+      ],
+   q(7308) => [
+      q(Indus Valley Language),
+      ],
+   q(7309) => [
+      q(Xipaya),
+      ],
+   q(7310) => [
+      q(Kalkoti),
+      ],
+   q(7311) => [
+      q(Northern Nago),
+      ],
+   q(7312) => [
+      q(Kho'ini),
+      ],
+   q(7313) => [
+      q(Mendalam Kayan),
+      ],
+   q(7314) => [
+      q(Kereho),
+      ],
+   q(7315) => [
+      q(Khengkha),
+      ],
+   q(7316) => [
+      q(Kagoro),
+      ],
+   q(7317) => [
+      q(Karahawyana),
+      ],
+   q(7318) => [
+      q(Kenyan Sign Language),
+      ],
+   q(7319) => [
+      q(Kajali),
+      ],
+   q(7320) => [
+      q(Kaco'),
+      ],
+   q(7321) => [
+      q(Mainstream Kenyah),
+      ],
+   q(7322) => [
+      q(Kayan River Kayan),
+      ],
+   q(7323) => [
+      q(Kiorr),
+      ],
+   q(7324) => [
+      q(Kabatei),
+      ],
+   q(7325) => [
+      q(Koroni),
+      ],
+   q(7326) => [
+      q(Xakriaba),
+      ],
+   q(7327) => [
+      q(Kumbewaha),
+      ],
+   q(7328) => [
+      q(Kantosi),
+      ],
+   q(7329) => [
+      q(Kaamba),
+      ],
+   q(7330) => [
+      q(Kgalagadi),
+      ],
+   q(7331) => [
+      q(Kembra),
+      ],
+   q(7332) => [
+      q(Karore),
+      ],
+   q(7333) => [
+      q(Uma' Lasan),
+      ],
+   q(7334) => [
+      q(Kurtokha),
+      ],
+   q(7335) => [
+      q(Kamula),
+      ],
+   q(7336) => [
+      q(Loup B),
+      ],
+   q(7337) => [
+      q(Lycian),
+      ],
+   q(7338) => [
+      q(Lydian),
+      ],
+   q(7339) => [
+      q(Lemnian),
+      ],
+   q(7340) => [
+      q(Ligurian (Ancient)),
+      ],
+   q(7341) => [
+      q(Liburnian),
+      ],
+   q(7342) => [
+      q(Alanic),
+      ],
+   q(7343) => [
+      q(Loup A),
+      ],
+   q(7344) => [
+      q(Lepontic),
+      ],
+   q(7345) => [
+      q(Lusitanian),
+      ],
+   q(7346) => [
+      q(Cuneiform Luwian),
+      ],
+   q(7347) => [
+      q(Elymian),
+      ],
+   q(7348) => [
+      q(Mushungulu),
+      ],
+   q(7349) => [
+      q(Mbonga),
+      ],
+   q(7350) => [
+      q(Makhuwa-Marrevone),
+      ],
+   q(7351) => [
+      q(Mbudum),
+      ],
+   q(7352) => [
+      q(Median),
+      ],
+   q(7353) => [
+      q(Mingrelian),
+      ],
+   q(7354) => [
+      q(Mengaka),
+      ],
+   q(7355) => [
+      q(Kuku-Muminh),
+      ],
+   q(7356) => [
+      q(Majera),
+      ],
+   q(7357) => [
+      q(Ancient Macedonian),
+      ],
+   q(7358) => [
+      q(Malaysian Sign Language),
+      ],
+   q(7359) => [
+      q(Manado Malay),
+      ],
+   q(7360) => [
+      q(Manichaean Middle Persian),
+      ],
+   q(7361) => [
+      q(Morerebi),
+      ],
+   q(7362) => [
+      q(Kuku-Mu'inh),
+      ],
+   q(7363) => [
+      q(Kuku-Mangk),
+      ],
+   q(7364) => [
+      q(Meroitic),
+      ],
+   q(7365) => [
+      q(Moroccan Sign Language),
+      ],
+   q(7366) => [
+      q(Matbat),
+      ],
+   q(7367) => [
+      q(Kamu),
+      ],
+   q(7368) => [
+      q(Antankarana Malagasy),
+      q(Tankarana Malagasy),
+      ],
+   q(7369) => [
+      q(Tsimihety Malagasy),
+      ],
+   q(7370) => [
+      q(Maden),
+      ],
+   q(7371) => [
+      q(Mayaguduna),
+      ],
+   q(7372) => [
+      q(Mori Bawah),
+      ],
+   q(7373) => [
+      q(Ancient North Arabian),
+      ],
+   q(7374) => [
+      q(Kanakanabu),
+      ],
+   q(7375) => [
+      q(Middle Mongolian),
+      ],
+   q(7376) => [
+      q(Kuanhua),
+      ],
+   q(7377) => [
+      q(Northern Kankanay),
+      ],
+   q(7378) => [
+      q(Anglo-Norman),
+      ],
+   q(7379) => [
+      q(Kangri),
+      ],
+   q(7380) => [
+      q(Kanashi),
+      ],
+   q(7381) => [
+      q(Narragansett),
+      ],
+   q(7382) => [
+      q(Kenzi),
+      q(Mattoki),
+      ],
+   q(7383) => [
+      q(O'chi'chi'),
+      ],
+   q(7384) => [
+      q(Kokoda),
+      ],
+   q(7385) => [
+      q(Soga),
+      ],
+   q(7386) => [
+      q(Kominimung),
+      ],
+   q(7387) => [
+      q(Xokleng),
+      ],
+   q(7388) => [
+      q(Komo (Sudan)),
+      ],
+   q(7389) => [
+      q(Konkomba),
+      ],
+   q(7390) => [
+      q(Xukuru),
+      ],
+   q(7391) => [
+      q(Kopar),
+      ],
+   q(7392) => [
+      q(Korubo),
+      ],
+   q(7393) => [
+      q(Kowaki),
+      ],
+   q(7394) => [
+      q(Pecheneg),
+      ],
+   q(7395) => [
+      q(Liberia Kpelle),
+      ],
+   q(7396) => [
+      q(Phrygian),
+      ],
+   q(7397) => [
+      q(Pictish),
+      ],
+   q(7398) => [
+      q(Mpalitjanh),
+      ],
+   q(7399) => [
+      q(Kulina Pano),
+      ],
+   q(7400) => [
+      q(Pumpokol),
+      ],
+   q(7401) => [
+      q(Kapinawa),
+      ],
+   q(7402) => [
+      q(Pochutec),
+      ],
+   q(7403) => [
+      q(Puyo-Paekche),
+      ],
+   q(7404) => [
+      q(Mohegan-Pequot),
+      ],
+   q(7405) => [
+      q(Parthian),
+      ],
+   q(7406) => [
+      q(Pisidian),
+      ],
+   q(7407) => [
+      q(Punic),
+      ],
+   q(7408) => [
+      q(Puyo),
+      ],
+   q(7409) => [
+      q(Karakhanid),
+      ],
+   q(7410) => [
+      q(Qatabanian),
+      ],
+   q(7411) => [
+      q(Kraho),
+      ],
+   q(7412) => [
+      q(Eastern Karaboro),
+      ],
+   q(7413) => [
+      q(Kreye),
+      ],
+   q(7414) => [
+      q(Krikati-Timbira),
+      ],
+   q(7415) => [
+      q(Armazic),
+      ],
+   q(7416) => [
+      q(Arin),
+      ],
+   q(7417) => [
+      q(Raetic),
+      ],
+   q(7418) => [
+      q(Aranama-Tamique),
+      ],
+   q(7419) => [
+      q(Marriammu),
+      ],
+   q(7420) => [
+      q(Karawa),
+      ],
+   q(7421) => [
+      q(Sabaean),
+      ],
+   q(7422) => [
+      q(Sambal),
+      ],
+   q(7423) => [
+      q(Scythian),
+      ],
+   q(7424) => [
+      q(Sidetic),
+      ],
+   q(7425) => [
+      q(Sempan),
+      ],
+   q(7426) => [
+      q(Shamang),
+      ],
+   q(7427) => [
+      q(Sio),
+      ],
+   q(7428) => [
+      q(Subi),
+      ],
+   q(7429) => [
+      q(South Slavey),
+      ],
+   q(7430) => [
+      q(Kasem),
+      ],
+   q(7431) => [
+      q(Sanga (Nigeria)),
+      ],
+   q(7432) => [
+      q(Solano),
+      ],
+   q(7433) => [
+      q(Silopi),
+      ],
+   q(7434) => [
+      q(Makhuwa-Saka),
+      ],
+   q(7435) => [
+      q(Sherpa),
+      ],
+   q(7436) => [
+      q(Assan),
+      ],
+   q(7437) => [
+      q(Sanuma),
+      ],
+   q(7438) => [
+      q(Sudovian),
+      ],
+   q(7439) => [
+      q(Saisiyat),
+      ],
+   q(7440) => [
+      q(Alcozauca Mixtec),
+      ],
+   q(7441) => [
+      q(Chazumba Mixtec),
+      ],
+   q(7442) => [
+      q(Katcha-Kadugli-Miri),
+      ],
+   q(7443) => [
+      q(Diuxi-Tilantongo Mixtec),
+      ],
+   q(7444) => [
+      q(Ketengban),
+      ],
+   q(7445) => [
+      q(Transalpine Gaulish),
+      ],
+   q(7446) => [
+      q(Sinicahua Mixtec),
+      ],
+   q(7447) => [
+      q(San Juan Teita Mixtec),
+      ],
+   q(7448) => [
+      q(Tijaltepec Mixtec),
+      ],
+   q(7449) => [
+      q(Magdalena Penasco Mixtec),
+      ],
+   q(7450) => [
+      q(Northern Tlaxiaco Mixtec),
+      ],
+   q(7451) => [
+      q(Tokharian A),
+      ],
+   q(7452) => [
+      q(San Miguel Piedras Mixtec),
+      ],
+   q(7453) => [
+      q(Tumshuqese),
+      ],
+   q(7454) => [
+      q(Early Tripuri),
+      ],
+   q(7455) => [
+      q(Sindihui Mixtec),
+      ],
+   q(7456) => [
+      q(Tacahua Mixtec),
+      ],
+   q(7457) => [
+      q(Cuyamecalco Mixtec),
+      ],
+   q(7458) => [
+      q(Tawande),
+      ],
+   q(7459) => [
+      q(Yoloxochitl Mixtec),
+      ],
+   q(7460) => [
+      q(Tasmanian),
+      ],
+   q(7461) => [
+      q(Alu Kurumba),
+      ],
+   q(7462) => [
+      q(Betta Kurumba),
+      ],
+   q(7463) => [
+      q(Umiida),
+      ],
+   q(7464) => [
+      q(Kunigami),
+      ],
+   q(7465) => [
+      q(Jennu Kurumba),
+      ],
+   q(7466) => [
+      q(Umbrian),
+      ],
+   q(7467) => [
+      q(Unggarranggu),
+      ],
+   q(7468) => [
+      q(Kuo),
+      ],
+   q(7469) => [
+      q(Upper Umpqua),
+      ],
+   q(7470) => [
+      q(Urartian),
+      ],
+   q(7471) => [
+      q(Kuthant),
+      ],
+   q(7472) => [
+      q(Kxoe),
+      ],
+   q(7473) => [
+      q(Venetic),
+      ],
+   q(7474) => [
+      q(Kamviri),
+      ],
+   q(7475) => [
+      q(Vandalic),
+      ],
+   q(7476) => [
+      q(Volscian),
+      ],
+   q(7477) => [
+      q(Vestinian),
+      ],
+   q(7478) => [
+      q(Kwaza),
+      ],
+   q(7479) => [
+      q(Woccon),
+      ],
+   q(7480) => [
+      q(Xwela Gbe),
+      ],
+   q(7481) => [
+      q(Kwegu),
+      ],
+   q(7482) => [
+      q(Western Xwla Gbe),
+      ],
+   q(7483) => [
+      q(Written Oirat),
+      ],
+   q(7484) => [
+      q(Kwerba Mamberamo),
+      ],
+   q(7485) => [
+      q(Boro (Ghana)),
+      ],
+   q(7486) => [
+      q(Ke'o),
+      ],
+   q(7487) => [
+      q(Koropo),
+      ],
+   q(7488) => [
+      q(Tambora),
+      ],
+   q(7489) => [
+      q(Yalakalore),
+      ],
+   q(7490) => [
+      q(Yorta Yorta),
+      ],
+   q(7491) => [
+      q(Zhang-Zhung),
+      ],
+   q(7492) => [
+      q(Zemgalian),
+      ],
+   q(7493) => [
+      q(Ancient Zapotec),
+      ],
+   q(7494) => [
+      q(Yaminahua),
+      ],
+   q(7495) => [
+      q(Yuhup),
+      ],
+   q(7496) => [
+      q(Pass Valley Yali),
+      ],
+   q(7497) => [
+      q(Yagua),
+      ],
+   q(7498) => [
+      q(Pume),
+      ],
+   q(7499) => [
+      q(Yaka (Democratic Republic of Congo)),
+      ],
+   q(7500) => [
+      q(Yamana),
+      ],
+   q(7501) => [
+      q(Yazgulyam),
+      ],
+   q(7502) => [
+      q(Yagnobi),
+      ],
+   q(7503) => [
+      q(Banda-Yangere),
+      ],
+   q(7504) => [
+      q(Yakama),
+      ],
+   q(7505) => [
+      q(Yalunka),
+      ],
+   q(7506) => [
+      q(Yamba),
+      ],
+   q(7507) => [
+      q(Mayangna),
+      ],
+   q(7508) => [
+      q(Yaqui),
+      ],
+   q(7509) => [
+      q(Yabarana),
+      ],
+   q(7510) => [
+      q(Nugunu (Cameroon)),
+      ],
+   q(7511) => [
+      q(Yambeta),
+      ],
+   q(7512) => [
+      q(Yuwana),
+      ],
+   q(7513) => [
+      q(Yangben),
+      ],
+   q(7514) => [
+      q(Yawalapiti),
+      ],
+   q(7515) => [
+      q(Yauma),
+      ],
+   q(7516) => [
+      q(Agwagwune),
+      ],
+   q(7517) => [
+      q(Lokaa),
+      ],
+   q(7518) => [
+      q(Yala),
+      ],
+   q(7519) => [
+      q(Yemba),
+      ],
+   q(7520) => [
+      q(West Yugur),
+      ],
+   q(7521) => [
+      q(Yakha),
+      ],
+   q(7522) => [
+      q(Yamphu),
+      ],
+   q(7523) => [
+      q(Hasha),
+      ],
+   q(7524) => [
+      q(Bokha),
+      ],
+   q(7525) => [
+      q(Yukuben),
+      ],
+   q(7526) => [
+      q(Yaben),
+      ],
+   q(7527) => [
+      q(Yabaana),
+      ],
+   q(7528) => [
+      q(Yabong),
+      ],
+   q(7529) => [
+      q(Yawiyo),
+      ],
+   q(7530) => [
+      q(Yaweyuha),
+      ],
+   q(7531) => [
+      q(Chesu),
+      ],
+   q(7532) => [
+      q(Lolopo),
+      ],
+   q(7533) => [
+      q(Yucuna),
+      ],
+   q(7534) => [
+      q(Chepya),
+      ],
+   q(7535) => [
+      q(Eastern Yiddish),
+      ],
+   q(7536) => [
+      q(Yangum Dey),
+      ],
+   q(7537) => [
+      q(Yidgha),
+      ],
+   q(7538) => [
+      q(Yoidik),
+      ],
+   q(7539) => [
+      q(Yiddish Sign Language),
+      ],
+   q(7540) => [
+      q(Ravula),
+      ],
+   q(7541) => [
+      q(Yeniche),
+      ],
+   q(7542) => [
+      q(Yimas),
+      ],
+   q(7543) => [
+      q(Yeni),
+      ],
+   q(7544) => [
+      q(Yevanic),
+      ],
+   q(7545) => [
+      q(Yela),
+      ],
+   q(7546) => [
+      q(Tarok),
+      ],
+   q(7547) => [
+      q(Nyankpa),
+      ],
+   q(7548) => [
+      q(Yetfa),
+      ],
+   q(7549) => [
+      q(Yerukula),
+      ],
+   q(7550) => [
+      q(Yapunda),
+      ],
+   q(7551) => [
+      q(Yeyi),
+      ],
+   q(7552) => [
+      q(Malyangapa),
+      ],
+   q(7553) => [
+      q(Yangum Gel),
+      ],
+   q(7554) => [
+      q(Yagomi),
+      ],
+   q(7555) => [
+      q(Gepo),
+      ],
+   q(7556) => [
+      q(Yagaria),
+      ],
+   q(7557) => [
+      q(Yagwoia),
+      ],
+   q(7558) => [
+      q(Baha Buyang),
+      ],
+   q(7559) => [
+      q(Judeo-Iraqi Arabic),
+      ],
+   q(7560) => [
+      q(Hlepho Phowa),
+      ],
+   q(7561) => [
+      q(Yinggarda),
+      ],
+   q(7562) => [
+      q(Wusa Nasu),
+      ],
+   q(7563) => [
+      q(Western Yiddish),
+      ],
+   q(7564) => [
+      q(Yidiny),
+      ],
+   q(7565) => [
+      q(Yindjibarndi),
+      ],
+   q(7566) => [
+      q(Dongshanba Lalo),
+      ],
+   q(7567) => [
+      q(Yindjilandji),
+      ],
+   q(7568) => [
+      q(Yimchungru Naga),
+      ],
+   q(7569) => [
+      q(Yinchia),
+      ],
+   q(7570) => [
+      q(Pholo),
+      ],
+   q(7571) => [
+      q(Miqie),
+      ],
+   q(7572) => [
+      q(North Awyu),
+      ],
+   q(7573) => [
+      q(Yis),
+      ],
+   q(7574) => [
+      q(Eastern Lalu),
+      ],
+   q(7575) => [
+      q(Awu),
+      ],
+   q(7576) => [
+      q(Northern Nisu),
+      ],
+   q(7577) => [
+      q(Axi Yi),
+      ],
+   q(7578) => [
+      q(Yir Yoront),
+      ],
+   q(7579) => [
+      q(Azhe),
+      ],
+   q(7580) => [
+      q(Yakan),
+      ],
+   q(7581) => [
+      q(Northern Yukaghir),
+      ],
+   q(7582) => [
+      q(Yoke),
+      ],
+   q(7583) => [
+      q(Yakaikeke),
+      ],
+   q(7584) => [
+      q(Khlula),
+      ],
+   q(7585) => [
+      q(Kap),
+      ],
+   q(7586) => [
+      q(Kua-nsi),
+      ],
+   q(7587) => [
+      q(Yasa),
+      ],
+   q(7588) => [
+      q(Yekora),
+      ],
+   q(7589) => [
+      q(Kathu),
+      ],
+   q(7590) => [
+      q(Kuamasi),
+      ],
+   q(7591) => [
+      q(Yakoma),
+      ],
+   q(7592) => [
+      q(Yaul),
+      ],
+   q(7593) => [
+      q(Yaleba),
+      ],
+   q(7594) => [
+      q(Yele),
+      ],
+   q(7595) => [
+      q(Yelogu),
+      ],
+   q(7596) => [
+      q(Angguruk Yali),
+      ],
+   q(7597) => [
+      q(Yil),
+      ],
+   q(7598) => [
+      q(Limi),
+      ],
+   q(7599) => [
+      q(Langnian Buyang),
+      ],
+   q(7600) => [
+      q(Naluo Yi),
+      ],
+   q(7601) => [
+      q(Yalarnnga),
+      ],
+   q(7602) => [
+      q(Aribwaung),
+      ],
+   q(7603) => [
+      q(Nyalayu),
+      ],
+   q(7604) => [
+      q(Yambes),
+      ],
+   q(7605) => [
+      q(Southern Muji),
+      ],
+   q(7606) => [
+      q(Muda),
+      ],
+   q(7607) => [
+      q(Yameo),
+      ],
+   q(7608) => [
+      q(Yamongeri),
+      ],
+   q(7609) => [
+      q(Mili),
+      ],
+   q(7610) => [
+      q(Moji),
+      ],
+   q(7611) => [
+      q(Makwe),
+      ],
+   q(7612) => [
+      q(Iamalele),
+      ],
+   q(7613) => [
+      q(Maay),
+      ],
+   q(7614) => [
+      q(Yamna),
+      q(Sunum),
+      ],
+   q(7615) => [
+      q(Yangum Mon),
+      ],
+   q(7616) => [
+      q(Yamap),
+      ],
+   q(7617) => [
+      q(Qila Muji),
+      ],
+   q(7618) => [
+      q(Malasar),
+      ],
+   q(7619) => [
+      q(Mysian),
+      ],
+   q(7620) => [
+      q(Mator-Taygi-Karagas),
+      ],
+   q(7621) => [
+      q(Northern Muji),
+      ],
+   q(7622) => [
+      q(Muzi),
+      ],
+   q(7623) => [
+      q(Aluo),
+      ],
+   q(7624) => [
+      q(Yandruwandha),
+      ],
+   q(7625) => [
+      q(Lang'e),
+      ],
+   q(7626) => [
+      q(Yango),
+      ],
+   q(7627) => [
+      q(Yangho),
+      ],
+   q(7628) => [
+      q(Naukan Yupik),
+      ],
+   q(7629) => [
+      q(Yangulam),
+      ],
+   q(7630) => [
+      q(Yana),
+      ],
+   q(7631) => [
+      q(Yong),
+      ],
+   q(7632) => [
+      q(Yendang),
+      ],
+   q(7633) => [
+      q(Yansi),
+      ],
+   q(7634) => [
+      q(Yahuna),
+      ],
+   q(7635) => [
+      q(Yoba),
+      ],
+   q(7636) => [
+      q(Yogad),
+      ],
+   q(7637) => [
+      q(Yonaguni),
+      ],
+   q(7638) => [
+      q(Yokuts),
+      ],
+   q(7639) => [
+      q(Yola),
+      ],
+   q(7640) => [
+      q(Yombe),
+      ],
+   q(7641) => [
+      q(Yongkom),
+      ],
+   q(7642) => [
+      q(Yos),
+      ],
+   q(7643) => [
+      q(Yotti),
+      ],
+   q(7644) => [
+      q(Yoron),
+      ],
+   q(7645) => [
+      q(Yoy),
+      ],
+   q(7646) => [
+      q(Phala),
+      ],
+   q(7647) => [
+      q(Labo Phowa),
+      ],
+   q(7648) => [
+      q(Phola),
+      ],
+   q(7649) => [
+      q(Phupha),
+      ],
+   q(7650) => [
+      q(Phuma),
+      ],
+   q(7651) => [
+      q(Ani Phowa),
+      ],
+   q(7652) => [
+      q(Alo Phola),
+      ],
+   q(7653) => [
+      q(Phupa),
+      ],
+   q(7654) => [
+      q(Phuza),
+      ],
+   q(7655) => [
+      q(Yerakai),
+      ],
+   q(7656) => [
+      q(Yareba),
+      ],
+   q(7657) => [
+      q(Yaoure),
+      ],
+   q(7658) => [
+      q(Yari),
+      ],
+   q(7659) => [
+      q(Nenets),
+      ],
+   q(7660) => [
+      q(Nhengatu),
+      ],
+   q(7661) => [
+      q(Yerong),
+      ],
+   q(7662) => [
+      q(Yarsun),
+      ],
+   q(7663) => [
+      q(Yarawata),
+      ],
+   q(7664) => [
+      q(Yassic),
+      ],
+   q(7665) => [
+      q(Samatao),
+      ],
+   q(7666) => [
+      q(Sonaga),
+      ],
+   q(7667) => [
+      q(Yugoslavian Sign Language),
+      ],
+   q(7668) => [
+      q(Sani),
+      ],
+   q(7669) => [
+      q(Nisi (China)),
+      ],
+   q(7670) => [
+      q(Southern Lolopo),
+      ],
+   q(7671) => [
+      q(Sirenik Yupik),
+      ],
+   q(7672) => [
+      q(Yessan-Mayo),
+      ],
+   q(7673) => [
+      q(Sanie),
+      ],
+   q(7674) => [
+      q(Talu),
+      ],
+   q(7675) => [
+      q(Tanglang),
+      ],
+   q(7676) => [
+      q(Thopho),
+      ],
+   q(7677) => [
+      q(Yout Wam),
+      ],
+   q(7678) => [
+      q(Yucateco),
+      q(Yucatec Maya),
+      ],
+   q(7679) => [
+      q(Yugambal),
+      ],
+   q(7680) => [
+      q(Yuchi),
+      ],
+   q(7681) => [
+      q(Judeo-Tripolitanian Arabic),
+      ],
+   q(7682) => [
+      q(Yue Chinese),
+      ],
+   q(7683) => [
+      q(Havasupai-Walapai-Yavapai),
+      ],
+   q(7684) => [
+      q(Yug),
+      ],
+   q(7685) => [
+      q(Yuruti),
+      ],
+   q(7686) => [
+      q(Karkar-Yuri),
+      ],
+   q(7687) => [
+      q(Yuki),
+      ],
+   q(7688) => [
+      q(Yulu),
+      ],
+   q(7689) => [
+      q(Quechan),
+      ],
+   q(7690) => [
+      q(Bena (Nigeria)),
+      ],
+   q(7691) => [
+      q(Yukpa),
+      ],
+   q(7692) => [
+      q(Yuqui),
+      ],
+   q(7693) => [
+      q(Yurok),
+      ],
+   q(7694) => [
+      q(Yopno),
+      ],
+   q(7695) => [
+      q(Yugh),
+      ],
+   q(7696) => [
+      q(Yau (Morobe Province)),
+      ],
+   q(7697) => [
+      q(Southern Yukaghir),
+      ],
+   q(7698) => [
+      q(East Yugur),
+      ],
+   q(7699) => [
+      q(Yuracare),
+      ],
+   q(7700) => [
+      q(Yawa),
+      ],
+   q(7701) => [
+      q(Yavitero),
+      ],
+   q(7702) => [
+      q(Kalou),
+      ],
+   q(7703) => [
+      q(Western Lalu),
+      ],
+   q(7704) => [
+      q(Yawanawa),
+      ],
+   q(7705) => [
+      q(Wuding-Luquan Yi),
+      ],
+   q(7706) => [
+      q(Yawuru),
+      ],
+   q(7707) => [
+      q(Xishanba Lalo),
+      q(Central Lalo),
+      ],
+   q(7708) => [
+      q(Wumeng Nasu),
+      ],
+   q(7709) => [
+      q(Yawarawarga),
+      ],
+   q(7710) => [
+      q(Yagara),
+      ],
+   q(7711) => [
+      q(Yabula Yabula),
+      ],
+   q(7712) => [
+      q(Yau (Sandaun Province)),
+      ],
+   q(7713) => [
+      q(Ayizi),
+      ],
+   q(7714) => [
+      q(E'ma Buyang),
+      ],
+   q(7715) => [
+      q(Zokhuo),
+      ],
+   q(7716) => [
+      q(Sierra de Juarez Zapotec),
+      ],
+   q(7717) => [
+      q(San Juan Guelavia Zapotec),
+      ],
+   q(7718) => [
+      q(Ocotlan Zapotec),
+      ],
+   q(7719) => [
+      q(Cajonos Zapotec),
+      ],
+   q(7720) => [
+      q(Yareni Zapotec),
+      ],
+   q(7721) => [
+      q(Ayoquesco Zapotec),
+      ],
+   q(7722) => [
+      q(Zaghawa),
+      ],
+   q(7723) => [
+      q(Zangwal),
+      ],
+   q(7724) => [
+      q(Isthmus Zapotec),
+      ],
+   q(7725) => [
+      q(Zaramo),
+      ],
+   q(7726) => [
+      q(Zanaki),
+      ],
+   q(7727) => [
+      q(Zauzou),
+      ],
+   q(7728) => [
+      q(Miahuatlan Zapotec),
+      ],
+   q(7729) => [
+      q(Ozolotepec Zapotec),
+      ],
+   q(7730) => [
+      q(Aloapam Zapotec),
+      ],
+   q(7731) => [
+      q(Rincon Zapotec),
+      ],
+   q(7732) => [
+      q(Santo Domingo Albarradas Zapotec),
+      ],
+   q(7733) => [
+      q(Tabaa Zapotec),
+      ],
+   q(7734) => [
+      q(Zangskari),
+      ],
+   q(7735) => [
+      q(Yatzachi Zapotec),
+      ],
+   q(7736) => [
+      q(Mitla Zapotec),
+      ],
+   q(7737) => [
+      q(Xadani Zapotec),
+      ],
+   q(7738) => [
+      q(Zayse-Zergulla),
+      q(Zaysete),
+      ],
+   q(7739) => [
+      q(Zari),
+      ],
+   q(7740) => [
+      q(Central Berawan),
+      ],
+   q(7741) => [
+      q(East Berawan),
+      ],
+   q(7742) => [
+      q(Batui),
+      ],
+   q(7743) => [
+      q(West Berawan),
+      ],
+   q(7744) => [
+      q(Coatecas Altas Zapotec),
+      ],
+   q(7745) => [
+      q(Central Hongshuihe Zhuang),
+      ],
+   q(7746) => [
+      q(Ngazidja Comorian),
+      ],
+   q(7747) => [
+      q(Zeeuws),
+      ],
+   q(7748) => [
+      q(Zenag),
+      ],
+   q(7749) => [
+      q(Eastern Hongshuihe Zhuang),
+      ],
+   q(7750) => [
+      q(Kinga),
+      ],
+   q(7751) => [
+      q(Guibei Zhuang),
+      ],
+   q(7752) => [
+      q(Minz Zhuang),
+      ],
+   q(7753) => [
+      q(Guibian Zhuang),
+      ],
+   q(7754) => [
+      q(Magori),
+      ],
+   q(7755) => [
+      q(Zhaba),
+      ],
+   q(7756) => [
+      q(Dai Zhuang),
+      ],
+   q(7757) => [
+      q(Zhire),
+      ],
+   q(7758) => [
+      q(Nong Zhuang),
+      ],
+   q(7759) => [
+      q(Zhoa),
+      ],
+   q(7760) => [
+      q(Zia),
+      ],
+   q(7761) => [
+      q(Zimbabwe Sign Language),
+      ],
+   q(7762) => [
+      q(Zimakani),
+      ],
+   q(7763) => [
+      q(Zialo),
+      ],
+   q(7764) => [
+      q(Mesme),
+      ],
+   q(7765) => [
+      q(Zinza),
+      ],
+   q(7766) => [
+      q(Ziriya),
+      ],
+   q(7767) => [
+      q(Zigula),
+      ],
+   q(7768) => [
+      q(Zizilivakan),
+      ],
+   q(7769) => [
+      q(Kaimbulawa),
+      ],
+   q(7770) => [
+      q(Koibal),
+      ],
+   q(7771) => [
+      q(Kadu),
+      ],
+   q(7772) => [
+      q(Koguryo),
+      ],
+   q(7773) => [
+      q(Khorezmian),
+      ],
+   q(7774) => [
+      q(Karankawa),
+      ],
+   q(7775) => [
+      q(Kanan),
+      ],
+   q(7776) => [
+      q(Kott),
+      ],
+   q(7777) => [
+      q(Sao Paulo Kaingang),
+      ],
+   q(7778) => [
+      q(Zakhring),
+      ],
+   q(7779) => [
+      q(Kitan),
+      ],
+   q(7780) => [
+      q(Kaurna),
+      ],
+   q(7781) => [
+      q(Krevinian),
+      ],
+   q(7782) => [
+      q(Khazar),
+      ],
+   q(7783) => [
+      q(Liujiang Zhuang),
+      ],
+   q(7784) => [
+      q(Malay (individual language)),
+      ],
+   q(7785) => [
+      q(Lianshan Zhuang),
+      ],
+   q(7786) => [
+      q(Liuqian Zhuang),
+      ],
+   q(7787) => [
+      q(Manda (Australia)),
+      ],
+   q(7788) => [
+      q(Zimba),
+      ],
+   q(7789) => [
+      q(Margany),
+      ],
+   q(7790) => [
+      q(Maridan),
+      ],
+   q(7791) => [
+      q(Mangerr),
+      ],
+   q(7792) => [
+      q(Mfinu),
+      ],
+   q(7793) => [
+      q(Marti Ke),
+      ],
+   q(7794) => [
+      q(Makolkol),
+      ],
+   q(7795) => [
+      q(Negeri Sembilan Malay),
+      ],
+   q(7796) => [
+      q(Maridjabin),
+      ],
+   q(7797) => [
+      q(Mandandanyi),
+      ],
+   q(7798) => [
+      q(Madngele),
+      ],
+   q(7799) => [
+      q(Marimanindji),
+      ],
+   q(7800) => [
+      q(Mbangwe),
+      ],
+   q(7801) => [
+      q(Molo),
+      ],
+   q(7802) => [
+      q(Mpuono),
+      ],
+   q(7803) => [
+      q(Mituku),
+      ],
+   q(7804) => [
+      q(Maranunggu),
+      ],
+   q(7805) => [
+      q(Mbesa),
+      ],
+   q(7806) => [
+      q(Maringarr),
+      ],
+   q(7807) => [
+      q(Muruwari),
+      ],
+   q(7808) => [
+      q(Mbariman-Gudhinma),
+      ],
+   q(7809) => [
+      q(Mbo (Democratic Republic of Congo)),
+      ],
+   q(7810) => [
+      q(Bomitaba),
+      ],
+   q(7811) => [
+      q(Mariyedi),
+      ],
+   q(7812) => [
+      q(Mbandja),
+      ],
+   q(7813) => [
+      q(Zan Gula),
+      ],
+   q(7814) => [
+      q(Zande (individual language)),
+      ],
+   q(7815) => [
+      q(Mang),
+      ],
+   q(7816) => [
+      q(Manangkari),
+      ],
+   q(7817) => [
+      q(Mangas),
+      ],
+   q(7818) => [
+      q(Copainala Zoque),
+      ],
+   q(7819) => [
+      q(Chimalapa Zoque),
+      ],
+   q(7820) => [
+      q(Zou),
+      ],
+   q(7821) => [
+      q(Asuncion Mixtepec Zapotec),
+      ],
+   q(7822) => [
+      q(Tabasco Zoque),
+      ],
+   q(7823) => [
+      q(Rayon Zoque),
+      ],
+   q(7824) => [
+      q(Francisco Leon Zoque),
+      ],
+   q(7825) => [
+      q(Lachiguiri Zapotec),
+      ],
+   q(7826) => [
+      q(Yautepec Zapotec),
+      ],
+   q(7827) => [
+      q(Choapan Zapotec),
+      ],
+   q(7828) => [
+      q(Southeastern Ixtlan Zapotec),
+      ],
+   q(7829) => [
+      q(Petapa Zapotec),
+      ],
+   q(7830) => [
+      q(San Pedro Quiatoni Zapotec),
+      ],
+   q(7831) => [
+      q(Guevea De Humboldt Zapotec),
+      ],
+   q(7832) => [
+      q(Totomachapan Zapotec),
+      ],
+   q(7833) => [
+      q(Santa Maria Quiegolani Zapotec),
+      ],
+   q(7834) => [
+      q(Quiavicuzas Zapotec),
+      ],
+   q(7835) => [
+      q(Tlacolulita Zapotec),
+      ],
+   q(7836) => [
+      q(Lachixio Zapotec),
+      ],
+   q(7837) => [
+      q(Mixtepec Zapotec),
+      ],
+   q(7838) => [
+      q(Santa Ines Yatzechi Zapotec),
+      ],
+   q(7839) => [
+      q(Amatlan Zapotec),
+      ],
+   q(7840) => [
+      q(El Alto Zapotec),
+      ],
+   q(7841) => [
+      q(Zoogocho Zapotec),
+      ],
+   q(7842) => [
+      q(Santiago Xanica Zapotec),
+      ],
+   q(7843) => [
+      q(Coatlan Zapotec),
+      ],
+   q(7844) => [
+      q(San Vicente Coatlan Zapotec),
+      ],
+   q(7845) => [
+      q(Yalalag Zapotec),
+      ],
+   q(7846) => [
+      q(Chichicapan Zapotec),
+      ],
+   q(7847) => [
+      q(Zaniza Zapotec),
+      ],
+   q(7848) => [
+      q(San Baltazar Loxicha Zapotec),
+      ],
+   q(7849) => [
+      q(Mazaltepec Zapotec),
+      ],
+   q(7850) => [
+      q(Texmelucan Zapotec),
+      ],
+   q(7851) => [
+      q(Qiubei Zhuang),
+      ],
+   q(7852) => [
+      q(Kara (Korea)),
+      ],
+   q(7853) => [
+      q(Mirgan),
+      ],
+   q(7854) => [
+      q(Zerenkel),
+      ],
+   q(7855) => [
+      q(Zaparo),
+      ],
+   q(7856) => [
+      q(Zarphatic),
+      ],
+   q(7857) => [
+      q(Mairasi),
+      ],
+   q(7858) => [
+      q(Sarasira),
+      ],
+   q(7859) => [
+      q(Kaskean),
+      ],
+   q(7860) => [
+      q(Zambian Sign Language),
+      ],
+   q(7861) => [
+      q(Standard Malay),
+      ],
+   q(7862) => [
+      q(Southern Rincon Zapotec),
+      ],
+   q(7863) => [
+      q(Sukurum),
+      ],
+   q(7864) => [
+      q(Elotepec Zapotec),
+      ],
+   q(7865) => [
+      q(Xanaguia Zapotec),
+      ],
+   q(7866) => [
+      q(Lapaguia-Guivini Zapotec),
+      ],
+   q(7867) => [
+      q(San Agustin Mixtepec Zapotec),
+      ],
+   q(7868) => [
+      q(Santa Catarina Albarradas Zapotec),
+      ],
+   q(7869) => [
+      q(Loxicha Zapotec),
+      ],
+   q(7870) => [
+      q(Quioquitani-Quieri Zapotec),
+      ],
+   q(7871) => [
+      q(Tilquiapan Zapotec),
+      ],
+   q(7872) => [
+      q(Tejalapan Zapotec),
+      ],
+   q(7873) => [
+      q(Guila Zapotec),
+      ],
+   q(7874) => [
+      q(Zaachila Zapotec),
+      ],
+   q(7875) => [
+      q(Yatee Zapotec),
+      ],
+   q(7876) => [
+      q(Zeem),
+      ],
+   q(7877) => [
+      q(Tokano),
+      ],
+   q(7878) => [
+      q(Kumzari),
+      ],
+   q(7879) => [
+      q(Zumaya),
+      ],
+   q(7880) => [
+      q(Zay),
+      ],
+   q(7881) => [
+      q(Yongbei Zhuang),
+      ],
+   q(7882) => [
+      q(Yang Zhuang),
+      ],
+   q(7883) => [
+      q(Youjiang Zhuang),
+      ],
+   q(7884) => [
+      q(Yongnan Zhuang),
+      ],
+   q(7885) => [
+      q(Zyphe),
+      ],
+   q(7886) => [
+      q(Zuojiang Zhuang),
+      ],
+};
+
+$Locale::Codes::Data{'language'}{'alias2id'} = {
+   q(!o!ung) => [
+      q(5313),
+      q(0),
+      ],
+   q(!xoo) => [
+      q(4956),
+      q(0),
+      ],
+   q('are'are) => [
+      q(0763),
+      q(0),
+      ],
+   q('auhelawa) => [
+      q(3626),
+      q(0),
+      ],
+   q(//ani) => [
+      q(2788),
+      q(0),
+      ],
+   q(//gana) => [
+      q(2559),
+      q(0),
+      ],
+   q(//xegwi) => [
+      q(7278),
+      q(0),
+      ],
+   q(/gwi) => [
+      q(2671),
+      q(0),
+      ],
+   q(/xam) => [
+      q(7236),
+      q(0),
+      ],
+   q(=/hua) => [
+      q(2835),
+      q(0),
+      ],
+   q(=/kx'au//'ein) => [
+      q(0938),
+      q(0),
+      ],
+   q(a'ou) => [
+      q(0833),
+      q(0),
+      ],
+   q(a'tong) => [
+      q(0832),
+      q(0),
+      ],
+   q(a-hmaos) => [
+      q(2765),
+      q(0),
+      ],
+   q(a-pucikwar) => [
+      q(0851),
+      q(0),
+      ],
+   q(aari) => [
+      q(0712),
+      q(0),
+      ],
+   q(aasax) => [
+      q(0554),
+      q(0),
+      ],
+   q(abadi) => [
+      q(3180),
+      q(0),
+      ],
+   q(abaga) => [
+      q(0566),
+      q(0),
+      ],
+   q(abai sungai) => [
+      q(0565),
+      q(0),
+      ],
+   q(abanyom) => [
+      q(0571),
+      q(0),
+      ],
+   q(abar) => [
+      q(4283),
+      q(0),
+      ],
+   q(abau) => [
+      q(0556),
+      q(0),
+      ],
+   q(abaza) => [
+      q(0575),
+      q(0),
+      ],
+   q(abe) => [
+      q(0560),
+      q(0),
+      ],
+   q(abellen ayta) => [
+      q(0574),
+      q(0),
+      ],
+   q(abidji) => [
+      q(0568),
+      q(0),
+      ],
+   q(abinomn) => [
+      q(1448),
+      q(0),
+      ],
+   q(abipon) => [
+      q(0987),
+      q(0),
+      ],
+   q(abishira) => [
+      q(0893),
+      q(0),
+      ],
+   q(abkhazian) => [
+      q(0002),
+      q(0),
+      ],
+   q(abom) => [
+      q(0817),
+      q(0),
+      ],
+   q(abon) => [
+      q(0573),
+      q(0),
+      ],
+   q(abron) => [
+      q(0576),
+      q(0),
+      ],
+   q(abu) => [
+      q(0615),
+      q(0),
+      ],
+   q(abu' arapesh) => [
+      q(0545),
+      q(0),
+      ],
+   q(abua) => [
+      q(0572),
+      q(0),
+      ],
+   q(abui) => [
+      q(0584),
+      q(0),
+      ],
+   q(abun) => [
+      q(3303),
+      q(0),
+      ],
+   q(abure) => [
+      q(0579),
+      q(0),
+      ],
+   q(abureni) => [
+      q(4234),
+      q(0),
+      ],
+   q(acatepec me'phaa) => [
+      q(6642),
+      q(0),
+      ],
+   q(acatepec tlapanec) => [
+      q(6642),
+      q(0),
+      ],
+   q(achagua) => [
+      q(0585),
+      q(0),
+      ],
+   q(achang) => [
+      q(0593),
+      q(0),
+      ],
+   q(ache) => [
+      q(2642),
+      q(0),
+      ],
+   q(acheron) => [
+      q(0604),
+      q(0),
+      ],
+   q(achi) => [
+      q(0596),
+      q(0),
+      ],
+   q(achinese) => [
+      q(0003),
+      q(0),
+      ],
+   q(achterhoeks) => [
+      q(0598),
+      q(0),
+      ],
+   q(achuar-shiwiar) => [
+      q(0599),
+      q(0),
+      ],
+   q(achumawi) => [
+      q(0600),
+      q(0),
+      ],
+   q(acoli) => [
+      q(0004),
+      q(0),
+      ],
+   q(acroa) => [
+      q(0597),
+      q(0),
+      ],
+   q(adabe) => [
+      q(0605),
+      q(0),
+      ],
+   q(adai) => [
+      q(7232),
+      q(0),
+      ],
+   q(adamawa fulfulde) => [
+      q(2371),
+      q(0),
+      ],
+   q(adamorobe sign language) => [
+      q(0619),
+      q(0),
+      ],
+   q(adang) => [
+      q(0614),
+      q(0),
+      ],
+   q(adangbe) => [
+      q(0617),
+      q(0),
+      ],
+   q(adangme) => [
+      q(0005),
+      q(0),
+      ],
+   q(adap) => [
+      q(0616),
+      q(0),
+      ],
+   q(adara) => [
+      q(3148),
+      q(0),
+      ],
+   q(adasen) => [
+      q(6503),
+      q(0),
+      ],
+   q(adele) => [
+      q(0607),
+      q(0),
+      ],
+   q(adhola) => [
+      q(0610),
+      q(0),
+      ],
+   q(adi) => [
+      q(0611),
+      q(0),
+      ],
+   q(adioukrou) => [
+      q(0612),
+      q(0),
+      ],
+   q(adithinngithigh) => [
+      q(2155),
+      q(0),
+      ],
+   q(adivasi oriya) => [
+      q(5277),
+      q(0),
+      ],
+   q(adiwasi garasia) => [
+      q(2406),
+      q(0),
+      ],
+   q(adnyamathanha) => [
+      q(0620),
+      q(0),
+      ],
+   q(adonara) => [
+      q(0618),
+      q(0),
+      ],
+   q(aduge) => [
+      q(0621),
+      q(0),
+      ],
+   q(adygei) => [
+      q(0006),
+      q(0),
+      ],
+   q(adyghe) => [
+      q(0006),
+      q(0),
+      ],
+   q(adzera) => [
+      q(0624),
+      q(0),
+      ],
+   q(aeka) => [
+      q(0640),
+      q(0),
+      ],
+   q(aekyom) => [
+      q(0974),
+      q(0),
+      ],
+   q(aequian) => [
+      q(7233),
+      q(0),
+      ],
+   q(aer) => [
+      q(0634),
+      q(0),
+      ],
+   q(afade) => [
+      q(0548),
+      q(0),
+      ],
+   q(afar) => [
+      q(0001),
+      q(0),
+      ],
+   q(afghan persian) => [
+      q(5577),
+      q(0),
+      ],
+   q(afghan sign language) => [
+      q(0644),
+      q(0),
+      ],
+   q(afitti) => [
+      q(0651),
+      q(0),
+      ],
+   q(afra) => [
+      q(6860),
+      q(0),
+      ],
+   q(afrihili) => [
+      q(0008),
+      q(0),
+      ],
+   q(afrikaans) => [
+      q(0009),
+      q(0),
+      ],
+   q(afro-asiatic languages) => [
+      q(0007),
+      q(0),
+      ],
+   q(afro-seminole creole) => [
+      q(0650),
+      q(0),
+      ],
+   q(agarabi) => [
+      q(0657),
+      q(0),
+      ],
+   q(agariya) => [
+      q(0662),
+      q(0),
+      ],
+   q(agatu) => [
+      q(0656),
+      q(0),
+      ],
+   q(agavotaguerra) => [
+      q(0964),
+      q(0),
+      ],
+   q(aghem) => [
+      q(0669),
+      q(0),
+      ],
+   q(aghu) => [
+      q(0682),
+      q(0),
+      ],
+   q(aghu tharnggalu) => [
+      q(2489),
+      q(0),
+      ],
+   q(aghul) => [
+      q(0676),
+      q(0),
+      ],
+   q(aghwan) => [
+      q(7234),
+      q(0),
+      ],
+   q(agi) => [
+      q(0698),
+      q(0),
+      ],
+   q(agob) => [
+      q(3349),
+      q(0),
+      ],
+   q(agoi) => [
+      q(2875),
+      q(0),
+      ],
+   q(aguacateco) => [
+      q(0673),
+      q(0),
+      ],
+   q(aguano) => [
+      q(0654),
+      q(0),
+      ],
+   q(aguaruna) => [
+      q(0670),
+      q(0),
+      ],
+   q(aguna) => [
+      q(0939),
+      q(0),
+      ],
+   q(agusan manobo) => [
+      q(4520),
+      q(0),
+      ],
+   q(agutaynen) => [
+      q(0667),
+      q(0),
+      ],
+   q(agwagwune) => [
+      q(7516),
+      q(0),
+      ],
+   q(ahan) => [
+      q(0687),
+      q(0),
+      ],
+   q(ahanta) => [
+      q(0679),
+      q(0),
+      ],
+   q(aheu) => [
+      q(6474),
+      q(0),
+      ],
+   q(ahirani) => [
+      q(0690),
+      q(0),
+      ],
+   q(ahom) => [
+      q(0688),
+      q(0),
+      ],
+   q(ahtena) => [
+      q(0692),
+      q(0),
+      ],
+   q(ahwai) => [
+      q(4813),
+      q(0),
+      ],
+   q(ai-cham) => [
+      q(0700),
+      q(0),
+      ],
+   q(aighon) => [
+      q(0713),
+      q(0),
+      ],
+   q(aikana) => [
+      q(6348),
+      q(0),
+      ],
+   q(aiklep) => [
+      q(4609),
+      q(0),
+      ],
+   q(aimaq) => [
+      q(0708),
+      q(0),
+      ],
+   q(aimele) => [
+      q(0704),
+      q(0),
+      ],
+   q(aimol) => [
+      q(0705),
+      q(0),
+      ],
+   q(ainbai) => [
+      q(0695),
+      q(0),
+      ],
+   q(ainu) => [
+      q(0010),
+      q(0),
+      ],
+   q(ainu (china)) => [
+      q(0694),
+      q(0),
+      ],
+   q(ainu (japan)) => [
+      q(0010),
+      q(1),
+      ],
+   q(aiome) => [
+      q(0731),
+      q(0),
+      ],
+   q(airoran) => [
+      q(0709),
+      q(0),
+      ],
+   q(aiton) => [
+      q(0706),
+      q(0),
+      ],
+   q(aiwoo) => [
+      q(4814),
+      q(0),
+      ],
+   q(aja (benin)) => [
+      q(0716),
+      q(0),
+      ],
+   q(aja (sudan)) => [
+      q(0715),
+      q(0),
+      ],
+   q(ajawa) => [
+      q(0722),
+      q(0),
+      ],
+   q(ajie) => [
+      q(0717),
+      q(0),
+      ],
+   q(ajyininka apurucayali) => [
+      q(1833),
+      q(0),
+      ],
+   q(ak) => [
+      q(0737),
+      q(0),
+      ],
+   q(aka) => [
+      q(6134),
+      q(0),
+      ],
+   q(aka-bea) => [
+      q(0569),
+      q(0),
+      ],
+   q(aka-bo) => [
+      q(0734),
+      q(0),
+      ],
+   q(aka-cari) => [
+      q(0589),
+      q(0),
+      ],
+   q(aka-jeru) => [
+      q(0732),
+      q(0),
+      ],
+   q(aka-kede) => [
+      q(0744),
+      q(0),
+      ],
+   q(aka-kol) => [
+      q(0745),
+      q(0),
+      ],
+   q(aka-kora) => [
+      q(0590),
+      q(0),
+      ],
+   q(akan) => [
+      q(0011),
+      q(0),
+      ],
+   q(akar-bale) => [
+      q(0591),
+      q(0),
+      ],
+   q(akaselem) => [
+      q(0739),
+      q(0),
+      ],
+   q(akawaio) => [
+      q(0727),
+      q(0),
+      ],
+   q(ake) => [
+      q(0703),
+      q(0),
+      ],
+   q(akebu) => [
+      q(3255),
+      q(0),
+      ],
+   q(akei) => [
+      q(6695),
+      q(0),
+      ],
+   q(akeu) => [
+      q(0637),
+      q(0),
+      ],
+   q(akha) => [
+      q(0684),
+      q(0),
+      ],
+   q(akhvakh) => [
+      q(0742),
+      q(0),
+      ],
+   q(akkadian) => [
+      q(0012),
+      q(0),
+      ],
+   q(akkala sami) => [
+      q(6006),
+      q(0),
+      ],
+   q(aklanon) => [
+      q(0733),
+      q(0),
+      ],
+   q(akolet) => [
+      q(0740),
+      q(0),
+      ],
+   q(akoose) => [
+      q(1465),
+      q(0),
+      ],
+   q(akoye) => [
+      q(4293),
+      q(0),
+      ],
+   q(akpa) => [
+      q(0728),
+      q(0),
+      ],
+   q(akpes) => [
+      q(2872),
+      q(0),
+      ],
+   q(akrukay) => [
+      q(0645),
+      q(0),
+      ],
+   q(akukem) => [
+      q(6158),
+      q(0),
+      ],
+   q(akuku) => [
+      q(1001),
+      q(0),
+      ],
+   q(akum) => [
+      q(0741),
+      q(0),
+      ],
+   q(akuntsu) => [
+      q(0868),
+      q(0),
+      ],
+   q(akurio) => [
+      q(0735),
+      q(0),
+      ],
+   q(akwa) => [
+      q(0743),
+      q(0),
+      ],
+   q(akyaung ari naga) => [
+      q(5028),
+      q(0),
+      ],
+   q(al-sayyid bedouin sign language) => [
+      q(6314),
+      q(0),
+      ],
+   q(alaba-k'abeena) => [
+      q(0764),
+      q(0),
+      ],
+   q(alabama) => [
+      q(0746),
+      q(0),
+      ],
+   q(alabat island agta) => [
+      q(2176),
+      q(0),
+      ],
+   q(alacalufan languages) => [
+      q(0489),
+      q(0),
+      ],
+   q(alacatlatzala mixtec) => [
+      q(4286),
+      q(0),
+      ],
+   q(alago) => [
+      q(0747),
+      q(0),
+      ],
+   q(alagwa) => [
+      q(7048),
+      q(0),
+      ],
+   q(alak) => [
+      q(0754),
+      q(0),
+      ],
+   q(alamblak) => [
+      q(0781),
+      q(0),
+      ],
+   q(alangan) => [
+      q(0753),
+      q(0),
+      ],
+   q(alanic) => [
+      q(7342),
+      q(0),
+      ],
+   q(alapmunte) => [
+      q(0856),
+      q(0),
+      ],
+   q(alawa) => [
+      q(0751),
+      q(0),
+      ],
+   q(albanian) => [
+      q(0013),
+      q(0),
+      ],
+   q(albanian languages) => [
+      q(0525),
+      q(0),
+      ],
+   q(albanian sign language) => [
+      q(6171),
+      q(0),
+      ],
+   q(alcozauca mixtec) => [
+      q(7440),
+      q(0),
+      ],
+   q(alege) => [
+      q(0750),
+      q(0),
+      ],
+   q(alekano) => [
+      q(2395),
+      q(0),
+      ],
+   q(alemannic) => [
+      q(0166),
+      q(0),
+      ],
+   q(aleut) => [
+      q(0014),
+      q(0),
+      ],
+   q(algerian arabic) => [
+      q(0878),
+      q(0),
+      ],
+   q(algerian saharan arabic) => [
+      q(0551),
+      q(0),
+      ],
+   q(algerian sign language) => [
+      q(0900),
+      q(0),
+      ],
+   q(algic languages) => [
+      q(0490),
+      q(0),
+      ],
+   q(algonquian languages) => [
+      q(0015),
+      q(0),
+      ],
+   q(algonquin) => [
+      q(0760),
+      q(0),
+      ],
+   q(ali) => [
+      q(0714),
+      q(0),
+      ],
+   q(alladian) => [
+      q(0749),
+      q(0),
+      ],
+   q(allar) => [
+      q(0755),
+      q(0),
+      ],
+   q(alngith) => [
+      q(0696),
+      q(0),
+      ],
+   q(alo phola) => [
+      q(7652),
+      q(0),
+      ],
+   q(aloapam zapotec) => [
+      q(7730),
+      q(0),
+      ],
+   q(alor) => [
+      q(0827),
+      q(0),
+      ],
+   q(alsatian) => [
+      q(0166),
+      q(0),
+      ],
+   q(alsea) => [
+      q(0636),
+      q(0),
+      ],
+   q(altaic languages) => [
+      q(0445),
+      q(0),
+      ],
+   q(alu kurumba) => [
+      q(7461),
+      q(0),
+      ],
+   q(alugu) => [
+      q(0935),
+      q(0),
+      ],
+   q(alumu-tesu) => [
+      q(0539),
+      q(0),
+      ],
+   q(alune) => [
+      q(0759),
+      q(0),
+      ],
+   q(aluo) => [
+      q(7623),
+      q(0),
+      ],
+   q(alur) => [
+      q(0767),
+      q(0),
+      ],
+   q(alutor) => [
+      q(0761),
+      q(0),
+      ],
+   q(alviri-vidari) => [
+      q(0958),
+      q(0),
+      ],
+   q(alyawarr) => [
+      q(0766),
+      q(0),
+      ],
+   q(ama (papua new guinea)) => [
+      q(0778),
+      q(0),
+      ],
+   q(ama (sudan)) => [
+      q(5139),
+      q(0),
+      ],
+   q(amahai) => [
+      q(0782),
+      q(0),
+      ],
+   q(amahuaca) => [
+      q(0770),
+      q(0),
+      ],
+   q(amaimon) => [
+      q(0752),
+      q(0),
+      ],
+   q(amal) => [
+      q(0541),
+      q(0),
+      ],
+   q(amanab) => [
+      q(0779),
+      q(0),
+      ],
+   q(amanaye) => [
+      q(0768),
+      q(0),
+      ],
+   q(amara) => [
+      q(0697),
+      q(0),
+      ],
+   q(amarakaeri) => [
+      q(0783),
+      q(0),
+      ],
+   q(amarasi) => [
+      q(0559),
+      q(0),
+      ],
+   q(amatlan zapotec) => [
+      q(7839),
+      q(0),
+      ],
+   q(amba (solomon islands)) => [
+      q(6921),
+      q(0),
+      ],
+   q(amba (uganda)) => [
+      q(5850),
+      q(0),
+      ],
+   q(ambai) => [
+      q(0776),
+      q(0),
+      ],
+   q(ambakich) => [
+      q(0638),
+      q(0),
+      ],
+   q(ambala ayta) => [
+      q(0562),
+      q(0),
+      ],
+   q(ambelau) => [
+      q(0787),
+      q(0),
+      ],
+   q(ambele) => [
+      q(0631),
+      q(0),
+      ],
+   q(amblong) => [
+      q(0756),
+      q(0),
+      ],
+   q(ambo) => [
+      q(0769),
+      q(0),
+      ],
+   q(ambo-pasco quechua) => [
+      q(5674),
+      q(0),
+      ],
+   q(ambonese malay) => [
+      q(0577),
+      q(0),
+      ],
+   q(ambrak) => [
+      q(0544),
+      q(0),
+      ],
+   q(ambul) => [
+      q(0849),
+      q(0),
+      ],
+   q(ambulas) => [
+      q(0578),
+      q(0),
+      ],
+   q(amdang) => [
+      q(0775),
+      q(0),
+      ],
+   q(amdo tibetan) => [
+      q(0623),
+      q(0),
+      ],
+   q(amele) => [
+      q(0639),
+      q(0),
+      ],
+   q(american sign language) => [
+      q(0890),
+      q(0),
+      ],
+   q(amganad ifugao) => [
+      q(2894),
+      q(0),
+      ],
+   q(amharic) => [
+      q(0017),
+      q(0),
+      ],
+   q(ami) => [
+      q(0790),
+      q(0),
+      ],
+   q(amio-gelimi) => [
+      q(3857),
+      q(0),
+      ],
+   q(amis) => [
+      q(0774),
+      q(0),
+      ],
+   q(amo) => [
+      q(0780),
+      q(0),
+      ],
+   q(amol) => [
+      q(0765),
+      q(0),
+      ],
+   q(amoltepec mixtec) => [
+      q(4126),
+      q(0),
+      ],
+   q(ampanang) => [
+      q(0841),
+      q(0),
+      ],
+   q(ampari dogon) => [
+      q(0862),
+      q(0),
+      ],
+   q(amri karbi) => [
+      q(0723),
+      q(0),
+      ],
+   q(amto) => [
+      q(0785),
+      q(0),
+      ],
+   q(amundava) => [
+      q(0622),
+      q(0),
+      ],
+   q(amurdak) => [
+      q(0773),
+      q(0),
+      ],
+   q(ana tinga dogon) => [
+      q(2156),
+      q(0),
+      ],
+   q(anaang) => [
+      q(0812),
+      q(0),
+      ],
+   q(anakalangu) => [
+      q(0729),
+      q(0),
+      ],
+   q(anal) => [
+      q(0803),
+      q(0),
+      ],
+   q(anam) => [
+      q(5373),
+      q(0),
+      ],
+   q(anambe) => [
+      q(0550),
+      q(0),
+      ],
+   q(anamgura) => [
+      q(2943),
+      q(0),
+      ],
+   q(anasi) => [
+      q(1387),
+      q(0),
+      ],
+   q(anca) => [
+      q(0586),
+      q(0),
+      ],
+   q(ancient aramaic (up to 700 bce)) => [
+      q(5163),
+      q(0),
+      ],
+   q(ancient greek (to 1453)) => [
+      q(0163),
+      q(1),
+      ],
+   q(ancient hebrew) => [
+      q(2720),
+      q(0),
+      ],
+   q(ancient macedonian) => [
+      q(7357),
+      q(0),
+      ],
+   q(ancient north arabian) => [
+      q(7373),
+      q(0),
+      ],
+   q(ancient zapotec) => [
+      q(7493),
+      q(0),
+      ],
+   q(andaandi) => [
+      q(2012),
+      q(0),
+      ],
+   q(andai) => [
+      q(0642),
+      q(0),
+      ],
+   q(andajin) => [
+      q(0718),
+      q(0),
+      ],
+   q(andalusian arabic) => [
+      q(7229),
+      q(0),
+      ],
+   q(andaman creole hindi) => [
+      q(2722),
+      q(0),
+      ],
+   q(andaqui) => [
+      q(0792),
+      q(0),
+      ],
+   q(andarum) => [
+      q(0819),
+      q(0),
+      ],
+   q(andegerebinha) => [
+      q(0609),
+      q(0),
+      ],
+   q(andh) => [
+      q(0807),
+      q(0),
+      ],
+   q(andi) => [
+      q(0799),
+      q(0),
+      ],
+   q(andio) => [
+      q(1616),
+      q(0),
+      ],
+   q(andoa) => [
+      q(0793),
+      q(0),
+      ],
+   q(andoque) => [
+      q(0805),
+      q(0),
+      ],
+   q(andra-hus) => [
+      q(0813),
+      q(0),
+      ],
+   q(aneityum) => [
+      q(0932),
+      q(0),
+      ],
+   q(anem) => [
+      q(0815),
+      q(0),
+      ],
+   q(aneme wake) => [
+      q(0583),
+      q(0),
+      ],
+   q(anfillo) => [
+      q(4665),
+      q(0),
+      ],
+   q(angaataha) => [
+      q(0666),
+      q(0),
+      ],
+   q(angal) => [
+      q(0658),
+      q(0),
+      ],
+   q(angal enen) => [
+      q(0820),
+      q(0),
+      ],
+   q(angal heneng) => [
+      q(0730),
+      q(0),
+      ],
+   q(angami naga) => [
+      q(4894),
+      q(0),
+      ],
+   q(angguruk yali) => [
+      q(7596),
+      q(0),
+      ],
+   q(angika) => [
+      q(0019),
+      q(0),
+      ],
+   q(angkamuthi) => [
+      q(0962),
+      q(0),
+      ],
+   q(anglo-norman) => [
+      q(7378),
+      q(0),
+      ],
+   q(angloromani) => [
+      q(5782),
+      q(0),
+      ],
+   q(angolar) => [
+      q(0816),
+      q(0),
+      ],
+   q(angor) => [
+      q(0660),
+      q(0),
+      ],
+   q(angoram) => [
+      q(0822),
+      q(0),
+      ],
+   q(angosturas tunebo) => [
+      q(6582),
+      q(0),
+      ],
+   q(anguthimri) => [
+      q(0972),
+      q(0),
+      ],
+   q(ani phowa) => [
+      q(7651),
+      q(0),
+      ],
+   q(anii) => [
+      q(1292),
+      q(0),
+      ],
+   q(animere) => [
+      q(0797),
+      q(0),
+      ],
+   q(anindilyakwa) => [
+      q(0824),
+      q(0),
+      ],
+   q(anjam) => [
+      q(1360),
+      q(0),
+      ],
+   q(ankave) => [
+      q(0547),
+      q(0),
+      ],
+   q(anmatyerre) => [
+      q(0789),
+      q(0),
+      ],
+   q(anong) => [
+      q(5093),
+      q(0),
+      ],
+   q(anor) => [
+      q(0800),
+      q(0),
+      ],
+   q(anserma) => [
+      q(0808),
+      q(0),
+      ],
+   q(ansus) => [
+      q(0795),
+      q(0),
+      ],
+   q(antakarinya) => [
+      q(0809),
+      q(0),
+      ],
+   q(antankarana malagasy) => [
+      q(7368),
+      q(0),
+      ],
+   q(antigua and barbuda creole english) => [
+      q(0699),
+      q(0),
+      ],
+   q(anu-hkongso chin) => [
+      q(0802),
+      q(0),
+      ],
+   q(anuak) => [
+      q(0810),
+      q(0),
+      ],
+   q(anufo) => [
+      q(1759),
+      q(0),
+      ],
+   q(anuki) => [
+      q(0941),
+      q(0),
+      ],
+   q(anus) => [
+      q(0949),
+      q(0),
+      ],
+   q(anuta) => [
+      q(0937),
+      q(0),
+      ],
+   q(anyin) => [
+      q(0814),
+      q(0),
+      ],
+   q(anyin morofo) => [
+      q(4534),
+      q(0),
+      ],
+   q(ao naga) => [
+      q(4896),
+      q(0),
+      ],
+   q(aoheng) => [
+      q(5512),
+      q(0),
+      ],
+   q(aore) => [
+      q(0830),
+      q(0),
+      ],
+   q(ap ma) => [
+      q(3184),
+      q(0),
+      ],
+   q(apache languages) => [
+      q(0020),
+      q(0),
+      ],
+   q(apalachee) => [
+      q(7239),
+      q(0),
+      ],
+   q(apalai) => [
+      q(0859),
+      q(0),
+      ],
+   q(apali) => [
+      q(2259),
+      q(0),
+      ],
+   q(apasco-apoala mixtec) => [
+      q(4288),
+      q(0),
+      ],
+   q(apatani) => [
+      q(0854),
+      q(0),
+      ],
+   q(apiaka) => [
+      q(0843),
+      q(0),
+      ],
+   q(apinaye) => [
+      q(0848),
+      q(0),
+      ],
+   q(apma) => [
+      q(0850),
+      q(0),
+      ],
+   q(aproumu aizi) => [
+      q(0689),
+      q(0),
+      ],
+   q(apurina) => [
+      q(0855),
+      q(0),
+      ],
+   q(aputai) => [
+      q(0858),
+      q(0),
+      ],
+   q(aquitanian) => [
+      q(7240),
+      q(0),
+      ],
+   q(arabana) => [
+      q(0870),
+      q(0),
+      ],
+   q(arabela) => [
+      q(0876),
+      q(0),
+      ],
+   q(arabic) => [
+      q(0021),
+      q(0),
+      ],
+   q(aragonese) => [
+      q(0023),
+      q(0),
+      ],
+   q(araki) => [
+      q(0738),
+      q(0),
+      ],
+   q(aralle-tabulahan) => [
+      q(0924),
+      q(0),
+      ],
+   q(aramanik) => [
+      q(0549),
+      q(0),
+      ],
+   q(arammba) => [
+      q(6234),
+      q(0),
+      ],
+   q(aranadan) => [
+      q(0543),
+      q(0),
+      ],
+   q(aranama-tamique) => [
+      q(7418),
+      q(0),
+      ],
+   q(arandai) => [
+      q(3041),
+      q(0),
+      ],
+   q(araona) => [
+      q(0877),
+      q(0),
+      ],
+   q(arapaho) => [
+      q(0026),
+      q(0),
+      ],
+   q(arapaso) => [
+      q(0874),
+      q(0),
+      ],
+   q(arauan languages) => [
+      q(0491),
+      q(0),
+      ],
+   q(arawa) => [
+      q(0881),
+      q(0),
+      ],
+   q(arawak) => [
+      q(0028),
+      q(0),
+      ],
+   q(arawakan languages) => [
+      q(0492),
+      q(0),
+      ],
+   q(arawete) => [
+      q(0981),
+      q(0),
+      ],
+   q(arawum) => [
+      q(0976),
+      q(0),
+      ],
+   q(arbereshe albanian) => [
+      q(0542),
+      q(0),
+      ],
+   q(arbore) => [
+      q(0882),
+      q(0),
+      ],
+   q(archi) => [
+      q(0861),
+      q(0),
+      ],
+   q(ardhamagadhi prakrit) => [
+      q(5449),
+      q(0),
+      ],
+   q(are) => [
+      q(4605),
+      q(0),
+      ],
+   q(areba) => [
+      q(0625),
+      q(0),
+      ],
+   q(arem) => [
+      q(0632),
+      q(0),
+      ],
+   q(arequipa-la union quechua) => [
+      q(5706),
+      q(0),
+      ],
+   q(argentine sign language) => [
+      q(0628),
+      q(0),
+      ],
+   q(argobba) => [
+      q(0663),
+      q(0),
+      ],
+   q(arguni) => [
+      q(0659),
+      q(0),
+      ],
+   q(arha) => [
+      q(0867),
+      q(0),
+      ],
+   q(arho) => [
+      q(0826),
+      q(0),
+      ],
+   q(arhuaco) => [
+      q(0872),
+      q(0),
+      ],
+   q(ari) => [
+      q(0540),
+      q(0),
+      ],
+   q(aribwatsa) => [
+      q(3792),
+      q(0),
+      ],
+   q(aribwaung) => [
+      q(7602),
+      q(0),
+      ],
+   q(arifama-miniafia) => [
+      q(0546),
+      q(0),
+      ],
+   q(arigidi) => [
+      q(0863),
+      q(0),
+      ],
+   q(arikapu) => [
+      q(0875),
+      q(0),
+      ],
+   q(arikara) => [
+      q(0873),
+      q(0),
+      ],
+   q(arikem) => [
+      q(0711),
+      q(0),
+      ],
+   q(arin) => [
+      q(7416),
+      q(0),
+      ],
+   q(aringa) => [
+      q(4052),
+      q(0),
+      ],
+   q(arma) => [
+      q(0823),
+      q(0),
+      ],
+   q(armazic) => [
+      q(7415),
+      q(0),
+      ],
+   q(armenian) => [
+      q(0024),
+      q(0),
+      ],
+   q(armenian (family)) => [
+      q(0511),
+      q(0),
+      ],
+   q(armenian sign language) => [
+      q(0633),
+      q(0),
+      ],
+   q(aromanian) => [
+      q(0362),
+      q(0),
+      ],
+   q(arop-lokep) => [
+      q(0852),
+      q(0),
+      ],
+   q(arop-sissano) => [
+      q(0853),
+      q(0),
+      ],
+   q(arosi) => [
+      q(0693),
+      q(0),
+      ],
+   q(arpitan) => [
+      q(2365),
+      q(0),
+      ],
+   q(arritinngithigh) => [
+      q(5826),
+      q(0),
+      ],
+   q(arta) => [
+      q(0933),
+      q(0),
+      ],
+   q(artificial languages) => [
+      q(0027),
+      q(0),
+      ],
+   q(arua (amazonas state)) => [
+      q(0881),
+      q(0),
+      ],
+   q(arua (rodonia state)) => [
+      q(0883),
+      q(0),
+      ],
+   q(aruamu) => [
+      q(4531),
+      q(0),
+      ],
+   q(aruek) => [
+      q(0950),
+      q(0),
+      ],
+   q(arumanian) => [
+      q(0362),
+      q(0),
+      ],
+   q(aruop) => [
+      q(4041),
+      q(0),
+      ],
+   q(arutani) => [
+      q(0931),
+      q(0),
+      ],
+   q(arvanitika albanian) => [
+      q(0555),
+      q(0),
+      ],
+   q(as) => [
+      q(0909),
+      q(0),
+      ],
+   q(asaro'o) => [
+      q(4554),
+      q(0),
+      ],
+   q(asas) => [
+      q(0889),
+      q(0),
+      ],
+   q(ashaninka) => [
+      q(1800),
+      q(0),
+      ],
+   q(ashe) => [
+      q(0691),
+      q(0),
+      ],
+   q(asheninka pajonal) => [
+      q(1751),
+      q(0),
+      ],
+   q(asheninka perene) => [
+      q(5575),
+      q(0),
+      ],
+   q(ashkun) => [
+      q(0896),
+      q(0),
+      ],
+   q(asho chin) => [
+      q(1871),
+      q(0),
+      ],
+   q(ashtiani) => [
+      q(0921),
+      q(0),
+      ],
+   q(asilulu) => [
+      q(0897),
+      q(0),
+      ],
+   q(askopan) => [
+      q(2225),
+      q(0),
+      ],
+   q(asoa) => [
+      q(0905),
+      q(0),
+      ],
+   q(assamese) => [
+      q(0029),
+      q(0),
+      ],
+   q(assan) => [
+      q(7436),
+      q(0),
+      ],
+   q(assangori) => [
+      q(6031),
+      q(0),
+      ],
+   q(assiniboine) => [
+      q(0887),
+      q(0),
+      ],
+   q(assyrian neo-aramaic) => [
+      q(0701),
+      q(0),
+      ],
+   q(asturian) => [
+      q(0030),
+      q(0),
+      ],
+   q(asturleonese) => [
+      q(0030),
+      q(0),
+      ],
+   q(asu (nigeria)) => [
+      q(0945),
+      q(0),
+      ],
+   q(asu (tanzania)) => [
+      q(0886),
+      q(0),
+      ],
+   q(asue awyu) => [
+      q(5584),
+      q(0),
+      ],
+   q(asumboa) => [
+      q(0934),
+      q(0),
+      ],
+   q(asuncion mixtepec zapotec) => [
+      q(7821),
+      q(0),
+      ],
+   q(asuri) => [
+      q(0902),
+      q(0),
+      ],
+   q(ata) => [
+      q(0920),
+      q(0),
+      ],
+   q(ata manobo) => [
+      q(0913),
+      q(0),
+      ],
+   q(atakapa) => [
+      q(0866),
+      q(0),
+      ],
+   q(atampaya) => [
+      q(0791),
+      q(0),
+      ],
+   q(atatlahuca mixtec) => [
+      q(4276),
+      q(0),
+      ],
+   q(atayal) => [
+      q(6346),
+      q(0),
+      ],
+   q(atemble) => [
+      q(0914),
+      q(0),
+      ],
+   q(athapascan languages) => [
+      q(0031),
+      q(0),
+      ],
+   q(athpariya) => [
+      q(0842),
+      q(0),
+      ],
+   q(ati) => [
+      q(0918),
+      q(0),
+      ],
+   q(atikamekw) => [
+      q(0917),
+      q(0),
+      ],
+   q(atlantic-congo languages) => [
+      q(0488),
+      q(0),
+      ],
+   q(atohwaim) => [
+      q(0864),
+      q(0),
+      ],
+   q(atong) => [
+      q(0922),
+      q(0),
+      ],
+   q(atorada) => [
+      q(0834),
+      q(0),
+      ],
+   q(atsahuaca) => [
+      q(0912),
+      q(0),
+      ],
+   q(atsam) => [
+      q(1686),
+      q(0),
+      ],
+   q(atsugewi) => [
+      q(0930),
+      q(0),
+      ],
+   q(attapady kurumba) => [
+      q(5457),
+      q(0),
+      ],
+   q(attie) => [
+      q(0916),
+      q(0),
+      ],
+   q(atzingo matlatzinca) => [
+      q(5176),
+      q(0),
+      ],
+   q(au) => [
+      q(0966),
+      q(0),
+      ],
+   q(aulua) => [
+      q(0944),
+      q(0),
+      ],
+   q(aura) => [
+      q(0954),
+      q(0),
+      ],
+   q(aushi) => [
+      q(0940),
+      q(0),
+      ],
+   q(aushiri) => [
+      q(0965),
+      q(0),
+      ],
+   q(austral) => [
+      q(0951),
+      q(0),
+      ],
+   q(australian aborigines sign language) => [
+      q(0906),
+      q(0),
+      ],
+   q(australian languages) => [
+      q(0032),
+      q(0),
+      ],
+   q(australian sign language) => [
+      q(0891),
+      q(0),
+      ],
+   q(austrian sign language) => [
+      q(0901),
+      q(0),
+      ],
+   q(austro-asiatic languages) => [
+      q(0487),
+      q(0),
+      ],
+   q(austronesian languages) => [
+      q(0271),
+      q(0),
+      ],
+   q(auwe) => [
+      q(6091),
+      q(0),
+      ],
+   q(auye) => [
+      q(0952),
+      q(0),
+      ],
+   q(auyokawa) => [
+      q(0947),
+      q(0),
+      ],
+   q(ava guarani) => [
+      q(4845),
+      q(0),
+      ],
+   q(ava-canoeiro) => [
+      q(0968),
+      q(0),
+      ],
+   q(avaric) => [
+      q(0033),
+      q(0),
+      ],
+   q(avatime) => [
+      q(0963),
+      q(0),
+      ],
+   q(avau) => [
+      q(0957),
+      q(0),
+      ],
+   q(avava) => [
+      q(6556),
+      q(0),
+      ],
+   q(avestan) => [
+      q(0034),
+      q(0),
+      ],
+   q(avikam) => [
+      q(0959),
+      q(0),
+      ],
+   q(avokaya) => [
+      q(0967),
+      q(0),
+      ],
+   q(awa (china)) => [
+      q(7020),
+      q(0),
+      ],
+   q(awa (papua new guinea)) => [
+      q(0969),
+      q(0),
+      ],
+   q(awa-cuaiquer) => [
+      q(3679),
+      q(0),
+      ],
+   q(awabakal) => [
+      q(0975),
+      q(0),
+      ],
+   q(awad bing) => [
+      q(1085),
+      q(0),
+      ],
+   q(awadhi) => [
+      q(0035),
+      q(0),
+      ],
+   q(awak) => [
+      q(0978),
+      q(0),
+      ],
+   q(awar) => [
+      q(0993),
+      q(0),
+      ],
+   q(awara) => [
+      q(0985),
+      q(0),
+      ],
+   q(awbono) => [
+      q(0973),
+      q(0),
+      ],
+   q(aweer) => [
+      q(1354),
+      q(0),
+      ],
+   q(awera) => [
+      q(0979),
+      q(0),
+      ],
+   q(aweti) => [
+      q(0971),
+      q(0),
+      ],
+   q(awing) => [
+      q(1020),
+      q(0),
+      ],
+   q(awiyaana) => [
+      q(0955),
+      q(0),
+      ],
+   q(awjilah) => [
+      q(0942),
+      q(0),
+      ],
+   q(awngi) => [
+      q(0977),
+      q(0),
+      ],
+   q(awngthim) => [
+      q(2672),
+      q(0),
+      ],
+   q(awtuw) => [
+      q(3444),
+      q(0),
+      ],
+   q(awu) => [
+      q(7575),
+      q(0),
+      ],
+   q(awun) => [
+      q(0984),
+      q(0),
+      ],
+   q(awutu) => [
+      q(0652),
+      q(0),
+      ],
+   q(awyi) => [
+      q(0953),
+      q(0),
+      ],
+   q(axamb) => [
+      q(0680),
+      q(0),
+      ],
+   q(axi yi) => [
+      q(7577),
+      q(0),
+      ],
+   q(ayabadhu) => [
+      q(0996),
+      q(0),
+      ],
+   q(ayacucho quechua) => [
+      q(5672),
+      q(0),
+      ],
+   q(ayangan ifugao) => [
+      q(2895),
+      q(0),
+      ],
+   q(ayautla mazatec) => [
+      q(7004),
+      q(0),
+      ],
+   q(ayere) => [
+      q(0997),
+      q(0),
+      ],
+   q(ayerrerenge) => [
+      q(0988),
+      q(0),
+      ],
+   q(ayi (papua new guinea)) => [
+      q(1006),
+      q(0),
+      ],
+   q(ayiwo) => [
+      q(4814),
+      q(0),
+      ],
+   q(ayizi) => [
+      q(7713),
+      q(0),
+      ],
+   q(ayizo gbe) => [
+      q(0994),
+      q(0),
+      ],
+   q(aymara) => [
+      q(0036),
+      q(0),
+      ],
+   q(ayoquesco zapotec) => [
+      q(7721),
+      q(0),
+      ],
+   q(ayoreo) => [
+      q(1004),
+      q(0),
+      ],
+   q(ayu) => [
+      q(1010),
+      q(0),
+      ],
+   q(ayutla mixtec) => [
+      q(4295),
+      q(0),
+      ],
+   q(azerbaijani) => [
+      q(0037),
+      q(0),
+      ],
+   q(azha) => [
+      q(1013),
+      q(0),
+      ],
+   q(azhe) => [
+      q(7579),
+      q(0),
+      ],
+   q(azoyu me'phaa) => [
+      q(6625),
+      q(0),
+      ],
+   q(azoyu tlapanec) => [
+      q(6625),
+      q(0),
+      ],
+   q(baan) => [
+      q(1527),
+      q(0),
+      ],
+   q(baangi) => [
+      q(1421),
+      q(0),
+      ],
+   q(baatonum) => [
+      q(1039),
+      q(0),
+      ],
+   q(baba) => [
+      q(1061),
+      q(0),
+      ],
+   q(baba malay) => [
+      q(4107),
+      q(0),
+      ],
+   q(babalia creole arabic) => [
+      q(1064),
+      q(0),
+      ],
+   q(babango) => [
+      q(1051),
+      q(0),
+      ],
+   q(babanki) => [
+      q(1049),
+      q(0),
+      ],
+   q(babatana) => [
+      q(1023),
+      q(0),
+      ],
+   q(babine) => [
+      q(1082),
+      q(0),
+      ],
+   q(bable) => [
+      q(0030),
+      q(0),
+      ],
+   q(babuza) => [
+      q(1621),
+      q(0),
+      ],
+   q(bacama) => [
+      q(1088),
+      q(0),
+      ],
+   q(bacanese malay) => [
+      q(1480),
+      q(0),
+      ],
+   q(bactrian) => [
+      q(7250),
+      q(0),
+      ],
+   q(bada (indonesia)) => [
+      q(1210),
+      q(0),
+      ],
+   q(bada (nigeria)) => [
+      q(1034),
+      q(0),
+      ],
+   q(badaga) => [
+      q(1153),
+      q(0),
+      ],
+   q(bade) => [
+      q(1094),
+      q(0),
+      ],
+   q(badeshi) => [
+      q(1115),
+      q(0),
+      ],
+   q(badi kanum) => [
+      q(3313),
+      q(0),
+      ],
+   q(badimaya) => [
+      q(1211),
+      q(0),
+      ],
+   q(badui) => [
+      q(1025),
+      q(0),
+      ],
+   q(badyara) => [
+      q(5349),
+      q(0),
+      ],
+   q(baeggu) => [
+      q(1521),
+      q(0),
+      ],
+   q(baelelea) => [
+      q(1520),
+      q(0),
+      ],
+   q(baetora) => [
+      q(1487),
+      q(0),
+      ],
+   q(bafanji) => [
+      q(1146),
+      q(0),
+      ],
+   q(bafaw-balong) => [
+      q(1561),
+      q(0),
+      ],
+   q(bafia) => [
+      q(3577),
+      q(0),
+      ],
+   q(bafut) => [
+      q(1140),
+      q(0),
+      ],
+   q(baga binari) => [
+      q(1071),
+      q(0),
+      ],
+   q(baga kaloum) => [
+      q(1403),
+      q(0),
+      ],
+   q(baga koga) => [
+      q(1175),
+      q(0),
+      ],
+   q(baga manduri) => [
+      q(1306),
+      q(0),
+      ],
+   q(baga mboteni) => [
+      q(1173),
+      q(0),
+      ],
+   q(baga sitemu) => [
+      q(1462),
+      q(0),
+      ],
+   q(baga sobane) => [
+      q(1468),
+      q(0),
+      ],
+   q(bagheli) => [
+      q(1160),
+      q(0),
+      ],
+   q(bagirmi) => [
+      q(1311),
+      q(0),
+      ],
+   q(bagirmi fulfulde) => [
+      q(2377),
+      q(0),
+      ],
+   q(bago-kusuntu) => [
+      q(1404),
+      q(0),
+      ],
+   q(bagri) => [
+      q(1177),
+      q(0),
+      ],
+   q(bagupi) => [
+      q(1381),
+      q(0),
+      ],
+   q(bagusa) => [
+      q(1400),
+      q(0),
+      ],
+   q(bagvalal) => [
+      q(3645),
+      q(0),
+      ],
+   q(baha buyang) => [
+      q(7558),
+      q(0),
+      ],
+   q(baham) => [
+      q(1112),
+      q(0),
+      ],
+   q(bahamas creole english) => [
+      q(1029),
+      q(0),
+      ],
+   q(baharna arabic) => [
+      q(0580),
+      q(0),
+      ],
+   q(bahau) => [
+      q(1206),
+      q(0),
+      ],
+   q(bahinemo) => [
+      q(1238),
+      q(0),
+      ],
+   q(bahing) => [
+      q(1196),
+      q(0),
+      ],
+   q(bahnar) => [
+      q(1106),
+      q(0),
+      ],
+   q(bahonsuai) => [
+      q(1467),
+      q(0),
+      ],
+   q(bai) => [
+      q(1099),
+      q(0),
+      ],
+   q(baibai) => [
+      q(1044),
+      q(0),
+      ],
+   q(baikeno) => [
+      q(1276),
+      q(0),
+      ],
+   q(baima) => [
+      q(1405),
+      q(0),
+      ],
+   q(baimak) => [
+      q(1326),
+      q(0),
+      ],
+   q(bainouk-gunyaamolo) => [
+      q(1089),
+      q(0),
+      ],
+   q(bainouk-gunyuno) => [
+      q(1024),
+      q(0),
+      ],
+   q(bainouk-samik) => [
+      q(1066),
+      q(0),
+      ],
+   q(baiso) => [
+      q(1469),
+      q(0),
+      ],
+   q(baissa fali) => [
+      q(2318),
+      q(0),
+      ],
+   q(bajan) => [
+      q(1247),
+      q(0),
+      ],
+   q(bajelani) => [
+      q(1243),
+      q(0),
+      ],
+   q(baka (cameroon)) => [
+      q(1256),
+      q(0),
+      ],
+   q(baka (sudan)) => [
+      q(1097),
+      q(0),
+      ],
+   q(bakairi) => [
+      q(1269),
+      q(0),
+      ],
+   q(bakaka) => [
+      q(1423),
+      q(0),
+      ],
+   q(bakhtiari) => [
+      q(1406),
+      q(0),
+      ],
+   q(baki) => [
+      q(1261),
+      q(0),
+      ],
+   q(bakoko) => [
+      q(1260),
+      q(0),
+      ],
+   q(bakole) => [
+      q(3435),
+      q(0),
+      ],
+   q(bakpinka) => [
+      q(1057),
+      q(0),
+      ],
+   q(bakumpai) => [
+      q(1270),
+      q(0),
+      ],
+   q(bakwe) => [
+      q(1251),
+      q(0),
+      ],
+   q(balaesang) => [
+      q(1296),
+      q(0),
+      ],
+   q(balangao) => [
+      q(1299),
+      q(0),
+      ],
+   q(balangingi) => [
+      q(6204),
+      q(0),
+      ],
+   q(balanta-ganja) => [
+      q(1248),
+      q(0),
+      ],
+   q(balanta-kentohe) => [
+      q(1282),
+      q(0),
+      ],
+   q(balantak) => [
+      q(1302),
+      q(0),
+      ],
+   q(balau) => [
+      q(1284),
+      q(0),
+      ],
+   q(baldemu) => [
+      q(1103),
+      q(0),
+      ],
+   q(bali (democratic republic of congo)) => [
+      q(1080),
+      q(0),
+      ],
+   q(bali (nigeria)) => [
+      q(1078),
+      q(0),
+      ],
+   q(balinese) => [
+      q(0043),
+      q(0),
+      ],
+   q(balinese malay) => [
+      q(4265),
+      q(0),
+      ],
+   q(balkan gagauz turkish) => [
+      q(1184),
+      q(0),
+      ],
+   q(balkan romani) => [
+      q(5790),
+      q(0),
+      ],
+   q(balo) => [
+      q(1412),
+      q(0),
+      ],
+   q(baloi) => [
+      q(1231),
+      q(0),
+      ],
+   q(balti) => [
+      q(1156),
+      q(0),
+      ],
+   q(baltic languages) => [
+      q(0046),
+      q(0),
+      ],
+   q(baltic romani) => [
+      q(5788),
+      q(0),
+      ],
+   q(baluan-pam) => [
+      q(1294),
+      q(0),
+      ],
+   q(baluchi) => [
+      q(0041),
+      q(0),
+      ],
+   q(bamako sign language) => [
+      q(1357),
+      q(0),
+      ],
+   q(bamali) => [
+      q(1055),
+      q(0),
+      ],
+   q(bambalang) => [
+      q(1317),
+      q(0),
+      ],
+   q(bambam) => [
+      q(5611),
+      q(0),
+      ],
+   q(bambara) => [
+      q(0042),
+      q(0),
+      ],
+   q(bambassi) => [
+      q(4657),
+      q(0),
+      ],
+   q(bambili-bambui) => [
+      q(1036),
+      q(0),
+      ],
+   q(bamenyam) => [
+      q(1069),
+      q(0),
+      ],
+   q(bamileke languages) => [
+      q(0039),
+      q(0),
+      ],
+   q(bamu) => [
+      q(1070),
+      q(0),
+      ],
+   q(bamukumbit) => [
+      q(1417),
+      q(0),
+      ],
+   q(bamun) => [
+      q(1037),
+      q(0),
+      ],
+   q(bamunka) => [
+      q(1530),
+      q(0),
+      ],
+   q(bamwe) => [
+      q(1309),
+      q(0),
+      ],
+   q(ban khor sign language) => [
+      q(1147),
+      q(0),
+      ],
+   q(bana) => [
+      q(1087),
+      q(0),
+      ],
+   q(banam bay) => [
+      q(7012),
+      q(0),
+      ],
+   q(banao itneg) => [
+      q(1252),
+      q(0),
+      ],
+   q(banaro) => [
+      q(1614),
+      q(0),
+      ],
+   q(banda (indonesia)) => [
+      q(1332),
+      q(0),
+      ],
+   q(banda languages) => [
+      q(0038),
+      q(0),
+      ],
+   q(banda malay) => [
+      q(1389),
+      q(0),
+      ],
+   q(banda-bambari) => [
+      q(3910),
+      q(0),
+      ],
+   q(banda-banda) => [
+      q(1378),
+      q(0),
+      ],
+   q(banda-mbres) => [
+      q(1408),
+      q(0),
+      ],
+   q(banda-ndele) => [
+      q(1148),
+      q(0),
+      ],
+   q(banda-yangere) => [
+      q(7503),
+      q(0),
+      ],
+   q(bandi) => [
+      q(1615),
+      q(0),
+      ],
+   q(bandial) => [
+      q(1407),
+      q(0),
+      ],
+   q(bandjalang) => [
+      q(1114),
+      q(0),
+      ],
+   q(bangala) => [
+      q(1573),
+      q(0),
+      ],
+   q(bangandu) => [
+      q(1167),
+      q(0),
+      ],
+   q(bangba) => [
+      q(1043),
+      q(0),
+      ],
+   q(banggai) => [
+      q(1186),
+      q(0),
+      ],
+   q(banggarla) => [
+      q(1233),
+      q(0),
+      ],
+   q(bangi) => [
+      q(1336),
+      q(0),
+      ],
+   q(bangi me) => [
+      q(1955),
+      q(0),
+      ],
+   q(bangingih sama) => [
+      q(6204),
+      q(0),
+      ],
+   q(bangka) => [
+      q(4201),
+      q(0),
+      ],
+   q(bangolan) => [
+      q(1170),
+      q(0),
+      ],
+   q(bangubangu) => [
+      q(1350),
+      q(0),
+      ],
+   q(bangwinji) => [
+      q(1456),
+      q(0),
+      ],
+   q(baniva) => [
+      q(1537),
+      q(0),
+      ],
+   q(baniwa) => [
+      q(1550),
+      q(0),
+      ],
+   q(banjar) => [
+      q(1244),
+      q(0),
+      ],
+   q(bankagooma) => [
+      q(1588),
+      q(0),
+      ],
+   q(bankal) => [
+      q(3086),
+      q(0),
+      ],
+   q(bankan tey dogon) => [
+      q(1973),
+      q(0),
+      ],
+   q(bankon) => [
+      q(0561),
+      q(0),
+      ],
+   q(bannoni) => [
+      q(1077),
+      q(0),
+      ],
+   q(bantawa) => [
+      q(1032),
+      q(0),
+      ],
+   q(bantayanon) => [
+      q(1159),
+      q(0),
+      ],
+   q(bantik) => [
+      q(1344),
+      q(0),
+      ],
+   q(bantoanon) => [
+      q(1342),
+      q(0),
+      ],
+   q(bantu (other)) => [
+      q(0058),
+      q(0),
+      ],
+   q(bantu languages) => [
+      q(0058),
+      q(1),
+      ],
+   q(baoule) => [
+      q(1073),
+      q(0),
+      ],
+   q(bara malagasy) => [
+      q(1202),
+      q(0),
+      ],
+   q(baraamu) => [
+      q(1426),
+      q(0),
+      ],
+   q(barababaraba) => [
+      q(5735),
+      q(0),
+      ],
+   q(barai) => [
+      q(1040),
+      q(0),
+      ],
+   q(barakai) => [
+      q(1030),
+      q(0),
+      ],
+   q(baram kayan) => [
+      q(3740),
+      q(0),
+      ],
+   q(barama) => [
+      q(1045),
+      q(0),
+      ],
+   q(barambu) => [
+      q(1434),
+      q(0),
+      ],
+   q(baramu) => [
+      q(1328),
+      q(0),
+      ],
+   q(barapasi) => [
+      q(1437),
+      q(0),
+      ],
+   q(baras) => [
+      q(1440),
+      q(0),
+      ],
+   q(barasana-eduria) => [
+      q(1460),
+      q(0),
+      ],
+   q(barbacoas) => [
+      q(1377),
+      q(0),
+      ],
+   q(barbareno) => [
+      q(1359),
+      q(0),
+      ],
+   q(barclayville grebo) => [
+      q(2615),
+      q(0),
+      ],
+   q(bardi) => [
+      q(1074),
+      q(0),
+      ],
+   q(bare) => [
+      q(1026),
+      q(0),
+      ],
+   q(barein) => [
+      q(1518),
+      q(0),
+      ],
+   q(bargam) => [
+      q(4358),
+      q(0),
+      ],
+   q(bari) => [
+      q(1137),
+      q(0),
+      ],
+   q(bariai) => [
+      q(1072),
+      q(0),
+      ],
+   q(bariji) => [
+      q(1234),
+      q(0),
+      ],
+   q(barikanchi) => [
+      q(1581),
+      q(0),
+      ],
+   q(barikewa) => [
+      q(3042),
+      q(0),
+      ],
+   q(barok) => [
+      q(1241),
+      q(0),
+      ],
+   q(barombi) => [
+      q(1047),
+      q(0),
+      ],
+   q(barro negro tunebo) => [
+      q(6361),
+      q(0),
+      ],
+   q(barrow point) => [
+      q(1392),
+      q(0),
+      ],
+   q(baruga) => [
+      q(1254),
+      q(0),
+      ],
+   q(baruya) => [
+      q(1607),
+      q(0),
+      ],
+   q(barwe) => [
+      q(1548),
+      q(0),
+      ],
+   q(barzani jewish neo-aramaic) => [
+      q(1236),
+      q(0),
+      ],
+   q(basa) => [
+      q(0045),
+      q(0),
+      ],
+   q(basa (cameroon)) => [
+      q(0045),
+      q(1),
+      ],
+   q(basa (nigeria)) => [
+      q(1637),
+      q(0),
+      ],
+   q(basa-gumna) => [
+      q(1458),
+      q(0),
+      ],
+   q(basa-gurmana) => [
+      q(1503),
+      q(0),
+      ],
+   q(basap) => [
+      q(1091),
+      q(0),
+      ],
+   q(basay) => [
+      q(1606),
+      q(0),
+      ],
+   q(bashkardi) => [
+      q(1453),
+      q(0),
+      ],
+   q(bashkir) => [
+      q(0040),
+      q(0),
+      ],
+   q(basketo) => [
+      q(1466),
+      q(0),
+      ],
+   q(basque) => [
+      q(0044),
+      q(0),
+      ],
+   q(basque (family)) => [
+      q(0503),
+      q(0),
+      ],
+   q(bassa) => [
+      q(1463),
+      q(0),
+      ],
+   q(bassa-kontagora) => [
+      q(1464),
+      q(0),
+      ],
+   q(bassari) => [
+      q(1450),
+      q(0),
+      ],
+   q(bassossi) => [
+      q(1455),
+      q(0),
+      ],
+   q(bata) => [
+      q(1472),
+      q(0),
+      ],
+   q(batad ifugao) => [
+      q(2895),
+      q(0),
+      ],
+   q(batak) => [
+      q(1591),
+      q(0),
+      ],
+   q(batak alas-kluet) => [
+      q(1495),
+      q(0),
+      ],
+   q(batak angkola) => [
+      q(0724),
+      q(0),
+      ],
+   q(batak dairi) => [
+      q(1474),
+      q(0),
+      ],
+   q(batak karo) => [
+      q(1493),
+      q(0),
+      ],
+   q(batak languages) => [
+      q(0062),
+      q(0),
+      ],
+   q(batak mandailing) => [
+      q(1482),
+      q(0),
+      ],
+   q(batak simalungun) => [
+      q(1488),
+      q(0),
+      ],
+   q(batak toba) => [
+      q(1041),
+      q(0),
+      ],
+   q(batanga) => [
+      q(1340),
+      q(0),
+      ],
+   q(batek) => [
+      q(1486),
+      q(0),
+      ],
+   q(bateri) => [
+      q(1491),
+      q(0),
+      ],
+   q(bathari) => [
+      q(1198),
+      q(0),
+      ],
+   q(bati (cameroon)) => [
+      q(1473),
+      q(0),
+      ],
+   q(bati (indonesia)) => [
+      q(1535),
+      q(0),
+      ],
+   q(bats) => [
+      q(1050),
+      q(0),
+      ],
+   q(batu) => [
+      q(1490),
+      q(0),
+      ],
+   q(batui) => [
+      q(7742),
+      q(0),
+      ],
+   q(batuley) => [
+      q(1038),
+      q(0),
+      ],
+   q(bau) => [
+      q(1042),
+      q(0),
+      ],
+   q(bau bidayuh) => [
+      q(6109),
+      q(0),
+      ],
+   q(bauchi) => [
+      q(1452),
+      q(0),
+      ],
+   q(baure) => [
+      q(1428),
+      q(0),
+      ],
+   q(bauria) => [
+      q(1166),
+      q(0),
+      ],
+   q(bauro) => [
+      q(1567),
+      q(0),
+      ],
+   q(bauwaki) => [
+      q(1552),
+      q(0),
+      ],
+   q(bauzi) => [
+      q(1541),
+      q(0),
+      ],
+   q(bavarian) => [
+      q(1033),
+      q(0),
+      ],
+   q(bawm chin) => [
+      q(1178),
+      q(0),
+      ],
+   q(bay miwok) => [
+      q(4334),
+      q(0),
+      ],
+   q(bayali) => [
+      q(1253),
+      q(0),
+      ],
+   q(baybayanon) => [
+      q(1540),
+      q(0),
+      ],
+   q(baygo) => [
+      q(1597),
+      q(0),
+      ],
+   q(bayono) => [
+      q(1602),
+      q(0),
+      ],
+   q(bayot) => [
+      q(1090),
+      q(0),
+      ],
+   q(bayungu) => [
+      q(1576),
+      q(0),
+      ],
+   q(bazigar) => [
+      q(1154),
+      q(0),
+      ],
+   q(beami) => [
+      q(1126),
+      q(0),
+      ],
+   q(beaver) => [
+      q(1116),
+      q(0),
+      ],
+   q(beba) => [
+      q(1152),
+      q(0),
+      ],
+   q(bebe) => [
+      q(1636),
+      q(0),
+      ],
+   q(bebele) => [
+      q(1117),
+      q(0),
+      ],
+   q(bebeli) => [
+      q(1125),
+      q(0),
+      ],
+   q(bebil) => [
+      q(1582),
+      q(0),
+      ],
+   q(bedawiyet) => [
+      q(0047),
+      q(0),
+      ],
+   q(bedik) => [
+      q(6594),
+      q(0),
+      ],
+   q(bedjond) => [
+      q(1250),
+      q(0),
+      ],
+   q(bedoanas) => [
+      q(1119),
+      q(0),
+      ],
+   q(beeke) => [
+      q(1258),
+      q(0),
+      ],
+   q(beele) => [
+      q(1583),
+      q(0),
+      ],
+   q(beembe) => [
+      q(1128),
+      q(0),
+      ],
+   q(beezen) => [
+      q(1352),
+      q(0),
+      ],
+   q(befang) => [
+      q(1063),
+      q(0),
+      ],
+   q(begbere-ejar) => [
+      q(1419),
+      q(0),
+      ],
+   q(beja) => [
+      q(0047),
+      q(0),
+      ],
+   q(bekati') => [
+      q(1124),
+      q(0),
+      ],
+   q(bekwarra) => [
+      q(1274),
+      q(0),
+      ],
+   q(bekwel) => [
+      q(1275),
+      q(0),
+      ],
+   q(belait) => [
+      q(1122),
+      q(0),
+      ],
+   q(belanda bor) => [
+      q(1568),
+      q(0),
+      ],
+   q(belanda viri) => [
+      q(1526),
+      q(0),
+      ],
+   q(belarusian) => [
+      q(0048),
+      q(0),
+      ],
+   q(belhariya) => [
+      q(1611),
+      q(0),
+      ],
+   q(beli (papua new guinea)) => [
+      q(1135),
+      q(0),
+      ],
+   q(beli (sudan)) => [
+      q(1290),
+      q(0),
+      ],
+   q(belize kriol english) => [
+      q(1624),
+      q(0),
+      ],
+   q(bella coola) => [
+      q(1280),
+      q(0),
+      ],
+   q(bellari) => [
+      q(1444),
+      q(0),
+      ],
+   q(bemba) => [
+      q(0049),
+      q(0),
+      ],
+   q(bemba (democratic republic of congo)) => [
+      q(1327),
+      q(0),
+      ],
+   q(bemba (zambia)) => [
+      q(0049),
+      q(1),
+      ],
+   q(bembe) => [
+      q(1304),
+      q(0),
+      ],
+   q(ben tey dogon) => [
+      q(1970),
+      q(0),
+      ],
+   q(bena (nigeria)) => [
+      q(7690),
+      q(0),
+      ],
+   q(bena (tanzania)) => [
+      q(1136),
+      q(0),
+      ],
+   q(benabena) => [
+      q(1121),
+      q(0),
+      ],
+   q(bench) => [
+      q(1081),
+      q(0),
+      ],
+   q(bende) => [
+      q(1105),
+      q(0),
+      ],
+   q(bendi) => [
+      q(1084),
+      q(0),
+      ],
+   q(beneraf) => [
+      q(1348),
+      q(0),
+      ],
+   q(beng) => [
+      q(4843),
+      q(0),
+      ],
+   q(benga) => [
+      q(1335),
+      q(0),
+      ],
+   q(bengali) => [
+      q(0050),
+      q(0),
+      ],
+   q(benggoi) => [
+      q(1185),
+      q(0),
+      ],
+   q(bengkala sign language) => [
+      q(1422),
+      q(0),
+      ],
+   q(bentong) => [
+      q(1347),
+      q(0),
+      ],
+   q(benyadu') => [
+      q(1594),
+      q(0),
+      ],
+   q(beothuk) => [
+      q(1499),
+      q(0),
+      ],
+   q(bepour) => [
+      q(1215),
+      q(0),
+      ],
+   q(bera) => [
+      q(1427),
+      q(0),
+      ],
+   q(berakou) => [
+      q(1587),
+      q(0),
+      ],
+   q(berau malay) => [
+      q(1522),
+      q(0),
+      ],
+   q(berber languages) => [
+      q(0051),
+      q(0),
+      ],
+   q(berbice creole dutch) => [
+      q(1425),
+      q(0),
+      ],
+   q(berik) => [
+      q(1264),
+      q(0),
+      ],
+   q(berinomo) => [
+      q(1225),
+      q(0),
+      ],
+   q(berom) => [
+      q(1363),
+      q(0),
+      ],
+   q(berta) => [
+      q(7201),
+      q(0),
+      ],
+   q(berti) => [
+      q(1609),
+      q(0),
+      ],
+   q(besisi) => [
+      q(4254),
+      q(0),
+      ],
+   q(besme) => [
+      q(1129),
+      q(0),
+      ],
+   q(besoa) => [
+      q(1127),
+      q(0),
+      ],
+   q(betaf) => [
+      q(1141),
+      q(0),
+      ],
+   q(betawi) => [
+      q(1133),
+      q(0),
+      ],
+   q(bete) => [
+      q(1596),
+      q(0),
+      ],
+   q(bete-bendi) => [
+      q(1489),
+      q(0),
+      ],
+   q(beti (cote d'ivoire)) => [
+      q(2272),
+      q(0),
+      ],
+   q(betta kurumba) => [
+      q(7462),
+      q(0),
+      ],
+   q(bezhta) => [
+      q(3157),
+      q(0),
+      ],
+   q(bhadrawahi) => [
+      q(1190),
+      q(0),
+      ],
+   q(bhalay) => [
+      q(1208),
+      q(0),
+      ],
+   q(bharia) => [
+      q(1187),
+      q(0),
+      ],
+   q(bhatola) => [
+      q(1481),
+      q(0),
+      ],
+   q(bhatri) => [
+      q(1183),
+      q(0),
+      ],
+   q(bhattiyali) => [
+      q(1204),
+      q(0),
+      ],
+   q(bhaya) => [
+      q(1191),
+      q(0),
+      ],
+   q(bhele) => [
+      q(1209),
+      q(0),
+      ],
+   q(bhilali) => [
+      q(1195),
+      q(0),
+      ],
+   q(bhili) => [
+      q(1188),
+      q(0),
+      ],
+   q(bhojpuri) => [
+      q(0052),
+      q(0),
+      ],
+   q(bhoti kinnauri) => [
+      q(4805),
+      q(0),
+      ],
+   q(bhujel) => [
+      q(1598),
+      q(0),
+      ],
+   q(bhunjia) => [
+      q(1205),
+      q(0),
+      ],
+   q(biafada) => [
+      q(1216),
+      q(0),
+      ],
+   q(biage) => [
+      q(1095),
+      q(0),
+      ],
+   q(biak) => [
+      q(1207),
+      q(0),
+      ],
+   q(biali) => [
+      q(1123),
+      q(0),
+      ],
+   q(bian marind) => [
+      q(1394),
+      q(0),
+      ],
+   q(biangai) => [
+      q(1217),
+      q(0),
+      ],
+   q(biao) => [
+      q(1601),
+      q(0),
+      ],
+   q(biao mon) => [
+      q(1322),
+      q(0),
+      ],
+   q(biao-jiao mien) => [
+      q(1235),
+      q(0),
+      ],
+   q(biatah bidayuh) => [
+      q(1478),
+      q(0),
+      ],
+   q(bidhawal) => [
+      q(2914),
+      q(0),
+      ],
+   q(bidiyo) => [
+      q(1214),
+      q(0),
+      ],
+   q(bidyara) => [
+      q(1603),
+      q(0),
+      ],
+   q(bidyogo) => [
+      q(1237),
+      q(0),
+      ],
+   q(biem) => [
+      q(1305),
+      q(0),
+      ],
+   q(bierebo) => [
+      q(1338),
+      q(0),
+      ],
+   q(bieria) => [
+      q(1431),
+      q(0),
+      ],
+   q(biete) => [
+      q(1226),
+      q(0),
+      ],
+   q(big nambas) => [
+      q(4944),
+      q(0),
+      ],
+   q(biga) => [
+      q(1189),
+      q(0),
+      ],
+   q(bihari languages) => [
+      q(0053),
+      q(0),
+      ],
+   q(bijori) => [
+      q(1229),
+      q(0),
+      ],
+   q(bikaru) => [
+      q(1213),
+      q(0),
+      ],
+   q(bikol) => [
+      q(0054),
+      q(0),
+      ],
+   q(bikya) => [
+      q(1592),
+      q(0),
+      ],
+   q(bila) => [
+      q(1222),
+      q(0),
+      ],
+   q(bilakura) => [
+      q(1409),
+      q(0),
+      ],
+   q(bilaspuri) => [
+      q(3279),
+      q(0),
+      ],
+   q(bilba) => [
+      q(1398),
+      q(0),
+      ],
+   q(bilbil) => [
+      q(1447),
+      q(0),
+      ],
+   q(bile) => [
+      q(1219),
+      q(0),
+      ],
+   q(bilin) => [
+      q(0067),
+      q(0),
+      ],
+   q(bilma kanuri) => [
+      q(1321),
+      q(0),
+      ],
+   q(biloxi) => [
+      q(1289),
+      q(0),
+      ],
+   q(bilua) => [
+      q(1279),
+      q(0),
+      ],
+   q(bilur) => [
+      q(1572),
+      q(0),
+      ],
+   q(bima) => [
+      q(1200),
+      q(0),
+      ],
+   q(bimin) => [
+      q(1197),
+      q(0),
+      ],
+   q(bimoba) => [
+      q(1220),
+      q(0),
+      ],
+   q(bina (nigeria)) => [
+      q(1600),
+      q(0),
+      ],
+   q(bina (papua new guinea)) => [
+      q(1316),
+      q(0),
+      ],
+   q(binahari) => [
+      q(1590),
+      q(0),
+      ],
+   q(binandere) => [
+      q(1193),
+      q(0),
+      ],
+   q(bine) => [
+      q(1364),
+      q(0),
+      ],
+   q(bini) => [
+      q(0055),
+      q(0),
+      ],
+   q(binji) => [
+      q(1382),
+      q(0),
+      ],
+   q(binongan itneg) => [
+      q(2990),
+      q(0),
+      ],
+   q(bintauna) => [
+      q(1333),
+      q(0),
+      ],
+   q(bintulu) => [
+      q(1351),
+      q(0),
+      ],
+   q(binukid) => [
+      q(1257),
+      q(0),
+      ],
+   q(binumarien) => [
+      q(1246),
+      q(0),
+      ],
+   q(bipi) => [
+      q(1223),
+      q(0),
+      ],
+   q(birale) => [
+      q(1571),
+      q(0),
+      ],
+   q(birao) => [
+      q(1439),
+      q(0),
+      ],
+   q(birgit) => [
+      q(1476),
+      q(0),
+      ],
+   q(birhor) => [
+      q(1230),
+      q(0),
+      ],
+   q(biri) => [
+      q(1632),
+      q(0),
+      ],
+   q(biritai) => [
+      q(1414),
+      q(0),
+      ],
+   q(birked) => [
+      q(1432),
+      q(0),
+      ],
+   q(birri) => [
+      q(1533),
+      q(0),
+      ],
+   q(birwa) => [
+      q(1433),
+      q(0),
+      ],
+   q(bisa) => [
+      q(1212),
+      q(0),
+      ],
+   q(biseni) => [
+      q(2916),
+      q(0),
+      ],
+   q(bishnupriya) => [
+      q(1397),
+      q(0),
+      ],
+   q(bishuo) => [
+      q(1549),
+      q(0),
+      ],
+   q(bisis) => [
+      q(1349),
+      q(0),
+      ],
+   q(bislama) => [
+      q(0056),
+      q(0),
+      ],
+   q(bisorio) => [
+      q(1224),
+      q(0),
+      ],
+   q(bissa) => [
+      q(1212),
+      q(0),
+      ],
+   q(bisu) => [
+      q(1623),
+      q(0),
+      ],
+   q(bit) => [
+      q(1171),
+      q(0),
+      ],
+   q(bitare) => [
+      q(1441),
+      q(0),
+      ],
+   q(bitur) => [
+      q(4129),
+      q(0),
+      ],
+   q(biwat) => [
+      q(1554),
+      q(0),
+      ],
+   q(biyo) => [
+      q(1604),
+      q(0),
+      ],
+   q(biyom) => [
+      q(1385),
+      q(0),
+      ],
+   q(blablanga) => [
+      q(1293),
+      q(0),
+      ],
+   q(blafe) => [
+      q(1144),
+      q(0),
+      ],
+   q(blagar) => [
+      q(1131),
+      q(0),
+      ],
+   q(blang) => [
+      q(1295),
+      q(0),
+      ],
+   q(blin) => [
+      q(0067),
+      q(0),
+      ],
+   q(bliss) => [
+      q(0478),
+      q(0),
+      ],
+   q(blissymbolics) => [
+      q(0478),
+      q(0),
+      ],
+   q(blissymbols) => [
+      q(0478),
+      q(0),
+      ],
+   q(bo (laos)) => [
+      q(1172),
+      q(0),
+      ],
+   q(bo (papua new guinea)) => [
+      q(1395),
+      q(0),
+      ],
+   q(bo-rukul) => [
+      q(4091),
+      q(0),
+      ],
+   q(bo-ung) => [
+      q(4576),
+      q(0),
+      ],
+   q(boano (maluku)) => [
+      q(1628),
+      q(0),
+      ],
+   q(boano (sulawesi)) => [
+      q(1626),
+      q(0),
+      ],
+   q(bobongko) => [
+      q(1163),
+      q(0),
+      ],
+   q(bobot) => [
+      q(1494),
+      q(0),
+      ],
+   q(bodo (central african republic)) => [
+      q(1374),
+      q(0),
+      ],
+   q(bodo (india)) => [
+      q(1445),
+      q(0),
+      ],
+   q(bodo gadaba) => [
+      q(2419),
+      q(0),
+      ],
+   q(bodo parja) => [
+      q(1111),
+      q(0),
+      ],
+   q(bofi) => [
+      q(1142),
+      q(0),
+      ],
+   q(boga) => [
+      q(1538),
+      q(0),
+      ],
+   q(bogaya) => [
+      q(1367),
+      q(0),
+      ],
+   q(boghom) => [
+      q(1515),
+      q(0),
+      ],
+   q(boguru) => [
+      q(1418),
+      q(0),
+      ],
+   q(bohtan neo-aramaic) => [
+      q(1199),
+      q(0),
+      ],
+   q(boikin) => [
+      q(1620),
+      q(0),
+      ],
+   q(bokha) => [
+      q(7524),
+      q(0),
+      ],
+   q(bokmal, norwegian) => [
+      q(0313),
+      q(0),
+      ],
+   q(boko (benin)) => [
+      q(1401),
+      q(0),
+      ],
+   q(boko (democratic republic of congo)) => [
+      q(1268),
+      q(0),
+      ],
+   q(bokobaru) => [
+      q(1510),
+      q(0),
+      ],
+   q(bokoto) => [
+      q(1109),
+      q(0),
+      ],
+   q(bokyi) => [
+      q(1277),
+      q(0),
+      ],
+   q(bola) => [
+      q(1343),
+      q(0),
+      ],
+   q(bolango) => [
+      q(1281),
+      q(0),
+      ],
+   q(bole) => [
+      q(1362),
+      q(0),
+      ],
+   q(bolgarian) => [
+      q(7254),
+      q(0),
+      ],
+   q(bolgo) => [
+      q(1532),
+      q(0),
+      ],
+   q(bolia) => [
+      q(1286),
+      q(0),
+      ],
+   q(bolinao) => [
+      q(6094),
+      q(0),
+      ],
+   q(bolivian sign language) => [
+      q(1529),
+      q(0),
+      ],
+   q(bolo) => [
+      q(1298),
+      q(0),
+      ],
+   q(boloki) => [
+      q(1272),
+      q(0),
+      ],
+   q(bolon) => [
+      q(1356),
+      q(0),
+      ],
+   q(bolondo) => [
+      q(1627),
+      q(0),
+      ],
+   q(bolongan) => [
+      q(1287),
+      q(0),
+      ],
+   q(bolyu) => [
+      q(5481),
+      q(0),
+      ],
+   q(bom) => [
+      q(1308),
+      q(0),
+      ],
+   q(boma) => [
+      q(1358),
+      q(0),
+      ],
+   q(bomboli) => [
+      q(1314),
+      q(0),
+      ],
+   q(bomboma) => [
+      q(1560),
+      q(0),
+      ],
+   q(bomitaba) => [
+      q(7810),
+      q(0),
+      ],
+   q(bomu) => [
+      q(1319),
+      q(0),
+      ],
+   q(bomwali) => [
+      q(1325),
+      q(0),
+      ],
+   q(bon gula) => [
+      q(2530),
+      q(0),
+      ],
+   q(bonan) => [
+      q(5386),
+      q(0),
+      ],
+   q(bondei) => [
+      q(1370),
+      q(0),
+      ],
+   q(bondo) => [
+      q(1158),
+      q(0),
+      ],
+   q(bondoukou kulango) => [
+      q(3750),
+      q(0),
+      ],
+   q(bondum dom dogon) => [
+      q(1971),
+      q(0),
+      ],
+   q(bonerate) => [
+      q(1329),
+      q(0),
+      ],
+   q(bonerif) => [
+      q(1348),
+      q(0),
+      ],
+   q(bonggi) => [
+      q(1096),
+      q(0),
+      ],
+   q(bonggo) => [
+      q(1379),
+      q(0),
+      ],
+   q(bongili) => [
+      q(1502),
+      q(0),
+      ],
+   q(bongo) => [
+      q(1369),
+      q(0),
+      ],
+   q(bongu) => [
+      q(1393),
+      q(0),
+      ],
+   q(bonjo) => [
+      q(1361),
+      q(0),
+      ],
+   q(bonkeng) => [
+      q(1524),
+      q(0),
+      ],
+   q(bonkiman) => [
+      q(1366),
+      q(0),
+      ],
+   q(bontok) => [
+      q(1331),
+      q(0),
+      ],
+   q(bookan) => [
+      q(1330),
+      q(0),
+      ],
+   q(boon) => [
+      q(1339),
+      q(0),
+      ],
+   q(boor) => [
+      q(1523),
+      q(0),
+      ],
+   q(bora) => [
+      q(1353),
+      q(0),
+      ],
+   q(borana-arsi-guji oromo) => [
+      q(2410),
+      q(0),
+      ],
+   q(border kuna) => [
+      q(3658),
+      q(0),
+      ],
+   q(borei) => [
+      q(2396),
+      q(0),
+      ],
+   q(borgu fulfulde) => [
+      q(2374),
+      q(0),
+      ],
+   q(borna (democratic republic of congo)) => [
+      q(1589),
+      q(0),
+      ],
+   q(borna (ethiopia)) => [
+      q(1556),
+      q(0),
+      ],
+   q(boro (ethiopia)) => [
+      q(1556),
+      q(0),
+      ],
+   q(boro (ghana)) => [
+      q(7485),
+      q(0),
+      ],
+   q(borong) => [
+      q(3589),
+      q(0),
+      ],
+   q(bororo) => [
+      q(1368),
+      q(0),
+      ],
+   q(boruca) => [
+      q(1435),
+      q(0),
+      ],
+   q(boselewa) => [
+      q(1547),
+      q(0),
+      ],
+   q(bosngun) => [
+      q(1416),
+      q(0),
+      ],
+   q(bosnian) => [
+      q(0059),
+      q(0),
+      ],
+   q(bote-majhi) => [
+      q(1312),
+      q(0),
+      ],
+   q(botlikh) => [
+      q(1380),
+      q(0),
+      ],
+   q(botolan sambal) => [
+      q(5884),
+      q(0),
+      ],
+   q(bouna kulango) => [
+      q(4923),
+      q(0),
+      ],
+   q(bouyei) => [
+      q(5358),
+      q(0),
+      ],
+   q(bozaba) => [
+      q(1629),
+      q(0),
+      ],
+   q(bragat) => [
+      q(0821),
+      q(0),
+      ],
+   q(brahui) => [
+      q(1429),
+      q(0),
+      ],
+   q(braj) => [
+      q(0060),
+      q(0),
+      ],
+   q(brazilian sign language) => [
+      q(1633),
+      q(0),
+      ],
+   q(brem) => [
+      q(1509),
+      q(0),
+      ],
+   q(breri) => [
+      q(1438),
+      q(0),
+      ],
+   q(breton) => [
+      q(0061),
+      q(0),
+      ],
+   q(bribri) => [
+      q(1618),
+      q(0),
+      ],
+   q(brithenig) => [
+      q(1634),
+      q(0),
+      ],
+   q(british sign language) => [
+      q(1145),
+      q(0),
+      ],
+   q(brokkat) => [
+      q(1436),
+      q(0),
+      ],
+   q(brokpake) => [
+      q(5976),
+      q(0),
+      ],
+   q(brokskat) => [
+      q(1263),
+      q(0),
+      ],
+   q(brooke's point palawano) => [
+      q(5480),
+      q(0),
+      ],
+   q(broome pearling lugger pidgin) => [
+      q(1384),
+      q(0),
+      ],
+   q(brunei) => [
+      q(3700),
+      q(0),
+      ],
+   q(brunei bisaya) => [
+      q(1449),
+      q(0),
+      ],
+   q(bu) => [
+      q(3073),
+      q(0),
+      ],
+   q(bu-nao bunu) => [
+      q(1564),
+      q(0),
+      ],
+   q(bua) => [
+      q(1496),
+      q(0),
+      ],
+   q(bualkhaw chin) => [
+      q(1671),
+      q(0),
+      ],
+   q(buamu) => [
+      q(1373),
+      q(0),
+      ],
+   q(bube) => [
+      q(1519),
+      q(0),
+      ],
+   q(bubi) => [
+      q(1514),
+      q(0),
+      ],
+   q(bubia) => [
+      q(1062),
+      q(0),
+      ],
+   q(budeh stieng) => [
+      q(6243),
+      q(0),
+      ],
+   q(budibud) => [
+      q(1485),
+      q(0),
+      ],
+   q(budong-budong) => [
+      q(1113),
+      q(0),
+      ],
+   q(budu) => [
+      q(1512),
+      q(0),
+      ],
+   q(budukh) => [
+      q(1100),
+      q(0),
+      ],
+   q(buduma) => [
+      q(1102),
+      q(0),
+      ],
+   q(budza) => [
+      q(1232),
+      q(0),
+      ],
+   q(bugan) => [
+      q(1046),
+      q(0),
+      ],
+   q(bugawac) => [
+      q(1504),
+      q(0),
+      ],
+   q(bughotu) => [
+      q(1180),
+      q(0),
+      ],
+   q(buginese) => [
+      q(0064),
+      q(0),
+      ],
+   q(buglere) => [
+      q(5857),
+      q(0),
+      ],
+   q(bugun) => [
+      q(1168),
+      q(0),
+      ],
+   q(buhi'non bikol) => [
+      q(6824),
+      q(0),
+      ],
+   q(buhid) => [
+      q(1273),
+      q(0),
+      ],
+   q(buhutu) => [
+      q(1574),
+      q(0),
+      ],
+   q(bukar-sadung bidayuh) => [
+      q(5926),
+      q(0),
+      ],
+   q(bukat) => [
+      q(1528),
+      q(0),
+      ],
+   q(bukharic) => [
+      q(1194),
+      q(0),
+      ],
+   q(bukit malay) => [
+      q(1536),
+      q(0),
+      ],
+   q(bukitan) => [
+      q(1266),
+      q(0),
+      ],
+   q(bukiyip) => [
+      q(0839),
+      q(0),
+      ],
+   q(buksa) => [
+      q(6518),
+      q(0),
+      ],
+   q(bukusu) => [
+      q(1577),
+      q(0),
+      ],
+   q(bukwen) => [
+      q(1517),
+      q(0),
+      ],
+   q(bulgarian) => [
+      q(0065),
+      q(0),
+      ],
+   q(bulgarian sign language) => [
+      q(1411),
+      q(0),
+      ],
+   q(bulgebi) => [
+      q(1318),
+      q(0),
+      ],
+   q(buli (ghana)) => [
+      q(1562),
+      q(0),
+      ],
+   q(buli (indonesia)) => [
+      q(1631),
+      q(0),
+      ],
+   q(bullom so) => [
+      q(1516),
+      q(0),
+      ],
+   q(bulo stieng) => [
+      q(6232),
+      q(0),
+      ],
+   q(bulu (cameroon)) => [
+      q(1505),
+      q(0),
+      ],
+   q(bulu (papua new guinea)) => [
+      q(1242),
+      q(0),
+      ],
+   q(bum) => [
+      q(1324),
+      q(0),
+      ],
+   q(bumaji) => [
+      q(1605),
+      q(0),
+      ],
+   q(bumbita arapesh) => [
+      q(0829),
+      q(0),
+      ],
+   q(bumthangkha) => [
+      q(3379),
+      q(0),
+      ],
+   q(bun) => [
+      q(1513),
+      q(0),
+      ],
+   q(buna) => [
+      q(1531),
+      q(0),
+      ],
+   q(bunaba) => [
+      q(1075),
+      q(0),
+      ],
+   q(bunak) => [
+      q(1150),
+      q(0),
+      ],
+   q(bunama) => [
+      q(1093),
+      q(0),
+      ],
+   q(bundeli) => [
+      q(1346),
+      q(0),
+      ],
+   q(bung) => [
+      q(1402),
+      q(0),
+      ],
+   q(bungain) => [
+      q(1511),
+      q(0),
+      ],
+   q(bungku) => [
+      q(1278),
+      q(0),
+      ],
+   q(bungu) => [
+      q(7211),
+      q(0),
+      ],
+   q(bunoge dogon) => [
+      q(2004),
+      q(0),
+      ],
+   q(bunun) => [
+      q(1341),
+      q(0),
+      ],
+   q(buol) => [
+      q(1283),
+      q(0),
+      ],
+   q(bura-pabir) => [
+      q(1559),
+      q(0),
+      ],
+   q(burak) => [
+      q(1608),
+      q(0),
+      ],
+   q(buraka) => [
+      q(1259),
+      q(0),
+      ],
+   q(burarra) => [
+      q(1534),
+      q(0),
+      ],
+   q(burate) => [
+      q(1479),
+      q(0),
+      ],
+   q(burduna) => [
+      q(1580),
+      q(0),
+      ],
+   q(bure) => [
+      q(1525),
+      q(0),
+      ],
+   q(buriat) => [
+      q(0063),
+      q(0),
+      ],
+   q(burji) => [
+      q(1239),
+      q(0),
+      ],
+   q(burmbar) => [
+      q(7012),
+      q(0),
+      ],
+   q(burmese) => [
+      q(0066),
+      q(0),
+      ],
+   q(burmeso) => [
+      q(1635),
+      q(0),
+      ],
+   q(buru (indonesia)) => [
+      q(4268),
+      q(0),
+      ],
+   q(buru (nigeria)) => [
+      q(1420),
+      q(0),
+      ],
+   q(burui) => [
+      q(1446),
+      q(0),
+      ],
+   q(burumakok) => [
+      q(0707),
+      q(0),
+      ],
+   q(burun) => [
+      q(1098),
+      q(0),
+      ],
+   q(burunge) => [
+      q(1108),
+      q(0),
+      ],
+   q(burushaski) => [
+      q(1457),
+      q(0),
+      ],
+   q(burusu) => [
+      q(1415),
+      q(0),
+      ],
+   q(buruwai) => [
+      q(0894),
+      q(0),
+      ],
+   q(busa) => [
+      q(1413),
+      q(0),
+      ],
+   q(busam) => [
+      q(1585),
+      q(0),
+      ],
+   q(busami) => [
+      q(1459),
+      q(0),
+      ],
+   q(busang kayan) => [
+      q(1143),
+      q(0),
+      ],
+   q(bushi) => [
+      q(1497),
+      q(0),
+      ],
+   q(bushoong) => [
+      q(1500),
+      q(0),
+      ],
+   q(businenge tongo) => [
+      q(2064),
+      q(0),
+      ],
+   q(buso) => [
+      q(1461),
+      q(0),
+      ],
+   q(busoa) => [
+      q(1508),
+      q(0),
+      ],
+   q(bussa) => [
+      q(2126),
+      q(0),
+      ],
+   q(busuu) => [
+      q(1249),
+      q(0),
+      ],
+   q(butbut kalinga) => [
+      q(3723),
+      q(0),
+      ],
+   q(butmas-tur) => [
+      q(1345),
+      q(0),
+      ],
+   q(butuanon) => [
+      q(1492),
+      q(0),
+      ],
+   q(buwal) => [
+      q(1203),
+      q(0),
+      ],
+   q(buxinhua) => [
+      q(1171),
+      q(0),
+      ],
+   q(buya) => [
+      q(1613),
+      q(0),
+      ],
+   q(buyu) => [
+      q(1599),
+      q(0),
+      ],
+   q(buyuan jinuo) => [
+      q(3085),
+      q(0),
+      ],
+   q(bwa) => [
+      q(1563),
+      q(0),
+      ],
+   q(bwaidoka) => [
+      q(1545),
+      q(0),
+      ],
+   q(bwanabwana) => [
+      q(6708),
+      q(0),
+      ],
+   q(bwatoo) => [
+      q(1542),
+      q(0),
+      ],
+   q(bwe karen) => [
+      q(1546),
+      q(0),
+      ],
+   q(bwela) => [
+      q(1553),
+      q(0),
+      ],
+   q(bwile) => [
+      q(1544),
+      q(0),
+      ],
+   q(bwisi) => [
+      q(1566),
+      q(0),
+      ],
+   q(byangsi) => [
+      q(1120),
+      q(0),
+      ],
+   q(byep) => [
+      q(4328),
+      q(0),
+      ],
+   q(c'lela) => [
+      q(2135),
+      q(0),
+      ],
+   q(caac) => [
+      q(4524),
+      q(0),
+      ],
+   q(cabecar) => [
+      q(1752),
+      q(0),
+      ],
+   q(cabiyari) => [
+      q(1662),
+      q(0),
+      ],
+   q(cacaloxtepec mixtec) => [
+      q(4292),
+      q(0),
+      ],
+   q(cacaopera) => [
+      q(1692),
+      q(0),
+      ],
+   q(cacgia roglai) => [
+      q(5811),
+      q(0),
+      ],
+   q(cacua) => [
+      q(1678),
+      q(0),
+      ],
+   q(caddo) => [
+      q(0068),
+      q(0),
+      ],
+   q(caddoan languages) => [
+      q(0498),
+      q(0),
+      ],
+   q(cafundo creole) => [
+      q(1683),
+      q(0),
+      ],
+   q(cagua) => [
+      q(1667),
+      q(0),
+      ],
+   q(cahuarano) => [
+      q(1647),
+      q(0),
+      ],
+   q(cahuilla) => [
+      q(1725),
+      q(0),
+      ],
+   q(cajamarca quechua) => [
+      q(5675),
+      q(0),
+      ],
+   q(cajatambo north lima quechua) => [
+      q(5680),
+      q(0),
+      ],
+   q(cajonos zapotec) => [
+      q(7719),
+      q(0),
+      ],
+   q(cajun french) => [
+      q(2362),
+      q(0),
+      ],
+   q(caka) => [
+      q(1766),
+      q(0),
+      ],
+   q(cakchiquel) => [
+      q(1649),
+      q(0),
+      ],
+   q(cakchiquel-quiche mixed language) => [
+      q(1768),
+      q(0),
+      ],
+   q(cakfem-mushere) => [
+      q(1767),
+      q(0),
+      ],
+   q(calamian tagbanwa) => [
+      q(6358),
+      q(0),
+      ],
+   q(calderon highland quichua) => [
+      q(5656),
+      q(0),
+      ],
+   q(callawalla) => [
+      q(1658),
+      q(0),
+      ],
+   q(calo) => [
+      q(5793),
+      q(0),
+      ],
+   q(caluyanun) => [
+      q(1781),
+      q(0),
+      ],
+   q(cameroon mambila) => [
+      q(4147),
+      q(0),
+      ],
+   q(cameroon pidgin) => [
+      q(7073),
+      q(0),
+      ],
+   q(camling) => [
+      q(5711),
+      q(0),
+      ],
+   q(campalagian) => [
+      q(1788),
+      q(0),
+      ],
+   q(campidanese sardinian) => [
+      q(6191),
+      q(0),
+      ],
+   q(camsa) => [
+      q(3168),
+      q(0),
+      ],
+   q(camtho) => [
+      q(1794),
+      q(0),
+      ],
+   q(camunic) => [
+      q(7259),
+      q(0),
+      ],
+   q(canar highland quichua) => [
+      q(5703),
+      q(0),
+      ],
+   q(candoshi-shapra) => [
+      q(1677),
+      q(0),
+      ],
+   q(canela) => [
+      q(5720),
+      q(0),
+      ],
+   q(canichana) => [
+      q(1661),
+      q(0),
+      ],
+   q(cao lan) => [
+      q(4346),
+      q(0),
+      ],
+   q(cao miao) => [
+      q(1826),
+      q(0),
+      ],
+   q(capanahua) => [
+      q(3158),
+      q(0),
+      ],
+   q(capiznon) => [
+      q(1837),
+      q(0),
+      ],
+   q(cappadocian greek) => [
+      q(1834),
+      q(0),
+      ],
+   q(caquinte) => [
+      q(1824),
+      q(0),
+      ],
+   q(car nicobarese) => [
+      q(1655),
+      q(0),
+      ],
+   q(cara) => [
+      q(1713),
+      q(0),
+      ],
+   q(carabayo) => [
+      q(1680),
+      q(0),
+      ],
+   q(caramanta) => [
+      q(1847),
+      q(0),
+      ],
+   q(carapana) => [
+      q(1663),
+      q(0),
+      ],
+   q(carian) => [
+      q(7267),
+      q(0),
+      ],
+   q(caribbean hindustani) => [
+      q(2793),
+      q(0),
+      ],
+   q(caribbean javanese) => [
+      q(3143),
+      q(0),
+      ],
+   q(carijona) => [
+      q(1664),
+      q(0),
+      ],
+   q(carolina algonquian) => [
+      q(1857),
+      q(0),
+      ],
+   q(carolinian) => [
+      q(1650),
+      q(0),
+      ],
+   q(carpathian romani) => [
+      q(5780),
+      q(0),
+      ],
+   q(carrier) => [
+      q(1862),
+      q(0),
+      ],
+   q(cashibo-cacataibo) => [
+      q(1674),
+      q(0),
+      ],
+   q(cashinahua) => [
+      q(1675),
+      q(0),
+      ],
+   q(casiguran dumagat agta) => [
+      q(2005),
+      q(0),
+      ],
+   q(castilian) => [
+      q(0401),
+      q(0),
+      ],
+   q(casuarina coast asmat) => [
+      q(0888),
+      q(0),
+      ],
+   q(catalan) => [
+      q(0071),
+      q(0),
+      ],
+   q(catalan sign language) => [
+      q(1866),
+      q(0),
+      ],
+   q(catawba) => [
+      q(1720),
+      q(0),
+      ],
+   q(cauca) => [
+      q(1681),
+      q(0),
+      ],
+   q(caucasian languages) => [
+      q(0072),
+      q(0),
+      ],
+   q(cavinena) => [
+      q(1657),
+      q(0),
+      ],
+   q(cayubaba) => [
+      q(1929),
+      q(0),
+      ],
+   q(cayuga) => [
+      q(1660),
+      q(0),
+      ],
+   q(cayuse) => [
+      q(7272),
+      q(0),
+      ],
+   q(cebaara senoufo) => [
+      q(5939),
+      q(0),
+      ],
+   q(cebuano) => [
+      q(0073),
+      q(0),
+      ],
+   q(celtiberian) => [
+      q(7260),
+      q(0),
+      ],
+   q(celtic languages) => [
+      q(0074),
+      q(0),
+      ],
+   q(cemuhi) => [
+      q(1651),
+      q(0),
+      ],
+   q(cen) => [
+      q(1710),
+      q(0),
+      ],
+   q(central american indian languages) => [
+      q(0069),
+      q(0),
+      ],
+   q(central asmat) => [
+      q(1804),
+      q(0),
+      ],
+   q(central atlas tamazight) => [
+      q(6815),
+      q(0),
+      ],
+   q(central awyu) => [
+      q(0982),
+      q(0),
+      ],
+   q(central aymara) => [
+      q(1007),
+      q(0),
+      ],
+   q(central bai) => [
+      q(1065),
+      q(0),
+      ],
+   q(central berawan) => [
+      q(7740),
+      q(0),
+      ],
+   q(central bikol) => [
+      q(1076),
+      q(0),
+      ],
+   q(central bontok) => [
+      q(3801),
+      q(0),
+      ],
+   q(central cagayan agta) => [
+      q(0672),
+      q(0),
+      ],
+   q(central dusun) => [
+      q(2160),
+      q(0),
+      ],
+   q(central grebo) => [
+      q(2612),
+      q(0),
+      ],
+   q(central hongshuihe zhuang) => [
+      q(7745),
+      q(0),
+      ],
+   q(central huasteca nahuatl) => [
+      q(4751),
+      q(0),
+      ],
+   q(central huishui hmong) => [
+      q(2764),
+      q(0),
+      ],
+   q(central huishui miao) => [
+      q(2764),
+      q(0),
+      ],
+   q(central kanuri) => [
+      q(3459),
+      q(0),
+      ],
+   q(central khmer) => [
+      q(0222),
+      q(0),
+      ],
+   q(central kurdish) => [
+      q(1756),
+      q(0),
+      ],
+   q(central lalo) => [
+      q(7707),
+      q(0),
+      ],
+   q(central maewo) => [
+      q(4616),
+      q(0),
+      ],
+   q(central malay) => [
+      q(5587),
+      q(0),
+      ],
+   q(central malayo-polynesian languages) => [
+      q(0519),
+      q(0),
+      ],
+   q(central masela) => [
+      q(4652),
+      q(0),
+      ],
+   q(central mashan hmong) => [
+      q(2774),
+      q(0),
+      ],
+   q(central mashan miao) => [
+      q(2774),
+      q(0),
+      ],
+   q(central mazahua) => [
+      q(4101),
+      q(0),
+      ],
+   q(central melanau) => [
+      q(4187),
+      q(0),
+      ],
+   q(central mnong) => [
+      q(1791),
+      q(0),
+      ],
+   q(central nahuatl) => [
+      q(4853),
+      q(0),
+      ],
+   q(central nicobarese) => [
+      q(4745),
+      q(0),
+      ],
+   q(central ojibwa) => [
+      q(5195),
+      q(0),
+      ],
+   q(central okinawan) => [
+      q(5855),
+      q(0),
+      ],
+   q(central palawano) => [
+      q(5463),
+      q(0),
+      ],
+   q(central pame) => [
+      q(5351),
+      q(0),
+      ],
+   q(central pashto) => [
+      q(5599),
+      q(0),
+      ],
+   q(central pomo) => [
+      q(5537),
+      q(0),
+      ],
+   q(central puebla nahuatl) => [
+      q(4764),
+      q(0),
+      ],
+   q(central sama) => [
+      q(6095),
+      q(0),
+      ],
+   q(central siberian yupik) => [
+      q(2293),
+      q(0),
+      ],
+   q(central sierra miwok) => [
+      q(1875),
+      q(0),
+      ],
+   q(central subanen) => [
+      q(6305),
+      q(0),
+      ],
+   q(central sudanic languages) => [
+      q(0499),
+      q(0),
+      ],
+   q(central tagbanwa) => [
+      q(6459),
+      q(0),
+      ],
+   q(central tarahumara) => [
+      q(6340),
+      q(0),
+      ],
+   q(central tunebo) => [
+      q(6734),
+      q(0),
+      ],
+   q(central yupik) => [
+      q(2294),
+      q(0),
+      ],
+   q(central-eastern niger fulfulde) => [
+      q(2381),
+      q(0),
+      ],
+   q(centuum) => [
+      q(1711),
+      q(0),
+      ],
+   q(cerma) => [
+      q(1785),
+      q(0),
+      ],
+   q(chachapoyas quechua) => [
+      q(5661),
+      q(0),
+      ],
+   q(chachi) => [
+      q(1668),
+      q(0),
+      ],
+   q(chacobo) => [
+      q(1653),
+      q(0),
+      ],
+   q(chadian arabic) => [
+      q(6000),
+      q(0),
+      ],
+   q(chadian sign language) => [
+      q(1704),
+      q(0),
+      ],
+   q(chadic languages) => [
+      q(0497),
+      q(0),
+      ],
+   q(chadong) => [
+      q(1705),
+      q(0),
+      ],
+   q(chagatai) => [
+      q(0078),
+      q(0),
+      ],
+   q(chaima) => [
+      q(1743),
+      q(0),
+      ],
+   q(chak) => [
+      q(1757),
+      q(0),
+      ],
+   q(chakali) => [
+      q(1774),
+      q(0),
+      ],
+   q(chakma) => [
+      q(1691),
+      q(0),
+      ],
+   q(chala) => [
+      q(1777),
+      q(0),
+      ],
+   q(chaldean neo-aramaic) => [
+      q(1771),
+      q(0),
+      ],
+   q(chalikha) => [
+      q(6448),
+      q(0),
+      ],
+   q(chamacoco) => [
+      q(1708),
+      q(0),
+      ],
+   q(chamalal) => [
+      q(1747),
+      q(0),
+      ],
+   q(chamari) => [
+      q(1696),
+      q(0),
+      ],
+   q(chambeali) => [
+      q(1697),
+      q(0),
+      ],
+   q(chambri) => [
+      q(1652),
+      q(0),
+      ],
+   q(chamic languages) => [
+      q(0089),
+      q(0),
+      ],
+   q(chamicuro) => [
+      q(1682),
+      q(0),
+      ],
+   q(chamorro) => [
+      q(0075),
+      q(0),
+      ],
+   q(chane) => [
+      q(1648),
+      q(0),
+      ],
+   q(chang naga) => [
+      q(4723),
+      q(0),
+      ],
+   q(changriwa) => [
+      q(1716),
+      q(0),
+      ],
+   q(changthang) => [
+      q(1795),
+      q(0),
+      ],
+   q(chantyal) => [
+      q(1729),
+      q(0),
+      ],
+   q(chara) => [
+      q(1843),
+      q(0),
+      ],
+   q(chaudangsi) => [
+      q(1701),
+      q(0),
+      ],
+   q(chaura) => [
+      q(1860),
+      q(0),
+      ],
+   q(chavacano) => [
+      q(1670),
+      q(0),
+      ],
+   q(chayahuita) => [
+      q(1676),
+      q(0),
+      ],
+   q(chayuco mixtec) => [
+      q(4281),
+      q(0),
+      ],
+   q(chazumba mixtec) => [
+      q(7441),
+      q(0),
+      ],
+   q(che) => [
+      q(5841),
+      q(0),
+      ],
+   q(chechen) => [
+      q(0077),
+      q(0),
+      ],
+   q(cheke holo) => [
+      q(4496),
+      q(0),
+      ],
+   q(chemakum) => [
+      q(7262),
+      q(0),
+      ],
+   q(chenapian) => [
+      q(1750),
+      q(0),
+      ],
+   q(chenchu) => [
+      q(1694),
+      q(0),
+      ],
+   q(chenoua) => [
+      q(1806),
+      q(0),
+      ],
+   q(chepang) => [
+      q(1700),
+      q(0),
+      ],
+   q(chepya) => [
+      q(7534),
+      q(0),
+      ],
+   q(cheq wong) => [
+      q(1926),
+      q(0),
+      ],
+   q(cherepon) => [
+      q(1836),
+      q(0),
+      ],
+   q(cherokee) => [
+      q(0085),
+      q(0),
+      ],
+   q(chesu) => [
+      q(7531),
+      q(0),
+      ],
+   q(chetco) => [
+      q(1887),
+      q(0),
+      ],
+   q(chewa) => [
+      q(0321),
+      q(0),
+      ],
+   q(chewong) => [
+      q(1926),
+      q(0),
+      ],
+   q(cheyenne) => [
+      q(0088),
+      q(0),
+      ],
+   q(chhattisgarhi) => [
+      q(2787),
+      q(0),
+      ],
+   q(chhintange) => [
+      q(1894),
+      q(0),
+      ],
+   q(chhulung) => [
+      q(1914),
+      q(0),
+      ],
+   q(chiangmai sign language) => [
+      q(1867),
+      q(0),
+      ],
+   q(chiapanec) => [
+      q(1740),
+      q(0),
+      ],
+   q(chibcha) => [
+      q(0076),
+      q(0),
+      ],
+   q(chibchan languages) => [
+      q(0494),
+      q(0),
+      ],
+   q(chicahuaxtla triqui) => [
+      q(6673),
+      q(0),
+      ],
+   q(chichewa) => [
+      q(0321),
+      q(0),
+      ],
+   q(chichicapan zapotec) => [
+      q(7846),
+      q(0),
+      ],
+   q(chichimeca-jonaz) => [
+      q(5387),
+      q(0),
+      ],
+   q(chichonyi-chidzihana-chikauma) => [
+      q(1816),
+      q(0),
+      ],
+   q(chickasaw) => [
+      q(1733),
+      q(0),
+      ],
+   q(chicomuceltec) => [
+      q(1810),
+      q(0),
+      ],
+   q(chidigo) => [
+      q(2038),
+      q(0),
+      ],
+   q(chiduruma) => [
+      q(2171),
+      q(0),
+      ],
+   q(chiga) => [
+      q(1718),
+      q(0),
+      ],
+   q(chigmecatitlan mixtec) => [
+      q(4282),
+      q(0),
+      ],
+   q(chilcotin) => [
+      q(1770),
+      q(0),
+      ],
+   q(chilean quechua) => [
+      q(1842),
+      q(0),
+      ],
+   q(chilean sign language) => [
+      q(1870),
+      q(0),
+      ],
+   q(chilisso) => [
+      q(1773),
+      q(0),
+      ],
+   q(chiltepec chinantec) => [
+      q(1865),
+      q(0),
+      ],
+   q(chimakum) => [
+      q(7262),
+      q(0),
+      ],
+   q(chimalapa zoque) => [
+      q(7819),
+      q(0),
+      ],
+   q(chimariko) => [
+      q(1734),
+      q(0),
+      ],
+   q(chimborazo highland quichua) => [
+      q(5658),
+      q(0),
+      ],
+   q(chimila) => [
+      q(1666),
+      q(0),
+      ],
+   q(china buriat) => [
+      q(1586),
+      q(0),
+      ],
+   q(chinali) => [
+      q(1736),
+      q(0),
+      ],
+   q(chinbon chin) => [
+      q(1796),
+      q(0),
+      ],
+   q(chincha quechua) => [
+      q(5696),
+      q(0),
+      ],
+   q(chinese) => [
+      q(0079),
+      q(0),
+      ],
+   q(chinese (family)) => [
+      q(0533),
+      q(0),
+      ],
+   q(chinese pidgin english) => [
+      q(1835),
+      q(0),
+      ],
+   q(chinese sign language) => [
+      q(1874),
+      q(0),
+      ],
+   q(chinook) => [
+      q(1723),
+      q(0),
+      ],
+   q(chinook jargon) => [
+      q(0082),
+      q(0),
+      ],
+   q(chipaya) => [
+      q(1654),
+      q(0),
+      ],
+   q(chipewyan) => [
+      q(0084),
+      q(0),
+      ],
+   q(chipiajes) => [
+      q(1665),
+      q(0),
+      ],
+   q(chippewa) => [
+      q(1742),
+      q(0),
+      ],
+   q(chiquian ancash quechua) => [
+      q(5695),
+      q(0),
+      ],
+   q(chiquihuitlan mazatec) => [
+      q(4095),
+      q(0),
+      ],
+   q(chiquitano) => [
+      q(1659),
+      q(0),
+      ],
+   q(chiripa) => [
+      q(4845),
+      q(0),
+      ],
+   q(chiru) => [
+      q(1695),
+      q(0),
+      ],
+   q(chitimacha) => [
+      q(1893),
+      q(0),
+      ],
+   q(chitkuli kinnauri) => [
+      q(1737),
+      q(0),
+      ],
+   q(chittagonian) => [
+      q(1890),
+      q(0),
+      ],
+   q(chitwania tharu) => [
+      q(6468),
+      q(0),
+      ],
+   q(choapan zapotec) => [
+      q(7827),
+      q(0),
+      ],
+   q(chocangacakha) => [
+      q(1719),
+      q(0),
+      ],
+   q(chochotec) => [
+      q(1830),
+      q(0),
+      ],
+   q(choctaw) => [
+      q(0083),
+      q(0),
+      ],
+   q(chodri) => [
+      q(1698),
+      q(0),
+      ],
+   q(chokri naga) => [
+      q(5034),
+      q(0),
+      ],
+   q(chokwe) => [
+      q(1748),
+      q(0),
+      ],
+   q(chol) => [
+      q(1899),
+      q(0),
+      ],
+   q(cholon) => [
+      q(1727),
+      q(0),
+      ],
+   q(chong) => [
+      q(1815),
+      q(0),
+      ],
+   q(choni) => [
+      q(1693),
+      q(0),
+      ],
+   q(chonyi-dzihana-kauma) => [
+      q(1816),
+      q(0),
+      ],
+   q(chopi) => [
+      q(1684),
+      q(0),
+      ],
+   q(chorasmian) => [
+      q(7266),
+      q(0),
+      ],
+   q(chorti) => [
+      q(1641),
+      q(0),
+      ],
+   q(chothe naga) => [
+      q(4762),
+      q(0),
+      ],
+   q(chrau) => [
+      q(1861),
+      q(0),
+      ],
+   q(chru) => [
+      q(1745),
+      q(0),
+      ],
+   q(chuang) => [
+      q(0481),
+      q(0),
+      ],
+   q(chuanqiandian cluster miao) => [
+      q(1841),
+      q(0),
+      ],
+   q(chuave) => [
+      q(1754),
+      q(0),
+      ],
+   q(chug) => [
+      q(1920),
+      q(0),
+      ],
+   q(chuj) => [
+      q(1643),
+      q(0),
+      ],
+   q(chuka) => [
+      q(1905),
+      q(0),
+      ],
+   q(chukot) => [
+      q(1763),
+      q(0),
+      ],
+   q(chukwa) => [
+      q(1918),
+      q(0),
+      ],
+   q(chulym) => [
+      q(1782),
+      q(0),
+      ],
+   q(chumburung) => [
+      q(4763),
+      q(0),
+      ],
+   q(churahi) => [
+      q(1699),
+      q(0),
+      ],
+   q(church slavic) => [
+      q(0086),
+      q(0),
+      ],
+   q(church slavonic) => [
+      q(0086),
+      q(0),
+      ],
+   q(chut) => [
+      q(5899),
+      q(0),
+      ],
+   q(chuukese) => [
+      q(0080),
+      q(0),
+      ],
+   q(chuvantsy) => [
+      q(7270),
+      q(0),
+      ],
+   q(chuvash) => [
+      q(0087),
+      q(0),
+      ],
+   q(chuwabu) => [
+      q(1728),
+      q(0),
+      ],
+   q(ci gbe) => [
+      q(1732),
+      q(0),
+      ],
+   q(cia-cia) => [
+      q(1731),
+      q(0),
+      ],
+   q(cibak) => [
+      q(1758),
+      q(0),
+      ],
+   q(cicipu) => [
+      q(0970),
+      q(0),
+      ],
+   q(cimbrian) => [
+      q(1738),
+      q(0),
+      ],
+   q(cinda-regi-tiyal) => [
+      q(1703),
+      q(0),
+      ],
+   q(cineni) => [
+      q(1735),
+      q(0),
+      ],
+   q(cinta larga) => [
+      q(1739),
+      q(0),
+      ],
+   q(cisalpine gaulish) => [
+      q(7261),
+      q(0),
+      ],
+   q(cishingini) => [
+      q(0892),
+      q(0),
+      ],
+   q(citak) => [
+      q(6794),
+      q(0),
+      ],
+   q(ciwogai) => [
+      q(6446),
+      q(0),
+      ],
+   q(clallam) => [
+      q(1778),
+      q(0),
+      ],
+   q(classical armenian) => [
+      q(7263),
+      q(0),
+      ],
+   q(classical mandaic) => [
+      q(4674),
+      q(0),
+      ],
+   q(classical mongolian) => [
+      q(1786),
+      q(0),
+      ],
+   q(classical nahuatl) => [
+      q(4752),
+      q(0),
+      ],
+   q(classical nepal bhasa) => [
+      q(0320),
+      q(0),
+      ],
+   q(classical newari) => [
+      q(0320),
+      q(0),
+      ],
+   q(classical quechua) => [
+      q(5690),
+      q(0),
+      ],
+   q(classical syriac) => [
+      q(0414),
+      q(0),
+      ],
+   q(classical tibetan) => [
+      q(7268),
+      q(0),
+      ],
+   q(coahuilteco) => [
+      q(7271),
+      q(0),
+      ],
+   q(coast miwok) => [
+      q(1872),
+      q(0),
+      ],
+   q(coastal kadazan) => [
+      q(3756),
+      q(0),
+      ],
+   q(coastal konjo) => [
+      q(3358),
+      q(0),
+      ],
+   q(coatecas altas zapotec) => [
+      q(7744),
+      q(0),
+      ],
+   q(coatepec nahuatl) => [
+      q(4720),
+      q(0),
+      ],
+   q(coatlan mixe) => [
+      q(4141),
+      q(0),
+      ],
+   q(coatlan zapotec) => [
+      q(7843),
+      q(0),
+      ],
+   q(coatzospan mixtec) => [
+      q(4296),
+      q(0),
+      ],
+   q(cocama-cocamilla) => [
+      q(1812),
+      q(0),
+      ],
+   q(cochimi) => [
+      q(1817),
+      q(0),
+      ],
+   q(cocopa) => [
+      q(1811),
+      q(0),
+      ],
+   q(cocos islands malay) => [
+      q(1809),
+      q(0),
+      ],
+   q(coeur d'alene) => [
+      q(1846),
+      q(0),
+      ],
+   q(cofan) => [
+      q(1821),
+      q(0),
+      ],
+   q(cogui) => [
+      q(3487),
+      q(0),
+      ],
+   q(col) => [
+      q(3908),
+      q(0),
+      ],
+   q(colombian sign language) => [
+      q(1876),
+      q(0),
+      ],
+   q(colonia tovar german) => [
+      q(2441),
+      q(0),
+      ],
+   q(colorado) => [
+      q(1814),
+      q(0),
+      ],
+   q(columbia-wenatchi) => [
+      q(1819),
+      q(0),
+      ],
+   q(comaltepec chinantec) => [
+      q(1690),
+      q(0),
+      ],
+   q(comanche) => [
+      q(1820),
+      q(0),
+      ],
+   q(comecrudo) => [
+      q(7264),
+      q(0),
+      ],
+   q(como karim) => [
+      q(1714),
+      q(0),
+      ],
+   q(comox) => [
+      q(1822),
+      q(0),
+      ],
+   q(con) => [
+      q(1803),
+      q(0),
+      ],
+   q(congo swahili) => [
+      q(6270),
+      q(0),
+      ],
+   q(cook islands maori) => [
+      q(0356),
+      q(0),
+      ],
+   q(coong) => [
+      q(1797),
+      q(0),
+      ],
+   q(coos) => [
+      q(1885),
+      q(0),
+      ],
+   q(copainala zoque) => [
+      q(7818),
+      q(0),
+      ],
+   q(copala triqui) => [
+      q(6658),
+      q(0),
+      ],
+   q(coptic) => [
+      q(0090),
+      q(0),
+      ],
+   q(coquille) => [
+      q(1823),
+      q(0),
+      ],
+   q(cori) => [
+      q(1863),
+      q(0),
+      ],
+   q(cornish) => [
+      q(0091),
+      q(0),
+      ],
+   q(corongo ancash quechua) => [
+      q(5689),
+      q(0),
+      ],
+   q(corsican) => [
+      q(0092),
+      q(0),
+      ],
+   q(costa rican sign language) => [
+      q(1879),
+      q(0),
+      ],
+   q(cotabato manobo) => [
+      q(4533),
+      q(0),
+      ],
+   q(cotoname) => [
+      q(7265),
+      q(0),
+      ],
+   q(cowlitz) => [
+      q(1827),
+      q(0),
+      ],
+   q(coxima) => [
+      q(3499),
+      q(0),
+      ],
+   q(coyaima) => [
+      q(1829),
+      q(0),
+      ],
+   q(coyotepec popoloca) => [
+      q(5342),
+      q(0),
+      ],
+   q(coyutla totonac) => [
+      q(6604),
+      q(0),
+      ],
+   q(cree) => [
+      q(0096),
+      q(0),
+      ],
+   q(creek) => [
+      q(0293),
+      q(0),
+      ],
+   q(creoles and pidgins) => [
+      q(0098),
+      q(1),
+      ],
+   q(creoles and pidgins ) => [
+      q(0098),
+      q(0),
+      ],
+   q(creoles and pidgins, english based) => [
+      q(0093),
+      q(0),
+      ],
+   q(creoles and pidgins, english-based) => [
+      q(0093),
+      q(1),
+      ],
+   q(creoles and pidgins, french-based) => [
+      q(0094),
+      q(1),
+      ],
+   q(creoles and pidgins, french-based ) => [
+      q(0094),
+      q(0),
+      ],
+   q(creoles and pidgins, portuguese-based) => [
+      q(0095),
+      q(1),
+      ],
+   q(creoles and pidgins, portuguese-based ) => [
+      q(0095),
+      q(0),
+      ],
+   q(crimean tatar) => [
+      q(0097),
+      q(0),
+      ],
+   q(crimean turkish) => [
+      q(0097),
+      q(0),
+      ],
+   q(croatia sign language) => [
+      q(1878),
+      q(0),
+      ],
+   q(croatian) => [
+      q(0181),
+      q(0),
+      ],
+   q(cross river mbembe) => [
+      q(4213),
+      q(0),
+      ],
+   q(crow) => [
+      q(1855),
+      q(0),
+      ],
+   q(cruzeno) => [
+      q(1864),
+      q(0),
+      ],
+   q(cua) => [
+      q(1901),
+      q(0),
+      ],
+   q(cuba sign language) => [
+      q(1869),
+      q(0),
+      ],
+   q(cubeo) => [
+      q(1902),
+      q(0),
+      ],
+   q(cuiba) => [
+      q(1906),
+      q(0),
+      ],
+   q(culina) => [
+      q(1909),
+      q(0),
+      ],
+   q(cumanagoto) => [
+      q(1911),
+      q(0),
+      ],
+   q(cumbric) => [
+      q(7258),
+      q(0),
+      ],
+   q(cumeral) => [
+      q(1910),
+      q(0),
+      ],
+   q(cun) => [
+      q(1913),
+      q(0),
+      ],
+   q(cuneiform luwian) => [
+      q(7346),
+      q(0),
+      ],
+   q(cung) => [
+      q(1904),
+      q(0),
+      ],
+   q(cupeno) => [
+      q(1912),
+      q(0),
+      ],
+   q(curonian) => [
+      q(7269),
+      q(0),
+      ],
+   q(curripaco) => [
+      q(3504),
+      q(0),
+      ],
+   q(cusco quechua) => [
+      q(5673),
+      q(0),
+      ],
+   q(cushitic languages) => [
+      q(0100),
+      q(0),
+      ],
+   q(cutchi-swahili) => [
+      q(1688),
+      q(0),
+      ],
+   q(cuvok) => [
+      q(1917),
+      q(0),
+      ],
+   q(cuyamecalco mixtec) => [
+      q(7457),
+      q(0),
+      ],
+   q(cuyonon) => [
+      q(1930),
+      q(0),
+      ],
+   q(cwi bwamu) => [
+      q(1565),
+      q(0),
+      ],
+   q(cypriot arabic) => [
+      q(0603),
+      q(0),
+      ],
+   q(czech) => [
+      q(0101),
+      q(0),
+      ],
+   q(czech sign language) => [
+      q(1868),
+      q(0),
+      ],
+   q(da'a kaili) => [
+      q(3753),
+      q(0),
+      ],
+   q(da-hua miao) => [
+      q(2765),
+      q(0),
+      ],
+   q(daai chin) => [
+      q(1947),
+      q(0),
+      ],
+   q(daantanai') => [
+      q(3980),
+      q(0),
+      ],
+   q(daasanach) => [
+      q(2146),
+      q(0),
+      ],
+   q(daba) => [
+      q(1968),
+      q(0),
+      ],
+   q(dabarre) => [
+      q(1969),
+      q(0),
+      ],
+   q(dabe) => [
+      q(1958),
+      q(0),
+      ],
+   q(dacian) => [
+      q(7273),
+      q(0),
+      ],
+   q(dadi dadi) => [
+      q(1977),
+      q(0),
+      ],
+   q(dadibi) => [
+      q(4451),
+      q(0),
+      ],
+   q(dadiya) => [
+      q(1957),
+      q(0),
+      ],
+   q(daga) => [
+      q(2020),
+      q(0),
+      ],
+   q(dagaari dioula) => [
+      q(2006),
+      q(0),
+      ],
+   q(dagba) => [
+      q(2011),
+      q(0),
+      ],
+   q(dagbani) => [
+      q(1941),
+      q(0),
+      ],
+   q(dagik) => [
+      q(1988),
+      q(0),
+      ],
+   q(dagoman) => [
+      q(2013),
+      q(0),
+      ],
+   q(dahalo) => [
+      q(1945),
+      q(0),
+      ],
+   q(daho-doo) => [
+      q(1949),
+      q(0),
+      ],
+   q(dai) => [
+      q(2041),
+      q(0),
+      ],
+   q(dai zhuang) => [
+      q(7756),
+      q(0),
+      ],
+   q(dair) => [
+      q(2130),
+      q(0),
+      ],
+   q(dakaka) => [
+      q(1376),
+      q(0),
+      ],
+   q(dakka) => [
+      q(2073),
+      q(0),
+      ],
+   q(dakota) => [
+      q(0102),
+      q(0),
+      ],
+   q(dakpakha) => [
+      q(2072),
+      q(0),
+      ],
+   q(dalmatian) => [
+      q(2078),
+      q(0),
+      ],
+   q(daloa bete) => [
+      q(1132),
+      q(0),
+      ],
+   q(dama) => [
+      q(2088),
+      q(0),
+      ],
+   q(damakawa) => [
+      q(1946),
+      q(0),
+      ],
+   q(damal) => [
+      q(6843),
+      q(0),
+      ],
+   q(dambi) => [
+      q(1937),
+      q(0),
+      ],
+   q(dameli) => [
+      q(2087),
+      q(0),
+      ],
+   q(dampelas) => [
+      q(2091),
+      q(0),
+      ],
+   q(dan) => [
+      q(1940),
+      q(0),
+      ],
+   q(danaru) => [
+      q(2103),
+      q(0),
+      ],
+   q(danau) => [
+      q(2105),
+      q(0),
+      ],
+   q(dandami maria) => [
+      q(1948),
+      q(0),
+      ],
+   q(dangaleat) => [
+      q(1936),
+      q(0),
+      ],
+   q(dangaura tharu) => [
+      q(6473),
+      q(0),
+      ],
+   q(danish) => [
+      q(0103),
+      q(0),
+      ],
+   q(danish sign language) => [
+      q(2148),
+      q(0),
+      ],
+   q(dano) => [
+      q(0899),
+      q(0),
+      ],
+   q(danu) => [
+      q(2106),
+      q(0),
+      ],
+   q(dao) => [
+      q(1954),
+      q(0),
+      ],
+   q(daonda) => [
+      q(2097),
+      q(0),
+      ],
+   q(dar daju daju) => [
+      q(2058),
+      q(0),
+      ],
+   q(dar fur daju) => [
+      q(1944),
+      q(0),
+      ],
+   q(dar sila daju) => [
+      q(1950),
+      q(0),
+      ],
+   q(darai) => [
+      q(2144),
+      q(0),
+      ],
+   q(darang deng) => [
+      q(4270),
+      q(0),
+      ],
+   q(dargwa) => [
+      q(0104),
+      q(0),
+      ],
+   q(dari) => [
+      q(5577),
+      q(0),
+      ],
+   q(darlong) => [
+      q(2079),
+      q(0),
+      ],
+   q(darmiya) => [
+      q(2132),
+      q(0),
+      ],
+   q(daro-matu melanau) => [
+      q(2138),
+      q(0),
+      ],
+   q(dass) => [
+      q(2123),
+      q(0),
+      ],
+   q(datooga) => [
+      q(6375),
+      q(0),
+      ],
+   q(daungwurrung) => [
+      q(2018),
+      q(0),
+      ],
+   q(daur) => [
+      q(2152),
+      q(0),
+      ],
+   q(davawenyo) => [
+      q(1952),
+      q(0),
+      ],
+   q(daw) => [
+      q(3671),
+      q(0),
+      ],
+   q(dawawa) => [
+      q(2193),
+      q(0),
+      ],
+   q(dawera-daweloor) => [
+      q(1987),
+      q(0),
+      ],
+   q(dawida) => [
+      q(1951),
+      q(0),
+      ],
+   q(dawro) => [
+      q(2191),
+      q(0),
+      ],
+   q(day) => [
+      q(1943),
+      q(0),
+      ],
+   q(dayi) => [
+      q(1953),
+      q(0),
+      ],
+   q(daza) => [
+      q(2204),
+      q(0),
+      ],
+   q(dazaga) => [
+      q(2205),
+      q(0),
+      ],
+   q(deccan) => [
+      q(1975),
+      q(0),
+      ],
+   q(dedua) => [
+      q(1989),
+      q(0),
+      ],
+   q(defaka) => [
+      q(0647),
+      q(0),
+      ],
+   q(defi gbe) => [
+      q(2417),
+      q(0),
+      ],
+   q(deg) => [
+      q(4696),
+      q(0),
+      ],
+   q(degaru) => [
+      q(2017),
+      q(0),
+      ],
+   q(degema) => [
+      q(1992),
+      q(0),
+      ],
+   q(degenan) => [
+      q(2007),
+      q(0),
+      ],
+   q(degexit'an) => [
+      q(2951),
+      q(0),
+      ],
+   q(dehu) => [
+      q(2031),
+      q(0),
+      ],
+   q(dehwari) => [
+      q(1993),
+      q(0),
+      ],
+   q(dek) => [
+      q(1995),
+      q(0),
+      ],
+   q(dela-oenale) => [
+      q(5821),
+      q(0),
+      ],
+   q(delaware) => [
+      q(0106),
+      q(0),
+      ],
+   q(delo) => [
+      q(5074),
+      q(0),
+      ],
+   q(dem) => [
+      q(1996),
+      q(0),
+      ],
+   q(dema) => [
+      q(2094),
+      q(0),
+      ],
+   q(demisa) => [
+      q(1994),
+      q(0),
+      ],
+   q(demta) => [
+      q(2095),
+      q(0),
+      ],
+   q(dendi (benin)) => [
+      q(1983),
+      q(0),
+      ],
+   q(dendi (central african republic)) => [
+      q(1998),
+      q(0),
+      ],
+   q(dene suline) => [
+      q(0084),
+      q(0),
+      ],
+   q(dengese) => [
+      q(2002),
+      q(0),
+      ],
+   q(dengka) => [
+      q(2101),
+      q(0),
+      ],
+   q(deni) => [
+      q(2108),
+      q(0),
+      ],
+   q(deno) => [
+      q(1956),
+      q(0),
+      ],
+   q(denya) => [
+      q(0811),
+      q(0),
+      ],
+   q(deori) => [
+      q(1999),
+      q(0),
+      ],
+   q(dera (indonesia)) => [
+      q(3182),
+      q(0),
+      ],
+   q(dera (nigeria)) => [
+      q(3457),
+      q(0),
+      ],
+   q(desano) => [
+      q(2000),
+      q(0),
+      ],
+   q(desiya) => [
+      q(2150),
+      q(0),
+      ],
+   q(dewoin) => [
+      q(1990),
+      q(0),
+      ],
+   q(dezfuli) => [
+      q(1991),
+      q(0),
+      ],
+   q(dghwede) => [
+      q(2009),
+      q(0),
+      ],
+   q(dhaiso) => [
+      q(2029),
+      q(0),
+      ],
+   q(dhalandji) => [
+      q(2024),
+      q(0),
+      ],
+   q(dhangu) => [
+      q(2022),
+      q(0),
+      ],
+   q(dhanki) => [
+      q(2026),
+      q(0),
+      ],
+   q(dhanwar (nepal)) => [
+      q(2032),
+      q(0),
+      ],
+   q(dhao) => [
+      q(4812),
+      q(0),
+      ],
+   q(dhargari) => [
+      q(2028),
+      q(0),
+      ],
+   q(dhatki) => [
+      q(4326),
+      q(0),
+      ],
+   q(dhimal) => [
+      q(2023),
+      q(0),
+      ],
+   q(dhivehi) => [
+      q(0110),
+      q(0),
+      ],
+   q(dhodia) => [
+      q(2027),
+      q(0),
+      ],
+   q(dhofari arabic) => [
+      q(0608),
+      q(0),
+      ],
+   q(dholuo) => [
+      q(0260),
+      q(1),
+      ],
+   q(dhudhuroa) => [
+      q(1985),
+      q(0),
+      ],
+   q(dhundari) => [
+      q(2021),
+      q(0),
+      ],
+   q(dhurga) => [
+      q(2030),
+      q(0),
+      ],
+   q(dhuwal) => [
+      q(2174),
+      q(0),
+      ],
+   q(dia) => [
+      q(2033),
+      q(0),
+      ],
+   q(dibabawon manobo) => [
+      q(4105),
+      q(0),
+      ],
+   q(dibiyaso) => [
+      q(1974),
+      q(0),
+      ],
+   q(dibo) => [
+      q(2045),
+      q(0),
+      ],
+   q(dibole) => [
+      q(1539),
+      q(0),
+      ],
+   q(dicamay agta) => [
+      q(2187),
+      q(0),
+      ],
+   q(didinga) => [
+      q(2036),
+      q(0),
+      ],
+   q(dido) => [
+      q(1984),
+      q(0),
+      ],
+   q(diebroud) => [
+      q(6363),
+      q(0),
+      ],
+   q(dieri) => [
+      q(2037),
+      q(0),
+      ],
+   q(digaro-mishmi) => [
+      q(4270),
+      q(0),
+      ],
+   q(digo) => [
+      q(2038),
+      q(0),
+      ],
+   q(dii) => [
+      q(2181),
+      q(0),
+      ],
+   q(dijim-bwilim) => [
+      q(1712),
+      q(0),
+      ],
+   q(dilling) => [
+      q(2043),
+      q(0),
+      ],
+   q(dima) => [
+      q(3094),
+      q(0),
+      ],
+   q(dimasa) => [
+      q(2049),
+      q(0),
+      ],
+   q(dimbong) => [
+      q(2040),
+      q(0),
+      ],
+   q(dime) => [
+      q(2044),
+      q(0),
+      ],
+   q(dimili) => [
+      q(0486),
+      q(0),
+      ],
+   q(dimir) => [
+      q(2082),
+      q(0),
+      ],
+   q(dimli) => [
+      q(0486),
+      q(0),
+      ],
+   q(dimli (individual language)) => [
+      q(2047),
+      q(0),
+      ],
+   q(dimli (macrolanguage)) => [
+      q(0486),
+      q(6),
+      ],
+   q(dineor) => [
+      q(4506),
+      q(0),
+      ],
+   q(ding) => [
+      q(2055),
+      q(0),
+      ],
+   q(dinka) => [
+      q(0109),
+      q(0),
+      ],
+   q(dirari) => [
+      q(2050),
+      q(0),
+      ],
+   q(dirasha) => [
+      q(2453),
+      q(0),
+      ],
+   q(diri) => [
+      q(2190),
+      q(0),
+      ],
+   q(diriku) => [
+      q(2051),
+      q(0),
+      ],
+   q(dirim) => [
+      q(2048),
+      q(0),
+      ],
+   q(disa) => [
+      q(2147),
+      q(0),
+      ],
+   q(ditammari) => [
+      q(6372),
+      q(0),
+      ],
+   q(ditidaht) => [
+      q(2154),
+      q(0),
+      ],
+   q(diuwe) => [
+      q(2054),
+      q(0),
+      ],
+   q(diuxi-tilantongo mixtec) => [
+      q(7443),
+      q(0),
+      ],
+   q(divehi) => [
+      q(0110),
+      q(0),
+      ],
+   q(dixon reef) => [
+      q(2053),
+      q(0),
+      ],
+   q(dizin) => [
+      q(4173),
+      q(0),
+      ],
+   q(djadjawurrung) => [
+      q(2056),
+      q(0),
+      ],
+   q(djambarrpuyngu) => [
+      q(2069),
+      q(0),
+      ],
+   q(djamindjung) => [
+      q(2059),
+      q(0),
+      ],
+   q(djangun) => [
+      q(2061),
+      q(0),
+      ],
+   q(djauan) => [
+      q(2067),
+      q(0),
+      ],
+   q(djawi) => [
+      q(2071),
+      q(0),
+      ],
+   q(djeebbana) => [
+      q(2063),
+      q(0),
+      ],
+   q(djimini senoufo) => [
+      q(2198),
+      q(0),
+      ],
+   q(djinang) => [
+      q(2062),
+      q(0),
+      ],
+   q(djinba) => [
+      q(2057),
+      q(0),
+      ],
+   q(djingili) => [
+      q(3075),
+      q(0),
+      ],
+   q(djiwarli) => [
+      q(2065),
+      q(0),
+      ],
+   q(dobel) => [
+      q(3659),
+      q(0),
+      ],
+   q(dobu) => [
+      q(2110),
+      q(0),
+      ],
+   q(doe) => [
+      q(2112),
+      q(0),
+      ],
+   q(doga) => [
+      q(2008),
+      q(0),
+      ],
+   q(doghoro) => [
+      q(2019),
+      q(0),
+      ],
+   q(dogose) => [
+      q(2122),
+      q(0),
+      ],
+   q(dogoso) => [
+      q(2015),
+      q(0),
+      ],
+   q(dogri) => [
+      q(0111),
+      q(0),
+      ],
+   q(dogri (individual language)) => [
+      q(2014),
+      q(0),
+      ],
+   q(dogri (macrolanguage)) => [
+      q(0111),
+      q(1),
+      ],
+   q(dogrib) => [
+      q(0108),
+      q(0),
+      ],
+   q(dogul dom dogon) => [
+      q(1960),
+      q(0),
+      ],
+   q(doka) => [
+      q(1961),
+      q(0),
+      ],
+   q(doko-uyanga) => [
+      q(6932),
+      q(0),
+      ],
+   q(dolgan) => [
+      q(2077),
+      q(0),
+      ],
+   q(dolpo) => [
+      q(2133),
+      q(0),
+      ],
+   q(dom) => [
+      q(2109),
+      q(0),
+      ],
+   q(domaaki) => [
+      q(2086),
+      q(0),
+      ],
+   q(domari) => [
+      q(5795),
+      q(0),
+      ],
+   q(dombe) => [
+      q(2124),
+      q(0),
+      ],
+   q(dominican sign language) => [
+      q(2120),
+      q(0),
+      ],
+   q(dompo) => [
+      q(2127),
+      q(0),
+      ],
+   q(domu) => [
+      q(2113),
+      q(0),
+      ],
+   q(domung) => [
+      q(2001),
+      q(0),
+      ],
+   q(dondo) => [
+      q(2115),
+      q(0),
+      ],
+   q(dong) => [
+      q(2114),
+      q(0),
+      ],
+   q(dongo) => [
+      q(2118),
+      q(0),
+      ],
+   q(dongolawi) => [
+      q(2012),
+      q(0),
+      ],
+   q(dongotono) => [
+      q(1978),
+      q(0),
+      ],
+   q(dongshanba lalo) => [
+      q(7566),
+      q(0),
+      ],
+   q(dongxiang) => [
+      q(5900),
+      q(0),
+      ],
+   q(donno so dogon) => [
+      q(1986),
+      q(0),
+      ],
+   q(doondo) => [
+      q(1979),
+      q(0),
+      ],
+   q(dori'o) => [
+      q(2121),
+      q(0),
+      ],
+   q(dorig) => [
+      q(7220),
+      q(0),
+      ],
+   q(doromu-koki) => [
+      q(3528),
+      q(0),
+      ],
+   q(dororo) => [
+      q(2140),
+      q(0),
+      ],
+   q(dorze) => [
+      q(2128),
+      q(0),
+      ],
+   q(doso) => [
+      q(2116),
+      q(0),
+      ],
+   q(dotyali) => [
+      q(2165),
+      q(0),
+      ],
+   q(doutai) => [
+      q(6412),
+      q(0),
+      ],
+   q(doyayo) => [
+      q(2125),
+      q(0),
+      ],
+   q(dravidian languages) => [
+      q(0112),
+      q(0),
+      ],
+   q(drents) => [
+      q(2142),
+      q(0),
+      ],
+   q(drung) => [
+      q(2183),
+      q(0),
+      ],
+   q(duala) => [
+      q(0114),
+      q(0),
+      ],
+   q(duano) => [
+      q(2179),
+      q(0),
+      ],
+   q(duau) => [
+      q(2189),
+      q(0),
+      ],
+   q(dubli) => [
+      q(2166),
+      q(0),
+      ],
+   q(dubu) => [
+      q(2092),
+      q(0),
+      ],
+   q(dugun) => [
+      q(4783),
+      q(0),
+      ],
+   q(duguri) => [
+      q(1964),
+      q(0),
+      ],
+   q(dugwor) => [
+      q(2084),
+      q(0),
+      ],
+   q(duhwa) => [
+      q(3186),
+      q(0),
+      ],
+   q(duke) => [
+      q(4908),
+      q(0),
+      ],
+   q(dulbu) => [
+      q(1966),
+      q(0),
+      ],
+   q(duli) => [
+      q(2188),
+      q(0),
+      ],
+   q(duma) => [
+      q(2080),
+      q(0),
+      ],
+   q(dumbea) => [
+      q(2170),
+      q(0),
+      ],
+   q(dumi) => [
+      q(2182),
+      q(0),
+      ],
+   q(dumpas) => [
+      q(2093),
+      q(0),
+      ],
+   q(dumun) => [
+      q(2173),
+      q(0),
+      ],
+   q(duna) => [
+      q(2167),
+      q(0),
+      ],
+   q(dungan) => [
+      q(2099),
+      q(0),
+      ],
+   q(dungmali) => [
+      q(5710),
+      q(0),
+      ],
+   q(dungra bhil) => [
+      q(2172),
+      q(0),
+      ],
+   q(dungu) => [
+      q(1972),
+      q(0),
+      ],
+   q(dupaninan agta) => [
+      q(2178),
+      q(0),
+      ],
+   q(dura) => [
+      q(2139),
+      q(0),
+      ],
+   q(duri) => [
+      q(4592),
+      q(0),
+      ],
+   q(duriankere) => [
+      q(1965),
+      q(0),
+      ],
+   q(duruma) => [
+      q(2171),
+      q(0),
+      ],
+   q(duruwa) => [
+      q(5364),
+      q(0),
+      ],
+   q(dusner) => [
+      q(2149),
+      q(0),
+      ],
+   q(dusun deyah) => [
+      q(2177),
+      q(0),
+      ],
+   q(dusun malang) => [
+      q(2180),
+      q(0),
+      ],
+   q(dusun witu) => [
+      q(2185),
+      q(0),
+      ],
+   q(dutch) => [
+      q(0116),
+      q(0),
+      ],
+   q(dutch sign language) => [
+      q(2145),
+      q(0),
+      ],
+   q(dutch, middle (ca.1050-1350)) => [
+      q(0115),
+      q(0),
+      ],
+   q(dutton world speedwords) => [
+      q(2192),
+      q(0),
+      ],
+   q(duungooma) => [
+      q(2186),
+      q(0),
+      ],
+   q(duupa) => [
+      q(1939),
+      q(0),
+      ],
+   q(duvle) => [
+      q(2184),
+      q(0),
+      ],
+   q(duwai) => [
+      q(1967),
+      q(0),
+      ],
+   q(duwet) => [
+      q(2653),
+      q(0),
+      ],
+   q(duya) => [
+      q(3825),
+      q(0),
+      ],
+   q(dwang) => [
+      q(4988),
+      q(0),
+      ],
+   q(dyaabugay) => [
+      q(2202),
+      q(0),
+      ],
+   q(dyaberdyaber) => [
+      q(2195),
+      q(0),
+      ],
+   q(dyan) => [
+      q(2194),
+      q(0),
+      ],
+   q(dyangadi) => [
+      q(2200),
+      q(0),
+      ],
+   q(dyirbal) => [
+      q(1963),
+      q(0),
+      ],
+   q(dyugun) => [
+      q(2196),
+      q(0),
+      ],
+   q(dyula) => [
+      q(0117),
+      q(0),
+      ],
+   q(dza) => [
+      q(3060),
+      q(0),
+      ],
+   q(dzalakha) => [
+      q(2206),
+      q(0),
+      ],
+   q(dzando) => [
+      q(2207),
+      q(0),
+      ],
+   q(dzao min) => [
+      q(1386),
+      q(0),
+      ],
+   q(dzodinka) => [
+      q(0606),
+      q(0),
+      ],
+   q(dzongkha) => [
+      q(0118),
+      q(0),
+      ],
+   q(dzuungoo) => [
+      q(2102),
+      q(0),
+      ],
+   q(e) => [
+      q(2216),
+      q(0),
+      ],
+   q(e'ma buyang) => [
+      q(7714),
+      q(0),
+      ],
+   q(e'napa woromaipu) => [
+      q(5344),
+      q(0),
+      ],
+   q(early tripuri) => [
+      q(7454),
+      q(0),
+      ],
+   q(east ambae) => [
+      q(5226),
+      q(0),
+      ],
+   q(east berawan) => [
+      q(7741),
+      q(0),
+      ],
+   q(east damar) => [
+      q(2090),
+      q(0),
+      ],
+   q(east futuna) => [
+      q(2373),
+      q(0),
+      ],
+   q(east germanic languages) => [
+      q(0505),
+      q(0),
+      ],
+   q(east kewa) => [
+      q(3374),
+      q(0),
+      ],
+   q(east limba) => [
+      q(3951),
+      q(0),
+      ],
+   q(east makian) => [
+      q(4342),
+      q(0),
+      ],
+   q(east masela) => [
+      q(6987),
+      q(0),
+      ],
+   q(east nyala) => [
+      q(4930),
+      q(0),
+      ],
+   q(east slavic languages) => [
+      q(0534),
+      q(0),
+      ],
+   q(east tarangan) => [
+      q(6660),
+      q(0),
+      ],
+   q(east yugur) => [
+      q(7698),
+      q(0),
+      ],
+   q(eastern abnaki) => [
+      q(0553),
+      q(0),
+      ],
+   q(eastern acipa) => [
+      q(0594),
+      q(0),
+      ],
+   q(eastern apurimac quechua) => [
+      q(5676),
+      q(0),
+      ],
+   q(eastern arrernte) => [
+      q(0635),
+      q(0),
+      ],
+   q(eastern balochi) => [
+      q(1176),
+      q(0),
+      ],
+   q(eastern bolivian guarani) => [
+      q(2635),
+      q(0),
+      ],
+   q(eastern bontok) => [
+      q(2209),
+      q(0),
+      ],
+   q(eastern bru) => [
+      q(1442),
+      q(0),
+      ],
+   q(eastern canadian inuktitut) => [
+      q(2920),
+      q(0),
+      ],
+   q(eastern cham) => [
+      q(1749),
+      q(0),
+      ],
+   q(eastern durango nahuatl) => [
+      q(1015),
+      q(0),
+      ],
+   q(eastern egyptian bedawi arabic) => [
+      q(0961),
+      q(0),
+      ],
+   q(eastern frisian) => [
+      q(0141),
+      q(0),
+      ],
+   q(eastern gorkha tamang) => [
+      q(6447),
+      q(0),
+      ],
+   q(eastern gurung) => [
+      q(2487),
+      q(0),
+      ],
+   q(eastern highland chatino) => [
+      q(1783),
+      q(0),
+      ],
+   q(eastern highland otomi) => [
+      q(5297),
+      q(0),
+      ],
+   q(eastern hongshuihe zhuang) => [
+      q(7749),
+      q(0),
+      ],
+   q(eastern huasteca nahuatl) => [
+      q(4846),
+      q(0),
+      ],
+   q(eastern huishui hmong) => [
+      q(2766),
+      q(0),
+      ],
+   q(eastern huishui miao) => [
+      q(2766),
+      q(0),
+      ],
+   q(eastern karaboro) => [
+      q(7412),
+      q(0),
+      ],
+   q(eastern katu) => [
+      q(3619),
+      q(0),
+      ],
+   q(eastern kayah) => [
+      q(2236),
+      q(0),
+      ],
+   q(eastern keres) => [
+      q(3239),
+      q(0),
+      ],
+   q(eastern khumi chin) => [
+      q(1709),
+      q(0),
+      ],
+   q(eastern krahn) => [
+      q(3540),
+      q(0),
+      ],
+   q(eastern lalu) => [
+      q(7574),
+      q(0),
+      ],
+   q(eastern lawa) => [
+      q(4077),
+      q(0),
+      ],
+   q(eastern magar) => [
+      q(4240),
+      q(0),
+      ],
+   q(eastern malayo-polynesian languages) => [
+      q(0521),
+      q(0),
+      ],
+   q(eastern maninkakan) => [
+      q(2249),
+      q(0),
+      ],
+   q(eastern mari) => [
+      q(4267),
+      q(0),
+      ],
+   q(eastern maroon creole) => [
+      q(2064),
+      q(0),
+      ],
+   q(eastern meohang) => [
+      q(2247),
+      q(0),
+      ],
+   q(eastern mnong) => [
+      q(4397),
+      q(0),
+      ],
+   q(eastern muria) => [
+      q(2255),
+      q(0),
+      ],
+   q(eastern ngad'a) => [
+      q(4789),
+      q(0),
+      ],
+   q(eastern nisu) => [
+      q(5006),
+      q(0),
+      ],
+   q(eastern ojibwa) => [
+      q(5196),
+      q(0),
+      ],
+   q(eastern oromo) => [
+      q(2699),
+      q(0),
+      ],
+   q(eastern parbate kham) => [
+      q(3338),
+      q(0),
+      ],
+   q(eastern penan) => [
+      q(5398),
+      q(0),
+      ],
+   q(eastern pomo) => [
+      q(5381),
+      q(0),
+      ],
+   q(eastern qiandong miao) => [
+      q(2776),
+      q(0),
+      ],
+   q(eastern subanen) => [
+      q(5958),
+      q(0),
+      ],
+   q(eastern sudanic languages) => [
+      q(0524),
+      q(0),
+      ],
+   q(eastern tamang) => [
+      q(6333),
+      q(0),
+      ],
+   q(eastern tawbuid) => [
+      q(1337),
+      q(0),
+      ],
+   q(eastern xiangxi miao) => [
+      q(4571),
+      q(0),
+      ],
+   q(eastern xwla gbe) => [
+      q(2431),
+      q(0),
+      ],
+   q(eastern yiddish) => [
+      q(7535),
+      q(0),
+      ],
+   q(ebira) => [
+      q(2902),
+      q(0),
+      ],
+   q(eblan) => [
+      q(7276),
+      q(0),
+      ],
+   q(ebrie) => [
+      q(2211),
+      q(0),
+      ],
+   q(ebughu) => [
+      q(2208),
+      q(0),
+      ],
+   q(ecuadorian sign language) => [
+      q(2214),
+      q(0),
+      ],
+   q(ede cabe) => [
+      q(1669),
+      q(0),
+      ],
+   q(ede ica) => [
+      q(2880),
+      q(0),
+      ],
+   q(ede idaca) => [
+      q(2887),
+      q(0),
+      ],
+   q(ede ije) => [
+      q(2917),
+      q(0),
+      ],
+   q(edera awyu) => [
+      q(0986),
+      q(0),
+      ],
+   q(edo) => [
+      q(0055),
+      q(0),
+      ],
+   q(edolo) => [
+      q(2300),
+      q(0),
+      ],
+   q(edomite) => [
+      q(7274),
+      q(0),
+      ],
+   q(edopi) => [
+      q(1959),
+      q(0),
+      ],
+   q(edwas) => [
+      q(1348),
+      q(0),
+      ],
+   q(efai) => [
+      q(2217),
+      q(0),
+      ],
+   q(efe) => [
+      q(2218),
+      q(0),
+      ],
+   q(efik) => [
+      q(0119),
+      q(0),
+      ],
+   q(efutop) => [
+      q(5183),
+      q(0),
+      ],
+   q(ega) => [
+      q(2219),
+      q(0),
+      ],
+   q(eggon) => [
+      q(2221),
+      q(0),
+      ],
+   q(egypt sign language) => [
+      q(2288),
+      q(0),
+      ],
+   q(egyptian (ancient)) => [
+      q(0120),
+      q(0),
+      ],
+   q(egyptian arabic) => [
+      q(0885),
+      q(0),
+      ],
+   q(egyptian languages) => [
+      q(0501),
+      q(0),
+      ],
+   q(ehueun) => [
+      q(2222),
+      q(0),
+      ],
+   q(eipomek) => [
+      q(2223),
+      q(0),
+      ],
+   q(eitiep) => [
+      q(2224),
+      q(0),
+      ],
+   q(ejagham) => [
+      q(2303),
+      q(0),
+      ],
+   q(ejamat) => [
+      q(2226),
+      q(0),
+      ],
+   q(ekajuk) => [
+      q(0121),
+      q(0),
+      ],
+   q(ekari) => [
+      q(2228),
+      q(0),
+      ],
+   q(ekegusii) => [
+      q(2650),
+      q(0),
+      ],
+   q(eki) => [
+      q(2229),
+      q(0),
+      ],
+   q(ekit) => [
+      q(2227),
+      q(0),
+      ],
+   q(ekpeye) => [
+      q(2234),
+      q(0),
+      ],
+   q(el alto zapotec) => [
+      q(7840),
+      q(0),
+      ],
+   q(el hugeirat) => [
+      q(2238),
+      q(0),
+      ],
+   q(el molo) => [
+      q(2242),
+      q(0),
+      ],
+   q(el nayar cora) => [
+      q(1854),
+      q(0),
+      ],
+   q(elamite) => [
+      q(0122),
+      q(0),
+      ],
+   q(eleme) => [
+      q(2241),
+      q(0),
+      ],
+   q(elepi) => [
+      q(2237),
+      q(0),
+      ],
+   q(elip) => [
+      q(2232),
+      q(0),
+      ],
+   q(elkei) => [
+      q(2240),
+      q(0),
+      ],
+   q(elotepec zapotec) => [
+      q(7864),
+      q(0),
+      ],
+   q(eloyi) => [
+      q(0648),
+      q(0),
+      ],
+   q(elseng) => [
+      q(4489),
+      q(0),
+      ],
+   q(elu) => [
+      q(2243),
+      q(0),
+      ],
+   q(elymian) => [
+      q(7347),
+      q(0),
+      ],
+   q(emae) => [
+      q(4388),
+      q(0),
+      ],
+   q(emai-iuleha-ora) => [
+      q(2244),
+      q(0),
+      ],
+   q(eman) => [
+      q(2251),
+      q(0),
+      ],
+   q(embaloh) => [
+      q(2245),
+      q(0),
+      ],
+   q(embera-baudo) => [
+      q(1092),
+      q(0),
+      ],
+   q(embera-catio) => [
+      q(1895),
+      q(0),
+      ],
+   q(embera-chami) => [
+      q(1787),
+      q(0),
+      ],
+   q(embera-tado) => [
+      q(6398),
+      q(0),
+      ],
+   q(embu) => [
+      q(2212),
+      q(0),
+      ],
+   q(emem) => [
+      q(2268),
+      q(0),
+      ],
+   q(emerillon) => [
+      q(2246),
+      q(0),
+      ],
+   q(emilian) => [
+      q(2220),
+      q(0),
+      ],
+   q(emok) => [
+      q(2252),
+      q(0),
+      ],
+   q(emplawas) => [
+      q(2256),
+      q(0),
+      ],
+   q(emumu) => [
+      q(2268),
+      q(0),
+      ],
+   q(en) => [
+      q(2261),
+      q(0),
+      ],
+   q(enawene-nawe) => [
+      q(6883),
+      q(0),
+      ],
+   q(ende) => [
+      q(2262),
+      q(0),
+      ],
+   q(enga) => [
+      q(2267),
+      q(0),
+      ],
+   q(engdewu) => [
+      q(4833),
+      q(0),
+      ],
+   q(engenni) => [
+      q(2265),
+      q(0),
+      ],
+   q(enggano) => [
+      q(2266),
+      q(0),
+      ],
+   q(english) => [
+      q(0123),
+      q(0),
+      ],
+   q(english, middle (1100-1500)) => [
+      q(0124),
+      q(0),
+      ],
+   q(english, old (ca.450-1100)) => [
+      q(0018),
+      q(0),
+      ],
+   q(english-based creoles and pidgins) => [
+      q(0093),
+      q(2),
+      ],
+   q(enrekang) => [
+      q(5610),
+      q(0),
+      ],
+   q(enu) => [
+      q(2269),
+      q(0),
+      ],
+   q(enwan (akwa ibom state)) => [
+      q(2271),
+      q(0),
+      ],
+   q(enwan (edu state)) => [
+      q(2270),
+      q(0),
+      ],
+   q(enya) => [
+      q(2476),
+      q(0),
+      ],
+   q(epena) => [
+      q(6027),
+      q(0),
+      ],
+   q(epi-olmec) => [
+      q(7281),
+      q(0),
+      ],
+   q(epie) => [
+      q(2273),
+      q(0),
+      ],
+   q(epigraphic mayan) => [
+      q(2258),
+      q(0),
+      ],
+   q(eravallan) => [
+      q(2274),
+      q(0),
+      ],
+   q(erave) => [
+      q(3378),
+      q(0),
+      ],
+   q(ere) => [
+      q(6773),
+      q(0),
+      ],
+   q(eritai) => [
+      q(2282),
+      q(0),
+      ],
+   q(erokwanas) => [
+      q(2283),
+      q(0),
+      ],
+   q(erre) => [
+      q(2280),
+      q(0),
+      ],
+   q(erromintxela) => [
+      q(2257),
+      q(0),
+      ],
+   q(ersu) => [
+      q(2281),
+      q(0),
+      ],
+   q(eruwa) => [
+      q(2276),
+      q(0),
+      ],
+   q(erzya) => [
+      q(0297),
+      q(0),
+      ],
+   q(esan) => [
+      q(2981),
+      q(0),
+      ],
+   q(ese) => [
+      q(4143),
+      q(0),
+      ],
+   q(ese ejja) => [
+      q(2284),
+      q(0),
+      ],
+   q(eshtehardi) => [
+      q(2285),
+      q(0),
+      ],
+   q(esimbi) => [
+      q(0671),
+      q(0),
+      ],
+   q(eskimo-aleut languages) => [
+      q(0502),
+      q(0),
+      ],
+   q(esperanto) => [
+      q(0125),
+      q(0),
+      ],
+   q(esselen) => [
+      q(2292),
+      q(0),
+      ],
+   q(estado de mexico otomi) => [
+      q(5301),
+      q(0),
+      ],
+   q(estonian) => [
+      q(0126),
+      q(0),
+      ],
+   q(estonian sign language) => [
+      q(2291),
+      q(0),
+      ],
+   q(esuma) => [
+      q(2289),
+      q(0),
+      ],
+   q(etchemin) => [
+      q(2296),
+      q(0),
+      ],
+   q(etebi) => [
+      q(2295),
+      q(0),
+      ],
+   q(eten) => [
+      q(2304),
+      q(0),
+      ],
+   q(eteocretan) => [
+      q(2213),
+      q(0),
+      ],
+   q(eteocypriot) => [
+      q(2215),
+      q(0),
+      ],
+   q(ethiopian sign language) => [
+      q(2297),
+      q(0),
+      ],
+   q(etkywan) => [
+      q(2881),
+      q(0),
+      ],
+   q(eton (cameroon)) => [
+      q(2299),
+      q(0),
+      ],
+   q(eton (vanuatu)) => [
+      q(2298),
+      q(0),
+      ],
+   q(etruscan) => [
+      q(2302),
+      q(0),
+      ],
+   q(etulo) => [
+      q(6922),
+      q(0),
+      ],
+   q(evant) => [
+      q(1640),
+      q(0),
+      ],
+   q(even) => [
+      q(2306),
+      q(0),
+      ],
+   q(evenki) => [
+      q(2308),
+      q(0),
+      ],
+   q(ewage-notu) => [
+      q(5008),
+      q(0),
+      ],
+   q(ewe) => [
+      q(0127),
+      q(0),
+      ],
+   q(ewondo) => [
+      q(0128),
+      q(0),
+      ],
+   q(extremaduran) => [
+      q(2309),
+      q(0),
+      ],
+   q(eyak) => [
+      q(2310),
+      q(0),
+      ],
+   q(fa d'ambu) => [
+      q(2314),
+      q(0),
+      ],
+   q(fagani) => [
+      q(2316),
+      q(0),
+      ],
+   q(faire atta) => [
+      q(1021),
+      q(0),
+      ],
+   q(faita) => [
+      q(2320),
+      q(0),
+      ],
+   q(faiwol) => [
+      q(2319),
+      q(0),
+      ],
+   q(fala) => [
+      q(2327),
+      q(0),
+      ],
+   q(falam chin) => [
+      q(1715),
+      q(0),
+      ],
+   q(fali) => [
+      q(2346),
+      q(0),
+      ],
+   q(faliscan) => [
+      q(7286),
+      q(0),
+      ],
+   q(fam) => [
+      q(2323),
+      q(0),
+      ],
+   q(fanagalo) => [
+      q(2353),
+      q(0),
+      ],
+   q(fang) => [
+      q(0129),
+      q(0),
+      ],
+   q(fang (cameroon)) => [
+      q(2321),
+      q(0),
+      ],
+   q(fang (equatorial guinea)) => [
+      q(0129),
+      q(1),
+      ],
+   q(fania) => [
+      q(2354),
+      q(0),
+      ],
+   q(fanti) => [
+      q(0131),
+      q(0),
+      ],
+   q(far western muria) => [
+      q(2352),
+      q(0),
+      ],
+   q(farefare) => [
+      q(2643),
+      q(0),
+      ],
+   q(faroese) => [
+      q(0130),
+      q(0),
+      ],
+   q(fas) => [
+      q(2361),
+      q(0),
+      ],
+   q(fasu) => [
+      q(2313),
+      q(0),
+      ],
+   q(fataleka) => [
+      q(2325),
+      q(0),
+      ],
+   q(fataluku) => [
+      q(1980),
+      q(0),
+      ],
+   q(fayu) => [
+      q(2326),
+      q(0),
+      ],
+   q(fe'fe') => [
+      q(2351),
+      q(0),
+      ],
+   q(fedan) => [
+      q(5376),
+      q(0),
+      ],
+   q(fembe) => [
+      q(0665),
+      q(0),
+      ],
+   q(fernando po creole english) => [
+      q(2360),
+      q(0),
+      ],
+   q(feroge) => [
+      q(2332),
+      q(0),
+      ],
+   q(fiji hindi) => [
+      q(2741),
+      q(0),
+      ],
+   q(fijian) => [
+      q(0132),
+      q(0),
+      ],
+   q(filipino) => [
+      q(0133),
+      q(0),
+      ],
+   q(filomena mata-coahuitlan totonac) => [
+      q(6546),
+      q(0),
+      ],
+   q(finland-swedish sign language) => [
+      q(2370),
+      q(0),
+      ],
+   q(finlandssvenskt teckensprak) => [
+      q(2370),
+      q(0),
+      ],
+   q(finnish) => [
+      q(0134),
+      q(0),
+      ],
+   q(finnish sign language) => [
+      q(2368),
+      q(0),
+      ],
+   q(finno-ugrian languages) => [
+      q(0135),
+      q(0),
+      ],
+   q(finongan) => [
+      q(2317),
+      q(0),
+      ],
+   q(fipa) => [
+      q(2338),
+      q(0),
+      ],
+   q(firan) => [
+      q(2339),
+      q(0),
+      ],
+   q(fiwaga) => [
+      q(2341),
+      q(0),
+      ],
+   q(flemish) => [
+      q(0116),
+      q(0),
+      ],
+   q(flemish sign language) => [
+      q(6961),
+      q(0),
+      ],
+   q(flinders island) => [
+      q(2348),
+      q(0),
+      ],
+   q(foau) => [
+      q(2345),
+      q(0),
+      ],
+   q(foi) => [
+      q(2356),
+      q(0),
+      ],
+   q(foia foia) => [
+      q(2333),
+      q(0),
+      ],
+   q(folopa) => [
+      q(5553),
+      q(0),
+      ],
+   q(foma) => [
+      q(2357),
+      q(0),
+      ],
+   q(fon) => [
+      q(0136),
+      q(0),
+      ],
+   q(fongoro) => [
+      q(2335),
+      q(0),
+      ],
+   q(foodo) => [
+      q(2355),
+      q(0),
+      ],
+   q(forak) => [
+      q(2366),
+      q(0),
+      ],
+   q(fordata) => [
+      q(2363),
+      q(0),
+      ],
+   q(fore) => [
+      q(2358),
+      q(0),
+      ],
+   q(forest enets) => [
+      q(2263),
+      q(0),
+      ],
+   q(forest maninka) => [
+      q(4667),
+      q(0),
+      ],
+   q(formosan languages) => [
+      q(0504),
+      q(0),
+      ],
+   q(fortsenal) => [
+      q(2367),
+      q(0),
+      ],
+   q(francisco leon zoque) => [
+      q(7824),
+      q(0),
+      ],
+   q(francoprovencal) => [
+      q(2365),
+      q(0),
+      ],
+   q(frankish) => [
+      q(2364),
+      q(0),
+      ],
+   q(french) => [
+      q(0137),
+      q(0),
+      ],
+   q(french belgian sign language) => [
+      q(5957),
+      q(0),
+      ],
+   q(french sign language) => [
+      q(2369),
+      q(0),
+      ],
+   q(french, middle (ca.1400-1600)) => [
+      q(0138),
+      q(0),
+      ],
+   q(french, old (842-ca.1400)) => [
+      q(0139),
+      q(0),
+      ],
+   q(french-based creoles and pidgins) => [
+      q(0094),
+      q(2),
+      ],
+   q(friulian) => [
+      q(0144),
+      q(0),
+      ],
+   q(fulah) => [
+      q(0143),
+      q(0),
+      ],
+   q(fuliiru) => [
+      q(2349),
+      q(0),
+      ],
+   q(fulnio) => [
+      q(2380),
+      q(0),
+      ],
+   q(fum) => [
+      q(2379),
+      q(0),
+      ],
+   q(fungwa) => [
+      q(6857),
+      q(0),
+      ],
+   q(fur) => [
+      q(2386),
+      q(0),
+      ],
+   q(furu) => [
+      q(2383),
+      q(0),
+      ],
+   q(futuna-aniwa) => [
+      q(2382),
+      q(0),
+      ],
+   q(fuyug) => [
+      q(2385),
+      q(0),
+      ],
+   q(fwai) => [
+      q(2387),
+      q(0),
+      ],
+   q(fwe) => [
+      q(2388),
+      q(0),
+      ],
+   q(fyam) => [
+      q(5646),
+      q(0),
+      ],
+   q(fyer) => [
+      q(2337),
+      q(0),
+      ],
+   q(ga) => [
+      q(0145),
+      q(0),
+      ],
+   q(ga'anda) => [
+      q(2594),
+      q(0),
+      ],
+   q(ga'dang) => [
+      q(2448),
+      q(0),
+      ],
+   q(gaa) => [
+      q(6705),
+      q(0),
+      ],
+   q(gaam) => [
+      q(6356),
+      q(0),
+      ],
+   q(gabri) => [
+      q(2389),
+      q(0),
+      ],
+   q(gabrielino-fernandeno) => [
+      q(7289),
+      q(0),
+      ],
+   q(gadang) => [
+      q(2452),
+      q(0),
+      ],
+   q(gaddang) => [
+      q(2391),
+      q(0),
+      ],
+   q(gaddi) => [
+      q(2420),
+      q(0),
+      ],
+   q(gade) => [
+      q(2465),
+      q(0),
+      ],
+   q(gade lohar) => [
+      q(2442),
+      q(0),
+      ],
+   q(gadjerawang) => [
+      q(2449),
+      q(0),
+      ],
+   q(gadsup) => [
+      q(2397),
+      q(0),
+      ],
+   q(gaelic) => [
+      q(0153),
+      q(0),
+      ],
+   q(gafat) => [
+      q(2478),
+      q(0),
+      ],
+   q(gagadu) => [
+      q(2429),
+      q(0),
+      ],
+   q(gagauz) => [
+      q(2394),
+      q(0),
+      ],
+   q(gagnoa bete) => [
+      q(1477),
+      q(0),
+      ],
+   q(gagu) => [
+      q(2491),
+      q(0),
+      ],
+   q(gahri) => [
+      q(1157),
+      q(0),
+      ],
+   q(gaikundi) => [
+      q(2415),
+      q(0),
+      ],
+   q(gail) => [
+      q(2506),
+      q(0),
+      ],
+   q(gaina) => [
+      q(2439),
+      q(0),
+      ],
+   q(gal) => [
+      q(2403),
+      q(0),
+      ],
+   q(galambu) => [
+      q(2536),
+      q(0),
+      ],
+   q(galatian) => [
+      q(7287),
+      q(0),
+      ],
+   q(galela) => [
+      q(2418),
+      q(0),
+      ],
+   q(galeya) => [
+      q(2405),
+      q(0),
+      ],
+   q(galibi carib) => [
+      q(0070),
+      q(0),
+      ],
+   q(galice) => [
+      q(2436),
+      q(0),
+      ],
+   q(galician) => [
+      q(0155),
+      q(0),
+      ],
+   q(galindan) => [
+      q(7290),
+      q(0),
+      ],
+   q(gallurese sardinian) => [
+      q(5925),
+      q(0),
+      ],
+   q(galo) => [
+      q(0613),
+      q(0),
+      ],
+   q(galoli) => [
+      q(2399),
+      q(0),
+      ],
+   q(gamale kham) => [
+      q(3295),
+      q(0),
+      ],
+   q(gambera) => [
+      q(2541),
+      q(0),
+      ],
+   q(gambian wolof) => [
+      q(7161),
+      q(0),
+      ],
+   q(gamilaraay) => [
+      q(3409),
+      q(0),
+      ],
+   q(gamit) => [
+      q(2421),
+      q(0),
+      ],
+   q(gamkonora) => [
+      q(2398),
+      q(0),
+      ],
+   q(gamo) => [
+      q(2548),
+      q(0),
+      ],
+   q(gamo-ningi) => [
+      q(1475),
+      q(0),
+      ],
+   q(gan chinese) => [
+      q(2401),
+      q(0),
+      ],
+   q(gana) => [
+      q(2564),
+      q(0),
+      ],
+   q(ganang) => [
+      q(2555),
+      q(0),
+      ],
+   q(ganda) => [
+      q(0257),
+      q(0),
+      ],
+   q(gane) => [
+      q(2694),
+      q(0),
+      ],
+   q(ganggalida) => [
+      q(2435),
+      q(0),
+      ],
+   q(ganglau) => [
+      q(2486),
+      q(0),
+      ],
+   q(gangte) => [
+      q(2552),
+      q(0),
+      ],
+   q(gangulu) => [
+      q(2560),
+      q(0),
+      ],
+   q(gants) => [
+      q(2402),
+      q(0),
+      ],
+   q(ganza) => [
+      q(2692),
+      q(0),
+      ],
+   q(ganzi) => [
+      q(2569),
+      q(0),
+      ],
+   q(gao) => [
+      q(2480),
+      q(0),
+      ],
+   q(gapapaiwa) => [
+      q(5638),
+      q(0),
+      ],
+   q(garhwali) => [
+      q(2422),
+      q(0),
+      ],
+   q(garifuna) => [
+      q(1642),
+      q(0),
+      ],
+   q(garig-ilgar) => [
+      q(2933),
+      q(0),
+      ],
+   q(garo) => [
+      q(2610),
+      q(0),
+      ],
+   q(garre) => [
+      q(2475),
+      q(0),
+      ],
+   q(garrwa) => [
+      q(7179),
+      q(0),
+      ],
+   q(garus) => [
+      q(2681),
+      q(0),
+      ],
+   q(garza) => [
+      q(7291),
+      q(0),
+      ],
+   q(gata') => [
+      q(2404),
+      q(0),
+      ],
+   q(gavar) => [
+      q(2586),
+      q(0),
+      ],
+   q(gaviao do jiparana) => [
+      q(2659),
+      q(0),
+      ],
+   q(gawar-bati) => [
+      q(2675),
+      q(0),
+      ],
+   q(gawwada) => [
+      q(2667),
+      q(0),
+      ],
+   q(gayil) => [
+      q(2687),
+      q(0),
+      ],
+   q(gayo) => [
+      q(0146),
+      q(0),
+      ],
+   q(gazi) => [
+      q(2693),
+      q(0),
+      ],
+   q(gbagyi) => [
+      q(2427),
+      q(0),
+      ],
+   q(gbanu) => [
+      q(2430),
+      q(0),
+      ],
+   q(gbanziri) => [
+      q(2416),
+      q(0),
+      ],
+   q(gbari) => [
+      q(2432),
+      q(0),
+      ],
+   q(gbati-ri) => [
+      q(2626),
+      q(0),
+      ],
+   q(gbaya) => [
+      q(0147),
+      q(0),
+      ],
+   q(gbaya (central african republic)) => [
+      q(0147),
+      q(1),
+      ],
+   q(gbaya (sudan)) => [
+      q(3565),
+      q(0),
+      ],
+   q(gbaya-bossangoa) => [
+      q(2425),
+      q(0),
+      ],
+   q(gbaya-bozoum) => [
+      q(2426),
+      q(0),
+      ],
+   q(gbaya-mbodomo) => [
+      q(2545),
+      q(0),
+      ],
+   q(gbayi) => [
+      q(2685),
+      q(0),
+      ],
+   q(gbesi gbe) => [
+      q(2428),
+      q(0),
+      ],
+   q(gbii) => [
+      q(2481),
+      q(0),
+      ],
+   q(gbin) => [
+      q(7288),
+      q(0),
+      ],
+   q(gbiri-niragu) => [
+      q(2602),
+      q(0),
+      ],
+   q(gboloo grebo) => [
+      q(2464),
+      q(0),
+      ],
+   q(ge) => [
+      q(2771),
+      q(0),
+      ],
+   q(geba karen) => [
+      q(3661),
+      q(0),
+      ],
+   q(gebe) => [
+      q(2468),
+      q(0),
+      ],
+   q(gedaged) => [
+      q(2445),
+      q(0),
+      ],
+   q(gedeo) => [
+      q(2141),
+      q(0),
+      ],
+   q(geez) => [
+      q(0151),
+      q(0),
+      ],
+   q(geji) => [
+      q(2521),
+      q(0),
+      ],
+   q(gejia) => [
+      q(2771),
+      q(0),
+      ],
+   q(geko karen) => [
+      q(2497),
+      q(0),
+      ],
+   q(gela) => [
+      q(4931),
+      q(0),
+      ],
+   q(geman deng) => [
+      q(4636),
+      q(0),
+      ],
+   q(geme) => [
+      q(2472),
+      q(0),
+      ],
+   q(gen) => [
+      q(2469),
+      q(0),
+      ],
+   q(gende) => [
+      q(2393),
+      q(0),
+      ],
+   q(gengle) => [
+      q(2466),
+      q(0),
+      ],
+   q(georgian) => [
+      q(0149),
+      q(0),
+      ],
+   q(gepo) => [
+      q(7555),
+      q(0),
+      ],
+   q(gera) => [
+      q(2474),
+      q(0),
+      ],
+   q(gergiko) => [
+      q(4433),
+      q(0),
+      ],
+   q(german) => [
+      q(0150),
+      q(0),
+      ],
+   q(german sign language) => [
+      q(2618),
+      q(0),
+      ],
+   q(german, low) => [
+      q(0306),
+      q(0),
+      ],
+   q(german, middle high (ca.1050-1500)) => [
+      q(0157),
+      q(0),
+      ],
+   q(german, old high (ca.750-1050)) => [
+      q(0158),
+      q(0),
+      ],
+   q(germanic languages) => [
+      q(0148),
+      q(0),
+      ],
+   q(geruma) => [
+      q(2462),
+      q(0),
+      ],
+   q(geser-gorom) => [
+      q(2473),
+      q(0),
+      ],
+   q(gey) => [
+      q(2647),
+      q(0),
+      ],
+   q(ghadames) => [
+      q(2493),
+      q(0),
+      ],
+   q(ghanaian pidgin english) => [
+      q(2592),
+      q(0),
+      ],
+   q(ghanaian sign language) => [
+      q(2617),
+      q(0),
+      ],
+   q(ghandruk sign language) => [
+      q(2459),
+      q(0),
+      ],
+   q(ghanongga) => [
+      q(2499),
+      q(0),
+      ],
+   q(ghari) => [
+      q(2603),
+      q(0),
+      ],
+   q(ghayavi) => [
+      q(1313),
+      q(0),
+      ],
+   q(gheg albanian) => [
+      q(0757),
+      q(0),
+      ],
+   q(ghera) => [
+      q(2501),
+      q(0),
+      ],
+   q(ghodoberi) => [
+      q(2456),
+      q(0),
+      ],
+   q(ghomala') => [
+      q(1048),
+      q(0),
+      ],
+   q(ghomara) => [
+      q(2500),
+      q(0),
+      ],
+   q(ghotuo) => [
+      q(0538),
+      q(0),
+      ],
+   q(ghulfan) => [
+      q(2498),
+      q(0),
+      ],
+   q(giangan) => [
+      q(1169),
+      q(0),
+      ],
+   q(gibanawa) => [
+      q(2505),
+      q(0),
+      ],
+   q(gichuka) => [
+      q(1905),
+      q(0),
+      ],
+   q(gidar) => [
+      q(2507),
+      q(0),
+      ],
+   q(giiwo) => [
+      q(3398),
+      q(0),
+      ],
+   q(gikuyu) => [
+      q(0224),
+      q(0),
+      ],
+   q(gikyode) => [
+      q(0587),
+      q(0),
+      ],
+   q(gilaki) => [
+      q(2535),
+      q(0),
+      ],
+   q(gilbertese) => [
+      q(0152),
+      q(0),
+      ],
+   q(gilima) => [
+      q(2518),
+      q(0),
+      ],
+   q(gilyak) => [
+      q(4882),
+      q(0),
+      ],
+   q(gimi (eastern highlands)) => [
+      q(2509),
+      q(0),
+      ],
+   q(gimi (west new britain)) => [
+      q(2511),
+      q(0),
+      ],
+   q(gimme) => [
+      q(3446),
+      q(0),
+      ],
+   q(gimnime) => [
+      q(2546),
+      q(0),
+      ],
+   q(ginuman) => [
+      q(2561),
+      q(0),
+      ],
+   q(ginyanga) => [
+      q(0998),
+      q(0),
+      ],
+   q(girawa) => [
+      q(1056),
+      q(0),
+      ],
+   q(giryama) => [
+      q(5136),
+      q(0),
+      ],
+   q(gitonga) => [
+      q(6608),
+      q(0),
+      ],
+   q(gitua) => [
+      q(2490),
+      q(0),
+      ],
+   q(gitxsan) => [
+      q(2515),
+      q(0),
+      ],
+   q(giyug) => [
+      q(2519),
+      q(0),
+      ],
+   q(gizrra) => [
+      q(6607),
+      q(0),
+      ],
+   q(glaro-twabo) => [
+      q(2537),
+      q(0),
+      ],
+   q(glavda) => [
+      q(2539),
+      q(0),
+      ],
+   q(glio-oubi) => [
+      q(5309),
+      q(0),
+      ],
+   q(gnau) => [
+      q(2567),
+      q(0),
+      ],
+   q(goan konkani) => [
+      q(2581),
+      q(0),
+      ],
+   q(goaria) => [
+      q(2508),
+      q(0),
+      ],
+   q(gobasi) => [
+      q(2577),
+      q(0),
+      ],
+   q(gobu) => [
+      q(2588),
+      q(0),
+      ],
+   q(godie) => [
+      q(2573),
+      q(0),
+      ],
+   q(godwari) => [
+      q(2461),
+      q(0),
+      ],
+   q(goemai) => [
+      q(0801),
+      q(0),
+      ],
+   q(gofa) => [
+      q(2575),
+      q(0),
+      ],
+   q(gogo) => [
+      q(2576),
+      q(0),
+      ],
+   q(gogodala) => [
+      q(2492),
+      q(0),
+      ],
+   q(gokana) => [
+      q(2527),
+      q(0),
+      ],
+   q(gola) => [
+      q(2580),
+      q(0),
+      ],
+   q(golin) => [
+      q(2654),
+      q(0),
+      ],
+   q(gondi) => [
+      q(0159),
+      q(0),
+      ],
+   q(gone dau) => [
+      q(2582),
+      q(0),
+      ],
+   q(gongduk) => [
+      q(2574),
+      q(0),
+      ],
+   q(gonja) => [
+      q(2523),
+      q(0),
+      ],
+   q(gooniyandi) => [
+      q(2558),
+      q(0),
+      ],
+   q(gor) => [
+      q(2597),
+      q(0),
+      ],
+   q(gorakor) => [
+      q(2572),
+      q(0),
+      ],
+   q(gorap) => [
+      q(2584),
+      q(0),
+      ],
+   q(gorontalo) => [
+      q(0160),
+      q(0),
+      ],
+   q(gorovu) => [
+      q(2607),
+      q(0),
+      ],
+   q(gorowa) => [
+      q(2587),
+      q(0),
+      ],
+   q(gothic) => [
+      q(0161),
+      q(0),
+      ],
+   q(goundo) => [
+      q(2589),
+      q(0),
+      ],
+   q(gourmanchema) => [
+      q(2649),
+      q(0),
+      ],
+   q(gowlan) => [
+      q(2578),
+      q(0),
+      ],
+   q(gowli) => [
+      q(2579),
+      q(0),
+      ],
+   q(gowro) => [
+      q(2669),
+      q(0),
+      ],
+   q(gozarkhani) => [
+      q(2590),
+      q(0),
+      ],
+   q(grangali) => [
+      q(4932),
+      q(0),
+      ],
+   q(grass koiari) => [
+      q(3171),
+      q(0),
+      ],
+   q(grebo) => [
+      q(0162),
+      q(0),
+      ],
+   q(greek) => [
+      q(0164),
+      q(2),
+      ],
+   q(greek languages) => [
+      q(0508),
+      q(0),
+      ],
+   q(greek sign language) => [
+      q(2624),
+      q(0),
+      ],
+   q(greek, ancient (to 1453)) => [
+      q(0163),
+      q(0),
+      ],
+   q(greek, modern (1453-)) => [
+      q(0164),
+      q(0),
+      ],
+   q(green gelao) => [
+      q(2512),
+      q(0),
+      ],
+   q(greenlandic) => [
+      q(0211),
+      q(0),
+      ],
+   q(grenadian creole english) => [
+      q(2438),
+      q(0),
+      ],
+   q(gresi) => [
+      q(2609),
+      q(0),
+      ],
+   q(groma) => [
+      q(2606),
+      q(0),
+      ],
+   q(gronings) => [
+      q(2585),
+      q(0),
+      ],
+   q(gros ventre) => [
+      q(0926),
+      q(0),
+      ],
+   q(gua) => [
+      q(2678),
+      q(0),
+      ],
+   q(guadeloupean creole french) => [
+      q(2437),
+      q(0),
+      ],
+   q(guahibo) => [
+      q(2634),
+      q(0),
+      ],
+   q(guaja) => [
+      q(2655),
+      q(0),
+      ],
+   q(guajajara) => [
+      q(2628),
+      q(0),
+      ],
+   q(guambiano) => [
+      q(2638),
+      q(0),
+      ],
+   q(guana (brazil)) => [
+      q(2596),
+      q(0),
+      ],
+   q(guana (paraguay)) => [
+      q(2651),
+      q(0),
+      ],
+   q(guanano) => [
+      q(2652),
+      q(0),
+      ],
+   q(guanche) => [
+      q(2553),
+      q(0),
+      ],
+   q(guanyinqiao) => [
+      q(3081),
+      q(0),
+      ],
+   q(guarani) => [
+      q(0165),
+      q(0),
+      ],
+   q(guarayu) => [
+      q(2690),
+      q(0),
+      ],
+   q(guarequena) => [
+      q(2392),
+      q(0),
+      ],
+   q(guatemalan sign language) => [
+      q(2620),
+      q(0),
+      ],
+   q(guato) => [
+      q(2625),
+      q(0),
+      ],
+   q(guayabero) => [
+      q(2640),
+      q(0),
+      ],
+   q(gudanji) => [
+      q(4891),
+      q(0),
+      ],
+   q(gude) => [
+      q(2446),
+      q(0),
+      ],
+   q(gudu) => [
+      q(2460),
+      q(0),
+      ],
+   q(guduf-gava) => [
+      q(2447),
+      q(0),
+      ],
+   q(guerrero amuzgo) => [
+      q(0786),
+      q(0),
+      ],
+   q(guerrero nahuatl) => [
+      q(4836),
+      q(0),
+      ],
+   q(guevea de humboldt zapotec) => [
+      q(7831),
+      q(0),
+      ],
+   q(gugadj) => [
+      q(2482),
+      q(0),
+      ],
+   q(gugu badhun) => [
+      q(2444),
+      q(0),
+      ],
+   q(gugu warra) => [
+      q(7189),
+      q(0),
+      ],
+   q(gugubera) => [
+      q(3395),
+      q(0),
+      ],
+   q(guguyimidjir) => [
+      q(3404),
+      q(0),
+      ],
+   q(guhu-samane) => [
+      q(2502),
+      q(0),
+      ],
+   q(guianese creole french) => [
+      q(2440),
+      q(0),
+      ],
+   q(guibei zhuang) => [
+      q(7751),
+      q(0),
+      ],
+   q(guiberoua bete) => [
+      q(1130),
+      q(0),
+      ],
+   q(guibian zhuang) => [
+      q(7753),
+      q(0),
+      ],
+   q(guila zapotec) => [
+      q(7873),
+      q(0),
+      ],
+   q(guinea kpelle) => [
+      q(2529),
+      q(0),
+      ],
+   q(guinean sign language) => [
+      q(2644),
+      q(0),
+      ],
+   q(guiqiong) => [
+      q(2595),
+      q(0),
+      ],
+   q(gujarati) => [
+      q(0167),
+      q(0),
+      ],
+   q(gujari) => [
+      q(2524),
+      q(0),
+      ],
+   q(gula (central african republic)) => [
+      q(3199),
+      q(0),
+      ],
+   q(gula (chad)) => [
+      q(2538),
+      q(0),
+      ],
+   q(gula iro) => [
+      q(2534),
+      q(0),
+      ],
+   q(gula'alaa) => [
+      q(2542),
+      q(0),
+      ],
+   q(gulay) => [
+      q(2656),
+      q(0),
+      ],
+   q(gule) => [
+      q(2540),
+      q(0),
+      ],
+   q(gulf arabic) => [
+      q(0641),
+      q(0),
+      ],
+   q(guliguli) => [
+      q(2533),
+      q(0),
+      ],
+   q(gumalu) => [
+      q(2547),
+      q(0),
+      ],
+   q(gumatj) => [
+      q(2562),
+      q(0),
+      ],
+   q(gumawana) => [
+      q(2662),
+      q(0),
+      ],
+   q(gumuz) => [
+      q(2636),
+      q(0),
+      ],
+   q(gun) => [
+      q(2648),
+      q(0),
+      ],
+   q(gundi) => [
+      q(2450),
+      q(0),
+      ],
+   q(gungabula) => [
+      q(2684),
+      q(0),
+      ],
+   q(gungu) => [
+      q(5834),
+      q(0),
+      ],
+   q(guntai) => [
+      q(2566),
+      q(0),
+      ],
+   q(gunwinggu) => [
+      q(2641),
+      q(0),
+      ],
+   q(gunya) => [
+      q(2691),
+      q(0),
+      ],
+   q(gupa-abawa) => [
+      q(2591),
+      q(0),
+      ],
+   q(gupapuyngu) => [
+      q(2632),
+      q(0),
+      ],
+   q(guragone) => [
+      q(2483),
+      q(0),
+      ],
+   q(guramalum) => [
+      q(2616),
+      q(0),
+      ],
+   q(gurani) => [
+      q(2697),
+      q(0),
+      ],
+   q(gurdjar) => [
+      q(2451),
+      q(0),
+      ],
+   q(gureng gureng) => [
+      q(2565),
+      q(0),
+      ],
+   q(gurgula) => [
+      q(2484),
+      q(0),
+      ],
+   q(guriaso) => [
+      q(2614),
+      q(0),
+      ],
+   q(gurinji) => [
+      q(2631),
+      q(0),
+      ],
+   q(gurmana) => [
+      q(2657),
+      q(0),
+      ],
+   q(guro) => [
+      q(2570),
+      q(0),
+      ],
+   q(guruntum-mbaaru) => [
+      q(2600),
+      q(0),
+      ],
+   q(gusan) => [
+      q(2621),
+      q(0),
+      ],
+   q(gusii) => [
+      q(2650),
+      q(0),
+      ],
+   q(gusilay) => [
+      q(2619),
+      q(0),
+      ],
+   q(guwamu) => [
+      q(2676),
+      q(0),
+      ],
+   q(guya) => [
+      q(2525),
+      q(0),
+      ],
+   q(guyanese creole english) => [
+      q(2689),
+      q(0),
+      ],
+   q(guyani) => [
+      q(2663),
+      q(0),
+      ],
+   q(gvoko) => [
+      q(4834),
+      q(0),
+      ],
+   q(gwa) => [
+      q(2665),
+      q(0),
+      ],
+   q(gwahatike) => [
+      q(1942),
+      q(0),
+      ],
+   q(gwak) => [
+      q(3066),
+      q(0),
+      ],
+   q(gwamhi-wuri) => [
+      q(1162),
+      q(0),
+      ],
+   q(gwandara) => [
+      q(2673),
+      q(0),
+      ],
+   q(gweda) => [
+      q(2613),
+      q(0),
+      ],
+   q(gweno) => [
+      q(2668),
+      q(0),
+      ],
+   q(gwere) => [
+      q(2674),
+      q(0),
+      ],
+   q(gwich'in) => [
+      q(0168),
+      q(0),
+      ],
+   q(gyele) => [
+      q(2686),
+      q(0),
+      ],
+   q(gyem) => [
+      q(2683),
+      q(0),
+      ],
+   q(ha) => [
+      q(2710),
+      q(0),
+      ],
+   q(habu) => [
+      q(2721),
+      q(0),
+      ],
+   q(hadiyya) => [
+      q(2726),
+      q(0),
+      ],
+   q(hadothi) => [
+      q(2802),
+      q(0),
+      ],
+   q(hadrami) => [
+      q(7295),
+      q(0),
+      ],
+   q(hadrami arabic) => [
+      q(0999),
+      q(0),
+      ],
+   q(hadza) => [
+      q(2831),
+      q(0),
+      ],
+   q(haeke) => [
+      q(0630),
+      q(0),
+      ],
+   q(hahon) => [
+      q(2702),
+      q(0),
+      ],
+   q(hai//om) => [
+      q(2733),
+      q(0),
+      ],
+   q(haida) => [
+      q(0169),
+      q(0),
+      ],
+   q(haigwai) => [
+      q(2734),
+      q(0),
+      ],
+   q(haiphong sign language) => [
+      q(2700),
+      q(0),
+      ],
+   q(haisla) => [
+      q(2712),
+      q(0),
+      ],
+   q(haitian) => [
+      q(0170),
+      q(0),
+      ],
+   q(haitian creole) => [
+      q(0170),
+      q(0),
+      ],
+   q(haitian vodoun culture language) => [
+      q(2857),
+      q(0),
+      ],
+   q(haji) => [
+      q(2751),
+      q(0),
+      ],
+   q(hajong) => [
+      q(2703),
+      q(0),
+      ],
+   q(haka chin) => [
+      q(1799),
+      q(0),
+      ],
+   q(hakka chinese) => [
+      q(2704),
+      q(0),
+      ],
+   q(hako) => [
+      q(2708),
+      q(0),
+      ],
+   q(halang) => [
+      q(2705),
+      q(0),
+      ],
+   q(halang doan) => [
+      q(2758),
+      q(0),
+      ],
+   q(halbi) => [
+      q(2757),
+      q(0),
+      ],
+   q(halh mongolian) => [
+      q(3319),
+      q(0),
+      ],
+   q(halia) => [
+      q(2756),
+      q(0),
+      ],
+   q(halkomelem) => [
+      q(2848),
+      q(0),
+      ],
+   q(hamap) => [
+      q(2780),
+      q(0),
+      ],
+   q(hamba) => [
+      q(2717),
+      q(0),
+      ],
+   q(hamer-banna) => [
+      q(0772),
+      q(0),
+      ],
+   q(hamtai) => [
+      q(2779),
+      q(0),
+      ],
+   q(han) => [
+      q(2695),
+      q(0),
+      ],
+   q(hanga) => [
+      q(2701),
+      q(0),
+      ],
+   q(hanga hundi) => [
+      q(7169),
+      q(0),
+      ],
+   q(hangaza) => [
+      q(2707),
+      q(0),
+      ],
+   q(hani) => [
+      q(2789),
+      q(0),
+      ],
+   q(hano) => [
+      q(3962),
+      q(0),
+      ],
+   q(hanoi sign language) => [
+      q(2696),
+      q(0),
+      ],
+   q(hanunoo) => [
+      q(2791),
+      q(0),
+      ],
+   q(harami) => [
+      q(7293),
+      q(0),
+      ],
+   q(harari) => [
+      q(2711),
+      q(0),
+      ],
+   q(harijan kinnauri) => [
+      q(3370),
+      q(0),
+      ],
+   q(haroi) => [
+      q(2820),
+      q(0),
+      ],
+   q(haroti) => [
+      q(2802),
+      q(0),
+      ],
+   q(harsusi) => [
+      q(2828),
+      q(0),
+      ],
+   q(haruai) => [
+      q(6558),
+      q(0),
+      ],
+   q(haruku) => [
+      q(2818),
+      q(0),
+      ],
+   q(haryanvi) => [
+      q(1164),
+      q(0),
+      ],
+   q(harzani) => [
+      q(2824),
+      q(0),
+      ],
+   q(hasha) => [
+      q(7523),
+      q(0),
+      ],
+   q(hassaniyya) => [
+      q(4198),
+      q(0),
+      ],
+   q(hatam) => [
+      q(2698),
+      q(0),
+      ],
+   q(hattic) => [
+      q(7298),
+      q(0),
+      ],
+   q(hausa) => [
+      q(0171),
+      q(0),
+      ],
+   q(hausa sign language) => [
+      q(2826),
+      q(0),
+      ],
+   q(havasupai-walapai-yavapai) => [
+      q(7683),
+      q(0),
+      ],
+   q(haveke) => [
+      q(2859),
+      q(0),
+      ],
+   q(havu) => [
+      q(2713),
+      q(0),
+      ],
+   q(hawai'i creole english) => [
+      q(2863),
+      q(0),
+      ],
+   q(hawai'i pidgin sign language) => [
+      q(2815),
+      q(0),
+      ],
+   q(hawaiian) => [
+      q(0172),
+      q(0),
+      ],
+   q(haya) => [
+      q(2715),
+      q(0),
+      ],
+   q(hazaragi) => [
+      q(2716),
+      q(0),
+      ],
+   q(hdi) => [
+      q(7277),
+      q(0),
+      ],
+   q(hebrew) => [
+      q(0173),
+      q(0),
+      ],
+   q(hehe) => [
+      q(2730),
+      q(0),
+      ],
+   q(heiban) => [
+      q(2719),
+      q(0),
+      ],
+   q(heiltsuk) => [
+      q(2731),
+      q(0),
+      ],
+   q(helambu sherpa) => [
+      q(5907),
+      q(0),
+      ],
+   q(helong) => [
+      q(2729),
+      q(0),
+      ],
+   q(hema) => [
+      q(4884),
+      q(0),
+      ],
+   q(hemba) => [
+      q(2732),
+      q(0),
+      ],
+   q(herde) => [
+      q(2728),
+      q(0),
+      ],
+   q(herero) => [
+      q(0174),
+      q(0),
+      ],
+   q(hermit) => [
+      q(3936),
+      q(0),
+      ],
+   q(hernican) => [
+      q(7297),
+      q(0),
+      ],
+   q(hertevin) => [
+      q(2821),
+      q(0),
+      ],
+   q(heung kong sau yue) => [
+      q(2755),
+      q(0),
+      ],
+   q(hewa) => [
+      q(2706),
+      q(0),
+      ],
+   q(heyo) => [
+      q(0943),
+      q(0),
+      ],
+   q(hiberno-scottish gaelic) => [
+      q(2494),
+      q(0),
+      ],
+   q(hibito) => [
+      q(2739),
+      q(0),
+      ],
+   q(hidatsa) => [
+      q(2740),
+      q(0),
+      ],
+   q(hieroglyphic luwian) => [
+      q(2761),
+      q(0),
+      ],
+   q(higaonon) => [
+      q(4102),
+      q(0),
+      ],
+   q(highland konjo) => [
+      q(3366),
+      q(0),
+      ],
+   q(highland oaxaca chontal) => [
+      q(1721),
+      q(0),
+      ],
+   q(highland popoluca) => [
+      q(5534),
+      q(0),
+      ],
+   q(highland puebla nahuatl) => [
+      q(1022),
+      q(0),
+      ],
+   q(highland totonac) => [
+      q(6617),
+      q(0),
+      ],
+   q(hijazi arabic) => [
+      q(0601),
+      q(0),
+      ],
+   q(hijuk) => [
+      q(2745),
+      q(0),
+      ],
+   q(hiligaynon) => [
+      q(0175),
+      q(0),
+      ],
+   q(himachali languages) => [
+      q(0176),
+      q(0),
+      ],
+   q(himarima) => [
+      q(2748),
+      q(0),
+      ],
+   q(hindi) => [
+      q(0177),
+      q(0),
+      ],
+   q(hinduri) => [
+      q(2744),
+      q(0),
+      ],
+   q(hinukh) => [
+      q(2510),
+      q(0),
+      ],
+   q(hiri motu) => [
+      q(0180),
+      q(0),
+      ],
+   q(hittite) => [
+      q(0178),
+      q(0),
+      ],
+   q(hitu) => [
+      q(2832),
+      q(0),
+      ],
+   q(hiw) => [
+      q(2749),
+      q(0),
+      ],
+   q(hixkaryana) => [
+      q(2750),
+      q(0),
+      ],
+   q(hlai) => [
+      q(3891),
+      q(0),
+      ],
+   q(hlepho phowa) => [
+      q(7560),
+      q(0),
+      ],
+   q(hlersu) => [
+      q(2759),
+      q(0),
+      ],
+   q(hmar) => [
+      q(2777),
+      q(0),
+      ],
+   q(hmong) => [
+      q(0179),
+      q(0),
+      ],
+   q(hmong daw) => [
+      q(4623),
+      q(0),
+      ],
+   q(hmong do) => [
+      q(2781),
+      q(0),
+      ],
+   q(hmong don) => [
+      q(2767),
+      q(0),
+      ],
+   q(hmong njua) => [
+      q(2790),
+      q(0),
+      ],
+   q(hmong shua) => [
+      q(2784),
+      q(0),
+      ],
+   q(hmong-mien languages) => [
+      q(0509),
+      q(0),
+      ],
+   q(hmwaveke) => [
+      q(4493),
+      q(0),
+      ],
+   q(ho) => [
+      q(2797),
+      q(0),
+      ],
+   q(ho chi minh city sign language) => [
+      q(2808),
+      q(0),
+      ],
+   q(ho-chunk) => [
+      q(7100),
+      q(0),
+      ],
+   q(hoava) => [
+      q(2795),
+      q(0),
+      ],
+   q(hobyot) => [
+      q(2800),
+      q(0),
+      ],
+   q(hoia hoia) => [
+      q(2735),
+      q(0),
+      ],
+   q(hokan languages) => [
+      q(0510),
+      q(0),
+      ],
+   q(holikachuk) => [
+      q(2801),
+      q(0),
+      ],
+   q(holiya) => [
+      q(2812),
+      q(0),
+      ],
+   q(holma) => [
+      q(2798),
+      q(0),
+      ],
+   q(holoholo) => [
+      q(2805),
+      q(0),
+      ],
+   q(holu) => [
+      q(2803),
+      q(0),
+      ],
+   q(homa) => [
+      q(2804),
+      q(0),
+      ],
+   q(honduras sign language) => [
+      q(2725),
+      q(0),
+      ],
+   q(hone) => [
+      q(3128),
+      q(0),
+      ],
+   q(hong kong sign language) => [
+      q(2755),
+      q(0),
+      ],
+   q(honi) => [
+      q(2811),
+      q(0),
+      ],
+   q(hopi) => [
+      q(2806),
+      q(0),
+      ],
+   q(horned miao) => [
+      q(2819),
+      q(0),
+      ],
+   q(horo) => [
+      q(2807),
+      q(0),
+      ],
+   q(horom) => [
+      q(2799),
+      q(0),
+      ],
+   q(horpa) => [
+      q(2279),
+      q(0),
+      ],
+   q(hote) => [
+      q(2809),
+      q(0),
+      ],
+   q(hoti) => [
+      q(2829),
+      q(0),
+      ],
+   q(hovongan) => [
+      q(2810),
+      q(0),
+      ],
+   q(hoyahoya) => [
+      q(2737),
+      q(0),
+      ],
+   q(hozo) => [
+      q(2813),
+      q(0),
+      ],
+   q(hpon) => [
+      q(2814),
+      q(0),
+      ],
+   q(hrangkhol) => [
+      q(2816),
+      q(0),
+      ],
+   q(hre) => [
+      q(2817),
+      q(0),
+      ],
+   q(hruso) => [
+      q(2822),
+      q(0),
+      ],
+   q(hu) => [
+      q(2846),
+      q(0),
+      ],
+   q(huachipaeri) => [
+      q(2839),
+      q(0),
+      ],
+   q(huallaga huanuco quechua) => [
+      q(5654),
+      q(0),
+      ],
+   q(huamalies-dos de mayo huanuco quechua) => [
+      q(5677),
+      q(0),
+      ],
+   q(huambisa) => [
+      q(2834),
+      q(0),
+      ],
+   q(huarijio) => [
+      q(6946),
+      q(0),
+      ],
+   q(huastec) => [
+      q(2849),
+      q(0),
+      ],
+   q(huaulu) => [
+      q(2836),
+      q(0),
+      ],
+   q(huautla mazatec) => [
+      q(4097),
+      q(0),
+      ],
+   q(huaxcaleca nahuatl) => [
+      q(4856),
+      q(0),
+      ],
+   q(huaylas ancash quechua) => [
+      q(5691),
+      q(0),
+      ],
+   q(huaylla wanca quechua) => [
+      q(5686),
+      q(0),
+      ],
+   q(huba) => [
+      q(2718),
+      q(0),
+      ],
+   q(huehuetla tepehua) => [
+      q(6422),
+      q(0),
+      ],
+   q(huichol) => [
+      q(2723),
+      q(0),
+      ],
+   q(huilliche) => [
+      q(2840),
+      q(0),
+      ],
+   q(huitepec mixtec) => [
+      q(4645),
+      q(0),
+      ],
+   q(huizhou chinese) => [
+      q(1931),
+      q(0),
+      ],
+   q(hukumina) => [
+      q(2853),
+      q(0),
+      ],
+   q(hula) => [
+      q(2844),
+      q(0),
+      ],
+   q(hulaula) => [
+      q(2855),
+      q(0),
+      ],
+   q(huli) => [
+      q(2841),
+      q(0),
+      ],
+   q(hulung) => [
+      q(2843),
+      q(0),
+      ],
+   q(humburi senni songhay) => [
+      q(2763),
+      q(0),
+      ],
+   q(humene) => [
+      q(2838),
+      q(0),
+      ],
+   q(humla) => [
+      q(2850),
+      q(0),
+      ],
+   q(hun-saare) => [
+      q(2168),
+      q(0),
+      ],
+   q(hunde) => [
+      q(2753),
+      q(0),
+      ],
+   q(hung) => [
+      q(2794),
+      q(0),
+      ],
+   q(hungana) => [
+      q(2845),
+      q(0),
+      ],
+   q(hungarian) => [
+      q(0183),
+      q(0),
+      ],
+   q(hungarian sign language) => [
+      q(2825),
+      q(0),
+      ],
+   q(hungworo) => [
+      q(4716),
+      q(0),
+      ],
+   q(hunjara-kaina ke) => [
+      q(2754),
+      q(0),
+      ],
+   q(hunnic) => [
+      q(7294),
+      q(0),
+      ],
+   q(hunsrik) => [
+      q(2823),
+      q(0),
+      ],
+   q(hunzib) => [
+      q(2856),
+      q(0),
+      ],
+   q(hupa) => [
+      q(0184),
+      q(0),
+      ],
+   q(hupde) => [
+      q(3135),
+      q(0),
+      ],
+   q(hupla) => [
+      q(2709),
+      q(0),
+      ],
+   q(hurrian) => [
+      q(7299),
+      q(0),
+      ],
+   q(hutterisch) => [
+      q(2467),
+      q(0),
+      ],
+   q(hutterite german) => [
+      q(2467),
+      q(0),
+      ],
+   q(hwana) => [
+      q(2864),
+      q(0),
+      ],
+   q(hya) => [
+      q(2865),
+      q(0),
+      ],
+   q(hyam) => [
+      q(3021),
+      q(0),
+      ],
+   q(i'saka) => [
+      q(3580),
+      q(0),
+      ],
+   q(i-wak) => [
+      q(3008),
+      q(0),
+      ],
+   q(iaai) => [
+      q(2866),
+      q(0),
+      ],
+   q(iamalele) => [
+      q(7612),
+      q(0),
+      ],
+   q(iapama) => [
+      q(2868),
+      q(0),
+      ],
+   q(iatmul) => [
+      q(2867),
+      q(0),
+      ],
+   q(iau) => [
+      q(6574),
+      q(0),
+      ],
+   q(ibali teke) => [
+      q(6427),
+      q(0),
+      ],
+   q(ibaloi) => [
+      q(2874),
+      q(0),
+      ],
+   q(iban) => [
+      q(0185),
+      q(0),
+      ],
+   q(ibanag) => [
+      q(2873),
+      q(0),
+      ],
+   q(ibani) => [
+      q(2879),
+      q(0),
+      ],
+   q(ibatan) => [
+      q(3006),
+      q(0),
+      ],
+   q(iberian) => [
+      q(7302),
+      q(0),
+      ],
+   q(ibibio) => [
+      q(2870),
+      q(0),
+      ],
+   q(ibino) => [
+      q(2876),
+      q(0),
+      ],
+   q(ibu) => [
+      q(2878),
+      q(0),
+      ],
+   q(ibuoro) => [
+      q(2877),
+      q(0),
+      ],
+   q(icelandic) => [
+      q(0187),
+      q(0),
+      ],
+   q(icelandic sign language) => [
+      q(2882),
+      q(0),
+      ],
+   q(iceve-maci) => [
+      q(1118),
+      q(0),
+      ],
+   q(ida'an) => [
+      q(1962),
+      q(0),
+      ],
+   q(idakho-isukha-tiriki) => [
+      q(2884),
+      q(0),
+      ],
+   q(idate) => [
+      q(2892),
+      q(0),
+      ],
+   q(idere) => [
+      q(2888),
+      q(0),
+      ],
+   q(idesa) => [
+      q(2891),
+      q(0),
+      ],
+   q(idi) => [
+      q(2889),
+      q(0),
+      ],
+   q(ido) => [
+      q(0188),
+      q(0),
+      ],
+   q(idoma) => [
+      q(2893),
+      q(0),
+      ],
+   q(idon) => [
+      q(2886),
+      q(0),
+      ],
+   q(idu-mishmi) => [
+      q(1776),
+      q(0),
+      ],
+   q(iduna) => [
+      q(6970),
+      q(0),
+      ],
+   q(ife) => [
+      q(2896),
+      q(0),
+      ],
+   q(ifo) => [
+      q(2897),
+      q(0),
+      ],
+   q(igala) => [
+      q(2905),
+      q(0),
+      ],
+   q(igana) => [
+      q(2904),
+      q(0),
+      ],
+   q(igbo) => [
+      q(0186),
+      q(0),
+      ],
+   q(igede) => [
+      q(2903),
+      q(0),
+      ],
+   q(ignaciano) => [
+      q(2907),
+      q(0),
+      ],
+   q(igo) => [
+      q(0685),
+      q(0),
+      ],
+   q(iguta) => [
+      q(4714),
+      q(0),
+      ],
+   q(igwe) => [
+      q(2910),
+      q(0),
+      ],
+   q(iha) => [
+      q(2913),
+      q(0),
+      ],
+   q(iha based pidgin) => [
+      q(2911),
+      q(0),
+      ],
+   q(ihievbe) => [
+      q(2912),
+      q(0),
+      ],
+   q(ija-zuba) => [
+      q(6972),
+      q(0),
+      ],
+   q(ijo languages) => [
+      q(0190),
+      q(0),
+      ],
+   q(ik) => [
+      q(2929),
+      q(0),
+      ],
+   q(ika) => [
+      q(2922),
+      q(0),
+      ],
+   q(ikizu) => [
+      q(2930),
+      q(0),
+      ],
+   q(iko) => [
+      q(2921),
+      q(0),
+      ],
+   q(ikobi) => [
+      q(4177),
+      q(0),
+      ],
+   q(ikoma-nata-isenye) => [
+      q(5070),
+      q(0),
+      ],
+   q(ikpeng) => [
+      q(6787),
+      q(0),
+      ],
+   q(ikpeshi) => [
+      q(2925),
+      q(0),
+      ],
+   q(ikposo) => [
+      q(3515),
+      q(0),
+      ],
+   q(iku-gora-ankwa) => [
+      q(2927),
+      q(0),
+      ],
+   q(ikulu) => [
+      q(2923),
+      q(0),
+      ],
+   q(ikwere) => [
+      q(2928),
+      q(0),
+      ],
+   q(ila) => [
+      q(2932),
+      q(0),
+      ],
+   q(ile ape) => [
+      q(2931),
+      q(0),
+      ],
+   q(ili turki) => [
+      q(2934),
+      q(0),
+      ],
+   q(ili'uun) => [
+      q(2938),
+      q(0),
+      ],
+   q(ilianen manobo) => [
+      q(4109),
+      q(0),
+      ],
+   q(illyrian) => [
+      q(7304),
+      q(0),
+      ],
+   q(iloko) => [
+      q(0193),
+      q(0),
+      ],
+   q(ilongot) => [
+      q(2935),
+      q(0),
+      ],
+   q(ilue) => [
+      q(2939),
+      q(0),
+      ],
+   q(ilwana) => [
+      q(4353),
+      q(0),
+      ],
+   q(imbabura highland quichua) => [
+      q(5678),
+      q(0),
+      ],
+   q(imbongu) => [
+      q(2946),
+      q(0),
+      ],
+   q(imeraguen) => [
+      q(2942),
+      q(0),
+      ],
+   q(imonda) => [
+      q(2945),
+      q(0),
+      ],
+   q(imperial aramaic (700-300 bce)) => [
+      q(0022),
+      q(0),
+      ],
+   q(imroing) => [
+      q(2947),
+      q(0),
+      ],
+   q(inabaknon) => [
+      q(0582),
+      q(0),
+      ],
+   q(inapang) => [
+      q(4694),
+      q(0),
+      ],
+   q(inapari) => [
+      q(2957),
+      q(0),
+      ],
+   q(inari sami) => [
+      q(0391),
+      q(0),
+      ],
+   q(indian sign language) => [
+      q(2958),
+      q(0),
+      ],
+   q(indic languages) => [
+      q(0195),
+      q(0),
+      ],
+   q(indo-european languages) => [
+      q(0197),
+      q(0),
+      ],
+   q(indo-iranian languages) => [
+      q(0512),
+      q(0),
+      ],
+   q(indo-portuguese) => [
+      q(2885),
+      q(0),
+      ],
+   q(indonesian) => [
+      q(0196),
+      q(0),
+      ],
+   q(indonesian bajau) => [
+      q(1101),
+      q(0),
+      ],
+   q(indonesian sign language) => [
+      q(2953),
+      q(0),
+      ],
+   q(indri) => [
+      q(2890),
+      q(0),
+      ],
+   q(indus kohistani) => [
+      q(4601),
+      q(0),
+      ],
+   q(indus valley language) => [
+      q(7308),
+      q(0),
+      ],
+   q(inebu one) => [
+      q(5193),
+      q(0),
+      ],
+   q(ineseno) => [
+      q(2960),
+      q(0),
+      ],
+   q(inga) => [
+      q(2950),
+      q(0),
+      ],
+   q(ingrian) => [
+      q(3017),
+      q(0),
+      ],
+   q(ingush) => [
+      q(0198),
+      q(0),
+      ],
+   q(inlaod itneg) => [
+      q(2992),
+      q(0),
+      ],
+   q(inoke-yate) => [
+      q(2956),
+      q(0),
+      ],
+   q(inonhan) => [
+      q(3991),
+      q(0),
+      ],
+   q(inor) => [
+      q(2961),
+      q(0),
+      ],
+   q(inpui naga) => [
+      q(4909),
+      q(0),
+      ],
+   q(interglossa) => [
+      q(2909),
+      q(0),
+      ],
+   q(interlingua (international auxiliary language association)) => [
+      q(0194),
+      q(0),
+      ],
+   q(interlingue) => [
+      q(0192),
+      q(0),
+      ],
+   q(international sign) => [
+      q(2937),
+      q(0),
+      ],
+   q(intha) => [
+      q(2959),
+      q(0),
+      ],
+   q(inuinnaqtun) => [
+      q(2926),
+      q(0),
+      ],
+   q(inuktitut) => [
+      q(0191),
+      q(0),
+      ],
+   q(inupiaq) => [
+      q(0199),
+      q(0),
+      ],
+   q(iowa-oto) => [
+      q(2963),
+      q(0),
+      ],
+   q(ipalapa amuzgo) => [
+      q(1018),
+      q(0),
+      ],
+   q(ipiko) => [
+      q(2965),
+      q(0),
+      ],
+   q(ipili) => [
+      q(2964),
+      q(0),
+      ],
+   q(ipulo) => [
+      q(0903),
+      q(0),
+      ],
+   q(iquito) => [
+      q(2966),
+      q(0),
+      ],
+   q(ir) => [
+      q(2972),
+      q(0),
+      ],
+   q(iranian languages) => [
+      q(0200),
+      q(0),
+      ],
+   q(iranian persian) => [
+      q(5394),
+      q(0),
+      ],
+   q(irantxe) => [
+      q(2971),
+      q(0),
+      ],
+   q(iranun) => [
+      q(2936),
+      q(0),
+      ],
+   q(iraqw) => [
+      q(2970),
+      q(0),
+      ],
+   q(irarutu) => [
+      q(2968),
+      q(0),
+      ],
+   q(iraya) => [
+      q(2975),
+      q(0),
+      ],
+   q(iresim) => [
+      q(2967),
+      q(0),
+      ],
+   q(irigwe) => [
+      q(2969),
+      q(0),
+      ],
+   q(irish) => [
+      q(0154),
+      q(0),
+      ],
+   q(irish sign language) => [
+      q(2980),
+      q(0),
+      ],
+   q(irish, middle (900-1200)) => [
+      q(0278),
+      q(0),
+      ],
+   q(irish, old (to 900)) => [
+      q(0377),
+      q(0),
+      ],
+   q(iroquoian languages) => [
+      q(0201),
+      q(0),
+      ],
+   q(irula) => [
+      q(2973),
+      q(0),
+      ],
+   q(isabi) => [
+      q(2976),
+      q(0),
+      ],
+   q(isanzu) => [
+      q(2985),
+      q(0),
+      ],
+   q(isarog agta) => [
+      q(0664),
+      q(0),
+      ],
+   q(isconahua) => [
+      q(2977),
+      q(0),
+      ],
+   q(isebe) => [
+      q(2908),
+      q(0),
+      ],
+   q(isekiri) => [
+      q(2998),
+      q(0),
+      ],
+   q(ishkashimi) => [
+      q(2983),
+      q(0),
+      ],
+   q(isinai) => [
+      q(2955),
+      q(0),
+      ],
+   q(isirawa) => [
+      q(6189),
+      q(0),
+      ],
+   q(island carib) => [
+      q(1844),
+      q(0),
+      ],
+   q(islander creole english) => [
+      q(2883),
+      q(0),
+      ],
+   q(isnag) => [
+      q(2978),
+      q(0),
+      ],
+   q(isoko) => [
+      q(2986),
+      q(0),
+      ],
+   q(israeli sign language) => [
+      q(2987),
+      q(0),
+      ],
+   q(isthmus mixe) => [
+      q(4290),
+      q(0),
+      ],
+   q(isthmus zapotec) => [
+      q(7724),
+      q(0),
+      ],
+   q(isthmus-cosoleacaque nahuatl) => [
+      q(4851),
+      q(0),
+      ],
+   q(isthmus-mecayapan nahuatl) => [
+      q(4862),
+      q(0),
+      ],
+   q(isthmus-pajapan nahuatl) => [
+      q(4855),
+      q(0),
+      ],
+   q(istriot) => [
+      q(2988),
+      q(0),
+      ],
+   q(istro romanian) => [
+      q(5842),
+      q(0),
+      ],
+   q(isu (fako division)) => [
+      q(6324),
+      q(0),
+      ],
+   q(isu (menchum division)) => [
+      q(2989),
+      q(0),
+      ],
+   q(italian) => [
+      q(0202),
+      q(0),
+      ],
+   q(italian sign language) => [
+      q(2979),
+      q(0),
+      ],
+   q(italic languages) => [
+      q(0513),
+      q(0),
+      ],
+   q(itawit) => [
+      q(3000),
+      q(0),
+      ],
+   q(itelmen) => [
+      q(2994),
+      q(0),
+      ],
+   q(itene) => [
+      q(2991),
+      q(0),
+      ],
+   q(iteri) => [
+      q(2997),
+      q(0),
+      ],
+   q(itik) => [
+      q(3002),
+      q(0),
+      ],
+   q(ito) => [
+      q(3001),
+      q(0),
+      ],
+   q(itonama) => [
+      q(2996),
+      q(0),
+      ],
+   q(itu mbon uzo) => [
+      q(2995),
+      q(0),
+      ],
+   q(itundujia mixtec) => [
+      q(4131),
+      q(0),
+      ],
+   q(itza) => [
+      q(3004),
+      q(0),
+      ],
+   q(iu mien) => [
+      q(3005),
+      q(0),
+      ],
+   q(ivatan) => [
+      q(3007),
+      q(0),
+      ],
+   q(ivbie north-okpela-arhe) => [
+      q(0915),
+      q(0),
+      ],
+   q(iwaidja) => [
+      q(2871),
+      q(0),
+      ],
+   q(iwal) => [
+      q(3173),
+      q(0),
+      ],
+   q(iwam) => [
+      q(3009),
+      q(0),
+      ],
+   q(iwur) => [
+      q(3010),
+      q(0),
+      ],
+   q(ixcatec) => [
+      q(3012),
+      q(0),
+      ],
+   q(ixcatlan mazatec) => [
+      q(4682),
+      q(0),
+      ],
+   q(ixil) => [
+      q(3013),
+      q(0),
+      ],
+   q(ixtayutla mixtec) => [
+      q(6992),
+      q(0),
+      ],
+   q(ixtenco otomi) => [
+      q(5307),
+      q(0),
+      ],
+   q(iyayu) => [
+      q(3014),
+      q(0),
+      ],
+   q(iyive) => [
+      q(6845),
+      q(0),
+      ],
+   q(iyo) => [
+      q(4744),
+      q(0),
+      ],
+   q(iyo'wujwa chorote) => [
+      q(1856),
+      q(0),
+      ],
+   q(iyojwa'ja chorote) => [
+      q(1859),
+      q(0),
+      ],
+   q(izere) => [
+      q(3019),
+      q(0),
+      ],
+   q(izi-ezaa-ikwo-mgbo) => [
+      q(3018),
+      q(0),
+      ],
+   q(izon) => [
+      q(2915),
+      q(0),
+      ],
+   q(izora) => [
+      q(1673),
+      q(0),
+      ],
+   q(jabuti) => [
+      q(3045),
+      q(0),
+      ],
+   q(jad) => [
+      q(3050),
+      q(0),
+      ],
+   q(jadgali) => [
+      q(3051),
+      q(0),
+      ],
+   q(jah hut) => [
+      q(3026),
+      q(0),
+      ],
+   q(jahanka) => [
+      q(3023),
+      q(0),
+      ],
+   q(jair awyu) => [
+      q(0983),
+      q(0),
+      ],
+   q(jakalteko) => [
+      q(3022),
+      q(0),
+      ],
+   q(jakati) => [
+      q(3035),
+      q(0),
+      ],
+   q(jakun) => [
+      q(3028),
+      q(0),
+      ],
+   q(jalapa de diaz mazatec) => [
+      q(4093),
+      q(0),
+      ],
+   q(jalkunan) => [
+      q(1578),
+      q(0),
+      ],
+   q(jamaican country sign language) => [
+      q(3048),
+      q(0),
+      ],
+   q(jamaican creole english) => [
+      q(3030),
+      q(0),
+      ],
+   q(jamaican sign language) => [
+      q(3093),
+      q(0),
+      ],
+   q(jamamadi) => [
+      q(3020),
+      q(0),
+      ],
+   q(jambi malay) => [
+      q(3037),
+      q(0),
+      ],
+   q(jamiltepec mixtec) => [
+      q(4646),
+      q(0),
+      ],
+   q(jamsay dogon) => [
+      q(2066),
+      q(0),
+      ],
+   q(jandai) => [
+      q(3031),
+      q(0),
+      ],
+   q(jandavra) => [
+      q(3106),
+      q(0),
+      ],
+   q(jangkang) => [
+      q(2068),
+      q(0),
+      ],
+   q(jangshung) => [
+      q(3105),
+      q(0),
+      ],
+   q(janji) => [
+      q(3108),
+      q(0),
+      ],
+   q(japanese) => [
+      q(0205),
+      q(0),
+      ],
+   q(japanese (family)) => [
+      q(0514),
+      q(0),
+      ],
+   q(japanese sign language) => [
+      q(3123),
+      q(0),
+      ],
+   q(japreria) => [
+      q(3122),
+      q(0),
+      ],
+   q(jaqaru) => [
+      q(3118),
+      q(0),
+      ],
+   q(jara) => [
+      q(3025),
+      q(0),
+      ],
+   q(jarai) => [
+      q(3119),
+      q(0),
+      ],
+   q(jarawa (india)) => [
+      q(0806),
+      q(0),
+      ],
+   q(jaru) => [
+      q(1982),
+      q(0),
+      ],
+   q(jauja wanca quechua) => [
+      q(5707),
+      q(0),
+      ],
+   q(jaunsari) => [
+      q(3111),
+      q(0),
+      ],
+   q(javanese) => [
+      q(0203),
+      q(0),
+      ],
+   q(javindo) => [
+      q(3142),
+      q(0),
+      ],
+   q(jawe) => [
+      q(3039),
+      q(0),
+      ],
+   q(jaya) => [
+      q(3147),
+      q(0),
+      ],
+   q(jebero) => [
+      q(3053),
+      q(0),
+      ],
+   q(jeh) => [
+      q(3056),
+      q(0),
+      ],
+   q(jehai) => [
+      q(3068),
+      q(0),
+      ],
+   q(jemez) => [
+      q(6620),
+      q(0),
+      ],
+   q(jenaama bozo) => [
+      q(1619),
+      q(0),
+      ],
+   q(jeng) => [
+      q(3055),
+      q(0),
+      ],
+   q(jennu kurumba) => [
+      q(7465),
+      q(0),
+      ],
+   q(jere) => [
+      q(3061),
+      q(0),
+      ],
+   q(jeri kuo) => [
+      q(3058),
+      q(0),
+      ],
+   q(jerung) => [
+      q(3054),
+      q(0),
+      ],
+   q(jewish babylonian aramaic (ca. 200-1200 ce)) => [
+      q(6571),
+      q(0),
+      ],
+   q(jewish palestinian aramaic) => [
+      q(3117),
+      q(0),
+      ],
+   q(jhankot sign language) => [
+      q(3069),
+      q(0),
+      ],
+   q(jiamao) => [
+      q(3080),
+      q(0),
+      ],
+   q(jiarong) => [
+      q(3145),
+      q(0),
+      ],
+   q(jiba) => [
+      q(3134),
+      q(0),
+      ],
+   q(jibu) => [
+      q(3071),
+      q(0),
+      ],
+   q(jicarilla apache) => [
+      q(0844),
+      q(0),
+      ],
+   q(jiiddu) => [
+      q(3077),
+      q(0),
+      ],
+   q(jilbe) => [
+      q(3074),
+      q(0),
+      ],
+   q(jilim) => [
+      q(3078),
+      q(0),
+      ],
+   q(jimi (cameroon)) => [
+      q(3079),
+      q(0),
+      ],
+   q(jimi (nigeria)) => [
+      q(3098),
+      q(0),
+      ],
+   q(jina) => [
+      q(3070),
+      q(0),
+      ],
+   q(jingpho) => [
+      q(0210),
+      q(0),
+      ],
+   q(jinyu chinese) => [
+      q(1755),
+      q(0),
+      ],
+   q(jiongnai bunu) => [
+      q(5522),
+      q(0),
+      ],
+   q(jirel) => [
+      q(3131),
+      q(0),
+      ],
+   q(jiru) => [
+      q(3120),
+      q(0),
+      ],
+   q(jita) => [
+      q(3082),
+      q(0),
+      ],
+   q(jju) => [
+      q(3154),
+      q(0),
+      ],
+   q(joba) => [
+      q(3112),
+      q(0),
+      ],
+   q(jofotek-bromnya) => [
+      q(3044),
+      q(0),
+      ],
+   q(jola-fonyi) => [
+      q(2201),
+      q(0),
+      ],
+   q(jola-kasa) => [
+      q(1873),
+      q(0),
+      ],
+   q(jonkor bourmataguil) => [
+      q(3063),
+      q(0),
+      ],
+   q(jora) => [
+      q(3114),
+      q(0),
+      ],
+   q(jordanian sign language) => [
+      q(3115),
+      q(0),
+      ],
+   q(jorto) => [
+      q(3121),
+      q(0),
+      ],
+   q(jowulu) => [
+      q(3116),
+      q(0),
+      ],
+   q(ju) => [
+      q(3139),
+      q(0),
+      ],
+   q(ju/'hoan) => [
+      q(3623),
+      q(0),
+      ],
+   q(juang) => [
+      q(3133),
+      q(0),
+      ],
+   q(judeo-arabic) => [
+      q(0207),
+      q(0),
+      ],
+   q(judeo-berber) => [
+      q(3040),
+      q(0),
+      ],
+   q(judeo-georgian) => [
+      q(3065),
+      q(0),
+      ],
+   q(judeo-iraqi arabic) => [
+      q(7559),
+      q(0),
+      ],
+   q(judeo-italian) => [
+      q(2993),
+      q(0),
+      ],
+   q(judeo-moroccan arabic) => [
+      q(0721),
+      q(0),
+      ],
+   q(judeo-persian) => [
+      q(0206),
+      q(0),
+      ],
+   q(judeo-tat) => [
+      q(3052),
+      q(0),
+      ],
+   q(judeo-tripolitanian arabic) => [
+      q(7681),
+      q(0),
+      ],
+   q(judeo-tunisian arabic) => [
+      q(0720),
+      q(0),
+      ],
+   q(judeo-yemeni arabic) => [
+      q(3146),
+      q(0),
+      ],
+   q(jukun takum) => [
+      q(3046),
+      q(0),
+      ],
+   q(juma) => [
+      q(3124),
+      q(0),
+      ],
+   q(jumjum) => [
+      q(3132),
+      q(0),
+      ],
+   q(jumla sign language) => [
+      q(3137),
+      q(0),
+      ],
+   q(jumli) => [
+      q(3099),
+      q(0),
+      ],
+   q(jungle inga) => [
+      q(2952),
+      q(0),
+      ],
+   q(juquila mixe) => [
+      q(4643),
+      q(0),
+      ],
+   q(jur modo) => [
+      q(1134),
+      q(0),
+      ],
+   q(juray) => [
+      q(3141),
+      q(0),
+      ],
+   q(jurchen) => [
+      q(3126),
+      q(0),
+      ],
+   q(juruna) => [
+      q(3136),
+      q(0),
+      ],
+   q(jutish) => [
+      q(3138),
+      q(0),
+      ],
+   q(juwal) => [
+      q(4604),
+      q(0),
+      ],
+   q(juxtlahuaca mixtec) => [
+      q(6985),
+      q(0),
+      ],
+   q(jwira-pepesa) => [
+      q(3144),
+      q(0),
+      ],
+   q(k'iche') => [
+      q(5655),
+      q(0),
+      ],
+   q(kaamba) => [
+      q(7329),
+      q(0),
+      ],
+   q(kaan) => [
+      q(3832),
+      q(0),
+      ],
+   q(kaansa) => [
+      q(2551),
+      q(0),
+      ],
+   q(kaapor) => [
+      q(6892),
+      q(0),
+      ],
+   q(kaapor sign language) => [
+      q(6853),
+      q(0),
+      ],
+   q(kaba) => [
+      q(3587),
+      q(0),
+      ],
+   q(kabalai) => [
+      q(3650),
+      q(0),
+      ],
+   q(kabardian) => [
+      q(0219),
+      q(0),
+      ],
+   q(kabatei) => [
+      q(7324),
+      q(0),
+      ],
+   q(kabixi) => [
+      q(7257),
+      q(0),
+      ],
+   q(kabiye) => [
+      q(3176),
+      q(0),
+      ],
+   q(kabola) => [
+      q(3431),
+      q(0),
+      ],
+   q(kabore one) => [
+      q(5247),
+      q(0),
+      ],
+   q(kabras) => [
+      q(3917),
+      q(0),
+      ],
+   q(kaburi) => [
+      q(6847),
+      q(0),
+      ],
+   q(kabutra) => [
+      q(3181),
+      q(0),
+      ],
+   q(kabuverdianu) => [
+      q(3235),
+      q(0),
+      ],
+   q(kabwa) => [
+      q(1922),
+      q(0),
+      ],
+   q(kabwari) => [
+      q(3209),
+      q(0),
+      ],
+   q(kabyle) => [
+      q(0209),
+      q(0),
+      ],
+   q(kachama-ganjule) => [
+      q(3210),
+      q(0),
+      ],
+   q(kachari) => [
+      q(7231),
+      q(0),
+      ],
+   q(kachchi) => [
+      q(3278),
+      q(0),
+      ],
+   q(kachi koli) => [
+      q(2522),
+      q(0),
+      ],
+   q(kachin) => [
+      q(0210),
+      q(0),
+      ],
+   q(kacipo-balesi) => [
+      q(3485),
+      q(0),
+      ],
+   q(kaco') => [
+      q(7320),
+      q(0),
+      ],
+   q(kadai) => [
+      q(3751),
+      q(0),
+      ],
+   q(kadar) => [
+      q(3244),
+      q(0),
+      ],
+   q(kadaru) => [
+      q(3230),
+      q(0),
+      ],
+   q(kadiweu) => [
+      q(3164),
+      q(0),
+      ],
+   q(kadu) => [
+      q(7771),
+      q(0),
+      ],
+   q(kaduo) => [
+      q(3613),
+      q(0),
+      ],
+   q(kafa) => [
+      q(3178),
+      q(0),
+      ],
+   q(kafoa) => [
+      q(3520),
+      q(0),
+      ],
+   q(kagan kalagan) => [
+      q(3417),
+      q(0),
+      ],
+   q(kagate) => [
+      q(6313),
+      q(0),
+      ],
+   q(kagayanen) => [
+      q(1717),
+      q(0),
+      ],
+   q(kagoma) => [
+      q(3224),
+      q(0),
+      ],
+   q(kagoro) => [
+      q(7316),
+      q(0),
+      ],
+   q(kagulu) => [
+      q(3388),
+      q(0),
+      ],
+   q(kahe) => [
+      q(2752),
+      q(0),
+      ],
+   q(kahua) => [
+      q(0675),
+      q(0),
+      ],
+   q(kaian) => [
+      q(3206),
+      q(0),
+      ],
+   q(kaibobo) => [
+      q(3749),
+      q(0),
+      ],
+   q(kaidipang) => [
+      q(3762),
+      q(0),
+      ],
+   q(kaiep) => [
+      q(3183),
+      q(0),
+      ],
+   q(kaikadi) => [
+      q(3250),
+      q(0),
+      ],
+   q(kaike) => [
+      q(3763),
+      q(0),
+      ],
+   q(kaiku) => [
+      q(3396),
+      q(0),
+      ],
+   q(kaimbe) => [
+      q(7235),
+      q(0),
+      ],
+   q(kaimbulawa) => [
+      q(7769),
+      q(0),
+      ],
+   q(kaingang) => [
+      q(3301),
+      q(0),
+      ],
+   q(kairak) => [
+      q(1761),
+      q(0),
+      ],
+   q(kairiru) => [
+      q(3697),
+      q(0),
+      ],
+   q(kairui-midiki) => [
+      q(3554),
+      q(0),
+      ],
+   q(kais) => [
+      q(3759),
+      q(0),
+      ],
+   q(kaivi) => [
+      q(3191),
+      q(0),
+      ],
+   q(kaiwa) => [
+      q(3296),
+      q(0),
+      ],
+   q(kaiy) => [
+      q(6388),
+      q(0),
+      ],
+   q(kajakse) => [
+      q(1760),
+      q(0),
+      ],
+   q(kajali) => [
+      q(7319),
+      q(0),
+      ],
+   q(kajaman) => [
+      q(3151),
+      q(0),
+      ],
+   q(kakabai) => [
+      q(3531),
+      q(0),
+      ],
+   q(kakabe) => [
+      q(3384),
+      q(0),
+      ],
+   q(kakanda) => [
+      q(3380),
+      q(0),
+      ],
+   q(kakauhua) => [
+      q(3166),
+      q(0),
+      ],
+   q(kaki ae) => [
+      q(6351),
+      q(0),
+      ],
+   q(kakihum) => [
+      q(3701),
+      q(0),
+      ],
+   q(kako) => [
+      q(3389),
+      q(0),
+      ],
+   q(kakwa) => [
+      q(3249),
+      q(0),
+      ],
+   q(kala) => [
+      q(3198),
+      q(0),
+      ],
+   q(kala lagaw ya) => [
+      q(4617),
+      q(0),
+      ],
+   q(kalaallisut) => [
+      q(0211),
+      q(0),
+      ],
+   q(kalabakan) => [
+      q(3649),
+      q(0),
+      ],
+   q(kalabari) => [
+      q(2918),
+      q(0),
+      ],
+   q(kalabra) => [
+      q(3772),
+      q(0),
+      ],
+   q(kalagan) => [
+      q(3530),
+      q(0),
+      ],
+   q(kalaktang monpa) => [
+      q(3385),
+      q(0),
+      ],
+   q(kalam) => [
+      q(3438),
+      q(0),
+      ],
+   q(kalami) => [
+      q(2666),
+      q(0),
+      ],
+   q(kalamse) => [
+      q(3481),
+      q(0),
+      ],
+   q(kalanadi) => [
+      q(7111),
+      q(0),
+      ],
+   q(kalanga) => [
+      q(3197),
+      q(0),
+      ],
+   q(kalao) => [
+      q(3430),
+      q(0),
+      ],
+   q(kalapuya) => [
+      q(3733),
+      q(0),
+      ],
+   q(kalarko) => [
+      q(3162),
+      q(0),
+      ],
+   q(kalasha) => [
+      q(3424),
+      q(0),
+      ],
+   q(kalenjin) => [
+      q(3419),
+      q(0),
+      ],
+   q(kalispel-pend d'oreille) => [
+      q(2344),
+      q(0),
+      ],
+   q(kalkoti) => [
+      q(7310),
+      q(0),
+      ],
+   q(kalkutung) => [
+      q(3604),
+      q(0),
+      ],
+   q(kalmyk) => [
+      q(0470),
+      q(0),
+      ],
+   q(kalo finnish romani) => [
+      q(5783),
+      q(0),
+      ],
+   q(kalou) => [
+      q(7702),
+      q(0),
+      ],
+   q(kaluli) => [
+      q(1079),
+      q(0),
+      ],
+   q(kalumpang) => [
+      q(3414),
+      q(0),
+      ],
+   q(kam) => [
+      q(3232),
+      q(0),
+      ],
+   q(kamakan) => [
+      q(6976),
+      q(0),
+      ],
+   q(kamang) => [
+      q(7163),
+      q(0),
+      ],
+   q(kamano) => [
+      q(3177),
+      q(0),
+      ],
+   q(kamantan) => [
+      q(3195),
+      q(0),
+      ],
+   q(kamar) => [
+      q(3251),
+      q(0),
+      ],
+   q(kamara) => [
+      q(3101),
+      q(0),
+      ],
+   q(kamarian) => [
+      q(3770),
+      q(0),
+      ],
+   q(kamaru) => [
+      q(3309),
+      q(0),
+      ],
+   q(kamas) => [
+      q(7242),
+      q(0),
+      ],
+   q(kamasa) => [
+      q(3421),
+      q(0),
+      ],
+   q(kamasau) => [
+      q(3449),
+      q(0),
+      ],
+   q(kamayo) => [
+      q(3732),
+      q(0),
+      ],
+   q(kamayura) => [
+      q(3161),
+      q(0),
+      ],
+   q(kamba) => [
+      q(0212),
+      q(0),
+      ],
+   q(kamba (brazil)) => [
+      q(7248),
+      q(0),
+      ],
+   q(kamba (kenya)) => [
+      q(0212),
+      q(1),
+      ],
+   q(kambaata) => [
+      q(3599),
+      q(0),
+      ],
+   q(kambaira) => [
+      q(3746),
+      q(0),
+      ],
+   q(kambera) => [
+      q(7255),
+      q(0),
+      ],
+   q(kamberau) => [
+      q(2974),
+      q(0),
+      ],
+   q(kambiwa) => [
+      q(7256),
+      q(0),
+      ],
+   q(kami (nigeria)) => [
+      q(3439),
+      q(0),
+      ],
+   q(kami (tanzania)) => [
+      q(3207),
+      q(0),
+      ],
+   q(kamo) => [
+      q(3203),
+      q(0),
+      ],
+   q(kamoro) => [
+      q(3302),
+      q(0),
+      ],
+   q(kamta) => [
+      q(5777),
+      q(0),
+      ],
+   q(kamu) => [
+      q(7367),
+      q(0),
+      ],
+   q(kamula) => [
+      q(7335),
+      q(0),
+      ],
+   q(kamviri) => [
+      q(7474),
+      q(0),
+      ],
+   q(kamwe) => [
+      q(2742),
+      q(0),
+      ],
+   q(kanakanabu) => [
+      q(7374),
+      q(0),
+      ],
+   q(kanamari) => [
+      q(3468),
+      q(0),
+      ],
+   q(kanan) => [
+      q(7775),
+      q(0),
+      ],
+   q(kanashi) => [
+      q(7380),
+      q(0),
+      ],
+   q(kanasi) => [
+      q(6141),
+      q(0),
+      ],
+   q(kanauji) => [
+      q(1240),
+      q(0),
+      ],
+   q(kandas) => [
+      q(3548),
+      q(0),
+      ],
+   q(kandawo) => [
+      q(2400),
+      q(0),
+      ],
+   q(kande) => [
+      q(3179),
+      q(0),
+      ],
+   q(kanembu) => [
+      q(3172),
+      q(0),
+      ],
+   q(kang) => [
+      q(3737),
+      q(0),
+      ],
+   q(kanga) => [
+      q(3202),
+      q(0),
+      ],
+   q(kangean) => [
+      q(3401),
+      q(0),
+      ],
+   q(kanggape) => [
+      q(2906),
+      q(0),
+      ],
+   q(kangjia) => [
+      q(3714),
+      q(0),
+      ],
+   q(kango (bas-uele district)) => [
+      q(3622),
+      q(0),
+      ],
+   q(kango (tshopo district)) => [
+      q(3771),
+      q(0),
+      ],
+   q(kangri) => [
+      q(7379),
+      q(0),
+      ],
+   q(kaniet) => [
+      q(3608),
+      q(0),
+      ],
+   q(kanikkaran) => [
+      q(3256),
+      q(0),
+      ],
+   q(kaningdon-nindem) => [
+      q(3226),
+      q(0),
+      ],
+   q(kaningi) => [
+      q(3761),
+      q(0),
+      ],
+   q(kaningra) => [
+      q(3473),
+      q(0),
+      ],
+   q(kaninuwa) => [
+      q(7036),
+      q(0),
+      ],
+   q(kanite) => [
+      q(3451),
+      q(0),
+      ],
+   q(kanjari) => [
+      q(3280),
+      q(0),
+      ],
+   q(kanjobal) => [
+      q(3357),
+      q(0),
+      ],
+   q(kanju) => [
+      q(3165),
+      q(0),
+      ],
+   q(kankanaey) => [
+      q(3461),
+      q(0),
+      ],
+   q(kannada) => [
+      q(0213),
+      q(0),
+      ],
+   q(kannada kurumba) => [
+      q(3269),
+      q(0),
+      ],
+   q(kanoe) => [
+      q(3710),
+      q(0),
+      ],
+   q(kanowit-tanjong melanau) => [
+      q(3709),
+      q(0),
+      ],
+   q(kansa) => [
+      q(3582),
+      q(0),
+      ],
+   q(kantosi) => [
+      q(7328),
+      q(0),
+      ],
+   q(kanu) => [
+      q(3330),
+      q(0),
+      ],
+   q(kanufi) => [
+      q(3464),
+      q(0),
+      ],
+   q(kanuri) => [
+      q(0216),
+      q(0),
+      ],
+   q(kanyok) => [
+      q(3480),
+      q(0),
+      ],
+   q(kao) => [
+      q(3160),
+      q(0),
+      ],
+   q(kaonde) => [
+      q(3539),
+      q(0),
+      ],
+   q(kap) => [
+      q(7585),
+      q(0),
+      ],
+   q(kapampangan) => [
+      q(0337),
+      q(0),
+      ],
+   q(kapauri) => [
+      q(3322),
+      q(0),
+      ],
+   q(kapin) => [
+      q(6370),
+      q(0),
+      ],
+   q(kapinawa) => [
+      q(7401),
+      q(0),
+      ],
+   q(kapingamarangi) => [
+      q(3507),
+      q(0),
+      ],
+   q(kapori) => [
+      q(3322),
+      q(0),
+      ],
+   q(kapriman) => [
+      q(2070),
+      q(0),
+      ],
+   q(kaptiau) => [
+      q(3169),
+      q(0),
+      ],
+   q(kapya) => [
+      q(3420),
+      q(0),
+      ],
+   q(kaqchikel) => [
+      q(1649),
+      q(0),
+      ],
+   q(kara (central african republic)) => [
+      q(3152),
+      q(0),
+      ],
+   q(kara (korea)) => [
+      q(7852),
+      q(0),
+      ],
+   q(kara (papua new guinea)) => [
+      q(3858),
+      q(0),
+      ],
+   q(kara (tanzania)) => [
+      q(5741),
+      q(0),
+      ],
+   q(kara-kalpak) => [
+      q(0208),
+      q(0),
+      ],
+   q(karachay-balkar) => [
+      q(0234),
+      q(0),
+      ],
+   q(karadjeri) => [
+      q(2413),
+      q(0),
+      ],
+   q(karagas) => [
+      q(3344),
+      q(0),
+      ],
+   q(karahawyana) => [
+      q(7317),
+      q(0),
+      ],
+   q(karaim) => [
+      q(3228),
+      q(0),
+      ],
+   q(karaja) => [
+      q(3510),
+      q(0),
+      ],
+   q(karakhanid) => [
+      q(7409),
+      q(0),
+      ],
+   q(karami) => [
+      q(7241),
+      q(0),
+      ],
+   q(karamojong) => [
+      q(3221),
+      q(0),
+      ],
+   q(karang) => [
+      q(3764),
+      q(0),
+      ],
+   q(karanga) => [
+      q(3605),
+      q(0),
+      ],
+   q(karankawa) => [
+      q(7774),
+      q(0),
+      ],
+   q(karao) => [
+      q(3731),
+      q(0),
+      ],
+   q(karas) => [
+      q(3307),
+      q(0),
+      ],
+   q(karata) => [
+      q(3519),
+      q(0),
+      ],
+   q(karawa) => [
+      q(7420),
+      q(0),
+      ],
+   q(karbi) => [
+      q(4316),
+      q(0),
+      ],
+   q(kare (central african republic)) => [
+      q(3174),
+      q(0),
+      ],
+   q(kare (papua new guinea)) => [
+      q(3436),
+      q(0),
+      ],
+   q(karekare) => [
+      q(3153),
+      q(0),
+      ],
+   q(karelian) => [
+      q(0235),
+      q(0),
+      ],
+   q(karen languages) => [
+      q(0214),
+      q(0),
+      ],
+   q(karey) => [
+      q(3725),
+      q(0),
+      ],
+   q(kari) => [
+      q(3170),
+      q(0),
+      ],
+   q(karingani) => [
+      q(3299),
+      q(0),
+      ],
+   q(karipuna) => [
+      q(3298),
+      q(0),
+      ],
+   q(karipuna creole french) => [
+      q(3452),
+      q(0),
+      ],
+   q(kariri-xoco) => [
+      q(3769),
+      q(0),
+      ],
+   q(karitiana) => [
+      q(3611),
+      q(0),
+      ],
+   q(kariya) => [
+      q(3343),
+      q(0),
+      ],
+   q(kariyarra) => [
+      q(6971),
+      q(0),
+      ],
+   q(karkar-yuri) => [
+      q(7686),
+      q(0),
+      ],
+   q(karkin) => [
+      q(3553),
+      q(0),
+      ],
+   q(karko) => [
+      q(3394),
+      q(0),
+      ],
+   q(karnai) => [
+      q(1060),
+      q(0),
+      ],
+   q(karo (brazil)) => [
+      q(0879),
+      q(0),
+      ],
+   q(karo (ethiopia)) => [
+      q(3703),
+      q(0),
+      ],
+   q(karok) => [
+      q(3729),
+      q(0),
+      ],
+   q(karon) => [
+      q(3569),
+      q(0),
+      ],
+   q(karon dori) => [
+      q(3308),
+      q(0),
+      ],
+   q(karore) => [
+      q(7332),
+      q(0),
+      ],
+   q(kasanga) => [
+      q(1687),
+      q(0),
+      ],
+   q(kasem) => [
+      q(7430),
+      q(0),
+      ],
+   q(kashaya) => [
+      q(3376),
+      q(0),
+      ],
+   q(kashmiri) => [
+      q(0215),
+      q(0),
+      ],
+   q(kashubian) => [
+      q(0099),
+      q(0),
+      ],
+   q(kasiguranin) => [
+      q(3585),
+      q(0),
+      ],
+   q(kaska) => [
+      q(3405),
+      q(0),
+      ],
+   q(kaskean) => [
+      q(7859),
+      q(0),
+      ],
+   q(kasseng) => [
+      q(3289),
+      q(0),
+      ],
+   q(kasua) => [
+      q(3325),
+      q(0),
+      ],
+   q(kataang) => [
+      q(3290),
+      q(0),
+      ],
+   q(katabaga) => [
+      q(3614),
+      q(0),
+      ],
+   q(katawixi) => [
+      q(7243),
+      q(0),
+      ],
+   q(katbol) => [
+      q(6556),
+      q(0),
+      ],
+   q(katcha-kadugli-miri) => [
+      q(7442),
+      q(0),
+      ],
+   q(kate) => [
+      q(3437),
+      q(0),
+      ],
+   q(kathoriya tharu) => [
+      q(6529),
+      q(0),
+      ],
+   q(kathu) => [
+      q(7589),
+      q(0),
+      ],
+   q(kati) => [
+      q(1454),
+      q(0),
+      ],
+   q(katkari) => [
+      q(3281),
+      q(0),
+      ],
+   q(katla) => [
+      q(3204),
+      q(0),
+      ],
+   q(kato) => [
+      q(3620),
+      q(0),
+      ],
+   q(katso) => [
+      q(3150),
+      q(0),
+      ],
+   q(katua) => [
+      q(3598),
+      q(0),
+      ],
+   q(katukina) => [
+      q(3159),
+      q(0),
+      ],
+   q(kaulong) => [
+      q(5598),
+      q(0),
+      ],
+   q(kaur) => [
+      q(6974),
+      q(0),
+      ],
+   q(kaure) => [
+      q(1388),
+      q(0),
+      ],
+   q(kaurna) => [
+      q(7780),
+      q(0),
+      ],
+   q(kauwera) => [
+      q(7244),
+      q(0),
+      ],
+   q(kavalan) => [
+      q(1765),
+      q(0),
+      ],
+   q(kavet) => [
+      q(3567),
+      q(0),
+      ],
+   q(kawacha) => [
+      q(3188),
+      q(0),
+      ],
+   q(kawaiisu) => [
+      q(7246),
+      q(0),
+      ],
+   q(kawe) => [
+      q(3288),
+      q(0),
+      ],
+   q(kawi) => [
+      q(0217),
+      q(0),
+      ],
+   q(kaxarari) => [
+      q(3621),
+      q(0),
+      ],
+   q(kaxuiana) => [
+      q(3163),
+      q(0),
+      ],
+   q(kayabi) => [
+      q(3747),
+      q(0),
+      ],
+   q(kayagar) => [
+      q(3741),
+      q(0),
+      ],
+   q(kayan) => [
+      q(5379),
+      q(0),
+      ],
+   q(kayan mahakam) => [
+      q(7247),
+      q(0),
+      ],
+   q(kayan river kayan) => [
+      q(7322),
+      q(0),
+      ],
+   q(kayapa kallahan) => [
+      q(3155),
+      q(0),
+      ],
+   q(kayapo) => [
+      q(6795),
+      q(0),
+      ],
+   q(kayardild) => [
+      q(2682),
+      q(0),
+      ],
+   q(kayaw) => [
+      q(3656),
+      q(0),
+      ],
+   q(kayeli) => [
+      q(3758),
+      q(0),
+      ],
+   q(kayong) => [
+      q(3720),
+      q(0),
+      ],
+   q(kayort) => [
+      q(3743),
+      q(0),
+      ],
+   q(kaytetye) => [
+      q(2412),
+      q(0),
+      ],
+   q(kayupulau) => [
+      q(3767),
+      q(0),
+      ],
+   q(kazakh) => [
+      q(0218),
+      q(0),
+      ],
+   q(kazukuru) => [
+      q(3757),
+      q(0),
+      ],
+   q(ke'o) => [
+      q(7486),
+      q(0),
+      ],
+   q(keak) => [
+      q(3242),
+      q(0),
+      ],
+   q(keapara) => [
+      q(3332),
+      q(0),
+      ],
+   q(kedah malay) => [
+      q(4189),
+      q(0),
+      ],
+   q(kedang) => [
+      q(3595),
+      q(0),
+      ],
+   q(keder) => [
+      q(3233),
+      q(0),
+      ],
+   q(kehu) => [
+      q(3317),
+      q(0),
+      ],
+   q(kei) => [
+      q(3243),
+      q(0),
+      ],
+   q(keiga) => [
+      q(3237),
+      q(0),
+      ],
+   q(keijar) => [
+      q(3233),
+      q(0),
+      ],
+   q(kein) => [
+      q(1310),
+      q(0),
+      ],
+   q(keiyo) => [
+      q(2311),
+      q(0),
+      ],
+   q(kekchi) => [
+      q(3245),
+      q(0),
+      ],
+   q(kela (democratic republic of congo)) => [
+      q(3246),
+      q(0),
+      ],
+   q(kela (papua new guinea)) => [
+      q(3198),
+      q(0),
+      ],
+   q(kelabit) => [
+      q(3755),
+      q(0),
+      ],
+   q(kele) => [
+      q(3236),
+      q(0),
+      ],
+   q(kele (democratic republic of congo)) => [
+      q(3331),
+      q(0),
+      ],
+   q(kele (papua new guinea)) => [
+      q(5875),
+      q(0),
+      ],
+   q(kelengazxo bozo) => [
+      q(1638),
+      q(0),
+      ],
+   q(keley-i kallahan) => [
+      q(2901),
+      q(0),
+      ],
+   q(keliko) => [
+      q(3175),
+      q(0),
+      ],
+   q(kelo) => [
+      q(7279),
+      q(0),
+      ],
+   q(kelon) => [
+      q(3736),
+      q(0),
+      ],
+   q(kemak) => [
+      q(3247),
+      q(0),
+      ],
+   q(kembayan) => [
+      q(7280),
+      q(0),
+      ],
+   q(kemberano) => [
+      q(1630),
+      q(0),
+      ],
+   q(kembra) => [
+      q(7331),
+      q(0),
+      ],
+   q(kemedzung) => [
+      q(2089),
+      q(0),
+      ],
+   q(kemi sami) => [
+      q(6032),
+      q(0),
+      ],
+   q(kemiehua) => [
+      q(3270),
+      q(0),
+      ],
+   q(kemtuik) => [
+      q(3450),
+      q(0),
+      ],
+   q(kenaboi) => [
+      q(7253),
+      q(0),
+      ],
+   q(kenati) => [
+      q(2407),
+      q(0),
+      ],
+   q(kendayan) => [
+      q(3479),
+      q(0),
+      ],
+   q(kendeje) => [
+      q(3411),
+      q(0),
+      ],
+   q(kendem) => [
+      q(3657),
+      q(0),
+      ],
+   q(kenga) => [
+      q(3738),
+      q(0),
+      ],
+   q(keningau murut) => [
+      q(3704),
+      q(0),
+      ],
+   q(keninjal) => [
+      q(3467),
+      q(0),
+      ],
+   q(kensiu) => [
+      q(3474),
+      q(0),
+      ],
+   q(kenswei nsei) => [
+      q(4767),
+      q(0),
+      ],
+   q(kenyan sign language) => [
+      q(7318),
+      q(0),
+      ],
+   q(kenyang) => [
+      q(3248),
+      q(0),
+      ],
+   q(kenyi) => [
+      q(3920),
+      q(0),
+      ],
+   q(kenzi) => [
+      q(7382),
+      q(0),
+      ],
+   q(keoru-ahia) => [
+      q(7285),
+      q(0),
+      ],
+   q(kepkiriwat) => [
+      q(3514),
+      q(0),
+      ],
+   q(kepo') => [
+      q(3633),
+      q(0),
+      ],
+   q(kera) => [
+      q(3252),
+      q(0),
+      ],
+   q(kerak) => [
+      q(2736),
+      q(0),
+      ],
+   q(kereho) => [
+      q(7314),
+      q(0),
+      ],
+   q(kerek) => [
+      q(3560),
+      q(0),
+      ],
+   q(kerewe) => [
+      q(3238),
+      q(0),
+      ],
+   q(kerewo) => [
+      q(3721),
+      q(0),
+      ],
+   q(kerinci) => [
+      q(3662),
+      q(0),
+      ],
+   q(kesawai) => [
+      q(7283),
+      q(0),
+      ],
+   q(ket) => [
+      q(3254),
+      q(0),
+      ],
+   q(ketangalan) => [
+      q(3149),
+      q(0),
+      ],
+   q(kete) => [
+      q(3208),
+      q(0),
+      ],
+   q(ketengban) => [
+      q(7444),
+      q(0),
+      ],
+   q(ketum) => [
+      q(3617),
+      q(0),
+      ],
+   q(keyagana) => [
+      q(3728),
+      q(0),
+      ],
+   q(kgalagadi) => [
+      q(7330),
+      q(0),
+      ],
+   q(khakas) => [
+      q(3363),
+      q(0),
+      ],
+   q(khalaj) => [
+      q(3361),
+      q(0),
+      ],
+   q(khaling) => [
+      q(3423),
+      q(0),
+      ],
+   q(khamba) => [
+      q(3167),
+      q(0),
+      ],
+   q(khams tibetan) => [
+      q(3316),
+      q(0),
+      ],
+   q(khamti) => [
+      q(3326),
+      q(0),
+      ],
+   q(khamyang) => [
+      q(3592),
+      q(0),
+      ],
+   q(khana) => [
+      q(5188),
+      q(0),
+      ],
+   q(khandesi) => [
+      q(3321),
+      q(0),
+      ],
+   q(khang) => [
+      q(3368),
+      q(0),
+      ],
+   q(khanty) => [
+      q(3187),
+      q(0),
+      ],
+   q(khao) => [
+      q(7238),
+      q(0),
+      ],
+   q(kharam naga) => [
+      q(3283),
+      q(0),
+      ],
+   q(kharia) => [
+      q(3324),
+      q(0),
+      ],
+   q(kharia thar) => [
+      q(3596),
+      q(0),
+      ],
+   q(khasi) => [
+      q(0220),
+      q(0),
+      ],
+   q(khayo) => [
+      q(3926),
+      q(0),
+      ],
+   q(khazar) => [
+      q(7782),
+      q(0),
+      ],
+   q(khe) => [
+      q(3532),
+      q(0),
+      ],
+   q(khehek) => [
+      q(6553),
+      q(0),
+      ],
+   q(khengkha) => [
+      q(7315),
+      q(0),
+      ],
+   q(khetrani) => [
+      q(7296),
+      q(0),
+      ],
+   q(khezha naga) => [
+      q(4911),
+      q(0),
+      ],
+   q(khiamniungan naga) => [
+      q(3353),
+      q(0),
+      ],
+   q(khinalugh) => [
+      q(3365),
+      q(0),
+      ],
+   q(khirwar) => [
+      q(3694),
+      q(0),
+      ],
+   q(khisa) => [
+      q(3538),
+      q(0),
+      ],
+   q(khlor) => [
+      q(3945),
+      q(0),
+      ],
+   q(khlula) => [
+      q(7584),
+      q(0),
+      ],
+   q(khmu) => [
+      q(3362),
+      q(0),
+      ],
+   q(kho'ini) => [
+      q(7312),
+      q(0),
+      ],
+   q(khoibu naga) => [
+      q(4905),
+      q(0),
+      ],
+   q(khoisan languages) => [
+      q(0221),
+      q(0),
+      ],
+   q(kholok) => [
+      q(3600),
+      q(0),
+      ],
+   q(khonso) => [
+      q(3699),
+      q(0),
+      ],
+   q(khorasani turkish) => [
+      q(3456),
+      q(0),
+      ],
+   q(khorezmian) => [
+      q(7773),
+      q(0),
+      ],
+   q(khotanese) => [
+      q(0223),
+      q(0),
+      ],
+   q(khowar) => [
+      q(3329),
+      q(0),
+      ],
+   q(khua) => [
+      q(7300),
+      q(0),
+      ],
+   q(khuen) => [
+      q(3315),
+      q(0),
+      ],
+   q(khumi chin) => [
+      q(1801),
+      q(0),
+      ],
+   q(khun) => [
+      q(3387),
+      q(0),
+      ],
+   q(khunsari) => [
+      q(3273),
+      q(0),
+      ],
+   q(khvarshi) => [
+      q(3328),
+      q(0),
+      ],
+   q(kibet) => [
+      q(3337),
+      q(0),
+      ],
+   q(kibiri) => [
+      q(5572),
+      q(0),
+      ],
+   q(kickapoo) => [
+      q(3335),
+      q(0),
+      ],
+   q(kiembu) => [
+      q(2212),
+      q(0),
+      ],
+   q(kigiryama) => [
+      q(5136),
+      q(0),
+      ],
+   q(kikai) => [
+      q(3754),
+      q(0),
+      ],
+   q(kikuyu) => [
+      q(0224),
+      q(0),
+      ],
+   q(kildin sami) => [
+      q(6029),
+      q(0),
+      ],
+   q(kilivila) => [
+      q(3342),
+      q(0),
+      ],
+   q(kiliwa) => [
+      q(3407),
+      q(0),
+      ],
+   q(kilmeri) => [
+      q(3340),
+      q(0),
+      ],
+   q(kim) => [
+      q(3333),
+      q(0),
+      ],
+   q(kim mun) => [
+      q(4302),
+      q(0),
+      ],
+   q(kimaama) => [
+      q(3339),
+      q(0),
+      ],
+   q(kimaghima) => [
+      q(3339),
+      q(0),
+      ],
+   q(kimaragang) => [
+      q(3543),
+      q(0),
+      ],
+   q(kimbu) => [
+      q(3351),
+      q(0),
+      ],
+   q(kimbundu) => [
+      q(0227),
+      q(0),
+      ],
+   q(kimki) => [
+      q(5892),
+      q(0),
+      ],
+   q(kimre) => [
+      q(3541),
+      q(0),
+      ],
+   q(kinabalian) => [
+      q(1679),
+      q(0),
+      ],
+   q(kinalakna) => [
+      q(3201),
+      q(0),
+      ],
+   q(kinamiging manobo) => [
+      q(4341),
+      q(0),
+      ],
+   q(kinaray-a) => [
+      q(3559),
+      q(0),
+      ],
+   q(kinga) => [
+      q(7750),
+      q(0),
+      ],
+   q(kinnauri) => [
+      q(3271),
+      q(0),
+      ],
+   q(kintaq) => [
+      q(3472),
+      q(0),
+      ],
+   q(kinuku) => [
+      q(3383),
+      q(0),
+      ],
+   q(kinyarwanda) => [
+      q(0225),
+      q(0),
+      ],
+   q(kioko) => [
+      q(6835),
+      q(0),
+      ],
+   q(kiong) => [
+      q(3392),
+      q(0),
+      ],
+   q(kiorr) => [
+      q(7323),
+      q(0),
+      ],
+   q(kiowa) => [
+      q(3345),
+      q(0),
+      ],
+   q(kiowa apache) => [
+      q(0845),
+      q(0),
+      ],
+   q(kipfokomo) => [
+      q(5450),
+      q(0),
+      ],
+   q(kipsigis) => [
+      q(5963),
+      q(0),
+      ],
+   q(kiput) => [
+      q(3730),
+      q(0),
+      ],
+   q(kir-balar) => [
+      q(3397),
+      q(0),
+      ],
+   q(kirdki) => [
+      q(0486),
+      q(0),
+      ],
+   q(kire) => [
+      q(2463),
+      q(0),
+      ],
+   q(kirghiz) => [
+      q(0226),
+      q(0),
+      ],
+   q(kirike) => [
+      q(5214),
+      q(0),
+      ],
+   q(kirikiri) => [
+      q(3354),
+      q(0),
+      ],
+   q(kirmanjki) => [
+      q(0486),
+      q(0),
+      ],
+   q(kirmanjki (individual language)) => [
+      q(3350),
+      q(0),
+      ],
+   q(kirmanjki (macrolanguage)) => [
+      q(0486),
+      q(7),
+      ],
+   q(kirya-konzel) => [
+      q(2342),
+      q(0),
+      ],
+   q(kis) => [
+      q(3348),
+      q(0),
+      ],
+   q(kisa) => [
+      q(3928),
+      q(0),
+      ],
+   q(kisankasa) => [
+      q(3533),
+      q(0),
+      ],
+   q(kisar) => [
+      q(3360),
+      q(0),
+      ],
+   q(kisi) => [
+      q(3355),
+      q(0),
+      ],
+   q(kistane) => [
+      q(2611),
+      q(0),
+      ],
+   q(kiswahili) => [
+      q(6273),
+      q(0),
+      ],
+   q(kita maninkakan) => [
+      q(4613),
+      q(0),
+      ],
+   q(kitan) => [
+      q(7779),
+      q(0),
+      ],
+   q(kitharaka) => [
+      q(6472),
+      q(0),
+      ],
+   q(kitja) => [
+      q(2504),
+      q(0),
+      ],
+   q(kitsai) => [
+      q(3341),
+      q(0),
+      ],
+   q(kituba (congo)) => [
+      q(4340),
+      q(0),
+      ],
+   q(kituba (democratic republic of congo)) => [
+      q(3618),
+      q(0),
+      ],
+   q(kiunum) => [
+      q(7068),
+      q(0),
+      ],
+   q(kiwilwana) => [
+      q(4353),
+      q(0),
+      ],
+   q(klamath-modoc) => [
+      q(3406),
+      q(0),
+      ],
+   q(klao) => [
+      q(3426),
+      q(0),
+      ],
+   q(klias river kadazan) => [
+      q(3545),
+      q(0),
+      ],
+   q(klingon) => [
+      q(0432),
+      q(0),
+      ],
+   q(knaanic) => [
+      q(1932),
+      q(0),
+      ],
+   q(ko) => [
+      q(2378),
+      q(0),
+      ],
+   q(koalib) => [
+      q(3334),
+      q(0),
+      ],
+   q(koasati) => [
+      q(1764),
+      q(0),
+      ],
+   q(koba) => [
+      q(3505),
+      q(0),
+      ],
+   q(kobiana) => [
+      q(3196),
+      q(0),
+      ],
+   q(kobol) => [
+      q(3306),
+      q(0),
+      ],
+   q(kobon) => [
+      q(3522),
+      q(0),
+      ],
+   q(koch) => [
+      q(3227),
+      q(0),
+      ],
+   q(kochila tharu) => [
+      q(6477),
+      q(0),
+      ],
+   q(koda) => [
+      q(1706),
+      q(0),
+      ],
+   q(kodaku) => [
+      q(3597),
+      q(0),
+      ],
+   q(kodava) => [
+      q(3261),
+      q(0),
+      ],
+   q(kodeoha) => [
+      q(6977),
+      q(0),
+      ],
+   q(kodi) => [
+      q(3484),
+      q(0),
+      ],
+   q(kodia) => [
+      q(3686),
+      q(0),
+      ],
+   q(koenoem) => [
+      q(3205),
+      q(0),
+      ],
+   q(kofa) => [
+      q(3586),
+      q(0),
+      ],
+   q(kofei) => [
+      q(3509),
+      q(0),
+      ],
+   q(kofyar) => [
+      q(3682),
+      q(0),
+      ],
+   q(kogi) => [
+      q(3487),
+      q(0),
+      ],
+   q(koguryo) => [
+      q(7772),
+      q(0),
+      ],
+   q(kohin) => [
+      q(3403),
+      q(0),
+      ],
+   q(kohistani shina) => [
+      q(5469),
+      q(0),
+      ],
+   q(koho) => [
+      q(3513),
+      q(0),
+      ],
+   q(kohumono) => [
+      q(1083),
+      q(0),
+      ],
+   q(koi) => [
+      q(3399),
+      q(0),
+      ],
+   q(koibal) => [
+      q(7770),
+      q(0),
+      ],
+   q(koireng) => [
+      q(4907),
+      q(0),
+      ],
+   q(koitabu) => [
+      q(3534),
+      q(0),
+      ],
+   q(koiwat) => [
+      q(3715),
+      q(0),
+      ],
+   q(kok borok) => [
+      q(6670),
+      q(0),
+      ],
+   q(kok-nar) => [
+      q(2528),
+      q(0),
+      ],
+   q(kokata) => [
+      q(3601),
+      q(0),
+      ],
+   q(koke) => [
+      q(3496),
+      q(0),
+      ],
+   q(koki naga) => [
+      q(5124),
+      q(0),
+      ],
+   q(koko babangk) => [
+      q(5205),
+      q(0),
+      ],
+   q(kokoda) => [
+      q(7384),
+      q(0),
+      ],
+   q(kokola) => [
+      q(3760),
+      q(0),
+      ],
+   q(kokota) => [
+      q(3390),
+      q(0),
+      ],
+   q(kol) => [
+      q(2231),
+      q(0),
+      ],
+   q(kol (bangladesh)) => [
+      q(2231),
+      q(0),
+      ],
+   q(kol (cameroon)) => [
+      q(1228),
+      q(0),
+      ],
+   q(kol (papua new guinea)) => [
+      q(3491),
+      q(0),
+      ],
+   q(kola) => [
+      q(3666),
+      q(0),
+      ],
+   q(kolbila) => [
+      q(3408),
+      q(0),
+      ],
+   q(kolibugan subanon) => [
+      q(6055),
+      q(0),
+      ],
+   q(kolsch) => [
+      q(3579),
+      q(0),
+      ],
+   q(koluwawa) => [
+      q(3429),
+      q(0),
+      ],
+   q(kom (cameroon)) => [
+      q(1265),
+      q(0),
+      ],
+   q(kom (india)) => [
+      q(3443),
+      q(0),
+      ],
+   q(koma) => [
+      q(3455),
+      q(0),
+      ],
+   q(komba) => [
+      q(3506),
+      q(0),
+      ],
+   q(kombai) => [
+      q(6804),
+      q(0),
+      ],
+   q(kombio) => [
+      q(7251),
+      q(0),
+      ],
+   q(komering) => [
+      q(3291),
+      q(0),
+      ],
+   q(komi) => [
+      q(0229),
+      q(0),
+      ],
+   q(komi-permyak) => [
+      q(3489),
+      q(0),
+      ],
+   q(komi-zyrian) => [
+      q(3521),
+      q(0),
+      ],
+   q(kominimung) => [
+      q(7386),
+      q(0),
+      ],
+   q(komo (democratic republic of congo)) => [
+      q(3453),
+      q(0),
+      ],
+   q(komo (sudan)) => [
+      q(7388),
+      q(0),
+      ],
+   q(komodo) => [
+      q(3652),
+      q(0),
+      ],
+   q(kompane) => [
+      q(3660),
+      q(0),
+      ],
+   q(komyandaret) => [
+      q(3768),
+      q(0),
+      ],
+   q(kon keu) => [
+      q(3393),
+      q(0),
+      ],
+   q(konabere) => [
+      q(1053),
+      q(0),
+      ],
+   q(konai) => [
+      q(3718),
+      q(0),
+      ],
+   q(konda) => [
+      q(3460),
+      q(0),
+      ],
+   q(konda-dora) => [
+      q(3263),
+      q(0),
+      ],
+   q(koneraw) => [
+      q(3231),
+      q(0),
+      ],
+   q(kongo) => [
+      q(0230),
+      q(0),
+      ],
+   q(konkani) => [
+      q(0228),
+      q(0),
+      ],
+   q(konkani (individual language)) => [
+      q(3469),
+      q(0),
+      ],
+   q(konkani (macrolanguage)) => [
+      q(0228),
+      q(1),
+      ],
+   q(konkomba) => [
+      q(7389),
+      q(0),
+      ],
+   q(konni) => [
+      q(3432),
+      q(0),
+      ],
+   q(kono (guinea)) => [
+      q(3476),
+      q(0),
+      ],
+   q(kono (nigeria)) => [
+      q(3416),
+      q(0),
+      ],
+   q(kono (sierra leone)) => [
+      q(3470),
+      q(0),
+      ],
+   q(konomala) => [
+      q(3482),
+      q(0),
+      ],
+   q(konongo) => [
+      q(3212),
+      q(0),
+      ],
+   q(konso) => [
+      q(3699),
+      q(0),
+      ],
+   q(konyak naga) => [
+      q(4725),
+      q(0),
+      ],
+   q(konyanka maninka) => [
+      q(4338),
+      q(0),
+      ],
+   q(konzo) => [
+      q(3492),
+      q(0),
+      ],
+   q(koongo) => [
+      q(3463),
+      q(0),
+      ],
+   q(koonzime) => [
+      q(5320),
+      q(0),
+      ],
+   q(koorete) => [
+      q(3550),
+      q(0),
+      ],
+   q(kopar) => [
+      q(7391),
+      q(0),
+      ],
+   q(kopkaka) => [
+      q(5263),
+      q(0),
+      ],
+   q(korafe-yegha) => [
+      q(3517),
+      q(0),
+      ],
+   q(korak) => [
+      q(3501),
+      q(0),
+      ],
+   q(korana) => [
+      q(3551),
+      q(0),
+      ],
+   q(korandje) => [
+      q(3211),
+      q(0),
+      ],
+   q(kordofanian languages) => [
+      q(0515),
+      q(0),
+      ],
+   q(korean) => [
+      q(0231),
+      q(0),
+      ],
+   q(korean sign language) => [
+      q(3655),
+      q(0),
+      ],
+   q(koreguaje) => [
+      q(1813),
+      q(0),
+      ],
+   q(koresh-e rostam) => [
+      q(5206),
+      q(0),
+      ],
+   q(korku) => [
+      q(3277),
+      q(0),
+      ],
+   q(korlai creole portuguese) => [
+      q(6978),
+      q(0),
+      ],
+   q(koro (cote d'ivoire)) => [
+      q(3275),
+      q(0),
+      ],
+   q(koro (india)) => [
+      q(3090),
+      q(0),
+      ],
+   q(koro (papua new guinea)) => [
+      q(3713),
+      q(0),
+      ],
+   q(koro (vanuatu)) => [
+      q(3556),
+      q(0),
+      ],
+   q(koro wachi) => [
+      q(1419),
+      q(0),
+      ],
+   q(koromfe) => [
+      q(3286),
+      q(0),
+      ],
+   q(koromira) => [
+      q(3535),
+      q(0),
+      ],
+   q(koronadal blaan) => [
+      q(1390),
+      q(0),
+      ],
+   q(koroni) => [
+      q(7325),
+      q(0),
+      ],
+   q(korop) => [
+      q(3563),
+      q(0),
+      ],
+   q(koropo) => [
+      q(7487),
+      q(0),
+      ],
+   q(koroshi) => [
+      q(3609),
+      q(0),
+      ],
+   q(korowai) => [
+      q(3314),
+      q(0),
+      ],
+   q(korra koraga) => [
+      q(3264),
+      q(0),
+      ],
+   q(korubo) => [
+      q(7392),
+      q(0),
+      ],
+   q(korupun-sela) => [
+      q(3516),
+      q(0),
+      ],
+   q(korur) => [
+      q(0949),
+      q(0),
+      ],
+   q(korwa) => [
+      q(3276),
+      q(0),
+      ],
+   q(koryak) => [
+      q(3524),
+      q(0),
+      ],
+   q(kosadle) => [
+      q(3347),
+      q(0),
+      ],
+   q(kosare) => [
+      q(3347),
+      q(0),
+      ],
+   q(kosarek yale) => [
+      q(3391),
+      q(0),
+      ],
+   q(kosena) => [
+      q(3752),
+      q(0),
+      ],
+   q(koshin) => [
+      q(3336),
+      q(0),
+      ],
+   q(kosli) => [
+      q(6166),
+      q(0),
+      ],
+   q(kosraean) => [
+      q(0232),
+      q(0),
+      ],
+   q(kota (gabon)) => [
+      q(3494),
+      q(0),
+      ],
+   q(kota (india)) => [
+      q(3265),
+      q(0),
+      ],
+   q(kota bangun kutai malay) => [
+      q(4464),
+      q(0),
+      ],
+   q(kota marudu talantang) => [
+      q(2605),
+      q(0),
+      ],
+   q(kota marudu tinagas) => [
+      q(3615),
+      q(0),
+      ],
+   q(kotafon gbe) => [
+      q(3536),
+      q(0),
+      ],
+   q(kotava) => [
+      q(0960),
+      q(0),
+      ],
+   q(koti) => [
+      q(2233),
+      q(0),
+      ],
+   q(kott) => [
+      q(7776),
+      q(0),
+      ],
+   q(kouya) => [
+      q(3727),
+      q(0),
+      ],
+   q(kovai) => [
+      q(3527),
+      q(0),
+      ],
+   q(kove) => [
+      q(3647),
+      q(0),
+      ],
+   q(kowaki) => [
+      q(7393),
+      q(0),
+      ],
+   q(kowiai) => [
+      q(3678),
+      q(0),
+      ],
+   q(koy sanjaq surat) => [
+      q(3529),
+      q(0),
+      ],
+   q(koya) => [
+      q(3266),
+      q(0),
+      ],
+   q(koyaga) => [
+      q(3287),
+      q(0),
+      ],
+   q(koyo) => [
+      q(3488),
+      q(0),
+      ],
+   q(koyra chiini songhay) => [
+      q(3323),
+      q(0),
+      ],
+   q(koyraboro senni songhai) => [
+      q(5950),
+      q(0),
+      ],
+   q(koyukon) => [
+      q(3500),
+      q(0),
+      ],
+   q(kpagua) => [
+      q(3641),
+      q(0),
+      ],
+   q(kpala) => [
+      q(3512),
+      q(0),
+      ],
+   q(kpan) => [
+      q(3511),
+      q(0),
+      ],
+   q(kpasam) => [
+      q(5347),
+      q(0),
+      ],
+   q(kpati) => [
+      q(3483),
+      q(0),
+      ],
+   q(kpatili) => [
+      q(3734),
+      q(0),
+      ],
+   q(kpelle) => [
+      q(0233),
+      q(0),
+      ],
+   q(kpessi) => [
+      q(3240),
+      q(0),
+      ],
+   q(kplang) => [
+      q(3508),
+      q(0),
+      ],
+   q(krache) => [
+      q(3726),
+      q(0),
+      ],
+   q(kraho) => [
+      q(7411),
+      q(0),
+      ],
+   q(kraol) => [
+      q(5772),
+      q(0),
+      ],
+   q(krenak) => [
+      q(3542),
+      q(0),
+      ],
+   q(krevinian) => [
+      q(7781),
+      q(0),
+      ],
+   q(kreye) => [
+      q(7413),
+      q(0),
+      ],
+   q(krikati-timbira) => [
+      q(7414),
+      q(0),
+      ],
+   q(krim) => [
+      q(3561),
+      q(0),
+      ],
+   q(krio) => [
+      q(3558),
+      q(0),
+      ],
+   q(kriol) => [
+      q(5818),
+      q(0),
+      ],
+   q(krisa) => [
+      q(3580),
+      q(0),
+      ],
+   q(krobu) => [
+      q(3698),
+      q(0),
+      ],
+   q(krongo) => [
+      q(3300),
+      q(0),
+      ],
+   q(kru languages) => [
+      q(0236),
+      q(0),
+      ],
+   q(kru'ng 2) => [
+      q(3564),
+      q(0),
+      ],
+   q(krymchak) => [
+      q(3049),
+      q(0),
+      ],
+   q(kryts) => [
+      q(3570),
+      q(0),
+      ],
+   q(kua) => [
+      q(6809),
+      q(0),
+      ],
+   q(kua-nsi) => [
+      q(7586),
+      q(0),
+      ],
+   q(kuamasi) => [
+      q(7590),
+      q(0),
+      ],
+   q(kuan) => [
+      q(6820),
+      q(0),
+      ],
+   q(kuanhua) => [
+      q(7376),
+      q(0),
+      ],
+   q(kuanua) => [
+      q(3575),
+      q(0),
+      ],
+   q(kuanyama) => [
+      q(0238),
+      q(0),
+      ],
+   q(kube) => [
+      q(3292),
+      q(0),
+      ],
+   q(kubi) => [
+      q(3486),
+      q(0),
+      ],
+   q(kubo) => [
+      q(3088),
+      q(0),
+      ],
+   q(kubu) => [
+      q(3646),
+      q(0),
+      ],
+   q(kucong) => [
+      q(3918),
+      q(0),
+      ],
+   q(kudiya) => [
+      q(3267),
+      q(0),
+      ],
+   q(kudmali) => [
+      q(3744),
+      q(0),
+      ],
+   q(kudu-camo) => [
+      q(3497),
+      q(0),
+      ],
+   q(kugama) => [
+      q(3498),
+      q(0),
+      ],
+   q(kugbo) => [
+      q(3253),
+      q(0),
+      ],
+   q(kui (india)) => [
+      q(3716),
+      q(0),
+      ],
+   q(kui (indonesia)) => [
+      q(3648),
+      q(0),
+      ],
+   q(kuijau) => [
+      q(2074),
+      q(0),
+      ],
+   q(kuikuro-kalapalo) => [
+      q(3631),
+      q(0),
+      ],
+   q(kujarge) => [
+      q(6973),
+      q(0),
+      ],
+   q(kuk) => [
+      q(3274),
+      q(0),
+      ],
+   q(kukatja) => [
+      q(3642),
+      q(0),
+      ],
+   q(kuke) => [
+      q(2503),
+      q(0),
+      ],
+   q(kukele) => [
+      q(3260),
+      q(0),
+      ],
+   q(kukna) => [
+      q(3258),
+      q(0),
+      ],
+   q(kuku-mangk) => [
+      q(7363),
+      q(0),
+      ],
+   q(kuku-mu'inh) => [
+      q(7362),
+      q(0),
+      ],
+   q(kuku-muminh) => [
+      q(7355),
+      q(0),
+      ],
+   q(kuku-ugbanh) => [
+      q(6837),
+      q(0),
+      ],
+   q(kuku-uwanh) => [
+      q(6931),
+      q(0),
+      ],
+   q(kuku-yalanji) => [
+      q(2658),
+      q(0),
+      ],
+   q(kula) => [
+      q(6628),
+      q(0),
+      ],
+   q(kulere) => [
+      q(3634),
+      q(0),
+      ],
+   q(kulfa) => [
+      q(3705),
+      q(0),
+      ],
+   q(kulina) => [
+      q(1909),
+      q(0),
+      ],
+   q(kulina pano) => [
+      q(7399),
+      q(0),
+      ],
+   q(kulisusu) => [
+      q(6975),
+      q(0),
+      ],
+   q(kullu pahari) => [
+      q(3284),
+      q(0),
+      ],
+   q(kulon-pazeh) => [
+      q(6925),
+      q(0),
+      ],
+   q(kulung (nepal)) => [
+      q(3410),
+      q(0),
+      ],
+   q(kulung (nigeria)) => [
+      q(1059),
+      q(0),
+      ],
+   q(kumalu) => [
+      q(3583),
+      q(0),
+      ],
+   q(kumam) => [
+      q(3220),
+      q(0),
+      ],
+   q(kuman) => [
+      q(3627),
+      q(0),
+      ],
+   q(kuman (russia)) => [
+      q(5692),
+      q(0),
+      ],
+   q(kumaoni) => [
+      q(3285),
+      q(0),
+      ],
+   q(kumarbhag paharia) => [
+      q(3440),
+      q(0),
+      ],
+   q(kumba) => [
+      q(3584),
+      q(0),
+      ],
+   q(kumbainggar) => [
+      q(3304),
+      q(0),
+      ],
+   q(kumbaran) => [
+      q(7109),
+      q(0),
+      ],
+   q(kumbewaha) => [
+      q(7327),
+      q(0),
+      ],
+   q(kumhali) => [
+      q(3552),
+      q(0),
+      ],
+   q(kumiai) => [
+      q(2039),
+      q(0),
+      ],
+   q(kumukio) => [
+      q(3636),
+      q(0),
+      ],
+   q(kumyk) => [
+      q(0239),
+      q(0),
+      ],
+   q(kumzari) => [
+      q(7878),
+      q(0),
+      ],
+   q(kunama) => [
+      q(3635),
+      q(0),
+      ],
+   q(kunbarlang) => [
+      q(7117),
+      q(0),
+      ],
+   q(kunda) => [
+      q(3225),
+      q(0),
+      ],
+   q(kundal shahi) => [
+      q(5985),
+      q(0),
+      ],
+   q(kunduvadi) => [
+      q(7112),
+      q(0),
+      ],
+   q(kung) => [
+      q(3272),
+      q(0),
+      ],
+   q(kung-ekoka) => [
+      q(3478),
+      q(0),
+      ],
+   q(kungarakany) => [
+      q(2485),
+      q(0),
+      ],
+   q(kunggara) => [
+      q(3663),
+      q(0),
+      ],
+   q(kunggari) => [
+      q(3297),
+      q(0),
+      ],
+   q(kuni) => [
+      q(3576),
+      q(0),
+      ],
+   q(kuni-boazi) => [
+      q(3651),
+      q(0),
+      ],
+   q(kunigami) => [
+      q(7464),
+      q(0),
+      ],
+   q(kunimaipa) => [
+      q(3637),
+      q(0),
+      ],
+   q(kunja) => [
+      q(5392),
+      q(0),
+      ],
+   q(kunjen) => [
+      q(3369),
+      q(0),
+      ],
+   q(kunyi) => [
+      q(4901),
+      q(0),
+      ],
+   q(kunza) => [
+      q(3644),
+      q(0),
+      ],
+   q(kuo) => [
+      q(7468),
+      q(0),
+      ],
+   q(kuot) => [
+      q(3612),
+      q(0),
+      ],
+   q(kupa) => [
+      q(3629),
+      q(0),
+      ],
+   q(kupang malay) => [
+      q(4331),
+      q(0),
+      ],
+   q(kupia) => [
+      q(3259),
+      q(0),
+      ],
+   q(kupsabiny) => [
+      q(3525),
+      q(0),
+      ],
+   q(kur) => [
+      q(3640),
+      q(0),
+      ],
+   q(kura ede nago) => [
+      q(5025),
+      q(0),
+      ],
+   q(kurama) => [
+      q(3557),
+      q(0),
+      ],
+   q(kuranko) => [
+      q(3466),
+      q(0),
+      ],
+   q(kurdish) => [
+      q(0240),
+      q(0),
+      ],
+   q(kuri) => [
+      q(4732),
+      q(0),
+      ],
+   q(kuria) => [
+      q(3632),
+      q(0),
+      ],
+   q(kurichiya) => [
+      q(3268),
+      q(0),
+      ],
+   q(kurmukar) => [
+      q(3282),
+      q(0),
+      ],
+   q(kurrama) => [
+      q(6980),
+      q(0),
+      ],
+   q(kurti) => [
+      q(3610),
+      q(0),
+      ],
+   q(kurtokha) => [
+      q(7334),
+      q(0),
+      ],
+   q(kuruaya) => [
+      q(3739),
+      q(0),
+      ],
+   q(kurudu) => [
+      q(3373),
+      q(0),
+      ],
+   q(kurukh) => [
+      q(0237),
+      q(0),
+      ],
+   q(kusaal) => [
+      q(3638),
+      q(0),
+      ],
+   q(kusaghe) => [
+      q(3578),
+      q(0),
+      ],
+   q(kushi) => [
+      q(3630),
+      q(0),
+      ],
+   q(kusu) => [
+      q(3593),
+      q(0),
+      ],
+   q(kusunda) => [
+      q(3293),
+      q(0),
+      ],
+   q(kutang ghale) => [
+      q(2503),
+      q(0),
+      ],
+   q(kutenai) => [
+      q(0241),
+      q(0),
+      ],
+   q(kutep) => [
+      q(3624),
+      q(0),
+      ],
+   q(kuthant) => [
+      q(7471),
+      q(0),
+      ],
+   q(kutong) => [
+      q(6054),
+      q(0),
+      ],
+   q(kutto) => [
+      q(3502),
+      q(0),
+      ],
+   q(kutu) => [
+      q(3214),
+      q(0),
+      ],
+   q(kuturmi) => [
+      q(3318),
+      q(0),
+      ],
+   q(kuuk-yak) => [
+      q(6856),
+      q(0),
+      ],
+   q(kuuku-ya'u) => [
+      q(3643),
+      q(0),
+      ],
+   q(kuvi) => [
+      q(3717),
+      q(0),
+      ],
+   q(kuwaa) => [
+      q(1285),
+      q(0),
+      ],
+   q(kuwaataay) => [
+      q(1927),
+      q(0),
+      ],
+   q(kuy) => [
+      q(3229),
+      q(0),
+      ],
+   q(kven finnish) => [
+      q(2343),
+      q(0),
+      ],
+   q(kw'adza) => [
+      q(7108),
+      q(0),
+      ],
+   q(kwa) => [
+      q(3672),
+      q(0),
+      ],
+   q(kwa') => [
+      q(1267),
+      q(0),
+      ],
+   q(kwaami) => [
+      q(3588),
+      q(0),
+      ],
+   q(kwadi) => [
+      q(3696),
+      q(0),
+      ],
+   q(kwaio) => [
+      q(3674),
+      q(0),
+      ],
+   q(kwaja) => [
+      q(3234),
+      q(0),
+      ],
+   q(kwak) => [
+      q(3687),
+      q(0),
+      ],
+   q(kwakiutl) => [
+      q(3681),
+      q(0),
+      ],
+   q(kwakum) => [
+      q(3691),
+      q(0),
+      ],
+   q(kwalhioqua-tlatskanai) => [
+      q(5694),
+      q(0),
+      ],
+   q(kwama) => [
+      q(3447),
+      q(0),
+      ],
+   q(kwambi) => [
+      q(3683),
+      q(0),
+      ],
+   q(kwamera) => [
+      q(6587),
+      q(0),
+      ],
+   q(kwami) => [
+      q(3603),
+      q(0),
+      ],
+   q(kwamtim one) => [
+      q(5209),
+      q(0),
+      ],
+   q(kwang) => [
+      q(3653),
+      q(0),
+      ],
+   q(kwanga) => [
+      q(3680),
+      q(0),
+      ],
+   q(kwangali) => [
+      q(3684),
+      q(0),
+      ],
+   q(kwanja) => [
+      q(3471),
+      q(0),
+      ],
+   q(kwanyama) => [
+      q(0238),
+      q(0),
+      ],
+   q(kwara'ae) => [
+      q(3676),
+      q(0),
+      ],
+   q(kwasio) => [
+      q(4949),
+      q(0),
+      ],
+   q(kwaya) => [
+      q(3722),
+      q(0),
+      ],
+   q(kwaza) => [
+      q(7478),
+      q(0),
+      ],
+   q(kwegu) => [
+      q(7481),
+      q(0),
+      ],
+   q(kwer) => [
+      q(3688),
+      q(0),
+      ],
+   q(kwerba) => [
+      q(3675),
+      q(0),
+      ],
+   q(kwerba mamberamo) => [
+      q(7484),
+      q(0),
+      ],
+   q(kwere) => [
+      q(1925),
+      q(0),
+      ],
+   q(kwerisa) => [
+      q(3381),
+      q(0),
+      ],
+   q(kwese) => [
+      q(3689),
+      q(0),
+      ],
+   q(kwesten) => [
+      q(3690),
+      q(0),
+      ],
+   q(kwini) => [
+      q(2677),
+      q(0),
+      ],
+   q(kwinsu) => [
+      q(3625),
+      q(0),
+      ],
+   q(kwinti) => [
+      q(3693),
+      q(0),
+      ],
+   q(kwoma) => [
+      q(3445),
+      q(0),
+      ],
+   q(kwomtari) => [
+      q(3685),
+      q(0),
+      ],
+   q(kxoe) => [
+      q(7472),
+      q(0),
+      ],
+   q(kyak) => [
+      q(1255),
+      q(0),
+      ],
+   q(kyaka) => [
+      q(3724),
+      q(0),
+      ],
+   q(kyenele) => [
+      q(3537),
+      q(0),
+      ],
+   q(kyenga) => [
+      q(6799),
+      q(0),
+      ],
+   q(kyerung) => [
+      q(3310),
+      q(0),
+      ],
+   q(kyrgyz) => [
+      q(0226),
+      q(0),
+      ],
+   q(la'bi) => [
+      q(3799),
+      q(0),
+      ],
+   q(laa laa bwamu) => [
+      q(1551),
+      q(0),
+      ],
+   q(laadan) => [
+      q(3834),
+      q(0),
+      ],
+   q(laal) => [
+      q(2454),
+      q(0),
+      ],
+   q(laalaa) => [
+      q(1644),
+      q(0),
+      ],
+   q(laari) => [
+      q(3829),
+      q(0),
+      ],
+   q(laba) => [
+      q(3788),
+      q(0),
+      ],
+   q(label) => [
+      q(3794),
+      q(0),
+      ],
+   q(labir) => [
+      q(3091),
+      q(0),
+      ],
+   q(labo) => [
+      q(4611),
+      q(0),
+      ],
+   q(labo phowa) => [
+      q(7647),
+      q(0),
+      ],
+   q(labu) => [
+      q(3810),
+      q(0),
+      ],
+   q(labuk-kinabatangan kadazan) => [
+      q(2153),
+      q(0),
+      ],
+   q(lacandon) => [
+      q(3775),
+      q(0),
+      ],
+   q(lachi) => [
+      q(3809),
+      q(0),
+      ],
+   q(lachiguiri zapotec) => [
+      q(7825),
+      q(0),
+      ],
+   q(lachixio zapotec) => [
+      q(7836),
+      q(0),
+      ],
+   q(ladakhi) => [
+      q(3800),
+      q(0),
+      ],
+   q(ladin) => [
+      q(3934),
+      q(0),
+      ],
+   q(ladino) => [
+      q(0242),
+      q(0),
+      ],
+   q(ladji ladji) => [
+      q(3940),
+      q(0),
+      ],
+   q(laeko-libuat) => [
+      q(3924),
+      q(0),
+      ],
+   q(lafofa) => [
+      q(3777),
+      q(0),
+      ],
+   q(laghu) => [
+      q(3866),
+      q(0),
+      ],
+   q(laghuu) => [
+      q(3868),
+      q(0),
+      ],
+   q(lagwan) => [
+      q(3495),
+      q(0),
+      ],
+   q(laha (indonesia)) => [
+      q(3880),
+      q(0),
+      ],
+   q(laha (viet nam)) => [
+      q(3879),
+      q(0),
+      ],
+   q(lahanan) => [
+      q(3884),
+      q(0),
+      ],
+   q(lahnda) => [
+      q(0243),
+      q(0),
+      ],
+   q(lahta) => [
+      q(3664),
+      q(0),
+      ],
+   q(lahta karen) => [
+      q(3664),
+      q(0),
+      ],
+   q(lahu) => [
+      q(3888),
+      q(0),
+      ],
+   q(lahu shi) => [
+      q(3881),
+      q(0),
+      ],
+   q(lahul lohar) => [
+      q(3882),
+      q(0),
+      ],
+   q(laimbue) => [
+      q(3972),
+      q(0),
+      ],
+   q(laitu chin) => [
+      q(1775),
+      q(0),
+      ],
+   q(laiyolo) => [
+      q(3913),
+      q(0),
+      ],
+   q(lak) => [
+      q(3796),
+      q(0),
+      ],
+   q(laka (chad)) => [
+      q(3784),
+      q(0),
+      ],
+   q(laka (nigeria)) => [
+      q(3781),
+      q(0),
+      ],
+   q(lakalei) => [
+      q(3916),
+      q(0),
+      ],
+   q(lake miwok) => [
+      q(3971),
+      q(0),
+      ],
+   q(lakha) => [
+      q(3921),
+      q(0),
+      ],
+   q(laki) => [
+      q(3922),
+      q(0),
+      ],
+   q(lakkia) => [
+      q(3795),
+      q(0),
+      ],
+   q(lakon) => [
+      q(3925),
+      q(0),
+      ],
+   q(lakonde) => [
+      q(3919),
+      q(0),
+      ],
+   q(lakota) => [
+      q(3929),
+      q(0),
+      ],
+   q(lakota dida) => [
+      q(2035),
+      q(0),
+      ],
+   q(lala) => [
+      q(5043),
+      q(0),
+      ],
+   q(lala-bisa) => [
+      q(3839),
+      q(0),
+      ],
+   q(lala-roba) => [
+      q(3931),
+      q(0),
+      ],
+   q(lalana chinantec) => [
+      q(1802),
+      q(0),
+      ],
+   q(lalia) => [
+      q(3782),
+      q(0),
+      ],
+   q(lama (myanmar)) => [
+      q(3791),
+      q(0),
+      ],
+   q(lama (togo)) => [
+      q(3787),
+      q(0),
+      ],
+   q(lamaholot) => [
+      q(6078),
+      q(0),
+      ],
+   q(lamalera) => [
+      q(3968),
+      q(0),
+      ],
+   q(lamam) => [
+      q(3963),
+      q(0),
+      ],
+   q(lamang) => [
+      q(2738),
+      q(0),
+      ],
+   q(lamatuka) => [
+      q(3967),
+      q(0),
+      ],
+   q(lamba) => [
+      q(0244),
+      q(0),
+      ],
+   q(lambadi) => [
+      q(3964),
+      q(0),
+      ],
+   q(lambayeque quechua) => [
+      q(5657),
+      q(0),
+      ],
+   q(lambichhong) => [
+      q(3958),
+      q(0),
+      ],
+   q(lamboya) => [
+      q(3973),
+      q(0),
+      ],
+   q(lambya) => [
+      q(3779),
+      q(0),
+      ],
+   q(lame) => [
+      q(1303),
+      q(0),
+      ],
+   q(lamenu) => [
+      q(3969),
+      q(0),
+      ],
+   q(lamet) => [
+      q(3804),
+      q(0),
+      ],
+   q(lamja-dengsa-tola) => [
+      q(3828),
+      q(0),
+      ],
+   q(lamkang) => [
+      q(3961),
+      q(0),
+      ],
+   q(lamma) => [
+      q(3859),
+      q(0),
+      ],
+   q(lamnso') => [
+      q(3986),
+      q(0),
+      ],
+   q(lamogai) => [
+      q(3957),
+      q(0),
+      ],
+   q(lampung api) => [
+      q(3915),
+      q(0),
+      ],
+   q(lampung nyo) => [
+      q(0570),
+      q(0),
+      ],
+   q(lamu) => [
+      q(3938),
+      q(0),
+      ],
+   q(lamu-lamu) => [
+      q(3814),
+      q(0),
+      ],
+   q(lanas lobu) => [
+      q(5845),
+      q(0),
+      ],
+   q(land dayak languages) => [
+      q(0105),
+      q(0),
+      ],
+   q(landoma) => [
+      q(3833),
+      q(0),
+      ],
+   q(lang'e) => [
+      q(7625),
+      q(0),
+      ],
+   q(langam) => [
+      q(3983),
+      q(0),
+      ],
+   q(langbashe) => [
+      q(3975),
+      q(0),
+      ],
+   q(langi) => [
+      q(3778),
+      q(0),
+      ],
+   q(langnian buyang) => [
+      q(7599),
+      q(0),
+      ],
+   q(lango (sudan)) => [
+      q(3985),
+      q(0),
+      ],
+   q(lango (uganda)) => [
+      q(3780),
+      q(0),
+      ],
+   q(langobardic) => [
+      q(3978),
+      q(0),
+      ],
+   q(langue des signes de belgique francophone) => [
+      q(5957),
+      q(0),
+      ],
+   q(lanoh) => [
+      q(3979),
+      q(0),
+      ],
+   q(lao) => [
+      q(0245),
+      q(0),
+      ],
+   q(laomian) => [
+      q(4078),
+      q(0),
+      ],
+   q(laopang) => [
+      q(3798),
+      q(0),
+      ],
+   q(laos sign language) => [
+      q(4039),
+      q(0),
+      ],
+   q(lapaguia-guivini zapotec) => [
+      q(7866),
+      q(0),
+      ],
+   q(laragia) => [
+      q(4020),
+      q(0),
+      ],
+   q(larantuka malay) => [
+      q(4028),
+      q(0),
+      ],
+   q(lardil) => [
+      q(3815),
+      q(0),
+      ],
+   q(larevat) => [
+      q(4029),
+      q(0),
+      ],
+   q(large flowery miao) => [
+      q(2765),
+      q(0),
+      ],
+   q(lari) => [
+      q(4023),
+      q(0),
+      ],
+   q(larike-wakasihu) => [
+      q(0758),
+      q(0),
+      ],
+   q(laro) => [
+      q(4026),
+      q(0),
+      ],
+   q(larteh) => [
+      q(3786),
+      q(0),
+      ],
+   q(laru) => [
+      q(3783),
+      q(0),
+      ],
+   q(lasalimu) => [
+      q(3943),
+      q(0),
+      ],
+   q(lasgerdi) => [
+      q(4031),
+      q(0),
+      ],
+   q(lashi) => [
+      q(4036),
+      q(0),
+      ],
+   q(lasi) => [
+      q(4042),
+      q(0),
+      ],
+   q(late middle chinese) => [
+      q(4045),
+      q(0),
+      ],
+   q(latgalian) => [
+      q(4046),
+      q(0),
+      ],
+   q(latin) => [
+      q(0246),
+      q(0),
+      ],
+   q(latu) => [
+      q(4051),
+      q(0),
+      ],
+   q(latunde) => [
+      q(4048),
+      q(0),
+      ],
+   q(latvian) => [
+      q(0247),
+      q(0),
+      ],
+   q(latvian sign language) => [
+      q(4037),
+      q(0),
+      ],
+   q(lau) => [
+      q(3949),
+      q(0),
+      ],
+   q(laua) => [
+      q(4055),
+      q(0),
+      ],
+   q(lauan) => [
+      q(3950),
+      q(0),
+      ],
+   q(lauje) => [
+      q(3789),
+      q(0),
+      ],
+   q(laura) => [
+      q(4062),
+      q(0),
+      ],
+   q(laurentian) => [
+      q(4019),
+      q(0),
+      ],
+   q(lautu chin) => [
+      q(1780),
+      q(0),
+      ],
+   q(lavatbura-lamusong) => [
+      q(3811),
+      q(0),
+      ],
+   q(lave) => [
+      q(1424),
+      q(0),
+      ],
+   q(laven) => [
+      q(3805),
+      q(0),
+      ],
+   q(lavrung) => [
+      q(3081),
+      q(0),
+      ],
+   q(lavukaleve) => [
+      q(4070),
+      q(0),
+      ],
+   q(lawangan) => [
+      q(3813),
+      q(0),
+      ],
+   q(lawunuia) => [
+      q(6451),
+      q(0),
+      ],
+   q(layakha) => [
+      q(4082),
+      q(0),
+      ],
+   q(laz) => [
+      q(4088),
+      q(0),
+      ],
+   q(lealao chinantec) => [
+      q(1772),
+      q(0),
+      ],
+   q(leco) => [
+      q(3840),
+      q(0),
+      ],
+   q(ledo kaili) => [
+      q(3860),
+      q(0),
+      ],
+   q(leelau) => [
+      q(3831),
+      q(0),
+      ],
+   q(lefa) => [
+      q(3863),
+      q(0),
+      ],
+   q(lega-mwenga) => [
+      q(3872),
+      q(0),
+      ],
+   q(lega-shabunda) => [
+      q(3838),
+      q(0),
+      ],
+   q(legbo) => [
+      q(0655),
+      q(0),
+      ],
+   q(legenyem) => [
+      q(3816),
+      q(0),
+      ],
+   q(lehali) => [
+      q(6646),
+      q(0),
+      ],
+   q(lehalurup) => [
+      q(6905),
+      q(0),
+      ],
+   q(lehar) => [
+      q(1644),
+      q(0),
+      ],
+   q(leinong naga) => [
+      q(4087),
+      q(0),
+      ],
+   q(leipon) => [
+      q(3848),
+      q(0),
+      ],
+   q(lelak) => [
+      q(3941),
+      q(0),
+      ],
+   q(lele (chad)) => [
+      q(3944),
+      q(0),
+      ],
+   q(lele (democratic republic of congo)) => [
+      q(3849),
+      q(0),
+      ],
+   q(lele (guinea)) => [
+      q(3933),
+      q(0),
+      ],
+   q(lele (papua new guinea)) => [
+      q(3935),
+      q(0),
+      ],
+   q(lelemi) => [
+      q(3843),
+      q(0),
+      ],
+   q(lelepa) => [
+      q(4012),
+      q(0),
+      ],
+   q(lembena) => [
+      q(3854),
+      q(0),
+      ],
+   q(lemerig) => [
+      q(4030),
+      q(0),
+      ],
+   q(lemio) => [
+      q(3846),
+      q(0),
+      ],
+   q(lemnian) => [
+      q(7339),
+      q(0),
+      ],
+   q(lemolang) => [
+      q(3862),
+      q(0),
+      ],
+   q(lemoro) => [
+      q(3830),
+      q(0),
+      ],
+   q(lenakel) => [
+      q(6588),
+      q(0),
+      ],
+   q(lenca) => [
+      q(3851),
+      q(0),
+      ],
+   q(lendu) => [
+      q(3841),
+      q(0),
+      ],
+   q(lengilu) => [
+      q(3869),
+      q(0),
+      ],
+   q(lengo) => [
+      q(3875),
+      q(0),
+      ],
+   q(lengola) => [
+      q(3847),
+      q(0),
+      ],
+   q(lengua) => [
+      q(3844),
+      q(0),
+      ],
+   q(lengua de senas catalana) => [
+      q(1866),
+      q(0),
+      ],
+   q(lengua de senas del paraguay) => [
+      q(5648),
+      q(0),
+      ],
+   q(lengua de senas panamenas) => [
+      q(4040),
+      q(0),
+      ],
+   q(leningitij) => [
+      q(3981),
+      q(0),
+      ],
+   q(lenje) => [
+      q(3845),
+      q(0),
+      ],
+   q(lenkau) => [
+      q(3855),
+      q(0),
+      ],
+   q(lenyima) => [
+      q(3827),
+      q(0),
+      ],
+   q(leonese) => [
+      q(0030),
+      q(0),
+      ],
+   q(lepcha) => [
+      q(3853),
+      q(0),
+      ],
+   q(lepki) => [
+      q(4013),
+      q(0),
+      ],
+   q(lepontic) => [
+      q(7344),
+      q(0),
+      ],
+   q(lere) => [
+      q(2557),
+      q(0),
+      ],
+   q(lese) => [
+      q(3856),
+      q(0),
+      ],
+   q(lesing-gelimi) => [
+      q(3857),
+      q(0),
+      ],
+   q(letemboi) => [
+      q(4961),
+      q(0),
+      ],
+   q(leti (cameroon)) => [
+      q(3852),
+      q(0),
+      ],
+   q(leti (indonesia)) => [
+      q(4047),
+      q(0),
+      ],
+   q(letzeburgesch) => [
+      q(0254),
+      q(0),
+      ],
+   q(levuka) => [
+      q(4072),
+      q(0),
+      ],
+   q(lewo) => [
+      q(4081),
+      q(0),
+      ],
+   q(lewo eleng) => [
+      q(4074),
+      q(0),
+      ],
+   q(lewotobi) => [
+      q(4080),
+      q(0),
+      ],
+   q(leyigha) => [
+      q(1000),
+      q(0),
+      ],
+   q(lezghian) => [
+      q(0248),
+      q(0),
+      ],
+   q(lhaovo) => [
+      q(4272),
+      q(0),
+      ],
+   q(lhokpu) => [
+      q(3885),
+      q(0),
+      ],
+   q(lhomi) => [
+      q(3883),
+      q(0),
+      ],
+   q(li'o) => [
+      q(3914),
+      q(0),
+      ],
+   q(liabuku) => [
+      q(3909),
+      q(0),
+      ],
+   q(liana-seti) => [
+      q(6228),
+      q(0),
+      ],
+   q(liangmai naga) => [
+      q(4895),
+      q(0),
+      ],
+   q(lianshan zhuang) => [
+      q(7785),
+      q(0),
+      ],
+   q(liberia kpelle) => [
+      q(7395),
+      q(0),
+      ],
+   q(liberian english) => [
+      q(3904),
+      q(0),
+      ],
+   q(libido) => [
+      q(3903),
+      q(0),
+      ],
+   q(libinza) => [
+      q(3911),
+      q(0),
+      ],
+   q(libon bikol) => [
+      q(3802),
+      q(0),
+      ],
+   q(liburnian) => [
+      q(7341),
+      q(0),
+      ],
+   q(libyan arabic) => [
+      q(1002),
+      q(0),
+      ],
+   q(libyan sign language) => [
+      q(3808),
+      q(0),
+      ],
+   q(ligbi) => [
+      q(3895),
+      q(0),
+      ],
+   q(ligenza) => [
+      q(3878),
+      q(0),
+      ],
+   q(ligurian) => [
+      q(3898),
+      q(0),
+      ],
+   q(ligurian (ancient)) => [
+      q(7340),
+      q(0),
+      ],
+   q(lihir) => [
+      q(3896),
+      q(0),
+      ],
+   q(lijili) => [
+      q(4233),
+      q(0),
+      ],
+   q(lika) => [
+      q(3899),
+      q(0),
+      ],
+   q(liki) => [
+      q(3901),
+      q(0),
+      ],
+   q(likila) => [
+      q(3893),
+      q(0),
+      ],
+   q(likuba) => [
+      q(3719),
+      q(0),
+      ],
+   q(likum) => [
+      q(3890),
+      q(0),
+      ],
+   q(likwala) => [
+      q(3673),
+      q(0),
+      ],
+   q(lilau) => [
+      q(3942),
+      q(0),
+      ],
+   q(lillooet) => [
+      q(3900),
+      q(0),
+      ],
+   q(limassa) => [
+      q(1307),
+      q(0),
+      ],
+   q(limbu) => [
+      q(3894),
+      q(0),
+      ],
+   q(limbum) => [
+      q(3966),
+      q(0),
+      ],
+   q(limburgan) => [
+      q(0249),
+      q(0),
+      ],
+   q(limburger) => [
+      q(0249),
+      q(0),
+      ],
+   q(limburgish) => [
+      q(0249),
+      q(0),
+      ],
+   q(limi) => [
+      q(7598),
+      q(0),
+      ],
+   q(limilngan) => [
+      q(3953),
+      q(0),
+      ],
+   q(limos kalinga) => [
+      q(3441),
+      q(0),
+      ],
+   q(lindu) => [
+      q(3428),
+      q(0),
+      ],
+   q(linear a) => [
+      q(3774),
+      q(0),
+      ],
+   q(lingala) => [
+      q(0250),
+      q(0),
+      ],
+   q(lingao) => [
+      q(5242),
+      q(0),
+      ],
+   q(lingarak) => [
+      q(3870),
+      q(0),
+      ],
+   q(lingkhim) => [
+      q(3897),
+      q(0),
+      ],
+   q(lingua franca) => [
+      q(5493),
+      q(0),
+      ],
+   q(lingua franca nova) => [
+      q(3864),
+      q(0),
+      ],
+   q(lipan apache) => [
+      q(0846),
+      q(0),
+      ],
+   q(lipo) => [
+      q(4015),
+      q(0),
+      ],
+   q(lisabata-nuniali) => [
+      q(3824),
+      q(0),
+      ],
+   q(lisela) => [
+      q(3821),
+      q(0),
+      ],
+   q(lish) => [
+      q(4035),
+      q(0),
+      ],
+   q(lishan didan) => [
+      q(6662),
+      q(0),
+      ],
+   q(lishana deni) => [
+      q(4032),
+      q(0),
+      ],
+   q(lishanid noshan) => [
+      q(0702),
+      q(0),
+      ],
+   q(lisu) => [
+      q(3905),
+      q(0),
+      ],
+   q(literary chinese) => [
+      q(4085),
+      q(0),
+      ],
+   q(lithuanian) => [
+      q(0251),
+      q(0),
+      ],
+   q(lithuanian sign language) => [
+      q(3948),
+      q(0),
+      ],
+   q(litzlitz) => [
+      q(4086),
+      q(0),
+      ],
+   q(liujiang zhuang) => [
+      q(7783),
+      q(0),
+      ],
+   q(liuqian zhuang) => [
+      q(7786),
+      q(0),
+      ],
+   q(liv) => [
+      q(3907),
+      q(0),
+      ],
+   q(livvi) => [
+      q(5223),
+      q(0),
+      ],
+   q(llengua de signes catalana) => [
+      q(1866),
+      q(0),
+      ],
+   q(llengua de signes valenciana) => [
+      q(7015),
+      q(0),
+      ],
+   q(lo-toga) => [
+      q(3887),
+      q(0),
+      ],
+   q(loarki) => [
+      q(4022),
+      q(0),
+      ],
+   q(lobala) => [
+      q(4003),
+      q(0),
+      ],
+   q(lobi) => [
+      q(3990),
+      q(0),
+      ],
+   q(lodhi) => [
+      q(3803),
+      q(0),
+      ],
+   q(logba) => [
+      q(3874),
+      q(0),
+      ],
+   q(logo) => [
+      q(3994),
+      q(0),
+      ],
+   q(logol) => [
+      q(3993),
+      q(0),
+      ],
+   q(logooli) => [
+      q(5715),
+      q(0),
+      ],
+   q(logorik) => [
+      q(3906),
+      q(0),
+      ],
+   q(logudorese sardinian) => [
+      q(6182),
+      q(0),
+      ],
+   q(lohorung) => [
+      q(3807),
+      q(0),
+      ],
+   q(loja highland quichua) => [
+      q(5679),
+      q(0),
+      ],
+   q(lojban) => [
+      q(0204),
+      q(0),
+      ],
+   q(lokaa) => [
+      q(7517),
+      q(0),
+      ],
+   q(loke) => [
+      q(4011),
+      q(0),
+      ],
+   q(loko) => [
+      q(3998),
+      q(0),
+      ],
+   q(lokoya) => [
+      q(3930),
+      q(0),
+      ],
+   q(lola) => [
+      q(3817),
+      q(0),
+      ],
+   q(lolak) => [
+      q(3947),
+      q(0),
+      ],
+   q(lole) => [
+      q(3937),
+      q(0),
+      ],
+   q(lolo) => [
+      q(3932),
+      q(0),
+      ],
+   q(loloda) => [
+      q(3989),
+      q(0),
+      ],
+   q(lolopo) => [
+      q(7532),
+      q(0),
+      ],
+   q(loma (cote d'ivoire)) => [
+      q(3996),
+      q(0),
+      ],
+   q(loma (liberia)) => [
+      q(3999),
+      q(0),
+      ],
+   q(lomaiviti) => [
+      q(3970),
+      q(0),
+      ],
+   q(lomavren) => [
+      q(5786),
+      q(0),
+      ],
+   q(lombard) => [
+      q(3965),
+      q(0),
+      ],
+   q(lombi) => [
+      q(3959),
+      q(0),
+      ],
+   q(lombo) => [
+      q(4001),
+      q(0),
+      ],
+   q(lomwe) => [
+      q(4827),
+      q(0),
+      ],
+   q(loncong) => [
+      q(3818),
+      q(0),
+      ],
+   q(long phuri naga) => [
+      q(4014),
+      q(0),
+      ],
+   q(long wat) => [
+      q(6726),
+      q(0),
+      ],
+   q(longgu) => [
+      q(3877),
+      q(0),
+      ],
+   q(longto) => [
+      q(7164),
+      q(0),
+      ],
+   q(longuda) => [
+      q(3987),
+      q(0),
+      ],
+   q(loniu) => [
+      q(4005),
+      q(0),
+      ],
+   q(lonwolwol) => [
+      q(1845),
+      q(0),
+      ],
+   q(lonzo) => [
+      q(3988),
+      q(0),
+      ],
+   q(loo) => [
+      q(3835),
+      q(0),
+      ],
+   q(lopa) => [
+      q(4002),
+      q(0),
+      ],
+   q(lopi) => [
+      q(4008),
+      q(0),
+      ],
+   q(lopit) => [
+      q(4016),
+      q(0),
+      ],
+   q(lorang) => [
+      q(4025),
+      q(0),
+      ],
+   q(lorediakarkar) => [
+      q(3984),
+      q(0),
+      ],
+   q(loreto-ucayali spanish) => [
+      q(6161),
+      q(0),
+      ],
+   q(lote) => [
+      q(6930),
+      q(0),
+      ],
+   q(lotha naga) => [
+      q(4890),
+      q(0),
+      ],
+   q(lotud) => [
+      q(2161),
+      q(0),
+      ],
+   q(lou) => [
+      q(3997),
+      q(0),
+      ],
+   q(louisiana creole french) => [
+      q(4007),
+      q(0),
+      ],
+   q(loun) => [
+      q(4010),
+      q(0),
+      ],
+   q(loup a) => [
+      q(7343),
+      q(0),
+      ],
+   q(loup b) => [
+      q(7336),
+      q(0),
+      ],
+   q(lovono) => [
+      q(7006),
+      q(0),
+      ],
+   q(low german) => [
+      q(0306),
+      q(0),
+      ],
+   q(low saxon) => [
+      q(0306),
+      q(0),
+      ],
+   q(lower burdekin) => [
+      q(7249),
+      q(0),
+      ],
+   q(lower chehalis) => [
+      q(1707),
+      q(0),
+      ],
+   q(lower grand valley dani) => [
+      q(2100),
+      q(0),
+      ],
+   q(lower silesian) => [
+      q(6073),
+      q(0),
+      ],
+   q(lower sorbian) => [
+      q(0113),
+      q(0),
+      ],
+   q(lower ta'oih) => [
+      q(6718),
+      q(0),
+      ],
+   q(lower tanana) => [
+      q(6326),
+      q(0),
+      ],
+   q(lowland oaxaca chontal) => [
+      q(1779),
+      q(0),
+      ],
+   q(lowland tarahumara) => [
+      q(6328),
+      q(0),
+      ],
+   q(loxicha zapotec) => [
+      q(7869),
+      q(0),
+      ],
+   q(loyop) => [
+      q(6905),
+      q(0),
+      ],
+   q(lozi) => [
+      q(0253),
+      q(0),
+      ],
+   q(lu) => [
+      q(3311),
+      q(0),
+      ],
+   q(lua') => [
+      q(5562),
+      q(0),
+      ],
+   q(luang) => [
+      q(3861),
+      q(0),
+      ],
+   q(luba-katanga) => [
+      q(0256),
+      q(0),
+      ],
+   q(luba-lulua) => [
+      q(0255),
+      q(0),
+      ],
+   q(lubila) => [
+      q(3189),
+      q(0),
+      ],
+   q(lubu) => [
+      q(3819),
+      q(0),
+      ],
+   q(lubuagan kalinga) => [
+      q(3458),
+      q(0),
+      ],
+   q(lubukusu) => [
+      q(1577),
+      q(0),
+      ],
+   q(luchazi) => [
+      q(3820),
+      q(0),
+      ],
+   q(lucumi) => [
+      q(4061),
+      q(0),
+      ],
+   q(ludian) => [
+      q(4053),
+      q(0),
+      ],
+   q(lufu) => [
+      q(3837),
+      q(0),
+      ],
+   q(lugbara) => [
+      q(3867),
+      q(0),
+      ],
+   q(luguru) => [
+      q(5837),
+      q(0),
+      ],
+   q(lui) => [
+      q(3793),
+      q(0),
+      ],
+   q(luidakho-luisukha-lutirichi) => [
+      q(2884),
+      q(0),
+      ],
+   q(luimbi) => [
+      q(4059),
+      q(0),
+      ],
+   q(luiseno) => [
+      q(0258),
+      q(0),
+      ],
+   q(lukabaras) => [
+      q(3917),
+      q(0),
+      ],
+   q(lukpa) => [
+      q(2119),
+      q(0),
+      ],
+   q(lule sami) => [
+      q(0390),
+      q(0),
+      ],
+   q(lulogooli) => [
+      q(5715),
+      q(0),
+      ],
+   q(lumba-yakkha) => [
+      q(4064),
+      q(0),
+      ],
+   q(lumbee) => [
+      q(3974),
+      q(0),
+      ],
+   q(lumbu) => [
+      q(4060),
+      q(0),
+      ],
+   q(lumun) => [
+      q(3954),
+      q(0),
+      ],
+   q(lun bawang) => [
+      q(3977),
+      q(0),
+      ],
+   q(luna) => [
+      q(4056),
+      q(0),
+      ],
+   q(lunanakha) => [
+      q(4057),
+      q(0),
+      ],
+   q(lunda) => [
+      q(0259),
+      q(0),
+      ],
+   q(lundayeh) => [
+      q(3977),
+      q(0),
+      ],
+   q(lungga) => [
+      q(3865),
+      q(0),
+      ],
+   q(luo (cameroon)) => [
+      q(4066),
+      q(0),
+      ],
+   q(luo (kenya and tanzania)) => [
+      q(0260),
+      q(0),
+      ],
+   q(luopohe hmong) => [
+      q(2773),
+      q(0),
+      ],
+   q(luopohe miao) => [
+      q(2773),
+      q(0),
+      ],
+   q(luri) => [
+      q(3826),
+      q(0),
+      ],
+   q(lusengo) => [
+      q(4033),
+      q(0),
+      ],
+   q(lushai) => [
+      q(0261),
+      q(0),
+      ],
+   q(lushootseed) => [
+      q(4063),
+      q(0),
+      ],
+   q(lusi) => [
+      q(3320),
+      q(0),
+      ],
+   q(lusitanian) => [
+      q(7345),
+      q(0),
+      ],
+   q(lutachoni) => [
+      q(4050),
+      q(0),
+      ],
+   q(lutos) => [
+      q(4787),
+      q(0),
+      ],
+   q(luvale) => [
+      q(4054),
+      q(0),
+      ],
+   q(luwati) => [
+      q(4065),
+      q(0),
+      ],
+   q(luwo) => [
+      q(4079),
+      q(0),
+      ],
+   q(luxembourgish) => [
+      q(0254),
+      q(0),
+      ],
+   q(luyana) => [
+      q(4084),
+      q(0),
+      ],
+   q(luyia) => [
+      q(4067),
+      q(0),
+      ],
+   q(lwalu) => [
+      q(4073),
+      q(0),
+      ],
+   q(lycian) => [
+      q(7337),
+      q(0),
+      ],
+   q(lydian) => [
+      q(7338),
+      q(0),
+      ],
+   q(lyele) => [
+      q(3842),
+      q(0),
+      ],
+   q(lyngngam) => [
+      q(4083),
+      q(0),
+      ],
+   q(lyons sign language) => [
+      q(4034),
+      q(0),
+      ],
+   q(ma (democratic republic of congo)) => [
+      q(4517),
+      q(0),
+      ],
+   q(ma (papua new guinea)) => [
+      q(4307),
+      q(0),
+      ],
+   q(ma manda) => [
+      q(6045),
+      q(0),
+      ],
+   q(ma'anyan) => [
+      q(4273),
+      q(0),
+      ],
+   q(ma'di) => [
+      q(4258),
+      q(0),
+      ],
+   q(ma'ya) => [
+      q(6087),
+      q(0),
+      ],
+   q(maa) => [
+      q(1784),
+      q(0),
+      ],
+   q(maaka) => [
+      q(4197),
+      q(0),
+      ],
+   q(maasina fulfulde) => [
+      q(2334),
+      q(0),
+      ],
+   q(maay) => [
+      q(7613),
+      q(0),
+      ],
+   q(maba (chad)) => [
+      q(4157),
+      q(0),
+      ],
+   q(maba (indonesia)) => [
+      q(4459),
+      q(0),
+      ],
+   q(mabaale) => [
+      q(4391),
+      q(0),
+      ],
+   q(mabaan) => [
+      q(4225),
+      q(0),
+      ],
+   q(mabaka valley kalinga) => [
+      q(3386),
+      q(0),
+      ],
+   q(mabire) => [
+      q(4566),
+      q(0),
+      ],
+   q(maca) => [
+      q(4127),
+      q(0),
+      ],
+   q(macaguaje) => [
+      q(4138),
+      q(0),
+      ],
+   q(macaguan) => [
+      q(4114),
+      q(0),
+      ],
+   q(macanese) => [
+      q(4692),
+      q(0),
+      ],
+   q(macedo-romanian) => [
+      q(0362),
+      q(0),
+      ],
+   q(macedonian) => [
+      q(0262),
+      q(0),
+      ],
+   q(machame) => [
+      q(3096),
+      q(0),
+      ],
+   q(machiguenga) => [
+      q(4128),
+      q(0),
+      ],
+   q(machinere) => [
+      q(4437),
+      q(0),
+      ],
+   q(machinga) => [
+      q(4599),
+      q(0),
+      ],
+   q(maco) => [
+      q(7172),
+      q(0),
+      ],
+   q(macuna) => [
+      q(4673),
+      q(0),
+      ],
+   q(macushi) => [
+      q(4104),
+      q(0),
+      ],
+   q(mada (cameroon)) => [
+      q(4647),
+      q(0),
+      ],
+   q(mada (nigeria)) => [
+      q(4153),
+      q(0),
+      ],
+   q(madagascar sign language) => [
+      q(4677),
+      q(0),
+      ],
+   q(madak) => [
+      q(4389),
+      q(0),
+      ],
+   q(maden) => [
+      q(7370),
+      q(0),
+      ],
+   q(madhi madhi) => [
+      q(2083),
+      q(0),
+      ],
+   q(madi) => [
+      q(2601),
+      q(0),
+      ],
+   q(madngele) => [
+      q(7798),
+      q(0),
+      ],
+   q(madurese) => [
+      q(0263),
+      q(0),
+      ],
+   q(mae) => [
+      q(4371),
+      q(0),
+      ],
+   q(maek) => [
+      q(2772),
+      q(0),
+      ],
+   q(maeng itneg) => [
+      q(2999),
+      q(0),
+      ],
+   q(mafa) => [
+      q(4092),
+      q(0),
+      ],
+   q(mafea) => [
+      q(4339),
+      q(0),
+      ],
+   q(mag-antsi ayta) => [
+      q(5962),
+      q(0),
+      ],
+   q(mag-indi ayta) => [
+      q(1300),
+      q(0),
+      ],
+   q(magahi) => [
+      q(0264),
+      q(0),
+      ],
+   q(magbukun ayta) => [
+      q(1009),
+      q(0),
+      ],
+   q(magdalena penasco mixtec) => [
+      q(7449),
+      q(0),
+      ],
+   q(maghdi) => [
+      q(2543),
+      q(0),
+      ],
+   q(magoma) => [
+      q(2549),
+      q(0),
+      ],
+   q(magori) => [
+      q(7754),
+      q(0),
+      ],
+   q(maguindanaon) => [
+      q(4159),
+      q(0),
+      ],
+   q(mah meri) => [
+      q(4254),
+      q(0),
+      ],
+   q(mahali) => [
+      q(4317),
+      q(0),
+      ],
+   q(maharastri prakrit) => [
+      q(5489),
+      q(0),
+      ],
+   q(mahasu pahari) => [
+      q(1161),
+      q(0),
+      ],
+   q(mahican) => [
+      q(4318),
+      q(0),
+      ],
+   q(mahongwe) => [
+      q(4251),
+      q(0),
+      ],
+   q(mahou) => [
+      q(4650),
+      q(0),
+      ],
+   q(mai brat) => [
+      q(1012),
+      q(0),
+      ],
+   q(maia) => [
+      q(6060),
+      q(0),
+      ],
+   q(maiadomu) => [
+      q(4699),
+      q(0),
+      ],
+   q(maiani) => [
+      q(6585),
+      q(0),
+      ],
+   q(maii) => [
+      q(4379),
+      q(0),
+      ],
+   q(mailu) => [
+      q(4245),
+      q(0),
+      ],
+   q(maindo) => [
+      q(1923),
+      q(0),
+      ],
+   q(mainfrankisch) => [
+      q(6988),
+      q(0),
+      ],
+   q(mainstream kenyah) => [
+      q(7321),
+      q(0),
+      ],
+   q(mairasi) => [
+      q(7857),
+      q(0),
+      ],
+   q(maisin) => [
+      q(4117),
+      q(0),
+      ],
+   q(maithili) => [
+      q(0266),
+      q(0),
+      ],
+   q(maiwa (indonesia)) => [
+      q(7137),
+      q(0),
+      ],
+   q(maiwa (papua new guinea)) => [
+      q(4541),
+      q(0),
+      ],
+   q(maiwala) => [
+      q(4568),
+      q(0),
+      ],
+   q(majang) => [
+      q(4438),
+      q(0),
+      ],
+   q(majera) => [
+      q(7356),
+      q(0),
+      ],
+   q(majhi) => [
+      q(4319),
+      q(0),
+      ],
+   q(majhwar) => [
+      q(4376),
+      q(0),
+      ],
+   q(majukayang kalinga) => [
+      q(3434),
+      q(0),
+      ],
+   q(mak (china)) => [
+      q(4325),
+      q(0),
+      ],
+   q(mak (nigeria)) => [
+      q(5346),
+      q(0),
+      ],
+   q(makaa) => [
+      q(4142),
+      q(0),
+      ],
+   q(makah) => [
+      q(4659),
+      q(0),
+      ],
+   q(makasae) => [
+      q(4343),
+      q(0),
+      ],
+   q(makasar) => [
+      q(0267),
+      q(0),
+      ],
+   q(makassar malay) => [
+      q(4215),
+      q(0),
+      ],
+   q(makayam) => [
+      q(0948),
+      q(0),
+      ],
+   q(makhuwa) => [
+      q(7002),
+      q(0),
+      ],
+   q(makhuwa-marrevone) => [
+      q(7350),
+      q(0),
+      ],
+   q(makhuwa-meetto) => [
+      q(4232),
+      q(0),
+      ],
+   q(makhuwa-moniga) => [
+      q(4262),
+      q(0),
+      ],
+   q(makhuwa-saka) => [
+      q(7434),
+      q(0),
+      ],
+   q(makhuwa-shirima) => [
+      q(6993),
+      q(0),
+      ],
+   q(maklew) => [
+      q(4230),
+      q(0),
+      ],
+   q(makolkol) => [
+      q(7794),
+      q(0),
+      ],
+   q(makonde) => [
+      q(3216),
+      q(0),
+      ],
+   q(maku'a) => [
+      q(4069),
+      q(0),
+      ],
+   q(makurap) => [
+      q(4453),
+      q(0),
+      ],
+   q(makuri naga) => [
+      q(3100),
+      q(0),
+      ],
+   q(makwe) => [
+      q(7611),
+      q(0),
+      ],
+   q(makyan naga) => [
+      q(6874),
+      q(0),
+      ],
+   q(mal) => [
+      q(4349),
+      q(0),
+      ],
+   q(mal paharia) => [
+      q(4321),
+      q(0),
+      ],
+   q(mala (nigeria)) => [
+      q(5846),
+      q(0),
+      ],
+   q(mala (papua new guinea)) => [
+      q(5382),
+      q(0),
+      ],
+   q(mala malasar) => [
+      q(2941),
+      q(0),
+      ],
+   q(malaccan creole malay) => [
+      q(1689),
+      q(0),
+      ],
+   q(malaccan creole portuguese) => [
+      q(4139),
+      q(0),
+      ],
+   q(malagasy) => [
+      q(0283),
+      q(0),
+      ],
+   q(malakhel) => [
+      q(4347),
+      q(0),
+      ],
+   q(malalamai) => [
+      q(4385),
+      q(0),
+      ],
+   q(malango) => [
+      q(4356),
+      q(0),
+      ],
+   q(malankuravan) => [
+      q(4308),
+      q(0),
+      ],
+   q(malapandaram) => [
+      q(4309),
+      q(0),
+      ],
+   q(malaryan) => [
+      q(4310),
+      q(0),
+      ],
+   q(malas) => [
+      q(4335),
+      q(0),
+      ],
+   q(malasar) => [
+      q(7618),
+      q(0),
+      ],
+   q(malavedan) => [
+      q(4311),
+      q(0),
+      ],
+   q(malawi lomwe) => [
+      q(4000),
+      q(0),
+      ],
+   q(malawi sena) => [
+      q(6276),
+      q(0),
+      ],
+   q(malay) => [
+      q(0274),
+      q(0),
+      ],
+   q(malay (individual language)) => [
+      q(7784),
+      q(0),
+      ],
+   q(malay (macrolanguage)) => [
+      q(0274),
+      q(1),
+      ],
+   q(malayalam) => [
+      q(0268),
+      q(0),
+      ],
+   q(malayic dayak) => [
+      q(7275),
+      q(0),
+      ],
+   q(malaynon) => [
+      q(4366),
+      q(0),
+      ],
+   q(malayo) => [
+      q(4116),
+      q(0),
+      ],
+   q(malayo-polynesian languages) => [
+      q(0520),
+      q(0),
+      ],
+   q(malaysian sign language) => [
+      q(7358),
+      q(0),
+      ],
+   q(malba birifor) => [
+      q(1151),
+      q(0),
+      ],
+   q(maldivian) => [
+      q(0110),
+      q(0),
+      ],
+   q(male) => [
+      q(2809),
+      q(0),
+      ],
+   q(male (ethiopia)) => [
+      q(4174),
+      q(0),
+      ],
+   q(male (papua new guinea)) => [
+      q(4155),
+      q(0),
+      ],
+   q(malecite-passamaquoddy) => [
+      q(5561),
+      q(0),
+      ],
+   q(maleku jaika) => [
+      q(2645),
+      q(0),
+      ],
+   q(maleng) => [
+      q(5459),
+      q(0),
+      ],
+   q(maleu-kilenge) => [
+      q(4236),
+      q(0),
+      ],
+   q(malfaxal) => [
+      q(4365),
+      q(0),
+      ],
+   q(malgana) => [
+      q(6994),
+      q(0),
+      ],
+   q(malgbe) => [
+      q(4632),
+      q(0),
+      ],
+   q(mali) => [
+      q(2434),
+      q(0),
+      ],
+   q(maligo) => [
+      q(4612),
+      q(0),
+      ],
+   q(malila) => [
+      q(4241),
+      q(0),
+      ],
+   q(malimba) => [
+      q(4678),
+      q(0),
+      ],
+   q(malimpung) => [
+      q(4351),
+      q(0),
+      ],
+   q(malinaltepec me'phaa) => [
+      q(6378),
+      q(0),
+      ],
+   q(malinaltepec tlapanec) => [
+      q(6378),
+      q(0),
+      ],
+   q(malo) => [
+      q(4344),
+      q(0),
+      ],
+   q(malol) => [
+      q(4111),
+      q(0),
+      ],
+   q(maltese) => [
+      q(0284),
+      q(0),
+      ],
+   q(maltese sign language) => [
+      q(4163),
+      q(0),
+      ],
+   q(malua bay) => [
+      q(4354),
+      q(0),
+      ],
+   q(malvi) => [
+      q(4570),
+      q(0),
+      ],
+   q(malyangapa) => [
+      q(7552),
+      q(0),
+      ],
+   q(mam) => [
+      q(4094),
+      q(0),
+      ],
+   q(mama) => [
+      q(4367),
+      q(0),
+      ],
+   q(mamaa) => [
+      q(4255),
+      q(0),
+      ],
+   q(mamainde) => [
+      q(7133),
+      q(0),
+      ],
+   q(mamanwa) => [
+      q(4380),
+      q(0),
+      ],
+   q(mamara senoufo) => [
+      q(4662),
+      q(0),
+      ],
+   q(mamasa) => [
+      q(4467),
+      q(0),
+      ],
+   q(mambae) => [
+      q(4237),
+      q(0),
+      ],
+   q(mambai) => [
+      q(4145),
+      q(0),
+      ],
+   q(mamboru) => [
+      q(4581),
+      q(0),
+      ],
+   q(mambwe-lungu) => [
+      q(4242),
+      q(0),
+      ],
+   q(mampruli) => [
+      q(4099),
+      q(0),
+      ],
+   q(mamuju) => [
+      q(4481),
+      q(0),
+      ],
+   q(mamulique) => [
+      q(2250),
+      q(0),
+      ],
+   q(mamusi) => [
+      q(3217),
+      q(0),
+      ],
+   q(mamvu) => [
+      q(4160),
+      q(0),
+      ],
+   q(man met) => [
+      q(4378),
+      q(0),
+      ],
+   q(manado malay) => [
+      q(7359),
+      q(0),
+      ],
+   q(manam) => [
+      q(4579),
+      q(0),
+      ],
+   q(manambu) => [
+      q(4348),
+      q(0),
+      ],
+   q(manangba) => [
+      q(4955),
+      q(0),
+      ],
+   q(manangkari) => [
+      q(7816),
+      q(0),
+      ],
+   q(manchu) => [
+      q(0285),
+      q(0),
+      ],
+   q(manda (australia)) => [
+      q(7787),
+      q(0),
+      ],
+   q(manda (india)) => [
+      q(4250),
+      q(0),
+      ],
+   q(manda (tanzania)) => [
+      q(4243),
+      q(0),
+      ],
+   q(mandahuaca) => [
+      q(4269),
+      q(0),
+      ],
+   q(mandaic) => [
+      q(4277),
+      q(0),
+      ],
+   q(mandan) => [
+      q(4266),
+      q(0),
+      ],
+   q(mandandanyi) => [
+      q(7797),
+      q(0),
+      ],
+   q(mandar) => [
+      q(0276),
+      q(0),
+      ],
+   q(mandara) => [
+      q(6353),
+      q(0),
+      ],
+   q(mandari) => [
+      q(4478),
+      q(0),
+      ],
+   q(mandarin chinese) => [
+      q(1790),
+      q(0),
+      ],
+   q(mandaya) => [
+      q(4507),
+      q(0),
+      ],
+   q(mande languages) => [
+      q(0500),
+      q(0),
+      ],
+   q(mandeali) => [
+      q(4305),
+      q(0),
+      ],
+   q(mander) => [
+      q(4475),
+      q(0),
+      ],
+   q(mandingo) => [
+      q(0269),
+      q(0),
+      ],
+   q(mandinka) => [
+      q(4400),
+      q(0),
+      ],
+   q(mandjak) => [
+      q(4221),
+      q(0),
+      ],
+   q(mandobo atas) => [
+      q(0558),
+      q(0),
+      ],
+   q(mandobo bawah) => [
+      q(1557),
+      q(0),
+      ],
+   q(manem) => [
+      q(3062),
+      q(0),
+      ],
+   q(mang) => [
+      q(7815),
+      q(0),
+      ],
+   q(manga kanuri) => [
+      q(3185),
+      q(0),
+      ],
+   q(mangala) => [
+      q(4188),
+      q(0),
+      ],
+   q(mangarayi) => [
+      q(4436),
+      q(0),
+      ],
+   q(mangareva) => [
+      q(4504),
+      q(0),
+      ],
+   q(mangas) => [
+      q(7817),
+      q(0),
+      ],
+   q(mangayat) => [
+      q(4661),
+      q(0),
+      ],
+   q(mangbetu) => [
+      q(4161),
+      q(0),
+      ],
+   q(mangbutu) => [
+      q(4162),
+      q(0),
+      ],
+   q(mangerr) => [
+      q(7791),
+      q(0),
+      ],
+   q(mangetti dune !xung) => [
+      q(2479),
+      q(0),
+      ],
+   q(mangga buang) => [
+      q(4381),
+      q(0),
+      ],
+   q(manggarai) => [
+      q(4482),
+      q(0),
+      ],
+   q(mango) => [
+      q(4229),
+      q(0),
+      ],
+   q(mangole) => [
+      q(4461),
+      q(0),
+      ],
+   q(mangseng) => [
+      q(4108),
+      q(0),
+      ],
+   q(mangue) => [
+      q(4423),
+      q(0),
+      ],
+   q(manichaean middle persian) => [
+      q(7360),
+      q(0),
+      ],
+   q(manide) => [
+      q(0563),
+      q(0),
+      ],
+   q(manikion) => [
+      q(4412),
+      q(0),
+      ],
+   q(manipa) => [
+      q(4473),
+      q(0),
+      ],
+   q(manipuri) => [
+      q(0286),
+      q(0),
+      ],
+   q(mankanya) => [
+      q(3462),
+      q(0),
+      ],
+   q(mann) => [
+      q(4196),
+      q(0),
+      ],
+   q(manna-dora) => [
+      q(4314),
+      q(0),
+      ],
+   q(mannan) => [
+      q(4315),
+      q(0),
+      ],
+   q(manobo languages) => [
+      q(0287),
+      q(0),
+      ],
+   q(manombai) => [
+      q(7167),
+      q(0),
+      ],
+   q(mansaka) => [
+      q(4518),
+      q(0),
+      ],
+   q(mansi) => [
+      q(4407),
+      q(0),
+      ],
+   q(mansoanka) => [
+      q(4529),
+      q(0),
+      ],
+   q(manta) => [
+      q(4658),
+      q(0),
+      ],
+   q(mantsi) => [
+      q(5079),
+      q(0),
+      ],
+   q(manumanaw) => [
+      q(3702),
+      q(0),
+      ],
+   q(manumanaw karen) => [
+      q(3702),
+      q(0),
+      ],
+   q(manusela) => [
+      q(7085),
+      q(0),
+      ],
+   q(manx) => [
+      q(0156),
+      q(0),
+      ],
+   q(manya) => [
+      q(4683),
+      q(0),
+      ],
+   q(manyawa) => [
+      q(4413),
+      q(0),
+      ],
+   q(manyika) => [
+      q(4629),
+      q(0),
+      ],
+   q(manza) => [
+      q(4695),
+      q(0),
+      ],
+   q(mao naga) => [
+      q(4728),
+      q(0),
+      ],
+   q(maonan) => [
+      q(4370),
+      q(0),
+      ],
+   q(maore comorian) => [
+      q(6269),
+      q(0),
+      ],
+   q(maori) => [
+      q(0270),
+      q(0),
+      ],
+   q(mape) => [
+      q(4350),
+      q(0),
+      ],
+   q(mapena) => [
+      q(4402),
+      q(0),
+      ],
+   q(mapia) => [
+      q(4457),
+      q(0),
+      ],
+   q(mapidian) => [
+      q(4455),
+      q(0),
+      ],
+   q(mapos buang) => [
+      q(1622),
+      q(0),
+      ],
+   q(mapoyo) => [
+      q(4133),
+      q(0),
+      ],
+   q(mapuche) => [
+      q(0025),
+      q(0),
+      ],
+   q(mapudungun) => [
+      q(0025),
+      q(0),
+      ],
+   q(mapun) => [
+      q(6034),
+      q(0),
+      ],
+   q(maquiritari) => [
+      q(4134),
+      q(0),
+      ],
+   q(mara) => [
+      q(4178),
+      q(0),
+      ],
+   q(mara chin) => [
+      q(4491),
+      q(0),
+      ],
+   q(marachi) => [
+      q(4021),
+      q(0),
+      ],
+   q(maraghei) => [
+      q(6990),
+      q(0),
+      ],
+   q(maragus) => [
+      q(4501),
+      q(0),
+      ],
+   q(maram naga) => [
+      q(4943),
+      q(0),
+      ],
+   q(marama) => [
+      q(4024),
+      q(0),
+      ],
+   q(maramba) => [
+      q(4655),
+      q(0),
+      ],
+   q(maranao) => [
+      q(4505),
+      q(0),
+      ],
+   q(maranunggu) => [
+      q(7804),
+      q(0),
+      ],
+   q(mararit) => [
+      q(4226),
+      q(0),
+      ],
+   q(marathi) => [
+      q(0272),
+      q(0),
+      ],
+   q(marau) => [
+      q(4594),
+      q(0),
+      ],
+   q(marba) => [
+      q(4439),
+      q(0),
+      ],
+   q(maremgi) => [
+      q(4506),
+      q(0),
+      ],
+   q(marenje) => [
+      q(6998),
+      q(0),
+      ],
+   q(marfa) => [
+      q(4597),
+      q(0),
+      ],
+   q(margany) => [
+      q(7789),
+      q(0),
+      ],
+   q(marghi central) => [
+      q(4502),
+      q(0),
+      ],
+   q(marghi south) => [
+      q(4212),
+      q(0),
+      ],
+   q(margos-yarowilca-lauricocha quechua) => [
+      q(5681),
+      q(0),
+      ],
+   q(margu) => [
+      q(4256),
+      q(0),
+      ],
+   q(mari) => [
+      q(0081),
+      q(0),
+      ],
+   q(mari (east sepik province)) => [
+      q(4124),
+      q(0),
+      ],
+   q(mari (madang province)) => [
+      q(2796),
+      q(0),
+      ],
+   q(mari (russia)) => [
+      q(0081),
+      q(1),
+      ],
+   q(maria (india)) => [
+      q(4500),
+      q(0),
+      ],
+   q(maria (papua new guinea)) => [
+      q(4168),
+      q(0),
+      ],
+   q(maricopa) => [
+      q(4486),
+      q(0),
+      ],
+   q(maridan) => [
+      q(7790),
+      q(0),
+      ],
+   q(maridjabin) => [
+      q(7796),
+      q(0),
+      ],
+   q(marik) => [
+      q(1938),
+      q(0),
+      ],
+   q(marimanindji) => [
+      q(7799),
+      q(0),
+      ],
+   q(marind) => [
+      q(4508),
+      q(0),
+      ],
+   q(maring) => [
+      q(4123),
+      q(0),
+      ],
+   q(maring naga) => [
+      q(4975),
+      q(0),
+      ],
+   q(maringarr) => [
+      q(7806),
+      q(0),
+      ],
+   q(marino) => [
+      q(4485),
+      q(0),
+      ],
+   q(mariri) => [
+      q(4466),
+      q(0),
+      ],
+   q(marithiel) => [
+      q(4217),
+      q(0),
+      ],
+   q(maritime sign language) => [
+      q(5058),
+      q(0),
+      ],
+   q(maritsaua) => [
+      q(4523),
+      q(0),
+      ],
+   q(mariyedi) => [
+      q(7811),
+      q(0),
+      ],
+   q(marka) => [
+      q(5776),
+      q(0),
+      ],
+   q(markweeta) => [
+      q(2260),
+      q(0),
+      ],
+   q(marma) => [
+      q(5801),
+      q(0),
+      ],
+   q(marovo) => [
+      q(4591),
+      q(0),
+      ],
+   q(marriammu) => [
+      q(7419),
+      q(0),
+      ],
+   q(marrucinian) => [
+      q(6869),
+      q(0),
+      ],
+   q(marshallese) => [
+      q(0265),
+      q(0),
+      ],
+   q(marsian) => [
+      q(2948),
+      q(0),
+      ],
+   q(martha's vineyard sign language) => [
+      q(4488),
+      q(0),
+      ],
+   q(marti ke) => [
+      q(7793),
+      q(0),
+      ],
+   q(martu wangka) => [
+      q(4442),
+      q(0),
+      ],
+   q(martuyhunira) => [
+      q(6983),
+      q(0),
+      ],
+   q(maru) => [
+      q(4272),
+      q(0),
+      ],
+   q(marubo) => [
+      q(4691),
+      q(0),
+      ],
+   q(marwari) => [
+      q(0295),
+      q(0),
+      ],
+   q(marwari (india)) => [
+      q(5852),
+      q(0),
+      ],
+   q(marwari (pakistan)) => [
+      q(4582),
+      q(0),
+      ],
+   q(masaaba) => [
+      q(4672),
+      q(0),
+      ],
+   q(masadiit itneg) => [
+      q(6501),
+      q(0),
+      ],
+   q(masai) => [
+      q(0273),
+      q(0),
+      ],
+   q(masalit) => [
+      q(4361),
+      q(0),
+      ],
+   q(masana) => [
+      q(4140),
+      q(0),
+      ],
+   q(masbatenyo) => [
+      q(4509),
+      q(0),
+      ],
+   q(mashco piro) => [
+      q(1907),
+      q(0),
+      ],
+   q(mashi (nigeria)) => [
+      q(3102),
+      q(0),
+      ],
+   q(mashi (zambia)) => [
+      q(4264),
+      q(0),
+      ],
+   q(masikoro malagasy) => [
+      q(4515),
+      q(0),
+      ],
+   q(masimasi) => [
+      q(2984),
+      q(0),
+      ],
+   q(masiwang) => [
+      q(1334),
+      q(0),
+      ],
+   q(maskelynes) => [
+      q(3427),
+      q(0),
+      ],
+   q(maskoy pidgin) => [
+      q(4257),
+      q(0),
+      ],
+   q(maslam) => [
+      q(4528),
+      q(0),
+      ],
+   q(masmaje) => [
+      q(4193),
+      q(0),
+      ],
+   q(massalat) => [
+      q(4158),
+      q(0),
+      ],
+   q(massep) => [
+      q(4595),
+      q(0),
+      ],
+   q(matagalpa) => [
+      q(4546),
+      q(0),
+      ],
+   q(matal) => [
+      q(4207),
+      q(0),
+      ],
+   q(matbat) => [
+      q(7366),
+      q(0),
+      ],
+   q(matengo) => [
+      q(4246),
+      q(0),
+      ],
+   q(matepi) => [
+      q(4462),
+      q(0),
+      ],
+   q(matigsalug manobo) => [
+      q(4120),
+      q(0),
+      ],
+   q(matipuhy) => [
+      q(4688),
+      q(0),
+      ],
+   q(matis) => [
+      q(4449),
+      q(0),
+      ],
+   q(mato) => [
+      q(4194),
+      q(0),
+      ],
+   q(mato grosso arara) => [
+      q(0989),
+      q(0),
+      ],
+   q(mator) => [
+      q(4545),
+      q(0),
+      ],
+   q(mator-taygi-karagas) => [
+      q(7620),
+      q(0),
+      ],
+   q(matses) => [
+      q(4132),
+      q(0),
+      ],
+   q(mattoki) => [
+      q(7382),
+      q(0),
+      ],
+   q(mattole) => [
+      q(4580),
+      q(0),
+      ],
+   q(matu chin) => [
+      q(2760),
+      q(0),
+      ],
+   q(matukar) => [
+      q(4304),
+      q(0),
+      ],
+   q(matumbi) => [
+      q(4247),
+      q(0),
+      ],
+   q(matya samo) => [
+      q(6233),
+      q(0),
+      ],
+   q(maung) => [
+      q(4440),
+      q(0),
+      ],
+   q(mauritian sign language) => [
+      q(4044),
+      q(0),
+      ],
+   q(mauwake) => [
+      q(4261),
+      q(0),
+      ],
+   q(mawa (chad)) => [
+      q(4149),
+      q(0),
+      ],
+   q(mawa (nigeria)) => [
+      q(7130),
+      q(0),
+      ],
+   q(mawak) => [
+      q(4303),
+      q(0),
+      ],
+   q(mawan) => [
+      q(4152),
+      q(0),
+      ],
+   q(mawayana) => [
+      q(4697),
+      q(0),
+      ],
+   q(mawchi) => [
+      q(4323),
+      q(0),
+      ],
+   q(mawes) => [
+      q(4235),
+      q(0),
+      ],
+   q(mawukakan) => [
+      q(4650),
+      q(0),
+      ],
+   q(maxakali) => [
+      q(4112),
+      q(0),
+      ],
+   q(maxi gbe) => [
+      q(4638),
+      q(0),
+      ],
+   q(maya samo) => [
+      q(6309),
+      q(0),
+      ],
+   q(mayaguduna) => [
+      q(7371),
+      q(0),
+      ],
+   q(mayan languages) => [
+      q(0296),
+      q(0),
+      ],
+   q(mayangna) => [
+      q(7507),
+      q(0),
+      ],
+   q(mayeka) => [
+      q(4654),
+      q(0),
+      ],
+   q(maykulan) => [
+      q(4408),
+      q(0),
+      ],
+   q(mayo) => [
+      q(4224),
+      q(0),
+      ],
+   q(mayogo) => [
+      q(4164),
+      q(0),
+      ],
+   q(mayoyao ifugao) => [
+      q(2900),
+      q(0),
+      ],
+   q(mazagway) => [
+      q(2076),
+      q(0),
+      ],
+   q(mazaltepec zapotec) => [
+      q(7849),
+      q(0),
+      ],
+   q(mazanderani) => [
+      q(4687),
+      q(0),
+      ],
+   q(mazatlan mazatec) => [
+      q(7005),
+      q(0),
+      ],
+   q(mazatlan mixe) => [
+      q(4685),
+      q(0),
+      ],
+   q(mba) => [
+      q(4202),
+      q(0),
+      ],
+   q(mbabaram) => [
+      q(6984),
+      q(0),
+      ],
+   q(mbala) => [
+      q(4166),
+      q(0),
+      ],
+   q(mbalanhu) => [
+      q(3976),
+      q(0),
+      ],
+   q(mbandja) => [
+      q(7812),
+      q(0),
+      ],
+   q(mbangala) => [
+      q(4633),
+      q(0),
+      ],
+   q(mbangi) => [
+      q(4238),
+      q(0),
+      ],
+   q(mbangwe) => [
+      q(7800),
+      q(0),
+      ],
+   q(mbara (australia)) => [
+      q(4588),
+      q(0),
+      ],
+   q(mbara (chad)) => [
+      q(4443),
+      q(0),
+      ],
+   q(mbariman-gudhinma) => [
+      q(7808),
+      q(0),
+      ],
+   q(mbati) => [
+      q(4165),
+      q(0),
+      ],
+   q(mbato) => [
+      q(2664),
+      q(0),
+      ],
+   q(mbay) => [
+      q(4653),
+      q(0),
+      ],
+   q(mbe) => [
+      q(4214),
+      q(0),
+      ],
+   q(mbe') => [
+      q(4543),
+      q(0),
+      ],
+   q(mbelime) => [
+      q(4469),
+      q(0),
+      ],
+   q(mbere) => [
+      q(4169),
+      q(0),
+      ],
+   q(mbesa) => [
+      q(7805),
+      q(0),
+      ],
+   q(mbo (cameroon)) => [
+      q(4115),
+      q(0),
+      ],
+   q(mbo (democratic republic of congo)) => [
+      q(7809),
+      q(0),
+      ],
+   q(mboi) => [
+      q(4420),
+      q(0),
+      ],
+   q(mboko) => [
+      q(4170),
+      q(0),
+      ],
+   q(mbole) => [
+      q(4167),
+      q(0),
+      ],
+   q(mbonga) => [
+      q(7349),
+      q(0),
+      ],
+   q(mbongno) => [
+      q(1181),
+      q(0),
+      ],
+   q(mbosi) => [
+      q(4172),
+      q(0),
+      ],
+   q(mbowe) => [
+      q(4641),
+      q(0),
+      ],
+   q(mbre) => [
+      q(4320),
+      q(0),
+      ],
+   q(mbu') => [
+      q(4560),
+      q(0),
+      ],
+   q(mbudum) => [
+      q(7351),
+      q(0),
+      ],
+   q(mbugu) => [
+      q(4253),
+      q(0),
+      ],
+   q(mbugwe) => [
+      q(4249),
+      q(0),
+      ],
+   q(mbuko) => [
+      q(4460),
+      q(0),
+      ],
+   q(mbukushu) => [
+      q(4271),
+      q(0),
+      ],
+   q(mbula) => [
+      q(4392),
+      q(0),
+      ],
+   q(mbula-bwazza) => [
+      q(4121),
+      q(0),
+      ],
+   q(mbule) => [
+      q(4345),
+      q(0),
+      ],
+   q(mbulungish) => [
+      q(4122),
+      q(0),
+      ],
+   q(mbum) => [
+      q(4156),
+      q(0),
+      ],
+   q(mbunda) => [
+      q(4137),
+      q(0),
+      ],
+   q(mbunga) => [
+      q(4248),
+      q(0),
+      ],
+   q(mburku) => [
+      q(1058),
+      q(0),
+      ],
+   q(mbwela) => [
+      q(4220),
+      q(0),
+      ],
+   q(mbya guarani) => [
+      q(2639),
+      q(0),
+      ],
+   q(me'en) => [
+      q(4664),
+      q(0),
+      ],
+   q(mea) => [
+      q(4182),
+      q(0),
+      ],
+   q(medebur) => [
+      q(4306),
+      q(0),
+      ],
+   q(media lengua) => [
+      q(4562),
+      q(0),
+      ],
+   q(mediak) => [
+      q(4624),
+      q(0),
+      ],
+   q(median) => [
+      q(7352),
+      q(0),
+      ],
+   q(mednyj aleut) => [
+      q(4561),
+      q(0),
+      ],
+   q(medumba) => [
+      q(1610),
+      q(0),
+      ],
+   q(mefele) => [
+      q(4209),
+      q(0),
+      ],
+   q(megam) => [
+      q(4181),
+      q(0),
+      ],
+   q(megleno romanian) => [
+      q(5843),
+      q(0),
+      ],
+   q(mehek) => [
+      q(5103),
+      q(0),
+      ],
+   q(mehinaku) => [
+      q(4374),
+      q(0),
+      ],
+   q(mehri) => [
+      q(2457),
+      q(0),
+      ],
+   q(mekeo) => [
+      q(4186),
+      q(0),
+      ],
+   q(mekmek) => [
+      q(4587),
+      q(0),
+      ],
+   q(mekwei) => [
+      q(4513),
+      q(0),
+      ],
+   q(mele-fila) => [
+      q(4631),
+      q(0),
+      ],
+   q(melo) => [
+      q(4223),
+      q(0),
+      ],
+   q(melpa) => [
+      q(4179),
+      q(0),
+      ],
+   q(memoni) => [
+      q(4125),
+      q(0),
+      ],
+   q(mendalam kayan) => [
+      q(7313),
+      q(0),
+      ],
+   q(mendankwe-nkwen) => [
+      q(4203),
+      q(0),
+      ],
+   q(mende) => [
+      q(0277),
+      q(0),
+      ],
+   q(mende (papua new guinea)) => [
+      q(6016),
+      q(0),
+      ],
+   q(mende (sierra leone)) => [
+      q(0277),
+      q(1),
+      ],
+   q(mengaka) => [
+      q(7354),
+      q(0),
+      ],
+   q(mengen) => [
+      q(4180),
+      q(0),
+      ],
+   q(mengisa) => [
+      q(4146),
+      q(0),
+      ],
+   q(menka) => [
+      q(4176),
+      q(0),
+      ],
+   q(menominee) => [
+      q(4199),
+      q(0),
+      ],
+   q(mentawai) => [
+      q(4622),
+      q(0),
+      ],
+   q(menya) => [
+      q(4144),
+      q(0),
+      ],
+   q(meoswar) => [
+      q(4600),
+      q(0),
+      ],
+   q(mer) => [
+      q(4409),
+      q(0),
+      ],
+   q(meramera) => [
+      q(4639),
+      q(0),
+      ],
+   q(merei) => [
+      q(3952),
+      q(0),
+      ],
+   q(merey) => [
+      q(4191),
+      q(0),
+      ],
+   q(meriam) => [
+      q(6862),
+      q(0),
+      ],
+   q(merlav) => [
+      q(4495),
+      q(0),
+      ],
+   q(meroitic) => [
+      q(7364),
+      q(0),
+      ],
+   q(meru) => [
+      q(4192),
+      q(0),
+      ],
+   q(merwari) => [
+      q(7191),
+      q(0),
+      ],
+   q(mesaka) => [
+      q(3015),
+      q(0),
+      ],
+   q(mescalero-chiricahua apache) => [
+      q(0847),
+      q(0),
+      ],
+   q(mese) => [
+      q(4135),
+      q(0),
+      ],
+   q(meskwaki) => [
+      q(5858),
+      q(0),
+      ],
+   q(mesme) => [
+      q(7764),
+      q(0),
+      ],
+   q(mesmes) => [
+      q(4669),
+      q(0),
+      ],
+   q(mesopotamian arabic) => [
+      q(0592),
+      q(0),
+      ],
+   q(mesqan) => [
+      q(4602),
+      q(0),
+      ],
+   q(messapic) => [
+      q(1793),
+      q(0),
+      ],
+   q(meta') => [
+      q(4239),
+      q(0),
+      ],
+   q(metlatonoc mixtec) => [
+      q(4648),
+      q(0),
+      ],
+   q(mewari) => [
+      q(4550),
+      q(0),
+      ],
+   q(mewati) => [
+      q(7203),
+      q(0),
+      ],
+   q(mexican sign language) => [
+      q(4218),
+      q(0),
+      ],
+   q(meyah) => [
+      q(4185),
+      q(0),
+      ],
+   q(mezontla popoloca) => [
+      q(5341),
+      q(0),
+      ],
+   q(mezquital otomi) => [
+      q(5293),
+      q(0),
+      ],
+   q(mfinu) => [
+      q(7792),
+      q(0),
+      ],
+   q(mfumte) => [
+      q(4816),
+      q(0),
+      ],
+   q(mi'kmaq) => [
+      q(0279),
+      q(0),
+      ],
+   q(miahuatlan zapotec) => [
+      q(7728),
+      q(0),
+      ],
+   q(miami) => [
+      q(4275),
+      q(0),
+      ],
+   q(mian) => [
+      q(4452),
+      q(0),
+      ],
+   q(miani) => [
+      q(5461),
+      q(0),
+      ],
+   q(michif) => [
+      q(1848),
+      q(0),
+      ],
+   q(michigamea) => [
+      q(1789),
+      q(0),
+      ],
+   q(michoacan mazahua) => [
+      q(4369),
+      q(0),
+      ],
+   q(michoacan nahuatl) => [
+      q(4755),
+      q(0),
+      ],
+   q(micmac) => [
+      q(0279),
+      q(0),
+      ],
+   q(mid grand valley dani) => [
+      q(2104),
+      q(0),
+      ],
+   q(mid-southern banda) => [
+      q(1245),
+      q(0),
+      ],
+   q(middle armenian) => [
+      q(0991),
+      q(0),
+      ],
+   q(middle breton) => [
+      q(7252),
+      q(0),
+      ],
+   q(middle cornish) => [
+      q(1808),
+      q(0),
+      ],
+   q(middle dutch (ca. 1050-1350)) => [
+      q(0115),
+      q(1),
+      ],
+   q(middle english (1100-1500)) => [
+      q(0124),
+      q(1),
+      ],
+   q(middle french (ca. 1400-1600)) => [
+      q(0138),
+      q(1),
+      ],
+   q(middle high german (ca. 1050-1500)) => [
+      q(0157),
+      q(1),
+      ],
+   q(middle hittite) => [
+      q(2833),
+      q(0),
+      ],
+   q(middle irish (900-1200)) => [
+      q(0278),
+      q(1),
+      ],
+   q(middle korean (10th-16th cent.)) => [
+      q(5211),
+      q(0),
+      ],
+   q(middle low german) => [
+      q(2544),
+      q(0),
+      ],
+   q(middle mongolian) => [
+      q(7375),
+      q(0),
+      ],
+   q(middle newar) => [
+      q(5117),
+      q(0),
+      ],
+   q(middle watut) => [
+      q(4444),
+      q(0),
+      ],
+   q(middle welsh) => [
+      q(7121),
+      q(0),
+      ],
+   q(midob) => [
+      q(4184),
+      q(0),
+      ],
+   q(migaama) => [
+      q(4390),
+      q(0),
+      ],
+   q(migabac) => [
+      q(4448),
+      q(0),
+      ],
+   q(migum) => [
+      q(3418),
+      q(0),
+      ],
+   q(miji) => [
+      q(6033),
+      q(0),
+      ],
+   q(miju-mishmi) => [
+      q(4636),
+      q(0),
+      ],
+   q(mikasuki) => [
+      q(4284),
+      q(0),
+      ],
+   q(mili) => [
+      q(7609),
+      q(0),
+      ],
+   q(miltu) => [
+      q(4352),
+      q(0),
+      ],
+   q(miluk) => [
+      q(2944),
+      q(0),
+      ],
+   q(milyan) => [
+      q(2949),
+      q(0),
+      ],
+   q(min bei chinese) => [
+      q(4404),
+      q(0),
+      ],
+   q(min dong chinese) => [
+      q(1702),
+      q(0),
+      ],
+   q(min nan chinese) => [
+      q(4711),
+      q(0),
+      ],
+   q(min zhong chinese) => [
+      q(1934),
+      q(0),
+      ],
+   q(mina (cameroon)) => [
+      q(2785),
+      q(0),
+      ],
+   q(mina (india)) => [
+      q(4660),
+      q(0),
+      ],
+   q(minaean) => [
+      q(2954),
+      q(0),
+      ],
+   q(minangkabau) => [
+      q(0280),
+      q(0),
+      ],
+   q(minanibai) => [
+      q(4148),
+      q(0),
+      ],
+   q(minaveha) => [
+      q(4590),
+      q(0),
+      ],
+   q(minderico) => [
+      q(2131),
+      q(0),
+      ],
+   q(mindiri) => [
+      q(4446),
+      q(0),
+      ],
+   q(mingang doso) => [
+      q(4332),
+      q(0),
+      ],
+   q(mingrelian) => [
+      q(7353),
+      q(0),
+      ],
+   q(minica huitoto) => [
+      q(2830),
+      q(0),
+      ],
+   q(minidien) => [
+      q(7095),
+      q(0),
+      ],
+   q(minigir) => [
+      q(6989),
+      q(0),
+      ],
+   q(minoan) => [
+      q(5233),
+      q(0),
+      ],
+   q(minokok) => [
+      q(4474),
+      q(0),
+      ],
+   q(minriq) => [
+      q(4405),
+      q(0),
+      ],
+   q(mintil) => [
+      q(4693),
+      q(0),
+      ],
+   q(minz zhuang) => [
+      q(7752),
+      q(0),
+      ],
+   q(miqie) => [
+      q(7571),
+      q(0),
+      ],
+   q(mirandese) => [
+      q(0294),
+      q(0),
+      ],
+   q(miraya bikol) => [
+      q(5734),
+      q(0),
+      ],
+   q(mirgan) => [
+      q(7853),
+      q(0),
+      ],
+   q(miriti) => [
+      q(4387),
+      q(0),
+      ],
+   q(miriwung) => [
+      q(4190),
+      q(0),
+      ],
+   q(mirpur panjabi) => [
+      q(5501),
+      q(0),
+      ],
+   q(miship) => [
+      q(4312),
+      q(0),
+      ],
+   q(misima-panaeati) => [
+      q(4456),
+      q(0),
+      ],
+   q(mising) => [
+      q(4490),
+      q(0),
+      ],
+   q(miskito) => [
+      q(4289),
+      q(0),
+      ],
+   q(mitla zapotec) => [
+      q(7736),
+      q(0),
+      ],
+   q(mitlatongo mixtec) => [
+      q(6995),
+      q(0),
+      ],
+   q(mittu) => [
+      q(4621),
+      q(0),
+      ],
+   q(mituku) => [
+      q(7803),
+      q(0),
+      ],
+   q(miu) => [
+      q(4447),
+      q(0),
+      ],
+   q(miwa) => [
+      q(6991),
+      q(0),
+      ],
+   q(mixed great andamanese) => [
+      q(2390),
+      q(0),
+      ],
+   q(mixifore) => [
+      q(4206),
+      q(0),
+      ],
+   q(mixtepec mixtec) => [
+      q(4294),
+      q(0),
+      ],
+   q(mixtepec zapotec) => [
+      q(7837),
+      q(0),
+      ],
+   q(miya) => [
+      q(4324),
+      q(0),
+      ],
+   q(miyako) => [
+      q(4586),
+      q(0),
+      ],
+   q(miyobe) => [
+      q(6148),
+      q(0),
+      ],
+   q(mlabri) => [
+      q(4484),
+      q(0),
+      ],
+   q(mlahso) => [
+      q(3886),
+      q(0),
+      ],
+   q(mlap) => [
+      q(3356),
+      q(0),
+      ],
+   q(mlomp) => [
+      q(4357),
+      q(0),
+      ],
+   q(mmaala) => [
+      q(4386),
+      q(0),
+      ],
+   q(mmen) => [
+      q(1149),
+      q(0),
+      ],
+   q(mo) => [
+      q(7110),
+      q(0),
+      ],
+   q(mo'da) => [
+      q(2423),
+      q(0),
+      ],
+   q(moabite) => [
+      q(5168),
+      q(0),
+      ],
+   q(moba) => [
+      q(4216),
+      q(0),
+      ],
+   q(mobilian) => [
+      q(4417),
+      q(0),
+      ],
+   q(mobumrin aizi) => [
+      q(0686),
+      q(0),
+      ],
+   q(mobwa karen) => [
+      q(3087),
+      q(0),
+      ],
+   q(mocheno) => [
+      q(4263),
+      q(0),
+      ],
+   q(mochi) => [
+      q(5220),
+      q(0),
+      ],
+   q(mochica) => [
+      q(5227),
+      q(0),
+      ],
+   q(mocho) => [
+      q(4252),
+      q(0),
+      ],
+   q(mocovi) => [
+      q(4416),
+      q(0),
+      ],
+   q(modang) => [
+      q(4630),
+      q(0),
+      ],
+   q(modern greek (1453-)) => [
+      q(0164),
+      q(1),
+      ],
+   q(modole) => [
+      q(4472),
+      q(0),
+      ],
+   q(moere) => [
+      q(4593),
+      q(0),
+      ],
+   q(mofu-gudur) => [
+      q(4279),
+      q(0),
+      ],
+   q(mogholi) => [
+      q(4259),
+      q(0),
+      ],
+   q(mogum) => [
+      q(4428),
+      q(0),
+      ],
+   q(mohave) => [
+      q(4429),
+      q(0),
+      ],
+   q(mohawk) => [
+      q(0288),
+      q(0),
+      ],
+   q(mohegan-pequot) => [
+      q(7404),
+      q(0),
+      ],
+   q(moi (congo)) => [
+      q(4430),
+      q(0),
+      ],
+   q(moi (indonesia)) => [
+      q(4640),
+      q(0),
+      ],
+   q(moikodi) => [
+      q(4333),
+      q(0),
+      ],
+   q(moingi) => [
+      q(4626),
+      q(0),
+      ],
+   q(moji) => [
+      q(7610),
+      q(0),
+      ],
+   q(mok) => [
+      q(4477),
+      q(0),
+      ],
+   q(moken) => [
+      q(4620),
+      q(0),
+      ],
+   q(mokerang) => [
+      q(4219),
+      q(0),
+      ],
+   q(mokilese) => [
+      q(4327),
+      q(0),
+      ],
+   q(moklen) => [
+      q(4330),
+      q(0),
+      ],
+   q(mokole) => [
+      q(4329),
+      q(0),
+      ],
+   q(mokpwe) => [
+      q(1430),
+      q(0),
+      ],
+   q(moksela) => [
+      q(6999),
+      q(0),
+      ],
+   q(moksha) => [
+      q(0275),
+      q(0),
+      ],
+   q(molale) => [
+      q(4106),
+      q(0),
+      ],
+   q(molbog) => [
+      q(5639),
+      q(0),
+      ],
+   q(moldavian) => [
+      q(0360),
+      q(0),
+      ],
+   q(moldova sign language) => [
+      q(7013),
+      q(0),
+      ],
+   q(moldovan) => [
+      q(0360),
+      q(0),
+      ],
+   q(molengue) => [
+      q(1569),
+      q(0),
+      ],
+   q(molima) => [
+      q(4431),
+      q(0),
+      ],
+   q(molmo one) => [
+      q(0946),
+      q(0),
+      ],
+   q(molo) => [
+      q(7801),
+      q(0),
+      ],
+   q(molof) => [
+      q(4519),
+      q(0),
+      ],
+   q(moloko) => [
+      q(4364),
+      q(0),
+      ],
+   q(mom jango) => [
+      q(6959),
+      q(0),
+      ],
+   q(moma) => [
+      q(4663),
+      q(0),
+      ],
+   q(momare) => [
+      q(4532),
+      q(0),
+      ],
+   q(mombo dogon) => [
+      q(2081),
+      q(0),
+      ],
+   q(mombum) => [
+      q(4522),
+      q(0),
+      ],
+   q(momina) => [
+      q(4368),
+      q(0),
+      ],
+   q(momuna) => [
+      q(4463),
+      q(0),
+      ],
+   q(mon) => [
+      q(4411),
+      q(0),
+      ],
+   q(mon-khmer languages) => [
+      q(0282),
+      q(0),
+      ],
+   q(monastic sign language) => [
+      q(4680),
+      q(0),
+      ],
+   q(monde) => [
+      q(4394),
+      q(0),
+      ],
+   q(mondropolon) => [
+      q(5019),
+      q(0),
+      ],
+   q(mong) => [
+      q(0179),
+      q(0),
+      ],
+   q(mong leng) => [
+      q(2790),
+      q(0),
+      ],
+   q(mong njua) => [
+      q(2790),
+      q(0),
+      ],
+   q(mongo) => [
+      q(0252),
+      q(0),
+      ],
+   q(mongol) => [
+      q(4244),
+      q(0),
+      ],
+   q(mongolia buriat) => [
+      q(1579),
+      q(0),
+      ],
+   q(mongolian) => [
+      q(0289),
+      q(0),
+      ],
+   q(mongolian languages) => [
+      q(0531),
+      q(0),
+      ],
+   q(mongolian sign language) => [
+      q(4525),
+      q(0),
+      ],
+   q(mongondow) => [
+      q(4419),
+      q(0),
+      ],
+   q(moni) => [
+      q(4414),
+      q(0),
+      ],
+   q(mono (cameroon)) => [
+      q(4503),
+      q(0),
+      ],
+   q(mono (democratic republic of congo)) => [
+      q(4398),
+      q(0),
+      ],
+   q(mono (solomon islands)) => [
+      q(4537),
+      q(0),
+      ],
+   q(mono (usa)) => [
+      q(4406),
+      q(0),
+      ],
+   q(monom) => [
+      q(4424),
+      q(0),
+      ],
+   q(monsang naga) => [
+      q(4950),
+      q(0),
+      ],
+   q(montagnais) => [
+      q(4418),
+      q(0),
+      ],
+   q(montol) => [
+      q(4544),
+      q(0),
+      ],
+   q(monumbo) => [
+      q(4637),
+      q(0),
+      ],
+   q(monzombo) => [
+      q(4421),
+      q(0),
+      ],
+   q(moo) => [
+      q(2670),
+      q(0),
+      ],
+   q(moose cree) => [
+      q(1853),
+      q(0),
+      ],
+   q(mopan maya) => [
+      q(4425),
+      q(0),
+      ],
+   q(mor (bomberai peninsula)) => [
+      q(4426),
+      q(0),
+      ],
+   q(mor (mor islands)) => [
+      q(4274),
+      q(0),
+      ],
+   q(moraid) => [
+      q(4514),
+      q(0),
+      ],
+   q(morawa) => [
+      q(4679),
+      q(0),
+      ],
+   q(morelos nahuatl) => [
+      q(4852),
+      q(0),
+      ],
+   q(morerebi) => [
+      q(7361),
+      q(0),
+      ],
+   q(moresada) => [
+      q(4530),
+      q(0),
+      ],
+   q(mori atas) => [
+      q(4690),
+      q(0),
+      ],
+   q(mori bawah) => [
+      q(7372),
+      q(0),
+      ],
+   q(morigi) => [
+      q(4154),
+      q(0),
+      ],
+   q(morisyen) => [
+      q(4204),
+      q(0),
+      ],
+   q(moro) => [
+      q(4427),
+      q(0),
+      ],
+   q(moroccan arabic) => [
+      q(0884),
+      q(0),
+      ],
+   q(moroccan sign language) => [
+      q(7365),
+      q(0),
+      ],
+   q(morokodo) => [
+      q(4227),
+      q(0),
+      ],
+   q(morom) => [
+      q(1104),
+      q(0),
+      ],
+   q(moronene) => [
+      q(4471),
+      q(0),
+      ],
+   q(morori) => [
+      q(4422),
+      q(0),
+      ],
+   q(morouas) => [
+      q(4498),
+      q(0),
+      ],
+   q(mortlockese) => [
+      q(4494),
+      q(0),
+      ],
+   q(moru) => [
+      q(4228),
+      q(0),
+      ],
+   q(mosimo) => [
+      q(4479),
+      q(0),
+      ],
+   q(mosiro) => [
+      q(4625),
+      q(0),
+      ],
+   q(moskona) => [
+      q(4542),
+      q(0),
+      ],
+   q(mossi) => [
+      q(0290),
+      q(0),
+      ],
+   q(mota) => [
+      q(4552),
+      q(0),
+      ],
+   q(motlav) => [
+      q(4363),
+      q(0),
+      ],
+   q(motu) => [
+      q(4195),
+      q(0),
+      ],
+   q(mouk-aria) => [
+      q(4610),
+      q(0),
+      ],
+   q(mountain koiali) => [
+      q(3523),
+      q(0),
+      ],
+   q(mouwase) => [
+      q(3103),
+      q(0),
+      ],
+   q(movima) => [
+      q(4689),
+      q(0),
+      ],
+   q(moyadan itneg) => [
+      q(3003),
+      q(0),
+      ],
+   q(moyon naga) => [
+      q(4957),
+      q(0),
+      ],
+   q(mozambican sign language) => [
+      q(4698),
+      q(0),
+      ],
+   q(mozarabic) => [
+      q(4635),
+      q(0),
+      ],
+   q(mpade) => [
+      q(4441),
+      q(0),
+      ],
+   q(mpalitjanh) => [
+      q(7398),
+      q(0),
+      ],
+   q(mpi) => [
+      q(4458),
+      q(0),
+      ],
+   q(mpiemo) => [
+      q(4150),
+      q(0),
+      ],
+   q(mpoto) => [
+      q(4434),
+      q(0),
+      ],
+   q(mpotovoro) => [
+      q(4596),
+      q(0),
+      ],
+   q(mpumpong) => [
+      q(4231),
+      q(0),
+      ],
+   q(mpuono) => [
+      q(7802),
+      q(0),
+      ],
+   q(mpur) => [
+      q(0725),
+      q(0),
+      ],
+   q(mro-khimi chin) => [
+      q(1792),
+      q(0),
+      ],
+   q(mru) => [
+      q(4497),
+      q(0),
+      ],
+   q(mser) => [
+      q(3549),
+      q(0),
+      ],
+   q(mt. iraya agta) => [
+      q(0919),
+      q(0),
+      ],
+   q(mt. iriga agta) => [
+      q(0678),
+      q(0),
+      ],
+   q(mualang) => [
+      q(4536),
+      q(0),
+      ],
+   q(mubami) => [
+      q(6701),
+      q(0),
+      ],
+   q(mubi) => [
+      q(4559),
+      q(0),
+      ],
+   q(muda) => [
+      q(7606),
+      q(0),
+      ],
+   q(mudbura) => [
+      q(4606),
+      q(0),
+      ],
+   q(mudhili gadaba) => [
+      q(2408),
+      q(0),
+      ],
+   q(mudu koraga) => [
+      q(6986),
+      q(0),
+      ],
+   q(muduga) => [
+      q(6830),
+      q(0),
+      ],
+   q(mufian) => [
+      q(0825),
+      q(0),
+      ],
+   q(mugom) => [
+      q(4567),
+      q(0),
+      ],
+   q(muinane) => [
+      q(1320),
+      q(0),
+      ],
+   q(mukha-dora) => [
+      q(4377),
+      q(0),
+      ],
+   q(mukulu) => [
+      q(4433),
+      q(0),
+      ],
+   q(mulaha) => [
+      q(4222),
+      q(0),
+      ],
+   q(mulam) => [
+      q(4355),
+      q(0),
+      ],
+   q(mulao) => [
+      q(2516),
+      q(0),
+      ],
+   q(mulgi) => [
+      q(4585),
+      q(0),
+      ],
+   q(mullu kurumba) => [
+      q(3503),
+      q(0),
+      ],
+   q(mullukmulluk) => [
+      q(4435),
+      q(0),
+      ],
+   q(multiple languages) => [
+      q(0291),
+      q(0),
+      ],
+   q(muluridyi) => [
+      q(7000),
+      q(0),
+      ],
+   q(mum) => [
+      q(3526),
+      q(0),
+      ],
+   q(mumuye) => [
+      q(4686),
+      q(0),
+      ],
+   q(mun chin) => [
+      q(4618),
+      q(0),
+      ],
+   q(muna) => [
+      q(4393),
+      q(0),
+      ],
+   q(munda) => [
+      q(6886),
+      q(0),
+      ],
+   q(munda languages) => [
+      q(0292),
+      q(0),
+      ],
+   q(mundabli) => [
+      q(1355),
+      q(0),
+      ],
+   q(mundang) => [
+      q(4558),
+      q(0),
+      ],
+   q(mundani) => [
+      q(4396),
+      q(0),
+      ],
+   q(mundari) => [
+      q(6885),
+      q(0),
+      ],
+   q(mundat) => [
+      q(4372),
+      q(0),
+      ],
+   q(mundu) => [
+      q(4564),
+      q(0),
+      ],
+   q(munduruku) => [
+      q(4670),
+      q(0),
+      ],
+   q(mungaka) => [
+      q(4260),
+      q(0),
+      ],
+   q(munggui) => [
+      q(4540),
+      q(0),
+      ],
+   q(mungkip) => [
+      q(4454),
+      q(0),
+      ],
+   q(muniche) => [
+      q(4668),
+      q(0),
+      ],
+   q(munit) => [
+      q(4535),
+      q(0),
+      ],
+   q(munji) => [
+      q(4399),
+      q(0),
+      ],
+   q(munsee) => [
+      q(6879),
+      q(0),
+      ],
+   q(muong) => [
+      q(4549),
+      q(0),
+      ],
+   q(muratayak) => [
+      q(0907),
+      q(0),
+      ],
+   q(murik (malaysia)) => [
+      q(4644),
+      q(0),
+      ],
+   q(murik (papua new guinea)) => [
+      q(4538),
+      q(0),
+      ],
+   q(murkim) => [
+      q(5785),
+      q(0),
+      ],
+   q(murle) => [
+      q(4572),
+      q(0),
+      ],
+   q(murrinh-patha) => [
+      q(4608),
+      q(0),
+      ],
+   q(mursi) => [
+      q(4578),
+      q(0),
+      ],
+   q(murui huitoto) => [
+      q(2851),
+      q(0),
+      ],
+   q(murupi) => [
+      q(4480),
+      q(0),
+      ],
+   q(muruwari) => [
+      q(7807),
+      q(0),
+      ],
+   q(musak) => [
+      q(4383),
+      q(0),
+      ],
+   q(musar) => [
+      q(4375),
+      q(0),
+      ],
+   q(musasa) => [
+      q(6096),
+      q(0),
+      ],
+   q(musey) => [
+      q(4512),
+      q(0),
+      ],
+   q(musgu) => [
+      q(4563),
+      q(0),
+      ],
+   q(mushungulu) => [
+      q(7348),
+      q(0),
+      ],
+   q(musi) => [
+      q(4565),
+      q(0),
+      ],
+   q(muskum) => [
+      q(4299),
+      q(0),
+      ],
+   q(muslim tat) => [
+      q(6723),
+      q(0),
+      ],
+   q(musom) => [
+      q(4527),
+      q(0),
+      ],
+   q(mussau-emira) => [
+      q(2248),
+      q(0),
+      ],
+   q(muthuvan) => [
+      q(4575),
+      q(0),
+      ],
+   q(mutu) => [
+      q(6731),
+      q(0),
+      ],
+   q(muya) => [
+      q(4589),
+      q(0),
+      ],
+   q(muyang) => [
+      q(4577),
+      q(0),
+      ],
+   q(muyuw) => [
+      q(4671),
+      q(0),
+      ],
+   q(muzi) => [
+      q(7622),
+      q(0),
+      ],
+   q(mvanip) => [
+      q(4136),
+      q(0),
+      ],
+   q(mvuba) => [
+      q(4634),
+      q(0),
+      ],
+   q(mwaghavul) => [
+      q(6255),
+      q(0),
+      ],
+   q(mwali comorian) => [
+      q(7115),
+      q(0),
+      ],
+   q(mwan) => [
+      q(4415),
+      q(0),
+      ],
+   q(mwani) => [
+      q(7142),
+      q(0),
+      ],
+   q(mwatebu) => [
+      q(4603),
+      q(0),
+      ],
+   q(mwera (chimwera)) => [
+      q(4607),
+      q(0),
+      ],
+   q(mwera (nyasa)) => [
+      q(4301),
+      q(0),
+      ],
+   q(mwerlap) => [
+      q(4495),
+      q(0),
+      ],
+   q(mwimbi-muthambi) => [
+      q(4619),
+      q(0),
+      ],
+   q(mwotlap) => [
+      q(4363),
+      q(0),
+      ],
+   q(mycenaean greek) => [
+      q(2550),
+      q(0),
+      ],
+   q(myene) => [
+      q(4656),
+      q(0),
+      ],
+   q(mysian) => [
+      q(7619),
+      q(0),
+      ],
+   q(mzieme naga) => [
+      q(4947),
+      q(0),
+      ],
+   q(n'ko) => [
+      q(0317),
+      q(0),
+      ],
+   q(n/u) => [
+      q(4823),
+      q(0),
+      ],
+   q(na) => [
+      q(4738),
+      q(0),
+      ],
+   q(na-dene languages) => [
+      q(0532),
+      q(0),
+      ],
+   q(na-meo) => [
+      q(4802),
+      q(0),
+      ],
+   q(naaba) => [
+      q(4712),
+      q(0),
+      ],
+   q(naasioi) => [
+      q(4715),
+      q(0),
+      ],
+   q(naba) => [
+      q(4395),
+      q(0),
+      ],
+   q(nabak) => [
+      q(4705),
+      q(0),
+      ],
+   q(nabi) => [
+      q(4557),
+      q(0),
+      ],
+   q(nachering) => [
+      q(4747),
+      q(0),
+      ],
+   q(nadeb) => [
+      q(4110),
+      q(0),
+      ],
+   q(nadruvian) => [
+      q(4770),
+      q(0),
+      ],
+   q(nafaanra) => [
+      q(4815),
+      q(0),
+      ],
+   q(nafi) => [
+      q(6184),
+      q(0),
+      ],
+   q(nafri) => [
+      q(5131),
+      q(0),
+      ],
+   q(nafusi) => [
+      q(3043),
+      q(0),
+      ],
+   q(naga pidgin) => [
+      q(4706),
+      q(0),
+      ],
+   q(nagarchal) => [
+      q(4726),
+      q(0),
+      ],
+   q(nage) => [
+      q(5121),
+      q(0),
+      ],
+   q(nagumi) => [
+      q(4837),
+      q(0),
+      ],
+   q(naha'ai) => [
+      q(4365),
+      q(0),
+      ],
+   q(nahali) => [
+      q(4940),
+      q(0),
+      ],
+   q(nahari) => [
+      q(4849),
+      q(0),
+      ],
+   q(nahavaq) => [
+      q(6122),
+      q(0),
+      ],
+   q(nahuatl languages) => [
+      q(0298),
+      q(0),
+      ],
+   q(nai) => [
+      q(1221),
+      q(0),
+      ],
+   q(najdi arabic) => [
+      q(0880),
+      q(0),
+      ],
+   q(naka'ela) => [
+      q(4704),
+      q(0),
+      ],
+   q(nakai) => [
+      q(4913),
+      q(0),
+      ],
+   q(nakame) => [
+      q(4865),
+      q(0),
+      ],
+   q(nakanai) => [
+      q(4708),
+      q(0),
+      ],
+   q(nakara) => [
+      q(4754),
+      q(0),
+      ],
+   q(nake) => [
+      q(4730),
+      q(0),
+      ],
+   q(naki) => [
+      q(4205),
+      q(0),
+      ],
+   q(nakwi) => [
+      q(4718),
+      q(0),
+      ],
+   q(nalca) => [
+      q(4929),
+      q(0),
+      ],
+   q(nali) => [
+      q(5059),
+      q(0),
+      ],
+   q(nalik) => [
+      q(4709),
+      q(0),
+      ],
+   q(nalogo) => [
+      q(4942),
+      q(0),
+      ],
+   q(nalu) => [
+      q(4707),
+      q(0),
+      ],
+   q(naluo yi) => [
+      q(7600),
+      q(0),
+      ],
+   q(nama (namibia)) => [
+      q(4713),
+      q(0),
+      ],
+   q(nama (papua new guinea)) => [
+      q(4966),
+      q(0),
+      ],
+   q(namakura) => [
+      q(4953),
+      q(0),
+      ],
+   q(namat) => [
+      q(4915),
+      q(0),
+      ],
+   q(nambo) => [
+      q(4756),
+      q(0),
+      ],
+   q(nambya) => [
+      q(4959),
+      q(0),
+      ],
+   q(namia) => [
+      q(4981),
+      q(0),
+      ],
+   q(namiae) => [
+      q(5107),
+      q(0),
+      ],
+   q(namibian sign language) => [
+      q(4737),
+      q(0),
+      ],
+   q(namla) => [
+      q(4700),
+      q(0),
+      ],
+   q(namo) => [
+      q(4649),
+      q(0),
+      ],
+   q(namonuito) => [
+      q(4962),
+      q(0),
+      ],
+   q(namosi-naitasiri-serua) => [
+      q(1543),
+      q(0),
+      ],
+   q(namuyi) => [
+      q(4967),
+      q(0),
+      ],
+   q(nanai) => [
+      q(2531),
+      q(0),
+      ],
+   q(nancere) => [
+      q(4971),
+      q(0),
+      ],
+   q(nande) => [
+      q(4970),
+      q(0),
+      ],
+   q(nandi) => [
+      q(4878),
+      q(0),
+      ],
+   q(nanerige senoufo) => [
+      q(5945),
+      q(0),
+      ],
+   q(nanga dama dogon) => [
+      q(5160),
+      q(0),
+      ],
+   q(nankina) => [
+      q(4979),
+      q(0),
+      ],
+   q(nanti) => [
+      q(1828),
+      q(0),
+      ],
+   q(nanticoke) => [
+      q(4987),
+      q(0),
+      ],
+   q(nanubae) => [
+      q(0646),
+      q(0),
+      ],
+   q(napo lowland quechua) => [
+      q(5683),
+      q(0),
+      ],
+   q(napu) => [
+      q(5023),
+      q(0),
+      ],
+   q(nar phu) => [
+      q(5013),
+      q(0),
+      ],
+   q(nara) => [
+      q(5030),
+      q(0),
+      ],
+   q(narak) => [
+      q(4702),
+      q(0),
+      ],
+   q(narango) => [
+      q(5033),
+      q(0),
+      ],
+   q(narau) => [
+      q(5130),
+      q(0),
+      ],
+   q(nari nari) => [
+      q(5808),
+      q(0),
+      ],
+   q(narim) => [
+      q(3995),
+      q(0),
+      ],
+   q(naro) => [
+      q(4857),
+      q(0),
+      ],
+   q(narom) => [
+      q(5036),
+      q(0),
+      ],
+   q(narragansett) => [
+      q(7381),
+      q(0),
+      ],
+   q(narrinyeri) => [
+      q(4719),
+      q(0),
+      ],
+   q(narua) => [
+      q(5041),
+      q(0),
+      ],
+   q(narungga) => [
+      q(4985),
+      q(0),
+      ],
+   q(nasal) => [
+      q(5065),
+      q(0),
+      ],
+   q(nasarian) => [
+      q(5106),
+      q(0),
+      ],
+   q(naskapi) => [
+      q(5052),
+      q(0),
+      ],
+   q(natagaimas) => [
+      q(5075),
+      q(0),
+      ],
+   q(natanzi) => [
+      q(5080),
+      q(0),
+      ],
+   q(nataoran amis) => [
+      q(0710),
+      q(0),
+      ],
+   q(natchez) => [
+      q(4765),
+      q(0),
+      ],
+   q(nateni) => [
+      q(5071),
+      q(0),
+      ],
+   q(nathembo) => [
+      q(5067),
+      q(0),
+      ],
+   q(natioro) => [
+      q(5068),
+      q(0),
+      ],
+   q(natugu) => [
+      q(5076),
+      q(0),
+      ],
+   q(nauete) => [
+      q(5119),
+      q(0),
+      ],
+   q(naukan yupik) => [
+      q(7628),
+      q(0),
+      ],
+   q(nauna) => [
+      q(4757),
+      q(0),
+      ],
+   q(nauo) => [
+      q(5115),
+      q(0),
+      ],
+   q(nauru) => [
+      q(0301),
+      q(0),
+      ],
+   q(navaho) => [
+      q(0302),
+      q(0),
+      ],
+   q(navajo) => [
+      q(0302),
+      q(0),
+      ],
+   q(navut) => [
+      q(5063),
+      q(0),
+      ],
+   q(nawaru) => [
+      q(5116),
+      q(0),
+      ],
+   q(nawathinehena) => [
+      q(5109),
+      q(0),
+      ],
+   q(nawdm) => [
+      q(4968),
+      q(0),
+      ],
+   q(nawuri) => [
+      q(4717),
+      q(0),
+      ],
+   q(naxi) => [
+      q(5128),
+      q(0),
+      ],
+   q(nayi) => [
+      q(5012),
+      q(0),
+      ],
+   q(nayini) => [
+      q(5144),
+      q(0),
+      ],
+   q(ncane) => [
+      q(4760),
+      q(0),
+      ],
+   q(nchumbulu) => [
+      q(4938),
+      q(0),
+      ],
+   q(nda'nda') => [
+      q(4993),
+      q(0),
+      ],
+   q(ndai) => [
+      q(2526),
+      q(0),
+      ],
+   q(ndaka) => [
+      q(4775),
+      q(0),
+      ],
+   q(ndaktup) => [
+      q(4759),
+      q(0),
+      ],
+   q(ndali) => [
+      q(4772),
+      q(0),
+      ],
+   q(ndam) => [
+      q(4777),
+      q(0),
+      ],
+   q(ndamba) => [
+      q(4774),
+      q(0),
+      ],
+   q(ndasa) => [
+      q(4766),
+      q(0),
+      ],
+   q(ndau) => [
+      q(4768),
+      q(0),
+      ],
+   q(nde-gbite) => [
+      q(4792),
+      q(0),
+      ],
+   q(nde-nsele-nta) => [
+      q(4769),
+      q(0),
+      ],
+   q(ndebele, north) => [
+      q(0304),
+      q(0),
+      ],
+   q(ndebele, south) => [
+      q(0303),
+      q(0),
+      ],
+   q(ndemli) => [
+      q(4954),
+      q(0),
+      ],
+   q(ndendeule) => [
+      q(2098),
+      q(0),
+      ],
+   q(ndengereko) => [
+      q(4771),
+      q(0),
+      ],
+   q(nding) => [
+      q(2239),
+      q(0),
+      ],
+   q(ndo) => [
+      q(4779),
+      q(0),
+      ],
+   q(ndobo) => [
+      q(4785),
+      q(0),
+      ],
+   q(ndoe) => [
+      q(4722),
+      q(0),
+      ],
+   q(ndogo) => [
+      q(4788),
+      q(0),
+      ],
+   q(ndolo) => [
+      q(4776),
+      q(0),
+      ],
+   q(ndom) => [
+      q(5026),
+      q(0),
+      ],
+   q(ndombe) => [
+      q(4780),
+      q(0),
+      ],
+   q(ndonde hamba) => [
+      q(4889),
+      q(0),
+      ],
+   q(ndonga) => [
+      q(0305),
+      q(0),
+      ],
+   q(ndoola) => [
+      q(4781),
+      q(0),
+      ],
+   q(ndrag'ngith) => [
+      q(2016),
+      q(0),
+      ],
+   q(nduga) => [
+      q(4786),
+      q(0),
+      ],
+   q(ndumu) => [
+      q(4946),
+      q(0),
+      ],
+   q(ndunda) => [
+      q(5087),
+      q(0),
+      ],
+   q(ndunga) => [
+      q(4782),
+      q(0),
+      ],
+   q(ndut) => [
+      q(4784),
+      q(0),
+      ],
+   q(ndyuka-trio pidgin) => [
+      q(4899),
+      q(0),
+      ],
+   q(ndzwani comorian) => [
+      q(7149),
+      q(0),
+      ],
+   q(neapolitan) => [
+      q(0300),
+      q(0),
+      ],
+   q(nedebang) => [
+      q(4791),
+      q(0),
+      ],
+   q(nefamese) => [
+      q(4794),
+      q(0),
+      ],
+   q(negerhollands) => [
+      q(1976),
+      q(0),
+      ],
+   q(negeri sembilan malay) => [
+      q(7795),
+      q(0),
+      ],
+   q(negidal) => [
+      q(4795),
+      q(0),
+      ],
+   q(nehan) => [
+      q(5055),
+      q(0),
+      ],
+   q(nek) => [
+      q(4868),
+      q(0),
+      ],
+   q(nekgini) => [
+      q(4910),
+      q(0),
+      ],
+   q(neko) => [
+      q(4798),
+      q(0),
+      ],
+   q(neku) => [
+      q(4799),
+      q(0),
+      ],
+   q(nelemwa-nixumwak) => [
+      q(4793),
+      q(0),
+      ],
+   q(neme) => [
+      q(4809),
+      q(0),
+      ],
+   q(nemi) => [
+      q(4800),
+      q(0),
+      ],
+   q(nen) => [
+      q(5027),
+      q(0),
+      ],
+   q(nend) => [
+      q(0798),
+      q(0),
+      ],
+   q(nenets) => [
+      q(7659),
+      q(0),
+      ],
+   q(nenge) => [
+      q(2064),
+      q(0),
+      ],
+   q(nengone) => [
+      q(4801),
+      q(0),
+      ],
+   q(neo) => [
+      q(4807),
+      q(0),
+      ],
+   q(neo-hittite) => [
+      q(4797),
+      q(0),
+      ],
+   q(nepal bhasa) => [
+      q(0308),
+      q(0),
+      ],
+   q(nepalese sign language) => [
+      q(5056),
+      q(0),
+      ],
+   q(nepali) => [
+      q(0307),
+      q(0),
+      ],
+   q(nepali (individual language)) => [
+      q(5017),
+      q(0),
+      ],
+   q(nepali (macrolanguage)) => [
+      q(0307),
+      q(1),
+      ],
+   q(nepali kurux) => [
+      q(3707),
+      q(0),
+      ],
+   q(nete) => [
+      q(4806),
+      q(0),
+      ],
+   q(neve'ei) => [
+      q(7007),
+      q(0),
+      ],
+   q(neverver) => [
+      q(3870),
+      q(0),
+      ],
+   q(new caledonian javanese) => [
+      q(3034),
+      q(0),
+      ],
+   q(new zealand sign language) => [
+      q(5157),
+      q(0),
+      ],
+   q(newari) => [
+      q(0308),
+      q(0),
+      ],
+   q(neyo) => [
+      q(4810),
+      q(0),
+      ],
+   q(nez perce) => [
+      q(4811),
+      q(0),
+      ],
+   q(ngaanyatjarra) => [
+      q(5069),
+      q(0),
+      ],
+   q(ngabere) => [
+      q(2688),
+      q(0),
+      ],
+   q(ngad'a) => [
+      q(5122),
+      q(0),
+      ],
+   q(ngadjunmaya) => [
+      q(4900),
+      q(0),
+      ],
+   q(ngadjuri) => [
+      q(3129),
+      q(0),
+      ],
+   q(ngaing) => [
+      q(4974),
+      q(0),
+      ],
+   q(ngaju) => [
+      q(4872),
+      q(0),
+      ],
+   q(ngala) => [
+      q(5083),
+      q(0),
+      ],
+   q(ngalakan) => [
+      q(4869),
+      q(0),
+      ],
+   q(ngalkbun) => [
+      q(4826),
+      q(0),
+      ],
+   q(ngalum) => [
+      q(6316),
+      q(0),
+      ],
+   q(ngam) => [
+      q(4945),
+      q(0),
+      ],
+   q(ngamambo) => [
+      q(4740),
+      q(0),
+      ],
+   q(ngambay) => [
+      q(5873),
+      q(0),
+      ],
+   q(ngamini) => [
+      q(4964),
+      q(0),
+      ],
+   q(ngamo) => [
+      q(4727),
+      q(0),
+      ],
+   q(ngan'gityemerri) => [
+      q(4710),
+      q(0),
+      ],
+   q(nganasan) => [
+      q(4877),
+      q(0),
+      ],
+   q(ngandi) => [
+      q(4866),
+      q(0),
+      ],
+   q(ngando (central african republic)) => [
+      q(4820),
+      q(0),
+      ],
+   q(ngando (democratic republic of congo)) => [
+      q(5120),
+      q(0),
+      ],
+   q(ngandyera) => [
+      q(4973),
+      q(0),
+      ],
+   q(ngangam) => [
+      q(2556),
+      q(0),
+      ],
+   q(nganyaywana) => [
+      q(5151),
+      q(0),
+      ],
+   q(ngarinman) => [
+      q(4729),
+      q(0),
+      ],
+   q(ngarinyin) => [
+      q(6882),
+      q(0),
+      ],
+   q(ngarla) => [
+      q(4937),
+      q(0),
+      ],
+   q(ngarluma) => [
+      q(5035),
+      q(0),
+      ],
+   q(ngas) => [
+      q(0794),
+      q(0),
+      ],
+   q(ngasa) => [
+      q(5049),
+      q(0),
+      ],
+   q(ngatik men's creole) => [
+      q(4828),
+      q(0),
+      ],
+   q(ngawn chin) => [
+      q(1807),
+      q(0),
+      ],
+   q(ngawun) => [
+      q(5127),
+      q(0),
+      ],
+   q(ngayawung) => [
+      q(5112),
+      q(0),
+      ],
+   q(ngazidja comorian) => [
+      q(7746),
+      q(0),
+      ],
+   q(ngbaka) => [
+      q(4817),
+      q(0),
+      ],
+   q(ngbaka ma'bo) => [
+      q(4731),
+      q(0),
+      ],
+   q(ngbaka manza) => [
+      q(4822),
+      q(0),
+      ],
+   q(ngbee) => [
+      q(3064),
+      q(0),
+      ],
+   q(ngbinda) => [
+      q(4724),
+      q(0),
+      ],
+   q(ngbundu) => [
+      q(5100),
+      q(0),
+      ],
+   q(ngelima) => [
+      q(0661),
+      q(0),
+      ],
+   q(ngemba) => [
+      q(4821),
+      q(0),
+      ],
+   q(ngeq) => [
+      q(4835),
+      q(0),
+      ],
+   q(ngete) => [
+      q(4982),
+      q(0),
+      ],
+   q(nggem) => [
+      q(4735),
+      q(0),
+      ],
+   q(nggwahyi) => [
+      q(4839),
+      q(0),
+      ],
+   q(ngie) => [
+      q(4825),
+      q(0),
+      ],
+   q(ngiemboon) => [
+      q(4976),
+      q(0),
+      ],
+   q(ngile) => [
+      q(3092),
+      q(0),
+      ],
+   q(ngindo) => [
+      q(4984),
+      q(0),
+      ],
+   q(ngiti) => [
+      q(4885),
+      q(0),
+      ],
+   q(ngizim) => [
+      q(4824),
+      q(0),
+      ],
+   q(ngkalmpw kanum) => [
+      q(3190),
+      q(0),
+      ],
+   q(ngom) => [
+      q(5029),
+      q(0),
+      ],
+   q(ngomba) => [
+      q(3067),
+      q(0),
+      ],
+   q(ngombale) => [
+      q(4928),
+      q(0),
+      ],
+   q(ngombe (central african republic)) => [
+      q(4952),
+      q(0),
+      ],
+   q(ngombe (democratic republic of congo)) => [
+      q(4819),
+      q(0),
+      ],
+   q(ngong) => [
+      q(4991),
+      q(0),
+      ],
+   q(ngongo) => [
+      q(5005),
+      q(0),
+      ],
+   q(ngoni) => [
+      q(4830),
+      q(0),
+      ],
+   q(ngoreme) => [
+      q(4832),
+      q(0),
+      ],
+   q(ngoshie) => [
+      q(5050),
+      q(0),
+      ],
+   q(ngul) => [
+      q(4936),
+      q(0),
+      ],
+   q(ngulu) => [
+      q(4831),
+      q(0),
+      ],
+   q(nguluwan) => [
+      q(5102),
+      q(0),
+      ],
+   q(ngumbi) => [
+      q(5088),
+      q(0),
+      ],
+   q(ngundi) => [
+      q(4778),
+      q(0),
+      ],
+   q(ngundu) => [
+      q(5084),
+      q(0),
+      ],
+   q(ngungwel) => [
+      q(4841),
+      q(0),
+      ],
+   q(nguon) => [
+      q(5094),
+      q(0),
+      ],
+   q(ngura) => [
+      q(4742),
+      q(0),
+      ],
+   q(ngurimi) => [
+      q(4832),
+      q(0),
+      ],
+   q(ngurmbur) => [
+      q(5042),
+      q(0),
+      ],
+   q(ngwaba) => [
+      q(4838),
+      q(0),
+      ],
+   q(ngwe) => [
+      q(5111),
+      q(0),
+      ],
+   q(ngwo) => [
+      q(4829),
+      q(0),
+      ],
+   q(nhanda) => [
+      q(4842),
+      q(0),
+      ],
+   q(nhengatu) => [
+      q(7660),
+      q(0),
+      ],
+   q(nhuwala) => [
+      q(4847),
+      q(0),
+      ],
+   q(nias) => [
+      q(0309),
+      q(0),
+      ],
+   q(nicaragua creole english) => [
+      q(1625),
+      q(0),
+      ],
+   q(nicaraguan sign language) => [
+      q(4761),
+      q(0),
+      ],
+   q(nicarao) => [
+      q(5550),
+      q(0),
+      ],
+   q(niellim) => [
+      q(4867),
+      q(0),
+      ],
+   q(niger-kordofanian languages) => [
+      q(0310),
+      q(0),
+      ],
+   q(nigeria mambila) => [
+      q(4684),
+      q(0),
+      ],
+   q(nigerian fulfulde) => [
+      q(2384),
+      q(0),
+      ],
+   q(nigerian pidgin) => [
+      q(5368),
+      q(0),
+      ],
+   q(nigerian sign language) => [
+      q(5051),
+      q(0),
+      ],
+   q(nihali) => [
+      q(4935),
+      q(0),
+      ],
+   q(nii) => [
+      q(4871),
+      q(0),
+      ],
+   q(nijadali) => [
+      q(4703),
+      q(0),
+      ],
+   q(niksek) => [
+      q(2414),
+      q(0),
+      ],
+   q(nila) => [
+      q(4874),
+      q(0),
+      ],
+   q(nilamba) => [
+      q(4875),
+      q(0),
+      ],
+   q(nilo-saharan languages) => [
+      q(0406),
+      q(0),
+      ],
+   q(nimadi) => [
+      q(4997),
+      q(0),
+      ],
+   q(nimanbur) => [
+      q(4958),
+      q(0),
+      ],
+   q(nimbari) => [
+      q(4960),
+      q(0),
+      ],
+   q(nimboran) => [
+      q(4879),
+      q(0),
+      ],
+   q(nimi) => [
+      q(4880),
+      q(0),
+      ],
+   q(nimo) => [
+      q(4883),
+      q(0),
+      ],
+   q(nimoa) => [
+      q(4965),
+      q(0),
+      ],
+   q(ninam) => [
+      q(5983),
+      q(0),
+      ],
+   q(ninde) => [
+      q(4611),
+      q(0),
+      ],
+   q(nindi) => [
+      q(5123),
+      q(0),
+      ],
+   q(ningera) => [
+      q(4743),
+      q(0),
+      ],
+   q(ninggerum) => [
+      q(5129),
+      q(0),
+      ],
+   q(ningil) => [
+      q(4886),
+      q(0),
+      ],
+   q(ningye) => [
+      q(4986),
+      q(0),
+      ],
+   q(ninia yali) => [
+      q(4934),
+      q(0),
+      ],
+   q(ninzo) => [
+      q(4876),
+      q(0),
+      ],
+   q(nipsan) => [
+      q(5021),
+      q(0),
+      ],
+   q(nisa) => [
+      q(4898),
+      q(0),
+      ],
+   q(nisenan) => [
+      q(5066),
+      q(0),
+      ],
+   q(nisga'a) => [
+      q(4750),
+      q(0),
+      ],
+   q(nisi (china)) => [
+      q(7669),
+      q(0),
+      ],
+   q(niuafo'ou) => [
+      q(5092),
+      q(0),
+      ],
+   q(niuatoputapu) => [
+      q(4918),
+      q(0),
+      ],
+   q(niuean) => [
+      q(0311),
+      q(0),
+      ],
+   q(nivacle) => [
+      q(1646),
+      q(0),
+      ],
+   q(njalgulgule) => [
+      q(4893),
+      q(0),
+      ],
+   q(njebi) => [
+      q(5154),
+      q(0),
+      ],
+   q(njen) => [
+      q(4892),
+      q(0),
+      ],
+   q(njerep) => [
+      q(4897),
+      q(0),
+      ],
+   q(njyem) => [
+      q(4902),
+      q(0),
+      ],
+   q(nkami) => [
+      q(4919),
+      q(0),
+      ],
+   q(nkangala) => [
+      q(4916),
+      q(0),
+      ],
+   q(nkari) => [
+      q(4927),
+      q(0),
+      ],
+   q(nkem-nkum) => [
+      q(2982),
+      q(0),
+      ],
+   q(nkhumbi) => [
+      q(3327),
+      q(0),
+      ],
+   q(nkongho) => [
+      q(4906),
+      q(0),
+      ],
+   q(nkonya) => [
+      q(4917),
+      q(0),
+      ],
+   q(nkoroo) => [
+      q(4926),
+      q(0),
+      ],
+   q(nkoya) => [
+      q(4904),
+      q(0),
+      ],
+   q(nkukoli) => [
+      q(4733),
+      q(0),
+      ],
+   q(nkutu) => [
+      q(4925),
+      q(0),
+      ],
+   q(nnam) => [
+      q(4734),
+      q(0),
+      ],
+   q(no linguistic content) => [
+      q(0485),
+      q(0),
+      ],
+   q(nobiin) => [
+      q(2336),
+      q(0),
+      ],
+   q(nobonob) => [
+      q(2409),
+      q(0),
+      ],
+   q(nocaman) => [
+      q(5003),
+      q(0),
+      ],
+   q(nocte naga) => [
+      q(4888),
+      q(0),
+      ],
+   q(nogai) => [
+      q(0314),
+      q(0),
+      ],
+   q(noiri) => [
+      q(5000),
+      q(0),
+      ],
+   q(nokuku) => [
+      q(4914),
+      q(0),
+      ],
+   q(nomaande) => [
+      q(3850),
+      q(0),
+      ],
+   q(nomane) => [
+      q(4998),
+      q(0),
+      ],
+   q(nomatsiguenga) => [
+      q(5007),
+      q(0),
+      ],
+   q(nomu) => [
+      q(4999),
+      q(0),
+      ],
+   q(nong zhuang) => [
+      q(7758),
+      q(0),
+      ],
+   q(nonuya) => [
+      q(5001),
+      q(0),
+      ],
+   q(nooksack) => [
+      q(5002),
+      q(0),
+      ],
+   q(noon) => [
+      q(6110),
+      q(0),
+      ],
+   q(noone) => [
+      q(4859),
+      q(0),
+      ],
+   q(nopala chatino) => [
+      q(1928),
+      q(0),
+      ],
+   q(noric) => [
+      q(5031),
+      q(0),
+      ],
+   q(norn) => [
+      q(5037),
+      q(0),
+      ],
+   q(norra) => [
+      q(5039),
+      q(0),
+      ],
+   q(norse, old) => [
+      q(0315),
+      q(0),
+      ],
+   q(north alaskan inupiatun) => [
+      q(2286),
+      q(0),
+      ],
+   q(north ambrym) => [
+      q(4373),
+      q(0),
+      ],
+   q(north american indian languages) => [
+      q(0299),
+      q(0),
+      ],
+   q(north asmat) => [
+      q(4921),
+      q(0),
+      ],
+   q(north awyu) => [
+      q(7572),
+      q(0),
+      ],
+   q(north azerbaijani) => [
+      q(1017),
+      q(0),
+      ],
+   q(north babar) => [
+      q(1068),
+      q(0),
+      ],
+   q(north bolivian quechua) => [
+      q(5662),
+      q(0),
+      ],
+   q(north caucasian languages) => [
+      q(0495),
+      q(0),
+      ],
+   q(north central mixe) => [
+      q(4803),
+      q(0),
+      ],
+   q(north efate) => [
+      q(3946),
+      q(0),
+      ],
+   q(north fali) => [
+      q(2347),
+      q(0),
+      ],
+   q(north germanic languages) => [
+      q(0506),
+      q(0),
+      ],
+   q(north giziga) => [
+      q(2514),
+      q(0),
+      ],
+   q(north junin quechua) => [
+      q(5682),
+      q(0),
+      ],
+   q(north levantine arabic) => [
+      q(0837),
+      q(0),
+      ],
+   q(north marquesan) => [
+      q(4499),
+      q(0),
+      ],
+   q(north mesopotamian arabic) => [
+      q(1005),
+      q(0),
+      ],
+   q(north mofu) => [
+      q(4210),
+      q(0),
+      ],
+   q(north moluccan malay) => [
+      q(4100),
+      q(0),
+      ],
+   q(north muyu) => [
+      q(3606),
+      q(0),
+      ],
+   q(north ndebele) => [
+      q(0304),
+      q(0),
+      ],
+   q(north nuaulu) => [
+      q(4977),
+      q(0),
+      ],
+   q(north picene) => [
+      q(5038),
+      q(0),
+      ],
+   q(north slavey) => [
+      q(5909),
+      q(0),
+      ],
+   q(north tairora) => [
+      q(6354),
+      q(0),
+      ],
+   q(north tanna) => [
+      q(6590),
+      q(0),
+      ],
+   q(north wahgi) => [
+      q(7086),
+      q(0),
+      ],
+   q(north watut) => [
+      q(6880),
+      q(0),
+      ],
+   q(northeast kiwai) => [
+      q(3352),
+      q(0),
+      ],
+   q(northeast maidu) => [
+      q(4963),
+      q(0),
+      ],
+   q(northeast pashayi) => [
+      q(0629),
+      q(0),
+      ],
+   q(northeastern dinka) => [
+      q(2046),
+      q(0),
+      ],
+   q(northeastern pomo) => [
+      q(5384),
+      q(0),
+      ],
+   q(northeastern thai) => [
+      q(6722),
+      q(0),
+      ],
+   q(northern alta) => [
+      q(0865),
+      q(0),
+      ],
+   q(northern altai) => [
+      q(0929),
+      q(0),
+      ],
+   q(northern amami-oshima) => [
+      q(5853),
+      q(0),
+      ],
+   q(northern bai) => [
+      q(1139),
+      q(0),
+      ],
+   q(northern betsimisaraka malagasy) => [
+      q(1315),
+      q(0),
+      ],
+   q(northern binukidnon) => [
+      q(3735),
+      q(0),
+      ],
+   q(northern bobo madare) => [
+      q(1053),
+      q(0),
+      ],
+   q(northern bontok) => [
+      q(5733),
+      q(0),
+      ],
+   q(northern catanduanes bikol) => [
+      q(1897),
+      q(0),
+      ],
+   q(northern conchucos ancash quechua) => [
+      q(5699),
+      q(0),
+      ],
+   q(northern dagara) => [
+      q(2010),
+      q(0),
+      ],
+   q(northern dong) => [
+      q(2111),
+      q(0),
+      ],
+   q(northern east cree) => [
+      q(1852),
+      q(0),
+      ],
+   q(northern embera) => [
+      q(2253),
+      q(0),
+      ],
+   q(northern frisian) => [
+      q(0140),
+      q(0),
+      ],
+   q(northern ghale) => [
+      q(2496),
+      q(0),
+      ],
+   q(northern gondi) => [
+      q(2563),
+      q(0),
+      ],
+   q(northern grebo) => [
+      q(2424),
+      q(0),
+      ],
+   q(northern guiyang hmong) => [
+      q(2842),
+      q(0),
+      ],
+   q(northern guiyang miao) => [
+      q(2842),
+      q(0),
+      ],
+   q(northern haida) => [
+      q(2724),
+      q(0),
+      ],
+   q(northern hindko) => [
+      q(2792),
+      q(0),
+      ],
+   q(northern huishui hmong) => [
+      q(2770),
+      q(0),
+      ],
+   q(northern huishui miao) => [
+      q(2770),
+      q(0),
+      ],
+   q(northern kalapuya) => [
+      q(5040),
+      q(0),
+      ],
+   q(northern kankanay) => [
+      q(7377),
+      q(0),
+      ],
+   q(northern khmer) => [
+      q(3708),
+      q(0),
+      ],
+   q(northern kissi) => [
+      q(3544),
+      q(0),
+      ],
+   q(northern kurdish) => [
+      q(3448),
+      q(0),
+      ],
+   q(northern luri) => [
+      q(4018),
+      q(0),
+      ],
+   q(northern mashan hmong) => [
+      q(2775),
+      q(0),
+      ],
+   q(northern mashan miao) => [
+      q(2775),
+      q(0),
+      ],
+   q(northern muji) => [
+      q(7621),
+      q(0),
+      ],
+   q(northern nago) => [
+      q(7311),
+      q(0),
+      ],
+   q(northern ngbandi) => [
+      q(4818),
+      q(0),
+      ],
+   q(northern nisu) => [
+      q(7576),
+      q(0),
+      ],
+   q(northern nuni) => [
+      q(5101),
+      q(0),
+      ],
+   q(northern oaxaca nahuatl) => [
+      q(4863),
+      q(0),
+      ],
+   q(northern ohlone) => [
+      q(1881),
+      q(0),
+      ],
+   q(northern one) => [
+      q(5251),
+      q(0),
+      ],
+   q(northern paiute) => [
+      q(5329),
+      q(0),
+      ],
+   q(northern pame) => [
+      q(5497),
+      q(0),
+      ],
+   q(northern pashto) => [
+      q(5353),
+      q(0),
+      ],
+   q(northern pastaza quichua) => [
+      q(5688),
+      q(0),
+      ],
+   q(northern pomo) => [
+      q(5388),
+      q(0),
+      ],
+   q(northern puebla nahuatl) => [
+      q(4753),
+      q(0),
+      ],
+   q(northern pumi) => [
+      q(5490),
+      q(0),
+      ],
+   q(northern qiandong miao) => [
+      q(2727),
+      q(0),
+      ],
+   q(northern qiang) => [
+      q(1798),
+      q(0),
+      ],
+   q(northern rengma naga) => [
+      q(4980),
+      q(0),
+      ],
+   q(northern roglai) => [
+      q(5815),
+      q(0),
+      ],
+   q(northern sami) => [
+      q(0388),
+      q(0),
+      ],
+   q(northern sierra miwok) => [
+      q(5057),
+      q(0),
+      ],
+   q(northern sorsoganon) => [
+      q(1271),
+      q(0),
+      ],
+   q(northern sotho) => [
+      q(0318),
+      q(0),
+      ],
+   q(northern subanen) => [
+      q(6226),
+      q(0),
+      ],
+   q(northern tarahumara) => [
+      q(6470),
+      q(0),
+      ],
+   q(northern tepehuan) => [
+      q(5073),
+      q(0),
+      ],
+   q(northern thai) => [
+      q(4996),
+      q(0),
+      ],
+   q(northern tiwa) => [
+      q(6766),
+      q(0),
+      ],
+   q(northern tlaxiaco mixtec) => [
+      q(7450),
+      q(0),
+      ],
+   q(northern toussian) => [
+      q(6693),
+      q(0),
+      ],
+   q(northern tujia) => [
+      q(6510),
+      q(0),
+      ],
+   q(northern tutchone) => [
+      q(6716),
+      q(0),
+      ],
+   q(northern uzbek) => [
+      q(6933),
+      q(0),
+      ],
+   q(northern yukaghir) => [
+      q(7581),
+      q(0),
+      ],
+   q(northwest alaska inupiatun) => [
+      q(2287),
+      q(0),
+      ],
+   q(northwest gbaya) => [
+      q(2680),
+      q(0),
+      ],
+   q(northwest maidu) => [
+      q(4298),
+      q(0),
+      ],
+   q(northwest oaxaca mixtec) => [
+      q(4627),
+      q(0),
+      ],
+   q(northwest pashayi) => [
+      q(2532),
+      q(0),
+      ],
+   q(northwestern dinka) => [
+      q(2052),
+      q(0),
+      ],
+   q(northwestern fars) => [
+      q(2329),
+      q(0),
+      ],
+   q(northwestern kolami) => [
+      q(3262),
+      q(0),
+      ],
+   q(northwestern nisu) => [
+      q(5048),
+      q(0),
+      ],
+   q(northwestern ojibwa) => [
+      q(5194),
+      q(0),
+      ],
+   q(northwestern tamang) => [
+      q(6564),
+      q(0),
+      ],
+   q(norwegian) => [
+      q(0316),
+      q(0),
+      ],
+   q(norwegian bokmal) => [
+      q(0313),
+      q(0),
+      ],
+   q(norwegian nynorsk) => [
+      q(0312),
+      q(0),
+      ],
+   q(norwegian sign language) => [
+      q(5053),
+      q(0),
+      ],
+   q(not applicable) => [
+      q(0485),
+      q(0),
+      ],
+   q(notre) => [
+      q(1301),
+      q(0),
+      ],
+   q(notsi) => [
+      q(4749),
+      q(0),
+      ],
+   q(nottoway) => [
+      q(5077),
+      q(0),
+      ],
+   q(nottoway-meherrin) => [
+      q(5118),
+      q(0),
+      ],
+   q(novial) => [
+      q(5009),
+      q(0),
+      ],
+   q(noy) => [
+      q(5011),
+      q(0),
+      ],
+   q(nsari) => [
+      q(0895),
+      q(0),
+      ],
+   q(nsenga) => [
+      q(5047),
+      q(0),
+      ],
+   q(nshi) => [
+      q(5045),
+      q(0),
+      ],
+   q(nsongo) => [
+      q(5064),
+      q(0),
+      ],
+   q(ntcham) => [
+      q(1498),
+      q(0),
+      ],
+   q(ntomba) => [
+      q(5072),
+      q(0),
+      ],
+   q(nubaca) => [
+      q(1027),
+      q(0),
+      ],
+   q(nubi) => [
+      q(3200),
+      q(0),
+      ],
+   q(nubian languages) => [
+      q(0319),
+      q(0),
+      ],
+   q(nubri) => [
+      q(3602),
+      q(0),
+      ],
+   q(nuer) => [
+      q(5098),
+      q(0),
+      ],
+   q(nugunu (australia)) => [
+      q(4989),
+      q(0),
+      ],
+   q(nugunu (cameroon)) => [
+      q(7510),
+      q(0),
+      ],
+   q(nuk) => [
+      q(4995),
+      q(0),
+      ],
+   q(nukak maku) => [
+      q(4118),
+      q(0),
+      ],
+   q(nukna) => [
+      q(3425),
+      q(0),
+      ],
+   q(nukuini) => [
+      q(5082),
+      q(0),
+      ],
+   q(nukumanu) => [
+      q(5096),
+      q(0),
+      ],
+   q(nukuoro) => [
+      q(4920),
+      q(0),
+      ],
+   q(nukuria) => [
+      q(5097),
+      q(0),
+      ],
+   q(numana-nunku-gbantu-numbu) => [
+      q(4736),
+      q(0),
+      ],
+   q(numanggang) => [
+      q(5004),
+      q(0),
+      ],
+   q(numbami) => [
+      q(6013),
+      q(0),
+      ],
+   q(nume) => [
+      q(6458),
+      q(0),
+      ],
+   q(numee) => [
+      q(3222),
+      q(0),
+      ],
+   q(numidian) => [
+      q(5126),
+      q(0),
+      ],
+   q(nung (viet nam)) => [
+      q(5099),
+      q(0),
+      ],
+   q(nungali) => [
+      q(5086),
+      q(0),
+      ],
+   q(nunggubuyu) => [
+      q(5104),
+      q(0),
+      ],
+   q(nungu) => [
+      q(5765),
+      q(0),
+      ],
+   q(nuosu) => [
+      q(0189),
+      q(0),
+      ],
+   q(nupbikha) => [
+      q(5014),
+      q(0),
+      ],
+   q(nupe-nupe-tako) => [
+      q(5095),
+      q(0),
+      ],
+   q(nupode huitoto) => [
+      q(2854),
+      q(0),
+      ],
+   q(nusa laut) => [
+      q(5091),
+      q(0),
+      ],
+   q(nusu) => [
+      q(5085),
+      q(0),
+      ],
+   q(nuu-chah-nulth) => [
+      q(5090),
+      q(0),
+      ],
+   q(nuuchahnulth) => [
+      q(5090),
+      q(0),
+      ],
+   q(nyabwa) => [
+      q(5110),
+      q(0),
+      ],
+   q(nyaheun) => [
+      q(4808),
+      q(0),
+      ],
+   q(nyahkur) => [
+      q(1672),
+      q(0),
+      ],
+   q(nyakyusa-ngonde) => [
+      q(5152),
+      q(0),
+      ],
+   q(nyalayu) => [
+      q(7603),
+      q(0),
+      ],
+   q(nyali) => [
+      q(4933),
+      q(0),
+      ],
+   q(nyam) => [
+      q(4951),
+      q(0),
+      ],
+   q(nyamal) => [
+      q(4941),
+      q(0),
+      ],
+   q(nyambo) => [
+      q(5010),
+      q(0),
+      ],
+   q(nyamusa-molo) => [
+      q(5114),
+      q(0),
+      ],
+   q(nyamwanga) => [
+      q(4615),
+      q(0),
+      ],
+   q(nyamwezi) => [
+      q(0322),
+      q(0),
+      ],
+   q(nyaneka) => [
+      q(5141),
+      q(0),
+      ],
+   q(nyang'i) => [
+      q(5143),
+      q(0),
+      ],
+   q(nyanga) => [
+      q(5140),
+      q(0),
+      ],
+   q(nyanga-li) => [
+      q(5133),
+      q(0),
+      ],
+   q(nyangatom) => [
+      q(4978),
+      q(0),
+      ],
+   q(nyangbo) => [
+      q(5132),
+      q(0),
+      ],
+   q(nyangga) => [
+      q(4992),
+      q(0),
+      ],
+   q(nyangumarta) => [
+      q(4969),
+      q(0),
+      ],
+   q(nyanja) => [
+      q(0321),
+      q(0),
+      ],
+   q(nyankole) => [
+      q(0323),
+      q(0),
+      ],
+   q(nyankpa) => [
+      q(7547),
+      q(0),
+      ],
+   q(nyarafolo senoufo) => [
+      q(5953),
+      q(0),
+      ],
+   q(nyaturu) => [
+      q(5764),
+      q(0),
+      ],
+   q(nyaw) => [
+      q(5150),
+      q(0),
+      ],
+   q(nyawaygi) => [
+      q(5147),
+      q(0),
+      ],
+   q(nyemba) => [
+      q(4721),
+      q(0),
+      ],
+   q(nyengo) => [
+      q(5135),
+      q(0),
+      ],
+   q(nyenkha) => [
+      q(4796),
+      q(0),
+      ],
+   q(nyeu) => [
+      q(5142),
+      q(0),
+      ],
+   q(nyigina) => [
+      q(5138),
+      q(0),
+      ],
+   q(nyiha (malawi)) => [
+      q(5145),
+      q(0),
+      ],
+   q(nyiha (tanzania)) => [
+      q(4870),
+      q(0),
+      ],
+   q(nyika (malawi and zambia)) => [
+      q(4924),
+      q(0),
+      ],
+   q(nyika (tanzania)) => [
+      q(4922),
+      q(0),
+      ],
+   q(nyindrou) => [
+      q(3892),
+      q(0),
+      ],
+   q(nyindu) => [
+      q(5137),
+      q(0),
+      ],
+   q(nyishi) => [
+      q(4903),
+      q(0),
+      ],
+   q(nynorsk, norwegian) => [
+      q(0312),
+      q(0),
+      ],
+   q(nyokon) => [
+      q(5108),
+      q(0),
+      ],
+   q(nyole) => [
+      q(5089),
+      q(0),
+      ],
+   q(nyong) => [
+      q(4569),
+      q(0),
+      ],
+   q(nyore) => [
+      q(5134),
+      q(0),
+      ],
+   q(nyoro) => [
+      q(0324),
+      q(0),
+      ],
+   q(nyulnyul) => [
+      q(5149),
+      q(0),
+      ],
+   q(nyunga) => [
+      q(5146),
+      q(0),
+      ],
+   q(nyungwe) => [
+      q(5148),
+      q(0),
+      ],
+   q(nzakambay) => [
+      q(5159),
+      q(0),
+      ],
+   q(nzakara) => [
+      q(5155),
+      q(0),
+      ],
+   q(nzanyi) => [
+      q(4887),
+      q(0),
+      ],
+   q(nzima) => [
+      q(0325),
+      q(0),
+      ],
+   q(o'chi'chi') => [
+      q(7383),
+      q(0),
+      ],
+   q(o'du) => [
+      q(6800),
+      q(0),
+      ],
+   q(obanliku) => [
+      q(1639),
+      q(0),
+      ],
+   q(obispeno) => [
+      q(5165),
+      q(0),
+      ],
+   q(oblo) => [
+      q(5167),
+      q(0),
+      ],
+   q(obo manobo) => [
+      q(5169),
+      q(0),
+      ],
+   q(obokuitai) => [
+      q(0653),
+      q(0),
+      ],
+   q(obolo) => [
+      q(0804),
+      q(0),
+      ],
+   q(obulom) => [
+      q(5172),
+      q(0),
+      ],
+   q(ocaina) => [
+      q(5173),
+      q(0),
+      ],
+   q(occidental) => [
+      q(0192),
+      q(0),
+      ],
+   q(occitan (post 1500)) => [
+      q(0326),
+      q(0),
+      ],
+   q(ocotepec mixtec) => [
+      q(4278),
+      q(0),
+      ],
+   q(ocotlan zapotec) => [
+      q(7718),
+      q(0),
+      ],
+   q(od) => [
+      q(5178),
+      q(0),
+      ],
+   q(odiai) => [
+      q(1192),
+      q(0),
+      ],
+   q(odoodee) => [
+      q(3382),
+      q(0),
+      ],
+   q(odual) => [
+      q(5180),
+      q(0),
+      ],
+   q(odut) => [
+      q(5177),
+      q(0),
+      ],
+   q(ofaye) => [
+      q(5267),
+      q(0),
+      ],
+   q(official aramaic (700-300 bce)) => [
+      q(0022),
+      q(0),
+      ],
+   q(ofo) => [
+      q(5181),
+      q(0),
+      ],
+   q(ogbah) => [
+      q(5185),
+      q(0),
+      ],
+   q(ogbia) => [
+      q(5184),
+      q(0),
+      ],
+   q(ogbogolo) => [
+      q(5187),
+      q(0),
+      ],
+   q(ogbronuagum) => [
+      q(5189),
+      q(0),
+      ],
+   q(ogea) => [
+      q(2277),
+      q(0),
+      ],
+   q(oirat) => [
+      q(0470),
+      q(0),
+      ],
+   q(oirata) => [
+      q(5192),
+      q(0),
+      ],
+   q(ojibwa) => [
+      q(0327),
+      q(0),
+      ],
+   q(ojitlan chinantec) => [
+      q(1724),
+      q(0),
+      ],
+   q(okanagan) => [
+      q(5201),
+      q(0),
+      ],
+   q(oki-no-erabu) => [
+      q(5212),
+      q(0),
+      ],
+   q(okiek) => [
+      q(5207),
+      q(0),
+      ],
+   q(oko-eni-osayen) => [
+      q(5215),
+      q(0),
+      ],
+   q(oko-juwoi) => [
+      q(5208),
+      q(0),
+      ],
+   q(okobo) => [
+      q(5202),
+      q(0),
+      ],
+   q(okodia) => [
+      q(5203),
+      q(0),
+      ],
+   q(okolod) => [
+      q(3547),
+      q(0),
+      ],
+   q(okpamheri) => [
+      q(5262),
+      q(0),
+      ],
+   q(okpe (northwestern edo)) => [
+      q(5218),
+      q(0),
+      ],
+   q(okpe (southwestern edo)) => [
+      q(5204),
+      q(0),
+      ],
+   q(oksapmin) => [
+      q(5264),
+      q(0),
+      ],
+   q(oku) => [
+      q(5216),
+      q(0),
+      ],
+   q(old aramaic (up to 700 bce)) => [
+      q(5163),
+      q(0),
+      ],
+   q(old avar) => [
+      q(5164),
+      q(0),
+      ],
+   q(old breton) => [
+      q(5171),
+      q(0),
+      ],
+   q(old bulgarian) => [
+      q(0086),
+      q(0),
+      ],
+   q(old burmese) => [
+      q(5170),
+      q(0),
+      ],
+   q(old chinese) => [
+      q(5174),
+      q(0),
+      ],
+   q(old church slavonic) => [
+      q(0086),
+      q(0),
+      ],
+   q(old cornish) => [
+      q(5175),
+      q(0),
+      ],
+   q(old dutch) => [
+      q(5179),
+      q(0),
+      ],
+   q(old english (ca. 450-1100)) => [
+      q(0018),
+      q(1),
+      ],
+   q(old french (842-ca. 1400)) => [
+      q(0139),
+      q(1),
+      ],
+   q(old frisian) => [
+      q(5182),
+      q(0),
+      ],
+   q(old georgian) => [
+      q(5186),
+      q(0),
+      ],
+   q(old high german (ca. 750-1050)) => [
+      q(0158),
+      q(1),
+      ],
+   q(old hittite) => [
+      q(5190),
+      q(0),
+      ],
+   q(old hungarian) => [
+      q(5191),
+      q(0),
+      ],
+   q(old irish (to 900)) => [
+      q(0377),
+      q(1),
+      ],
+   q(old japanese) => [
+      q(5197),
+      q(0),
+      ],
+   q(old kentish sign language) => [
+      q(5210),
+      q(0),
+      ],
+   q(old korean (3rd-9th cent.)) => [
+      q(5213),
+      q(0),
+      ],
+   q(old manipuri) => [
+      q(5235),
+      q(0),
+      ],
+   q(old marathi) => [
+      q(5236),
+      q(0),
+      ],
+   q(old mon) => [
+      q(5240),
+      q(0),
+      ],
+   q(old newari) => [
+      q(0320),
+      q(0),
+      ],
+   q(old norse) => [
+      q(0315),
+      q(1),
+      ],
+   q(old nubian) => [
+      q(5255),
+      q(0),
+      ],
+   q(old occitan (to 1500)) => [
+      q(0350),
+      q(2),
+      ],
+   q(old ossetic) => [
+      q(5261),
+      q(0),
+      ],
+   q(old persian (ca. 600-400 b.c.)) => [
+      q(0341),
+      q(1),
+      ],
+   q(old provencal (to 1500)) => [
+      q(0350),
+      q(1),
+      ],
+   q(old russian) => [
+      q(5279),
+      q(0),
+      ],
+   q(old saxon) => [
+      q(5290),
+      q(0),
+      ],
+   q(old slavonic) => [
+      q(0086),
+      q(0),
+      ],
+   q(old spanish) => [
+      q(5287),
+      q(0),
+      ],
+   q(old tamil) => [
+      q(5306),
+      q(0),
+      ],
+   q(old tibetan) => [
+      q(5291),
+      q(0),
+      ],
+   q(old turkish) => [
+      q(5295),
+      q(0),
+      ],
+   q(old uighur) => [
+      q(5311),
+      q(0),
+      ],
+   q(old welsh) => [
+      q(5315),
+      q(0),
+      ],
+   q(olekha) => [
+      q(5221),
+      q(0),
+      ],
+   q(olo) => [
+      q(5244),
+      q(0),
+      ],
+   q(oloma) => [
+      q(5222),
+      q(0),
+      ],
+   q(olrat) => [
+      q(5224),
+      q(0),
+      ],
+   q(olu'bo) => [
+      q(4058),
+      q(0),
+      ],
+   q(olukhayo) => [
+      q(3926),
+      q(0),
+      ],
+   q(olulumo-ikom) => [
+      q(2924),
+      q(0),
+      ],
+   q(oluluyia) => [
+      q(4067),
+      q(0),
+      ],
+   q(olumarachi) => [
+      q(4021),
+      q(0),
+      ],
+   q(olumarama) => [
+      q(4024),
+      q(0),
+      ],
+   q(olunyole) => [
+      q(5134),
+      q(0),
+      ],
+   q(olusamia) => [
+      q(4038),
+      q(0),
+      ],
+   q(olushisa) => [
+      q(3928),
+      q(0),
+      ],
+   q(oluta popoluca) => [
+      q(5472),
+      q(0),
+      ],
+   q(olutsotso) => [
+      q(4049),
+      q(0),
+      ],
+   q(oluwanga) => [
+      q(4075),
+      q(0),
+      ],
+   q(omagua) => [
+      q(5229),
+      q(0),
+      ],
+   q(omaha-ponca) => [
+      q(5225),
+      q(0),
+      ],
+   q(omani arabic) => [
+      q(0602),
+      q(0),
+      ],
+   q(ombamba) => [
+      q(4113),
+      q(0),
+      ],
+   q(ombo) => [
+      q(5232),
+      q(0),
+      ],
+   q(omejes) => [
+      q(5228),
+      q(0),
+      ],
+   q(ometepec nahuatl) => [
+      q(4858),
+      q(0),
+      ],
+   q(omi) => [
+      q(5230),
+      q(0),
+      ],
+   q(omie) => [
+      q(0828),
+      q(0),
+      ],
+   q(omok) => [
+      q(5231),
+      q(0),
+      ],
+   q(omotic languages) => [
+      q(0518),
+      q(0),
+      ],
+   q(omotik) => [
+      q(5237),
+      q(0),
+      ],
+   q(omurano) => [
+      q(5238),
+      q(0),
+      ],
+   q(ona) => [
+      q(5241),
+      q(0),
+      ],
+   q(oneida) => [
+      q(5243),
+      q(0),
+      ],
+   q(ong) => [
+      q(5258),
+      q(0),
+      ],
+   q(onge) => [
+      q(5259),
+      q(0),
+      ],
+   q(onin) => [
+      q(5245),
+      q(0),
+      ],
+   q(onin based pidgin) => [
+      q(5256),
+      q(0),
+      ],
+   q(oniyan) => [
+      q(1450),
+      q(0),
+      ],
+   q(onjob) => [
+      q(5246),
+      q(0),
+      ],
+   q(ono) => [
+      q(5252),
+      q(0),
+      ],
+   q(onobasulu) => [
+      q(5248),
+      q(0),
+      ],
+   q(onondaga) => [
+      q(5249),
+      q(0),
+      ],
+   q(ontenu) => [
+      q(5253),
+      q(0),
+      ],
+   q(ontong java) => [
+      q(5199),
+      q(0),
+      ],
+   q(oorlams) => [
+      q(5260),
+      q(0),
+      ],
+   q(opao) => [
+      q(5265),
+      q(0),
+      ],
+   q(opata) => [
+      q(5266),
+      q(0),
+      ],
+   q(opuuo) => [
+      q(3873),
+      q(0),
+      ],
+   q(orang kanaq) => [
+      q(5273),
+      q(0),
+      ],
+   q(orang seletar) => [
+      q(5276),
+      q(0),
+      ],
+   q(oraon sadri) => [
+      q(5928),
+      q(0),
+      ],
+   q(orejon) => [
+      q(5270),
+      q(0),
+      ],
+   q(oring) => [
+      q(5271),
+      q(0),
+      ],
+   q(oriya) => [
+      q(0328),
+      q(0),
+      ],
+   q(oriya (individual language)) => [
+      q(5282),
+      q(0),
+      ],
+   q(oriya (macrolanguage)) => [
+      q(0328),
+      q(1),
+      ],
+   q(orizaba nahuatl) => [
+      q(4939),
+      q(0),
+      ],
+   q(orma) => [
+      q(5269),
+      q(0),
+      ],
+   q(ormu) => [
+      q(5283),
+      q(0),
+      ],
+   q(ormuri) => [
+      q(5278),
+      q(0),
+      ],
+   q(oro) => [
+      q(5281),
+      q(0),
+      ],
+   q(oro win) => [
+      q(5280),
+      q(0),
+      ],
+   q(oroch) => [
+      q(5162),
+      q(0),
+      ],
+   q(oroha) => [
+      q(5268),
+      q(0),
+      ],
+   q(orok) => [
+      q(5161),
+      q(0),
+      ],
+   q(orokaiva) => [
+      q(5217),
+      q(0),
+      ],
+   q(oroko) => [
+      q(1110),
+      q(0),
+      ],
+   q(orokolo) => [
+      q(5274),
+      q(0),
+      ],
+   q(oromo) => [
+      q(0329),
+      q(0),
+      ],
+   q(oroqen) => [
+      q(5272),
+      q(0),
+      ],
+   q(orowe) => [
+      q(1383),
+      q(0),
+      ],
+   q(oruma) => [
+      q(5275),
+      q(0),
+      ],
+   q(orya) => [
+      q(6911),
+      q(0),
+      ],
+   q(osage) => [
+      q(0330),
+      q(0),
+      ],
+   q(osatu) => [
+      q(5288),
+      q(0),
+      ],
+   q(oscan) => [
+      q(5284),
+      q(0),
+      ],
+   q(osing) => [
+      q(5285),
+      q(0),
+      ],
+   q(ososo) => [
+      q(5286),
+      q(0),
+      ],
+   q(ossetian) => [
+      q(0331),
+      q(0),
+      ],
+   q(ossetic) => [
+      q(0331),
+      q(0),
+      ],
+   q(ot danum) => [
+      q(5292),
+      q(0),
+      ],
+   q(otank) => [
+      q(6919),
+      q(0),
+      ],
+   q(oti) => [
+      q(5294),
+      q(0),
+      ],
+   q(oto-manguean languages) => [
+      q(0517),
+      q(0),
+      ],
+   q(otomian languages) => [
+      q(0333),
+      q(0),
+      ],
+   q(otoro) => [
+      q(5300),
+      q(0),
+      ],
+   q(ottawa) => [
+      q(5304),
+      q(0),
+      ],
+   q(ottoman turkish (1500-1928)) => [
+      q(0332),
+      q(1),
+      ],
+   q(otuho) => [
+      q(4006),
+      q(0),
+      ],
+   q(otuke) => [
+      q(5303),
+      q(0),
+      ],
+   q(ouma) => [
+      q(5312),
+      q(0),
+      ],
+   q(oune) => [
+      q(5310),
+      q(0),
+      ],
+   q(owa) => [
+      q(6237),
+      q(0),
+      ],
+   q(owenia) => [
+      q(7196),
+      q(0),
+      ],
+   q(owiniga) => [
+      q(5314),
+      q(0),
+      ],
+   q(oy) => [
+      q(5316),
+      q(0),
+      ],
+   q(oya'oya) => [
+      q(5319),
+      q(0),
+      ],
+   q(oyda) => [
+      q(5317),
+      q(0),
+      ],
+   q(ozolotepec zapotec) => [
+      q(7729),
+      q(0),
+      ],
+   q(ozumacin chinantec) => [
+      q(1730),
+      q(0),
+      ],
+   q(pa di) => [
+      q(5375),
+      q(0),
+      ],
+   q(pa'a) => [
+      q(5560),
+      q(0),
+      ],
+   q(pa'o) => [
+      q(1288),
+      q(0),
+      ],
+   q(pa'o karen) => [
+      q(1288),
+      q(0),
+      ],
+   q(pa-hng) => [
+      q(5410),
+      q(0),
+      ],
+   q(paafang) => [
+      q(5399),
+      q(0),
+      ],
+   q(paakantyi) => [
+      q(2136),
+      q(0),
+      ],
+   q(paama) => [
+      q(5483),
+      q(0),
+      ],
+   q(paasaal) => [
+      q(6010),
+      q(0),
+      ],
+   q(pacahuara) => [
+      q(5370),
+      q(0),
+      ],
+   q(pacaraos quechua) => [
+      q(5684),
+      q(0),
+      ],
+   q(pacific gulf yupik) => [
+      q(2254),
+      q(0),
+      ],
+   q(pacoh) => [
+      q(5322),
+      q(0),
+      ],
+   q(padoe) => [
+      q(5377),
+      q(0),
+      ],
+   q(paekche) => [
+      q(5451),
+      q(0),
+      ],
+   q(paelignian) => [
+      q(5407),
+      q(0),
+      ],
+   q(paez) => [
+      q(5339),
+      q(0),
+      ],
+   q(pagi) => [
+      q(5404),
+      q(0),
+      ],
+   q(pagibete) => [
+      q(5324),
+      q(0),
+      ],
+   q(pagu) => [
+      q(5409),
+      q(0),
+      ],
+   q(pahanan agta) => [
+      q(0840),
+      q(0),
+      ],
+   q(pahari-potwari) => [
+      q(5419),
+      q(0),
+      ],
+   q(pahi) => [
+      q(3876),
+      q(0),
+      ],
+   q(pahlavani) => [
+      q(5422),
+      q(0),
+      ],
+   q(pahlavi) => [
+      q(0336),
+      q(0),
+      ],
+   q(pai tavytera) => [
+      q(5603),
+      q(0),
+      ],
+   q(paici) => [
+      q(5569),
+      q(0),
+      ],
+   q(paipai) => [
+      q(5548),
+      q(0),
+      ],
+   q(paite chin) => [
+      q(5366),
+      q(0),
+      ],
+   q(paiwan) => [
+      q(5640),
+      q(0),
+      ],
+   q(pak-tong) => [
+      q(5452),
+      q(0),
+      ],
+   q(pakaasnovos) => [
+      q(5334),
+      q(0),
+      ],
+   q(pakanha) => [
+      q(5454),
+      q(0),
+      ],
+   q(pakistan sign language) => [
+      q(5458),
+      q(0),
+      ],
+   q(paku) => [
+      q(5460),
+      q(0),
+      ],
+   q(paku karen) => [
+      q(3089),
+      q(0),
+      ],
+   q(pal) => [
+      q(0581),
+      q(0),
+      ],
+   q(palaic) => [
+      q(5474),
+      q(0),
+      ],
+   q(palaka senoufo) => [
+      q(5475),
+      q(0),
+      ],
+   q(palantla chinantec) => [
+      q(1831),
+      q(0),
+      ],
+   q(palauan) => [
+      q(0340),
+      q(0),
+      ],
+   q(palenquero) => [
+      q(5471),
+      q(0),
+      ],
+   q(pali) => [
+      q(0345),
+      q(0),
+      ],
+   q(palikur) => [
+      q(5478),
+      q(0),
+      ],
+   q(paliyan) => [
+      q(5361),
+      q(0),
+      ],
+   q(pallanganmiddang) => [
+      q(5486),
+      q(0),
+      ],
+   q(palor) => [
+      q(2324),
+      q(0),
+      ],
+   q(palpa) => [
+      q(5473),
+      q(0),
+      ],
+   q(palu'e) => [
+      q(5465),
+      q(0),
+      ],
+   q(paluan) => [
+      q(5482),
+      q(0),
+      ],
+   q(palula) => [
+      q(5415),
+      q(0),
+      ],
+   q(palumata) => [
+      q(5485),
+      q(0),
+      ],
+   q(palya bareli) => [
+      q(1396),
+      q(0),
+      ],
+   q(pam) => [
+      q(5495),
+      q(0),
+      ],
+   q(pambia) => [
+      q(5484),
+      q(0),
+      ],
+   q(pamlico) => [
+      q(5492),
+      q(0),
+      ],
+   q(pamona) => [
+      q(5488),
+      q(0),
+      ],
+   q(pamosu) => [
+      q(2743),
+      q(0),
+      ],
+   q(pampanga) => [
+      q(0337),
+      q(0),
+      ],
+   q(pamplona atta) => [
+      q(0927),
+      q(0),
+      ],
+   q(pana (burkina faso)) => [
+      q(5518),
+      q(0),
+      ],
+   q(pana (central african republic)) => [
+      q(5527),
+      q(0),
+      ],
+   q(panamanian sign language) => [
+      q(4040),
+      q(0),
+      ],
+   q(panamint) => [
+      q(5331),
+      q(0),
+      ],
+   q(panang) => [
+      q(5371),
+      q(0),
+      ],
+   q(panao huanuco quechua) => [
+      q(5697),
+      q(0),
+      ],
+   q(panara) => [
+      q(3555),
+      q(0),
+      ],
+   q(panasuan) => [
+      q(5593),
+      q(0),
+      ],
+   q(panawa) => [
+      q(5637),
+      q(0),
+      ],
+   q(pancana) => [
+      q(5517),
+      q(0),
+      ],
+   q(panchpargania) => [
+      q(6397),
+      q(0),
+      ],
+   q(pande) => [
+      q(1262),
+      q(0),
+      ],
+   q(pangasinan) => [
+      q(0335),
+      q(0),
+      ],
+   q(pangseng) => [
+      q(5408),
+      q(0),
+      ],
+   q(pangutaran sama) => [
+      q(6076),
+      q(0),
+      ],
+   q(pangwa) => [
+      q(5350),
+      q(0),
+      ],
+   q(pangwali) => [
+      q(5403),
+      q(0),
+      ],
+   q(panim) => [
+      q(5519),
+      q(0),
+      ],
+   q(paniya) => [
+      q(5362),
+      q(0),
+      ],
+   q(panjabi) => [
+      q(0338),
+      q(0),
+      ],
+   q(pankarare) => [
+      q(5336),
+      q(0),
+      ],
+   q(pankararu) => [
+      q(5338),
+      q(0),
+      ],
+   q(pankhu) => [
+      q(5453),
+      q(0),
+      ],
+   q(pannei) => [
+      q(5508),
+      q(0),
+      ],
+   q(pano) => [
+      q(4483),
+      q(0),
+      ],
+   q(panoan katukina) => [
+      q(3475),
+      q(0),
+      ],
+   q(panobo) => [
+      q(5516),
+      q(0),
+      ],
+   q(panytyima) => [
+      q(5524),
+      q(0),
+      ],
+   q(pao) => [
+      q(5546),
+      q(0),
+      ],
+   q(papantla totonac) => [
+      q(6614),
+      q(0),
+      ],
+   q(papapana) => [
+      q(5552),
+      q(0),
+      ],
+   q(papar) => [
+      q(2129),
+      q(0),
+      ],
+   q(papasena) => [
+      q(5332),
+      q(0),
+      ],
+   q(papel) => [
+      q(5348),
+      q(0),
+      ],
+   q(papi) => [
+      q(5547),
+      q(0),
+      ],
+   q(papiamento) => [
+      q(0339),
+      q(0),
+      ],
+   q(papitalai) => [
+      q(5333),
+      q(0),
+      ],
+   q(papora) => [
+      q(5559),
+      q(0),
+      ],
+   q(papuan languages) => [
+      q(0334),
+      q(0),
+      ],
+   q(papuan malay) => [
+      q(5504),
+      q(0),
+      ],
+   q(papuma) => [
+      q(5551),
+      q(0),
+      ],
+   q(para arara) => [
+      q(0552),
+      q(0),
+      ],
+   q(para gaviao) => [
+      q(2660),
+      q(0),
+      ],
+   q(para naga) => [
+      q(5652),
+      q(0),
+      ],
+   q(parachi) => [
+      q(5563),
+      q(0),
+      ],
+   q(paraguayan guarani) => [
+      q(2633),
+      q(0),
+      ],
+   q(paraguayan sign language) => [
+      q(5648),
+      q(0),
+      ],
+   q(parakana) => [
+      q(5328),
+      q(0),
+      ],
+   q(paranan) => [
+      q(5566),
+      q(0),
+      ],
+   q(paranawat) => [
+      q(5325),
+      q(0),
+      ],
+   q(paraujano) => [
+      q(5343),
+      q(0),
+      ],
+   q(parauk) => [
+      q(5570),
+      q(0),
+      ],
+   q(parawen) => [
+      q(5580),
+      q(0),
+      ],
+   q(pardhan) => [
+      q(5363),
+      q(0),
+      ],
+   q(pardhi) => [
+      q(5367),
+      q(0),
+      ],
+   q(pare) => [
+      q(5558),
+      q(0),
+      ],
+   q(parecis) => [
+      q(5321),
+      q(0),
+      ],
+   q(parenga) => [
+      q(5365),
+      q(0),
+      ],
+   q(pari) => [
+      q(3927),
+      q(0),
+      ],
+   q(parkari koli) => [
+      q(3668),
+      q(0),
+      ],
+   q(parkwa) => [
+      q(5345),
+      q(0),
+      ],
+   q(parsi) => [
+      q(5574),
+      q(0),
+      ],
+   q(parsi-dari) => [
+      q(5564),
+      q(0),
+      ],
+   q(parthian) => [
+      q(7405),
+      q(0),
+      ],
+   q(parya) => [
+      q(5330),
+      q(0),
+      ],
+   q(pashto) => [
+      q(0351),
+      q(0),
+      ],
+   q(pasi) => [
+      q(5596),
+      q(0),
+      ],
+   q(pass valley yali) => [
+      q(7496),
+      q(0),
+      ],
+   q(patamona) => [
+      q(5340),
+      q(0),
+      ],
+   q(patani) => [
+      q(5606),
+      q(0),
+      ],
+   q(pataxo ha-ha-hae) => [
+      q(5604),
+      q(0),
+      ],
+   q(patep) => [
+      q(5608),
+      q(0),
+      ],
+   q(pathiya) => [
+      q(5614),
+      q(0),
+      ],
+   q(patpatar) => [
+      q(2477),
+      q(0),
+      ],
+   q(pattani) => [
+      q(3776),
+      q(0),
+      ],
+   q(pattani malay) => [
+      q(4200),
+      q(0),
+      ],
+   q(paulohi) => [
+      q(5467),
+      q(0),
+      ],
+   q(paumari) => [
+      q(5323),
+      q(0),
+      ],
+   q(paunaka) => [
+      q(5513),
+      q(0),
+      ],
+   q(pauri bareli) => [
+      q(1138),
+      q(0),
+      ],
+   q(pauserna) => [
+      q(5592),
+      q(0),
+      ],
+   q(pawaia) => [
+      q(5636),
+      q(0),
+      ],
+   q(pawnee) => [
+      q(5335),
+      q(0),
+      ],
+   q(paynamar) => [
+      q(5498),
+      q(0),
+      ],
+   q(pe) => [
+      q(5327),
+      q(0),
+      ],
+   q(pear) => [
+      q(5357),
+      q(0),
+      ],
+   q(pech) => [
+      q(5337),
+      q(0),
+      ],
+   q(pecheneg) => [
+      q(7394),
+      q(0),
+      ],
+   q(pedi) => [
+      q(0318),
+      q(0),
+      ],
+   q(peere) => [
+      q(5400),
+      q(0),
+      ],
+   q(pei) => [
+      q(5555),
+      q(0),
+      ],
+   q(pekal) => [
+      q(5390),
+      q(0),
+      ],
+   q(pela) => [
+      q(1570),
+      q(0),
+      ],
+   q(pele-ata) => [
+      q(0910),
+      q(0),
+      ],
+   q(pelende) => [
+      q(5554),
+      q(0),
+      ],
+   q(pemon) => [
+      q(0818),
+      q(0),
+      ],
+   q(pemono) => [
+      q(5395),
+      q(0),
+      ],
+   q(penang sign language) => [
+      q(5588),
+      q(0),
+      ],
+   q(penchal) => [
+      q(5389),
+      q(0),
+      ],
+   q(pendau) => [
+      q(6878),
+      q(0),
+      ],
+   q(pengo) => [
+      q(5385),
+      q(0),
+      ],
+   q(pennsylvania german) => [
+      q(5374),
+      q(0),
+      ],
+   q(penoles mixtec) => [
+      q(4285),
+      q(0),
+      ],
+   q(penrhyn) => [
+      q(5511),
+      q(0),
+      ],
+   q(pentlatch) => [
+      q(5613),
+      q(0),
+      ],
+   q(perai) => [
+      q(7074),
+      q(0),
+      ],
+   q(peranakan indonesian) => [
+      q(5380),
+      q(0),
+      ],
+   q(peripheral mongolian) => [
+      q(4583),
+      q(0),
+      ],
+   q(pero) => [
+      q(5438),
+      q(0),
+      ],
+   q(persian) => [
+      q(0342),
+      q(0),
+      ],
+   q(persian sign language) => [
+      q(5585),
+      q(0),
+      ],
+   q(persian, old (ca.600-400 b.c.)) => [
+      q(0341),
+      q(0),
+      ],
+   q(peruvian sign language) => [
+      q(5571),
+      q(0),
+      ],
+   q(petapa zapotec) => [
+      q(7829),
+      q(0),
+      ],
+   q(petats) => [
+      q(5396),
+      q(0),
+      ],
+   q(petjo) => [
+      q(5397),
+      q(0),
+      ],
+   q(peve) => [
+      q(3955),
+      q(0),
+      ],
+   q(pfaelzisch) => [
+      q(5401),
+      q(0),
+      ],
+   q(phai) => [
+      q(5578),
+      q(0),
+      ],
+   q(phake) => [
+      q(5414),
+      q(0),
+      ],
+   q(phala) => [
+      q(7646),
+      q(0),
+      ],
+   q(phalura) => [
+      q(5415),
+      q(0),
+      ],
+   q(phana') => [
+      q(5418),
+      q(0),
+      ],
+   q(phangduwali) => [
+      q(5423),
+      q(0),
+      ],
+   q(phende) => [
+      q(5391),
+      q(0),
+      ],
+   q(philippine languages) => [
+      q(0343),
+      q(0),
+      ],
+   q(philippine sign language) => [
+      q(5595),
+      q(0),
+      ],
+   q(phimbi) => [
+      q(5416),
+      q(0),
+      ],
+   q(phoenician) => [
+      q(0344),
+      q(0),
+      ],
+   q(phola) => [
+      q(7648),
+      q(0),
+      ],
+   q(pholo) => [
+      q(7570),
+      q(0),
+      ],
+   q(phom naga) => [
+      q(5016),
+      q(0),
+      ],
+   q(phong-kniang) => [
+      q(5525),
+      q(0),
+      ],
+   q(phrae pwo karen) => [
+      q(3375),
+      q(0),
+      ],
+   q(phrygian) => [
+      q(7396),
+      q(0),
+      ],
+   q(phu thai) => [
+      q(5420),
+      q(0),
+      ],
+   q(phuan) => [
+      q(5421),
+      q(0),
+      ],
+   q(phudagi) => [
+      q(5411),
+      q(0),
+      ],
+   q(phuie) => [
+      q(5621),
+      q(0),
+      ],
+   q(phukha) => [
+      q(5413),
+      q(0),
+      ],
+   q(phuma) => [
+      q(7650),
+      q(0),
+      ],
+   q(phunoi) => [
+      q(5417),
+      q(0),
+      ],
+   q(phuong) => [
+      q(5412),
+      q(0),
+      ],
+   q(phupa) => [
+      q(7653),
+      q(0),
+      ],
+   q(phupha) => [
+      q(7649),
+      q(0),
+      ],
+   q(phuza) => [
+      q(7654),
+      q(0),
+      ],
+   q(piamatsina) => [
+      q(5609),
+      q(0),
+      ],
+   q(piame) => [
+      q(5436),
+      q(0),
+      ],
+   q(piapoco) => [
+      q(5437),
+      q(0),
+      ],
+   q(piaroa) => [
+      q(5427),
+      q(0),
+      ],
+   q(picard) => [
+      q(5359),
+      q(0),
+      ],
+   q(pichis asheninka) => [
+      q(1838),
+      q(0),
+      ],
+   q(pictish) => [
+      q(7397),
+      q(0),
+      ],
+   q(pidgin delaware) => [
+      q(1997),
+      q(0),
+      ],
+   q(piemontese) => [
+      q(5499),
+      q(0),
+      ],
+   q(pijao) => [
+      q(5433),
+      q(0),
+      ],
+   q(pije) => [
+      q(5447),
+      q(0),
+      ],
+   q(pijin) => [
+      q(5440),
+      q(0),
+      ],
+   q(pilaga) => [
+      q(5466),
+      q(0),
+      ],
+   q(pileni) => [
+      q(5443),
+      q(0),
+      ],
+   q(pilipino) => [
+      q(0133),
+      q(0),
+      ],
+   q(pima bajo) => [
+      q(5424),
+      q(0),
+      ],
+   q(pimbwe) => [
+      q(5444),
+      q(0),
+      ],
+   q(pinai-hagahai) => [
+      q(5515),
+      q(0),
+      ],
+   q(pingelapese) => [
+      q(5429),
+      q(0),
+      ],
+   q(pini) => [
+      q(5432),
+      q(0),
+      ],
+   q(pinigura) => [
+      q(5523),
+      q(0),
+      ],
+   q(pinji) => [
+      q(5426),
+      q(0),
+      ],
+   q(pinotepa nacional mixtec) => [
+      q(4287),
+      q(0),
+      ],
+   q(pintiini) => [
+      q(5605),
+      q(0),
+      ],
+   q(pintupi-luritja) => [
+      q(5442),
+      q(0),
+      ],
+   q(pinyin) => [
+      q(5526),
+      q(0),
+      ],
+   q(pipil) => [
+      q(5550),
+      q(0),
+      ],
+   q(piraha) => [
+      q(4666),
+      q(0),
+      ],
+   q(piratapuyo) => [
+      q(5439),
+      q(0),
+      ],
+   q(pirlatapa) => [
+      q(1575),
+      q(0),
+      ],
+   q(piro) => [
+      q(5428),
+      q(0),
+      ],
+   q(piru) => [
+      q(5556),
+      q(0),
+      ],
+   q(pisabo) => [
+      q(5430),
+      q(0),
+      ],
+   q(pisaflores tepehua) => [
+      q(6635),
+      q(0),
+      ],
+   q(piscataway) => [
+      q(5602),
+      q(0),
+      ],
+   q(pisidian) => [
+      q(7406),
+      q(0),
+      ],
+   q(pitcairn-norfolk) => [
+      q(5431),
+      q(0),
+      ],
+   q(pite sami) => [
+      q(6030),
+      q(0),
+      ],
+   q(piti) => [
+      q(5369),
+      q(0),
+      ],
+   q(pitjantjatjara) => [
+      q(5448),
+      q(0),
+      ],
+   q(pitta pitta) => [
+      q(5441),
+      q(0),
+      ],
+   q(piu) => [
+      q(5445),
+      q(0),
+      ],
+   q(piya-kwonci) => [
+      q(5446),
+      q(0),
+      ],
+   q(plains cree) => [
+      q(1851),
+      q(0),
+      ],
+   q(plains indian sign language) => [
+      q(5586),
+      q(0),
+      ],
+   q(plains miwok) => [
+      q(5502),
+      q(0),
+      ],
+   q(plapo krumen) => [
+      q(3607),
+      q(0),
+      ],
+   q(plateau malagasy) => [
+      q(5477),
+      q(0),
+      ],
+   q(plautdietsch) => [
+      q(5378),
+      q(0),
+      ],
+   q(playero) => [
+      q(2571),
+      q(0),
+      ],
+   q(pnar) => [
+      q(5354),
+      q(0),
+      ],
+   q(pochuri naga) => [
+      q(5020),
+      q(0),
+      ],
+   q(pochutec) => [
+      q(7402),
+      q(0),
+      ],
+   q(podena) => [
+      q(5376),
+      q(0),
+      ],
+   q(pogolo) => [
+      q(5545),
+      q(0),
+      ],
+   q(pohnpeian) => [
+      q(0347),
+      q(0),
+      ],
+   q(pokanga) => [
+      q(5535),
+      q(0),
+      ],
+   q(poke) => [
+      q(5531),
+      q(0),
+      ],
+   q(pokomo) => [
+      q(5450),
+      q(0),
+      ],
+   q(pokoot) => [
+      q(5455),
+      q(0),
+      ],
+   q(polabian) => [
+      q(5544),
+      q(0),
+      ],
+   q(polari) => [
+      q(5464),
+      q(0),
+      ],
+   q(polci) => [
+      q(5468),
+      q(0),
+      ],
+   q(polish) => [
+      q(0346),
+      q(0),
+      ],
+   q(polish sign language) => [
+      q(5594),
+      q(0),
+      ],
+   q(polonombauk) => [
+      q(5462),
+      q(0),
+      ],
+   q(pom) => [
+      q(5496),
+      q(0),
+      ],
+   q(pomo) => [
+      q(5494),
+      q(0),
+      ],
+   q(ponam) => [
+      q(4746),
+      q(0),
+      ],
+   q(ponares) => [
+      q(5529),
+      q(0),
+      ],
+   q(pongu) => [
+      q(5510),
+      q(0),
+      ],
+   q(ponosakan) => [
+      q(5520),
+      q(0),
+      ],
+   q(pontic) => [
+      q(5521),
+      q(0),
+      ],
+   q(ponyo-gongwang naga) => [
+      q(5015),
+      q(0),
+      ],
+   q(popti') => [
+      q(3022),
+      q(0),
+      ],
+   q(poqomam) => [
+      q(5528),
+      q(0),
+      ],
+   q(poqomchi') => [
+      q(5533),
+      q(0),
+      ],
+   q(porohanon) => [
+      q(5568),
+      q(0),
+      ],
+   q(port sandwich) => [
+      q(5601),
+      q(0),
+      ],
+   q(port vato) => [
+      q(5612),
+      q(0),
+      ],
+   q(portuguese) => [
+      q(0348),
+      q(0),
+      ],
+   q(portuguese sign language) => [
+      q(5597),
+      q(0),
+      ],
+   q(portuguese-based creoles and pidgins) => [
+      q(0095),
+      q(2),
+      ],
+   q(potawatomi) => [
+      q(5541),
+      q(0),
+      ],
+   q(potiguara) => [
+      q(5532),
+      q(0),
+      ],
+   q(pottangi ollar gadaba) => [
+      q(2443),
+      q(0),
+      ],
+   q(poule) => [
+      q(4519),
+      q(0),
+      ],
+   q(poumei naga) => [
+      q(5503),
+      q(0),
+      ],
+   q(pouye) => [
+      q(1595),
+      q(0),
+      ],
+   q(powari) => [
+      q(5642),
+      q(0),
+      ],
+   q(powhatan) => [
+      q(5435),
+      q(0),
+      ],
+   q(poyanawa) => [
+      q(5647),
+      q(0),
+      ],
+   q(prakrit languages) => [
+      q(0349),
+      q(0),
+      ],
+   q(prasuni) => [
+      q(5573),
+      q(0),
+      ],
+   q(pray 3) => [
+      q(5582),
+      q(0),
+      ],
+   q(primitive irish) => [
+      q(5406),
+      q(0),
+      ],
+   q(principense) => [
+      q(5565),
+      q(0),
+      ],
+   q(provencal) => [
+      q(0326),
+      q(0),
+      ],
+   q(provencal, old (to 1500)) => [
+      q(0350),
+      q(0),
+      ],
+   q(providencia sign language) => [
+      q(5583),
+      q(0),
+      ],
+   q(prussian) => [
+      q(5567),
+      q(0),
+      ],
+   q(psikye) => [
+      q(3654),
+      q(0),
+      ],
+   q(pu ko) => [
+      q(5624),
+      q(0),
+      ],
+   q(pu-xian chinese) => [
+      q(1839),
+      q(0),
+      ],
+   q(puare) => [
+      q(5633),
+      q(0),
+      ],
+   q(pudtol atta) => [
+      q(0923),
+      q(0),
+      ],
+   q(puelche) => [
+      q(5619),
+      q(0),
+      ],
+   q(puerto rican sign language) => [
+      q(5591),
+      q(0),
+      ],
+   q(puimei naga) => [
+      q(5022),
+      q(0),
+      ],
+   q(puinave) => [
+      q(5622),
+      q(0),
+      ],
+   q(pukapuka) => [
+      q(5456),
+      q(0),
+      ],
+   q(pulaar) => [
+      q(2372),
+      q(0),
+      ],
+   q(pulabu) => [
+      q(5627),
+      q(0),
+      ],
+   q(pular) => [
+      q(2375),
+      q(0),
+      ],
+   q(puluwatese) => [
+      q(5632),
+      q(0),
+      ],
+   q(puma) => [
+      q(5625),
+      q(0),
+      ],
+   q(pume) => [
+      q(7498),
+      q(0),
+      ],
+   q(pumpokol) => [
+      q(7400),
+      q(0),
+      ],
+   q(punan aput) => [
+      q(5618),
+      q(0),
+      ],
+   q(punan bah-biau) => [
+      q(5506),
+      q(0),
+      ],
+   q(punan batu 1) => [
+      q(5514),
+      q(0),
+      ],
+   q(punan merah) => [
+      q(5620),
+      q(0),
+      ],
+   q(punan merap) => [
+      q(5617),
+      q(0),
+      ],
+   q(punan tubu) => [
+      q(5623),
+      q(0),
+      ],
+   q(punic) => [
+      q(7407),
+      q(0),
+      ],
+   q(punjabi) => [
+      q(0338),
+      q(0),
+      ],
+   q(puno quechua) => [
+      q(5701),
+      q(0),
+      ],
+   q(punu) => [
+      q(5631),
+      q(0),
+      ],
+   q(puoc) => [
+      q(5626),
+      q(0),
+      ],
+   q(puquina) => [
+      q(5628),
+      q(0),
+      ],
+   q(puragi) => [
+      q(5579),
+      q(0),
+      ],
+   q(purari) => [
+      q(2869),
+      q(0),
+      ],
+   q(purepecha) => [
+      q(6703),
+      q(0),
+      ],
+   q(puri) => [
+      q(5576),
+      q(0),
+      ],
+   q(purik) => [
+      q(5581),
+      q(0),
+      ],
+   q(purisimeno) => [
+      q(5634),
+      q(0),
+      ],
+   q(puroik) => [
+      q(6257),
+      q(0),
+      ],
+   q(purubora) => [
+      q(5629),
+      q(0),
+      ],
+   q(purum) => [
+      q(5616),
+      q(0),
+      ],
+   q(purum naga) => [
+      q(5635),
+      q(0),
+      ],
+   q(pushto) => [
+      q(0351),
+      q(0),
+      ],
+   q(putai) => [
+      q(4211),
+      q(0),
+      ],
+   q(putoh) => [
+      q(5630),
+      q(0),
+      ],
+   q(putukwam) => [
+      q(0643),
+      q(0),
+      ],
+   q(puyo) => [
+      q(7408),
+      q(0),
+      ],
+   q(puyo-paekche) => [
+      q(7403),
+      q(0),
+      ],
+   q(puyuma) => [
+      q(5649),
+      q(0),
+      ],
+   q(pwaamei) => [
+      q(5487),
+      q(0),
+      ],
+   q(pwapwa) => [
+      q(5538),
+      q(0),
+      ],
+   q(pwo eastern karen) => [
+      q(3371),
+      q(0),
+      ],
+   q(pwo northern karen) => [
+      q(5643),
+      q(0),
+      ],
+   q(pwo western karen) => [
+      q(5641),
+      q(0),
+      ],
+   q(pyapun) => [
+      q(5372),
+      q(0),
+      ],
+   q(pye krumen) => [
+      q(5645),
+      q(0),
+      ],
+   q(pyen) => [
+      q(5651),
+      q(0),
+      ],
+   q(pyu) => [
+      q(5355),
+      q(0),
+      ],
+   q(pyu (myanmar)) => [
+      q(5650),
+      q(0),
+      ],
+   q(q'anjob'al) => [
+      q(3357),
+      q(0),
+      ],
+   q(qabiao) => [
+      q(3785),
+      q(0),
+      ],
+   q(qaqet) => [
+      q(1612),
+      q(0),
+      ],
+   q(qashqa'i) => [
+      q(5702),
+      q(0),
+      ],
+   q(qatabanian) => [
+      q(7410),
+      q(0),
+      ],
+   q(qau) => [
+      q(2598),
+      q(0),
+      ],
+   q(qawasqar) => [
+      q(0748),
+      q(0),
+      ],
+   q(qila muji) => [
+      q(7617),
+      q(0),
+      ],
+   q(qimant) => [
+      q(0681),
+      q(0),
+      ],
+   q(qiubei zhuang) => [
+      q(7851),
+      q(0),
+      ],
+   q(quapaw) => [
+      q(5653),
+      q(0),
+      ],
+   q(quebec sign language) => [
+      q(2331),
+      q(0),
+      ],
+   q(quechan) => [
+      q(7689),
+      q(0),
+      ],
+   q(quechua) => [
+      q(0353),
+      q(0),
+      ],
+   q(quechuan (family)) => [
+      q(0523),
+      q(0),
+      ],
+   q(quenya) => [
+      q(5708),
+      q(0),
+      ],
+   q(queretaro otomi) => [
+      q(5299),
+      q(0),
+      ],
+   q(quetzaltepec mixe) => [
+      q(5644),
+      q(0),
+      ],
+   q(queyu) => [
+      q(5687),
+      q(0),
+      ],
+   q(quiavicuzas zapotec) => [
+      q(7834),
+      q(0),
+      ],
+   q(quiche) => [
+      q(5655),
+      q(0),
+      ],
+   q(quileute) => [
+      q(5660),
+      q(0),
+      ],
+   q(quinault) => [
+      q(5664),
+      q(0),
+      ],
+   q(quinqui) => [
+      q(5666),
+      q(0),
+      ],
+   q(quioquitani-quieri zapotec) => [
+      q(7870),
+      q(0),
+      ],
+   q(quiotepec chinantec) => [
+      q(1726),
+      q(0),
+      ],
+   q(quiripi) => [
+      q(5709),
+      q(0),
+      ],
+   q(rabha) => [
+      q(5716),
+      q(0),
+      ],
+   q(rade) => [
+      q(5713),
+      q(0),
+      ],
+   q(raetic) => [
+      q(7417),
+      q(0),
+      ],
+   q(rahambuu) => [
+      q(5731),
+      q(0),
+      ],
+   q(rajah kabunsuwan manobo) => [
+      q(4468),
+      q(0),
+      ],
+   q(rajasthani) => [
+      q(0354),
+      q(0),
+      ],
+   q(rajbanshi) => [
+      q(5771),
+      q(0),
+      ],
+   q(raji) => [
+      q(5770),
+      q(0),
+      ],
+   q(rajong) => [
+      q(5769),
+      q(0),
+      ],
+   q(rajput garasia) => [
+      q(2599),
+      q(0),
+      ],
+   q(rakahanga-manihiki) => [
+      q(5774),
+      q(0),
+      ],
+   q(rakhine) => [
+      q(5775),
+      q(0),
+      ],
+   q(ralte) => [
+      q(5719),
+      q(0),
+      ],
+   q(rama) => [
+      q(5778),
+      q(0),
+      ],
+   q(ramoaaina) => [
+      q(5717),
+      q(0),
+      ],
+   q(ramopa) => [
+      q(3377),
+      q(0),
+      ],
+   q(rampi) => [
+      q(3912),
+      q(0),
+      ],
+   q(rana tharu) => [
+      q(6478),
+      q(0),
+      ],
+   q(rang) => [
+      q(5729),
+      q(0),
+      ],
+   q(rangkas) => [
+      q(5753),
+      q(0),
+      ],
+   q(ranglong) => [
+      q(5805),
+      q(0),
+      ],
+   q(rangpuri) => [
+      q(5777),
+      q(0),
+      ],
+   q(rao) => [
+      q(5722),
+      q(0),
+      ],
+   q(rapa) => [
+      q(5730),
+      q(0),
+      ],
+   q(rapanui) => [
+      q(0355),
+      q(0),
+      ],
+   q(rapoisi) => [
+      q(3745),
+      q(0),
+      ],
+   q(rapting) => [
+      q(5823),
+      q(0),
+      ],
+   q(rara bakati') => [
+      q(4017),
+      q(0),
+      ],
+   q(rarotongan) => [
+      q(0356),
+      q(0),
+      ],
+   q(rasawa) => [
+      q(5712),
+      q(0),
+      ],
+   q(ratagnon) => [
+      q(1483),
+      q(0),
+      ],
+   q(ratahan) => [
+      q(5831),
+      q(0),
+      ],
+   q(rathawi) => [
+      q(5833),
+      q(0),
+      ],
+   q(rathwi bareli) => [
+      q(1165),
+      q(0),
+      ],
+   q(raute) => [
+      q(5726),
+      q(0),
+      ],
+   q(ravula) => [
+      q(7540),
+      q(0),
+      ],
+   q(rawa) => [
+      q(5851),
+      q(0),
+      ],
+   q(rawang) => [
+      q(5728),
+      q(0),
+      ],
+   q(rawat) => [
+      q(3110),
+      q(0),
+      ],
+   q(rawngtu chin) => [
+      q(7075),
+      q(0),
+      ],
+   q(rawo) => [
+      q(5848),
+      q(0),
+      ],
+   q(rayon zoque) => [
+      q(7823),
+      q(0),
+      ],
+   q(razajerdi) => [
+      q(5725),
+      q(0),
+      ],
+   q(red gelao) => [
+      q(2513),
+      q(0),
+      ],
+   q(reel) => [
+      q(0928),
+      q(0),
+      ],
+   q(rejang) => [
+      q(5743),
+      q(0),
+      ],
+   q(rejang kayan) => [
+      q(5740),
+      q(0),
+      ],
+   q(reli) => [
+      q(5742),
+      q(0),
+      ],
+   q(rema) => [
+      q(1372),
+      q(0),
+      ],
+   q(rembarunga) => [
+      q(5779),
+      q(0),
+      ],
+   q(rembong) => [
+      q(5739),
+      q(0),
+      ],
+   q(remo) => [
+      q(5745),
+      q(0),
+      ],
+   q(remontado dumagat) => [
+      q(0674),
+      q(0),
+      ],
+   q(rempi) => [
+      q(5792),
+      q(0),
+      ],
+   q(remun) => [
+      q(3923),
+      q(0),
+      ],
+   q(rendille) => [
+      q(5744),
+      q(0),
+      ],
+   q(rengao) => [
+      q(5746),
+      q(0),
+      ],
+   q(rennell-bellona) => [
+      q(4410),
+      q(0),
+      ],
+   q(rennellese sign language) => [
+      q(5828),
+      q(0),
+      ],
+   q(repanbitip) => [
+      q(5822),
+      q(0),
+      ],
+   q(rer bare) => [
+      q(5747),
+      q(0),
+      ],
+   q(rerau) => [
+      q(5738),
+      q(0),
+      ],
+   q(rerep) => [
+      q(5405),
+      q(0),
+      ],
+   q(reserved for local use) => [
+      q(0352),
+      q(0),
+      ],
+   q(reshe) => [
+      q(5748),
+      q(0),
+      ],
+   q(resigaro) => [
+      q(5755),
+      q(0),
+      ],
+   q(retta) => [
+      q(5749),
+      q(0),
+      ],
+   q(reunion creole french) => [
+      q(5736),
+      q(0),
+      ],
+   q(reyesano) => [
+      q(5750),
+      q(0),
+      ],
+   q(riang (india)) => [
+      q(5760),
+      q(0),
+      ],
+   q(riang (myanmar)) => [
+      q(5763),
+      q(0),
+      ],
+   q(riantana) => [
+      q(5721),
+      q(0),
+      ],
+   q(ribun) => [
+      q(5766),
+      q(0),
+      ],
+   q(rien) => [
+      q(5761),
+      q(0),
+      ],
+   q(rikbaktsa) => [
+      q(5773),
+      q(0),
+      ],
+   q(rincon zapotec) => [
+      q(7731),
+      q(0),
+      ],
+   q(rinconada bikol) => [
+      q(1484),
+      q(0),
+      ],
+   q(ringgou) => [
+      q(5757),
+      q(0),
+      ],
+   q(ririo) => [
+      q(5824),
+      q(0),
+      ],
+   q(ritarungo) => [
+      q(5767),
+      q(0),
+      ],
+   q(riung) => [
+      q(5768),
+      q(0),
+      ],
+   q(riverain sango) => [
+      q(6114),
+      q(0),
+      ],
+   q(rogo) => [
+      q(5812),
+      q(0),
+      ],
+   q(rohingya) => [
+      q(5758),
+      q(0),
+      ],
+   q(roma) => [
+      q(5789),
+      q(0),
+      ],
+   q(romagnol) => [
+      q(5754),
+      q(0),
+      ],
+   q(romam) => [
+      q(5799),
+      q(0),
+      ],
+   q(romance languages) => [
+      q(0357),
+      q(0),
+      ],
+   q(romanian) => [
+      q(0360),
+      q(0),
+      ],
+   q(romanian sign language) => [
+      q(5794),
+      q(0),
+      ],
+   q(romano-greek) => [
+      q(5752),
+      q(0),
+      ],
+   q(romano-serbian) => [
+      q(5827),
+      q(0),
+      ],
+   q(romanova) => [
+      q(5797),
+      q(0),
+      ],
+   q(romansh) => [
+      q(0358),
+      q(0),
+      ],
+   q(romany) => [
+      q(0359),
+      q(0),
+      ],
+   q(romblomanon) => [
+      q(5816),
+      q(0),
+      ],
+   q(rombo) => [
+      q(5814),
+      q(0),
+      ],
+   q(romkun) => [
+      q(5787),
+      q(0),
+      ],
+   q(ron) => [
+      q(1769),
+      q(0),
+      ],
+   q(ronga) => [
+      q(5804),
+      q(0),
+      ],
+   q(rongga) => [
+      q(5819),
+      q(0),
+      ],
+   q(rongmei naga) => [
+      q(4739),
+      q(0),
+      ],
+   q(rongpo) => [
+      q(5807),
+      q(0),
+      ],
+   q(ronji) => [
+      q(5813),
+      q(0),
+      ],
+   q(roon) => [
+      q(5806),
+      q(0),
+      ],
+   q(roria) => [
+      q(5751),
+      q(0),
+      ],
+   q(rotokas) => [
+      q(5817),
+      q(0),
+      ],
+   q(rotuman) => [
+      q(5832),
+      q(0),
+      ],
+   q(roviana) => [
+      q(5838),
+      q(0),
+      ],
+   q(ruching palaung) => [
+      q(5360),
+      q(0),
+      ],
+   q(rudbari) => [
+      q(5737),
+      q(0),
+      ],
+   q(rufiji) => [
+      q(5840),
+      q(0),
+      ],
+   q(ruga) => [
+      q(5839),
+      q(0),
+      ],
+   q(rukai) => [
+      q(2143),
+      q(0),
+      ],
+   q(ruma) => [
+      q(5847),
+      q(0),
+      ],
+   q(rumai palaung) => [
+      q(5732),
+      q(0),
+      ],
+   q(rumu) => [
+      q(3422),
+      q(0),
+      ],
+   q(runa) => [
+      q(5802),
+      q(0),
+      ],
+   q(rundi) => [
+      q(0361),
+      q(0),
+      ],
+   q(runga) => [
+      q(5820),
+      q(0),
+      ],
+   q(rungtu chin) => [
+      q(5830),
+      q(0),
+      ],
+   q(rungus) => [
+      q(2134),
+      q(0),
+      ],
+   q(rungwa) => [
+      q(5809),
+      q(0),
+      ],
+   q(russia buriat) => [
+      q(1584),
+      q(0),
+      ],
+   q(russian) => [
+      q(0363),
+      q(0),
+      ],
+   q(russian sign language) => [
+      q(5829),
+      q(0),
+      ],
+   q(rusyn) => [
+      q(5836),
+      q(0),
+      ],
+   q(rutul) => [
+      q(5844),
+      q(0),
+      ],
+   q(ruuli) => [
+      q(5835),
+      q(0),
+      ],
+   q(ruund) => [
+      q(5803),
+      q(0),
+      ],
+   q(rwa) => [
+      q(5849),
+      q(0),
+      ],
+   q(s'gaw karen) => [
+      q(3594),
+      q(0),
+      ],
+   q(sa) => [
+      q(5870),
+      q(0),
+      ],
+   q(sa'a) => [
+      q(0836),
+      q(0),
+      ],
+   q(sa'ban) => [
+      q(6124),
+      q(0),
+      ],
+   q(sa'och) => [
+      q(5908),
+      q(0),
+      ],
+   q(saafi-saafi) => [
+      q(5868),
+      q(0),
+      ],
+   q(saam) => [
+      q(5723),
+      q(0),
+      ],
+   q(saamia) => [
+      q(4038),
+      q(0),
+      ],
+   q(saaroa) => [
+      q(6300),
+      q(0),
+      ],
+   q(saba) => [
+      q(5856),
+      q(0),
+      ],
+   q(sabaean) => [
+      q(7421),
+      q(0),
+      ],
+   q(sabah bisaya) => [
+      q(1471),
+      q(0),
+      ],
+   q(sabah malay) => [
+      q(4516),
+      q(0),
+      ],
+   q(sabane) => [
+      q(5859),
+      q(0),
+      ],
+   q(sabaot) => [
+      q(6168),
+      q(0),
+      ],
+   q(sabine) => [
+      q(5894),
+      q(0),
+      ],
+   q(sabu) => [
+      q(2860),
+      q(0),
+      ],
+   q(sabum) => [
+      q(5887),
+      q(0),
+      ],
+   q(sacapulteco) => [
+      q(5669),
+      q(0),
+      ],
+   q(sadri) => [
+      q(5905),
+      q(0),
+      ],
+   q(saek) => [
+      q(6044),
+      q(0),
+      ],
+   q(saep) => [
+      q(6152),
+      q(0),
+      ],
+   q(safaliba) => [
+      q(5860),
+      q(0),
+      ],
+   q(safeyoka) => [
+      q(0860),
+      q(0),
+      ],
+   q(safwa) => [
+      q(5883),
+      q(0),
+      ],
+   q(sagala) => [
+      q(5885),
+      q(0),
+      ],
+   q(sagalla) => [
+      q(6443),
+      q(0),
+      ],
+   q(saho) => [
+      q(6223),
+      q(0),
+      ],
+   q(sahu) => [
+      q(5861),
+      q(0),
+      ],
+   q(saidi arabic) => [
+      q(0627),
+      q(0),
+      ],
+   q(saint lucian creole french) => [
+      q(0588),
+      q(0),
+      ],
+   q(saisiyat) => [
+      q(7439),
+      q(0),
+      ],
+   q(sajalong) => [
+      q(6033),
+      q(0),
+      ],
+   q(sajau basap) => [
+      q(6028),
+      q(0),
+      ],
+   q(sakachep) => [
+      q(5903),
+      q(0),
+      ],
+   q(sakalava malagasy) => [
+      q(6049),
+      q(0),
+      ],
+   q(sakan) => [
+      q(0223),
+      q(0),
+      ],
+   q(sakao) => [
+      q(6062),
+      q(0),
+      ],
+   q(sakata) => [
+      q(6061),
+      q(0),
+      ],
+   q(sake) => [
+      q(5862),
+      q(0),
+      ],
+   q(sakirabia) => [
+      q(6048),
+      q(0),
+      ],
+   q(sala) => [
+      q(5996),
+      q(0),
+      ],
+   q(salako) => [
+      q(3479),
+      q(0),
+      ],
+   q(salampasu) => [
+      q(6085),
+      q(0),
+      ],
+   q(salar) => [
+      q(6080),
+      q(0),
+      ],
+   q(salas) => [
+      q(5977),
+      q(0),
+      ],
+   q(salasaca highland quichua) => [
+      q(5698),
+      q(0),
+      ],
+   q(salchuq) => [
+      q(6079),
+      q(0),
+      ],
+   q(saleman) => [
+      q(5867),
+      q(0),
+      ],
+   q(saliba) => [
+      q(5877),
+      q(0),
+      ],
+   q(salinan) => [
+      q(6077),
+      q(0),
+      ],
+   q(salishan languages) => [
+      q(0368),
+      q(0),
+      ],
+   q(sallands) => [
+      q(5933),
+      q(0),
+      ],
+   q(salt-yui) => [
+      q(6075),
+      q(0),
+      ],
+   q(saluan) => [
+      q(3992),
+      q(0),
+      ],
+   q(saluma) => [
+      q(6074),
+      q(0),
+      ],
+   q(salvadoran sign language) => [
+      q(2290),
+      q(0),
+      ],
+   q(sam) => [
+      q(6126),
+      q(0),
+      ],
+   q(sama) => [
+      q(6090),
+      q(0),
+      ],
+   q(samaritan) => [
+      q(6097),
+      q(0),
+      ],
+   q(samaritan aramaic) => [
+      q(0369),
+      q(0),
+      ],
+   q(samarokena) => [
+      q(6563),
+      q(0),
+      ],
+   q(samatao) => [
+      q(7665),
+      q(0),
+      ],
+   q(samba) => [
+      q(6104),
+      q(0),
+      ],
+   q(samba daka) => [
+      q(1685),
+      q(0),
+      ],
+   q(samba leko) => [
+      q(4773),
+      q(0),
+      ],
+   q(sambal) => [
+      q(7422),
+      q(0),
+      ],
+   q(sambalpuri) => [
+      q(6166),
+      q(0),
+      ],
+   q(sambe) => [
+      q(7230),
+      q(0),
+      ],
+   q(samberigi) => [
+      q(6222),
+      q(0),
+      ],
+   q(samburu) => [
+      q(5865),
+      q(0),
+      ],
+   q(samei) => [
+      q(6093),
+      q(0),
+      ],
+   q(sami languages) => [
+      q(0389),
+      q(0),
+      ],
+   q(samo) => [
+      q(6098),
+      q(0),
+      ],
+   q(samoan) => [
+      q(0392),
+      q(0),
+      ],
+   q(samogitian) => [
+      q(5975),
+      q(0),
+      ],
+   q(samosa) => [
+      q(6278),
+      q(0),
+      ],
+   q(samoyedic languages) => [
+      q(0526),
+      q(0),
+      ],
+   q(sampang) => [
+      q(5727),
+      q(0),
+      ],
+   q(samre) => [
+      q(6297),
+      q(0),
+      ],
+   q(samtao) => [
+      q(6244),
+      q(0),
+      ],
+   q(samvedi) => [
+      q(6102),
+      q(0),
+      ],
+   q(san agustin mixtepec zapotec) => [
+      q(7867),
+      q(0),
+      ],
+   q(san baltazar loxicha zapotec) => [
+      q(7848),
+      q(0),
+      ],
+   q(san blas kuna) => [
+      q(1908),
+      q(0),
+      ],
+   q(san dionisio del mar huave) => [
+      q(2858),
+      q(0),
+      ],
+   q(san felipe otlaltepec popoloca) => [
+      q(5543),
+      q(0),
+      ],
+   q(san francisco del mar huave) => [
+      q(2837),
+      q(0),
+      ],
+   q(san francisco matlatzinca) => [
+      q(4096),
+      q(0),
+      ],
+   q(san jeronimo tecoatl mazatec) => [
+      q(4089),
+      q(0),
+      ],
+   q(san juan atzingo popoloca) => [
+      q(5530),
+      q(0),
+      ],
+   q(san juan colorado mixtec) => [
+      q(4297),
+      q(0),
+      ],
+   q(san juan guelavia zapotec) => [
+      q(7717),
+      q(0),
+      ],
+   q(san juan teita mixtec) => [
+      q(7447),
+      q(0),
+      ],
+   q(san luis temalacayuca popoloca) => [
+      q(5557),
+      q(0),
+      ],
+   q(san marcos tlalcoyalco popoloca) => [
+      q(5476),
+      q(0),
+      ],
+   q(san martin itunyoso triqui) => [
+      q(6671),
+      q(0),
+      ],
+   q(san martin quechua) => [
+      q(5685),
+      q(0),
+      ],
+   q(san mateo del mar huave) => [
+      q(2852),
+      q(0),
+      ],
+   q(san miguel creole french) => [
+      q(5901),
+      q(0),
+      ],
+   q(san miguel el grande mixtec) => [
+      q(4280),
+      q(0),
+      ],
+   q(san miguel piedras mixtec) => [
+      q(7452),
+      q(0),
+      ],
+   q(san pedro amuzgos amuzgo) => [
+      q(1016),
+      q(0),
+      ],
+   q(san pedro quiatoni zapotec) => [
+      q(7830),
+      q(0),
+      ],
+   q(san salvador kongo) => [
+      q(3695),
+      q(0),
+      ],
+   q(san vicente coatlan zapotec) => [
+      q(7844),
+      q(0),
+      ],
+   q(sanaani arabic) => [
+      q(1003),
+      q(0),
+      ],
+   q(sanapana) => [
+      q(5864),
+      q(0),
+      ],
+   q(sandawe) => [
+      q(0364),
+      q(0),
+      ],
+   q(sanga (democratic republic of congo)) => [
+      q(6111),
+      q(0),
+      ],
+   q(sanga (nigeria)) => [
+      q(7431),
+      q(0),
+      ],
+   q(sanggau) => [
+      q(5902),
+      q(0),
+      ],
+   q(sangil) => [
+      q(6115),
+      q(0),
+      ],
+   q(sangir) => [
+      q(6298),
+      q(0),
+      ],
+   q(sangisari) => [
+      q(5974),
+      q(0),
+      ],
+   q(sangkong) => [
+      q(5970),
+      q(0),
+      ],
+   q(sanglechi) => [
+      q(5980),
+      q(0),
+      ],
+   q(sango) => [
+      q(0365),
+      q(0),
+      ],
+   q(sangtam naga) => [
+      q(5044),
+      q(0),
+      ],
+   q(sangu (gabon)) => [
+      q(6120),
+      q(0),
+      ],
+   q(sangu (tanzania)) => [
+      q(5888),
+      q(0),
+      ],
+   q(sani) => [
+      q(7668),
+      q(0),
+      ],
+   q(sanie) => [
+      q(7673),
+      q(0),
+      ],
+   q(saniyo-hiyewe) => [
+      q(6127),
+      q(0),
+      ],
+   q(sankaran maninka) => [
+      q(4510),
+      q(0),
+      ],
+   q(sansi) => [
+      q(6208),
+      q(0),
+      ],
+   q(sanskrit) => [
+      q(0370),
+      q(0),
+      ],
+   q(santa ana de tusi pasco quechua) => [
+      q(5705),
+      q(0),
+      ],
+   q(santa catarina albarradas zapotec) => [
+      q(7868),
+      q(0),
+      ],
+   q(santa ines ahuatempan popoloca) => [
+      q(5356),
+      q(0),
+      ],
+   q(santa ines yatzechi zapotec) => [
+      q(7838),
+      q(0),
+      ],
+   q(santa lucia monteverde mixtec) => [
+      q(4171),
+      q(0),
+      ],
+   q(santa maria del mar huave) => [
+      q(2861),
+      q(0),
+      ],
+   q(santa maria la alta nahuatl) => [
+      q(4864),
+      q(0),
+      ],
+   q(santa maria quiegolani zapotec) => [
+      q(7833),
+      q(0),
+      ],
+   q(santa maria zacatepec mixtec) => [
+      q(4675),
+      q(0),
+      ],
+   q(santa teresa cora) => [
+      q(1818),
+      q(0),
+      ],
+   q(santali) => [
+      q(0372),
+      q(0),
+      ],
+   q(santiago del estero quichua) => [
+      q(5668),
+      q(0),
+      ],
+   q(santiago xanica zapotec) => [
+      q(7842),
+      q(0),
+      ],
+   q(santo domingo albarradas zapotec) => [
+      q(7732),
+      q(0),
+      ],
+   q(sanuma) => [
+      q(7437),
+      q(0),
+      ],
+   q(sao paulo kaingang) => [
+      q(7777),
+      q(0),
+      ],
+   q(saotomense) => [
+      q(1849),
+      q(0),
+      ],
+   q(saparua) => [
+      q(6162),
+      q(0),
+      ],
+   q(sape) => [
+      q(6151),
+      q(0),
+      ],
+   q(sapo) => [
+      q(3562),
+      q(0),
+      ],
+   q(saponi) => [
+      q(6155),
+      q(0),
+      ],
+   q(saposa) => [
+      q(6163),
+      q(0),
+      ],
+   q(sapuan) => [
+      q(6165),
+      q(0),
+      ],
+   q(sar) => [
+      q(4614),
+      q(0),
+      ],
+   q(sara) => [
+      q(6183),
+      q(0),
+      ],
+   q(sara dunjo) => [
+      q(3490),
+      q(0),
+      ],
+   q(sara kaba) => [
+      q(5898),
+      q(0),
+      ],
+   q(sara kaba deme) => [
+      q(3677),
+      q(0),
+      ],
+   q(sara kaba naa) => [
+      q(3692),
+      q(0),
+      ],
+   q(saramaccan) => [
+      q(6190),
+      q(0),
+      ],
+   q(sarangani blaan) => [
+      q(1391),
+      q(0),
+      ],
+   q(sarangani manobo) => [
+      q(4119),
+      q(0),
+      ],
+   q(sarasira) => [
+      q(7858),
+      q(0),
+      ],
+   q(saraveca) => [
+      q(5866),
+      q(0),
+      ],
+   q(sardinian) => [
+      q(0402),
+      q(0),
+      ],
+   q(sarikoli) => [
+      q(6186),
+      q(0),
+      ],
+   q(sarli) => [
+      q(5918),
+      q(0),
+      ],
+   q(sarsi) => [
+      q(6193),
+      q(0),
+      ],
+   q(sartang) => [
+      q(5250),
+      q(0),
+      ],
+   q(sarua) => [
+      q(6290),
+      q(0),
+      ],
+   q(sarudu) => [
+      q(5931),
+      q(0),
+      ],
+   q(saruga) => [
+      q(6180),
+      q(0),
+      ],
+   q(sasak) => [
+      q(0371),
+      q(0),
+      ],
+   q(sasaru) => [
+      q(6301),
+      q(0),
+      ],
+   q(sassarese sardinian) => [
+      q(5916),
+      q(0),
+      ],
+   q(satawalese) => [
+      q(6246),
+      q(0),
+      ],
+   q(satere-mawe) => [
+      q(4098),
+      q(0),
+      ],
+   q(saterfriesisch) => [
+      q(6240),
+      q(0),
+      ],
+   q(saudi arabian sign language) => [
+      q(5923),
+      q(0),
+      ],
+   q(sauraseni prakrit) => [
+      q(5600),
+      q(0),
+      ],
+   q(saurashtra) => [
+      q(5872),
+      q(0),
+      ],
+   q(sauri) => [
+      q(6194),
+      q(0),
+      ],
+   q(sauria paharia) => [
+      q(4313),
+      q(0),
+      ],
+   q(sause) => [
+      q(5863),
+      q(0),
+      ],
+   q(sausi) => [
+      q(6209),
+      q(0),
+      ],
+   q(savara) => [
+      q(6266),
+      q(0),
+      ],
+   q(savi) => [
+      q(5919),
+      q(0),
+      ],
+   q(savosavo) => [
+      q(6267),
+      q(0),
+      ],
+   q(sawai) => [
+      q(6325),
+      q(0),
+      ],
+   q(saweru) => [
+      q(6283),
+      q(0),
+      ],
+   q(sawi) => [
+      q(5869),
+      q(0),
+      ],
+   q(sawila) => [
+      q(6285),
+      q(0),
+      ],
+   q(sawknah) => [
+      q(6279),
+      q(0),
+      ],
+   q(saxon, low) => [
+      q(0306),
+      q(0),
+      ],
+   q(saxwe gbe) => [
+      q(6303),
+      q(0),
+      ],
+   q(saya) => [
+      q(5871),
+      q(0),
+      ],
+   q(sayula popoluca) => [
+      q(5540),
+      q(0),
+      ],
+   q(scots) => [
+      q(0374),
+      q(0),
+      ],
+   q(scottish gaelic) => [
+      q(0153),
+      q(0),
+      ],
+   q(scythian) => [
+      q(7423),
+      q(0),
+      ],
+   q(sea island creole english) => [
+      q(2637),
+      q(0),
+      ],
+   q(seba) => [
+      q(3218),
+      q(0),
+      ],
+   q(sebat bet gurage) => [
+      q(5978),
+      q(0),
+      ],
+   q(seberuang) => [
+      q(5896),
+      q(0),
+      ],
+   q(sebop) => [
+      q(6007),
+      q(0),
+      ],
+   q(sebuyau) => [
+      q(6107),
+      q(0),
+      ],
+   q(sechelt) => [
+      q(5936),
+      q(0),
+      ],
+   q(secoya) => [
+      q(5955),
+      q(0),
+      ],
+   q(sedang) => [
+      q(5937),
+      q(0),
+      ],
+   q(sedoa) => [
+      q(6759),
+      q(0),
+      ],
+   q(seeku) => [
+      q(6143),
+      q(0),
+      ],
+   q(segai) => [
+      q(5965),
+      q(0),
+      ],
+   q(segeju) => [
+      q(5940),
+      q(0),
+      ],
+   q(seget) => [
+      q(5879),
+      q(0),
+      ],
+   q(sehwi) => [
+      q(5961),
+      q(0),
+      ],
+   q(seimat) => [
+      q(6206),
+      q(0),
+      ],
+   q(seit-kaitetu) => [
+      q(2746),
+      q(0),
+      ],
+   q(sekani) => [
+      q(5944),
+      q(0),
+      ],
+   q(sekapan) => [
+      q(6057),
+      q(0),
+      ],
+   q(sekar) => [
+      q(6067),
+      q(0),
+      ],
+   q(seke (nepal)) => [
+      q(6052),
+      q(0),
+      ],
+   q(seke (vanuatu)) => [
+      q(6047),
+      q(0),
+      ],
+   q(seki) => [
+      q(6306),
+      q(0),
+      ],
+   q(seko padang) => [
+      q(6065),
+      q(0),
+      ],
+   q(seko tengah) => [
+      q(6056),
+      q(0),
+      ],
+   q(sekpele) => [
+      q(3902),
+      q(0),
+      ],
+   q(selangor sign language) => [
+      q(3294),
+      q(0),
+      ],
+   q(selaru) => [
+      q(6083),
+      q(0),
+      ],
+   q(selayar) => [
+      q(6086),
+      q(0),
+      ],
+   q(selee) => [
+      q(6125),
+      q(0),
+      ],
+   q(selepet) => [
+      q(6157),
+      q(0),
+      ],
+   q(selian) => [
+      q(6296),
+      q(0),
+      ],
+   q(selkup) => [
+      q(0375),
+      q(0),
+      ],
+   q(selungai murut) => [
+      q(6071),
+      q(0),
+      ],
+   q(seluwasan) => [
+      q(6284),
+      q(0),
+      ],
+   q(semai) => [
+      q(5934),
+      q(0),
+      ],
+   q(semandang) => [
+      q(5924),
+      q(0),
+      ],
+   q(semaq beri) => [
+      q(6317),
+      q(0),
+      ],
+   q(sembakung murut) => [
+      q(5890),
+      q(0),
+      ],
+   q(semelai) => [
+      q(6315),
+      q(0),
+      ],
+   q(semimi) => [
+      q(2305),
+      q(0),
+      ],
+   q(semitic languages) => [
+      q(0376),
+      q(0),
+      ],
+   q(semnam) => [
+      q(6212),
+      q(0),
+      ],
+   q(semnani) => [
+      q(6105),
+      q(0),
+      ],
+   q(sempan) => [
+      q(7425),
+      q(0),
+      ],
+   q(sena) => [
+      q(5941),
+      q(0),
+      ],
+   q(senara senoufo) => [
+      q(5948),
+      q(0),
+      ],
+   q(senaya) => [
+      q(6310),
+      q(0),
+      ],
+   q(sene) => [
+      q(5943),
+      q(0),
+      ],
+   q(seneca) => [
+      q(5938),
+      q(0),
+      ],
+   q(sened) => [
+      q(5929),
+      q(0),
+      ],
+   q(sengele) => [
+      q(6320),
+      q(0),
+      ],
+   q(senggi) => [
+      q(6123),
+      q(0),
+      ],
+   q(sengo) => [
+      q(6156),
+      q(0),
+      ],
+   q(sengseng) => [
+      q(6224),
+      q(0),
+      ],
+   q(senhaja de srair) => [
+      q(6039),
+      q(0),
+      ],
+   q(sensi) => [
+      q(6113),
+      q(0),
+      ],
+   q(sentani) => [
+      q(5951),
+      q(0),
+      ],
+   q(senthang chin) => [
+      q(5956),
+      q(0),
+      ],
+   q(sentinel) => [
+      q(6227),
+      q(0),
+      ],
+   q(sepa (indonesia)) => [
+      q(6150),
+      q(0),
+      ],
+   q(sepa (papua new guinea)) => [
+      q(6153),
+      q(0),
+      ],
+   q(sepedi) => [
+      q(0318),
+      q(0),
+      ],
+   q(sepik iwam) => [
+      q(3011),
+      q(0),
+      ],
+   q(sera) => [
+      q(6199),
+      q(0),
+      ],
+   q(seraiki) => [
+      q(6059),
+      q(0),
+      ],
+   q(serbian) => [
+      q(0404),
+      q(0),
+      ],
+   q(serbo-croatian) => [
+      q(0537),
+      q(0),
+      ],
+   q(sere) => [
+      q(6271),
+      q(0),
+      ],
+   q(serer) => [
+      q(0405),
+      q(0),
+      ],
+   q(seri) => [
+      q(5942),
+      q(0),
+      ],
+   q(serili) => [
+      q(6264),
+      q(0),
+      ],
+   q(seroa) => [
+      q(3546),
+      q(0),
+      ],
+   q(serrano) => [
+      q(5949),
+      q(0),
+      ],
+   q(seru) => [
+      q(6318),
+      q(0),
+      ],
+   q(serua) => [
+      q(6197),
+      q(0),
+      ],
+   q(serudung murut) => [
+      q(6188),
+      q(0),
+      ],
+   q(serui-laut) => [
+      q(5952),
+      q(0),
+      ],
+   q(seselwa creole french) => [
+      q(1858),
+      q(0),
+      ],
+   q(seta) => [
+      q(6229),
+      q(0),
+      ],
+   q(setaman) => [
+      q(6236),
+      q(0),
+      ],
+   q(seti) => [
+      q(5881),
+      q(0),
+      ],
+   q(settla) => [
+      q(6225),
+      q(0),
+      ],
+   q(severn ojibwa) => [
+      q(5198),
+      q(0),
+      ],
+   q(sewa bay) => [
+      q(5954),
+      q(0),
+      ],
+   q(seze) => [
+      q(6319),
+      q(0),
+      ],
+   q(sha) => [
+      q(5912),
+      q(0),
+      ],
+   q(shabak) => [
+      q(5915),
+      q(0),
+      ],
+   q(shabo) => [
+      q(5878),
+      q(0),
+      ],
+   q(shahmirzadi) => [
+      q(6200),
+      q(0),
+      ],
+   q(shahrudi) => [
+      q(5993),
+      q(0),
+      ],
+   q(shall-zwall) => [
+      q(5982),
+      q(0),
+      ],
+   q(shama-sambuga) => [
+      q(6169),
+      q(0),
+      ],
+   q(shamang) => [
+      q(7426),
+      q(0),
+      ],
+   q(shambala) => [
+      q(3573),
+      q(0),
+      ],
+   q(shan) => [
+      q(0379),
+      q(0),
+      ],
+   q(shanenawa) => [
+      q(6280),
+      q(0),
+      ],
+   q(shanga) => [
+      q(5994),
+      q(0),
+      ],
+   q(shangzhai) => [
+      q(3076),
+      q(0),
+      ],
+   q(sharanahua) => [
+      q(4130),
+      q(0),
+      ],
+   q(shark bay) => [
+      q(6221),
+      q(0),
+      ],
+   q(sharwa) => [
+      q(6282),
+      q(0),
+      ],
+   q(shasta) => [
+      q(5999),
+      q(0),
+      ],
+   q(shatt) => [
+      q(5990),
+      q(0),
+      ],
+   q(shau) => [
+      q(6170),
+      q(0),
+      ],
+   q(shawnee) => [
+      q(6042),
+      q(0),
+      ],
+   q(she) => [
+      q(6003),
+      q(0),
+      ],
+   q(shehri) => [
+      q(6001),
+      q(0),
+      ],
+   q(shekhawati) => [
+      q(6287),
+      q(0),
+      ],
+   q(shekkacho) => [
+      q(4432),
+      q(0),
+      ],
+   q(sheko) => [
+      q(5986),
+      q(0),
+      ],
+   q(shelta) => [
+      q(6231),
+      q(0),
+      ],
+   q(shempire senoufo) => [
+      q(5935),
+      q(0),
+      ],
+   q(shendu) => [
+      q(5992),
+      q(0),
+      ],
+   q(sheni) => [
+      q(5911),
+      q(0),
+      ],
+   q(sherbro) => [
+      q(1506),
+      q(0),
+      ],
+   q(sherdukpen) => [
+      q(5927),
+      q(0),
+      ],
+   q(sherpa) => [
+      q(7435),
+      q(0),
+      ],
+   q(sheshi kham) => [
+      q(3346),
+      q(0),
+      ],
+   q(shi) => [
+      q(5997),
+      q(0),
+      ],
+   q(shihhi arabic) => [
+      q(6207),
+      q(0),
+      ],
+   q(shiki) => [
+      q(2627),
+      q(0),
+      ],
+   q(shilluk) => [
+      q(5991),
+      q(0),
+      ],
+   q(shina) => [
+      q(5906),
+      q(0),
+      ],
+   q(shinabo) => [
+      q(6112),
+      q(0),
+      ],
+   q(shipibo-conibo) => [
+      q(5995),
+      q(0),
+      ],
+   q(shixing) => [
+      q(6294),
+      q(0),
+      ],
+   q(sholaga) => [
+      q(6069),
+      q(0),
+      ],
+   q(shom peng) => [
+      q(6012),
+      q(0),
+      ],
+   q(shona) => [
+      q(0394),
+      q(0),
+      ],
+   q(shoo-minda-nye) => [
+      q(1086),
+      q(0),
+      ],
+   q(shor) => [
+      q(1753),
+      q(0),
+      ],
+   q(shoshoni) => [
+      q(5988),
+      q(0),
+      ],
+   q(shua) => [
+      q(5987),
+      q(0),
+      ],
+   q(shuadit) => [
+      q(5930),
+      q(0),
+      ],
+   q(shuar) => [
+      q(3084),
+      q(0),
+      ],
+   q(shubi) => [
+      q(6253),
+      q(0),
+      ],
+   q(shughni) => [
+      q(5967),
+      q(0),
+      ],
+   q(shumashti) => [
+      q(6242),
+      q(0),
+      ],
+   q(shumcho) => [
+      q(5910),
+      q(0),
+      ],
+   q(shuswap) => [
+      q(5998),
+      q(0),
+      ],
+   q(shuwa-zamani) => [
+      q(3572),
+      q(0),
+      ],
+   q(shwai) => [
+      q(6002),
+      q(0),
+      ],
+   q(shwe palaung) => [
+      q(5470),
+      q(0),
+      ],
+   q(sialum) => [
+      q(6084),
+      q(0),
+      ],
+   q(siamou) => [
+      q(6009),
+      q(0),
+      ],
+   q(sian) => [
+      q(6154),
+      q(0),
+      ],
+   q(siane) => [
+      q(6119),
+      q(0),
+      ],
+   q(siang) => [
+      q(6304),
+      q(0),
+      ],
+   q(siar-lak) => [
+      q(6038),
+      q(0),
+      ],
+   q(siawi) => [
+      q(4382),
+      q(0),
+      ],
+   q(sibe) => [
+      q(4758),
+      q(0),
+      ],
+   q(sibu melanau) => [
+      q(5932),
+      q(0),
+      ],
+   q(sicanian) => [
+      q(6292),
+      q(0),
+      ],
+   q(sicel) => [
+      q(5913),
+      q(0),
+      ],
+   q(sichuan yi) => [
+      q(0189),
+      q(0),
+      ],
+   q(sicilian) => [
+      q(0373),
+      q(0),
+      ],
+   q(sicite senoufo) => [
+      q(5947),
+      q(0),
+      ],
+   q(siculo arabic) => [
+      q(6176),
+      q(0),
+      ],
+   q(sidamo) => [
+      q(0380),
+      q(0),
+      ],
+   q(sidetic) => [
+      q(7424),
+      q(0),
+      ],
+   q(sie) => [
+      q(2275),
+      q(0),
+      ],
+   q(sierra de juarez zapotec) => [
+      q(7716),
+      q(0),
+      ],
+   q(sierra leone sign language) => [
+      q(5979),
+      q(0),
+      ],
+   q(sierra negra nahuatl) => [
+      q(5061),
+      q(0),
+      ],
+   q(sighu) => [
+      q(6293),
+      q(0),
+      ],
+   q(sign languages) => [
+      q(0378),
+      q(0),
+      ],
+   q(sihan) => [
+      q(6121),
+      q(0),
+      ],
+   q(sihuas ancash quechua) => [
+      q(5693),
+      q(0),
+      ],
+   q(sika) => [
+      q(6051),
+      q(0),
+      ],
+   q(sikaiana) => [
+      q(6066),
+      q(0),
+      ],
+   q(sikaritai) => [
+      q(6727),
+      q(0),
+      ],
+   q(sikiana) => [
+      q(6014),
+      q(0),
+      ],
+   q(sikkimese) => [
+      q(6017),
+      q(0),
+      ],
+   q(siksika) => [
+      q(0057),
+      q(0),
+      ],
+   q(sikule) => [
+      q(6050),
+      q(0),
+      ],
+   q(sila) => [
+      q(6082),
+      q(0),
+      ],
+   q(silacayoapan mixtec) => [
+      q(4336),
+      q(0),
+      ],
+   q(sileibi) => [
+      q(5889),
+      q(0),
+      ],
+   q(silesian) => [
+      q(6321),
+      q(0),
+      ],
+   q(silimo) => [
+      q(7209),
+      q(0),
+      ],
+   q(siliput) => [
+      q(4322),
+      q(0),
+      ],
+   q(silopi) => [
+      q(7433),
+      q(0),
+      ],
+   q(silt'e) => [
+      q(6245),
+      q(0),
+      ],
+   q(simaa) => [
+      q(6008),
+      q(0),
+      ],
+   q(simba) => [
+      q(5895),
+      q(0),
+      ],
+   q(simbali) => [
+      q(6092),
+      q(0),
+      ],
+   q(simbari) => [
+      q(6088),
+      q(0),
+      ],
+   q(simbo) => [
+      q(5874),
+      q(0),
+      ],
+   q(simeku) => [
+      q(6106),
+      q(0),
+      ],
+   q(simeulue) => [
+      q(6099),
+      q(0),
+      ],
+   q(simte) => [
+      q(6100),
+      q(0),
+      ],
+   q(sinagen) => [
+      q(6021),
+      q(0),
+      ],
+   q(sinasina) => [
+      q(6219),
+      q(0),
+      ],
+   q(sinaugoro) => [
+      q(6108),
+      q(0),
+      ],
+   q(sindarin) => [
+      q(6035),
+      q(0),
+      ],
+   q(sindhi) => [
+      q(0395),
+      q(0),
+      ],
+   q(sindhi bhil) => [
+      q(5886),
+      q(0),
+      ],
+   q(sindihui mixtec) => [
+      q(7455),
+      q(0),
+      ],
+   q(singa) => [
+      q(5971),
+      q(0),
+      ],
+   q(singapore sign language) => [
+      q(6081),
+      q(0),
+      ],
+   q(singpho) => [
+      q(5973),
+      q(0),
+      ],
+   q(sinhala) => [
+      q(0381),
+      q(0),
+      ],
+   q(sinhalese) => [
+      q(0381),
+      q(0),
+      ],
+   q(sinicahua mixtec) => [
+      q(7446),
+      q(0),
+      ],
+   q(sinicized miao) => [
+      q(2784),
+      q(0),
+      ],
+   q(sininkere) => [
+      q(6058),
+      q(0),
+      ],
+   q(sino-tibetan languages) => [
+      q(0383),
+      q(0),
+      ],
+   q(sinsauru) => [
+      q(6128),
+      q(0),
+      ],
+   q(sinte romani) => [
+      q(5791),
+      q(0),
+      ],
+   q(sinyar) => [
+      q(6312),
+      q(0),
+      ],
+   q(sio) => [
+      q(7427),
+      q(0),
+      ],
+   q(siona) => [
+      q(6117),
+      q(0),
+      ],
+   q(siouan languages) => [
+      q(0382),
+      q(0),
+      ],
+   q(sipacapense) => [
+      q(5663),
+      q(0),
+      ],
+   q(sira) => [
+      q(6275),
+      q(0),
+      ],
+   q(siraya) => [
+      q(2359),
+      q(0),
+      ],
+   q(sirenik yupik) => [
+      q(7671),
+      q(0),
+      ],
+   q(siri) => [
+      q(6019),
+      q(0),
+      ],
+   q(siriano) => [
+      q(6187),
+      q(0),
+      ],
+   q(siriono) => [
+      q(6192),
+      q(0),
+      ],
+   q(sirmauri) => [
+      q(6198),
+      q(0),
+      ],
+   q(siroi) => [
+      q(6203),
+      q(0),
+      ],
+   q(sissala) => [
+      q(6068),
+      q(0),
+      ],
+   q(sissano) => [
+      q(6214),
+      q(0),
+      ],
+   q(siuslaw) => [
+      q(6020),
+      q(0),
+      ],
+   q(sivandi) => [
+      q(6025),
+      q(0),
+      ],
+   q(siwai) => [
+      q(6023),
+      q(0),
+      ],
+   q(siwi) => [
+      q(6026),
+      q(0),
+      ],
+   q(siwu) => [
+      q(0736),
+      q(0),
+      ],
+   q(siyin chin) => [
+      q(1884),
+      q(0),
+      ],
+   q(skagit) => [
+      q(6043),
+      q(0),
+      ],
+   q(skalvian) => [
+      q(6268),
+      q(0),
+      ],
+   q(skepi creole dutch) => [
+      q(6064),
+      q(0),
+      ],
+   q(skolt sami) => [
+      q(0393),
+      q(0),
+      ],
+   q(skou) => [
+      q(6063),
+      q(0),
+      ],
+   q(slave (athapascan)) => [
+      q(0107),
+      q(0),
+      ],
+   q(slavic languages) => [
+      q(0384),
+      q(0),
+      ],
+   q(slovak) => [
+      q(0385),
+      q(0),
+      ],
+   q(slovakian sign language) => [
+      q(6265),
+      q(0),
+      ],
+   q(slovenian) => [
+      q(0386),
+      q(0),
+      ],
+   q(small flowery miao) => [
+      q(5959),
+      q(0),
+      ],
+   q(smarky kanum) => [
+      q(3712),
+      q(0),
+      ],
+   q(snohomish) => [
+      q(6118),
+      q(0),
+      ],
+   q(so) => [
+      q(6218),
+      q(0),
+      ],
+   q(so (democratic republic of congo)) => [
+      q(6131),
+      q(0),
+      ],
+   q(so'a) => [
+      q(6216),
+      q(0),
+      ],
+   q(sobei) => [
+      q(6130),
+      q(0),
+      ],
+   q(sochiapam chinantec) => [
+      q(1877),
+      q(0),
+      ],
+   q(sochiapan chinantec) => [
+      q(1877),
+      q(0),
+      ],
+   q(soga) => [
+      q(7385),
+      q(0),
+      ],
+   q(sogdian) => [
+      q(0397),
+      q(0),
+      ],
+   q(soi) => [
+      q(6136),
+      q(0),
+      ],
+   q(sok) => [
+      q(6053),
+      q(0),
+      ],
+   q(sokoro) => [
+      q(6137),
+      q(0),
+      ],
+   q(solano) => [
+      q(7432),
+      q(0),
+      ],
+   q(soli) => [
+      q(5897),
+      q(0),
+      ],
+   q(solong) => [
+      q(0557),
+      q(0),
+      ],
+   q(solos) => [
+      q(6138),
+      q(0),
+      ],
+   q(som) => [
+      q(6089),
+      q(0),
+      ],
+   q(somali) => [
+      q(0398),
+      q(0),
+      ],
+   q(somba-siawari) => [
+      q(1323),
+      q(0),
+      ],
+   q(somrai) => [
+      q(6142),
+      q(0),
+      ],
+   q(somray) => [
+      q(6101),
+      q(0),
+      ],
+   q(somyev) => [
+      q(3305),
+      q(0),
+      ],
+   q(sonaga) => [
+      q(7666),
+      q(0),
+      ],
+   q(sonde) => [
+      q(5984),
+      q(0),
+      ],
+   q(songa) => [
+      q(5972),
+      q(0),
+      ],
+   q(songe) => [
+      q(6140),
+      q(0),
+      ],
+   q(songhai languages) => [
+      q(0399),
+      q(0),
+      ],
+   q(songo) => [
+      q(6139),
+      q(0),
+      ],
+   q(songomeno) => [
+      q(6133),
+      q(0),
+      ],
+   q(songoora) => [
+      q(6132),
+      q(0),
+      ],
+   q(sonha) => [
+      q(6135),
+      q(0),
+      ],
+   q(sonia) => [
+      q(6018),
+      q(0),
+      ],
+   q(soninke) => [
+      q(0396),
+      q(0),
+      ],
+   q(sonsorol) => [
+      q(6145),
+      q(0),
+      ],
+   q(soo) => [
+      q(6433),
+      q(0),
+      ],
+   q(sop) => [
+      q(6909),
+      q(0),
+      ],
+   q(soqotri) => [
+      q(6178),
+      q(0),
+      ],
+   q(sora) => [
+      q(6181),
+      q(0),
+      ],
+   q(sorbian languages) => [
+      q(0467),
+      q(0),
+      ],
+   q(sori-harengan) => [
+      q(5880),
+      q(0),
+      ],
+   q(sorkhei) => [
+      q(6174),
+      q(0),
+      ],
+   q(sorothaptic) => [
+      q(6299),
+      q(0),
+      ],
+   q(sorsogon ayta) => [
+      q(1008),
+      q(0),
+      ],
+   q(sos kundi) => [
+      q(5922),
+      q(0),
+      ],
+   q(sota kanum) => [
+      q(3571),
+      q(0),
+      ],
+   q(sotho, southern) => [
+      q(0400),
+      q(0),
+      ],
+   q(sou) => [
+      q(6175),
+      q(0),
+      ],
+   q(south african sign language) => [
+      q(5960),
+      q(0),
+      ],
+   q(south american indian (other)) => [
+      q(0367),
+      q(0),
+      ],
+   q(south american indian languages) => [
+      q(0367),
+      q(1),
+      ],
+   q(south awyu) => [
+      q(0980),
+      q(0),
+      ],
+   q(south azerbaijani) => [
+      q(1014),
+      q(0),
+      ],
+   q(south bolivian quechua) => [
+      q(5659),
+      q(0),
+      ],
+   q(south caucasian languages) => [
+      q(0496),
+      q(0),
+      ],
+   q(south central banda) => [
+      q(3982),
+      q(0),
+      ],
+   q(south central dinka) => [
+      q(2034),
+      q(0),
+      ],
+   q(south efate) => [
+      q(2278),
+      q(0),
+      ],
+   q(south fali) => [
+      q(2322),
+      q(0),
+      ],
+   q(south giziga) => [
+      q(2520),
+      q(0),
+      ],
+   q(south lembata) => [
+      q(3956),
+      q(0),
+      ],
+   q(south levantine arabic) => [
+      q(0719),
+      q(0),
+      ],
+   q(south marquesan) => [
+      q(4470),
+      q(0),
+      ],
+   q(south muyu) => [
+      q(3616),
+      q(0),
+      ],
+   q(south ndebele) => [
+      q(0303),
+      q(0),
+      ],
+   q(south nuaulu) => [
+      q(5125),
+      q(0),
+      ],
+   q(south picene) => [
+      q(6167),
+      q(0),
+      ],
+   q(south slavey) => [
+      q(7429),
+      q(0),
+      ],
+   q(south slavic languages) => [
+      q(0535),
+      q(0),
+      ],
+   q(south tairora) => [
+      q(5239),
+      q(0),
+      ],
+   q(south ucayali asheninka) => [
+      q(1840),
+      q(0),
+      ],
+   q(south watut) => [
+      q(4151),
+      q(0),
+      ],
+   q(south west bay) => [
+      q(6122),
+      q(0),
+      ],
+   q(southeast ambrym) => [
+      q(6752),
+      q(0),
+      ],
+   q(southeast babar) => [
+      q(6951),
+      q(0),
+      ],
+   q(southeast ijo) => [
+      q(2919),
+      q(0),
+      ],
+   q(southeast pashayi) => [
+      q(5590),
+      q(0),
+      ],
+   q(southeastern dinka) => [
+      q(2075),
+      q(0),
+      ],
+   q(southeastern ixtlan zapotec) => [
+      q(7828),
+      q(0),
+      ],
+   q(southeastern kolami) => [
+      q(4881),
+      q(0),
+      ],
+   q(southeastern nochixtlan mixtec) => [
+      q(4651),
+      q(0),
+      ],
+   q(southeastern pomo) => [
+      q(5536),
+      q(0),
+      ],
+   q(southeastern puebla nahuatl) => [
+      q(5018),
+      q(0),
+      ],
+   q(southeastern tarahumara) => [
+      q(6391),
+      q(0),
+      ],
+   q(southeastern tepehuan) => [
+      q(6239),
+      q(0),
+      ],
+   q(southern alta) => [
+      q(0677),
+      q(0),
+      ],
+   q(southern altai) => [
+      q(0016),
+      q(0),
+      ],
+   q(southern amami-oshima) => [
+      q(0784),
+      q(0),
+      ],
+   q(southern aymara) => [
+      q(0995),
+      q(0),
+      ],
+   q(southern bai) => [
+      q(1155),
+      q(0),
+      ],
+   q(southern balochi) => [
+      q(1067),
+      q(0),
+      ],
+   q(southern betsimisaraka malagasy) => [
+      q(1617),
+      q(0),
+      ],
+   q(southern binukidnon) => [
+      q(4555),
+      q(0),
+      ],
+   q(southern birifor) => [
+      q(1227),
+      q(0),
+      ],
+   q(southern bobo madare) => [
+      q(1558),
+      q(0),
+      ],
+   q(southern bontok) => [
+      q(5166),
+      q(0),
+      ],
+   q(southern carrier) => [
+      q(1645),
+      q(0),
+      ],
+   q(southern catanduanes bikol) => [
+      q(1291),
+      q(0),
+      ],
+   q(southern conchucos ancash quechua) => [
+      q(5700),
+      q(0),
+      ],
+   q(southern dagaare) => [
+      q(2003),
+      q(0),
+      ],
+   q(southern dong) => [
+      q(3433),
+      q(0),
+      ],
+   q(southern east cree) => [
+      q(1850),
+      q(0),
+      ],
+   q(southern ghale) => [
+      q(2495),
+      q(0),
+      ],
+   q(southern gondi) => [
+      q(2488),
+      q(0),
+      ],
+   q(southern grebo) => [
+      q(2604),
+      q(0),
+      ],
+   q(southern guiyang hmong) => [
+      q(2783),
+      q(0),
+      ],
+   q(southern guiyang miao) => [
+      q(2783),
+      q(0),
+      ],
+   q(southern haida) => [
+      q(2714),
+      q(0),
+      ],
+   q(southern hindko) => [
+      q(2786),
+      q(0),
+      ],
+   q(southern kalapuya) => [
+      q(6295),
+      q(0),
+      ],
+   q(southern kalinga) => [
+      q(3574),
+      q(0),
+      ],
+   q(southern kisi) => [
+      q(3590),
+      q(0),
+      ],
+   q(southern kiwai) => [
+      q(3359),
+      q(0),
+      ],
+   q(southern kurdish) => [
+      q(5920),
+      q(0),
+      ],
+   q(southern lolopo) => [
+      q(7670),
+      q(0),
+      ],
+   q(southern luri) => [
+      q(4068),
+      q(0),
+      ],
+   q(southern ma'di) => [
+      q(6116),
+      q(0),
+      ],
+   q(southern mashan hmong) => [
+      q(2762),
+      q(0),
+      ],
+   q(southern mashan miao) => [
+      q(2762),
+      q(0),
+      ],
+   q(southern mnong) => [
+      q(4403),
+      q(0),
+      ],
+   q(southern muji) => [
+      q(7605),
+      q(0),
+      ],
+   q(southern nago) => [
+      q(5024),
+      q(0),
+      ],
+   q(southern nambikuara) => [
+      q(4701),
+      q(0),
+      ],
+   q(southern ngbandi) => [
+      q(4741),
+      q(0),
+      ],
+   q(southern nicobarese) => [
+      q(4873),
+      q(0),
+      ],
+   q(southern nisu) => [
+      q(5046),
+      q(0),
+      ],
+   q(southern nuni) => [
+      q(4990),
+      q(0),
+      ],
+   q(southern ohlone) => [
+      q(1880),
+      q(0),
+      ],
+   q(southern one) => [
+      q(5289),
+      q(0),
+      ],
+   q(southern pame) => [
+      q(5505),
+      q(0),
+      ],
+   q(southern pashto) => [
+      q(5352),
+      q(0),
+      ],
+   q(southern pastaza quechua) => [
+      q(5665),
+      q(0),
+      ],
+   q(southern pomo) => [
+      q(5393),
+      q(0),
+      ],
+   q(southern puebla mixtec) => [
+      q(4291),
+      q(0),
+      ],
+   q(southern puget sound salish) => [
+      q(6072),
+      q(0),
+      ],
+   q(southern pumi) => [
+      q(5491),
+      q(0),
+      ],
+   q(southern qiandong miao) => [
+      q(2778),
+      q(0),
+      ],
+   q(southern qiang) => [
+      q(5704),
+      q(0),
+      ],
+   q(southern rengma naga) => [
+      q(5032),
+      q(0),
+      ],
+   q(southern rincon zapotec) => [
+      q(7862),
+      q(0),
+      ],
+   q(southern roglai) => [
+      q(5756),
+      q(0),
+      ],
+   q(southern sama) => [
+      q(6201),
+      q(0),
+      ],
+   q(southern sami) => [
+      q(0387),
+      q(0),
+      ],
+   q(southern samo) => [
+      q(5876),
+      q(0),
+      ],
+   q(southern sierra miwok) => [
+      q(6046),
+      q(0),
+      ],
+   q(southern sorsoganon) => [
+      q(6196),
+      q(0),
+      ],
+   q(southern sotho) => [
+      q(0400),
+      q(1),
+      ],
+   q(southern subanen) => [
+      q(3773),
+      q(0),
+      ],
+   q(southern thai) => [
+      q(6144),
+      q(0),
+      ],
+   q(southern tiwa) => [
+      q(6505),
+      q(0),
+      ],
+   q(southern toussian) => [
+      q(7089),
+      q(0),
+      ],
+   q(southern tujia) => [
+      q(6515),
+      q(0),
+      ],
+   q(southern tutchone) => [
+      q(6377),
+      q(0),
+      ],
+   q(southern uzbek) => [
+      q(6934),
+      q(0),
+      ],
+   q(southern yamphu) => [
+      q(4027),
+      q(0),
+      ],
+   q(southern yukaghir) => [
+      q(7697),
+      q(0),
+      ],
+   q(southwest gbaya) => [
+      q(2622),
+      q(0),
+      ],
+   q(southwest palawano) => [
+      q(5479),
+      q(0),
+      ],
+   q(southwest pashayi) => [
+      q(5589),
+      q(0),
+      ],
+   q(southwest tanna) => [
+      q(5113),
+      q(0),
+      ],
+   q(southwestern bontok) => [
+      q(6952),
+      q(0),
+      ],
+   q(southwestern dinka) => [
+      q(2042),
+      q(0),
+      ],
+   q(southwestern fars) => [
+      q(2328),
+      q(0),
+      ],
+   q(southwestern guiyang hmong) => [
+      q(2768),
+      q(0),
+      ],
+   q(southwestern huishui hmong) => [
+      q(2769),
+      q(0),
+      ],
+   q(southwestern huishui miao) => [
+      q(2769),
+      q(0),
+      ],
+   q(southwestern nisu) => [
+      q(5062),
+      q(0),
+      ],
+   q(southwestern tamang) => [
+      q(6686),
+      q(0),
+      ],
+   q(southwestern tarahumara) => [
+      q(6775),
+      q(0),
+      ],
+   q(southwestern tepehuan) => [
+      q(6534),
+      q(0),
+      ],
+   q(southwestern tlaxiaco mixtec) => [
+      q(4183),
+      q(0),
+      ],
+   q(sowa) => [
+      q(6288),
+      q(0),
+      ],
+   q(sowanda) => [
+      q(6146),
+      q(0),
+      ],
+   q(sowari) => [
+      q(2095),
+      q(0),
+      ],
+   q(soyaltepec mazatec) => [
+      q(6996),
+      q(0),
+      ],
+   q(soyaltepec mixtec) => [
+      q(6997),
+      q(0),
+      ],
+   q(spanish) => [
+      q(0401),
+      q(0),
+      ],
+   q(spanish sign language) => [
+      q(6215),
+      q(0),
+      ],
+   q(spiti bhoti) => [
+      q(6164),
+      q(0),
+      ],
+   q(spokane) => [
+      q(6159),
+      q(0),
+      ],
+   q(squamish) => [
+      q(6179),
+      q(0),
+      ],
+   q(sranan tongo) => [
+      q(0403),
+      q(0),
+      ],
+   q(sri lankan creole malay) => [
+      q(5904),
+      q(0),
+      ],
+   q(sri lankan sign language) => [
+      q(6177),
+      q(0),
+      ],
+   q(standard arabic) => [
+      q(0869),
+      q(0),
+      ],
+   q(standard estonian) => [
+      q(2230),
+      q(0),
+      ],
+   q(standard latvian) => [
+      q(4071),
+      q(0),
+      ],
+   q(standard malay) => [
+      q(7861),
+      q(0),
+      ],
+   q(standard moroccan tamazight) => [
+      q(0480),
+      q(0),
+      ],
+   q(stellingwerfs) => [
+      q(6235),
+      q(0),
+      ],
+   q(stod bhoti) => [
+      q(5893),
+      q(0),
+      ],
+   q(stodsde) => [
+      q(3076),
+      q(0),
+      ],
+   q(stoney) => [
+      q(6238),
+      q(0),
+      ],
+   q(straits salish) => [
+      q(6241),
+      q(0),
+      ],
+   q(suabo) => [
+      q(6323),
+      q(0),
+      ],
+   q(suarmin) => [
+      q(5946),
+      q(0),
+      ],
+   q(suau) => [
+      q(6281),
+      q(0),
+      ],
+   q(suba) => [
+      q(6291),
+      q(0),
+      ],
+   q(suba-simbiti) => [
+      q(6202),
+      q(0),
+      ],
+   q(subi) => [
+      q(7428),
+      q(0),
+      ],
+   q(subiya) => [
+      q(5891),
+      q(0),
+      ],
+   q(subtiaba) => [
+      q(6256),
+      q(0),
+      ],
+   q(sudanese arabic) => [
+      q(0838),
+      q(0),
+      ],
+   q(sudanese creole arabic) => [
+      q(5402),
+      q(0),
+      ],
+   q(sudest) => [
+      q(6454),
+      q(0),
+      ],
+   q(sudovian) => [
+      q(7438),
+      q(0),
+      ],
+   q(suena) => [
+      q(6250),
+      q(0),
+      ],
+   q(suga) => [
+      q(5968),
+      q(0),
+      ],
+   q(suganga) => [
+      q(6251),
+      q(0),
+      ],
+   q(sugut dusun) => [
+      q(3765),
+      q(0),
+      ],
+   q(sui) => [
+      q(6274),
+      q(0),
+      ],
+   q(suki) => [
+      q(6252),
+      q(0),
+      ],
+   q(suku) => [
+      q(6248),
+      q(0),
+      ],
+   q(sukuma) => [
+      q(0408),
+      q(0),
+      ],
+   q(sukur) => [
+      q(6307),
+      q(0),
+      ],
+   q(sukurum) => [
+      q(7863),
+      q(0),
+      ],
+   q(sula) => [
+      q(6322),
+      q(0),
+      ],
+   q(sulka) => [
+      q(6247),
+      q(0),
+      ],
+   q(sulod) => [
+      q(6185),
+      q(0),
+      ],
+   q(suma) => [
+      q(6172),
+      q(0),
+      ],
+   q(sumariup) => [
+      q(6022),
+      q(0),
+      ],
+   q(sumau) => [
+      q(6024),
+      q(0),
+      ],
+   q(sumbawa) => [
+      q(6103),
+      q(0),
+      ],
+   q(sumbwa) => [
+      q(6258),
+      q(0),
+      ],
+   q(sumerian) => [
+      q(0411),
+      q(0),
+      ],
+   q(sumi naga) => [
+      q(5054),
+      q(0),
+      ],
+   q(sumtu chin) => [
+      q(1882),
+      q(0),
+      ],
+   q(sunam) => [
+      q(6210),
+      q(0),
+      ],
+   q(sundanese) => [
+      q(0409),
+      q(0),
+      ],
+   q(sunum) => [
+      q(7614),
+      q(0),
+      ],
+   q(sunwar) => [
+      q(6260),
+      q(0),
+      ],
+   q(suomenruotsalainen viittomakieli) => [
+      q(2370),
+      q(0),
+      ],
+   q(suoy) => [
+      q(6311),
+      q(0),
+      ],
+   q(supyire senoufo) => [
+      q(6160),
+      q(0),
+      ],
+   q(sur) => [
+      q(6407),
+      q(0),
+      ],
+   q(surayt) => [
+      q(6675),
+      q(0),
+      ],
+   q(surbakhal) => [
+      q(5882),
+      q(0),
+      ],
+   q(surgujia) => [
+      q(5969),
+      q(0),
+      ],
+   q(suri) => [
+      q(6254),
+      q(0),
+      ],
+   q(surigaonon) => [
+      q(5964),
+      q(0),
+      ],
+   q(surjapuri) => [
+      q(6037),
+      q(0),
+      ],
+   q(sursurunga) => [
+      q(5981),
+      q(0),
+      ],
+   q(suruaha) => [
+      q(6289),
+      q(0),
+      ],
+   q(surubu) => [
+      q(5917),
+      q(0),
+      ],
+   q(surui) => [
+      q(6195),
+      q(0),
+      ],
+   q(surui do para) => [
+      q(4175),
+      q(0),
+      ],
+   q(susquehannock) => [
+      q(6173),
+      q(0),
+      ],
+   q(susu) => [
+      q(0410),
+      q(0),
+      ],
+   q(susuami) => [
+      q(6220),
+      q(0),
+      ],
+   q(suundi) => [
+      q(5921),
+      q(0),
+      ],
+   q(suwawa) => [
+      q(6286),
+      q(0),
+      ],
+   q(suya) => [
+      q(6259),
+      q(0),
+      ],
+   q(svan) => [
+      q(6261),
+      q(0),
+      ],
+   q(swabian) => [
+      q(6272),
+      q(0),
+      ],
+   q(swahili) => [
+      q(0412),
+      q(0),
+      ],
+   q(swahili (individual language)) => [
+      q(6273),
+      q(0),
+      ],
+   q(swahili (macrolanguage)) => [
+      q(0412),
+      q(1),
+      ],
+   q(swampy cree) => [
+      q(1883),
+      q(0),
+      ],
+   q(swati) => [
+      q(0407),
+      q(0),
+      ],
+   q(swedish) => [
+      q(0413),
+      q(0),
+      ],
+   q(swedish sign language) => [
+      q(6277),
+      q(0),
+      ],
+   q(swiss german) => [
+      q(0166),
+      q(0),
+      ],
+   q(swiss-french sign language) => [
+      q(6217),
+      q(0),
+      ],
+   q(swiss-german sign language) => [
+      q(5966),
+      q(0),
+      ],
+   q(swiss-italian sign language) => [
+      q(6070),
+      q(0),
+      ],
+   q(swo) => [
+      q(6147),
+      q(0),
+      ],
+   q(syenara senoufo) => [
+      q(6005),
+      q(0),
+      ],
+   q(sylheti) => [
+      q(6308),
+      q(0),
+      ],
+   q(syriac) => [
+      q(0415),
+      q(0),
+      ],
+   q(t'en) => [
+      q(6390),
+      q(0),
+      ],
+   q(ta'izzi-adeni arabic) => [
+      q(0595),
+      q(0),
+      ],
+   q(taabwa) => [
+      q(6338),
+      q(0),
+      ],
+   q(tabaa zapotec) => [
+      q(7733),
+      q(0),
+      ],
+   q(tabaru) => [
+      q(6371),
+      q(0),
+      ],
+   q(tabasco chontal) => [
+      q(1722),
+      q(0),
+      ],
+   q(tabasco nahuatl) => [
+      q(4844),
+      q(0),
+      ],
+   q(tabasco zoque) => [
+      q(7822),
+      q(0),
+      ],
+   q(tabassaran) => [
+      q(6327),
+      q(0),
+      ],
+   q(tabla) => [
+      q(6589),
+      q(0),
+      ],
+   q(tabo) => [
+      q(3477),
+      q(0),
+      ],
+   q(tabriak) => [
+      q(6818),
+      q(0),
+      ],
+   q(tacahua mixtec) => [
+      q(7456),
+      q(0),
+      ],
+   q(tacana) => [
+      q(6579),
+      q(0),
+      ],
+   q(tachawit) => [
+      q(6004),
+      q(0),
+      ],
+   q(tachelhit) => [
+      q(5989),
+      q(0),
+      ],
+   q(tachoni) => [
+      q(4050),
+      q(0),
+      ],
+   q(tadaksahak) => [
+      q(2151),
+      q(0),
+      ],
+   q(tadyawan) => [
+      q(6417),
+      q(0),
+      ],
+   q(tae') => [
+      q(5810),
+      q(0),
+      ],
+   q(tafi) => [
+      q(6376),
+      q(0),
+      ],
+   q(tagabawa) => [
+      q(1179),
+      q(0),
+      ],
+   q(tagakaulo) => [
+      q(3412),
+      q(0),
+      ],
+   q(tagal murut) => [
+      q(4598),
+      q(0),
+      ],
+   q(tagalaka) => [
+      q(6465),
+      q(0),
+      ],
+   q(tagalog) => [
+      q(0425),
+      q(0),
+      ],
+   q(tagargrent) => [
+      q(5308),
+      q(0),
+      ],
+   q(tagbanwa) => [
+      q(6369),
+      q(0),
+      ],
+   q(tagbu) => [
+      q(6360),
+      q(0),
+      ],
+   q(tagdal) => [
+      q(6396),
+      q(0),
+      ],
+   q(tagin) => [
+      q(6452),
+      q(0),
+      ],
+   q(tagish) => [
+      q(6463),
+      q(0),
+      ],
+   q(tagoi) => [
+      q(6332),
+      q(0),
+      ],
+   q(tagwana senoufo) => [
+      q(6462),
+      q(0),
+      ],
+   q(tahaggart tamahaq) => [
+      q(6482),
+      q(0),
+      ],
+   q(tahitian) => [
+      q(0416),
+      q(0),
+      ],
+   q(tahltan) => [
+      q(6480),
+      q(0),
+      ],
+   q(tai) => [
+      q(6344),
+      q(0),
+      ],
+   q(tai daeng) => [
+      q(6806),
+      q(0),
+      ],
+   q(tai dam) => [
+      q(1297),
+      q(0),
+      ],
+   q(tai do) => [
+      q(6802),
+      q(0),
+      ],
+   q(tai don) => [
+      q(6768),
+      q(0),
+      ],
+   q(tai hang tong) => [
+      q(6466),
+      q(0),
+      ],
+   q(tai hongjin) => [
+      q(6507),
+      q(0),
+      ],
+   q(tai laing) => [
+      q(6511),
+      q(0),
+      ],
+   q(tai languages) => [
+      q(0417),
+      q(0),
+      ],
+   q(tai loi) => [
+      q(6547),
+      q(0),
+      ],
+   q(tai long) => [
+      q(6471),
+      q(0),
+      ],
+   q(tai mene) => [
+      q(6569),
+      q(0),
+      ],
+   q(tai nua) => [
+      q(6399),
+      q(0),
+      ],
+   q(tai pao) => [
+      q(6634),
+      q(0),
+      ],
+   q(tai thanh) => [
+      q(6566),
+      q(0),
+      ],
+   q(tai ya) => [
+      q(1916),
+      q(0),
+      ],
+   q(taiap) => [
+      q(2593),
+      q(0),
+      ],
+   q(taikat) => [
+      q(0831),
+      q(0),
+      ],
+   q(tainae) => [
+      q(0668),
+      q(0),
+      ],
+   q(taino) => [
+      q(6593),
+      q(0),
+      ],
+   q(tairuma) => [
+      q(6821),
+      q(0),
+      ],
+   q(taita) => [
+      q(1951),
+      q(0),
+      ],
+   q(taiwan sign language) => [
+      q(6696),
+      q(0),
+      ],
+   q(taje) => [
+      q(5383),
+      q(0),
+      ],
+   q(tajik) => [
+      q(0424),
+      q(0),
+      ],
+   q(tajiki arabic) => [
+      q(0567),
+      q(0),
+      ],
+   q(tajio) => [
+      q(6405),
+      q(0),
+      ],
+   q(tajuasohn) => [
+      q(6508),
+      q(0),
+      ],
+   q(takelma) => [
+      q(6523),
+      q(0),
+      ],
+   q(takestani) => [
+      q(6528),
+      q(0),
+      ],
+   q(takia) => [
+      q(6350),
+      q(0),
+      ],
+   q(takua) => [
+      q(6533),
+      q(0),
+      ],
+   q(takuu) => [
+      q(4854),
+      q(0),
+      ],
+   q(takwane) => [
+      q(6520),
+      q(0),
+      ],
+   q(tal) => [
+      q(6335),
+      q(0),
+      ],
+   q(tala) => [
+      q(6334),
+      q(0),
+      ],
+   q(talaandig) => [
+      q(1257),
+      q(0),
+      ],
+   q(talaud) => [
+      q(6537),
+      q(0),
+      ],
+   q(taliabu) => [
+      q(6552),
+      q(0),
+      ],
+   q(talieng) => [
+      q(6401),
+      q(0),
+      ],
+   q(talinga-bwisi) => [
+      q(6540),
+      q(0),
+      ],
+   q(talise) => [
+      q(6548),
+      q(0),
+      ],
+   q(talodi) => [
+      q(6545),
+      q(0),
+      ],
+   q(taloki) => [
+      q(6541),
+      q(0),
+      ],
+   q(talondo') => [
+      q(6544),
+      q(0),
+      ],
+   q(talu) => [
+      q(7674),
+      q(0),
+      ],
+   q(talur) => [
+      q(2940),
+      q(0),
+      ],
+   q(talysh) => [
+      q(6554),
+      q(0),
+      ],
+   q(tama (chad)) => [
+      q(6555),
+      q(0),
+      ],
+   q(tama (colombia)) => [
+      q(6428),
+      q(0),
+      ],
+   q(tamagario) => [
+      q(6379),
+      q(0),
+      ],
+   q(taman (indonesia)) => [
+      q(6567),
+      q(0),
+      ],
+   q(taman (myanmar)) => [
+      q(6383),
+      q(0),
+      ],
+   q(tamanaku) => [
+      q(6578),
+      q(0),
+      ],
+   q(tamashek) => [
+      q(0434),
+      q(0),
+      ],
+   q(tamasheq) => [
+      q(6339),
+      q(0),
+      ],
+   q(tamazola mixtec) => [
+      q(7003),
+      q(0),
+      ],
+   q(tambas) => [
+      q(6406),
+      q(0),
+      ],
+   q(tambora) => [
+      q(7488),
+      q(0),
+      ],
+   q(tambotalo) => [
+      q(6549),
+      q(0),
+      ],
+   q(tambunan dusun) => [
+      q(3766),
+      q(0),
+      ],
+   q(tami) => [
+      q(6577),
+      q(0),
+      ],
+   q(tamil) => [
+      q(0418),
+      q(0),
+      ],
+   q(tamki) => [
+      q(6345),
+      q(0),
+      ],
+   q(tamnim citak) => [
+      q(6565),
+      q(0),
+      ],
+   q(tampias lobu) => [
+      q(4009),
+      q(0),
+      ],
+   q(tampuan) => [
+      q(6639),
+      q(0),
+      ],
+   q(tampulma) => [
+      q(6632),
+      q(0),
+      ],
+   q(tanacross) => [
+      q(6374),
+      q(0),
+      ],
+   q(tanahmerah) => [
+      q(6384),
+      q(0),
+      ],
+   q(tanaina) => [
+      q(6439),
+      q(0),
+      ],
+   q(tanapag) => [
+      q(6640),
+      q(0),
+      ],
+   q(tandaganon) => [
+      q(6453),
+      q(0),
+      ],
+   q(tandia) => [
+      q(6586),
+      q(0),
+      ],
+   q(tandroy-mahafaly malagasy) => [
+      q(6416),
+      q(0),
+      ],
+   q(tanema) => [
+      q(6600),
+      q(0),
+      ],
+   q(tangale) => [
+      q(6336),
+      q(0),
+      ],
+   q(tangchangya) => [
+      q(6598),
+      q(0),
+      ],
+   q(tangga) => [
+      q(6449),
+      q(0),
+      ],
+   q(tanggu) => [
+      q(6460),
+      q(0),
+      ],
+   q(tangkhul naga (india)) => [
+      q(4948),
+      q(0),
+      ],
+   q(tangkhul naga (myanmar)) => [
+      q(5078),
+      q(0),
+      ],
+   q(tangko) => [
+      q(6532),
+      q(0),
+      ],
+   q(tanglang) => [
+      q(7675),
+      q(0),
+      ],
+   q(tangoa) => [
+      q(6455),
+      q(0),
+      ],
+   q(tanguat) => [
+      q(6365),
+      q(0),
+      ],
+   q(tangut) => [
+      q(6785),
+      q(0),
+      ],
+   q(tanimbili) => [
+      q(6352),
+      q(0),
+      ],
+   q(tanimuca-retuara) => [
+      q(6581),
+      q(0),
+      ],
+   q(tanjijili) => [
+      q(6846),
+      q(0),
+      ],
+   q(tankarana malagasy) => [
+      q(7368),
+      q(0),
+      ],
+   q(tanosy malagasy) => [
+      q(6797),
+      q(0),
+      ],
+   q(tanudan kalinga) => [
+      q(3442),
+      q(0),
+      ],
+   q(tanzanian sign language) => [
+      q(6812),
+      q(0),
+      ],
+   q(tapeba) => [
+      q(6349),
+      q(0),
+      ],
+   q(tapei) => [
+      q(0649),
+      q(0),
+      ],
+   q(tapiete) => [
+      q(6629),
+      q(0),
+      ],
+   q(tapirape) => [
+      q(6331),
+      q(0),
+      ],
+   q(tarao naga) => [
+      q(6669),
+      q(0),
+      ],
+   q(tareng) => [
+      q(6457),
+      q(0),
+      ],
+   q(tariana) => [
+      q(6330),
+      q(0),
+      ],
+   q(tarifit) => [
+      q(5762),
+      q(0),
+      ],
+   q(tarok) => [
+      q(7546),
+      q(0),
+      ],
+   q(taroko) => [
+      q(6676),
+      q(0),
+      ],
+   q(tarpia) => [
+      q(6627),
+      q(0),
+      ],
+   q(tartessian) => [
+      q(6792),
+      q(0),
+      ],
+   q(tasawaq) => [
+      q(6774),
+      q(0),
+      ],
+   q(tase naga) => [
+      q(5060),
+      q(0),
+      ],
+   q(tasmanian) => [
+      q(7460),
+      q(0),
+      ],
+   q(tasmate) => [
+      q(6573),
+      q(0),
+      ],
+   q(tataltepec chatino) => [
+      q(1886),
+      q(0),
+      ],
+   q(tatana) => [
+      q(6796),
+      q(0),
+      ],
+   q(tatar) => [
+      q(0419),
+      q(0),
+      ],
+   q(tatuyo) => [
+      q(6343),
+      q(0),
+      ],
+   q(tauade) => [
+      q(6707),
+      q(0),
+      ],
+   q(taulil) => [
+      q(6736),
+      q(0),
+      ],
+   q(taungyo) => [
+      q(6386),
+      q(0),
+      ],
+   q(taupota) => [
+      q(6624),
+      q(0),
+      ],
+   q(tause) => [
+      q(6329),
+      q(0),
+      ],
+   q(taushiro) => [
+      q(6672),
+      q(0),
+      ],
+   q(tausug) => [
+      q(6687),
+      q(0),
+      ],
+   q(tauya) => [
+      q(6798),
+      q(0),
+      ],
+   q(taveta) => [
+      q(6756),
+      q(0),
+      ],
+   q(tavoyan) => [
+      q(6754),
+      q(0),
+      ],
+   q(tavringer romani) => [
+      q(5796),
+      q(0),
+      ],
+   q(tawala) => [
+      q(6362),
+      q(0),
+      ],
+   q(tawallammat tamajaq) => [
+      q(6720),
+      q(0),
+      ],
+   q(tawande) => [
+      q(7458),
+      q(0),
+      ],
+   q(tawang monpa) => [
+      q(6770),
+      q(0),
+      ],
+   q(tawara) => [
+      q(6769),
+      q(0),
+      ],
+   q(taworta) => [
+      q(6363),
+      q(0),
+      ],
+   q(tawoyan) => [
+      q(6780),
+      q(0),
+      ],
+   q(tawr chin) => [
+      q(6387),
+      q(0),
+      ],
+   q(tay) => [
+      q(6811),
+      q(0),
+      ],
+   q(tay boi) => [
+      q(6341),
+      q(0),
+      ],
+   q(tay khang) => [
+      q(6597),
+      q(0),
+      ],
+   q(tay sa pa) => [
+      q(6807),
+      q(0),
+      ],
+   q(tay tac) => [
+      q(6808),
+      q(0),
+      ],
+   q(tayabas ayta) => [
+      q(1011),
+      q(0),
+      ],
+   q(tayart tamajeq) => [
+      q(6486),
+      q(0),
+      ],
+   q(tayo) => [
+      q(1762),
+      q(0),
+      ],
+   q(taznatit) => [
+      q(2608),
+      q(0),
+      ],
+   q(tboli) => [
+      q(6359),
+      q(0),
+      ],
+   q(tchitchege) => [
+      q(6382),
+      q(0),
+      ],
+   q(tchumbuli) => [
+      q(1399),
+      q(0),
+      ],
+   q(te'un) => [
+      q(6751),
+      q(0),
+      ],
+   q(teanu) => [
+      q(6531),
+      q(0),
+      ],
+   q(tebi) => [
+      q(2092),
+      q(0),
+      ],
+   q(tebul sign language) => [
+      q(6702),
+      q(0),
+      ],
+   q(tebul ure dogon) => [
+      q(2164),
+      q(0),
+      ],
+   q(tecpatlan totonac) => [
+      q(6392),
+      q(0),
+      ],
+   q(tedaga) => [
+      q(6742),
+      q(0),
+      ],
+   q(tedim chin) => [
+      q(1888),
+      q(0),
+      ],
+   q(tee) => [
+      q(6526),
+      q(0),
+      ],
+   q(teen) => [
+      q(4004),
+      q(0),
+      ],
+   q(tefaro) => [
+      q(6440),
+      q(0),
+      ],
+   q(tegali) => [
+      q(5724),
+      q(0),
+      ],
+   q(tehit) => [
+      q(3518),
+      q(0),
+      ],
+   q(tehuelche) => [
+      q(6425),
+      q(0),
+      ],
+   q(tejalapan zapotec) => [
+      q(7872),
+      q(0),
+      ],
+   q(teke-ebo) => [
+      q(2210),
+      q(0),
+      ],
+   q(teke-fuumu) => [
+      q(2899),
+      q(0),
+      ],
+   q(teke-kukuya) => [
+      q(3402),
+      q(0),
+      ],
+   q(teke-laali) => [
+      q(3939),
+      q(0),
+      ],
+   q(teke-nzikou) => [
+      q(5158),
+      q(0),
+      ],
+   q(teke-tege) => [
+      q(6424),
+      q(0),
+      ],
+   q(teke-tsaayi) => [
+      q(6801),
+      q(0),
+      ],
+   q(teke-tyee) => [
+      q(6810),
+      q(0),
+      ],
+   q(tektiteko) => [
+      q(6706),
+      q(0),
+      ],
+   q(tela-masbuar) => [
+      q(6753),
+      q(0),
+      ],
+   q(telefol) => [
+      q(6538),
+      q(0),
+      ],
+   q(telugu) => [
+      q(0420),
+      q(0),
+      ],
+   q(teluti) => [
+      q(6550),
+      q(0),
+      ],
+   q(tem) => [
+      q(3219),
+      q(0),
+      ],
+   q(temacine tamazight) => [
+      q(6514),
+      q(0),
+      ],
+   q(temascaltepec nahuatl) => [
+      q(4860),
+      q(0),
+      ],
+   q(tembe) => [
+      q(6645),
+      q(0),
+      ],
+   q(tembo (kitembo)) => [
+      q(6366),
+      q(0),
+      ],
+   q(tembo (motembo)) => [
+      q(6575),
+      q(0),
+      ],
+   q(teme) => [
+      q(6409),
+      q(0),
+      ],
+   q(temein) => [
+      q(6431),
+      q(0),
+      ],
+   q(temi) => [
+      q(6149),
+      q(0),
+      ],
+   q(temiar) => [
+      q(6418),
+      q(0),
+      ],
+   q(temoaya otomi) => [
+      q(5302),
+      q(0),
+      ],
+   q(temoq) => [
+      q(6568),
+      q(0),
+      ],
+   q(tempasuk dusun) => [
+      q(6414),
+      q(0),
+      ],
+   q(temuan) => [
+      q(6576),
+      q(0),
+      ],
+   q(tena) => [
+      q(1141),
+      q(0),
+      ],
+   q(tena lowland quichua) => [
+      q(5670),
+      q(0),
+      ],
+   q(tenango otomi) => [
+      q(5298),
+      q(0),
+      ],
+   q(tene kan dogon) => [
+      q(2157),
+      q(0),
+      ],
+   q(tenggarong kutai malay) => [
+      q(6979),
+      q(0),
+      ],
+   q(tengger) => [
+      q(6432),
+      q(0),
+      ],
+   q(tenharim) => [
+      q(5326),
+      q(0),
+      ],
+   q(tenino) => [
+      q(6648),
+      q(0),
+      ],
+   q(tenis) => [
+      q(6595),
+      q(0),
+      ],
+   q(tennet) => [
+      q(6436),
+      q(0),
+      ],
+   q(teop) => [
+      q(6498),
+      q(0),
+      ],
+   q(teor) => [
+      q(6434),
+      q(0),
+      ],
+   q(tepecano) => [
+      q(6430),
+      q(0),
+      ],
+   q(tepetotutla chinantec) => [
+      q(1805),
+      q(0),
+      ],
+   q(tepeuxila cuicatec) => [
+      q(1919),
+      q(0),
+      ],
+   q(tepinapa chinantec) => [
+      q(1889),
+      q(0),
+      ],
+   q(tepo krumen) => [
+      q(6421),
+      q(0),
+      ],
+   q(ter sami) => [
+      q(6040),
+      q(0),
+      ],
+   q(tera) => [
+      q(6721),
+      q(0),
+      ],
+   q(terebu) => [
+      q(6657),
+      q(0),
+      ],
+   q(terei) => [
+      q(1507),
+      q(0),
+      ],
+   q(tereno) => [
+      q(0422),
+      q(0),
+      ],
+   q(teressa) => [
+      q(6423),
+      q(0),
+      ],
+   q(tereweng) => [
+      q(6767),
+      q(0),
+      ],
+   q(teribe) => [
+      q(6441),
+      q(0),
+      ],
+   q(terik) => [
+      q(6420),
+      q(0),
+      ],
+   q(termanu) => [
+      q(6777),
+      q(0),
+      ],
+   q(ternate) => [
+      q(6442),
+      q(0),
+      ],
+   q(ternateno) => [
+      q(6561),
+      q(0),
+      ],
+   q(tesaka malagasy) => [
+      q(6522),
+      q(0),
+      ],
+   q(tese) => [
+      q(3241),
+      q(0),
+      ],
+   q(teshenawa) => [
+      q(6763),
+      q(0),
+      ],
+   q(teso) => [
+      q(6429),
+      q(0),
+      ],
+   q(tetela) => [
+      q(6542),
+      q(0),
+      ],
+   q(tetelcingo nahuatl) => [
+      q(4848),
+      q(0),
+      ],
+   q(tetete) => [
+      q(6419),
+      q(0),
+      ],
+   q(tetum) => [
+      q(0423),
+      q(0),
+      ],
+   q(tetun dili) => [
+      q(6413),
+      q(0),
+      ],
+   q(teutila cuicatec) => [
+      q(1915),
+      q(0),
+      ],
+   q(tewa (indonesia)) => [
+      q(6765),
+      q(0),
+      ],
+   q(tewa (usa)) => [
+      q(6435),
+      q(0),
+      ],
+   q(tewe) => [
+      q(6779),
+      q(0),
+      ],
+   q(texcatepec otomi) => [
+      q(5305),
+      q(0),
+      ],
+   q(texistepec popoluca) => [
+      q(5539),
+      q(0),
+      ],
+   q(texmelucan zapotec) => [
+      q(7850),
+      q(0),
+      ],
+   q(tezoatlan mixtec) => [
+      q(4628),
+      q(0),
+      ],
+   q(tha) => [
+      q(6485),
+      q(0),
+      ],
+   q(thachanadan) => [
+      q(6475),
+      q(0),
+      ],
+   q(thado chin) => [
+      q(6395),
+      q(0),
+      ],
+   q(thai) => [
+      q(0426),
+      q(0),
+      ],
+   q(thai sign language) => [
+      q(6694),
+      q(0),
+      ],
+   q(thai song) => [
+      q(6129),
+      q(0),
+      ],
+   q(thaiphum chin) => [
+      q(1891),
+      q(0),
+      ],
+   q(thakali) => [
+      q(6479),
+      q(0),
+      ],
+   q(thangal naga) => [
+      q(4912),
+      q(0),
+      ],
+   q(thangmi) => [
+      q(6469),
+      q(0),
+      ],
+   q(thao) => [
+      q(6205),
+      q(0),
+      ],
+   q(tharaka) => [
+      q(6472),
+      q(0),
+      ],
+   q(thayore) => [
+      q(6467),
+      q(0),
+      ],
+   q(thaypan) => [
+      q(6805),
+      q(0),
+      ],
+   q(the) => [
+      q(6484),
+      q(0),
+      ],
+   q(tho) => [
+      q(6618),
+      q(0),
+      ],
+   q(thompson) => [
+      q(6476),
+      q(0),
+      ],
+   q(thopho) => [
+      q(7676),
+      q(0),
+      ],
+   q(thracian) => [
+      q(6786),
+      q(0),
+      ],
+   q(thu lao) => [
+      q(6803),
+      q(0),
+      ],
+   q(thudam) => [
+      q(6483),
+      q(0),
+      ],
+   q(thulung) => [
+      q(6403),
+      q(0),
+      ],
+   q(thurawal) => [
+      q(6355),
+      q(0),
+      ],
+   q(thuri) => [
+      q(6481),
+      q(0),
+      ],
+   q(tiagbamrin aizi) => [
+      q(0683),
+      q(0),
+      ],
+   q(tiale) => [
+      q(4401),
+      q(0),
+      ],
+   q(tiang) => [
+      q(6357),
+      q(0),
+      ],
+   q(tibea) => [
+      q(4840),
+      q(0),
+      ],
+   q(tibetan) => [
+      q(0427),
+      q(0),
+      ],
+   q(tibeto-burman languages) => [
+      q(0527),
+      q(0),
+      ],
+   q(tichurong) => [
+      q(6385),
+      q(0),
+      ],
+   q(ticuna) => [
+      q(6373),
+      q(0),
+      ],
+   q(tidaa mixtec) => [
+      q(4556),
+      q(0),
+      ],
+   q(tidikelt tamazight) => [
+      q(6487),
+      q(0),
+      ],
+   q(tidong) => [
+      q(6489),
+      q(0),
+      ],
+   q(tidore) => [
+      q(6755),
+      q(0),
+      ],
+   q(tiefo) => [
+      q(6500),
+      q(0),
+      ],
+   q(tiemacewe bozo) => [
+      q(1365),
+      q(0),
+      ],
+   q(tiene) => [
+      q(6492),
+      q(0),
+      ],
+   q(tieyaxo bozo) => [
+      q(1375),
+      q(0),
+      ],
+   q(tifal) => [
+      q(6490),
+      q(0),
+      ],
+   q(tigak) => [
+      q(6445),
+      q(0),
+      ],
+   q(tigon mbembe) => [
+      q(5153),
+      q(0),
+      ],
+   q(tigre) => [
+      q(0428),
+      q(0),
+      ],
+   q(tigrinya) => [
+      q(0429),
+      q(0),
+      ],
+   q(tii) => [
+      q(6791),
+      q(0),
+      ],
+   q(tijaltepec mixtec) => [
+      q(7448),
+      q(0),
+      ],
+   q(tikar) => [
+      q(6494),
+      q(0),
+      ],
+   q(tikopia) => [
+      q(6525),
+      q(0),
+      ],
+   q(tilapa otomi) => [
+      q(5296),
+      q(0),
+      ],
+   q(tillamook) => [
+      q(6495),
+      q(0),
+      ],
+   q(tilquiapan zapotec) => [
+      q(7871),
+      q(0),
+      ],
+   q(tilung) => [
+      q(6493),
+      q(0),
+      ],
+   q(tima) => [
+      q(6572),
+      q(0),
+      ],
+   q(timbe) => [
+      q(6496),
+      q(0),
+      ],
+   q(timbisha) => [
+      q(5331),
+      q(0),
+      ],
+   q(timne) => [
+      q(0421),
+      q(0),
+      ],
+   q(timor pidgin) => [
+      q(6760),
+      q(0),
+      ],
+   q(timucua) => [
+      q(6512),
+      q(0),
+      ],
+   q(timugon murut) => [
+      q(6491),
+      q(0),
+      ],
+   q(tinani) => [
+      q(3797),
+      q(0),
+      ],
+   q(tindi) => [
+      q(6497),
+      q(0),
+      ],
+   q(tingui-boto) => [
+      q(6461),
+      q(0),
+      ],
+   q(tinigua) => [
+      q(6502),
+      q(0),
+      ],
+   q(tinoc kallahan) => [
+      q(6583),
+      q(0),
+      ],
+   q(tinputz) => [
+      q(6644),
+      q(0),
+      ],
+   q(tippera) => [
+      q(6626),
+      q(0),
+      ],
+   q(tira) => [
+      q(6488),
+      q(0),
+      ],
+   q(tirahi) => [
+      q(6656),
+      q(0),
+      ],
+   q(tiranige diga dogon) => [
+      q(6400),
+      q(0),
+      ],
+   q(tiri) => [
+      q(1741),
+      q(0),
+      ],
+   q(tiruray) => [
+      q(6506),
+      q(0),
+      ],
+   q(tita) => [
+      q(6410),
+      q(0),
+      ],
+   q(titan) => [
+      q(6725),
+      q(0),
+      ],
+   q(tiv) => [
+      q(0430),
+      q(0),
+      ],
+   q(tiwa) => [
+      q(3790),
+      q(0),
+      ],
+   q(tiwi) => [
+      q(6504),
+      q(0),
+      ],
+   q(tjurruru) => [
+      q(6516),
+      q(0),
+      ],
+   q(tlachichilco tepehua) => [
+      q(6638),
+      q(0),
+      ],
+   q(tlacoapa me'phaa) => [
+      q(6631),
+      q(0),
+      ],
+   q(tlacoapa tlapanec) => [
+      q(6631),
+      q(0),
+      ],
+   q(tlacoatzintepec chinantec) => [
+      q(1892),
+      q(0),
+      ],
+   q(tlacolulita zapotec) => [
+      q(7835),
+      q(0),
+      ],
+   q(tlahuitoltepec mixe) => [
+      q(4642),
+      q(0),
+      ],
+   q(tlamacazapa nahuatl) => [
+      q(5105),
+      q(0),
+      ],
+   q(tlazoyaltepec mixtec) => [
+      q(4465),
+      q(0),
+      ],
+   q(tlhingan-hol) => [
+      q(0432),
+      q(0),
+      ],
+   q(tlingit) => [
+      q(0433),
+      q(0),
+      ],
+   q(to) => [
+      q(6623),
+      q(0),
+      ],
+   q(to'abaita) => [
+      q(4362),
+      q(0),
+      ],
+   q(toaripi) => [
+      q(6649),
+      q(0),
+      ],
+   q(toba) => [
+      q(6603),
+      q(0),
+      ],
+   q(toba-maskoy) => [
+      q(6560),
+      q(0),
+      ],
+   q(tobagonian creole english) => [
+      q(6450),
+      q(0),
+      ],
+   q(tobanga) => [
+      q(6584),
+      q(0),
+      ],
+   q(tobati) => [
+      q(6712),
+      q(0),
+      ],
+   q(tobelo) => [
+      q(6535),
+      q(0),
+      ],
+   q(tobian) => [
+      q(6621),
+      q(0),
+      ],
+   q(tobilung) => [
+      q(6444),
+      q(0),
+      ],
+   q(tobo) => [
+      q(6368),
+      q(0),
+      ],
+   q(tocantins asurini) => [
+      q(0904),
+      q(0),
+      ],
+   q(tocho) => [
+      q(6347),
+      q(0),
+      ],
+   q(toda) => [
+      q(6393),
+      q(0),
+      ],
+   q(todrah) => [
+      q(6411),
+      q(0),
+      ],
+   q(tofanma) => [
+      q(6539),
+      q(0),
+      ],
+   q(tofin gbe) => [
+      q(6438),
+      q(0),
+      ],
+   q(togbo-vara banda) => [
+      q(6616),
+      q(0),
+      ],
+   q(togoyo) => [
+      q(6464),
+      q(0),
+      ],
+   q(tohono o'odham) => [
+      q(5257),
+      q(0),
+      ],
+   q(tojolabal) => [
+      q(6610),
+      q(0),
+      ],
+   q(tok pisin) => [
+      q(0437),
+      q(0),
+      ],
+   q(tokano) => [
+      q(7877),
+      q(0),
+      ],
+   q(tokelau) => [
+      q(0431),
+      q(0),
+      ],
+   q(tokharian a) => [
+      q(7451),
+      q(0),
+      ],
+   q(tokharian b) => [
+      q(6782),
+      q(0),
+      ],
+   q(toku-no-shima) => [
+      q(6524),
+      q(0),
+      ],
+   q(tol) => [
+      q(3072),
+      q(0),
+      ],
+   q(tolaki) => [
+      q(3812),
+      q(0),
+      ],
+   q(tolomako) => [
+      q(6543),
+      q(0),
+      ],
+   q(tolowa) => [
+      q(6611),
+      q(0),
+      ],
+   q(toma) => [
+      q(6605),
+      q(0),
+      ],
+   q(tomadino) => [
+      q(6404),
+      q(0),
+      ],
+   q(tombelala) => [
+      q(6719),
+      q(0),
+      ],
+   q(tombonuo) => [
+      q(6781),
+      q(0),
+      ],
+   q(tombulu) => [
+      q(6612),
+      q(0),
+      ],
+   q(tomedes) => [
+      q(6606),
+      q(0),
+      ],
+   q(tomini) => [
+      q(6788),
+      q(0),
+      ],
+   q(tommo so dogon) => [
+      q(2159),
+      q(0),
+      ],
+   q(tomo kan dogon) => [
+      q(2158),
+      q(0),
+      ],
+   q(tomoip) => [
+      q(6650),
+      q(0),
+      ],
+   q(tondano) => [
+      q(6408),
+      q(0),
+      ],
+   q(tondi songway kiini) => [
+      q(6697),
+      q(0),
+      ],
+   q(tonga) => [
+      q(0436),
+      q(1),
+      ],
+   q(tonga (nyasa)) => [
+      q(0435),
+      q(0),
+      ],
+   q(tonga (thailand)) => [
+      q(6602),
+      q(0),
+      ],
+   q(tonga (tonga islands)) => [
+      q(0436),
+      q(0),
+      ],
+   q(tonga (zambia)) => [
+      q(6609),
+      q(0),
+      ],
+   q(tongwe) => [
+      q(6601),
+      q(0),
+      ],
+   q(tonjon) => [
+      q(6513),
+      q(0),
+      ],
+   q(tonkawa) => [
+      q(6655),
+      q(0),
+      ],
+   q(tonsawang) => [
+      q(6599),
+      q(0),
+      ],
+   q(tonsea) => [
+      q(6793),
+      q(0),
+      ],
+   q(tontemboan) => [
+      q(6596),
+      q(0),
+      ],
+   q(tooro) => [
+      q(6713),
+      q(0),
+      ],
+   q(topoiyo) => [
+      q(6622),
+      q(0),
+      ],
+   q(toposa) => [
+      q(6615),
+      q(0),
+      ],
+   q(tora) => [
+      q(6680),
+      q(0),
+      ],
+   q(toraja-sa'dan) => [
+      q(5914),
+      q(0),
+      ],
+   q(toram) => [
+      q(6665),
+      q(0),
+      ],
+   q(torau) => [
+      q(6724),
+      q(0),
+      ],
+   q(tornedalen finnish) => [
+      q(2340),
+      q(0),
+      ],
+   q(toro) => [
+      q(6415),
+      q(0),
+      ],
+   q(toro so dogon) => [
+      q(2162),
+      q(0),
+      ],
+   q(toro tegu dogon) => [
+      q(2163),
+      q(0),
+      ],
+   q(toromono) => [
+      q(6591),
+      q(0),
+      ],
+   q(torona) => [
+      q(6652),
+      q(0),
+      ],
+   q(torres strait creole) => [
+      q(6389),
+      q(0),
+      ],
+   q(torricelli) => [
+      q(6426),
+      q(0),
+      ],
+   q(torwali) => [
+      q(6677),
+      q(0),
+      ],
+   q(tosk albanian) => [
+      q(0762),
+      q(0),
+      ],
+   q(totela) => [
+      q(6715),
+      q(0),
+      ],
+   q(toto) => [
+      q(6790),
+      q(0),
+      ],
+   q(totoli) => [
+      q(6784),
+      q(0),
+      ],
+   q(totomachapan zapotec) => [
+      q(7832),
+      q(0),
+      ],
+   q(totontepec mixe) => [
+      q(4547),
+      q(0),
+      ],
+   q(totoro) => [
+      q(6714),
+      q(0),
+      ],
+   q(touo) => [
+      q(6654),
+      q(0),
+      ],
+   q(toura (cote d'ivoire)) => [
+      q(4790),
+      q(0),
+      ],
+   q(toura (papua new guinea)) => [
+      q(2117),
+      q(0),
+      ],
+   q(towei) => [
+      q(6717),
+      q(0),
+      ],
+   q(trans-new guinea languages) => [
+      q(0516),
+      q(0),
+      ],
+   q(transalpine gaulish) => [
+      q(7445),
+      q(0),
+      ],
+   q(traveller danish) => [
+      q(5781),
+      q(0),
+      ],
+   q(traveller norwegian) => [
+      q(5784),
+      q(0),
+      ],
+   q(traveller scottish) => [
+      q(6666),
+      q(0),
+      ],
+   q(tregami) => [
+      q(6667),
+      q(0),
+      ],
+   q(tremembe) => [
+      q(6559),
+      q(0),
+      ],
+   q(trieng) => [
+      q(6230),
+      q(0),
+      ],
+   q(trimuris) => [
+      q(6499),
+      q(0),
+      ],
+   q(tring) => [
+      q(6456),
+      q(0),
+      ],
+   q(tringgus-sembaan bidayuh) => [
+      q(6678),
+      q(0),
+      ],
+   q(trinidad and tobago sign language) => [
+      q(4043),
+      q(0),
+      ],
+   q(trinidadian creole english) => [
+      q(6661),
+      q(0),
+      ],
+   q(trinitario) => [
+      q(6668),
+      q(0),
+      ],
+   q(trio) => [
+      q(6664),
+      q(0),
+      ],
+   q(truka) => [
+      q(6517),
+      q(0),
+      ],
+   q(trumai) => [
+      q(6643),
+      q(0),
+      ],
+   q(ts'un-lao) => [
+      q(6691),
+      q(0),
+      ],
+   q(tsaangi) => [
+      q(6681),
+      q(0),
+      ],
+   q(tsakhur) => [
+      q(6527),
+      q(0),
+      ],
+   q(tsakonian) => [
+      q(6684),
+      q(0),
+      ],
+   q(tsakwambo) => [
+      q(3670),
+      q(0),
+      ],
+   q(tsamai) => [
+      q(6682),
+      q(0),
+      ],
+   q(tsat) => [
+      q(2847),
+      q(0),
+      ],
+   q(tsaukambo) => [
+      q(3670),
+      q(0),
+      ],
+   q(tseku) => [
+      q(6690),
+      q(0),
+      ],
+   q(tsetsaut) => [
+      q(6783),
+      q(0),
+      ],
+   q(tshangla) => [
+      q(6689),
+      q(0),
+      ],
+   q(tsikimba) => [
+      q(3223),
+      q(0),
+      ],
+   q(tsimane) => [
+      q(1656),
+      q(0),
+      ],
+   q(tsimihety malagasy) => [
+      q(7369),
+      q(0),
+      ],
+   q(tsimshian) => [
+      q(0438),
+      q(0),
+      ],
+   q(tsishingini) => [
+      q(6700),
+      q(0),
+      ],
+   q(tso) => [
+      q(3836),
+      q(0),
+      ],
+   q(tsoa) => [
+      q(2747),
+      q(0),
+      ],
+   q(tsogo) => [
+      q(6699),
+      q(0),
+      ],
+   q(tsonga) => [
+      q(0440),
+      q(0),
+      ],
+   q(tsotsitaal) => [
+      q(2350),
+      q(0),
+      ],
+   q(tsotso) => [
+      q(4049),
+      q(0),
+      ],
+   q(tsou) => [
+      q(6698),
+      q(0),
+      ],
+   q(tsum) => [
+      q(6728),
+      q(0),
+      ],
+   q(tsuvadi) => [
+      q(6750),
+      q(0),
+      ],
+   q(tsuvan) => [
+      q(6688),
+      q(0),
+      ],
+   q(tswa) => [
+      q(6683),
+      q(0),
+      ],
+   q(tswana) => [
+      q(0439),
+      q(0),
+      ],
+   q(tswapong) => [
+      q(6772),
+      q(0),
+      ],
+   q(tu) => [
+      q(4300),
+      q(0),
+      ],
+   q(tuamotuan) => [
+      q(5500),
+      q(0),
+      ],
+   q(tubar) => [
+      q(6367),
+      q(0),
+      ],
+   q(tubatulabal) => [
+      q(6730),
+      q(0),
+      ],
+   q(tucano) => [
+      q(6741),
+      q(0),
+      ],
+   q(tugen) => [
+      q(6747),
+      q(0),
+      ],
+   q(tugun) => [
+      q(6816),
+      q(0),
+      ],
+   q(tugutil) => [
+      q(6738),
+      q(0),
+      ],
+   q(tukang besi north) => [
+      q(3312),
+      q(0),
+      ],
+   q(tukang besi south) => [
+      q(1201),
+      q(0),
+      ],
+   q(tuki) => [
+      q(1028),
+      q(0),
+      ],
+   q(tukpa) => [
+      q(6636),
+      q(0),
+      ],
+   q(tukudede) => [
+      q(6519),
+      q(0),
+      ],
+   q(tukumanfed) => [
+      q(6521),
+      q(0),
+      ],
+   q(tula) => [
+      q(6739),
+      q(0),
+      ],
+   q(tulehu) => [
+      q(6551),
+      q(0),
+      ],
+   q(tulishi) => [
+      q(6437),
+      q(0),
+      ],
+   q(tulu) => [
+      q(6394),
+      q(0),
+      ],
+   q(tulu-bohuai) => [
+      q(5718),
+      q(0),
+      ],
+   q(tuma-irumu) => [
+      q(2962),
+      q(0),
+      ],
+   q(tumak) => [
+      q(6557),
+      q(0),
+      ],
+   q(tumari kanuri) => [
+      q(3566),
+      q(0),
+      ],
+   q(tumbuka) => [
+      q(0442),
+      q(0),
+      ],
+   q(tumi) => [
+      q(3400),
+      q(0),
+      ],
+   q(tumleo) => [
+      q(6570),
+      q(0),
+      ],
+   q(tumshuqese) => [
+      q(7453),
+      q(0),
+      ],
+   q(tumtum) => [
+      q(6364),
+      q(0),
+      ],
+   q(tumulung sisaala) => [
+      q(6015),
+      q(0),
+      ],
+   q(tumzabt) => [
+      q(4676),
+      q(0),
+      ],
+   q(tundra enets) => [
+      q(2264),
+      q(0),
+      ],
+   q(tunen) => [
+      q(6758),
+      q(0),
+      ],
+   q(tungag) => [
+      q(3822),
+      q(0),
+      ],
+   q(tunggare) => [
+      q(6674),
+      q(0),
+      ],
+   q(tungus languages) => [
+      q(0529),
+      q(0),
+      ],
+   q(tunia) => [
+      q(6735),
+      q(0),
+      ],
+   q(tunica) => [
+      q(6740),
+      q(0),
+      ],
+   q(tunisian arabic) => [
+      q(0626),
+      q(0),
+      ],
+   q(tunisian sign language) => [
+      q(6685),
+      q(0),
+      ],
+   q(tunjung) => [
+      q(6509),
+      q(0),
+      ],
+   q(tunni) => [
+      q(6651),
+      q(0),
+      ],
+   q(tunzu) => [
+      q(2203),
+      q(0),
+      ],
+   q(tuotomb) => [
+      q(6709),
+      q(0),
+      ],
+   q(tupari) => [
+      q(6637),
+      q(0),
+      ],
+   q(tupi) => [
+      q(6641),
+      q(0),
+      ],
+   q(tupi languages) => [
+      q(0443),
+      q(0),
+      ],
+   q(tupinamba) => [
+      q(6633),
+      q(0),
+      ],
+   q(tupinikin) => [
+      q(6630),
+      q(0),
+      ],
+   q(tupuri) => [
+      q(6737),
+      q(0),
+      ],
+   q(turaka) => [
+      q(6663),
+      q(0),
+      ],
+   q(turi) => [
+      q(6659),
+      q(0),
+      ],
+   q(turiwara) => [
+      q(6776),
+      q(0),
+      ],
+   q(turk isaret dili) => [
+      q(6692),
+      q(0),
+      ],
+   q(turka) => [
+      q(6748),
+      q(0),
+      ],
+   q(turkana) => [
+      q(6745),
+      q(0),
+      ],
+   q(turkic khalaj) => [
+      q(3415),
+      q(0),
+      ],
+   q(turkic languages) => [
+      q(0528),
+      q(0),
+      ],
+   q(turkish) => [
+      q(0444),
+      q(0),
+      ],
+   q(turkish sign language) => [
+      q(6692),
+      q(0),
+      ],
+   q(turkish, ottoman (1500-1928)) => [
+      q(0332),
+      q(0),
+      ],
+   q(turkmen) => [
+      q(0441),
+      q(0),
+      ],
+   q(turks and caicos creole english) => [
+      q(6380),
+      q(0),
+      ],
+   q(turoyo) => [
+      q(6675),
+      q(0),
+      ],
+   q(turumsa) => [
+      q(6647),
+      q(0),
+      ],
+   q(turung) => [
+      q(6679),
+      q(0),
+      ],
+   q(tuscarora) => [
+      q(6743),
+      q(0),
+      ],
+   q(tutelo) => [
+      q(6704),
+      q(0),
+      ],
+   q(tutong) => [
+      q(6710),
+      q(0),
+      ],
+   q(tutsa naga) => [
+      q(6757),
+      q(0),
+      ],
+   q(tutuba) => [
+      q(6562),
+      q(0),
+      ],
+   q(tututepec mixtec) => [
+      q(4553),
+      q(0),
+      ],
+   q(tututni) => [
+      q(6744),
+      q(0),
+      ],
+   q(tuvalu) => [
+      q(0446),
+      q(0),
+      ],
+   q(tuvinian) => [
+      q(0448),
+      q(0),
+      ],
+   q(tuwali ifugao) => [
+      q(2898),
+      q(0),
+      ],
+   q(tuwari) => [
+      q(6778),
+      q(0),
+      ],
+   q(tuwuli) => [
+      q(1371),
+      q(0),
+      ],
+   q(tuxa) => [
+      q(6732),
+      q(0),
+      ],
+   q(tuxinawa) => [
+      q(6746),
+      q(0),
+      ],
+   q(tuyuca) => [
+      q(6733),
+      q(0),
+      ],
+   q(twana) => [
+      q(6761),
+      q(0),
+      ],
+   q(twendi) => [
+      q(6771),
+      q(0),
+      ],
+   q(twents) => [
+      q(6764),
+      q(0),
+      ],
+   q(twi) => [
+      q(0447),
+      q(0),
+      ],
+   q(tyap) => [
+      q(3193),
+      q(0),
+      ],
+   q(tyaraity) => [
+      q(7156),
+      q(0),
+      ],
+   q(tz'utujil) => [
+      q(6814),
+      q(0),
+      ],
+   q(tzeltal) => [
+      q(6813),
+      q(0),
+      ],
+   q(tzotzil) => [
+      q(6817),
+      q(0),
+      ],
+   q(u) => [
+      q(6927),
+      q(0),
+      ],
+   q(uab meto) => [
+      q(0835),
+      q(0),
+      ],
+   q(uamue) => [
+      q(6819),
+      q(0),
+      ],
+   q(uare) => [
+      q(3581),
+      q(0),
+      ],
+   q(ubaghara) => [
+      q(1593),
+      q(0),
+      ],
+   q(ubang) => [
+      q(6822),
+      q(0),
+      ],
+   q(ubi) => [
+      q(6823),
+      q(0),
+      ],
+   q(ubir) => [
+      q(6825),
+      q(0),
+      ],
+   q(ubykh) => [
+      q(6827),
+      q(0),
+      ],
+   q(ucayali-yurua asheninka) => [
+      q(1832),
+      q(0),
+      ],
+   q(uda) => [
+      q(6828),
+      q(0),
+      ],
+   q(udi) => [
+      q(6831),
+      q(0),
+      ],
+   q(udihe) => [
+      q(6829),
+      q(0),
+      ],
+   q(udmurt) => [
+      q(0449),
+      q(0),
+      ],
+   q(uduk) => [
+      q(6834),
+      q(0),
+      ],
+   q(ufim) => [
+      q(6836),
+      q(0),
+      ],
+   q(ugandan sign language) => [
+      q(6839),
+      q(0),
+      ],
+   q(ugaritic) => [
+      q(0450),
+      q(0),
+      ],
+   q(ughele) => [
+      q(6838),
+      q(0),
+      ],
+   q(ugong) => [
+      q(6840),
+      q(0),
+      ],
+   q(uhami) => [
+      q(6842),
+      q(0),
+      ],
+   q(uighur) => [
+      q(0451),
+      q(0),
+      ],
+   q(uisai) => [
+      q(6844),
+      q(0),
+      ],
+   q(ujir) => [
+      q(6832),
+      q(0),
+      ],
+   q(ukaan) => [
+      q(3192),
+      q(0),
+      ],
+   q(ukhwejo) => [
+      q(6849),
+      q(0),
+      ],
+   q(ukit) => [
+      q(6872),
+      q(0),
+      ],
+   q(ukpe-bayobiri) => [
+      q(6851),
+      q(0),
+      ],
+   q(ukpet-ehom) => [
+      q(0726),
+      q(0),
+      ],
+   q(ukrainian) => [
+      q(0452),
+      q(0),
+      ],
+   q(ukrainian sign language) => [
+      q(6850),
+      q(0),
+      ],
+   q(ukue) => [
+      q(6854),
+      q(0),
+      ],
+   q(ukuriguma) => [
+      q(6848),
+      q(0),
+      ],
+   q(ukwa) => [
+      q(6852),
+      q(0),
+      ],
+   q(ukwuani-aboh-ndoni) => [
+      q(6855),
+      q(0),
+      ],
+   q(ulau-suain) => [
+      q(6262),
+      q(0),
+      ],
+   q(ulch) => [
+      q(6859),
+      q(0),
+      ],
+   q(ulithian) => [
+      q(6861),
+      q(0),
+      ],
+   q(ullatan) => [
+      q(6863),
+      q(0),
+      ],
+   q(ulukwumi) => [
+      q(6858),
+      q(0),
+      ],
+   q(ulumanda') => [
+      q(6864),
+      q(0),
+      ],
+   q(ulwa) => [
+      q(6867),
+      q(0),
+      ],
+   q(uma) => [
+      q(5549),
+      q(0),
+      ],
+   q(uma' lasan) => [
+      q(7333),
+      q(0),
+      ],
+   q(uma' lung) => [
+      q(6866),
+      q(0),
+      ],
+   q(umanakaina) => [
+      q(2455),
+      q(0),
+      ],
+   q(umatilla) => [
+      q(6868),
+      q(0),
+      ],
+   q(umbindhamu) => [
+      q(6870),
+      q(0),
+      ],
+   q(umbrian) => [
+      q(7466),
+      q(0),
+      ],
+   q(umbu-ungu) => [
+      q(6826),
+      q(0),
+      ],
+   q(umbugarla) => [
+      q(6877),
+      q(0),
+      ],
+   q(umbundu) => [
+      q(0453),
+      q(0),
+      ],
+   q(umbuygamu) => [
+      q(6871),
+      q(0),
+      ],
+   q(ume sami) => [
+      q(6041),
+      q(0),
+      ],
+   q(umeda) => [
+      q(6889),
+      q(0),
+      ],
+   q(umiida) => [
+      q(7463),
+      q(0),
+      ],
+   q(umiray dumaget agta) => [
+      q(2169),
+      q(0),
+      ],
+   q(umon) => [
+      q(6873),
+      q(0),
+      ],
+   q(umotina) => [
+      q(6875),
+      q(0),
+      ],
+   q(umpila) => [
+      q(6876),
+      q(0),
+      ],
+   q(una) => [
+      q(4539),
+      q(0),
+      ],
+   q(unami) => [
+      q(6884),
+      q(0),
+      ],
+   q(uncoded languages) => [
+      q(0281),
+      q(0),
+      ],
+   q(unde kaili) => [
+      q(6887),
+      q(0),
+      ],
+   q(undetermined) => [
+      q(0454),
+      q(0),
+      ],
+   q(uneapa) => [
+      q(1052),
+      q(0),
+      ],
+   q(uneme) => [
+      q(6881),
+      q(0),
+      ],
+   q(unggarranggu) => [
+      q(7467),
+      q(0),
+      ],
+   q(unggumi) => [
+      q(7292),
+      q(0),
+      ],
+   q(unserdeutsch) => [
+      q(6865),
+      q(0),
+      ],
+   q(unua) => [
+      q(5254),
+      q(0),
+      ],
+   q(uokha) => [
+      q(6888),
+      q(0),
+      ],
+   q(upper chehalis) => [
+      q(1746),
+      q(0),
+      ],
+   q(upper grand valley dani) => [
+      q(2096),
+      q(0),
+      ],
+   q(upper guinea crioulo) => [
+      q(5542),
+      q(0),
+      ],
+   q(upper kinabatangan) => [
+      q(2085),
+      q(0),
+      ],
+   q(upper kuskokwim) => [
+      q(3639),
+      q(0),
+      ],
+   q(upper necaxa totonac) => [
+      q(6530),
+      q(0),
+      ],
+   q(upper saxon) => [
+      q(6302),
+      q(0),
+      ],
+   q(upper sorbian) => [
+      q(0182),
+      q(0),
+      ],
+   q(upper ta'oih) => [
+      q(6711),
+      q(0),
+      ],
+   q(upper tanana) => [
+      q(6342),
+      q(0),
+      ],
+   q(upper taromi) => [
+      q(6619),
+      q(0),
+      ],
+   q(upper umpqua) => [
+      q(7469),
+      q(0),
+      ],
+   q(ura (papua new guinea)) => [
+      q(6903),
+      q(0),
+      ],
+   q(ura (vanuatu)) => [
+      q(6926),
+      q(0),
+      ],
+   q(uradhi) => [
+      q(6895),
+      q(0),
+      ],
+   q(urak lawoi') => [
+      q(6899),
+      q(0),
+      ],
+   q(urali) => [
+      q(6900),
+      q(0),
+      ],
+   q(uralic languages) => [
+      q(0530),
+      q(0),
+      ],
+   q(urapmin) => [
+      q(6901),
+      q(0),
+      ],
+   q(urarina) => [
+      q(6891),
+      q(0),
+      ],
+   q(urartian) => [
+      q(7470),
+      q(0),
+      ],
+   q(urat) => [
+      q(6906),
+      q(0),
+      ],
+   q(urdu) => [
+      q(0455),
+      q(0),
+      ],
+   q(urhobo) => [
+      q(6897),
+      q(0),
+      ],
+   q(uri) => [
+      q(6929),
+      q(0),
+      ],
+   q(urigina) => [
+      q(6896),
+      q(0),
+      ],
+   q(urim) => [
+      q(6898),
+      q(0),
+      ],
+   q(urimo) => [
+      q(6910),
+      q(0),
+      ],
+   q(uripiv-wala-rano-atchin) => [
+      q(6890),
+      q(0),
+      ],
+   q(urningangg) => [
+      q(6893),
+      q(0),
+      ],
+   q(uru) => [
+      q(6894),
+      q(0),
+      ],
+   q(uru-eu-wau-wau) => [
+      q(6912),
+      q(0),
+      ],
+   q(uru-pa-in) => [
+      q(6904),
+      q(0),
+      ],
+   q(uruangnirin) => [
+      q(6902),
+      q(0),
+      ],
+   q(uruava) => [
+      q(6908),
+      q(0),
+      ],
+   q(urubu-kaapor) => [
+      q(6892),
+      q(0),
+      ],
+   q(urubu-kaapor sign language) => [
+      q(6853),
+      q(0),
+      ],
+   q(uruguayan sign language) => [
+      q(6841),
+      q(0),
+      ],
+   q(urum) => [
+      q(6924),
+      q(0),
+      ],
+   q(urumi) => [
+      q(6907),
+      q(0),
+      ],
+   q(usaghade) => [
+      q(6916),
+      q(0),
+      ],
+   q(usan) => [
+      q(7154),
+      q(0),
+      ],
+   q(usarufa) => [
+      q(6913),
+      q(0),
+      ],
+   q(ushojo) => [
+      q(6914),
+      q(0),
+      ],
+   q(usila chinantec) => [
+      q(1903),
+      q(0),
+      ],
+   q(usku) => [
+      q(6860),
+      q(0),
+      ],
+   q(uspanteco) => [
+      q(6917),
+      q(0),
+      ],
+   q(usui) => [
+      q(6915),
+      q(0),
+      ],
+   q(ut-ma'in) => [
+      q(2471),
+      q(0),
+      ],
+   q(utarmbung) => [
+      q(5234),
+      q(0),
+      ],
+   q(ute-southern paiute) => [
+      q(6920),
+      q(0),
+      ],
+   q(uto-aztecan languages) => [
+      q(0493),
+      q(0),
+      ],
+   q(utu) => [
+      q(6923),
+      q(0),
+      ],
+   q(uvbie) => [
+      q(2307),
+      q(0),
+      ],
+   q(uya) => [
+      q(6918),
+      q(0),
+      ],
+   q(uyajitaya) => [
+      q(2175),
+      q(0),
+      ],
+   q(uyghur) => [
+      q(0451),
+      q(0),
+      ],
+   q(uzbek) => [
+      q(0456),
+      q(0),
+      ],
+   q(uzbeki arabic) => [
+      q(0956),
+      q(0),
+      ],
+   q(uzekwe) => [
+      q(2312),
+      q(0),
+      ],
+   q(v'enen taut) => [
+      q(4944),
+      q(0),
+      ],
+   q(vaagri booli) => [
+      q(6935),
+      q(0),
+      ],
+   q(vaeakau-taumako) => [
+      q(5443),
+      q(0),
+      ],
+   q(vafsi) => [
+      q(6937),
+      q(0),
+      ],
+   q(vaghat-ya-bijim-legeri) => [
+      q(1218),
+      q(0),
+      ],
+   q(vaghri) => [
+      q(6960),
+      q(0),
+      ],
+   q(vaghua) => [
+      q(6749),
+      q(0),
+      ],
+   q(vagla) => [
+      q(6938),
+      q(0),
+      ],
+   q(vai) => [
+      q(0457),
+      q(0),
+      ],
+   q(vaiphei) => [
+      q(6945),
+      q(0),
+      ],
+   q(vale) => [
+      q(6936),
+      q(0),
+      ],
+   q(valencian) => [
+      q(0071),
+      q(0),
+      ],
+   q(valencian sign language) => [
+      q(7015),
+      q(0),
+      ],
+   q(valle nacional chinantec) => [
+      q(1921),
+      q(0),
+      ],
+   q(valley maidu) => [
+      q(7001),
+      q(0),
+      ],
+   q(valman) => [
+      q(6943),
+      q(0),
+      ],
+   q(valpei) => [
+      q(6981),
+      q(0),
+      ],
+   q(vamale) => [
+      q(4337),
+      q(0),
+      ],
+   q(vame) => [
+      q(4360),
+      q(0),
+      ],
+   q(vandalic) => [
+      q(7475),
+      q(0),
+      ],
+   q(vangunu) => [
+      q(4450),
+      q(0),
+      ],
+   q(vanimo) => [
+      q(6942),
+      q(0),
+      ],
+   q(vano) => [
+      q(7006),
+      q(0),
+      ],
+   q(vanuma) => [
+      q(6948),
+      q(0),
+      ],
+   q(vao) => [
+      q(6944),
+      q(0),
+      ],
+   q(varhadi-nagpuri) => [
+      q(6939),
+      q(0),
+      ],
+   q(varisi) => [
+      q(7011),
+      q(0),
+      ],
+   q(varli) => [
+      q(6949),
+      q(0),
+      ],
+   q(vasavi) => [
+      q(6947),
+      q(0),
+      ],
+   q(vasekela bushman) => [
+      q(6940),
+      q(0),
+      ],
+   q(veddah) => [
+      q(6954),
+      q(0),
+      ],
+   q(vehes) => [
+      q(6941),
+      q(0),
+      ],
+   q(veluws) => [
+      q(6955),
+      q(0),
+      ],
+   q(vemgo-mabas) => [
+      q(6956),
+      q(0),
+      ],
+   q(venda) => [
+      q(0458),
+      q(0),
+      ],
+   q(venetian) => [
+      q(6953),
+      q(0),
+      ],
+   q(venetic) => [
+      q(7473),
+      q(0),
+      ],
+   q(venezuelan sign language) => [
+      q(7014),
+      q(0),
+      ],
+   q(vengo) => [
+      q(1035),
+      q(0),
+      ],
+   q(ventureno) => [
+      q(6957),
+      q(0),
+      ],
+   q(veps) => [
+      q(6958),
+      q(0),
+      ],
+   q(vera'a) => [
+      q(7010),
+      q(0),
+      ],
+   q(vestinian) => [
+      q(7477),
+      q(0),
+      ],
+   q(vidunda) => [
+      q(6963),
+      q(0),
+      ],
+   q(viemo) => [
+      q(6965),
+      q(0),
+      ],
+   q(vietnamese) => [
+      q(0459),
+      q(0),
+      ],
+   q(viid) => [
+      q(6123),
+      q(0),
+      ],
+   q(vilela) => [
+      q(6966),
+      q(0),
+      ],
+   q(vili) => [
+      q(6964),
+      q(0),
+      ],
+   q(villa viciosa agta) => [
+      q(2197),
+      q(0),
+      ],
+   q(vincentian creole english) => [
+      q(6263),
+      q(0),
+      ],
+   q(vinmavis) => [
+      q(7007),
+      q(0),
+      ],
+   q(vinza) => [
+      q(6967),
+      q(0),
+      ],
+   q(virgin islands creole english) => [
+      q(6962),
+      q(0),
+      ],
+   q(vishavan) => [
+      q(6968),
+      q(0),
+      ],
+   q(viti) => [
+      q(6969),
+      q(0),
+      ],
+   q(vitou) => [
+      q(7016),
+      q(0),
+      ],
+   q(vitu) => [
+      q(7104),
+      q(0),
+      ],
+   q(vlaams) => [
+      q(6982),
+      q(0),
+      ],
+   q(vlaamse gebarentaal) => [
+      q(6961),
+      q(0),
+      ],
+   q(vlax romani) => [
+      q(5800),
+      q(0),
+      ],
+   q(volapuk) => [
+      q(0460),
+      q(0),
+      ],
+   q(volscian) => [
+      q(7476),
+      q(0),
+      ],
+   q(vono) => [
+      q(3194),
+      q(0),
+      ],
+   q(voro) => [
+      q(7009),
+      q(0),
+      ],
+   q(votic) => [
+      q(0461),
+      q(0),
+      ],
+   q(vumbu) => [
+      q(7017),
+      q(0),
+      ],
+   q(vunapu) => [
+      q(7008),
+      q(0),
+      ],
+   q(vunjo) => [
+      q(7018),
+      q(0),
+      ],
+   q(vure) => [
+      q(3925),
+      q(0),
+      ],
+   q(vures) => [
+      q(4521),
+      q(0),
+      ],
+   q(vute) => [
+      q(7019),
+      q(0),
+      ],
+   q(vwanji) => [
+      q(7047),
+      q(0),
+      ],
+   q(wa) => [
+      q(7051),
+      q(0),
+      ],
+   q(wa'ema) => [
+      q(7027),
+      q(0),
+      ],
+   q(waama) => [
+      q(7218),
+      q(0),
+      ],
+   q(waamwang) => [
+      q(7138),
+      q(0),
+      ],
+   q(waata) => [
+      q(6213),
+      q(0),
+      ],
+   q(wab) => [
+      q(7022),
+      q(0),
+      ],
+   q(wabo) => [
+      q(7044),
+      q(0),
+      ],
+   q(waboda) => [
+      q(3454),
+      q(0),
+      ],
+   q(waci gbe) => [
+      q(7059),
+      q(0),
+      ],
+   q(wadaginam) => [
+      q(7061),
+      q(0),
+      ],
+   q(waddar) => [
+      q(7053),
+      q(0),
+      ],
+   q(wadiyara koli) => [
+      q(3711),
+      q(0),
+      ],
+   q(wadjiginy) => [
+      q(7062),
+      q(0),
+      ],
+   q(wadjigu) => [
+      q(7063),
+      q(0),
+      ],
+   q(wae rana) => [
+      q(7190),
+      q(0),
+      ],
+   q(waffa) => [
+      q(7030),
+      q(0),
+      ],
+   q(wagawaga) => [
+      q(7079),
+      q(0),
+      ],
+   q(wagaya) => [
+      q(7078),
+      q(0),
+      ],
+   q(wagdi) => [
+      q(7054),
+      q(0),
+      ],
+   q(wageman) => [
+      q(7035),
+      q(0),
+      ],
+   q(wagi) => [
+      q(2315),
+      q(0),
+      ],
+   q(wahau kayan) => [
+      q(7088),
+      q(0),
+      ],
+   q(wahau kenyah) => [
+      q(7087),
+      q(0),
+      ],
+   q(wahgi) => [
+      q(7081),
+      q(0),
+      ],
+   q(waigali) => [
+      q(7049),
+      q(0),
+      ],
+   q(waigeo) => [
+      q(7082),
+      q(0),
+      ],
+   q(wailaki) => [
+      q(7119),
+      q(0),
+      ],
+   q(wailapa) => [
+      q(7123),
+      q(0),
+      ],
+   q(waima) => [
+      q(5825),
+      q(0),
+      ],
+   q(waima'a) => [
+      q(7135),
+      q(0),
+      ],
+   q(waimaha) => [
+      q(1031),
+      q(0),
+      ],
+   q(waimiri-atroari) => [
+      q(0925),
+      q(0),
+      ],
+   q(waioli) => [
+      q(7118),
+      q(0),
+      ],
+   q(waiwai) => [
+      q(7039),
+      q(0),
+      ],
+   q(waja) => [
+      q(7106),
+      q(0),
+      ],
+   q(wajarri) => [
+      q(7056),
+      q(0),
+      ],
+   q(waka) => [
+      q(7038),
+      q(0),
+      ],
+   q(wakabunga) => [
+      q(7219),
+      q(0),
+      ],
+   q(wakashan languages) => [
+      q(0462),
+      q(0),
+      ],
+   q(wakawaka) => [
+      q(7113),
+      q(0),
+      ],
+   q(wakde) => [
+      q(7110),
+      q(0),
+      ],
+   q(wakhi) => [
+      q(7050),
+      q(0),
+      ],
+   q(wakona) => [
+      q(7026),
+      q(0),
+      ],
+   q(wala) => [
+      q(3871),
+      q(0),
+      ],
+   q(walak) => [
+      q(7127),
+      q(0),
+      ],
+   q(walamo) => [
+      q(0463),
+      q(0),
+      ],
+   q(wali (ghana)) => [
+      q(7128),
+      q(0),
+      ],
+   q(wali (sudan)) => [
+      q(7120),
+      q(0),
+      ],
+   q(waling) => [
+      q(7129),
+      q(0),
+      ],
+   q(walio) => [
+      q(7114),
+      q(0),
+      ],
+   q(walla walla) => [
+      q(7021),
+      q(0),
+      ],
+   q(wallisian) => [
+      q(7124),
+      q(0),
+      ],
+   q(walloon) => [
+      q(0468),
+      q(0),
+      ],
+   q(walmajarri) => [
+      q(7141),
+      q(0),
+      ],
+   q(walser) => [
+      q(7025),
+      q(0),
+      ],
+   q(walungge) => [
+      q(5219),
+      q(0),
+      ],
+   q(wamas) => [
+      q(7132),
+      q(0),
+      ],
+   q(wambaya) => [
+      q(7131),
+      q(0),
+      ],
+   q(wambon) => [
+      q(7140),
+      q(0),
+      ],
+   q(wambule) => [
+      q(7134),
+      q(0),
+      ],
+   q(wamey) => [
+      q(1825),
+      q(0),
+      ],
+   q(wamin) => [
+      q(7136),
+      q(0),
+      ],
+   q(wampanoag) => [
+      q(7031),
+      q(0),
+      ],
+   q(wampar) => [
+      q(3806),
+      q(0),
+      ],
+   q(wampur) => [
+      q(7042),
+      q(0),
+      ],
+   q(wan) => [
+      q(7032),
+      q(0),
+      ],
+   q(wanambre) => [
+      q(7144),
+      q(0),
+      ],
+   q(wanap) => [
+      q(7153),
+      q(0),
+      ],
+   q(wanbasana) => [
+      q(0764),
+      q(0),
+      ],
+   q(wancho naga) => [
+      q(4983),
+      q(0),
+      ],
+   q(wanda) => [
+      q(7046),
+      q(0),
+      ],
+   q(wandala) => [
+      q(4208),
+      q(0),
+      ],
+   q(wandamen) => [
+      q(7024),
+      q(0),
+      ],
+   q(wandarang) => [
+      q(7146),
+      q(0),
+      ],
+   q(wandji) => [
+      q(7060),
+      q(0),
+      ],
+   q(wane) => [
+      q(2862),
+      q(0),
+      ],
+   q(waneci) => [
+      q(7147),
+      q(0),
+      ],
+   q(wanga) => [
+      q(4075),
+      q(0),
+      ],
+   q(wangaaybuwan-ngiyambaa) => [
+      q(7225),
+      q(0),
+      ],
+   q(wanggamala) => [
+      q(7151),
+      q(0),
+      ],
+   q(wangganguru) => [
+      q(7080),
+      q(0),
+      ],
+   q(wanggom) => [
+      q(7148),
+      q(0),
+      ],
+   q(wanman) => [
+      q(7055),
+      q(0),
+      ],
+   q(wannu) => [
+      q(3125),
+      q(0),
+      ],
+   q(wano) => [
+      q(7152),
+      q(0),
+      ],
+   q(wantoat) => [
+      q(7145),
+      q(0),
+      ],
+   q(wanukaka) => [
+      q(7150),
+      q(0),
+      ],
+   q(wanyi) => [
+      q(7155),
+      q(0),
+      ],
+   q(waorani) => [
+      q(0936),
+      q(0),
+      ],
+   q(wapan) => [
+      q(3130),
+      q(0),
+      ],
+   q(wapha) => [
+      q(3140),
+      q(0),
+      ],
+   q(wapishana) => [
+      q(7034),
+      q(0),
+      ],
+   q(wappo) => [
+      q(7033),
+      q(0),
+      ],
+   q(war-jaintia) => [
+      q(0777),
+      q(0),
+      ],
+   q(wara) => [
+      q(6381),
+      q(0),
+      ],
+   q(warao) => [
+      q(7043),
+      q(0),
+      ],
+   q(warapu) => [
+      q(7173),
+      q(0),
+      ],
+   q(waray) => [
+      q(0464),
+      q(0),
+      ],
+   q(waray (australia)) => [
+      q(7192),
+      q(0),
+      ],
+   q(waray (philippines)) => [
+      q(0464),
+      q(1),
+      ],
+   q(wardaman) => [
+      q(7185),
+      q(0),
+      ],
+   q(warduji) => [
+      q(7175),
+      q(0),
+      ],
+   q(warembori) => [
+      q(7193),
+      q(0),
+      ],
+   q(wares) => [
+      q(7029),
+      q(0),
+      ],
+   q(waris) => [
+      q(7186),
+      q(0),
+      ],
+   q(waritai) => [
+      q(7045),
+      q(0),
+      ],
+   q(wariyangga) => [
+      q(7178),
+      q(0),
+      ],
+   q(warji) => [
+      q(7107),
+      q(0),
+      ],
+   q(warkay-bipim) => [
+      q(1182),
+      q(0),
+      ],
+   q(warlmanpa) => [
+      q(7180),
+      q(0),
+      ],
+   q(warlpiri) => [
+      q(7052),
+      q(0),
+      ],
+   q(warluwara) => [
+      q(7174),
+      q(0),
+      ],
+   q(warnang) => [
+      q(7182),
+      q(0),
+      ],
+   q(waropen) => [
+      q(7184),
+      q(0),
+      ],
+   q(warrgamay) => [
+      q(7084),
+      q(0),
+      ],
+   q(warrwa) => [
+      q(7221),
+      q(0),
+      ],
+   q(waru) => [
+      q(7187),
+      q(0),
+      ],
+   q(warumungu) => [
+      q(7181),
+      q(0),
+      ],
+   q(waruna) => [
+      q(7188),
+      q(0),
+      ],
+   q(warungu) => [
+      q(7176),
+      q(0),
+      ],
+   q(wasa) => [
+      q(7197),
+      q(0),
+      ],
+   q(wasco-wishram) => [
+      q(7023),
+      q(0),
+      ],
+   q(wasembo) => [
+      q(2623),
+      q(0),
+      ],
+   q(washo) => [
+      q(0465),
+      q(0),
+      ],
+   q(waskia) => [
+      q(7195),
+      q(0),
+      ],
+   q(wasu) => [
+      q(7198),
+      q(0),
+      ],
+   q(watakataui) => [
+      q(7202),
+      q(0),
+      ],
+   q(watam) => [
+      q(7040),
+      q(0),
+      ],
+   q(watiwa) => [
+      q(7200),
+      q(0),
+      ],
+   q(watubela) => [
+      q(7028),
+      q(0),
+      ],
+   q(waube) => [
+      q(3493),
+      q(0),
+      ],
+   q(waura) => [
+      q(7037),
+      q(0),
+      ],
+   q(wauyai) => [
+      q(7217),
+      q(0),
+      ],
+   q(wawa) => [
+      q(7222),
+      q(0),
+      ],
+   q(wawonii) => [
+      q(7170),
+      q(0),
+      ],
+   q(waxianghua) => [
+      q(7223),
+      q(0),
+      ],
+   q(wayampi) => [
+      q(5318),
+      q(0),
+      ],
+   q(wayana) => [
+      q(7041),
+      q(0),
+      ],
+   q(wayanad chetti) => [
+      q(1898),
+      q(0),
+      ],
+   q(wayoro) => [
+      q(7227),
+      q(0),
+      ],
+   q(wayu) => [
+      q(6950),
+      q(0),
+      ],
+   q(wayuu) => [
+      q(2629),
+      q(0),
+      ],
+   q(we northern) => [
+      q(7157),
+      q(0),
+      ],
+   q(we southern) => [
+      q(2679),
+      q(0),
+      ],
+   q(we western) => [
+      q(7065),
+      q(0),
+      ],
+   q(wedau) => [
+      q(7066),
+      q(0),
+      ],
+   q(weh) => [
+      q(7067),
+      q(0),
+      ],
+   q(wejewa) => [
+      q(7076),
+      q(0),
+      ],
+   q(weliki) => [
+      q(3413),
+      q(0),
+      ],
+   q(welsh) => [
+      q(0466),
+      q(0),
+      ],
+   q(welsh romani) => [
+      q(5798),
+      q(0),
+      ],
+   q(wemale) => [
+      q(7070),
+      q(0),
+      ],
+   q(weme gbe) => [
+      q(7069),
+      q(0),
+      ],
+   q(weri) => [
+      q(7072),
+      q(0),
+      ],
+   q(wersing) => [
+      q(3667),
+      q(0),
+      ],
+   q(west albay bikol) => [
+      q(2330),
+      q(0),
+      ],
+   q(west ambae) => [
+      q(4972),
+      q(0),
+      ],
+   q(west berawan) => [
+      q(7743),
+      q(0),
+      ],
+   q(west central banda) => [
+      q(1054),
+      q(0),
+      ],
+   q(west central oromo) => [
+      q(2411),
+      q(0),
+      ],
+   q(west coast bajau) => [
+      q(1107),
+      q(0),
+      ],
+   q(west damar) => [
+      q(2137),
+      q(0),
+      ],
+   q(west germanic languages) => [
+      q(0507),
+      q(0),
+      ],
+   q(west goodenough) => [
+      q(1981),
+      q(0),
+      ],
+   q(west kewa) => [
+      q(3257),
+      q(0),
+      ],
+   q(west lembata) => [
+      q(3960),
+      q(0),
+      ],
+   q(west makian) => [
+      q(4476),
+      q(0),
+      ],
+   q(west masela) => [
+      q(4526),
+      q(0),
+      ],
+   q(west slavic languages) => [
+      q(0536),
+      q(0),
+      ],
+   q(west tarangan) => [
+      q(6789),
+      q(0),
+      ],
+   q(west uvean) => [
+      q(6928),
+      q(0),
+      ],
+   q(west yugur) => [
+      q(7520),
+      q(0),
+      ],
+   q(west-central limba) => [
+      q(3889),
+      q(0),
+      ],
+   q(western abnaki) => [
+      q(0564),
+      q(0),
+      ],
+   q(western apache) => [
+      q(0857),
+      q(0),
+      ],
+   q(western arrarnta) => [
+      q(0871),
+      q(0),
+      ],
+   q(western balochi) => [
+      q(1174),
+      q(0),
+      ],
+   q(western bolivian guarani) => [
+      q(2568),
+      q(0),
+      ],
+   q(western bru) => [
+      q(1443),
+      q(0),
+      ],
+   q(western bukidnon manobo) => [
+      q(4103),
+      q(0),
+      ],
+   q(western canadian inuktitut) => [
+      q(2926),
+      q(0),
+      ],
+   q(western cham) => [
+      q(1744),
+      q(0),
+      ],
+   q(western dani) => [
+      q(2107),
+      q(0),
+      ],
+   q(western durango nahuatl) => [
+      q(1019),
+      q(0),
+      ],
+   q(western fijian) => [
+      q(7228),
+      q(0),
+      ],
+   q(western frisian) => [
+      q(0142),
+      q(0),
+      ],
+   q(western gurung) => [
+      q(2661),
+      q(0),
+      ],
+   q(western highland chatino) => [
+      q(1896),
+      q(0),
+      ],
+   q(western highland purepecha) => [
+      q(5615),
+      q(0),
+      ],
+   q(western huasteca nahuatl) => [
+      q(4861),
+      q(0),
+      ],
+   q(western juxtlahuaca mixtec) => [
+      q(3104),
+      q(0),
+      ],
+   q(western kanjobal) => [
+      q(3465),
+      q(0),
+      ],
+   q(western karaboro) => [
+      q(3748),
+      q(0),
+      ],
+   q(western katu) => [
+      q(3628),
+      q(0),
+      ],
+   q(western kayah) => [
+      q(3742),
+      q(0),
+      ],
+   q(western keres) => [
+      q(3372),
+      q(0),
+      ],
+   q(western krahn) => [
+      q(3568),
+      q(0),
+      ],
+   q(western lalu) => [
+      q(7703),
+      q(0),
+      ],
+   q(western lawa) => [
+      q(3823),
+      q(0),
+      ],
+   q(western magar) => [
+      q(4487),
+      q(0),
+      ],
+   q(western malayo-polynesian languages) => [
+      q(0522),
+      q(0),
+      ],
+   q(western maninkakan) => [
+      q(4359),
+      q(0),
+      ],
+   q(western mari) => [
+      q(4492),
+      q(0),
+      ],
+   q(western mashan hmong) => [
+      q(2782),
+      q(0),
+      ],
+   q(western mashan miao) => [
+      q(2782),
+      q(0),
+      ],
+   q(western meohang) => [
+      q(5714),
+      q(0),
+      ],
+   q(western muria) => [
+      q(4573),
+      q(0),
+      ],
+   q(western neo-aramaic) => [
+      q(0788),
+      q(0),
+      ],
+   q(western niger fulfulde) => [
+      q(2376),
+      q(0),
+      ],
+   q(western ojibwa) => [
+      q(5200),
+      q(0),
+      ],
+   q(western pahari languages) => [
+      q(0176),
+      q(0),
+      ],
+   q(western panjabi) => [
+      q(5507),
+      q(0),
+      ],
+   q(western parbate kham) => [
+      q(3367),
+      q(0),
+      ],
+   q(western penan) => [
+      q(5509),
+      q(0),
+      ],
+   q(western sisaala) => [
+      q(6211),
+      q(0),
+      ],
+   q(western subanon) => [
+      q(6249),
+      q(0),
+      ],
+   q(western tamang) => [
+      q(6402),
+      q(0),
+      ],
+   q(western tawbuid) => [
+      q(6762),
+      q(0),
+      ],
+   q(western totonac) => [
+      q(6653),
+      q(0),
+      ],
+   q(western tunebo) => [
+      q(6580),
+      q(0),
+      ],
+   q(western xiangxi miao) => [
+      q(4384),
+      q(0),
+      ],
+   q(western xwla gbe) => [
+      q(7482),
+      q(0),
+      ],
+   q(western yiddish) => [
+      q(7563),
+      q(0),
+      ],
+   q(westphalien) => [
+      q(7071),
+      q(0),
+      ],
+   q(wetamut) => [
+      q(7220),
+      q(0),
+      ],
+   q(wewaw) => [
+      q(7064),
+      q(0),
+      ],
+   q(weyto) => [
+      q(7171),
+      q(0),
+      ],
+   q(white gelao) => [
+      q(2517),
+      q(0),
+      ],
+   q(white lachi) => [
+      q(4076),
+      q(0),
+      ],
+   q(whitesands) => [
+      q(6592),
+      q(0),
+      ],
+   q(wiarumus) => [
+      q(6729),
+      q(0),
+      ],
+   q(wichi lhamtes guisnay) => [
+      q(4681),
+      q(0),
+      ],
+   q(wichi lhamtes nocten) => [
+      q(4548),
+      q(0),
+      ],
+   q(wichi lhamtes vejoz) => [
+      q(7126),
+      q(0),
+      ],
+   q(wichita) => [
+      q(7090),
+      q(0),
+      ],
+   q(wik-epa) => [
+      q(7091),
+      q(0),
+      ],
+   q(wik-iiyanh) => [
+      q(7096),
+      q(0),
+      ],
+   q(wik-keyangan) => [
+      q(7092),
+      q(0),
+      ],
+   q(wik-me'anha) => [
+      q(7094),
+      q(0),
+      ],
+   q(wik-mungkan) => [
+      q(7099),
+      q(0),
+      ],
+   q(wik-ngathana) => [
+      q(7093),
+      q(0),
+      ],
+   q(wikalkan) => [
+      q(7097),
+      q(0),
+      ],
+   q(wikngenchera) => [
+      q(7205),
+      q(0),
+      ],
+   q(wilawila) => [
+      q(7098),
+      q(0),
+      ],
+   q(wintu) => [
+      q(7102),
+      q(0),
+      ],
+   q(winye) => [
+      q(3591),
+      q(0),
+      ],
+   q(wipi) => [
+      q(2458),
+      q(0),
+      ],
+   q(wiradhuri) => [
+      q(7177),
+      q(0),
+      ],
+   q(wirafed) => [
+      q(7101),
+      q(0),
+      ],
+   q(wirangu) => [
+      q(7083),
+      q(0),
+      ],
+   q(wiru) => [
+      q(7103),
+      q(0),
+      ],
+   q(wiyot) => [
+      q(7105),
+      q(0),
+      ],
+   q(woccon) => [
+      q(7479),
+      q(0),
+      ],
+   q(wogamusin) => [
+      q(7162),
+      q(0),
+      ],
+   q(wogeo) => [
+      q(7158),
+      q(0),
+      ],
+   q(woi) => [
+      q(7057),
+      q(0),
+      ],
+   q(wojenaka) => [
+      q(3113),
+      q(0),
+      ],
+   q(wolaitta) => [
+      q(0463),
+      q(2),
+      ],
+   q(wolane) => [
+      q(7116),
+      q(0),
+      ],
+   q(wolani) => [
+      q(7159),
+      q(0),
+      ],
+   q(wolaytta) => [
+      q(0463),
+      q(1),
+      ],
+   q(woleaian) => [
+      q(7160),
+      q(0),
+      ],
+   q(wolio) => [
+      q(7122),
+      q(0),
+      ],
+   q(wolof) => [
+      q(0469),
+      q(0),
+      ],
+   q(wom (nigeria)) => [
+      q(7165),
+      q(0),
+      ],
+   q(wom (papua new guinea)) => [
+      q(7139),
+      q(0),
+      ],
+   q(womo) => [
+      q(7143),
+      q(0),
+      ],
+   q(wongo) => [
+      q(7166),
+      q(0),
+      ],
+   q(woods cree) => [
+      q(1924),
+      q(0),
+      ],
+   q(woria) => [
+      q(7168),
+      q(0),
+      ],
+   q(worimi) => [
+      q(3213),
+      q(0),
+      ],
+   q(worodougou) => [
+      q(3127),
+      q(0),
+      ],
+   q(worrorra) => [
+      q(7183),
+      q(0),
+      ],
+   q(wotapuri-katarqalai) => [
+      q(7199),
+      q(0),
+      ],
+   q(wotu) => [
+      q(7204),
+      q(0),
+      ],
+   q(woun meu) => [
+      q(4994),
+      q(0),
+      ],
+   q(written oirat) => [
+      q(7483),
+      q(0),
+      ],
+   q(wu chinese) => [
+      q(7214),
+      q(0),
+      ],
+   q(wuding-luquan yi) => [
+      q(7705),
+      q(0),
+      ],
+   q(wudu) => [
+      q(7207),
+      q(0),
+      ],
+   q(wuliwuli) => [
+      q(7125),
+      q(0),
+      ],
+   q(wulna) => [
+      q(7216),
+      q(0),
+      ],
+   q(wumboko) => [
+      q(1410),
+      q(0),
+      ],
+   q(wumbvu) => [
+      q(7210),
+      q(0),
+      ],
+   q(wumeng nasu) => [
+      q(7708),
+      q(0),
+      ],
+   q(wunai bunu) => [
+      q(1555),
+      q(0),
+      ],
+   q(wunambal) => [
+      q(7206),
+      q(0),
+      ],
+   q(wurrugu) => [
+      q(7212),
+      q(0),
+      ],
+   q(wusa nasu) => [
+      q(7562),
+      q(0),
+      ],
+   q(wushi) => [
+      q(1451),
+      q(0),
+      ],
+   q(wusi) => [
+      q(7194),
+      q(0),
+      ],
+   q(wutung) => [
+      q(7213),
+      q(0),
+      ],
+   q(wutunhua) => [
+      q(7208),
+      q(0),
+      ],
+   q(wuvulu-aua) => [
+      q(7215),
+      q(0),
+      ],
+   q(wuzlam) => [
+      q(6833),
+      q(0),
+      ],
+   q(wyandot) => [
+      q(7224),
+      q(0),
+      ],
+   q(wymysorys) => [
+      q(7226),
+      q(0),
+      ],
+   q(xaasongaxango) => [
+      q(3156),
+      q(0),
+      ],
+   q(xadani zapotec) => [
+      q(7737),
+      q(0),
+      ],
+   q(xakriaba) => [
+      q(7326),
+      q(0),
+      ],
+   q(xamtanga) => [
+      q(7237),
+      q(0),
+      ],
+   q(xanaguia zapotec) => [
+      q(7865),
+      q(0),
+      ],
+   q(xaracuu) => [
+      q(0796),
+      q(0),
+      ],
+   q(xaragure) => [
+      q(0992),
+      q(0),
+      ],
+   q(xavante) => [
+      q(7245),
+      q(0),
+      ],
+   q(xerente) => [
+      q(7282),
+      q(0),
+      ],
+   q(xeta) => [
+      q(7284),
+      q(0),
+      ],
+   q(xhosa) => [
+      q(0471),
+      q(0),
+      ],
+   q(xiandao) => [
+      q(7301),
+      q(0),
+      ],
+   q(xiang chinese) => [
+      q(2827),
+      q(0),
+      ],
+   q(xibe) => [
+      q(6036),
+      q(0),
+      ],
+   q(xicotepec de juarez totonac) => [
+      q(6613),
+      q(0),
+      ],
+   q(xinca) => [
+      q(7305),
+      q(0),
+      ],
+   q(xingu asurini) => [
+      q(0898),
+      q(0),
+      ],
+   q(xipaya) => [
+      q(7309),
+      q(0),
+      ],
+   q(xipinawa) => [
+      q(7306),
+      q(0),
+      ],
+   q(xiri) => [
+      q(7303),
+      q(0),
+      ],
+   q(xiriana) => [
+      q(7307),
+      q(0),
+      ],
+   q(xishanba lalo) => [
+      q(7707),
+      q(0),
+      ],
+   q(xokleng) => [
+      q(7387),
+      q(0),
+      ],
+   q(xukuru) => [
+      q(7390),
+      q(0),
+      ],
+   q(xwela gbe) => [
+      q(7480),
+      q(0),
+      ],
+   q(yaaku) => [
+      q(4574),
+      q(0),
+      ],
+   q(yabaana) => [
+      q(7527),
+      q(0),
+      ],
+   q(yabarana) => [
+      q(7509),
+      q(0),
+      ],
+   q(yabem) => [
+      q(3024),
+      q(0),
+      ],
+   q(yaben) => [
+      q(7526),
+      q(0),
+      ],
+   q(yabong) => [
+      q(7528),
+      q(0),
+      ],
+   q(yabula yabula) => [
+      q(7711),
+      q(0),
+      ],
+   q(yace) => [
+      q(2235),
+      q(0),
+      ],
+   q(yaeyama) => [
+      q(5854),
+      q(0),
+      ],
+   q(yafi) => [
+      q(7077),
+      q(0),
+      ],
+   q(yagara) => [
+      q(7710),
+      q(0),
+      ],
+   q(yagaria) => [
+      q(7556),
+      q(0),
+      ],
+   q(yagnobi) => [
+      q(7502),
+      q(0),
+      ],
+   q(yagomi) => [
+      q(7554),
+      q(0),
+      ],
+   q(yagua) => [
+      q(7497),
+      q(0),
+      ],
+   q(yagwoia) => [
+      q(7557),
+      q(0),
+      ],
+   q(yahadian) => [
+      q(4804),
+      q(0),
+      ],
+   q(yahang) => [
+      q(5759),
+      q(0),
+      ],
+   q(yahuna) => [
+      q(7634),
+      q(0),
+      ],
+   q(yaka (central african republic)) => [
+      q(0990),
+      q(0),
+      ],
+   q(yaka (congo)) => [
+      q(3016),
+      q(0),
+      ],
+   q(yaka (democratic republic of congo)) => [
+      q(7499),
+      q(0),
+      ],
+   q(yakaikeke) => [
+      q(7583),
+      q(0),
+      ],
+   q(yakama) => [
+      q(7504),
+      q(0),
+      ],
+   q(yakan) => [
+      q(7580),
+      q(0),
+      ],
+   q(yakha) => [
+      q(7521),
+      q(0),
+      ],
+   q(yakoma) => [
+      q(7591),
+      q(0),
+      ],
+   q(yakut) => [
+      q(0366),
+      q(0),
+      ],
+   q(yala) => [
+      q(7518),
+      q(0),
+      ],
+   q(yalahatan) => [
+      q(3029),
+      q(0),
+      ],
+   q(yalakalore) => [
+      q(7489),
+      q(0),
+      ],
+   q(yalalag zapotec) => [
+      q(7845),
+      q(0),
+      ],
+   q(yalarnnga) => [
+      q(7601),
+      q(0),
+      ],
+   q(yale) => [
+      q(4748),
+      q(0),
+      ],
+   q(yaleba) => [
+      q(7593),
+      q(0),
+      ],
+   q(yalunka) => [
+      q(7505),
+      q(0),
+      ],
+   q(yamana) => [
+      q(7500),
+      q(0),
+      ],
+   q(yamap) => [
+      q(7616),
+      q(0),
+      ],
+   q(yamba) => [
+      q(7506),
+      q(0),
+      ],
+   q(yambes) => [
+      q(7604),
+      q(0),
+      ],
+   q(yambeta) => [
+      q(7511),
+      q(0),
+      ],
+   q(yamdena) => [
+      q(3097),
+      q(0),
+      ],
+   q(yameo) => [
+      q(7607),
+      q(0),
+      ],
+   q(yami) => [
+      q(6337),
+      q(0),
+      ],
+   q(yaminahua) => [
+      q(7494),
+      q(0),
+      ],
+   q(yamna) => [
+      q(7614),
+      q(0),
+      ],
+   q(yamongeri) => [
+      q(7608),
+      q(0),
+      ],
+   q(yamphu) => [
+      q(7522),
+      q(0),
+      ],
+   q(yan-nhangu) => [
+      q(3038),
+      q(0),
+      ],
+   q(yana) => [
+      q(7630),
+      q(0),
+      ],
+   q(yanahuanca pasco quechua) => [
+      q(5667),
+      q(0),
+      ],
+   q(yanda dom dogon) => [
+      q(2199),
+      q(0),
+      ],
+   q(yandruwandha) => [
+      q(7624),
+      q(0),
+      ],
+   q(yanesha') => [
+      q(0771),
+      q(0),
+      ],
+   q(yang zhuang) => [
+      q(7882),
+      q(0),
+      ],
+   q(yangben) => [
+      q(7513),
+      q(0),
+      ],
+   q(yangho) => [
+      q(7627),
+      q(0),
+      ],
+   q(yangkam) => [
+      q(1470),
+      q(0),
+      ],
+   q(yangman) => [
+      q(3107),
+      q(0),
+      ],
+   q(yango) => [
+      q(7626),
+      q(0),
+      ],
+   q(yangulam) => [
+      q(7629),
+      q(0),
+      ],
+   q(yangum dey) => [
+      q(7536),
+      q(0),
+      ],
+   q(yangum gel) => [
+      q(7553),
+      q(0),
+      ],
+   q(yangum mon) => [
+      q(7615),
+      q(0),
+      ],
+   q(yankunytjatjara) => [
+      q(3215),
+      q(0),
+      ],
+   q(yanomami) => [
+      q(7058),
+      q(0),
+      ],
+   q(yanomamo) => [
+      q(2646),
+      q(0),
+      ],
+   q(yansi) => [
+      q(7633),
+      q(0),
+      ],
+   q(yanyuwa) => [
+      q(3032),
+      q(0),
+      ],
+   q(yao) => [
+      q(0472),
+      q(0),
+      ],
+   q(yaosakor asmat) => [
+      q(0908),
+      q(0),
+      ],
+   q(yaoure) => [
+      q(7657),
+      q(0),
+      ],
+   q(yapese) => [
+      q(0473),
+      q(0),
+      ],
+   q(yapunda) => [
+      q(7550),
+      q(0),
+      ],
+   q(yaqay) => [
+      q(3033),
+      q(0),
+      ],
+   q(yaqui) => [
+      q(7508),
+      q(0),
+      ],
+   q(yarawata) => [
+      q(7663),
+      q(0),
+      ],
+   q(yareba) => [
+      q(7656),
+      q(0),
+      ],
+   q(yareni zapotec) => [
+      q(7720),
+      q(0),
+      ],
+   q(yari) => [
+      q(7658),
+      q(0),
+      ],
+   q(yarsun) => [
+      q(7662),
+      q(0),
+      ],
+   q(yasa) => [
+      q(7587),
+      q(0),
+      ],
+   q(yassic) => [
+      q(7664),
+      q(0),
+      ],
+   q(yatee zapotec) => [
+      q(7875),
+      q(0),
+      ],
+   q(yatzachi zapotec) => [
+      q(7735),
+      q(0),
+      ],
+   q(yau (morobe province)) => [
+      q(7696),
+      q(0),
+      ],
+   q(yau (sandaun province)) => [
+      q(7712),
+      q(0),
+      ],
+   q(yaul) => [
+      q(7592),
+      q(0),
+      ],
+   q(yauma) => [
+      q(7515),
+      q(0),
+      ],
+   q(yaur) => [
+      q(3036),
+      q(0),
+      ],
+   q(yautepec zapotec) => [
+      q(7826),
+      q(0),
+      ],
+   q(yauyos quechua) => [
+      q(5671),
+      q(0),
+      ],
+   q(yavitero) => [
+      q(7701),
+      q(0),
+      ],
+   q(yawa) => [
+      q(7700),
+      q(0),
+      ],
+   q(yawalapiti) => [
+      q(7514),
+      q(0),
+      ],
+   q(yawanawa) => [
+      q(7704),
+      q(0),
+      ],
+   q(yawarawarga) => [
+      q(7709),
+      q(0),
+      ],
+   q(yaweyuha) => [
+      q(7530),
+      q(0),
+      ],
+   q(yawijibaya) => [
+      q(3047),
+      q(0),
+      ],
+   q(yawiyo) => [
+      q(7529),
+      q(0),
+      ],
+   q(yawuru) => [
+      q(7706),
+      q(0),
+      ],
+   q(yazgulyam) => [
+      q(7501),
+      q(0),
+      ],
+   q(yecuatla totonac) => [
+      q(6536),
+      q(0),
+      ],
+   q(yei) => [
+      q(3057),
+      q(0),
+      ],
+   q(yekhee) => [
+      q(2301),
+      q(0),
+      ],
+   q(yekora) => [
+      q(7588),
+      q(0),
+      ],
+   q(yela) => [
+      q(7545),
+      q(0),
+      ],
+   q(yele) => [
+      q(7594),
+      q(0),
+      ],
+   q(yelmek) => [
+      q(3059),
+      q(0),
+      ],
+   q(yelogu) => [
+      q(7595),
+      q(0),
+      ],
+   q(yemba) => [
+      q(7519),
+      q(0),
+      ],
+   q(yemsa) => [
+      q(3109),
+      q(0),
+      ],
+   q(yendang) => [
+      q(7632),
+      q(0),
+      ],
+   q(yeni) => [
+      q(7543),
+      q(0),
+      ],
+   q(yeniche) => [
+      q(7541),
+      q(0),
+      ],
+   q(yerakai) => [
+      q(7655),
+      q(0),
+      ],
+   q(yeretuar) => [
+      q(2583),
+      q(0),
+      ],
+   q(yerong) => [
+      q(7661),
+      q(0),
+      ],
+   q(yerukula) => [
+      q(7549),
+      q(0),
+      ],
+   q(yessan-mayo) => [
+      q(7672),
+      q(0),
+      ],
+   q(yetfa) => [
+      q(7548),
+      q(0),
+      ],
+   q(yevanic) => [
+      q(7544),
+      q(0),
+      ],
+   q(yeyi) => [
+      q(7551),
+      q(0),
+      ],
+   q(yiddish) => [
+      q(0474),
+      q(0),
+      ],
+   q(yiddish sign language) => [
+      q(7539),
+      q(0),
+      ],
+   q(yidgha) => [
+      q(7537),
+      q(0),
+      ],
+   q(yidiny) => [
+      q(7564),
+      q(0),
+      ],
+   q(yil) => [
+      q(7597),
+      q(0),
+      ],
+   q(yimas) => [
+      q(7542),
+      q(0),
+      ],
+   q(yimchungru naga) => [
+      q(7568),
+      q(0),
+      ],
+   q(yinbaw karen) => [
+      q(3665),
+      q(0),
+      ],
+   q(yinchia) => [
+      q(7569),
+      q(0),
+      ],
+   q(yindjibarndi) => [
+      q(7565),
+      q(0),
+      ],
+   q(yindjilandji) => [
+      q(7567),
+      q(0),
+      ],
+   q(yine) => [
+      q(5425),
+      q(0),
+      ],
+   q(yinggarda) => [
+      q(7561),
+      q(0),
+      ],
+   q(yintale) => [
+      q(3669),
+      q(0),
+      ],
+   q(yintale karen) => [
+      q(3669),
+      q(0),
+      ],
+   q(yipma) => [
+      q(1607),
+      q(0),
+      ],
+   q(yir yoront) => [
+      q(7578),
+      q(0),
+      ],
+   q(yis) => [
+      q(7573),
+      q(0),
+      ],
+   q(yiwom) => [
+      q(2470),
+      q(0),
+      ],
+   q(yoba) => [
+      q(7635),
+      q(0),
+      ],
+   q(yocoboue dida) => [
+      q(2630),
+      q(0),
+      ],
+   q(yogad) => [
+      q(7636),
+      q(0),
+      ],
+   q(yoidik) => [
+      q(7538),
+      q(0),
+      ],
+   q(yoke) => [
+      q(7582),
+      q(0),
+      ],
+   q(yokuts) => [
+      q(7638),
+      q(0),
+      ],
+   q(yola) => [
+      q(7639),
+      q(0),
+      ],
+   q(yoloxochitl mixtec) => [
+      q(7459),
+      q(0),
+      ],
+   q(yom) => [
+      q(5434),
+      q(0),
+      ],
+   q(yombe) => [
+      q(7640),
+      q(0),
+      ],
+   q(yonaguni) => [
+      q(7637),
+      q(0),
+      ],
+   q(yong) => [
+      q(7631),
+      q(0),
+      ],
+   q(yongbei zhuang) => [
+      q(7881),
+      q(0),
+      ],
+   q(yongkom) => [
+      q(7641),
+      q(0),
+      ],
+   q(yongnan zhuang) => [
+      q(7884),
+      q(0),
+      ],
+   q(yopno) => [
+      q(7694),
+      q(0),
+      ],
+   q(yora) => [
+      q(4551),
+      q(0),
+      ],
+   q(yoron) => [
+      q(7644),
+      q(0),
+      ],
+   q(yorta yorta) => [
+      q(7490),
+      q(0),
+      ],
+   q(yoruba) => [
+      q(0475),
+      q(0),
+      ],
+   q(yos) => [
+      q(7642),
+      q(0),
+      ],
+   q(yosondua mixtec) => [
+      q(4445),
+      q(0),
+      ],
+   q(yotti) => [
+      q(7643),
+      q(0),
+      ],
+   q(youjiang zhuang) => [
+      q(7883),
+      q(0),
+      ],
+   q(youle jinuo) => [
+      q(3083),
+      q(0),
+      ],
+   q(younuo bunu) => [
+      q(1501),
+      q(0),
+      ],
+   q(yout wam) => [
+      q(7677),
+      q(0),
+      ],
+   q(yoy) => [
+      q(7645),
+      q(0),
+      ],
+   q(yuaga) => [
+      q(5081),
+      q(0),
+      ],
+   q(yucatec maya) => [
+      q(7678),
+      q(0),
+      ],
+   q(yucatec maya sign language) => [
+      q(4511),
+      q(0),
+      ],
+   q(yucateco) => [
+      q(7678),
+      q(0),
+      ],
+   q(yuchi) => [
+      q(7680),
+      q(0),
+      ],
+   q(yucuane mixtec) => [
+      q(4584),
+      q(0),
+      ],
+   q(yucuna) => [
+      q(7533),
+      q(0),
+      ],
+   q(yue chinese) => [
+      q(7682),
+      q(0),
+      ],
+   q(yug) => [
+      q(7684),
+      q(0),
+      ],
+   q(yugambal) => [
+      q(7679),
+      q(0),
+      ],
+   q(yugh) => [
+      q(7695),
+      q(0),
+      ],
+   q(yugoslavian sign language) => [
+      q(7667),
+      q(0),
+      ],
+   q(yuhup) => [
+      q(7495),
+      q(0),
+      ],
+   q(yuki) => [
+      q(7687),
+      q(0),
+      ],
+   q(yukpa) => [
+      q(7691),
+      q(0),
+      ],
+   q(yukuben) => [
+      q(7525),
+      q(0),
+      ],
+   q(yulu) => [
+      q(7688),
+      q(0),
+      ],
+   q(yupik languages) => [
+      q(0476),
+      q(0),
+      ],
+   q(yuqui) => [
+      q(7692),
+      q(0),
+      ],
+   q(yuracare) => [
+      q(7699),
+      q(0),
+      ],
+   q(yurok) => [
+      q(7693),
+      q(0),
+      ],
+   q(yuruti) => [
+      q(7685),
+      q(0),
+      ],
+   q(yutanduchi mixtec) => [
+      q(4090),
+      q(0),
+      ],
+   q(yuwana) => [
+      q(7512),
+      q(0),
+      ],
+   q(zaachila zapotec) => [
+      q(7874),
+      q(0),
+      ],
+   q(zabana) => [
+      q(3364),
+      q(0),
+      ],
+   q(zacatepec chatino) => [
+      q(1900),
+      q(0),
+      ],
+   q(zacatlan-ahuacatlan-tepetzintla nahuatl) => [
+      q(4850),
+      q(0),
+      ],
+   q(zaghawa) => [
+      q(7722),
+      q(0),
+      ],
+   q(zaiwa) => [
+      q(0911),
+      q(0),
+      ],
+   q(zakhring) => [
+      q(7778),
+      q(0),
+      ],
+   q(zambian sign language) => [
+      q(7860),
+      q(0),
+      ],
+   q(zan gula) => [
+      q(7813),
+      q(0),
+      ],
+   q(zanaki) => [
+      q(7726),
+      q(0),
+      ],
+   q(zande (individual language)) => [
+      q(7814),
+      q(0),
+      ],
+   q(zande languages) => [
+      q(0482),
+      q(0),
+      ],
+   q(zangskari) => [
+      q(7734),
+      q(0),
+      ],
+   q(zangwal) => [
+      q(7723),
+      q(0),
+      ],
+   q(zaniza zapotec) => [
+      q(7847),
+      q(0),
+      ],
+   q(zaparo) => [
+      q(7855),
+      q(0),
+      ],
+   q(zapotec) => [
+      q(0477),
+      q(0),
+      ],
+   q(zaramo) => [
+      q(7725),
+      q(0),
+      ],
+   q(zari) => [
+      q(7739),
+      q(0),
+      ],
+   q(zarma) => [
+      q(2060),
+      q(0),
+      ],
+   q(zarphatic) => [
+      q(7856),
+      q(0),
+      ],
+   q(zauzou) => [
+      q(7727),
+      q(0),
+      ],
+   q(zay) => [
+      q(7880),
+      q(0),
+      ],
+   q(zayein karen) => [
+      q(3706),
+      q(0),
+      ],
+   q(zayse-zergulla) => [
+      q(7738),
+      q(0),
+      ],
+   q(zaysete) => [
+      q(7738),
+      q(0),
+      ],
+   q(zaza) => [
+      q(0486),
+      q(0),
+      ],
+   q(zazaki) => [
+      q(0486),
+      q(0),
+      ],
+   q(zazao) => [
+      q(3027),
+      q(0),
+      ],
+   q(zeem) => [
+      q(7876),
+      q(0),
+      ],
+   q(zeeuws) => [
+      q(7747),
+      q(0),
+      ],
+   q(zemba) => [
+      q(2025),
+      q(0),
+      ],
+   q(zeme naga) => [
+      q(5156),
+      q(0),
+      ],
+   q(zemgalian) => [
+      q(7492),
+      q(0),
+      ],
+   q(zenag) => [
+      q(7748),
+      q(0),
+      ],
+   q(zenaga) => [
+      q(0479),
+      q(0),
+      ],
+   q(zenzontepec chatino) => [
+      q(1933),
+      q(0),
+      ],
+   q(zerenkel) => [
+      q(7854),
+      q(0),
+      ],
+   q(zhaba) => [
+      q(7755),
+      q(0),
+      ],
+   q(zhang-zhung) => [
+      q(7491),
+      q(0),
+      ],
+   q(zhire) => [
+      q(7757),
+      q(0),
+      ],
+   q(zhoa) => [
+      q(7759),
+      q(0),
+      ],
+   q(zhuang) => [
+      q(0481),
+      q(0),
+      ],
+   q(zia) => [
+      q(7760),
+      q(0),
+      ],
+   q(zialo) => [
+      q(7763),
+      q(0),
+      ],
+   q(zigula) => [
+      q(7767),
+      q(0),
+      ],
+   q(zimakani) => [
+      q(7762),
+      q(0),
+      ],
+   q(zimba) => [
+      q(7788),
+      q(0),
+      ],
+   q(zimbabwe sign language) => [
+      q(7761),
+      q(0),
+      ],
+   q(zinza) => [
+      q(7765),
+      q(0),
+      ],
+   q(zire) => [
+      q(6011),
+      q(0),
+      ],
+   q(ziriya) => [
+      q(7766),
+      q(0),
+      ],
+   q(zizilivakan) => [
+      q(7768),
+      q(0),
+      ],
+   q(zo'e) => [
+      q(5607),
+      q(0),
+      ],
+   q(zokhuo) => [
+      q(7715),
+      q(0),
+      ],
+   q(zoogocho zapotec) => [
+      q(7841),
+      q(0),
+      ],
+   q(zoroastrian dari) => [
+      q(2433),
+      q(0),
+      ],
+   q(zorop) => [
+      q(7077),
+      q(0),
+      ],
+   q(zotung chin) => [
+      q(1935),
+      q(0),
+      ],
+   q(zou) => [
+      q(7820),
+      q(0),
+      ],
+   q(zulgo-gemzek) => [
+      q(2554),
+      q(0),
+      ],
+   q(zulu) => [
+      q(0483),
+      q(0),
+      ],
+   q(zumaya) => [
+      q(7879),
+      q(0),
+      ],
+   q(zumbun) => [
+      q(3095),
+      q(0),
+      ],
+   q(zuni) => [
+      q(0484),
+      q(0),
+      ],
+   q(zuojiang zhuang) => [
+      q(7886),
+      q(0),
+      ],
+   q(zyphe) => [
+      q(7885),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'language'}{'code2id'} = {
+   q(alpha-2) => {
+      q(aa) => [
+         q(0001),
+         q(0),
+         ],
+      q(ab) => [
+         q(0002),
+         q(0),
+         ],
+      q(ae) => [
+         q(0034),
+         q(0),
+         ],
+      q(af) => [
+         q(0009),
+         q(0),
+         ],
+      q(ak) => [
+         q(0011),
+         q(0),
+         ],
+      q(am) => [
+         q(0017),
+         q(0),
+         ],
+      q(an) => [
+         q(0023),
+         q(0),
+         ],
+      q(ar) => [
+         q(0021),
+         q(0),
+         ],
+      q(as) => [
+         q(0029),
+         q(0),
+         ],
+      q(av) => [
+         q(0033),
+         q(0),
+         ],
+      q(ay) => [
+         q(0036),
+         q(0),
+         ],
+      q(az) => [
+         q(0037),
+         q(0),
+         ],
+      q(ba) => [
+         q(0040),
+         q(0),
+         ],
+      q(be) => [
+         q(0048),
+         q(0),
+         ],
+      q(bg) => [
+         q(0065),
+         q(0),
+         ],
+      q(bh) => [
+         q(0053),
+         q(0),
+         ],
+      q(bi) => [
+         q(0056),
+         q(0),
+         ],
+      q(bm) => [
+         q(0042),
+         q(0),
+         ],
+      q(bn) => [
+         q(0050),
+         q(0),
+         ],
+      q(bo) => [
+         q(0427),
+         q(0),
+         ],
+      q(br) => [
+         q(0061),
+         q(0),
+         ],
+      q(bs) => [
+         q(0059),
+         q(0),
+         ],
+      q(ca) => [
+         q(0071),
+         q(0),
+         ],
+      q(ce) => [
+         q(0077),
+         q(0),
+         ],
+      q(ch) => [
+         q(0075),
+         q(0),
+         ],
+      q(co) => [
+         q(0092),
+         q(0),
+         ],
+      q(cr) => [
+         q(0096),
+         q(0),
+         ],
+      q(cs) => [
+         q(0101),
+         q(0),
+         ],
+      q(cu) => [
+         q(0086),
+         q(0),
+         ],
+      q(cv) => [
+         q(0087),
+         q(0),
+         ],
+      q(cy) => [
+         q(0466),
+         q(0),
+         ],
+      q(da) => [
+         q(0103),
+         q(0),
+         ],
+      q(de) => [
+         q(0150),
+         q(0),
+         ],
+      q(dv) => [
+         q(0110),
+         q(0),
+         ],
+      q(dz) => [
+         q(0118),
+         q(0),
+         ],
+      q(ee) => [
+         q(0127),
+         q(0),
+         ],
+      q(el) => [
+         q(0164),
+         q(1),
+         ],
+      q(en) => [
+         q(0123),
+         q(0),
+         ],
+      q(eo) => [
+         q(0125),
+         q(0),
+         ],
+      q(es) => [
+         q(0401),
+         q(0),
+         ],
+      q(et) => [
+         q(0126),
+         q(0),
+         ],
+      q(eu) => [
+         q(0044),
+         q(0),
+         ],
+      q(fa) => [
+         q(0342),
+         q(0),
+         ],
+      q(ff) => [
+         q(0143),
+         q(0),
+         ],
+      q(fi) => [
+         q(0134),
+         q(0),
+         ],
+      q(fj) => [
+         q(0132),
+         q(0),
+         ],
+      q(fo) => [
+         q(0130),
+         q(0),
+         ],
+      q(fr) => [
+         q(0137),
+         q(0),
+         ],
+      q(fy) => [
+         q(0142),
+         q(0),
+         ],
+      q(ga) => [
+         q(0154),
+         q(0),
+         ],
+      q(gd) => [
+         q(0153),
+         q(0),
+         ],
+      q(gl) => [
+         q(0155),
+         q(0),
+         ],
+      q(gn) => [
+         q(0165),
+         q(0),
+         ],
+      q(gu) => [
+         q(0167),
+         q(0),
+         ],
+      q(gv) => [
+         q(0156),
+         q(0),
+         ],
+      q(ha) => [
+         q(0171),
+         q(0),
+         ],
+      q(he) => [
+         q(0173),
+         q(0),
+         ],
+      q(hi) => [
+         q(0177),
+         q(0),
+         ],
+      q(ho) => [
+         q(0180),
+         q(0),
+         ],
+      q(hr) => [
+         q(0181),
+         q(0),
+         ],
+      q(ht) => [
+         q(0170),
+         q(0),
+         ],
+      q(hu) => [
+         q(0183),
+         q(0),
+         ],
+      q(hy) => [
+         q(0024),
+         q(0),
+         ],
+      q(hz) => [
+         q(0174),
+         q(0),
+         ],
+      q(ia) => [
+         q(0194),
+         q(0),
+         ],
+      q(id) => [
+         q(0196),
+         q(0),
+         ],
+      q(ie) => [
+         q(0192),
+         q(0),
+         ],
+      q(ig) => [
+         q(0186),
+         q(0),
+         ],
+      q(ii) => [
+         q(0189),
+         q(0),
+         ],
+      q(ik) => [
+         q(0199),
+         q(0),
+         ],
+      q(io) => [
+         q(0188),
+         q(0),
+         ],
+      q(is) => [
+         q(0187),
+         q(0),
+         ],
+      q(it) => [
+         q(0202),
+         q(0),
+         ],
+      q(iu) => [
+         q(0191),
+         q(0),
+         ],
+      q(ja) => [
+         q(0205),
+         q(0),
+         ],
+      q(jv) => [
+         q(0203),
+         q(0),
+         ],
+      q(ka) => [
+         q(0149),
+         q(0),
+         ],
+      q(kg) => [
+         q(0230),
+         q(0),
+         ],
+      q(ki) => [
+         q(0224),
+         q(0),
+         ],
+      q(kj) => [
+         q(0238),
+         q(0),
+         ],
+      q(kk) => [
+         q(0218),
+         q(0),
+         ],
+      q(kl) => [
+         q(0211),
+         q(0),
+         ],
+      q(km) => [
+         q(0222),
+         q(0),
+         ],
+      q(kn) => [
+         q(0213),
+         q(0),
+         ],
+      q(ko) => [
+         q(0231),
+         q(0),
+         ],
+      q(kr) => [
+         q(0216),
+         q(0),
+         ],
+      q(ks) => [
+         q(0215),
+         q(0),
+         ],
+      q(ku) => [
+         q(0240),
+         q(0),
+         ],
+      q(kv) => [
+         q(0229),
+         q(0),
+         ],
+      q(kw) => [
+         q(0091),
+         q(0),
+         ],
+      q(ky) => [
+         q(0226),
+         q(0),
+         ],
+      q(la) => [
+         q(0246),
+         q(0),
+         ],
+      q(lb) => [
+         q(0254),
+         q(0),
+         ],
+      q(lg) => [
+         q(0257),
+         q(0),
+         ],
+      q(li) => [
+         q(0249),
+         q(0),
+         ],
+      q(ln) => [
+         q(0250),
+         q(0),
+         ],
+      q(lo) => [
+         q(0245),
+         q(0),
+         ],
+      q(lt) => [
+         q(0251),
+         q(0),
+         ],
+      q(lu) => [
+         q(0256),
+         q(0),
+         ],
+      q(lv) => [
+         q(0247),
+         q(0),
+         ],
+      q(mg) => [
+         q(0283),
+         q(0),
+         ],
+      q(mh) => [
+         q(0265),
+         q(0),
+         ],
+      q(mi) => [
+         q(0270),
+         q(0),
+         ],
+      q(mk) => [
+         q(0262),
+         q(0),
+         ],
+      q(ml) => [
+         q(0268),
+         q(0),
+         ],
+      q(mn) => [
+         q(0289),
+         q(0),
+         ],
+      q(mr) => [
+         q(0272),
+         q(0),
+         ],
+      q(ms) => [
+         q(0274),
+         q(1),
+         ],
+      q(mt) => [
+         q(0284),
+         q(0),
+         ],
+      q(my) => [
+         q(0066),
+         q(0),
+         ],
+      q(na) => [
+         q(0301),
+         q(0),
+         ],
+      q(nb) => [
+         q(0313),
+         q(0),
+         ],
+      q(nd) => [
+         q(0304),
+         q(0),
+         ],
+      q(ne) => [
+         q(0307),
+         q(1),
+         ],
+      q(ng) => [
+         q(0305),
+         q(0),
+         ],
+      q(nl) => [
+         q(0116),
+         q(0),
+         ],
+      q(nn) => [
+         q(0312),
+         q(0),
+         ],
+      q(no) => [
+         q(0316),
+         q(0),
+         ],
+      q(nr) => [
+         q(0303),
+         q(0),
+         ],
+      q(nv) => [
+         q(0302),
+         q(0),
+         ],
+      q(ny) => [
+         q(0321),
+         q(0),
+         ],
+      q(oc) => [
+         q(0326),
+         q(0),
+         ],
+      q(oj) => [
+         q(0327),
+         q(0),
+         ],
+      q(om) => [
+         q(0329),
+         q(0),
+         ],
+      q(or) => [
+         q(0328),
+         q(1),
+         ],
+      q(os) => [
+         q(0331),
+         q(0),
+         ],
+      q(pa) => [
+         q(0338),
+         q(0),
+         ],
+      q(pi) => [
+         q(0345),
+         q(0),
+         ],
+      q(pl) => [
+         q(0346),
+         q(0),
+         ],
+      q(ps) => [
+         q(0351),
+         q(0),
+         ],
+      q(pt) => [
+         q(0348),
+         q(0),
+         ],
+      q(qu) => [
+         q(0353),
+         q(0),
+         ],
+      q(rm) => [
+         q(0358),
+         q(0),
+         ],
+      q(rn) => [
+         q(0361),
+         q(0),
+         ],
+      q(ro) => [
+         q(0360),
+         q(0),
+         ],
+      q(ru) => [
+         q(0363),
+         q(0),
+         ],
+      q(rw) => [
+         q(0225),
+         q(0),
+         ],
+      q(sa) => [
+         q(0370),
+         q(0),
+         ],
+      q(sc) => [
+         q(0402),
+         q(0),
+         ],
+      q(sd) => [
+         q(0395),
+         q(0),
+         ],
+      q(se) => [
+         q(0388),
+         q(0),
+         ],
+      q(sg) => [
+         q(0365),
+         q(0),
+         ],
+      q(sh) => [
+         q(0537),
+         q(0),
+         ],
+      q(si) => [
+         q(0381),
+         q(0),
+         ],
+      q(sk) => [
+         q(0385),
+         q(0),
+         ],
+      q(sl) => [
+         q(0386),
+         q(0),
+         ],
+      q(sm) => [
+         q(0392),
+         q(0),
+         ],
+      q(sn) => [
+         q(0394),
+         q(0),
+         ],
+      q(so) => [
+         q(0398),
+         q(0),
+         ],
+      q(sq) => [
+         q(0013),
+         q(0),
+         ],
+      q(sr) => [
+         q(0404),
+         q(0),
+         ],
+      q(ss) => [
+         q(0407),
+         q(0),
+         ],
+      q(st) => [
+         q(0400),
+         q(1),
+         ],
+      q(su) => [
+         q(0409),
+         q(0),
+         ],
+      q(sv) => [
+         q(0413),
+         q(0),
+         ],
+      q(sw) => [
+         q(0412),
+         q(1),
+         ],
+      q(ta) => [
+         q(0418),
+         q(0),
+         ],
+      q(te) => [
+         q(0420),
+         q(0),
+         ],
+      q(tg) => [
+         q(0424),
+         q(0),
+         ],
+      q(th) => [
+         q(0426),
+         q(0),
+         ],
+      q(ti) => [
+         q(0429),
+         q(0),
+         ],
+      q(tk) => [
+         q(0441),
+         q(0),
+         ],
+      q(tl) => [
+         q(0425),
+         q(0),
+         ],
+      q(tn) => [
+         q(0439),
+         q(0),
+         ],
+      q(to) => [
+         q(0436),
+         q(0),
+         ],
+      q(tr) => [
+         q(0444),
+         q(0),
+         ],
+      q(ts) => [
+         q(0440),
+         q(0),
+         ],
+      q(tt) => [
+         q(0419),
+         q(0),
+         ],
+      q(tw) => [
+         q(0447),
+         q(0),
+         ],
+      q(ty) => [
+         q(0416),
+         q(0),
+         ],
+      q(ug) => [
+         q(0451),
+         q(0),
+         ],
+      q(uk) => [
+         q(0452),
+         q(0),
+         ],
+      q(ur) => [
+         q(0455),
+         q(0),
+         ],
+      q(uz) => [
+         q(0456),
+         q(0),
+         ],
+      q(ve) => [
+         q(0458),
+         q(0),
+         ],
+      q(vi) => [
+         q(0459),
+         q(0),
+         ],
+      q(vo) => [
+         q(0460),
+         q(0),
+         ],
+      q(wa) => [
+         q(0468),
+         q(0),
+         ],
+      q(wo) => [
+         q(0469),
+         q(0),
+         ],
+      q(xh) => [
+         q(0471),
+         q(0),
+         ],
+      q(yi) => [
+         q(0474),
+         q(0),
+         ],
+      q(yo) => [
+         q(0475),
+         q(0),
+         ],
+      q(za) => [
+         q(0481),
+         q(0),
+         ],
+      q(zh) => [
+         q(0079),
+         q(0),
+         ],
+      q(zu) => [
+         q(0483),
+         q(0),
+         ],
+      },
+   q(alpha-3) => {
+      q(aaa) => [
+         q(0538),
+         q(0),
+         ],
+      q(aab) => [
+         q(0539),
+         q(0),
+         ],
+      q(aac) => [
+         q(0540),
+         q(0),
+         ],
+      q(aad) => [
+         q(0541),
+         q(0),
+         ],
+      q(aae) => [
+         q(0542),
+         q(0),
+         ],
+      q(aaf) => [
+         q(0543),
+         q(0),
+         ],
+      q(aag) => [
+         q(0544),
+         q(0),
+         ],
+      q(aah) => [
+         q(0545),
+         q(0),
+         ],
+      q(aai) => [
+         q(0546),
+         q(0),
+         ],
+      q(aak) => [
+         q(0547),
+         q(0),
+         ],
+      q(aal) => [
+         q(0548),
+         q(0),
+         ],
+      q(aam) => [
+         q(0549),
+         q(0),
+         ],
+      q(aan) => [
+         q(0550),
+         q(0),
+         ],
+      q(aao) => [
+         q(0551),
+         q(0),
+         ],
+      q(aap) => [
+         q(0552),
+         q(0),
+         ],
+      q(aaq) => [
+         q(0553),
+         q(0),
+         ],
+      q(aar) => [
+         q(0001),
+         q(0),
+         ],
+      q(aas) => [
+         q(0554),
+         q(0),
+         ],
+      q(aat) => [
+         q(0555),
+         q(0),
+         ],
+      q(aau) => [
+         q(0556),
+         q(0),
+         ],
+      q(aav) => [
+         q(0487),
+         q(0),
+         ],
+      q(aaw) => [
+         q(0557),
+         q(0),
+         ],
+      q(aax) => [
+         q(0558),
+         q(0),
+         ],
+      q(aaz) => [
+         q(0559),
+         q(0),
+         ],
+      q(aba) => [
+         q(0560),
+         q(0),
+         ],
+      q(abb) => [
+         q(0561),
+         q(0),
+         ],
+      q(abc) => [
+         q(0562),
+         q(0),
+         ],
+      q(abd) => [
+         q(0563),
+         q(0),
+         ],
+      q(abe) => [
+         q(0564),
+         q(0),
+         ],
+      q(abf) => [
+         q(0565),
+         q(0),
+         ],
+      q(abg) => [
+         q(0566),
+         q(0),
+         ],
+      q(abh) => [
+         q(0567),
+         q(0),
+         ],
+      q(abi) => [
+         q(0568),
+         q(0),
+         ],
+      q(abj) => [
+         q(0569),
+         q(0),
+         ],
+      q(abk) => [
+         q(0002),
+         q(0),
+         ],
+      q(abl) => [
+         q(0570),
+         q(0),
+         ],
+      q(abm) => [
+         q(0571),
+         q(0),
+         ],
+      q(abn) => [
+         q(0572),
+         q(0),
+         ],
+      q(abo) => [
+         q(0573),
+         q(0),
+         ],
+      q(abp) => [
+         q(0574),
+         q(0),
+         ],
+      q(abq) => [
+         q(0575),
+         q(0),
+         ],
+      q(abr) => [
+         q(0576),
+         q(0),
+         ],
+      q(abs) => [
+         q(0577),
+         q(0),
+         ],
+      q(abt) => [
+         q(0578),
+         q(0),
+         ],
+      q(abu) => [
+         q(0579),
+         q(0),
+         ],
+      q(abv) => [
+         q(0580),
+         q(0),
+         ],
+      q(abw) => [
+         q(0581),
+         q(0),
+         ],
+      q(abx) => [
+         q(0582),
+         q(0),
+         ],
+      q(aby) => [
+         q(0583),
+         q(0),
+         ],
+      q(abz) => [
+         q(0584),
+         q(0),
+         ],
+      q(aca) => [
+         q(0585),
+         q(0),
+         ],
+      q(acb) => [
+         q(0586),
+         q(0),
+         ],
+      q(acd) => [
+         q(0587),
+         q(0),
+         ],
+      q(ace) => [
+         q(0003),
+         q(0),
+         ],
+      q(acf) => [
+         q(0588),
+         q(0),
+         ],
+      q(ach) => [
+         q(0004),
+         q(0),
+         ],
+      q(aci) => [
+         q(0589),
+         q(0),
+         ],
+      q(ack) => [
+         q(0590),
+         q(0),
+         ],
+      q(acl) => [
+         q(0591),
+         q(0),
+         ],
+      q(acm) => [
+         q(0592),
+         q(0),
+         ],
+      q(acn) => [
+         q(0593),
+         q(0),
+         ],
+      q(acp) => [
+         q(0594),
+         q(0),
+         ],
+      q(acq) => [
+         q(0595),
+         q(0),
+         ],
+      q(acr) => [
+         q(0596),
+         q(0),
+         ],
+      q(acs) => [
+         q(0597),
+         q(0),
+         ],
+      q(act) => [
+         q(0598),
+         q(0),
+         ],
+      q(acu) => [
+         q(0599),
+         q(0),
+         ],
+      q(acv) => [
+         q(0600),
+         q(0),
+         ],
+      q(acw) => [
+         q(0601),
+         q(0),
+         ],
+      q(acx) => [
+         q(0602),
+         q(0),
+         ],
+      q(acy) => [
+         q(0603),
+         q(0),
+         ],
+      q(acz) => [
+         q(0604),
+         q(0),
+         ],
+      q(ada) => [
+         q(0005),
+         q(0),
+         ],
+      q(adb) => [
+         q(0605),
+         q(0),
+         ],
+      q(add) => [
+         q(0606),
+         q(0),
+         ],
+      q(ade) => [
+         q(0607),
+         q(0),
+         ],
+      q(adf) => [
+         q(0608),
+         q(0),
+         ],
+      q(adg) => [
+         q(0609),
+         q(0),
+         ],
+      q(adh) => [
+         q(0610),
+         q(0),
+         ],
+      q(adi) => [
+         q(0611),
+         q(0),
+         ],
+      q(adj) => [
+         q(0612),
+         q(0),
+         ],
+      q(adl) => [
+         q(0613),
+         q(0),
+         ],
+      q(adn) => [
+         q(0614),
+         q(0),
+         ],
+      q(ado) => [
+         q(0615),
+         q(0),
+         ],
+      q(adp) => [
+         q(0616),
+         q(0),
+         ],
+      q(adq) => [
+         q(0617),
+         q(0),
+         ],
+      q(adr) => [
+         q(0618),
+         q(0),
+         ],
+      q(ads) => [
+         q(0619),
+         q(0),
+         ],
+      q(adt) => [
+         q(0620),
+         q(0),
+         ],
+      q(adu) => [
+         q(0621),
+         q(0),
+         ],
+      q(adw) => [
+         q(0622),
+         q(0),
+         ],
+      q(adx) => [
+         q(0623),
+         q(0),
+         ],
+      q(ady) => [
+         q(0006),
+         q(0),
+         ],
+      q(adz) => [
+         q(0624),
+         q(0),
+         ],
+      q(aea) => [
+         q(0625),
+         q(0),
+         ],
+      q(aeb) => [
+         q(0626),
+         q(0),
+         ],
+      q(aec) => [
+         q(0627),
+         q(0),
+         ],
+      q(aed) => [
+         q(0628),
+         q(0),
+         ],
+      q(aee) => [
+         q(0629),
+         q(0),
+         ],
+      q(aek) => [
+         q(0630),
+         q(0),
+         ],
+      q(ael) => [
+         q(0631),
+         q(0),
+         ],
+      q(aem) => [
+         q(0632),
+         q(0),
+         ],
+      q(aen) => [
+         q(0633),
+         q(0),
+         ],
+      q(aeq) => [
+         q(0634),
+         q(0),
+         ],
+      q(aer) => [
+         q(0635),
+         q(0),
+         ],
+      q(aes) => [
+         q(0636),
+         q(0),
+         ],
+      q(aeu) => [
+         q(0637),
+         q(0),
+         ],
+      q(aew) => [
+         q(0638),
+         q(0),
+         ],
+      q(aey) => [
+         q(0639),
+         q(0),
+         ],
+      q(aez) => [
+         q(0640),
+         q(0),
+         ],
+      q(afa) => [
+         q(0007),
+         q(0),
+         ],
+      q(afb) => [
+         q(0641),
+         q(0),
+         ],
+      q(afd) => [
+         q(0642),
+         q(0),
+         ],
+      q(afe) => [
+         q(0643),
+         q(0),
+         ],
+      q(afg) => [
+         q(0644),
+         q(0),
+         ],
+      q(afh) => [
+         q(0008),
+         q(0),
+         ],
+      q(afi) => [
+         q(0645),
+         q(0),
+         ],
+      q(afk) => [
+         q(0646),
+         q(0),
+         ],
+      q(afn) => [
+         q(0647),
+         q(0),
+         ],
+      q(afo) => [
+         q(0648),
+         q(0),
+         ],
+      q(afp) => [
+         q(0649),
+         q(0),
+         ],
+      q(afr) => [
+         q(0009),
+         q(0),
+         ],
+      q(afs) => [
+         q(0650),
+         q(0),
+         ],
+      q(aft) => [
+         q(0651),
+         q(0),
+         ],
+      q(afu) => [
+         q(0652),
+         q(0),
+         ],
+      q(afz) => [
+         q(0653),
+         q(0),
+         ],
+      q(aga) => [
+         q(0654),
+         q(0),
+         ],
+      q(agb) => [
+         q(0655),
+         q(0),
+         ],
+      q(agc) => [
+         q(0656),
+         q(0),
+         ],
+      q(agd) => [
+         q(0657),
+         q(0),
+         ],
+      q(age) => [
+         q(0658),
+         q(0),
+         ],
+      q(agf) => [
+         q(0659),
+         q(0),
+         ],
+      q(agg) => [
+         q(0660),
+         q(0),
+         ],
+      q(agh) => [
+         q(0661),
+         q(0),
+         ],
+      q(agi) => [
+         q(0662),
+         q(0),
+         ],
+      q(agj) => [
+         q(0663),
+         q(0),
+         ],
+      q(agk) => [
+         q(0664),
+         q(0),
+         ],
+      q(agl) => [
+         q(0665),
+         q(0),
+         ],
+      q(agm) => [
+         q(0666),
+         q(0),
+         ],
+      q(agn) => [
+         q(0667),
+         q(0),
+         ],
+      q(ago) => [
+         q(0668),
+         q(0),
+         ],
+      q(agq) => [
+         q(0669),
+         q(0),
+         ],
+      q(agr) => [
+         q(0670),
+         q(0),
+         ],
+      q(ags) => [
+         q(0671),
+         q(0),
+         ],
+      q(agt) => [
+         q(0672),
+         q(0),
+         ],
+      q(agu) => [
+         q(0673),
+         q(0),
+         ],
+      q(agv) => [
+         q(0674),
+         q(0),
+         ],
+      q(agw) => [
+         q(0675),
+         q(0),
+         ],
+      q(agx) => [
+         q(0676),
+         q(0),
+         ],
+      q(agy) => [
+         q(0677),
+         q(0),
+         ],
+      q(agz) => [
+         q(0678),
+         q(0),
+         ],
+      q(aha) => [
+         q(0679),
+         q(0),
+         ],
+      q(ahb) => [
+         q(0680),
+         q(0),
+         ],
+      q(ahg) => [
+         q(0681),
+         q(0),
+         ],
+      q(ahh) => [
+         q(0682),
+         q(0),
+         ],
+      q(ahi) => [
+         q(0683),
+         q(0),
+         ],
+      q(ahk) => [
+         q(0684),
+         q(0),
+         ],
+      q(ahl) => [
+         q(0685),
+         q(0),
+         ],
+      q(ahm) => [
+         q(0686),
+         q(0),
+         ],
+      q(ahn) => [
+         q(0687),
+         q(0),
+         ],
+      q(aho) => [
+         q(0688),
+         q(0),
+         ],
+      q(ahp) => [
+         q(0689),
+         q(0),
+         ],
+      q(ahr) => [
+         q(0690),
+         q(0),
+         ],
+      q(ahs) => [
+         q(0691),
+         q(0),
+         ],
+      q(aht) => [
+         q(0692),
+         q(0),
+         ],
+      q(aia) => [
+         q(0693),
+         q(0),
+         ],
+      q(aib) => [
+         q(0694),
+         q(0),
+         ],
+      q(aic) => [
+         q(0695),
+         q(0),
+         ],
+      q(aid) => [
+         q(0696),
+         q(0),
+         ],
+      q(aie) => [
+         q(0697),
+         q(0),
+         ],
+      q(aif) => [
+         q(0698),
+         q(0),
+         ],
+      q(aig) => [
+         q(0699),
+         q(0),
+         ],
+      q(aih) => [
+         q(0700),
+         q(0),
+         ],
+      q(aii) => [
+         q(0701),
+         q(0),
+         ],
+      q(aij) => [
+         q(0702),
+         q(0),
+         ],
+      q(aik) => [
+         q(0703),
+         q(0),
+         ],
+      q(ail) => [
+         q(0704),
+         q(0),
+         ],
+      q(aim) => [
+         q(0705),
+         q(0),
+         ],
+      q(ain) => [
+         q(0010),
+         q(1),
+         ],
+      q(aio) => [
+         q(0706),
+         q(0),
+         ],
+      q(aip) => [
+         q(0707),
+         q(0),
+         ],
+      q(aiq) => [
+         q(0708),
+         q(0),
+         ],
+      q(air) => [
+         q(0709),
+         q(0),
+         ],
+      q(ais) => [
+         q(0710),
+         q(0),
+         ],
+      q(ait) => [
+         q(0711),
+         q(0),
+         ],
+      q(aiw) => [
+         q(0712),
+         q(0),
+         ],
+      q(aix) => [
+         q(0713),
+         q(0),
+         ],
+      q(aiy) => [
+         q(0714),
+         q(0),
+         ],
+      q(aja) => [
+         q(0715),
+         q(0),
+         ],
+      q(ajg) => [
+         q(0716),
+         q(0),
+         ],
+      q(aji) => [
+         q(0717),
+         q(0),
+         ],
+      q(ajn) => [
+         q(0718),
+         q(0),
+         ],
+      q(ajp) => [
+         q(0719),
+         q(0),
+         ],
+      q(ajt) => [
+         q(0720),
+         q(0),
+         ],
+      q(aju) => [
+         q(0721),
+         q(0),
+         ],
+      q(ajw) => [
+         q(0722),
+         q(0),
+         ],
+      q(ajz) => [
+         q(0723),
+         q(0),
+         ],
+      q(aka) => [
+         q(0011),
+         q(0),
+         ],
+      q(akb) => [
+         q(0724),
+         q(0),
+         ],
+      q(akc) => [
+         q(0725),
+         q(0),
+         ],
+      q(akd) => [
+         q(0726),
+         q(0),
+         ],
+      q(ake) => [
+         q(0727),
+         q(0),
+         ],
+      q(akf) => [
+         q(0728),
+         q(0),
+         ],
+      q(akg) => [
+         q(0729),
+         q(0),
+         ],
+      q(akh) => [
+         q(0730),
+         q(0),
+         ],
+      q(aki) => [
+         q(0731),
+         q(0),
+         ],
+      q(akj) => [
+         q(0732),
+         q(0),
+         ],
+      q(akk) => [
+         q(0012),
+         q(0),
+         ],
+      q(akl) => [
+         q(0733),
+         q(0),
+         ],
+      q(akm) => [
+         q(0734),
+         q(0),
+         ],
+      q(ako) => [
+         q(0735),
+         q(0),
+         ],
+      q(akp) => [
+         q(0736),
+         q(0),
+         ],
+      q(akq) => [
+         q(0737),
+         q(0),
+         ],
+      q(akr) => [
+         q(0738),
+         q(0),
+         ],
+      q(aks) => [
+         q(0739),
+         q(0),
+         ],
+      q(akt) => [
+         q(0740),
+         q(0),
+         ],
+      q(aku) => [
+         q(0741),
+         q(0),
+         ],
+      q(akv) => [
+         q(0742),
+         q(0),
+         ],
+      q(akw) => [
+         q(0743),
+         q(0),
+         ],
+      q(akx) => [
+         q(0744),
+         q(0),
+         ],
+      q(aky) => [
+         q(0745),
+         q(0),
+         ],
+      q(akz) => [
+         q(0746),
+         q(0),
+         ],
+      q(ala) => [
+         q(0747),
+         q(0),
+         ],
+      q(alb) => [
+         q(0013),
+         q(0),
+         ],
+      q(alc) => [
+         q(0748),
+         q(0),
+         ],
+      q(ald) => [
+         q(0749),
+         q(0),
+         ],
+      q(ale) => [
+         q(0014),
+         q(0),
+         ],
+      q(alf) => [
+         q(0750),
+         q(0),
+         ],
+      q(alg) => [
+         q(0015),
+         q(0),
+         ],
+      q(alh) => [
+         q(0751),
+         q(0),
+         ],
+      q(ali) => [
+         q(0752),
+         q(0),
+         ],
+      q(alj) => [
+         q(0753),
+         q(0),
+         ],
+      q(alk) => [
+         q(0754),
+         q(0),
+         ],
+      q(all) => [
+         q(0755),
+         q(0),
+         ],
+      q(alm) => [
+         q(0756),
+         q(0),
+         ],
+      q(aln) => [
+         q(0757),
+         q(0),
+         ],
+      q(alo) => [
+         q(0758),
+         q(0),
+         ],
+      q(alp) => [
+         q(0759),
+         q(0),
+         ],
+      q(alq) => [
+         q(0760),
+         q(0),
+         ],
+      q(alr) => [
+         q(0761),
+         q(0),
+         ],
+      q(als) => [
+         q(0762),
+         q(0),
+         ],
+      q(alt) => [
+         q(0016),
+         q(0),
+         ],
+      q(alu) => [
+         q(0763),
+         q(0),
+         ],
+      q(alv) => [
+         q(0488),
+         q(0),
+         ],
+      q(alw) => [
+         q(0764),
+         q(0),
+         ],
+      q(alx) => [
+         q(0765),
+         q(0),
+         ],
+      q(aly) => [
+         q(0766),
+         q(0),
+         ],
+      q(alz) => [
+         q(0767),
+         q(0),
+         ],
+      q(ama) => [
+         q(0768),
+         q(0),
+         ],
+      q(amb) => [
+         q(0769),
+         q(0),
+         ],
+      q(amc) => [
+         q(0770),
+         q(0),
+         ],
+      q(ame) => [
+         q(0771),
+         q(0),
+         ],
+      q(amf) => [
+         q(0772),
+         q(0),
+         ],
+      q(amg) => [
+         q(0773),
+         q(0),
+         ],
+      q(amh) => [
+         q(0017),
+         q(0),
+         ],
+      q(ami) => [
+         q(0774),
+         q(0),
+         ],
+      q(amj) => [
+         q(0775),
+         q(0),
+         ],
+      q(amk) => [
+         q(0776),
+         q(0),
+         ],
+      q(aml) => [
+         q(0777),
+         q(0),
+         ],
+      q(amm) => [
+         q(0778),
+         q(0),
+         ],
+      q(amn) => [
+         q(0779),
+         q(0),
+         ],
+      q(amo) => [
+         q(0780),
+         q(0),
+         ],
+      q(amp) => [
+         q(0781),
+         q(0),
+         ],
+      q(amq) => [
+         q(0782),
+         q(0),
+         ],
+      q(amr) => [
+         q(0783),
+         q(0),
+         ],
+      q(ams) => [
+         q(0784),
+         q(0),
+         ],
+      q(amt) => [
+         q(0785),
+         q(0),
+         ],
+      q(amu) => [
+         q(0786),
+         q(0),
+         ],
+      q(amv) => [
+         q(0787),
+         q(0),
+         ],
+      q(amw) => [
+         q(0788),
+         q(0),
+         ],
+      q(amx) => [
+         q(0789),
+         q(0),
+         ],
+      q(amy) => [
+         q(0790),
+         q(0),
+         ],
+      q(amz) => [
+         q(0791),
+         q(0),
+         ],
+      q(ana) => [
+         q(0792),
+         q(0),
+         ],
+      q(anb) => [
+         q(0793),
+         q(0),
+         ],
+      q(anc) => [
+         q(0794),
+         q(0),
+         ],
+      q(and) => [
+         q(0795),
+         q(0),
+         ],
+      q(ane) => [
+         q(0796),
+         q(0),
+         ],
+      q(anf) => [
+         q(0797),
+         q(0),
+         ],
+      q(ang) => [
+         q(0018),
+         q(1),
+         ],
+      q(anh) => [
+         q(0798),
+         q(0),
+         ],
+      q(ani) => [
+         q(0799),
+         q(0),
+         ],
+      q(anj) => [
+         q(0800),
+         q(0),
+         ],
+      q(ank) => [
+         q(0801),
+         q(0),
+         ],
+      q(anl) => [
+         q(0802),
+         q(0),
+         ],
+      q(anm) => [
+         q(0803),
+         q(0),
+         ],
+      q(ann) => [
+         q(0804),
+         q(0),
+         ],
+      q(ano) => [
+         q(0805),
+         q(0),
+         ],
+      q(anp) => [
+         q(0019),
+         q(0),
+         ],
+      q(anq) => [
+         q(0806),
+         q(0),
+         ],
+      q(anr) => [
+         q(0807),
+         q(0),
+         ],
+      q(ans) => [
+         q(0808),
+         q(0),
+         ],
+      q(ant) => [
+         q(0809),
+         q(0),
+         ],
+      q(anu) => [
+         q(0810),
+         q(0),
+         ],
+      q(anv) => [
+         q(0811),
+         q(0),
+         ],
+      q(anw) => [
+         q(0812),
+         q(0),
+         ],
+      q(anx) => [
+         q(0813),
+         q(0),
+         ],
+      q(any) => [
+         q(0814),
+         q(0),
+         ],
+      q(anz) => [
+         q(0815),
+         q(0),
+         ],
+      q(aoa) => [
+         q(0816),
+         q(0),
+         ],
+      q(aob) => [
+         q(0817),
+         q(0),
+         ],
+      q(aoc) => [
+         q(0818),
+         q(0),
+         ],
+      q(aod) => [
+         q(0819),
+         q(0),
+         ],
+      q(aoe) => [
+         q(0820),
+         q(0),
+         ],
+      q(aof) => [
+         q(0821),
+         q(0),
+         ],
+      q(aog) => [
+         q(0822),
+         q(0),
+         ],
+      q(aoh) => [
+         q(0823),
+         q(0),
+         ],
+      q(aoi) => [
+         q(0824),
+         q(0),
+         ],
+      q(aoj) => [
+         q(0825),
+         q(0),
+         ],
+      q(aok) => [
+         q(0826),
+         q(0),
+         ],
+      q(aol) => [
+         q(0827),
+         q(0),
+         ],
+      q(aom) => [
+         q(0828),
+         q(0),
+         ],
+      q(aon) => [
+         q(0829),
+         q(0),
+         ],
+      q(aor) => [
+         q(0830),
+         q(0),
+         ],
+      q(aos) => [
+         q(0831),
+         q(0),
+         ],
+      q(aot) => [
+         q(0832),
+         q(0),
+         ],
+      q(aou) => [
+         q(0833),
+         q(0),
+         ],
+      q(aox) => [
+         q(0834),
+         q(0),
+         ],
+      q(aoz) => [
+         q(0835),
+         q(0),
+         ],
+      q(apa) => [
+         q(0020),
+         q(0),
+         ],
+      q(apb) => [
+         q(0836),
+         q(0),
+         ],
+      q(apc) => [
+         q(0837),
+         q(0),
+         ],
+      q(apd) => [
+         q(0838),
+         q(0),
+         ],
+      q(ape) => [
+         q(0839),
+         q(0),
+         ],
+      q(apf) => [
+         q(0840),
+         q(0),
+         ],
+      q(apg) => [
+         q(0841),
+         q(0),
+         ],
+      q(aph) => [
+         q(0842),
+         q(0),
+         ],
+      q(api) => [
+         q(0843),
+         q(0),
+         ],
+      q(apj) => [
+         q(0844),
+         q(0),
+         ],
+      q(apk) => [
+         q(0845),
+         q(0),
+         ],
+      q(apl) => [
+         q(0846),
+         q(0),
+         ],
+      q(apm) => [
+         q(0847),
+         q(0),
+         ],
+      q(apn) => [
+         q(0848),
+         q(0),
+         ],
+      q(apo) => [
+         q(0849),
+         q(0),
+         ],
+      q(app) => [
+         q(0850),
+         q(0),
+         ],
+      q(apq) => [
+         q(0851),
+         q(0),
+         ],
+      q(apr) => [
+         q(0852),
+         q(0),
+         ],
+      q(aps) => [
+         q(0853),
+         q(0),
+         ],
+      q(apt) => [
+         q(0854),
+         q(0),
+         ],
+      q(apu) => [
+         q(0855),
+         q(0),
+         ],
+      q(apv) => [
+         q(0856),
+         q(0),
+         ],
+      q(apw) => [
+         q(0857),
+         q(0),
+         ],
+      q(apx) => [
+         q(0858),
+         q(0),
+         ],
+      q(apy) => [
+         q(0859),
+         q(0),
+         ],
+      q(apz) => [
+         q(0860),
+         q(0),
+         ],
+      q(aqa) => [
+         q(0489),
+         q(0),
+         ],
+      q(aqc) => [
+         q(0861),
+         q(0),
+         ],
+      q(aqd) => [
+         q(0862),
+         q(0),
+         ],
+      q(aqg) => [
+         q(0863),
+         q(0),
+         ],
+      q(aql) => [
+         q(0490),
+         q(0),
+         ],
+      q(aqm) => [
+         q(0864),
+         q(0),
+         ],
+      q(aqn) => [
+         q(0865),
+         q(0),
+         ],
+      q(aqp) => [
+         q(0866),
+         q(0),
+         ],
+      q(aqr) => [
+         q(0867),
+         q(0),
+         ],
+      q(aqz) => [
+         q(0868),
+         q(0),
+         ],
+      q(ara) => [
+         q(0021),
+         q(0),
+         ],
+      q(arb) => [
+         q(0869),
+         q(0),
+         ],
+      q(arc) => [
+         q(0022),
+         q(0),
+         ],
+      q(ard) => [
+         q(0870),
+         q(0),
+         ],
+      q(are) => [
+         q(0871),
+         q(0),
+         ],
+      q(arg) => [
+         q(0023),
+         q(0),
+         ],
+      q(arh) => [
+         q(0872),
+         q(0),
+         ],
+      q(ari) => [
+         q(0873),
+         q(0),
+         ],
+      q(arj) => [
+         q(0874),
+         q(0),
+         ],
+      q(ark) => [
+         q(0875),
+         q(0),
+         ],
+      q(arl) => [
+         q(0876),
+         q(0),
+         ],
+      q(arm) => [
+         q(0024),
+         q(0),
+         ],
+      q(arn) => [
+         q(0025),
+         q(0),
+         ],
+      q(aro) => [
+         q(0877),
+         q(0),
+         ],
+      q(arp) => [
+         q(0026),
+         q(0),
+         ],
+      q(arq) => [
+         q(0878),
+         q(0),
+         ],
+      q(arr) => [
+         q(0879),
+         q(0),
+         ],
+      q(ars) => [
+         q(0880),
+         q(0),
+         ],
+      q(art) => [
+         q(0027),
+         q(0),
+         ],
+      q(aru) => [
+         q(0881),
+         q(0),
+         ],
+      q(arv) => [
+         q(0882),
+         q(0),
+         ],
+      q(arw) => [
+         q(0028),
+         q(0),
+         ],
+      q(arx) => [
+         q(0883),
+         q(0),
+         ],
+      q(ary) => [
+         q(0884),
+         q(0),
+         ],
+      q(arz) => [
+         q(0885),
+         q(0),
+         ],
+      q(asa) => [
+         q(0886),
+         q(0),
+         ],
+      q(asb) => [
+         q(0887),
+         q(0),
+         ],
+      q(asc) => [
+         q(0888),
+         q(0),
+         ],
+      q(asd) => [
+         q(0889),
+         q(0),
+         ],
+      q(ase) => [
+         q(0890),
+         q(0),
+         ],
+      q(asf) => [
+         q(0891),
+         q(0),
+         ],
+      q(asg) => [
+         q(0892),
+         q(0),
+         ],
+      q(ash) => [
+         q(0893),
+         q(0),
+         ],
+      q(asi) => [
+         q(0894),
+         q(0),
+         ],
+      q(asj) => [
+         q(0895),
+         q(0),
+         ],
+      q(ask) => [
+         q(0896),
+         q(0),
+         ],
+      q(asl) => [
+         q(0897),
+         q(0),
+         ],
+      q(asm) => [
+         q(0029),
+         q(0),
+         ],
+      q(asn) => [
+         q(0898),
+         q(0),
+         ],
+      q(aso) => [
+         q(0899),
+         q(0),
+         ],
+      q(asp) => [
+         q(0900),
+         q(0),
+         ],
+      q(asq) => [
+         q(0901),
+         q(0),
+         ],
+      q(asr) => [
+         q(0902),
+         q(0),
+         ],
+      q(ass) => [
+         q(0903),
+         q(0),
+         ],
+      q(ast) => [
+         q(0030),
+         q(0),
+         ],
+      q(asu) => [
+         q(0904),
+         q(0),
+         ],
+      q(asv) => [
+         q(0905),
+         q(0),
+         ],
+      q(asw) => [
+         q(0906),
+         q(0),
+         ],
+      q(asx) => [
+         q(0907),
+         q(0),
+         ],
+      q(asy) => [
+         q(0908),
+         q(0),
+         ],
+      q(asz) => [
+         q(0909),
+         q(0),
+         ],
+      q(ata) => [
+         q(0910),
+         q(0),
+         ],
+      q(atb) => [
+         q(0911),
+         q(0),
+         ],
+      q(atc) => [
+         q(0912),
+         q(0),
+         ],
+      q(atd) => [
+         q(0913),
+         q(0),
+         ],
+      q(ate) => [
+         q(0914),
+         q(0),
+         ],
+      q(atg) => [
+         q(0915),
+         q(0),
+         ],
+      q(ath) => [
+         q(0031),
+         q(0),
+         ],
+      q(ati) => [
+         q(0916),
+         q(0),
+         ],
+      q(atj) => [
+         q(0917),
+         q(0),
+         ],
+      q(atk) => [
+         q(0918),
+         q(0),
+         ],
+      q(atl) => [
+         q(0919),
+         q(0),
+         ],
+      q(atm) => [
+         q(0920),
+         q(0),
+         ],
+      q(atn) => [
+         q(0921),
+         q(0),
+         ],
+      q(ato) => [
+         q(0922),
+         q(0),
+         ],
+      q(atp) => [
+         q(0923),
+         q(0),
+         ],
+      q(atq) => [
+         q(0924),
+         q(0),
+         ],
+      q(atr) => [
+         q(0925),
+         q(0),
+         ],
+      q(ats) => [
+         q(0926),
+         q(0),
+         ],
+      q(att) => [
+         q(0927),
+         q(0),
+         ],
+      q(atu) => [
+         q(0928),
+         q(0),
+         ],
+      q(atv) => [
+         q(0929),
+         q(0),
+         ],
+      q(atw) => [
+         q(0930),
+         q(0),
+         ],
+      q(atx) => [
+         q(0931),
+         q(0),
+         ],
+      q(aty) => [
+         q(0932),
+         q(0),
+         ],
+      q(atz) => [
+         q(0933),
+         q(0),
+         ],
+      q(aua) => [
+         q(0934),
+         q(0),
+         ],
+      q(aub) => [
+         q(0935),
+         q(0),
+         ],
+      q(auc) => [
+         q(0936),
+         q(0),
+         ],
+      q(aud) => [
+         q(0937),
+         q(0),
+         ],
+      q(aue) => [
+         q(0938),
+         q(0),
+         ],
+      q(auf) => [
+         q(0491),
+         q(0),
+         ],
+      q(aug) => [
+         q(0939),
+         q(0),
+         ],
+      q(auh) => [
+         q(0940),
+         q(0),
+         ],
+      q(aui) => [
+         q(0941),
+         q(0),
+         ],
+      q(auj) => [
+         q(0942),
+         q(0),
+         ],
+      q(auk) => [
+         q(0943),
+         q(0),
+         ],
+      q(aul) => [
+         q(0944),
+         q(0),
+         ],
+      q(aum) => [
+         q(0945),
+         q(0),
+         ],
+      q(aun) => [
+         q(0946),
+         q(0),
+         ],
+      q(auo) => [
+         q(0947),
+         q(0),
+         ],
+      q(aup) => [
+         q(0948),
+         q(0),
+         ],
+      q(auq) => [
+         q(0949),
+         q(0),
+         ],
+      q(aur) => [
+         q(0950),
+         q(0),
+         ],
+      q(aus) => [
+         q(0032),
+         q(0),
+         ],
+      q(aut) => [
+         q(0951),
+         q(0),
+         ],
+      q(auu) => [
+         q(0952),
+         q(0),
+         ],
+      q(auw) => [
+         q(0953),
+         q(0),
+         ],
+      q(aux) => [
+         q(0954),
+         q(0),
+         ],
+      q(auy) => [
+         q(0955),
+         q(0),
+         ],
+      q(auz) => [
+         q(0956),
+         q(0),
+         ],
+      q(ava) => [
+         q(0033),
+         q(0),
+         ],
+      q(avb) => [
+         q(0957),
+         q(0),
+         ],
+      q(avd) => [
+         q(0958),
+         q(0),
+         ],
+      q(ave) => [
+         q(0034),
+         q(0),
+         ],
+      q(avi) => [
+         q(0959),
+         q(0),
+         ],
+      q(avk) => [
+         q(0960),
+         q(0),
+         ],
+      q(avl) => [
+         q(0961),
+         q(0),
+         ],
+      q(avm) => [
+         q(0962),
+         q(0),
+         ],
+      q(avn) => [
+         q(0963),
+         q(0),
+         ],
+      q(avo) => [
+         q(0964),
+         q(0),
+         ],
+      q(avs) => [
+         q(0965),
+         q(0),
+         ],
+      q(avt) => [
+         q(0966),
+         q(0),
+         ],
+      q(avu) => [
+         q(0967),
+         q(0),
+         ],
+      q(avv) => [
+         q(0968),
+         q(0),
+         ],
+      q(awa) => [
+         q(0035),
+         q(0),
+         ],
+      q(awb) => [
+         q(0969),
+         q(0),
+         ],
+      q(awc) => [
+         q(0970),
+         q(0),
+         ],
+      q(awd) => [
+         q(0492),
+         q(0),
+         ],
+      q(awe) => [
+         q(0971),
+         q(0),
+         ],
+      q(awg) => [
+         q(0972),
+         q(0),
+         ],
+      q(awh) => [
+         q(0973),
+         q(0),
+         ],
+      q(awi) => [
+         q(0974),
+         q(0),
+         ],
+      q(awk) => [
+         q(0975),
+         q(0),
+         ],
+      q(awm) => [
+         q(0976),
+         q(0),
+         ],
+      q(awn) => [
+         q(0977),
+         q(0),
+         ],
+      q(awo) => [
+         q(0978),
+         q(0),
+         ],
+      q(awr) => [
+         q(0979),
+         q(0),
+         ],
+      q(aws) => [
+         q(0980),
+         q(0),
+         ],
+      q(awt) => [
+         q(0981),
+         q(0),
+         ],
+      q(awu) => [
+         q(0982),
+         q(0),
+         ],
+      q(awv) => [
+         q(0983),
+         q(0),
+         ],
+      q(aww) => [
+         q(0984),
+         q(0),
+         ],
+      q(awx) => [
+         q(0985),
+         q(0),
+         ],
+      q(awy) => [
+         q(0986),
+         q(0),
+         ],
+      q(axb) => [
+         q(0987),
+         q(0),
+         ],
+      q(axe) => [
+         q(0988),
+         q(0),
+         ],
+      q(axg) => [
+         q(0989),
+         q(0),
+         ],
+      q(axk) => [
+         q(0990),
+         q(0),
+         ],
+      q(axm) => [
+         q(0991),
+         q(0),
+         ],
+      q(axx) => [
+         q(0992),
+         q(0),
+         ],
+      q(aya) => [
+         q(0993),
+         q(0),
+         ],
+      q(ayb) => [
+         q(0994),
+         q(0),
+         ],
+      q(ayc) => [
+         q(0995),
+         q(0),
+         ],
+      q(ayd) => [
+         q(0996),
+         q(0),
+         ],
+      q(aye) => [
+         q(0997),
+         q(0),
+         ],
+      q(ayg) => [
+         q(0998),
+         q(0),
+         ],
+      q(ayh) => [
+         q(0999),
+         q(0),
+         ],
+      q(ayi) => [
+         q(1000),
+         q(0),
+         ],
+      q(ayk) => [
+         q(1001),
+         q(0),
+         ],
+      q(ayl) => [
+         q(1002),
+         q(0),
+         ],
+      q(aym) => [
+         q(0036),
+         q(0),
+         ],
+      q(ayn) => [
+         q(1003),
+         q(0),
+         ],
+      q(ayo) => [
+         q(1004),
+         q(0),
+         ],
+      q(ayp) => [
+         q(1005),
+         q(0),
+         ],
+      q(ayq) => [
+         q(1006),
+         q(0),
+         ],
+      q(ayr) => [
+         q(1007),
+         q(0),
+         ],
+      q(ays) => [
+         q(1008),
+         q(0),
+         ],
+      q(ayt) => [
+         q(1009),
+         q(0),
+         ],
+      q(ayu) => [
+         q(1010),
+         q(0),
+         ],
+      q(ayy) => [
+         q(1011),
+         q(0),
+         ],
+      q(ayz) => [
+         q(1012),
+         q(0),
+         ],
+      q(aza) => [
+         q(1013),
+         q(0),
+         ],
+      q(azb) => [
+         q(1014),
+         q(0),
+         ],
+      q(azc) => [
+         q(0493),
+         q(0),
+         ],
+      q(azd) => [
+         q(1015),
+         q(0),
+         ],
+      q(aze) => [
+         q(0037),
+         q(0),
+         ],
+      q(azg) => [
+         q(1016),
+         q(0),
+         ],
+      q(azj) => [
+         q(1017),
+         q(0),
+         ],
+      q(azm) => [
+         q(1018),
+         q(0),
+         ],
+      q(azn) => [
+         q(1019),
+         q(0),
+         ],
+      q(azo) => [
+         q(1020),
+         q(0),
+         ],
+      q(azt) => [
+         q(1021),
+         q(0),
+         ],
+      q(azz) => [
+         q(1022),
+         q(0),
+         ],
+      q(baa) => [
+         q(1023),
+         q(0),
+         ],
+      q(bab) => [
+         q(1024),
+         q(0),
+         ],
+      q(bac) => [
+         q(1025),
+         q(0),
+         ],
+      q(bad) => [
+         q(0038),
+         q(0),
+         ],
+      q(bae) => [
+         q(1026),
+         q(0),
+         ],
+      q(baf) => [
+         q(1027),
+         q(0),
+         ],
+      q(bag) => [
+         q(1028),
+         q(0),
+         ],
+      q(bah) => [
+         q(1029),
+         q(0),
+         ],
+      q(bai) => [
+         q(0039),
+         q(0),
+         ],
+      q(baj) => [
+         q(1030),
+         q(0),
+         ],
+      q(bak) => [
+         q(0040),
+         q(0),
+         ],
+      q(bal) => [
+         q(0041),
+         q(0),
+         ],
+      q(bam) => [
+         q(0042),
+         q(0),
+         ],
+      q(ban) => [
+         q(0043),
+         q(0),
+         ],
+      q(bao) => [
+         q(1031),
+         q(0),
+         ],
+      q(bap) => [
+         q(1032),
+         q(0),
+         ],
+      q(baq) => [
+         q(0044),
+         q(0),
+         ],
+      q(bar) => [
+         q(1033),
+         q(0),
+         ],
+      q(bas) => [
+         q(0045),
+         q(1),
+         ],
+      q(bat) => [
+         q(0046),
+         q(0),
+         ],
+      q(bau) => [
+         q(1034),
+         q(0),
+         ],
+      q(bav) => [
+         q(1035),
+         q(0),
+         ],
+      q(baw) => [
+         q(1036),
+         q(0),
+         ],
+      q(bax) => [
+         q(1037),
+         q(0),
+         ],
+      q(bay) => [
+         q(1038),
+         q(0),
+         ],
+      q(bba) => [
+         q(1039),
+         q(0),
+         ],
+      q(bbb) => [
+         q(1040),
+         q(0),
+         ],
+      q(bbc) => [
+         q(1041),
+         q(0),
+         ],
+      q(bbd) => [
+         q(1042),
+         q(0),
+         ],
+      q(bbe) => [
+         q(1043),
+         q(0),
+         ],
+      q(bbf) => [
+         q(1044),
+         q(0),
+         ],
+      q(bbg) => [
+         q(1045),
+         q(0),
+         ],
+      q(bbh) => [
+         q(1046),
+         q(0),
+         ],
+      q(bbi) => [
+         q(1047),
+         q(0),
+         ],
+      q(bbj) => [
+         q(1048),
+         q(0),
+         ],
+      q(bbk) => [
+         q(1049),
+         q(0),
+         ],
+      q(bbl) => [
+         q(1050),
+         q(0),
+         ],
+      q(bbm) => [
+         q(1051),
+         q(0),
+         ],
+      q(bbn) => [
+         q(1052),
+         q(0),
+         ],
+      q(bbo) => [
+         q(1053),
+         q(0),
+         ],
+      q(bbp) => [
+         q(1054),
+         q(0),
+         ],
+      q(bbq) => [
+         q(1055),
+         q(0),
+         ],
+      q(bbr) => [
+         q(1056),
+         q(0),
+         ],
+      q(bbs) => [
+         q(1057),
+         q(0),
+         ],
+      q(bbt) => [
+         q(1058),
+         q(0),
+         ],
+      q(bbu) => [
+         q(1059),
+         q(0),
+         ],
+      q(bbv) => [
+         q(1060),
+         q(0),
+         ],
+      q(bbw) => [
+         q(1061),
+         q(0),
+         ],
+      q(bbx) => [
+         q(1062),
+         q(0),
+         ],
+      q(bby) => [
+         q(1063),
+         q(0),
+         ],
+      q(bbz) => [
+         q(1064),
+         q(0),
+         ],
+      q(bca) => [
+         q(1065),
+         q(0),
+         ],
+      q(bcb) => [
+         q(1066),
+         q(0),
+         ],
+      q(bcc) => [
+         q(1067),
+         q(0),
+         ],
+      q(bcd) => [
+         q(1068),
+         q(0),
+         ],
+      q(bce) => [
+         q(1069),
+         q(0),
+         ],
+      q(bcf) => [
+         q(1070),
+         q(0),
+         ],
+      q(bcg) => [
+         q(1071),
+         q(0),
+         ],
+      q(bch) => [
+         q(1072),
+         q(0),
+         ],
+      q(bci) => [
+         q(1073),
+         q(0),
+         ],
+      q(bcj) => [
+         q(1074),
+         q(0),
+         ],
+      q(bck) => [
+         q(1075),
+         q(0),
+         ],
+      q(bcl) => [
+         q(1076),
+         q(0),
+         ],
+      q(bcm) => [
+         q(1077),
+         q(0),
+         ],
+      q(bcn) => [
+         q(1078),
+         q(0),
+         ],
+      q(bco) => [
+         q(1079),
+         q(0),
+         ],
+      q(bcp) => [
+         q(1080),
+         q(0),
+         ],
+      q(bcq) => [
+         q(1081),
+         q(0),
+         ],
+      q(bcr) => [
+         q(1082),
+         q(0),
+         ],
+      q(bcs) => [
+         q(1083),
+         q(0),
+         ],
+      q(bct) => [
+         q(1084),
+         q(0),
+         ],
+      q(bcu) => [
+         q(1085),
+         q(0),
+         ],
+      q(bcv) => [
+         q(1086),
+         q(0),
+         ],
+      q(bcw) => [
+         q(1087),
+         q(0),
+         ],
+      q(bcy) => [
+         q(1088),
+         q(0),
+         ],
+      q(bcz) => [
+         q(1089),
+         q(0),
+         ],
+      q(bda) => [
+         q(1090),
+         q(0),
+         ],
+      q(bdb) => [
+         q(1091),
+         q(0),
+         ],
+      q(bdc) => [
+         q(1092),
+         q(0),
+         ],
+      q(bdd) => [
+         q(1093),
+         q(0),
+         ],
+      q(bde) => [
+         q(1094),
+         q(0),
+         ],
+      q(bdf) => [
+         q(1095),
+         q(0),
+         ],
+      q(bdg) => [
+         q(1096),
+         q(0),
+         ],
+      q(bdh) => [
+         q(1097),
+         q(0),
+         ],
+      q(bdi) => [
+         q(1098),
+         q(0),
+         ],
+      q(bdj) => [
+         q(1099),
+         q(0),
+         ],
+      q(bdk) => [
+         q(1100),
+         q(0),
+         ],
+      q(bdl) => [
+         q(1101),
+         q(0),
+         ],
+      q(bdm) => [
+         q(1102),
+         q(0),
+         ],
+      q(bdn) => [
+         q(1103),
+         q(0),
+         ],
+      q(bdo) => [
+         q(1104),
+         q(0),
+         ],
+      q(bdp) => [
+         q(1105),
+         q(0),
+         ],
+      q(bdq) => [
+         q(1106),
+         q(0),
+         ],
+      q(bdr) => [
+         q(1107),
+         q(0),
+         ],
+      q(bds) => [
+         q(1108),
+         q(0),
+         ],
+      q(bdt) => [
+         q(1109),
+         q(0),
+         ],
+      q(bdu) => [
+         q(1110),
+         q(0),
+         ],
+      q(bdv) => [
+         q(1111),
+         q(0),
+         ],
+      q(bdw) => [
+         q(1112),
+         q(0),
+         ],
+      q(bdx) => [
+         q(1113),
+         q(0),
+         ],
+      q(bdy) => [
+         q(1114),
+         q(0),
+         ],
+      q(bdz) => [
+         q(1115),
+         q(0),
+         ],
+      q(bea) => [
+         q(1116),
+         q(0),
+         ],
+      q(beb) => [
+         q(1117),
+         q(0),
+         ],
+      q(bec) => [
+         q(1118),
+         q(0),
+         ],
+      q(bed) => [
+         q(1119),
+         q(0),
+         ],
+      q(bee) => [
+         q(1120),
+         q(0),
+         ],
+      q(bef) => [
+         q(1121),
+         q(0),
+         ],
+      q(beg) => [
+         q(1122),
+         q(0),
+         ],
+      q(beh) => [
+         q(1123),
+         q(0),
+         ],
+      q(bei) => [
+         q(1124),
+         q(0),
+         ],
+      q(bej) => [
+         q(0047),
+         q(0),
+         ],
+      q(bek) => [
+         q(1125),
+         q(0),
+         ],
+      q(bel) => [
+         q(0048),
+         q(0),
+         ],
+      q(bem) => [
+         q(0049),
+         q(1),
+         ],
+      q(ben) => [
+         q(0050),
+         q(0),
+         ],
+      q(beo) => [
+         q(1126),
+         q(0),
+         ],
+      q(bep) => [
+         q(1127),
+         q(0),
+         ],
+      q(beq) => [
+         q(1128),
+         q(0),
+         ],
+      q(ber) => [
+         q(0051),
+         q(0),
+         ],
+      q(bes) => [
+         q(1129),
+         q(0),
+         ],
+      q(bet) => [
+         q(1130),
+         q(0),
+         ],
+      q(beu) => [
+         q(1131),
+         q(0),
+         ],
+      q(bev) => [
+         q(1132),
+         q(0),
+         ],
+      q(bew) => [
+         q(1133),
+         q(0),
+         ],
+      q(bex) => [
+         q(1134),
+         q(0),
+         ],
+      q(bey) => [
+         q(1135),
+         q(0),
+         ],
+      q(bez) => [
+         q(1136),
+         q(0),
+         ],
+      q(bfa) => [
+         q(1137),
+         q(0),
+         ],
+      q(bfb) => [
+         q(1138),
+         q(0),
+         ],
+      q(bfc) => [
+         q(1139),
+         q(0),
+         ],
+      q(bfd) => [
+         q(1140),
+         q(0),
+         ],
+      q(bfe) => [
+         q(1141),
+         q(0),
+         ],
+      q(bff) => [
+         q(1142),
+         q(0),
+         ],
+      q(bfg) => [
+         q(1143),
+         q(0),
+         ],
+      q(bfh) => [
+         q(1144),
+         q(0),
+         ],
+      q(bfi) => [
+         q(1145),
+         q(0),
+         ],
+      q(bfj) => [
+         q(1146),
+         q(0),
+         ],
+      q(bfk) => [
+         q(1147),
+         q(0),
+         ],
+      q(bfl) => [
+         q(1148),
+         q(0),
+         ],
+      q(bfm) => [
+         q(1149),
+         q(0),
+         ],
+      q(bfn) => [
+         q(1150),
+         q(0),
+         ],
+      q(bfo) => [
+         q(1151),
+         q(0),
+         ],
+      q(bfp) => [
+         q(1152),
+         q(0),
+         ],
+      q(bfq) => [
+         q(1153),
+         q(0),
+         ],
+      q(bfr) => [
+         q(1154),
+         q(0),
+         ],
+      q(bfs) => [
+         q(1155),
+         q(0),
+         ],
+      q(bft) => [
+         q(1156),
+         q(0),
+         ],
+      q(bfu) => [
+         q(1157),
+         q(0),
+         ],
+      q(bfw) => [
+         q(1158),
+         q(0),
+         ],
+      q(bfx) => [
+         q(1159),
+         q(0),
+         ],
+      q(bfy) => [
+         q(1160),
+         q(0),
+         ],
+      q(bfz) => [
+         q(1161),
+         q(0),
+         ],
+      q(bga) => [
+         q(1162),
+         q(0),
+         ],
+      q(bgb) => [
+         q(1163),
+         q(0),
+         ],
+      q(bgc) => [
+         q(1164),
+         q(0),
+         ],
+      q(bgd) => [
+         q(1165),
+         q(0),
+         ],
+      q(bge) => [
+         q(1166),
+         q(0),
+         ],
+      q(bgf) => [
+         q(1167),
+         q(0),
+         ],
+      q(bgg) => [
+         q(1168),
+         q(0),
+         ],
+      q(bgi) => [
+         q(1169),
+         q(0),
+         ],
+      q(bgj) => [
+         q(1170),
+         q(0),
+         ],
+      q(bgk) => [
+         q(1171),
+         q(0),
+         ],
+      q(bgl) => [
+         q(1172),
+         q(0),
+         ],
+      q(bgm) => [
+         q(1173),
+         q(0),
+         ],
+      q(bgn) => [
+         q(1174),
+         q(0),
+         ],
+      q(bgo) => [
+         q(1175),
+         q(0),
+         ],
+      q(bgp) => [
+         q(1176),
+         q(0),
+         ],
+      q(bgq) => [
+         q(1177),
+         q(0),
+         ],
+      q(bgr) => [
+         q(1178),
+         q(0),
+         ],
+      q(bgs) => [
+         q(1179),
+         q(0),
+         ],
+      q(bgt) => [
+         q(1180),
+         q(0),
+         ],
+      q(bgu) => [
+         q(1181),
+         q(0),
+         ],
+      q(bgv) => [
+         q(1182),
+         q(0),
+         ],
+      q(bgw) => [
+         q(1183),
+         q(0),
+         ],
+      q(bgx) => [
+         q(1184),
+         q(0),
+         ],
+      q(bgy) => [
+         q(1185),
+         q(0),
+         ],
+      q(bgz) => [
+         q(1186),
+         q(0),
+         ],
+      q(bha) => [
+         q(1187),
+         q(0),
+         ],
+      q(bhb) => [
+         q(1188),
+         q(0),
+         ],
+      q(bhc) => [
+         q(1189),
+         q(0),
+         ],
+      q(bhd) => [
+         q(1190),
+         q(0),
+         ],
+      q(bhe) => [
+         q(1191),
+         q(0),
+         ],
+      q(bhf) => [
+         q(1192),
+         q(0),
+         ],
+      q(bhg) => [
+         q(1193),
+         q(0),
+         ],
+      q(bhh) => [
+         q(1194),
+         q(0),
+         ],
+      q(bhi) => [
+         q(1195),
+         q(0),
+         ],
+      q(bhj) => [
+         q(1196),
+         q(0),
+         ],
+      q(bhl) => [
+         q(1197),
+         q(0),
+         ],
+      q(bhm) => [
+         q(1198),
+         q(0),
+         ],
+      q(bhn) => [
+         q(1199),
+         q(0),
+         ],
+      q(bho) => [
+         q(0052),
+         q(0),
+         ],
+      q(bhp) => [
+         q(1200),
+         q(0),
+         ],
+      q(bhq) => [
+         q(1201),
+         q(0),
+         ],
+      q(bhr) => [
+         q(1202),
+         q(0),
+         ],
+      q(bhs) => [
+         q(1203),
+         q(0),
+         ],
+      q(bht) => [
+         q(1204),
+         q(0),
+         ],
+      q(bhu) => [
+         q(1205),
+         q(0),
+         ],
+      q(bhv) => [
+         q(1206),
+         q(0),
+         ],
+      q(bhw) => [
+         q(1207),
+         q(0),
+         ],
+      q(bhx) => [
+         q(1208),
+         q(0),
+         ],
+      q(bhy) => [
+         q(1209),
+         q(0),
+         ],
+      q(bhz) => [
+         q(1210),
+         q(0),
+         ],
+      q(bia) => [
+         q(1211),
+         q(0),
+         ],
+      q(bib) => [
+         q(1212),
+         q(0),
+         ],
+      q(bic) => [
+         q(1213),
+         q(0),
+         ],
+      q(bid) => [
+         q(1214),
+         q(0),
+         ],
+      q(bie) => [
+         q(1215),
+         q(0),
+         ],
+      q(bif) => [
+         q(1216),
+         q(0),
+         ],
+      q(big) => [
+         q(1217),
+         q(0),
+         ],
+      q(bih) => [
+         q(0053),
+         q(0),
+         ],
+      q(bij) => [
+         q(1218),
+         q(0),
+         ],
+      q(bik) => [
+         q(0054),
+         q(0),
+         ],
+      q(bil) => [
+         q(1219),
+         q(0),
+         ],
+      q(bim) => [
+         q(1220),
+         q(0),
+         ],
+      q(bin) => [
+         q(0055),
+         q(0),
+         ],
+      q(bio) => [
+         q(1221),
+         q(0),
+         ],
+      q(bip) => [
+         q(1222),
+         q(0),
+         ],
+      q(biq) => [
+         q(1223),
+         q(0),
+         ],
+      q(bir) => [
+         q(1224),
+         q(0),
+         ],
+      q(bis) => [
+         q(0056),
+         q(0),
+         ],
+      q(bit) => [
+         q(1225),
+         q(0),
+         ],
+      q(biu) => [
+         q(1226),
+         q(0),
+         ],
+      q(biv) => [
+         q(1227),
+         q(0),
+         ],
+      q(biw) => [
+         q(1228),
+         q(0),
+         ],
+      q(bix) => [
+         q(1229),
+         q(0),
+         ],
+      q(biy) => [
+         q(1230),
+         q(0),
+         ],
+      q(biz) => [
+         q(1231),
+         q(0),
+         ],
+      q(bja) => [
+         q(1232),
+         q(0),
+         ],
+      q(bjb) => [
+         q(1233),
+         q(0),
+         ],
+      q(bjc) => [
+         q(1234),
+         q(0),
+         ],
+      q(bje) => [
+         q(1235),
+         q(0),
+         ],
+      q(bjf) => [
+         q(1236),
+         q(0),
+         ],
+      q(bjg) => [
+         q(1237),
+         q(0),
+         ],
+      q(bjh) => [
+         q(1238),
+         q(0),
+         ],
+      q(bji) => [
+         q(1239),
+         q(0),
+         ],
+      q(bjj) => [
+         q(1240),
+         q(0),
+         ],
+      q(bjk) => [
+         q(1241),
+         q(0),
+         ],
+      q(bjl) => [
+         q(1242),
+         q(0),
+         ],
+      q(bjm) => [
+         q(1243),
+         q(0),
+         ],
+      q(bjn) => [
+         q(1244),
+         q(0),
+         ],
+      q(bjo) => [
+         q(1245),
+         q(0),
+         ],
+      q(bjr) => [
+         q(1246),
+         q(0),
+         ],
+      q(bjs) => [
+         q(1247),
+         q(0),
+         ],
+      q(bjt) => [
+         q(1248),
+         q(0),
+         ],
+      q(bju) => [
+         q(1249),
+         q(0),
+         ],
+      q(bjv) => [
+         q(1250),
+         q(0),
+         ],
+      q(bjw) => [
+         q(1251),
+         q(0),
+         ],
+      q(bjx) => [
+         q(1252),
+         q(0),
+         ],
+      q(bjy) => [
+         q(1253),
+         q(0),
+         ],
+      q(bjz) => [
+         q(1254),
+         q(0),
+         ],
+      q(bka) => [
+         q(1255),
+         q(0),
+         ],
+      q(bkc) => [
+         q(1256),
+         q(0),
+         ],
+      q(bkd) => [
+         q(1257),
+         q(0),
+         ],
+      q(bkf) => [
+         q(1258),
+         q(0),
+         ],
+      q(bkg) => [
+         q(1259),
+         q(0),
+         ],
+      q(bkh) => [
+         q(1260),
+         q(0),
+         ],
+      q(bki) => [
+         q(1261),
+         q(0),
+         ],
+      q(bkj) => [
+         q(1262),
+         q(0),
+         ],
+      q(bkk) => [
+         q(1263),
+         q(0),
+         ],
+      q(bkl) => [
+         q(1264),
+         q(0),
+         ],
+      q(bkm) => [
+         q(1265),
+         q(0),
+         ],
+      q(bkn) => [
+         q(1266),
+         q(0),
+         ],
+      q(bko) => [
+         q(1267),
+         q(0),
+         ],
+      q(bkp) => [
+         q(1268),
+         q(0),
+         ],
+      q(bkq) => [
+         q(1269),
+         q(0),
+         ],
+      q(bkr) => [
+         q(1270),
+         q(0),
+         ],
+      q(bks) => [
+         q(1271),
+         q(0),
+         ],
+      q(bkt) => [
+         q(1272),
+         q(0),
+         ],
+      q(bku) => [
+         q(1273),
+         q(0),
+         ],
+      q(bkv) => [
+         q(1274),
+         q(0),
+         ],
+      q(bkw) => [
+         q(1275),
+         q(0),
+         ],
+      q(bkx) => [
+         q(1276),
+         q(0),
+         ],
+      q(bky) => [
+         q(1277),
+         q(0),
+         ],
+      q(bkz) => [
+         q(1278),
+         q(0),
+         ],
+      q(bla) => [
+         q(0057),
+         q(0),
+         ],
+      q(blb) => [
+         q(1279),
+         q(0),
+         ],
+      q(blc) => [
+         q(1280),
+         q(0),
+         ],
+      q(bld) => [
+         q(1281),
+         q(0),
+         ],
+      q(ble) => [
+         q(1282),
+         q(0),
+         ],
+      q(blf) => [
+         q(1283),
+         q(0),
+         ],
+      q(blg) => [
+         q(1284),
+         q(0),
+         ],
+      q(blh) => [
+         q(1285),
+         q(0),
+         ],
+      q(bli) => [
+         q(1286),
+         q(0),
+         ],
+      q(blj) => [
+         q(1287),
+         q(0),
+         ],
+      q(blk) => [
+         q(1288),
+         q(0),
+         ],
+      q(bll) => [
+         q(1289),
+         q(0),
+         ],
+      q(blm) => [
+         q(1290),
+         q(0),
+         ],
+      q(bln) => [
+         q(1291),
+         q(0),
+         ],
+      q(blo) => [
+         q(1292),
+         q(0),
+         ],
+      q(blp) => [
+         q(1293),
+         q(0),
+         ],
+      q(blq) => [
+         q(1294),
+         q(0),
+         ],
+      q(blr) => [
+         q(1295),
+         q(0),
+         ],
+      q(bls) => [
+         q(1296),
+         q(0),
+         ],
+      q(blt) => [
+         q(1297),
+         q(0),
+         ],
+      q(blv) => [
+         q(1298),
+         q(0),
+         ],
+      q(blw) => [
+         q(1299),
+         q(0),
+         ],
+      q(blx) => [
+         q(1300),
+         q(0),
+         ],
+      q(bly) => [
+         q(1301),
+         q(0),
+         ],
+      q(blz) => [
+         q(1302),
+         q(0),
+         ],
+      q(bma) => [
+         q(1303),
+         q(0),
+         ],
+      q(bmb) => [
+         q(1304),
+         q(0),
+         ],
+      q(bmc) => [
+         q(1305),
+         q(0),
+         ],
+      q(bmd) => [
+         q(1306),
+         q(0),
+         ],
+      q(bme) => [
+         q(1307),
+         q(0),
+         ],
+      q(bmf) => [
+         q(1308),
+         q(0),
+         ],
+      q(bmg) => [
+         q(1309),
+         q(0),
+         ],
+      q(bmh) => [
+         q(1310),
+         q(0),
+         ],
+      q(bmi) => [
+         q(1311),
+         q(0),
+         ],
+      q(bmj) => [
+         q(1312),
+         q(0),
+         ],
+      q(bmk) => [
+         q(1313),
+         q(0),
+         ],
+      q(bml) => [
+         q(1314),
+         q(0),
+         ],
+      q(bmm) => [
+         q(1315),
+         q(0),
+         ],
+      q(bmn) => [
+         q(1316),
+         q(0),
+         ],
+      q(bmo) => [
+         q(1317),
+         q(0),
+         ],
+      q(bmp) => [
+         q(1318),
+         q(0),
+         ],
+      q(bmq) => [
+         q(1319),
+         q(0),
+         ],
+      q(bmr) => [
+         q(1320),
+         q(0),
+         ],
+      q(bms) => [
+         q(1321),
+         q(0),
+         ],
+      q(bmt) => [
+         q(1322),
+         q(0),
+         ],
+      q(bmu) => [
+         q(1323),
+         q(0),
+         ],
+      q(bmv) => [
+         q(1324),
+         q(0),
+         ],
+      q(bmw) => [
+         q(1325),
+         q(0),
+         ],
+      q(bmx) => [
+         q(1326),
+         q(0),
+         ],
+      q(bmy) => [
+         q(1327),
+         q(0),
+         ],
+      q(bmz) => [
+         q(1328),
+         q(0),
+         ],
+      q(bna) => [
+         q(1329),
+         q(0),
+         ],
+      q(bnb) => [
+         q(1330),
+         q(0),
+         ],
+      q(bnc) => [
+         q(1331),
+         q(0),
+         ],
+      q(bnd) => [
+         q(1332),
+         q(0),
+         ],
+      q(bne) => [
+         q(1333),
+         q(0),
+         ],
+      q(bnf) => [
+         q(1334),
+         q(0),
+         ],
+      q(bng) => [
+         q(1335),
+         q(0),
+         ],
+      q(bni) => [
+         q(1336),
+         q(0),
+         ],
+      q(bnj) => [
+         q(1337),
+         q(0),
+         ],
+      q(bnk) => [
+         q(1338),
+         q(0),
+         ],
+      q(bnl) => [
+         q(1339),
+         q(0),
+         ],
+      q(bnm) => [
+         q(1340),
+         q(0),
+         ],
+      q(bnn) => [
+         q(1341),
+         q(0),
+         ],
+      q(bno) => [
+         q(1342),
+         q(0),
+         ],
+      q(bnp) => [
+         q(1343),
+         q(0),
+         ],
+      q(bnq) => [
+         q(1344),
+         q(0),
+         ],
+      q(bnr) => [
+         q(1345),
+         q(0),
+         ],
+      q(bns) => [
+         q(1346),
+         q(0),
+         ],
+      q(bnt) => [
+         q(0058),
+         q(1),
+         ],
+      q(bnu) => [
+         q(1347),
+         q(0),
+         ],
+      q(bnv) => [
+         q(1348),
+         q(0),
+         ],
+      q(bnw) => [
+         q(1349),
+         q(0),
+         ],
+      q(bnx) => [
+         q(1350),
+         q(0),
+         ],
+      q(bny) => [
+         q(1351),
+         q(0),
+         ],
+      q(bnz) => [
+         q(1352),
+         q(0),
+         ],
+      q(boa) => [
+         q(1353),
+         q(0),
+         ],
+      q(bob) => [
+         q(1354),
+         q(0),
+         ],
+      q(boe) => [
+         q(1355),
+         q(0),
+         ],
+      q(bof) => [
+         q(1356),
+         q(0),
+         ],
+      q(bog) => [
+         q(1357),
+         q(0),
+         ],
+      q(boh) => [
+         q(1358),
+         q(0),
+         ],
+      q(boi) => [
+         q(1359),
+         q(0),
+         ],
+      q(boj) => [
+         q(1360),
+         q(0),
+         ],
+      q(bok) => [
+         q(1361),
+         q(0),
+         ],
+      q(bol) => [
+         q(1362),
+         q(0),
+         ],
+      q(bom) => [
+         q(1363),
+         q(0),
+         ],
+      q(bon) => [
+         q(1364),
+         q(0),
+         ],
+      q(boo) => [
+         q(1365),
+         q(0),
+         ],
+      q(bop) => [
+         q(1366),
+         q(0),
+         ],
+      q(boq) => [
+         q(1367),
+         q(0),
+         ],
+      q(bor) => [
+         q(1368),
+         q(0),
+         ],
+      q(bos) => [
+         q(0059),
+         q(0),
+         ],
+      q(bot) => [
+         q(1369),
+         q(0),
+         ],
+      q(bou) => [
+         q(1370),
+         q(0),
+         ],
+      q(bov) => [
+         q(1371),
+         q(0),
+         ],
+      q(bow) => [
+         q(1372),
+         q(0),
+         ],
+      q(box) => [
+         q(1373),
+         q(0),
+         ],
+      q(boy) => [
+         q(1374),
+         q(0),
+         ],
+      q(boz) => [
+         q(1375),
+         q(0),
+         ],
+      q(bpa) => [
+         q(1376),
+         q(0),
+         ],
+      q(bpb) => [
+         q(1377),
+         q(0),
+         ],
+      q(bpd) => [
+         q(1378),
+         q(0),
+         ],
+      q(bpg) => [
+         q(1379),
+         q(0),
+         ],
+      q(bph) => [
+         q(1380),
+         q(0),
+         ],
+      q(bpi) => [
+         q(1381),
+         q(0),
+         ],
+      q(bpj) => [
+         q(1382),
+         q(0),
+         ],
+      q(bpk) => [
+         q(1383),
+         q(0),
+         ],
+      q(bpl) => [
+         q(1384),
+         q(0),
+         ],
+      q(bpm) => [
+         q(1385),
+         q(0),
+         ],
+      q(bpn) => [
+         q(1386),
+         q(0),
+         ],
+      q(bpo) => [
+         q(1387),
+         q(0),
+         ],
+      q(bpp) => [
+         q(1388),
+         q(0),
+         ],
+      q(bpq) => [
+         q(1389),
+         q(0),
+         ],
+      q(bpr) => [
+         q(1390),
+         q(0),
+         ],
+      q(bps) => [
+         q(1391),
+         q(0),
+         ],
+      q(bpt) => [
+         q(1392),
+         q(0),
+         ],
+      q(bpu) => [
+         q(1393),
+         q(0),
+         ],
+      q(bpv) => [
+         q(1394),
+         q(0),
+         ],
+      q(bpw) => [
+         q(1395),
+         q(0),
+         ],
+      q(bpx) => [
+         q(1396),
+         q(0),
+         ],
+      q(bpy) => [
+         q(1397),
+         q(0),
+         ],
+      q(bpz) => [
+         q(1398),
+         q(0),
+         ],
+      q(bqa) => [
+         q(1399),
+         q(0),
+         ],
+      q(bqb) => [
+         q(1400),
+         q(0),
+         ],
+      q(bqc) => [
+         q(1401),
+         q(0),
+         ],
+      q(bqd) => [
+         q(1402),
+         q(0),
+         ],
+      q(bqf) => [
+         q(1403),
+         q(0),
+         ],
+      q(bqg) => [
+         q(1404),
+         q(0),
+         ],
+      q(bqh) => [
+         q(1405),
+         q(0),
+         ],
+      q(bqi) => [
+         q(1406),
+         q(0),
+         ],
+      q(bqj) => [
+         q(1407),
+         q(0),
+         ],
+      q(bqk) => [
+         q(1408),
+         q(0),
+         ],
+      q(bql) => [
+         q(1409),
+         q(0),
+         ],
+      q(bqm) => [
+         q(1410),
+         q(0),
+         ],
+      q(bqn) => [
+         q(1411),
+         q(0),
+         ],
+      q(bqo) => [
+         q(1412),
+         q(0),
+         ],
+      q(bqp) => [
+         q(1413),
+         q(0),
+         ],
+      q(bqq) => [
+         q(1414),
+         q(0),
+         ],
+      q(bqr) => [
+         q(1415),
+         q(0),
+         ],
+      q(bqs) => [
+         q(1416),
+         q(0),
+         ],
+      q(bqt) => [
+         q(1417),
+         q(0),
+         ],
+      q(bqu) => [
+         q(1418),
+         q(0),
+         ],
+      q(bqv) => [
+         q(1419),
+         q(0),
+         ],
+      q(bqw) => [
+         q(1420),
+         q(0),
+         ],
+      q(bqx) => [
+         q(1421),
+         q(0),
+         ],
+      q(bqy) => [
+         q(1422),
+         q(0),
+         ],
+      q(bqz) => [
+         q(1423),
+         q(0),
+         ],
+      q(bra) => [
+         q(0060),
+         q(0),
+         ],
+      q(brb) => [
+         q(1424),
+         q(0),
+         ],
+      q(brc) => [
+         q(1425),
+         q(0),
+         ],
+      q(brd) => [
+         q(1426),
+         q(0),
+         ],
+      q(bre) => [
+         q(0061),
+         q(0),
+         ],
+      q(brf) => [
+         q(1427),
+         q(0),
+         ],
+      q(brg) => [
+         q(1428),
+         q(0),
+         ],
+      q(brh) => [
+         q(1429),
+         q(0),
+         ],
+      q(bri) => [
+         q(1430),
+         q(0),
+         ],
+      q(brj) => [
+         q(1431),
+         q(0),
+         ],
+      q(brk) => [
+         q(1432),
+         q(0),
+         ],
+      q(brl) => [
+         q(1433),
+         q(0),
+         ],
+      q(brm) => [
+         q(1434),
+         q(0),
+         ],
+      q(brn) => [
+         q(1435),
+         q(0),
+         ],
+      q(bro) => [
+         q(1436),
+         q(0),
+         ],
+      q(brp) => [
+         q(1437),
+         q(0),
+         ],
+      q(brq) => [
+         q(1438),
+         q(0),
+         ],
+      q(brr) => [
+         q(1439),
+         q(0),
+         ],
+      q(brs) => [
+         q(1440),
+         q(0),
+         ],
+      q(brt) => [
+         q(1441),
+         q(0),
+         ],
+      q(bru) => [
+         q(1442),
+         q(0),
+         ],
+      q(brv) => [
+         q(1443),
+         q(0),
+         ],
+      q(brw) => [
+         q(1444),
+         q(0),
+         ],
+      q(brx) => [
+         q(1445),
+         q(0),
+         ],
+      q(bry) => [
+         q(1446),
+         q(0),
+         ],
+      q(brz) => [
+         q(1447),
+         q(0),
+         ],
+      q(bsa) => [
+         q(1448),
+         q(0),
+         ],
+      q(bsb) => [
+         q(1449),
+         q(0),
+         ],
+      q(bsc) => [
+         q(1450),
+         q(0),
+         ],
+      q(bse) => [
+         q(1451),
+         q(0),
+         ],
+      q(bsf) => [
+         q(1452),
+         q(0),
+         ],
+      q(bsg) => [
+         q(1453),
+         q(0),
+         ],
+      q(bsh) => [
+         q(1454),
+         q(0),
+         ],
+      q(bsi) => [
+         q(1455),
+         q(0),
+         ],
+      q(bsj) => [
+         q(1456),
+         q(0),
+         ],
+      q(bsk) => [
+         q(1457),
+         q(0),
+         ],
+      q(bsl) => [
+         q(1458),
+         q(0),
+         ],
+      q(bsm) => [
+         q(1459),
+         q(0),
+         ],
+      q(bsn) => [
+         q(1460),
+         q(0),
+         ],
+      q(bso) => [
+         q(1461),
+         q(0),
+         ],
+      q(bsp) => [
+         q(1462),
+         q(0),
+         ],
+      q(bsq) => [
+         q(1463),
+         q(0),
+         ],
+      q(bsr) => [
+         q(1464),
+         q(0),
+         ],
+      q(bss) => [
+         q(1465),
+         q(0),
+         ],
+      q(bst) => [
+         q(1466),
+         q(0),
+         ],
+      q(bsu) => [
+         q(1467),
+         q(0),
+         ],
+      q(bsv) => [
+         q(1468),
+         q(0),
+         ],
+      q(bsw) => [
+         q(1469),
+         q(0),
+         ],
+      q(bsx) => [
+         q(1470),
+         q(0),
+         ],
+      q(bsy) => [
+         q(1471),
+         q(0),
+         ],
+      q(bta) => [
+         q(1472),
+         q(0),
+         ],
+      q(btc) => [
+         q(1473),
+         q(0),
+         ],
+      q(btd) => [
+         q(1474),
+         q(0),
+         ],
+      q(bte) => [
+         q(1475),
+         q(0),
+         ],
+      q(btf) => [
+         q(1476),
+         q(0),
+         ],
+      q(btg) => [
+         q(1477),
+         q(0),
+         ],
+      q(bth) => [
+         q(1478),
+         q(0),
+         ],
+      q(bti) => [
+         q(1479),
+         q(0),
+         ],
+      q(btj) => [
+         q(1480),
+         q(0),
+         ],
+      q(btk) => [
+         q(0062),
+         q(0),
+         ],
+      q(btl) => [
+         q(1481),
+         q(0),
+         ],
+      q(btm) => [
+         q(1482),
+         q(0),
+         ],
+      q(btn) => [
+         q(1483),
+         q(0),
+         ],
+      q(bto) => [
+         q(1484),
+         q(0),
+         ],
+      q(btp) => [
+         q(1485),
+         q(0),
+         ],
+      q(btq) => [
+         q(1486),
+         q(0),
+         ],
+      q(btr) => [
+         q(1487),
+         q(0),
+         ],
+      q(bts) => [
+         q(1488),
+         q(0),
+         ],
+      q(btt) => [
+         q(1489),
+         q(0),
+         ],
+      q(btu) => [
+         q(1490),
+         q(0),
+         ],
+      q(btv) => [
+         q(1491),
+         q(0),
+         ],
+      q(btw) => [
+         q(1492),
+         q(0),
+         ],
+      q(btx) => [
+         q(1493),
+         q(0),
+         ],
+      q(bty) => [
+         q(1494),
+         q(0),
+         ],
+      q(btz) => [
+         q(1495),
+         q(0),
+         ],
+      q(bua) => [
+         q(0063),
+         q(0),
+         ],
+      q(bub) => [
+         q(1496),
+         q(0),
+         ],
+      q(buc) => [
+         q(1497),
+         q(0),
+         ],
+      q(bud) => [
+         q(1498),
+         q(0),
+         ],
+      q(bue) => [
+         q(1499),
+         q(0),
+         ],
+      q(buf) => [
+         q(1500),
+         q(0),
+         ],
+      q(bug) => [
+         q(0064),
+         q(0),
+         ],
+      q(buh) => [
+         q(1501),
+         q(0),
+         ],
+      q(bui) => [
+         q(1502),
+         q(0),
+         ],
+      q(buj) => [
+         q(1503),
+         q(0),
+         ],
+      q(buk) => [
+         q(1504),
+         q(0),
+         ],
+      q(bul) => [
+         q(0065),
+         q(0),
+         ],
+      q(bum) => [
+         q(1505),
+         q(0),
+         ],
+      q(bun) => [
+         q(1506),
+         q(0),
+         ],
+      q(buo) => [
+         q(1507),
+         q(0),
+         ],
+      q(bup) => [
+         q(1508),
+         q(0),
+         ],
+      q(buq) => [
+         q(1509),
+         q(0),
+         ],
+      q(bur) => [
+         q(0066),
+         q(0),
+         ],
+      q(bus) => [
+         q(1510),
+         q(0),
+         ],
+      q(but) => [
+         q(1511),
+         q(0),
+         ],
+      q(buu) => [
+         q(1512),
+         q(0),
+         ],
+      q(buv) => [
+         q(1513),
+         q(0),
+         ],
+      q(buw) => [
+         q(1514),
+         q(0),
+         ],
+      q(bux) => [
+         q(1515),
+         q(0),
+         ],
+      q(buy) => [
+         q(1516),
+         q(0),
+         ],
+      q(buz) => [
+         q(1517),
+         q(0),
+         ],
+      q(bva) => [
+         q(1518),
+         q(0),
+         ],
+      q(bvb) => [
+         q(1519),
+         q(0),
+         ],
+      q(bvc) => [
+         q(1520),
+         q(0),
+         ],
+      q(bvd) => [
+         q(1521),
+         q(0),
+         ],
+      q(bve) => [
+         q(1522),
+         q(0),
+         ],
+      q(bvf) => [
+         q(1523),
+         q(0),
+         ],
+      q(bvg) => [
+         q(1524),
+         q(0),
+         ],
+      q(bvh) => [
+         q(1525),
+         q(0),
+         ],
+      q(bvi) => [
+         q(1526),
+         q(0),
+         ],
+      q(bvj) => [
+         q(1527),
+         q(0),
+         ],
+      q(bvk) => [
+         q(1528),
+         q(0),
+         ],
+      q(bvl) => [
+         q(1529),
+         q(0),
+         ],
+      q(bvm) => [
+         q(1530),
+         q(0),
+         ],
+      q(bvn) => [
+         q(1531),
+         q(0),
+         ],
+      q(bvo) => [
+         q(1532),
+         q(0),
+         ],
+      q(bvq) => [
+         q(1533),
+         q(0),
+         ],
+      q(bvr) => [
+         q(1534),
+         q(0),
+         ],
+      q(bvt) => [
+         q(1535),
+         q(0),
+         ],
+      q(bvu) => [
+         q(1536),
+         q(0),
+         ],
+      q(bvv) => [
+         q(1537),
+         q(0),
+         ],
+      q(bvw) => [
+         q(1538),
+         q(0),
+         ],
+      q(bvx) => [
+         q(1539),
+         q(0),
+         ],
+      q(bvy) => [
+         q(1540),
+         q(0),
+         ],
+      q(bvz) => [
+         q(1541),
+         q(0),
+         ],
+      q(bwa) => [
+         q(1542),
+         q(0),
+         ],
+      q(bwb) => [
+         q(1543),
+         q(0),
+         ],
+      q(bwc) => [
+         q(1544),
+         q(0),
+         ],
+      q(bwd) => [
+         q(1545),
+         q(0),
+         ],
+      q(bwe) => [
+         q(1546),
+         q(0),
+         ],
+      q(bwf) => [
+         q(1547),
+         q(0),
+         ],
+      q(bwg) => [
+         q(1548),
+         q(0),
+         ],
+      q(bwh) => [
+         q(1549),
+         q(0),
+         ],
+      q(bwi) => [
+         q(1550),
+         q(0),
+         ],
+      q(bwj) => [
+         q(1551),
+         q(0),
+         ],
+      q(bwk) => [
+         q(1552),
+         q(0),
+         ],
+      q(bwl) => [
+         q(1553),
+         q(0),
+         ],
+      q(bwm) => [
+         q(1554),
+         q(0),
+         ],
+      q(bwn) => [
+         q(1555),
+         q(0),
+         ],
+      q(bwo) => [
+         q(1556),
+         q(0),
+         ],
+      q(bwp) => [
+         q(1557),
+         q(0),
+         ],
+      q(bwq) => [
+         q(1558),
+         q(0),
+         ],
+      q(bwr) => [
+         q(1559),
+         q(0),
+         ],
+      q(bws) => [
+         q(1560),
+         q(0),
+         ],
+      q(bwt) => [
+         q(1561),
+         q(0),
+         ],
+      q(bwu) => [
+         q(1562),
+         q(0),
+         ],
+      q(bww) => [
+         q(1563),
+         q(0),
+         ],
+      q(bwx) => [
+         q(1564),
+         q(0),
+         ],
+      q(bwy) => [
+         q(1565),
+         q(0),
+         ],
+      q(bwz) => [
+         q(1566),
+         q(0),
+         ],
+      q(bxa) => [
+         q(1567),
+         q(0),
+         ],
+      q(bxb) => [
+         q(1568),
+         q(0),
+         ],
+      q(bxc) => [
+         q(1569),
+         q(0),
+         ],
+      q(bxd) => [
+         q(1570),
+         q(0),
+         ],
+      q(bxe) => [
+         q(1571),
+         q(0),
+         ],
+      q(bxf) => [
+         q(1572),
+         q(0),
+         ],
+      q(bxg) => [
+         q(1573),
+         q(0),
+         ],
+      q(bxh) => [
+         q(1574),
+         q(0),
+         ],
+      q(bxi) => [
+         q(1575),
+         q(0),
+         ],
+      q(bxj) => [
+         q(1576),
+         q(0),
+         ],
+      q(bxk) => [
+         q(1577),
+         q(0),
+         ],
+      q(bxl) => [
+         q(1578),
+         q(0),
+         ],
+      q(bxm) => [
+         q(1579),
+         q(0),
+         ],
+      q(bxn) => [
+         q(1580),
+         q(0),
+         ],
+      q(bxo) => [
+         q(1581),
+         q(0),
+         ],
+      q(bxp) => [
+         q(1582),
+         q(0),
+         ],
+      q(bxq) => [
+         q(1583),
+         q(0),
+         ],
+      q(bxr) => [
+         q(1584),
+         q(0),
+         ],
+      q(bxs) => [
+         q(1585),
+         q(0),
+         ],
+      q(bxu) => [
+         q(1586),
+         q(0),
+         ],
+      q(bxv) => [
+         q(1587),
+         q(0),
+         ],
+      q(bxw) => [
+         q(1588),
+         q(0),
+         ],
+      q(bxx) => [
+         q(1589),
+         q(0),
+         ],
+      q(bxz) => [
+         q(1590),
+         q(0),
+         ],
+      q(bya) => [
+         q(1591),
+         q(0),
+         ],
+      q(byb) => [
+         q(1592),
+         q(0),
+         ],
+      q(byc) => [
+         q(1593),
+         q(0),
+         ],
+      q(byd) => [
+         q(1594),
+         q(0),
+         ],
+      q(bye) => [
+         q(1595),
+         q(0),
+         ],
+      q(byf) => [
+         q(1596),
+         q(0),
+         ],
+      q(byg) => [
+         q(1597),
+         q(0),
+         ],
+      q(byh) => [
+         q(1598),
+         q(0),
+         ],
+      q(byi) => [
+         q(1599),
+         q(0),
+         ],
+      q(byj) => [
+         q(1600),
+         q(0),
+         ],
+      q(byk) => [
+         q(1601),
+         q(0),
+         ],
+      q(byl) => [
+         q(1602),
+         q(0),
+         ],
+      q(bym) => [
+         q(1603),
+         q(0),
+         ],
+      q(byn) => [
+         q(0067),
+         q(0),
+         ],
+      q(byo) => [
+         q(1604),
+         q(0),
+         ],
+      q(byp) => [
+         q(1605),
+         q(0),
+         ],
+      q(byq) => [
+         q(1606),
+         q(0),
+         ],
+      q(byr) => [
+         q(1607),
+         q(0),
+         ],
+      q(bys) => [
+         q(1608),
+         q(0),
+         ],
+      q(byt) => [
+         q(1609),
+         q(0),
+         ],
+      q(byv) => [
+         q(1610),
+         q(0),
+         ],
+      q(byw) => [
+         q(1611),
+         q(0),
+         ],
+      q(byx) => [
+         q(1612),
+         q(0),
+         ],
+      q(byy) => [
+         q(1613),
+         q(0),
+         ],
+      q(byz) => [
+         q(1614),
+         q(0),
+         ],
+      q(bza) => [
+         q(1615),
+         q(0),
+         ],
+      q(bzb) => [
+         q(1616),
+         q(0),
+         ],
+      q(bzc) => [
+         q(1617),
+         q(0),
+         ],
+      q(bzd) => [
+         q(1618),
+         q(0),
+         ],
+      q(bze) => [
+         q(1619),
+         q(0),
+         ],
+      q(bzf) => [
+         q(1620),
+         q(0),
+         ],
+      q(bzg) => [
+         q(1621),
+         q(0),
+         ],
+      q(bzh) => [
+         q(1622),
+         q(0),
+         ],
+      q(bzi) => [
+         q(1623),
+         q(0),
+         ],
+      q(bzj) => [
+         q(1624),
+         q(0),
+         ],
+      q(bzk) => [
+         q(1625),
+         q(0),
+         ],
+      q(bzl) => [
+         q(1626),
+         q(0),
+         ],
+      q(bzm) => [
+         q(1627),
+         q(0),
+         ],
+      q(bzn) => [
+         q(1628),
+         q(0),
+         ],
+      q(bzo) => [
+         q(1629),
+         q(0),
+         ],
+      q(bzp) => [
+         q(1630),
+         q(0),
+         ],
+      q(bzq) => [
+         q(1631),
+         q(0),
+         ],
+      q(bzr) => [
+         q(1632),
+         q(0),
+         ],
+      q(bzs) => [
+         q(1633),
+         q(0),
+         ],
+      q(bzt) => [
+         q(1634),
+         q(0),
+         ],
+      q(bzu) => [
+         q(1635),
+         q(0),
+         ],
+      q(bzv) => [
+         q(1636),
+         q(0),
+         ],
+      q(bzw) => [
+         q(1637),
+         q(0),
+         ],
+      q(bzx) => [
+         q(1638),
+         q(0),
+         ],
+      q(bzy) => [
+         q(1639),
+         q(0),
+         ],
+      q(bzz) => [
+         q(1640),
+         q(0),
+         ],
+      q(caa) => [
+         q(1641),
+         q(0),
+         ],
+      q(cab) => [
+         q(1642),
+         q(0),
+         ],
+      q(cac) => [
+         q(1643),
+         q(0),
+         ],
+      q(cad) => [
+         q(0068),
+         q(0),
+         ],
+      q(cae) => [
+         q(1644),
+         q(0),
+         ],
+      q(caf) => [
+         q(1645),
+         q(0),
+         ],
+      q(cag) => [
+         q(1646),
+         q(0),
+         ],
+      q(cah) => [
+         q(1647),
+         q(0),
+         ],
+      q(cai) => [
+         q(0069),
+         q(0),
+         ],
+      q(caj) => [
+         q(1648),
+         q(0),
+         ],
+      q(cak) => [
+         q(1649),
+         q(0),
+         ],
+      q(cal) => [
+         q(1650),
+         q(0),
+         ],
+      q(cam) => [
+         q(1651),
+         q(0),
+         ],
+      q(can) => [
+         q(1652),
+         q(0),
+         ],
+      q(cao) => [
+         q(1653),
+         q(0),
+         ],
+      q(cap) => [
+         q(1654),
+         q(0),
+         ],
+      q(caq) => [
+         q(1655),
+         q(0),
+         ],
+      q(car) => [
+         q(0070),
+         q(0),
+         ],
+      q(cas) => [
+         q(1656),
+         q(0),
+         ],
+      q(cat) => [
+         q(0071),
+         q(0),
+         ],
+      q(cau) => [
+         q(0072),
+         q(0),
+         ],
+      q(cav) => [
+         q(1657),
+         q(0),
+         ],
+      q(caw) => [
+         q(1658),
+         q(0),
+         ],
+      q(cax) => [
+         q(1659),
+         q(0),
+         ],
+      q(cay) => [
+         q(1660),
+         q(0),
+         ],
+      q(caz) => [
+         q(1661),
+         q(0),
+         ],
+      q(cba) => [
+         q(0494),
+         q(0),
+         ],
+      q(cbb) => [
+         q(1662),
+         q(0),
+         ],
+      q(cbc) => [
+         q(1663),
+         q(0),
+         ],
+      q(cbd) => [
+         q(1664),
+         q(0),
+         ],
+      q(cbe) => [
+         q(1665),
+         q(0),
+         ],
+      q(cbg) => [
+         q(1666),
+         q(0),
+         ],
+      q(cbh) => [
+         q(1667),
+         q(0),
+         ],
+      q(cbi) => [
+         q(1668),
+         q(0),
+         ],
+      q(cbj) => [
+         q(1669),
+         q(0),
+         ],
+      q(cbk) => [
+         q(1670),
+         q(0),
+         ],
+      q(cbl) => [
+         q(1671),
+         q(0),
+         ],
+      q(cbn) => [
+         q(1672),
+         q(0),
+         ],
+      q(cbo) => [
+         q(1673),
+         q(0),
+         ],
+      q(cbr) => [
+         q(1674),
+         q(0),
+         ],
+      q(cbs) => [
+         q(1675),
+         q(0),
+         ],
+      q(cbt) => [
+         q(1676),
+         q(0),
+         ],
+      q(cbu) => [
+         q(1677),
+         q(0),
+         ],
+      q(cbv) => [
+         q(1678),
+         q(0),
+         ],
+      q(cbw) => [
+         q(1679),
+         q(0),
+         ],
+      q(cby) => [
+         q(1680),
+         q(0),
+         ],
+      q(cca) => [
+         q(1681),
+         q(0),
+         ],
+      q(ccc) => [
+         q(1682),
+         q(0),
+         ],
+      q(ccd) => [
+         q(1683),
+         q(0),
+         ],
+      q(cce) => [
+         q(1684),
+         q(0),
+         ],
+      q(ccg) => [
+         q(1685),
+         q(0),
+         ],
+      q(cch) => [
+         q(1686),
+         q(0),
+         ],
+      q(ccj) => [
+         q(1687),
+         q(0),
+         ],
+      q(ccl) => [
+         q(1688),
+         q(0),
+         ],
+      q(ccm) => [
+         q(1689),
+         q(0),
+         ],
+      q(ccn) => [
+         q(0495),
+         q(0),
+         ],
+      q(cco) => [
+         q(1690),
+         q(0),
+         ],
+      q(ccp) => [
+         q(1691),
+         q(0),
+         ],
+      q(ccr) => [
+         q(1692),
+         q(0),
+         ],
+      q(ccs) => [
+         q(0496),
+         q(0),
+         ],
+      q(cda) => [
+         q(1693),
+         q(0),
+         ],
+      q(cdc) => [
+         q(0497),
+         q(0),
+         ],
+      q(cdd) => [
+         q(0498),
+         q(0),
+         ],
+      q(cde) => [
+         q(1694),
+         q(0),
+         ],
+      q(cdf) => [
+         q(1695),
+         q(0),
+         ],
+      q(cdg) => [
+         q(1696),
+         q(0),
+         ],
+      q(cdh) => [
+         q(1697),
+         q(0),
+         ],
+      q(cdi) => [
+         q(1698),
+         q(0),
+         ],
+      q(cdj) => [
+         q(1699),
+         q(0),
+         ],
+      q(cdm) => [
+         q(1700),
+         q(0),
+         ],
+      q(cdn) => [
+         q(1701),
+         q(0),
+         ],
+      q(cdo) => [
+         q(1702),
+         q(0),
+         ],
+      q(cdr) => [
+         q(1703),
+         q(0),
+         ],
+      q(cds) => [
+         q(1704),
+         q(0),
+         ],
+      q(cdy) => [
+         q(1705),
+         q(0),
+         ],
+      q(cdz) => [
+         q(1706),
+         q(0),
+         ],
+      q(cea) => [
+         q(1707),
+         q(0),
+         ],
+      q(ceb) => [
+         q(0073),
+         q(0),
+         ],
+      q(ceg) => [
+         q(1708),
+         q(0),
+         ],
+      q(cek) => [
+         q(1709),
+         q(0),
+         ],
+      q(cel) => [
+         q(0074),
+         q(0),
+         ],
+      q(cen) => [
+         q(1710),
+         q(0),
+         ],
+      q(cet) => [
+         q(1711),
+         q(0),
+         ],
+      q(cfa) => [
+         q(1712),
+         q(0),
+         ],
+      q(cfd) => [
+         q(1713),
+         q(0),
+         ],
+      q(cfg) => [
+         q(1714),
+         q(0),
+         ],
+      q(cfm) => [
+         q(1715),
+         q(0),
+         ],
+      q(cga) => [
+         q(1716),
+         q(0),
+         ],
+      q(cgc) => [
+         q(1717),
+         q(0),
+         ],
+      q(cgg) => [
+         q(1718),
+         q(0),
+         ],
+      q(cgk) => [
+         q(1719),
+         q(0),
+         ],
+      q(cha) => [
+         q(0075),
+         q(0),
+         ],
+      q(chb) => [
+         q(0076),
+         q(0),
+         ],
+      q(chc) => [
+         q(1720),
+         q(0),
+         ],
+      q(chd) => [
+         q(1721),
+         q(0),
+         ],
+      q(che) => [
+         q(0077),
+         q(0),
+         ],
+      q(chf) => [
+         q(1722),
+         q(0),
+         ],
+      q(chg) => [
+         q(0078),
+         q(0),
+         ],
+      q(chh) => [
+         q(1723),
+         q(0),
+         ],
+      q(chi) => [
+         q(0079),
+         q(0),
+         ],
+      q(chj) => [
+         q(1724),
+         q(0),
+         ],
+      q(chk) => [
+         q(0080),
+         q(0),
+         ],
+      q(chl) => [
+         q(1725),
+         q(0),
+         ],
+      q(chm) => [
+         q(0081),
+         q(1),
+         ],
+      q(chn) => [
+         q(0082),
+         q(0),
+         ],
+      q(cho) => [
+         q(0083),
+         q(0),
+         ],
+      q(chp) => [
+         q(0084),
+         q(0),
+         ],
+      q(chq) => [
+         q(1726),
+         q(0),
+         ],
+      q(chr) => [
+         q(0085),
+         q(0),
+         ],
+      q(cht) => [
+         q(1727),
+         q(0),
+         ],
+      q(chu) => [
+         q(0086),
+         q(0),
+         ],
+      q(chv) => [
+         q(0087),
+         q(0),
+         ],
+      q(chw) => [
+         q(1728),
+         q(0),
+         ],
+      q(chx) => [
+         q(1729),
+         q(0),
+         ],
+      q(chy) => [
+         q(0088),
+         q(0),
+         ],
+      q(chz) => [
+         q(1730),
+         q(0),
+         ],
+      q(cia) => [
+         q(1731),
+         q(0),
+         ],
+      q(cib) => [
+         q(1732),
+         q(0),
+         ],
+      q(cic) => [
+         q(1733),
+         q(0),
+         ],
+      q(cid) => [
+         q(1734),
+         q(0),
+         ],
+      q(cie) => [
+         q(1735),
+         q(0),
+         ],
+      q(cih) => [
+         q(1736),
+         q(0),
+         ],
+      q(cik) => [
+         q(1737),
+         q(0),
+         ],
+      q(cim) => [
+         q(1738),
+         q(0),
+         ],
+      q(cin) => [
+         q(1739),
+         q(0),
+         ],
+      q(cip) => [
+         q(1740),
+         q(0),
+         ],
+      q(cir) => [
+         q(1741),
+         q(0),
+         ],
+      q(ciw) => [
+         q(1742),
+         q(0),
+         ],
+      q(ciy) => [
+         q(1743),
+         q(0),
+         ],
+      q(cja) => [
+         q(1744),
+         q(0),
+         ],
+      q(cje) => [
+         q(1745),
+         q(0),
+         ],
+      q(cjh) => [
+         q(1746),
+         q(0),
+         ],
+      q(cji) => [
+         q(1747),
+         q(0),
+         ],
+      q(cjk) => [
+         q(1748),
+         q(0),
+         ],
+      q(cjm) => [
+         q(1749),
+         q(0),
+         ],
+      q(cjn) => [
+         q(1750),
+         q(0),
+         ],
+      q(cjo) => [
+         q(1751),
+         q(0),
+         ],
+      q(cjp) => [
+         q(1752),
+         q(0),
+         ],
+      q(cjs) => [
+         q(1753),
+         q(0),
+         ],
+      q(cjv) => [
+         q(1754),
+         q(0),
+         ],
+      q(cjy) => [
+         q(1755),
+         q(0),
+         ],
+      q(ckb) => [
+         q(1756),
+         q(0),
+         ],
+      q(ckh) => [
+         q(1757),
+         q(0),
+         ],
+      q(ckl) => [
+         q(1758),
+         q(0),
+         ],
+      q(cko) => [
+         q(1759),
+         q(0),
+         ],
+      q(ckq) => [
+         q(1760),
+         q(0),
+         ],
+      q(ckr) => [
+         q(1761),
+         q(0),
+         ],
+      q(cks) => [
+         q(1762),
+         q(0),
+         ],
+      q(ckt) => [
+         q(1763),
+         q(0),
+         ],
+      q(cku) => [
+         q(1764),
+         q(0),
+         ],
+      q(ckv) => [
+         q(1765),
+         q(0),
+         ],
+      q(ckx) => [
+         q(1766),
+         q(0),
+         ],
+      q(cky) => [
+         q(1767),
+         q(0),
+         ],
+      q(ckz) => [
+         q(1768),
+         q(0),
+         ],
+      q(cla) => [
+         q(1769),
+         q(0),
+         ],
+      q(clc) => [
+         q(1770),
+         q(0),
+         ],
+      q(cld) => [
+         q(1771),
+         q(0),
+         ],
+      q(cle) => [
+         q(1772),
+         q(0),
+         ],
+      q(clh) => [
+         q(1773),
+         q(0),
+         ],
+      q(cli) => [
+         q(1774),
+         q(0),
+         ],
+      q(clj) => [
+         q(1775),
+         q(0),
+         ],
+      q(clk) => [
+         q(1776),
+         q(0),
+         ],
+      q(cll) => [
+         q(1777),
+         q(0),
+         ],
+      q(clm) => [
+         q(1778),
+         q(0),
+         ],
+      q(clo) => [
+         q(1779),
+         q(0),
+         ],
+      q(clt) => [
+         q(1780),
+         q(0),
+         ],
+      q(clu) => [
+         q(1781),
+         q(0),
+         ],
+      q(clw) => [
+         q(1782),
+         q(0),
+         ],
+      q(cly) => [
+         q(1783),
+         q(0),
+         ],
+      q(cma) => [
+         q(1784),
+         q(0),
+         ],
+      q(cmc) => [
+         q(0089),
+         q(0),
+         ],
+      q(cme) => [
+         q(1785),
+         q(0),
+         ],
+      q(cmg) => [
+         q(1786),
+         q(0),
+         ],
+      q(cmi) => [
+         q(1787),
+         q(0),
+         ],
+      q(cml) => [
+         q(1788),
+         q(0),
+         ],
+      q(cmm) => [
+         q(1789),
+         q(0),
+         ],
+      q(cmn) => [
+         q(1790),
+         q(0),
+         ],
+      q(cmo) => [
+         q(1791),
+         q(0),
+         ],
+      q(cmr) => [
+         q(1792),
+         q(0),
+         ],
+      q(cms) => [
+         q(1793),
+         q(0),
+         ],
+      q(cmt) => [
+         q(1794),
+         q(0),
+         ],
+      q(cna) => [
+         q(1795),
+         q(0),
+         ],
+      q(cnb) => [
+         q(1796),
+         q(0),
+         ],
+      q(cnc) => [
+         q(1797),
+         q(0),
+         ],
+      q(cng) => [
+         q(1798),
+         q(0),
+         ],
+      q(cnh) => [
+         q(1799),
+         q(0),
+         ],
+      q(cni) => [
+         q(1800),
+         q(0),
+         ],
+      q(cnk) => [
+         q(1801),
+         q(0),
+         ],
+      q(cnl) => [
+         q(1802),
+         q(0),
+         ],
+      q(cno) => [
+         q(1803),
+         q(0),
+         ],
+      q(cns) => [
+         q(1804),
+         q(0),
+         ],
+      q(cnt) => [
+         q(1805),
+         q(0),
+         ],
+      q(cnu) => [
+         q(1806),
+         q(0),
+         ],
+      q(cnw) => [
+         q(1807),
+         q(0),
+         ],
+      q(cnx) => [
+         q(1808),
+         q(0),
+         ],
+      q(coa) => [
+         q(1809),
+         q(0),
+         ],
+      q(cob) => [
+         q(1810),
+         q(0),
+         ],
+      q(coc) => [
+         q(1811),
+         q(0),
+         ],
+      q(cod) => [
+         q(1812),
+         q(0),
+         ],
+      q(coe) => [
+         q(1813),
+         q(0),
+         ],
+      q(cof) => [
+         q(1814),
+         q(0),
+         ],
+      q(cog) => [
+         q(1815),
+         q(0),
+         ],
+      q(coh) => [
+         q(1816),
+         q(0),
+         ],
+      q(coj) => [
+         q(1817),
+         q(0),
+         ],
+      q(cok) => [
+         q(1818),
+         q(0),
+         ],
+      q(col) => [
+         q(1819),
+         q(0),
+         ],
+      q(com) => [
+         q(1820),
+         q(0),
+         ],
+      q(con) => [
+         q(1821),
+         q(0),
+         ],
+      q(coo) => [
+         q(1822),
+         q(0),
+         ],
+      q(cop) => [
+         q(0090),
+         q(0),
+         ],
+      q(coq) => [
+         q(1823),
+         q(0),
+         ],
+      q(cor) => [
+         q(0091),
+         q(0),
+         ],
+      q(cos) => [
+         q(0092),
+         q(0),
+         ],
+      q(cot) => [
+         q(1824),
+         q(0),
+         ],
+      q(cou) => [
+         q(1825),
+         q(0),
+         ],
+      q(cov) => [
+         q(1826),
+         q(0),
+         ],
+      q(cow) => [
+         q(1827),
+         q(0),
+         ],
+      q(cox) => [
+         q(1828),
+         q(0),
+         ],
+      q(coy) => [
+         q(1829),
+         q(0),
+         ],
+      q(coz) => [
+         q(1830),
+         q(0),
+         ],
+      q(cpa) => [
+         q(1831),
+         q(0),
+         ],
+      q(cpb) => [
+         q(1832),
+         q(0),
+         ],
+      q(cpc) => [
+         q(1833),
+         q(0),
+         ],
+      q(cpe) => [
+         q(0093),
+         q(2),
+         ],
+      q(cpf) => [
+         q(0094),
+         q(2),
+         ],
+      q(cpg) => [
+         q(1834),
+         q(0),
+         ],
+      q(cpi) => [
+         q(1835),
+         q(0),
+         ],
+      q(cpn) => [
+         q(1836),
+         q(0),
+         ],
+      q(cpp) => [
+         q(0095),
+         q(2),
+         ],
+      q(cps) => [
+         q(1837),
+         q(0),
+         ],
+      q(cpu) => [
+         q(1838),
+         q(0),
+         ],
+      q(cpx) => [
+         q(1839),
+         q(0),
+         ],
+      q(cpy) => [
+         q(1840),
+         q(0),
+         ],
+      q(cqd) => [
+         q(1841),
+         q(0),
+         ],
+      q(cqu) => [
+         q(1842),
+         q(0),
+         ],
+      q(cra) => [
+         q(1843),
+         q(0),
+         ],
+      q(crb) => [
+         q(1844),
+         q(0),
+         ],
+      q(crc) => [
+         q(1845),
+         q(0),
+         ],
+      q(crd) => [
+         q(1846),
+         q(0),
+         ],
+      q(cre) => [
+         q(0096),
+         q(0),
+         ],
+      q(crf) => [
+         q(1847),
+         q(0),
+         ],
+      q(crg) => [
+         q(1848),
+         q(0),
+         ],
+      q(crh) => [
+         q(0097),
+         q(0),
+         ],
+      q(cri) => [
+         q(1849),
+         q(0),
+         ],
+      q(crj) => [
+         q(1850),
+         q(0),
+         ],
+      q(crk) => [
+         q(1851),
+         q(0),
+         ],
+      q(crl) => [
+         q(1852),
+         q(0),
+         ],
+      q(crm) => [
+         q(1853),
+         q(0),
+         ],
+      q(crn) => [
+         q(1854),
+         q(0),
+         ],
+      q(cro) => [
+         q(1855),
+         q(0),
+         ],
+      q(crp) => [
+         q(0098),
+         q(1),
+         ],
+      q(crq) => [
+         q(1856),
+         q(0),
+         ],
+      q(crr) => [
+         q(1857),
+         q(0),
+         ],
+      q(crs) => [
+         q(1858),
+         q(0),
+         ],
+      q(crt) => [
+         q(1859),
+         q(0),
+         ],
+      q(crv) => [
+         q(1860),
+         q(0),
+         ],
+      q(crw) => [
+         q(1861),
+         q(0),
+         ],
+      q(crx) => [
+         q(1862),
+         q(0),
+         ],
+      q(cry) => [
+         q(1863),
+         q(0),
+         ],
+      q(crz) => [
+         q(1864),
+         q(0),
+         ],
+      q(csa) => [
+         q(1865),
+         q(0),
+         ],
+      q(csb) => [
+         q(0099),
+         q(0),
+         ],
+      q(csc) => [
+         q(1866),
+         q(0),
+         ],
+      q(csd) => [
+         q(1867),
+         q(0),
+         ],
+      q(cse) => [
+         q(1868),
+         q(0),
+         ],
+      q(csf) => [
+         q(1869),
+         q(0),
+         ],
+      q(csg) => [
+         q(1870),
+         q(0),
+         ],
+      q(csh) => [
+         q(1871),
+         q(0),
+         ],
+      q(csi) => [
+         q(1872),
+         q(0),
+         ],
+      q(csk) => [
+         q(1873),
+         q(0),
+         ],
+      q(csl) => [
+         q(1874),
+         q(0),
+         ],
+      q(csm) => [
+         q(1875),
+         q(0),
+         ],
+      q(csn) => [
+         q(1876),
+         q(0),
+         ],
+      q(cso) => [
+         q(1877),
+         q(0),
+         ],
+      q(csq) => [
+         q(1878),
+         q(0),
+         ],
+      q(csr) => [
+         q(1879),
+         q(0),
+         ],
+      q(css) => [
+         q(1880),
+         q(0),
+         ],
+      q(cst) => [
+         q(1881),
+         q(0),
+         ],
+      q(csu) => [
+         q(0499),
+         q(0),
+         ],
+      q(csv) => [
+         q(1882),
+         q(0),
+         ],
+      q(csw) => [
+         q(1883),
+         q(0),
+         ],
+      q(csy) => [
+         q(1884),
+         q(0),
+         ],
+      q(csz) => [
+         q(1885),
+         q(0),
+         ],
+      q(cta) => [
+         q(1886),
+         q(0),
+         ],
+      q(ctc) => [
+         q(1887),
+         q(0),
+         ],
+      q(ctd) => [
+         q(1888),
+         q(0),
+         ],
+      q(cte) => [
+         q(1889),
+         q(0),
+         ],
+      q(ctg) => [
+         q(1890),
+         q(0),
+         ],
+      q(cth) => [
+         q(1891),
+         q(0),
+         ],
+      q(ctl) => [
+         q(1892),
+         q(0),
+         ],
+      q(ctm) => [
+         q(1893),
+         q(0),
+         ],
+      q(ctn) => [
+         q(1894),
+         q(0),
+         ],
+      q(cto) => [
+         q(1895),
+         q(0),
+         ],
+      q(ctp) => [
+         q(1896),
+         q(0),
+         ],
+      q(cts) => [
+         q(1897),
+         q(0),
+         ],
+      q(ctt) => [
+         q(1898),
+         q(0),
+         ],
+      q(ctu) => [
+         q(1899),
+         q(0),
+         ],
+      q(ctz) => [
+         q(1900),
+         q(0),
+         ],
+      q(cua) => [
+         q(1901),
+         q(0),
+         ],
+      q(cub) => [
+         q(1902),
+         q(0),
+         ],
+      q(cuc) => [
+         q(1903),
+         q(0),
+         ],
+      q(cug) => [
+         q(1904),
+         q(0),
+         ],
+      q(cuh) => [
+         q(1905),
+         q(0),
+         ],
+      q(cui) => [
+         q(1906),
+         q(0),
+         ],
+      q(cuj) => [
+         q(1907),
+         q(0),
+         ],
+      q(cuk) => [
+         q(1908),
+         q(0),
+         ],
+      q(cul) => [
+         q(1909),
+         q(0),
+         ],
+      q(cum) => [
+         q(1910),
+         q(0),
+         ],
+      q(cuo) => [
+         q(1911),
+         q(0),
+         ],
+      q(cup) => [
+         q(1912),
+         q(0),
+         ],
+      q(cuq) => [
+         q(1913),
+         q(0),
+         ],
+      q(cur) => [
+         q(1914),
+         q(0),
+         ],
+      q(cus) => [
+         q(0100),
+         q(0),
+         ],
+      q(cut) => [
+         q(1915),
+         q(0),
+         ],
+      q(cuu) => [
+         q(1916),
+         q(0),
+         ],
+      q(cuv) => [
+         q(1917),
+         q(0),
+         ],
+      q(cuw) => [
+         q(1918),
+         q(0),
+         ],
+      q(cux) => [
+         q(1919),
+         q(0),
+         ],
+      q(cvg) => [
+         q(1920),
+         q(0),
+         ],
+      q(cvn) => [
+         q(1921),
+         q(0),
+         ],
+      q(cwa) => [
+         q(1922),
+         q(0),
+         ],
+      q(cwb) => [
+         q(1923),
+         q(0),
+         ],
+      q(cwd) => [
+         q(1924),
+         q(0),
+         ],
+      q(cwe) => [
+         q(1925),
+         q(0),
+         ],
+      q(cwg) => [
+         q(1926),
+         q(0),
+         ],
+      q(cwt) => [
+         q(1927),
+         q(0),
+         ],
+      q(cya) => [
+         q(1928),
+         q(0),
+         ],
+      q(cyb) => [
+         q(1929),
+         q(0),
+         ],
+      q(cyo) => [
+         q(1930),
+         q(0),
+         ],
+      q(cze) => [
+         q(0101),
+         q(0),
+         ],
+      q(czh) => [
+         q(1931),
+         q(0),
+         ],
+      q(czk) => [
+         q(1932),
+         q(0),
+         ],
+      q(czn) => [
+         q(1933),
+         q(0),
+         ],
+      q(czo) => [
+         q(1934),
+         q(0),
+         ],
+      q(czt) => [
+         q(1935),
+         q(0),
+         ],
+      q(daa) => [
+         q(1936),
+         q(0),
+         ],
+      q(dac) => [
+         q(1937),
+         q(0),
+         ],
+      q(dad) => [
+         q(1938),
+         q(0),
+         ],
+      q(dae) => [
+         q(1939),
+         q(0),
+         ],
+      q(daf) => [
+         q(1940),
+         q(0),
+         ],
+      q(dag) => [
+         q(1941),
+         q(0),
+         ],
+      q(dah) => [
+         q(1942),
+         q(0),
+         ],
+      q(dai) => [
+         q(1943),
+         q(0),
+         ],
+      q(daj) => [
+         q(1944),
+         q(0),
+         ],
+      q(dak) => [
+         q(0102),
+         q(0),
+         ],
+      q(dal) => [
+         q(1945),
+         q(0),
+         ],
+      q(dam) => [
+         q(1946),
+         q(0),
+         ],
+      q(dan) => [
+         q(0103),
+         q(0),
+         ],
+      q(dao) => [
+         q(1947),
+         q(0),
+         ],
+      q(daq) => [
+         q(1948),
+         q(0),
+         ],
+      q(dar) => [
+         q(0104),
+         q(0),
+         ],
+      q(das) => [
+         q(1949),
+         q(0),
+         ],
+      q(dau) => [
+         q(1950),
+         q(0),
+         ],
+      q(dav) => [
+         q(1951),
+         q(0),
+         ],
+      q(daw) => [
+         q(1952),
+         q(0),
+         ],
+      q(dax) => [
+         q(1953),
+         q(0),
+         ],
+      q(day) => [
+         q(0105),
+         q(0),
+         ],
+      q(daz) => [
+         q(1954),
+         q(0),
+         ],
+      q(dba) => [
+         q(1955),
+         q(0),
+         ],
+      q(dbb) => [
+         q(1956),
+         q(0),
+         ],
+      q(dbd) => [
+         q(1957),
+         q(0),
+         ],
+      q(dbe) => [
+         q(1958),
+         q(0),
+         ],
+      q(dbf) => [
+         q(1959),
+         q(0),
+         ],
+      q(dbg) => [
+         q(1960),
+         q(0),
+         ],
+      q(dbi) => [
+         q(1961),
+         q(0),
+         ],
+      q(dbj) => [
+         q(1962),
+         q(0),
+         ],
+      q(dbl) => [
+         q(1963),
+         q(0),
+         ],
+      q(dbm) => [
+         q(1964),
+         q(0),
+         ],
+      q(dbn) => [
+         q(1965),
+         q(0),
+         ],
+      q(dbo) => [
+         q(1966),
+         q(0),
+         ],
+      q(dbp) => [
+         q(1967),
+         q(0),
+         ],
+      q(dbq) => [
+         q(1968),
+         q(0),
+         ],
+      q(dbr) => [
+         q(1969),
+         q(0),
+         ],
+      q(dbt) => [
+         q(1970),
+         q(0),
+         ],
+      q(dbu) => [
+         q(1971),
+         q(0),
+         ],
+      q(dbv) => [
+         q(1972),
+         q(0),
+         ],
+      q(dbw) => [
+         q(1973),
+         q(0),
+         ],
+      q(dby) => [
+         q(1974),
+         q(0),
+         ],
+      q(dcc) => [
+         q(1975),
+         q(0),
+         ],
+      q(dcr) => [
+         q(1976),
+         q(0),
+         ],
+      q(dda) => [
+         q(1977),
+         q(0),
+         ],
+      q(ddd) => [
+         q(1978),
+         q(0),
+         ],
+      q(dde) => [
+         q(1979),
+         q(0),
+         ],
+      q(ddg) => [
+         q(1980),
+         q(0),
+         ],
+      q(ddi) => [
+         q(1981),
+         q(0),
+         ],
+      q(ddj) => [
+         q(1982),
+         q(0),
+         ],
+      q(ddn) => [
+         q(1983),
+         q(0),
+         ],
+      q(ddo) => [
+         q(1984),
+         q(0),
+         ],
+      q(ddr) => [
+         q(1985),
+         q(0),
+         ],
+      q(dds) => [
+         q(1986),
+         q(0),
+         ],
+      q(ddw) => [
+         q(1987),
+         q(0),
+         ],
+      q(dec) => [
+         q(1988),
+         q(0),
+         ],
+      q(ded) => [
+         q(1989),
+         q(0),
+         ],
+      q(dee) => [
+         q(1990),
+         q(0),
+         ],
+      q(def) => [
+         q(1991),
+         q(0),
+         ],
+      q(deg) => [
+         q(1992),
+         q(0),
+         ],
+      q(deh) => [
+         q(1993),
+         q(0),
+         ],
+      q(dei) => [
+         q(1994),
+         q(0),
+         ],
+      q(dek) => [
+         q(1995),
+         q(0),
+         ],
+      q(del) => [
+         q(0106),
+         q(0),
+         ],
+      q(dem) => [
+         q(1996),
+         q(0),
+         ],
+      q(den) => [
+         q(0107),
+         q(0),
+         ],
+      q(dep) => [
+         q(1997),
+         q(0),
+         ],
+      q(deq) => [
+         q(1998),
+         q(0),
+         ],
+      q(der) => [
+         q(1999),
+         q(0),
+         ],
+      q(des) => [
+         q(2000),
+         q(0),
+         ],
+      q(dev) => [
+         q(2001),
+         q(0),
+         ],
+      q(dez) => [
+         q(2002),
+         q(0),
+         ],
+      q(dga) => [
+         q(2003),
+         q(0),
+         ],
+      q(dgb) => [
+         q(2004),
+         q(0),
+         ],
+      q(dgc) => [
+         q(2005),
+         q(0),
+         ],
+      q(dgd) => [
+         q(2006),
+         q(0),
+         ],
+      q(dge) => [
+         q(2007),
+         q(0),
+         ],
+      q(dgg) => [
+         q(2008),
+         q(0),
+         ],
+      q(dgh) => [
+         q(2009),
+         q(0),
+         ],
+      q(dgi) => [
+         q(2010),
+         q(0),
+         ],
+      q(dgk) => [
+         q(2011),
+         q(0),
+         ],
+      q(dgl) => [
+         q(2012),
+         q(0),
+         ],
+      q(dgn) => [
+         q(2013),
+         q(0),
+         ],
+      q(dgo) => [
+         q(2014),
+         q(0),
+         ],
+      q(dgr) => [
+         q(0108),
+         q(0),
+         ],
+      q(dgs) => [
+         q(2015),
+         q(0),
+         ],
+      q(dgt) => [
+         q(2016),
+         q(0),
+         ],
+      q(dgu) => [
+         q(2017),
+         q(0),
+         ],
+      q(dgw) => [
+         q(2018),
+         q(0),
+         ],
+      q(dgx) => [
+         q(2019),
+         q(0),
+         ],
+      q(dgz) => [
+         q(2020),
+         q(0),
+         ],
+      q(dhd) => [
+         q(2021),
+         q(0),
+         ],
+      q(dhg) => [
+         q(2022),
+         q(0),
+         ],
+      q(dhi) => [
+         q(2023),
+         q(0),
+         ],
+      q(dhl) => [
+         q(2024),
+         q(0),
+         ],
+      q(dhm) => [
+         q(2025),
+         q(0),
+         ],
+      q(dhn) => [
+         q(2026),
+         q(0),
+         ],
+      q(dho) => [
+         q(2027),
+         q(0),
+         ],
+      q(dhr) => [
+         q(2028),
+         q(0),
+         ],
+      q(dhs) => [
+         q(2029),
+         q(0),
+         ],
+      q(dhu) => [
+         q(2030),
+         q(0),
+         ],
+      q(dhv) => [
+         q(2031),
+         q(0),
+         ],
+      q(dhw) => [
+         q(2032),
+         q(0),
+         ],
+      q(dia) => [
+         q(2033),
+         q(0),
+         ],
+      q(dib) => [
+         q(2034),
+         q(0),
+         ],
+      q(dic) => [
+         q(2035),
+         q(0),
+         ],
+      q(did) => [
+         q(2036),
+         q(0),
+         ],
+      q(dif) => [
+         q(2037),
+         q(0),
+         ],
+      q(dig) => [
+         q(2038),
+         q(0),
+         ],
+      q(dih) => [
+         q(2039),
+         q(0),
+         ],
+      q(dii) => [
+         q(2040),
+         q(0),
+         ],
+      q(dij) => [
+         q(2041),
+         q(0),
+         ],
+      q(dik) => [
+         q(2042),
+         q(0),
+         ],
+      q(dil) => [
+         q(2043),
+         q(0),
+         ],
+      q(dim) => [
+         q(2044),
+         q(0),
+         ],
+      q(din) => [
+         q(0109),
+         q(0),
+         ],
+      q(dio) => [
+         q(2045),
+         q(0),
+         ],
+      q(dip) => [
+         q(2046),
+         q(0),
+         ],
+      q(diq) => [
+         q(2047),
+         q(0),
+         ],
+      q(dir) => [
+         q(2048),
+         q(0),
+         ],
+      q(dis) => [
+         q(2049),
+         q(0),
+         ],
+      q(dit) => [
+         q(2050),
+         q(0),
+         ],
+      q(diu) => [
+         q(2051),
+         q(0),
+         ],
+      q(div) => [
+         q(0110),
+         q(0),
+         ],
+      q(diw) => [
+         q(2052),
+         q(0),
+         ],
+      q(dix) => [
+         q(2053),
+         q(0),
+         ],
+      q(diy) => [
+         q(2054),
+         q(0),
+         ],
+      q(diz) => [
+         q(2055),
+         q(0),
+         ],
+      q(dja) => [
+         q(2056),
+         q(0),
+         ],
+      q(djb) => [
+         q(2057),
+         q(0),
+         ],
+      q(djc) => [
+         q(2058),
+         q(0),
+         ],
+      q(djd) => [
+         q(2059),
+         q(0),
+         ],
+      q(dje) => [
+         q(2060),
+         q(0),
+         ],
+      q(djf) => [
+         q(2061),
+         q(0),
+         ],
+      q(dji) => [
+         q(2062),
+         q(0),
+         ],
+      q(djj) => [
+         q(2063),
+         q(0),
+         ],
+      q(djk) => [
+         q(2064),
+         q(0),
+         ],
+      q(djl) => [
+         q(2065),
+         q(0),
+         ],
+      q(djm) => [
+         q(2066),
+         q(0),
+         ],
+      q(djn) => [
+         q(2067),
+         q(0),
+         ],
+      q(djo) => [
+         q(2068),
+         q(0),
+         ],
+      q(djr) => [
+         q(2069),
+         q(0),
+         ],
+      q(dju) => [
+         q(2070),
+         q(0),
+         ],
+      q(djw) => [
+         q(2071),
+         q(0),
+         ],
+      q(dka) => [
+         q(2072),
+         q(0),
+         ],
+      q(dkk) => [
+         q(2073),
+         q(0),
+         ],
+      q(dkr) => [
+         q(2074),
+         q(0),
+         ],
+      q(dks) => [
+         q(2075),
+         q(0),
+         ],
+      q(dkx) => [
+         q(2076),
+         q(0),
+         ],
+      q(dlg) => [
+         q(2077),
+         q(0),
+         ],
+      q(dlm) => [
+         q(2078),
+         q(0),
+         ],
+      q(dln) => [
+         q(2079),
+         q(0),
+         ],
+      q(dma) => [
+         q(2080),
+         q(0),
+         ],
+      q(dmb) => [
+         q(2081),
+         q(0),
+         ],
+      q(dmc) => [
+         q(2082),
+         q(0),
+         ],
+      q(dmd) => [
+         q(2083),
+         q(0),
+         ],
+      q(dme) => [
+         q(2084),
+         q(0),
+         ],
+      q(dmg) => [
+         q(2085),
+         q(0),
+         ],
+      q(dmk) => [
+         q(2086),
+         q(0),
+         ],
+      q(dml) => [
+         q(2087),
+         q(0),
+         ],
+      q(dmm) => [
+         q(2088),
+         q(0),
+         ],
+      q(dmn) => [
+         q(0500),
+         q(0),
+         ],
+      q(dmo) => [
+         q(2089),
+         q(0),
+         ],
+      q(dmr) => [
+         q(2090),
+         q(0),
+         ],
+      q(dms) => [
+         q(2091),
+         q(0),
+         ],
+      q(dmu) => [
+         q(2092),
+         q(0),
+         ],
+      q(dmv) => [
+         q(2093),
+         q(0),
+         ],
+      q(dmx) => [
+         q(2094),
+         q(0),
+         ],
+      q(dmy) => [
+         q(2095),
+         q(0),
+         ],
+      q(dna) => [
+         q(2096),
+         q(0),
+         ],
+      q(dnd) => [
+         q(2097),
+         q(0),
+         ],
+      q(dne) => [
+         q(2098),
+         q(0),
+         ],
+      q(dng) => [
+         q(2099),
+         q(0),
+         ],
+      q(dni) => [
+         q(2100),
+         q(0),
+         ],
+      q(dnk) => [
+         q(2101),
+         q(0),
+         ],
+      q(dnn) => [
+         q(2102),
+         q(0),
+         ],
+      q(dnr) => [
+         q(2103),
+         q(0),
+         ],
+      q(dnt) => [
+         q(2104),
+         q(0),
+         ],
+      q(dnu) => [
+         q(2105),
+         q(0),
+         ],
+      q(dnv) => [
+         q(2106),
+         q(0),
+         ],
+      q(dnw) => [
+         q(2107),
+         q(0),
+         ],
+      q(dny) => [
+         q(2108),
+         q(0),
+         ],
+      q(doa) => [
+         q(2109),
+         q(0),
+         ],
+      q(dob) => [
+         q(2110),
+         q(0),
+         ],
+      q(doc) => [
+         q(2111),
+         q(0),
+         ],
+      q(doe) => [
+         q(2112),
+         q(0),
+         ],
+      q(dof) => [
+         q(2113),
+         q(0),
+         ],
+      q(doh) => [
+         q(2114),
+         q(0),
+         ],
+      q(doi) => [
+         q(0111),
+         q(1),
+         ],
+      q(dok) => [
+         q(2115),
+         q(0),
+         ],
+      q(dol) => [
+         q(2116),
+         q(0),
+         ],
+      q(don) => [
+         q(2117),
+         q(0),
+         ],
+      q(doo) => [
+         q(2118),
+         q(0),
+         ],
+      q(dop) => [
+         q(2119),
+         q(0),
+         ],
+      q(doq) => [
+         q(2120),
+         q(0),
+         ],
+      q(dor) => [
+         q(2121),
+         q(0),
+         ],
+      q(dos) => [
+         q(2122),
+         q(0),
+         ],
+      q(dot) => [
+         q(2123),
+         q(0),
+         ],
+      q(dov) => [
+         q(2124),
+         q(0),
+         ],
+      q(dow) => [
+         q(2125),
+         q(0),
+         ],
+      q(dox) => [
+         q(2126),
+         q(0),
+         ],
+      q(doy) => [
+         q(2127),
+         q(0),
+         ],
+      q(doz) => [
+         q(2128),
+         q(0),
+         ],
+      q(dpp) => [
+         q(2129),
+         q(0),
+         ],
+      q(dra) => [
+         q(0112),
+         q(0),
+         ],
+      q(drb) => [
+         q(2130),
+         q(0),
+         ],
+      q(drc) => [
+         q(2131),
+         q(0),
+         ],
+      q(drd) => [
+         q(2132),
+         q(0),
+         ],
+      q(dre) => [
+         q(2133),
+         q(0),
+         ],
+      q(drg) => [
+         q(2134),
+         q(0),
+         ],
+      q(dri) => [
+         q(2135),
+         q(0),
+         ],
+      q(drl) => [
+         q(2136),
+         q(0),
+         ],
+      q(drn) => [
+         q(2137),
+         q(0),
+         ],
+      q(dro) => [
+         q(2138),
+         q(0),
+         ],
+      q(drq) => [
+         q(2139),
+         q(0),
+         ],
+      q(drr) => [
+         q(2140),
+         q(0),
+         ],
+      q(drs) => [
+         q(2141),
+         q(0),
+         ],
+      q(drt) => [
+         q(2142),
+         q(0),
+         ],
+      q(dru) => [
+         q(2143),
+         q(0),
+         ],
+      q(dry) => [
+         q(2144),
+         q(0),
+         ],
+      q(dsb) => [
+         q(0113),
+         q(0),
+         ],
+      q(dse) => [
+         q(2145),
+         q(0),
+         ],
+      q(dsh) => [
+         q(2146),
+         q(0),
+         ],
+      q(dsi) => [
+         q(2147),
+         q(0),
+         ],
+      q(dsl) => [
+         q(2148),
+         q(0),
+         ],
+      q(dsn) => [
+         q(2149),
+         q(0),
+         ],
+      q(dso) => [
+         q(2150),
+         q(0),
+         ],
+      q(dsq) => [
+         q(2151),
+         q(0),
+         ],
+      q(dta) => [
+         q(2152),
+         q(0),
+         ],
+      q(dtb) => [
+         q(2153),
+         q(0),
+         ],
+      q(dtd) => [
+         q(2154),
+         q(0),
+         ],
+      q(dth) => [
+         q(2155),
+         q(0),
+         ],
+      q(dti) => [
+         q(2156),
+         q(0),
+         ],
+      q(dtk) => [
+         q(2157),
+         q(0),
+         ],
+      q(dtm) => [
+         q(2158),
+         q(0),
+         ],
+      q(dto) => [
+         q(2159),
+         q(0),
+         ],
+      q(dtp) => [
+         q(2160),
+         q(0),
+         ],
+      q(dtr) => [
+         q(2161),
+         q(0),
+         ],
+      q(dts) => [
+         q(2162),
+         q(0),
+         ],
+      q(dtt) => [
+         q(2163),
+         q(0),
+         ],
+      q(dtu) => [
+         q(2164),
+         q(0),
+         ],
+      q(dty) => [
+         q(2165),
+         q(0),
+         ],
+      q(dua) => [
+         q(0114),
+         q(0),
+         ],
+      q(dub) => [
+         q(2166),
+         q(0),
+         ],
+      q(duc) => [
+         q(2167),
+         q(0),
+         ],
+      q(dud) => [
+         q(2168),
+         q(0),
+         ],
+      q(due) => [
+         q(2169),
+         q(0),
+         ],
+      q(duf) => [
+         q(2170),
+         q(0),
+         ],
+      q(dug) => [
+         q(2171),
+         q(0),
+         ],
+      q(duh) => [
+         q(2172),
+         q(0),
+         ],
+      q(dui) => [
+         q(2173),
+         q(0),
+         ],
+      q(duj) => [
+         q(2174),
+         q(0),
+         ],
+      q(duk) => [
+         q(2175),
+         q(0),
+         ],
+      q(dul) => [
+         q(2176),
+         q(0),
+         ],
+      q(dum) => [
+         q(0115),
+         q(1),
+         ],
+      q(dun) => [
+         q(2177),
+         q(0),
+         ],
+      q(duo) => [
+         q(2178),
+         q(0),
+         ],
+      q(dup) => [
+         q(2179),
+         q(0),
+         ],
+      q(duq) => [
+         q(2180),
+         q(0),
+         ],
+      q(dur) => [
+         q(2181),
+         q(0),
+         ],
+      q(dus) => [
+         q(2182),
+         q(0),
+         ],
+      q(dut) => [
+         q(0116),
+         q(0),
+         ],
+      q(duu) => [
+         q(2183),
+         q(0),
+         ],
+      q(duv) => [
+         q(2184),
+         q(0),
+         ],
+      q(duw) => [
+         q(2185),
+         q(0),
+         ],
+      q(dux) => [
+         q(2186),
+         q(0),
+         ],
+      q(duy) => [
+         q(2187),
+         q(0),
+         ],
+      q(duz) => [
+         q(2188),
+         q(0),
+         ],
+      q(dva) => [
+         q(2189),
+         q(0),
+         ],
+      q(dwa) => [
+         q(2190),
+         q(0),
+         ],
+      q(dwr) => [
+         q(2191),
+         q(0),
+         ],
+      q(dws) => [
+         q(2192),
+         q(0),
+         ],
+      q(dww) => [
+         q(2193),
+         q(0),
+         ],
+      q(dya) => [
+         q(2194),
+         q(0),
+         ],
+      q(dyb) => [
+         q(2195),
+         q(0),
+         ],
+      q(dyd) => [
+         q(2196),
+         q(0),
+         ],
+      q(dyg) => [
+         q(2197),
+         q(0),
+         ],
+      q(dyi) => [
+         q(2198),
+         q(0),
+         ],
+      q(dym) => [
+         q(2199),
+         q(0),
+         ],
+      q(dyn) => [
+         q(2200),
+         q(0),
+         ],
+      q(dyo) => [
+         q(2201),
+         q(0),
+         ],
+      q(dyu) => [
+         q(0117),
+         q(0),
+         ],
+      q(dyy) => [
+         q(2202),
+         q(0),
+         ],
+      q(dza) => [
+         q(2203),
+         q(0),
+         ],
+      q(dzd) => [
+         q(2204),
+         q(0),
+         ],
+      q(dzg) => [
+         q(2205),
+         q(0),
+         ],
+      q(dzl) => [
+         q(2206),
+         q(0),
+         ],
+      q(dzn) => [
+         q(2207),
+         q(0),
+         ],
+      q(dzo) => [
+         q(0118),
+         q(0),
+         ],
+      q(ebg) => [
+         q(2208),
+         q(0),
+         ],
+      q(ebk) => [
+         q(2209),
+         q(0),
+         ],
+      q(ebo) => [
+         q(2210),
+         q(0),
+         ],
+      q(ebr) => [
+         q(2211),
+         q(0),
+         ],
+      q(ebu) => [
+         q(2212),
+         q(0),
+         ],
+      q(ecr) => [
+         q(2213),
+         q(0),
+         ],
+      q(ecs) => [
+         q(2214),
+         q(0),
+         ],
+      q(ecy) => [
+         q(2215),
+         q(0),
+         ],
+      q(eee) => [
+         q(2216),
+         q(0),
+         ],
+      q(efa) => [
+         q(2217),
+         q(0),
+         ],
+      q(efe) => [
+         q(2218),
+         q(0),
+         ],
+      q(efi) => [
+         q(0119),
+         q(0),
+         ],
+      q(ega) => [
+         q(2219),
+         q(0),
+         ],
+      q(egl) => [
+         q(2220),
+         q(0),
+         ],
+      q(ego) => [
+         q(2221),
+         q(0),
+         ],
+      q(egx) => [
+         q(0501),
+         q(0),
+         ],
+      q(egy) => [
+         q(0120),
+         q(0),
+         ],
+      q(ehu) => [
+         q(2222),
+         q(0),
+         ],
+      q(eip) => [
+         q(2223),
+         q(0),
+         ],
+      q(eit) => [
+         q(2224),
+         q(0),
+         ],
+      q(eiv) => [
+         q(2225),
+         q(0),
+         ],
+      q(eja) => [
+         q(2226),
+         q(0),
+         ],
+      q(eka) => [
+         q(0121),
+         q(0),
+         ],
+      q(eke) => [
+         q(2227),
+         q(0),
+         ],
+      q(ekg) => [
+         q(2228),
+         q(0),
+         ],
+      q(eki) => [
+         q(2229),
+         q(0),
+         ],
+      q(ekk) => [
+         q(2230),
+         q(0),
+         ],
+      q(ekl) => [
+         q(2231),
+         q(0),
+         ],
+      q(ekm) => [
+         q(2232),
+         q(0),
+         ],
+      q(eko) => [
+         q(2233),
+         q(0),
+         ],
+      q(ekp) => [
+         q(2234),
+         q(0),
+         ],
+      q(ekr) => [
+         q(2235),
+         q(0),
+         ],
+      q(eky) => [
+         q(2236),
+         q(0),
+         ],
+      q(ele) => [
+         q(2237),
+         q(0),
+         ],
+      q(elh) => [
+         q(2238),
+         q(0),
+         ],
+      q(eli) => [
+         q(2239),
+         q(0),
+         ],
+      q(elk) => [
+         q(2240),
+         q(0),
+         ],
+      q(elm) => [
+         q(2241),
+         q(0),
+         ],
+      q(elo) => [
+         q(2242),
+         q(0),
+         ],
+      q(elu) => [
+         q(2243),
+         q(0),
+         ],
+      q(elx) => [
+         q(0122),
+         q(0),
+         ],
+      q(ema) => [
+         q(2244),
+         q(0),
+         ],
+      q(emb) => [
+         q(2245),
+         q(0),
+         ],
+      q(eme) => [
+         q(2246),
+         q(0),
+         ],
+      q(emg) => [
+         q(2247),
+         q(0),
+         ],
+      q(emi) => [
+         q(2248),
+         q(0),
+         ],
+      q(emk) => [
+         q(2249),
+         q(0),
+         ],
+      q(emm) => [
+         q(2250),
+         q(0),
+         ],
+      q(emn) => [
+         q(2251),
+         q(0),
+         ],
+      q(emo) => [
+         q(2252),
+         q(0),
+         ],
+      q(emp) => [
+         q(2253),
+         q(0),
+         ],
+      q(ems) => [
+         q(2254),
+         q(0),
+         ],
+      q(emu) => [
+         q(2255),
+         q(0),
+         ],
+      q(emw) => [
+         q(2256),
+         q(0),
+         ],
+      q(emx) => [
+         q(2257),
+         q(0),
+         ],
+      q(emy) => [
+         q(2258),
+         q(0),
+         ],
+      q(ena) => [
+         q(2259),
+         q(0),
+         ],
+      q(enb) => [
+         q(2260),
+         q(0),
+         ],
+      q(enc) => [
+         q(2261),
+         q(0),
+         ],
+      q(end) => [
+         q(2262),
+         q(0),
+         ],
+      q(enf) => [
+         q(2263),
+         q(0),
+         ],
+      q(eng) => [
+         q(0123),
+         q(0),
+         ],
+      q(enh) => [
+         q(2264),
+         q(0),
+         ],
+      q(enm) => [
+         q(0124),
+         q(1),
+         ],
+      q(enn) => [
+         q(2265),
+         q(0),
+         ],
+      q(eno) => [
+         q(2266),
+         q(0),
+         ],
+      q(enq) => [
+         q(2267),
+         q(0),
+         ],
+      q(enr) => [
+         q(2268),
+         q(0),
+         ],
+      q(enu) => [
+         q(2269),
+         q(0),
+         ],
+      q(env) => [
+         q(2270),
+         q(0),
+         ],
+      q(enw) => [
+         q(2271),
+         q(0),
+         ],
+      q(eot) => [
+         q(2272),
+         q(0),
+         ],
+      q(epi) => [
+         q(2273),
+         q(0),
+         ],
+      q(epo) => [
+         q(0125),
+         q(0),
+         ],
+      q(era) => [
+         q(2274),
+         q(0),
+         ],
+      q(erg) => [
+         q(2275),
+         q(0),
+         ],
+      q(erh) => [
+         q(2276),
+         q(0),
+         ],
+      q(eri) => [
+         q(2277),
+         q(0),
+         ],
+      q(erk) => [
+         q(2278),
+         q(0),
+         ],
+      q(ero) => [
+         q(2279),
+         q(0),
+         ],
+      q(err) => [
+         q(2280),
+         q(0),
+         ],
+      q(ers) => [
+         q(2281),
+         q(0),
+         ],
+      q(ert) => [
+         q(2282),
+         q(0),
+         ],
+      q(erw) => [
+         q(2283),
+         q(0),
+         ],
+      q(ese) => [
+         q(2284),
+         q(0),
+         ],
+      q(esh) => [
+         q(2285),
+         q(0),
+         ],
+      q(esi) => [
+         q(2286),
+         q(0),
+         ],
+      q(esk) => [
+         q(2287),
+         q(0),
+         ],
+      q(esl) => [
+         q(2288),
+         q(0),
+         ],
+      q(esm) => [
+         q(2289),
+         q(0),
+         ],
+      q(esn) => [
+         q(2290),
+         q(0),
+         ],
+      q(eso) => [
+         q(2291),
+         q(0),
+         ],
+      q(esq) => [
+         q(2292),
+         q(0),
+         ],
+      q(ess) => [
+         q(2293),
+         q(0),
+         ],
+      q(est) => [
+         q(0126),
+         q(0),
+         ],
+      q(esu) => [
+         q(2294),
+         q(0),
+         ],
+      q(esx) => [
+         q(0502),
+         q(0),
+         ],
+      q(etb) => [
+         q(2295),
+         q(0),
+         ],
+      q(etc) => [
+         q(2296),
+         q(0),
+         ],
+      q(eth) => [
+         q(2297),
+         q(0),
+         ],
+      q(etn) => [
+         q(2298),
+         q(0),
+         ],
+      q(eto) => [
+         q(2299),
+         q(0),
+         ],
+      q(etr) => [
+         q(2300),
+         q(0),
+         ],
+      q(ets) => [
+         q(2301),
+         q(0),
+         ],
+      q(ett) => [
+         q(2302),
+         q(0),
+         ],
+      q(etu) => [
+         q(2303),
+         q(0),
+         ],
+      q(etx) => [
+         q(2304),
+         q(0),
+         ],
+      q(etz) => [
+         q(2305),
+         q(0),
+         ],
+      q(euq) => [
+         q(0503),
+         q(0),
+         ],
+      q(eve) => [
+         q(2306),
+         q(0),
+         ],
+      q(evh) => [
+         q(2307),
+         q(0),
+         ],
+      q(evn) => [
+         q(2308),
+         q(0),
+         ],
+      q(ewe) => [
+         q(0127),
+         q(0),
+         ],
+      q(ewo) => [
+         q(0128),
+         q(0),
+         ],
+      q(ext) => [
+         q(2309),
+         q(0),
+         ],
+      q(eya) => [
+         q(2310),
+         q(0),
+         ],
+      q(eyo) => [
+         q(2311),
+         q(0),
+         ],
+      q(eze) => [
+         q(2312),
+         q(0),
+         ],
+      q(faa) => [
+         q(2313),
+         q(0),
+         ],
+      q(fab) => [
+         q(2314),
+         q(0),
+         ],
+      q(fad) => [
+         q(2315),
+         q(0),
+         ],
+      q(faf) => [
+         q(2316),
+         q(0),
+         ],
+      q(fag) => [
+         q(2317),
+         q(0),
+         ],
+      q(fah) => [
+         q(2318),
+         q(0),
+         ],
+      q(fai) => [
+         q(2319),
+         q(0),
+         ],
+      q(faj) => [
+         q(2320),
+         q(0),
+         ],
+      q(fak) => [
+         q(2321),
+         q(0),
+         ],
+      q(fal) => [
+         q(2322),
+         q(0),
+         ],
+      q(fam) => [
+         q(2323),
+         q(0),
+         ],
+      q(fan) => [
+         q(0129),
+         q(1),
+         ],
+      q(fao) => [
+         q(0130),
+         q(0),
+         ],
+      q(fap) => [
+         q(2324),
+         q(0),
+         ],
+      q(far) => [
+         q(2325),
+         q(0),
+         ],
+      q(fat) => [
+         q(0131),
+         q(0),
+         ],
+      q(fau) => [
+         q(2326),
+         q(0),
+         ],
+      q(fax) => [
+         q(2327),
+         q(0),
+         ],
+      q(fay) => [
+         q(2328),
+         q(0),
+         ],
+      q(faz) => [
+         q(2329),
+         q(0),
+         ],
+      q(fbl) => [
+         q(2330),
+         q(0),
+         ],
+      q(fcs) => [
+         q(2331),
+         q(0),
+         ],
+      q(fer) => [
+         q(2332),
+         q(0),
+         ],
+      q(ffi) => [
+         q(2333),
+         q(0),
+         ],
+      q(ffm) => [
+         q(2334),
+         q(0),
+         ],
+      q(fgr) => [
+         q(2335),
+         q(0),
+         ],
+      q(fia) => [
+         q(2336),
+         q(0),
+         ],
+      q(fie) => [
+         q(2337),
+         q(0),
+         ],
+      q(fij) => [
+         q(0132),
+         q(0),
+         ],
+      q(fil) => [
+         q(0133),
+         q(0),
+         ],
+      q(fin) => [
+         q(0134),
+         q(0),
+         ],
+      q(fip) => [
+         q(2338),
+         q(0),
+         ],
+      q(fir) => [
+         q(2339),
+         q(0),
+         ],
+      q(fit) => [
+         q(2340),
+         q(0),
+         ],
+      q(fiu) => [
+         q(0135),
+         q(0),
+         ],
+      q(fiw) => [
+         q(2341),
+         q(0),
+         ],
+      q(fkk) => [
+         q(2342),
+         q(0),
+         ],
+      q(fkv) => [
+         q(2343),
+         q(0),
+         ],
+      q(fla) => [
+         q(2344),
+         q(0),
+         ],
+      q(flh) => [
+         q(2345),
+         q(0),
+         ],
+      q(fli) => [
+         q(2346),
+         q(0),
+         ],
+      q(fll) => [
+         q(2347),
+         q(0),
+         ],
+      q(fln) => [
+         q(2348),
+         q(0),
+         ],
+      q(flr) => [
+         q(2349),
+         q(0),
+         ],
+      q(fly) => [
+         q(2350),
+         q(0),
+         ],
+      q(fmp) => [
+         q(2351),
+         q(0),
+         ],
+      q(fmu) => [
+         q(2352),
+         q(0),
+         ],
+      q(fng) => [
+         q(2353),
+         q(0),
+         ],
+      q(fni) => [
+         q(2354),
+         q(0),
+         ],
+      q(fod) => [
+         q(2355),
+         q(0),
+         ],
+      q(foi) => [
+         q(2356),
+         q(0),
+         ],
+      q(fom) => [
+         q(2357),
+         q(0),
+         ],
+      q(fon) => [
+         q(0136),
+         q(0),
+         ],
+      q(for) => [
+         q(2358),
+         q(0),
+         ],
+      q(fos) => [
+         q(2359),
+         q(0),
+         ],
+      q(fox) => [
+         q(0504),
+         q(0),
+         ],
+      q(fpe) => [
+         q(2360),
+         q(0),
+         ],
+      q(fqs) => [
+         q(2361),
+         q(0),
+         ],
+      q(frc) => [
+         q(2362),
+         q(0),
+         ],
+      q(frd) => [
+         q(2363),
+         q(0),
+         ],
+      q(fre) => [
+         q(0137),
+         q(0),
+         ],
+      q(frk) => [
+         q(2364),
+         q(0),
+         ],
+      q(frm) => [
+         q(0138),
+         q(1),
+         ],
+      q(fro) => [
+         q(0139),
+         q(1),
+         ],
+      q(frp) => [
+         q(2365),
+         q(0),
+         ],
+      q(frq) => [
+         q(2366),
+         q(0),
+         ],
+      q(frr) => [
+         q(0140),
+         q(0),
+         ],
+      q(frs) => [
+         q(0141),
+         q(0),
+         ],
+      q(frt) => [
+         q(2367),
+         q(0),
+         ],
+      q(fry) => [
+         q(0142),
+         q(0),
+         ],
+      q(fse) => [
+         q(2368),
+         q(0),
+         ],
+      q(fsl) => [
+         q(2369),
+         q(0),
+         ],
+      q(fss) => [
+         q(2370),
+         q(0),
+         ],
+      q(fub) => [
+         q(2371),
+         q(0),
+         ],
+      q(fuc) => [
+         q(2372),
+         q(0),
+         ],
+      q(fud) => [
+         q(2373),
+         q(0),
+         ],
+      q(fue) => [
+         q(2374),
+         q(0),
+         ],
+      q(fuf) => [
+         q(2375),
+         q(0),
+         ],
+      q(fuh) => [
+         q(2376),
+         q(0),
+         ],
+      q(fui) => [
+         q(2377),
+         q(0),
+         ],
+      q(fuj) => [
+         q(2378),
+         q(0),
+         ],
+      q(ful) => [
+         q(0143),
+         q(0),
+         ],
+      q(fum) => [
+         q(2379),
+         q(0),
+         ],
+      q(fun) => [
+         q(2380),
+         q(0),
+         ],
+      q(fuq) => [
+         q(2381),
+         q(0),
+         ],
+      q(fur) => [
+         q(0144),
+         q(0),
+         ],
+      q(fut) => [
+         q(2382),
+         q(0),
+         ],
+      q(fuu) => [
+         q(2383),
+         q(0),
+         ],
+      q(fuv) => [
+         q(2384),
+         q(0),
+         ],
+      q(fuy) => [
+         q(2385),
+         q(0),
+         ],
+      q(fvr) => [
+         q(2386),
+         q(0),
+         ],
+      q(fwa) => [
+         q(2387),
+         q(0),
+         ],
+      q(fwe) => [
+         q(2388),
+         q(0),
+         ],
+      q(gaa) => [
+         q(0145),
+         q(0),
+         ],
+      q(gab) => [
+         q(2389),
+         q(0),
+         ],
+      q(gac) => [
+         q(2390),
+         q(0),
+         ],
+      q(gad) => [
+         q(2391),
+         q(0),
+         ],
+      q(gae) => [
+         q(2392),
+         q(0),
+         ],
+      q(gaf) => [
+         q(2393),
+         q(0),
+         ],
+      q(gag) => [
+         q(2394),
+         q(0),
+         ],
+      q(gah) => [
+         q(2395),
+         q(0),
+         ],
+      q(gai) => [
+         q(2396),
+         q(0),
+         ],
+      q(gaj) => [
+         q(2397),
+         q(0),
+         ],
+      q(gak) => [
+         q(2398),
+         q(0),
+         ],
+      q(gal) => [
+         q(2399),
+         q(0),
+         ],
+      q(gam) => [
+         q(2400),
+         q(0),
+         ],
+      q(gan) => [
+         q(2401),
+         q(0),
+         ],
+      q(gao) => [
+         q(2402),
+         q(0),
+         ],
+      q(gap) => [
+         q(2403),
+         q(0),
+         ],
+      q(gaq) => [
+         q(2404),
+         q(0),
+         ],
+      q(gar) => [
+         q(2405),
+         q(0),
+         ],
+      q(gas) => [
+         q(2406),
+         q(0),
+         ],
+      q(gat) => [
+         q(2407),
+         q(0),
+         ],
+      q(gau) => [
+         q(2408),
+         q(0),
+         ],
+      q(gaw) => [
+         q(2409),
+         q(0),
+         ],
+      q(gax) => [
+         q(2410),
+         q(0),
+         ],
+      q(gay) => [
+         q(0146),
+         q(0),
+         ],
+      q(gaz) => [
+         q(2411),
+         q(0),
+         ],
+      q(gba) => [
+         q(0147),
+         q(1),
+         ],
+      q(gbb) => [
+         q(2412),
+         q(0),
+         ],
+      q(gbd) => [
+         q(2413),
+         q(0),
+         ],
+      q(gbe) => [
+         q(2414),
+         q(0),
+         ],
+      q(gbf) => [
+         q(2415),
+         q(0),
+         ],
+      q(gbg) => [
+         q(2416),
+         q(0),
+         ],
+      q(gbh) => [
+         q(2417),
+         q(0),
+         ],
+      q(gbi) => [
+         q(2418),
+         q(0),
+         ],
+      q(gbj) => [
+         q(2419),
+         q(0),
+         ],
+      q(gbk) => [
+         q(2420),
+         q(0),
+         ],
+      q(gbl) => [
+         q(2421),
+         q(0),
+         ],
+      q(gbm) => [
+         q(2422),
+         q(0),
+         ],
+      q(gbn) => [
+         q(2423),
+         q(0),
+         ],
+      q(gbo) => [
+         q(2424),
+         q(0),
+         ],
+      q(gbp) => [
+         q(2425),
+         q(0),
+         ],
+      q(gbq) => [
+         q(2426),
+         q(0),
+         ],
+      q(gbr) => [
+         q(2427),
+         q(0),
+         ],
+      q(gbs) => [
+         q(2428),
+         q(0),
+         ],
+      q(gbu) => [
+         q(2429),
+         q(0),
+         ],
+      q(gbv) => [
+         q(2430),
+         q(0),
+         ],
+      q(gbx) => [
+         q(2431),
+         q(0),
+         ],
+      q(gby) => [
+         q(2432),
+         q(0),
+         ],
+      q(gbz) => [
+         q(2433),
+         q(0),
+         ],
+      q(gcc) => [
+         q(2434),
+         q(0),
+         ],
+      q(gcd) => [
+         q(2435),
+         q(0),
+         ],
+      q(gce) => [
+         q(2436),
+         q(0),
+         ],
+      q(gcf) => [
+         q(2437),
+         q(0),
+         ],
+      q(gcl) => [
+         q(2438),
+         q(0),
+         ],
+      q(gcn) => [
+         q(2439),
+         q(0),
+         ],
+      q(gcr) => [
+         q(2440),
+         q(0),
+         ],
+      q(gct) => [
+         q(2441),
+         q(0),
+         ],
+      q(gda) => [
+         q(2442),
+         q(0),
+         ],
+      q(gdb) => [
+         q(2443),
+         q(0),
+         ],
+      q(gdc) => [
+         q(2444),
+         q(0),
+         ],
+      q(gdd) => [
+         q(2445),
+         q(0),
+         ],
+      q(gde) => [
+         q(2446),
+         q(0),
+         ],
+      q(gdf) => [
+         q(2447),
+         q(0),
+         ],
+      q(gdg) => [
+         q(2448),
+         q(0),
+         ],
+      q(gdh) => [
+         q(2449),
+         q(0),
+         ],
+      q(gdi) => [
+         q(2450),
+         q(0),
+         ],
+      q(gdj) => [
+         q(2451),
+         q(0),
+         ],
+      q(gdk) => [
+         q(2452),
+         q(0),
+         ],
+      q(gdl) => [
+         q(2453),
+         q(0),
+         ],
+      q(gdm) => [
+         q(2454),
+         q(0),
+         ],
+      q(gdn) => [
+         q(2455),
+         q(0),
+         ],
+      q(gdo) => [
+         q(2456),
+         q(0),
+         ],
+      q(gdq) => [
+         q(2457),
+         q(0),
+         ],
+      q(gdr) => [
+         q(2458),
+         q(0),
+         ],
+      q(gds) => [
+         q(2459),
+         q(0),
+         ],
+      q(gdu) => [
+         q(2460),
+         q(0),
+         ],
+      q(gdx) => [
+         q(2461),
+         q(0),
+         ],
+      q(gea) => [
+         q(2462),
+         q(0),
+         ],
+      q(geb) => [
+         q(2463),
+         q(0),
+         ],
+      q(gec) => [
+         q(2464),
+         q(0),
+         ],
+      q(ged) => [
+         q(2465),
+         q(0),
+         ],
+      q(geg) => [
+         q(2466),
+         q(0),
+         ],
+      q(geh) => [
+         q(2467),
+         q(0),
+         ],
+      q(gei) => [
+         q(2468),
+         q(0),
+         ],
+      q(gej) => [
+         q(2469),
+         q(0),
+         ],
+      q(gek) => [
+         q(2470),
+         q(0),
+         ],
+      q(gel) => [
+         q(2471),
+         q(0),
+         ],
+      q(gem) => [
+         q(0148),
+         q(0),
+         ],
+      q(geo) => [
+         q(0149),
+         q(0),
+         ],
+      q(geq) => [
+         q(2472),
+         q(0),
+         ],
+      q(ger) => [
+         q(0150),
+         q(0),
+         ],
+      q(ges) => [
+         q(2473),
+         q(0),
+         ],
+      q(gew) => [
+         q(2474),
+         q(0),
+         ],
+      q(gex) => [
+         q(2475),
+         q(0),
+         ],
+      q(gey) => [
+         q(2476),
+         q(0),
+         ],
+      q(gez) => [
+         q(0151),
+         q(0),
+         ],
+      q(gfk) => [
+         q(2477),
+         q(0),
+         ],
+      q(gft) => [
+         q(2478),
+         q(0),
+         ],
+      q(gfx) => [
+         q(2479),
+         q(0),
+         ],
+      q(gga) => [
+         q(2480),
+         q(0),
+         ],
+      q(ggb) => [
+         q(2481),
+         q(0),
+         ],
+      q(ggd) => [
+         q(2482),
+         q(0),
+         ],
+      q(gge) => [
+         q(2483),
+         q(0),
+         ],
+      q(ggg) => [
+         q(2484),
+         q(0),
+         ],
+      q(ggk) => [
+         q(2485),
+         q(0),
+         ],
+      q(ggl) => [
+         q(2486),
+         q(0),
+         ],
+      q(ggn) => [
+         q(2487),
+         q(0),
+         ],
+      q(ggo) => [
+         q(2488),
+         q(0),
+         ],
+      q(ggr) => [
+         q(2489),
+         q(0),
+         ],
+      q(ggt) => [
+         q(2490),
+         q(0),
+         ],
+      q(ggu) => [
+         q(2491),
+         q(0),
+         ],
+      q(ggw) => [
+         q(2492),
+         q(0),
+         ],
+      q(gha) => [
+         q(2493),
+         q(0),
+         ],
+      q(ghc) => [
+         q(2494),
+         q(0),
+         ],
+      q(ghe) => [
+         q(2495),
+         q(0),
+         ],
+      q(ghh) => [
+         q(2496),
+         q(0),
+         ],
+      q(ghk) => [
+         q(2497),
+         q(0),
+         ],
+      q(ghl) => [
+         q(2498),
+         q(0),
+         ],
+      q(ghn) => [
+         q(2499),
+         q(0),
+         ],
+      q(gho) => [
+         q(2500),
+         q(0),
+         ],
+      q(ghr) => [
+         q(2501),
+         q(0),
+         ],
+      q(ghs) => [
+         q(2502),
+         q(0),
+         ],
+      q(ght) => [
+         q(2503),
+         q(0),
+         ],
+      q(gia) => [
+         q(2504),
+         q(0),
+         ],
+      q(gib) => [
+         q(2505),
+         q(0),
+         ],
+      q(gic) => [
+         q(2506),
+         q(0),
+         ],
+      q(gid) => [
+         q(2507),
+         q(0),
+         ],
+      q(gig) => [
+         q(2508),
+         q(0),
+         ],
+      q(gil) => [
+         q(0152),
+         q(0),
+         ],
+      q(gim) => [
+         q(2509),
+         q(0),
+         ],
+      q(gin) => [
+         q(2510),
+         q(0),
+         ],
+      q(gip) => [
+         q(2511),
+         q(0),
+         ],
+      q(giq) => [
+         q(2512),
+         q(0),
+         ],
+      q(gir) => [
+         q(2513),
+         q(0),
+         ],
+      q(gis) => [
+         q(2514),
+         q(0),
+         ],
+      q(git) => [
+         q(2515),
+         q(0),
+         ],
+      q(giu) => [
+         q(2516),
+         q(0),
+         ],
+      q(giw) => [
+         q(2517),
+         q(0),
+         ],
+      q(gix) => [
+         q(2518),
+         q(0),
+         ],
+      q(giy) => [
+         q(2519),
+         q(0),
+         ],
+      q(giz) => [
+         q(2520),
+         q(0),
+         ],
+      q(gji) => [
+         q(2521),
+         q(0),
+         ],
+      q(gjk) => [
+         q(2522),
+         q(0),
+         ],
+      q(gjn) => [
+         q(2523),
+         q(0),
+         ],
+      q(gju) => [
+         q(2524),
+         q(0),
+         ],
+      q(gka) => [
+         q(2525),
+         q(0),
+         ],
+      q(gke) => [
+         q(2526),
+         q(0),
+         ],
+      q(gkn) => [
+         q(2527),
+         q(0),
+         ],
+      q(gko) => [
+         q(2528),
+         q(0),
+         ],
+      q(gkp) => [
+         q(2529),
+         q(0),
+         ],
+      q(gla) => [
+         q(0153),
+         q(0),
+         ],
+      q(glc) => [
+         q(2530),
+         q(0),
+         ],
+      q(gld) => [
+         q(2531),
+         q(0),
+         ],
+      q(gle) => [
+         q(0154),
+         q(0),
+         ],
+      q(glg) => [
+         q(0155),
+         q(0),
+         ],
+      q(glh) => [
+         q(2532),
+         q(0),
+         ],
+      q(gli) => [
+         q(2533),
+         q(0),
+         ],
+      q(glj) => [
+         q(2534),
+         q(0),
+         ],
+      q(glk) => [
+         q(2535),
+         q(0),
+         ],
+      q(glo) => [
+         q(2536),
+         q(0),
+         ],
+      q(glr) => [
+         q(2537),
+         q(0),
+         ],
+      q(glu) => [
+         q(2538),
+         q(0),
+         ],
+      q(glv) => [
+         q(0156),
+         q(0),
+         ],
+      q(glw) => [
+         q(2539),
+         q(0),
+         ],
+      q(gly) => [
+         q(2540),
+         q(0),
+         ],
+      q(gma) => [
+         q(2541),
+         q(0),
+         ],
+      q(gmb) => [
+         q(2542),
+         q(0),
+         ],
+      q(gmd) => [
+         q(2543),
+         q(0),
+         ],
+      q(gme) => [
+         q(0505),
+         q(0),
+         ],
+      q(gmh) => [
+         q(0157),
+         q(1),
+         ],
+      q(gml) => [
+         q(2544),
+         q(0),
+         ],
+      q(gmm) => [
+         q(2545),
+         q(0),
+         ],
+      q(gmn) => [
+         q(2546),
+         q(0),
+         ],
+      q(gmq) => [
+         q(0506),
+         q(0),
+         ],
+      q(gmu) => [
+         q(2547),
+         q(0),
+         ],
+      q(gmv) => [
+         q(2548),
+         q(0),
+         ],
+      q(gmw) => [
+         q(0507),
+         q(0),
+         ],
+      q(gmx) => [
+         q(2549),
+         q(0),
+         ],
+      q(gmy) => [
+         q(2550),
+         q(0),
+         ],
+      q(gna) => [
+         q(2551),
+         q(0),
+         ],
+      q(gnb) => [
+         q(2552),
+         q(0),
+         ],
+      q(gnc) => [
+         q(2553),
+         q(0),
+         ],
+      q(gnd) => [
+         q(2554),
+         q(0),
+         ],
+      q(gne) => [
+         q(2555),
+         q(0),
+         ],
+      q(gng) => [
+         q(2556),
+         q(0),
+         ],
+      q(gnh) => [
+         q(2557),
+         q(0),
+         ],
+      q(gni) => [
+         q(2558),
+         q(0),
+         ],
+      q(gnk) => [
+         q(2559),
+         q(0),
+         ],
+      q(gnl) => [
+         q(2560),
+         q(0),
+         ],
+      q(gnm) => [
+         q(2561),
+         q(0),
+         ],
+      q(gnn) => [
+         q(2562),
+         q(0),
+         ],
+      q(gno) => [
+         q(2563),
+         q(0),
+         ],
+      q(gnq) => [
+         q(2564),
+         q(0),
+         ],
+      q(gnr) => [
+         q(2565),
+         q(0),
+         ],
+      q(gnt) => [
+         q(2566),
+         q(0),
+         ],
+      q(gnu) => [
+         q(2567),
+         q(0),
+         ],
+      q(gnw) => [
+         q(2568),
+         q(0),
+         ],
+      q(gnz) => [
+         q(2569),
+         q(0),
+         ],
+      q(goa) => [
+         q(2570),
+         q(0),
+         ],
+      q(gob) => [
+         q(2571),
+         q(0),
+         ],
+      q(goc) => [
+         q(2572),
+         q(0),
+         ],
+      q(god) => [
+         q(2573),
+         q(0),
+         ],
+      q(goe) => [
+         q(2574),
+         q(0),
+         ],
+      q(gof) => [
+         q(2575),
+         q(0),
+         ],
+      q(gog) => [
+         q(2576),
+         q(0),
+         ],
+      q(goh) => [
+         q(0158),
+         q(1),
+         ],
+      q(goi) => [
+         q(2577),
+         q(0),
+         ],
+      q(goj) => [
+         q(2578),
+         q(0),
+         ],
+      q(gok) => [
+         q(2579),
+         q(0),
+         ],
+      q(gol) => [
+         q(2580),
+         q(0),
+         ],
+      q(gom) => [
+         q(2581),
+         q(0),
+         ],
+      q(gon) => [
+         q(0159),
+         q(0),
+         ],
+      q(goo) => [
+         q(2582),
+         q(0),
+         ],
+      q(gop) => [
+         q(2583),
+         q(0),
+         ],
+      q(goq) => [
+         q(2584),
+         q(0),
+         ],
+      q(gor) => [
+         q(0160),
+         q(0),
+         ],
+      q(gos) => [
+         q(2585),
+         q(0),
+         ],
+      q(got) => [
+         q(0161),
+         q(0),
+         ],
+      q(gou) => [
+         q(2586),
+         q(0),
+         ],
+      q(gow) => [
+         q(2587),
+         q(0),
+         ],
+      q(gox) => [
+         q(2588),
+         q(0),
+         ],
+      q(goy) => [
+         q(2589),
+         q(0),
+         ],
+      q(goz) => [
+         q(2590),
+         q(0),
+         ],
+      q(gpa) => [
+         q(2591),
+         q(0),
+         ],
+      q(gpe) => [
+         q(2592),
+         q(0),
+         ],
+      q(gpn) => [
+         q(2593),
+         q(0),
+         ],
+      q(gqa) => [
+         q(2594),
+         q(0),
+         ],
+      q(gqi) => [
+         q(2595),
+         q(0),
+         ],
+      q(gqn) => [
+         q(2596),
+         q(0),
+         ],
+      q(gqr) => [
+         q(2597),
+         q(0),
+         ],
+      q(gqu) => [
+         q(2598),
+         q(0),
+         ],
+      q(gra) => [
+         q(2599),
+         q(0),
+         ],
+      q(grb) => [
+         q(0162),
+         q(0),
+         ],
+      q(grc) => [
+         q(0163),
+         q(1),
+         ],
+      q(grd) => [
+         q(2600),
+         q(0),
+         ],
+      q(gre) => [
+         q(0164),
+         q(0),
+         ],
+      q(grg) => [
+         q(2601),
+         q(0),
+         ],
+      q(grh) => [
+         q(2602),
+         q(0),
+         ],
+      q(gri) => [
+         q(2603),
+         q(0),
+         ],
+      q(grj) => [
+         q(2604),
+         q(0),
+         ],
+      q(grk) => [
+         q(0508),
+         q(0),
+         ],
+      q(grm) => [
+         q(2605),
+         q(0),
+         ],
+      q(grn) => [
+         q(0165),
+         q(0),
+         ],
+      q(gro) => [
+         q(2606),
+         q(0),
+         ],
+      q(grq) => [
+         q(2607),
+         q(0),
+         ],
+      q(grr) => [
+         q(2608),
+         q(0),
+         ],
+      q(grs) => [
+         q(2609),
+         q(0),
+         ],
+      q(grt) => [
+         q(2610),
+         q(0),
+         ],
+      q(gru) => [
+         q(2611),
+         q(0),
+         ],
+      q(grv) => [
+         q(2612),
+         q(0),
+         ],
+      q(grw) => [
+         q(2613),
+         q(0),
+         ],
+      q(grx) => [
+         q(2614),
+         q(0),
+         ],
+      q(gry) => [
+         q(2615),
+         q(0),
+         ],
+      q(grz) => [
+         q(2616),
+         q(0),
+         ],
+      q(gse) => [
+         q(2617),
+         q(0),
+         ],
+      q(gsg) => [
+         q(2618),
+         q(0),
+         ],
+      q(gsl) => [
+         q(2619),
+         q(0),
+         ],
+      q(gsm) => [
+         q(2620),
+         q(0),
+         ],
+      q(gsn) => [
+         q(2621),
+         q(0),
+         ],
+      q(gso) => [
+         q(2622),
+         q(0),
+         ],
+      q(gsp) => [
+         q(2623),
+         q(0),
+         ],
+      q(gss) => [
+         q(2624),
+         q(0),
+         ],
+      q(gsw) => [
+         q(0166),
+         q(0),
+         ],
+      q(gta) => [
+         q(2625),
+         q(0),
+         ],
+      q(gti) => [
+         q(2626),
+         q(0),
+         ],
+      q(gua) => [
+         q(2627),
+         q(0),
+         ],
+      q(gub) => [
+         q(2628),
+         q(0),
+         ],
+      q(guc) => [
+         q(2629),
+         q(0),
+         ],
+      q(gud) => [
+         q(2630),
+         q(0),
+         ],
+      q(gue) => [
+         q(2631),
+         q(0),
+         ],
+      q(guf) => [
+         q(2632),
+         q(0),
+         ],
+      q(gug) => [
+         q(2633),
+         q(0),
+         ],
+      q(guh) => [
+         q(2634),
+         q(0),
+         ],
+      q(gui) => [
+         q(2635),
+         q(0),
+         ],
+      q(guj) => [
+         q(0167),
+         q(0),
+         ],
+      q(guk) => [
+         q(2636),
+         q(0),
+         ],
+      q(gul) => [
+         q(2637),
+         q(0),
+         ],
+      q(gum) => [
+         q(2638),
+         q(0),
+         ],
+      q(gun) => [
+         q(2639),
+         q(0),
+         ],
+      q(guo) => [
+         q(2640),
+         q(0),
+         ],
+      q(gup) => [
+         q(2641),
+         q(0),
+         ],
+      q(guq) => [
+         q(2642),
+         q(0),
+         ],
+      q(gur) => [
+         q(2643),
+         q(0),
+         ],
+      q(gus) => [
+         q(2644),
+         q(0),
+         ],
+      q(gut) => [
+         q(2645),
+         q(0),
+         ],
+      q(guu) => [
+         q(2646),
+         q(0),
+         ],
+      q(guv) => [
+         q(2647),
+         q(0),
+         ],
+      q(guw) => [
+         q(2648),
+         q(0),
+         ],
+      q(gux) => [
+         q(2649),
+         q(0),
+         ],
+      q(guz) => [
+         q(2650),
+         q(0),
+         ],
+      q(gva) => [
+         q(2651),
+         q(0),
+         ],
+      q(gvc) => [
+         q(2652),
+         q(0),
+         ],
+      q(gve) => [
+         q(2653),
+         q(0),
+         ],
+      q(gvf) => [
+         q(2654),
+         q(0),
+         ],
+      q(gvj) => [
+         q(2655),
+         q(0),
+         ],
+      q(gvl) => [
+         q(2656),
+         q(0),
+         ],
+      q(gvm) => [
+         q(2657),
+         q(0),
+         ],
+      q(gvn) => [
+         q(2658),
+         q(0),
+         ],
+      q(gvo) => [
+         q(2659),
+         q(0),
+         ],
+      q(gvp) => [
+         q(2660),
+         q(0),
+         ],
+      q(gvr) => [
+         q(2661),
+         q(0),
+         ],
+      q(gvs) => [
+         q(2662),
+         q(0),
+         ],
+      q(gvy) => [
+         q(2663),
+         q(0),
+         ],
+      q(gwa) => [
+         q(2664),
+         q(0),
+         ],
+      q(gwb) => [
+         q(2665),
+         q(0),
+         ],
+      q(gwc) => [
+         q(2666),
+         q(0),
+         ],
+      q(gwd) => [
+         q(2667),
+         q(0),
+         ],
+      q(gwe) => [
+         q(2668),
+         q(0),
+         ],
+      q(gwf) => [
+         q(2669),
+         q(0),
+         ],
+      q(gwg) => [
+         q(2670),
+         q(0),
+         ],
+      q(gwi) => [
+         q(0168),
+         q(0),
+         ],
+      q(gwj) => [
+         q(2671),
+         q(0),
+         ],
+      q(gwm) => [
+         q(2672),
+         q(0),
+         ],
+      q(gwn) => [
+         q(2673),
+         q(0),
+         ],
+      q(gwr) => [
+         q(2674),
+         q(0),
+         ],
+      q(gwt) => [
+         q(2675),
+         q(0),
+         ],
+      q(gwu) => [
+         q(2676),
+         q(0),
+         ],
+      q(gww) => [
+         q(2677),
+         q(0),
+         ],
+      q(gwx) => [
+         q(2678),
+         q(0),
+         ],
+      q(gxx) => [
+         q(2679),
+         q(0),
+         ],
+      q(gya) => [
+         q(2680),
+         q(0),
+         ],
+      q(gyb) => [
+         q(2681),
+         q(0),
+         ],
+      q(gyd) => [
+         q(2682),
+         q(0),
+         ],
+      q(gye) => [
+         q(2683),
+         q(0),
+         ],
+      q(gyf) => [
+         q(2684),
+         q(0),
+         ],
+      q(gyg) => [
+         q(2685),
+         q(0),
+         ],
+      q(gyi) => [
+         q(2686),
+         q(0),
+         ],
+      q(gyl) => [
+         q(2687),
+         q(0),
+         ],
+      q(gym) => [
+         q(2688),
+         q(0),
+         ],
+      q(gyn) => [
+         q(2689),
+         q(0),
+         ],
+      q(gyr) => [
+         q(2690),
+         q(0),
+         ],
+      q(gyy) => [
+         q(2691),
+         q(0),
+         ],
+      q(gza) => [
+         q(2692),
+         q(0),
+         ],
+      q(gzi) => [
+         q(2693),
+         q(0),
+         ],
+      q(gzn) => [
+         q(2694),
+         q(0),
+         ],
+      q(haa) => [
+         q(2695),
+         q(0),
+         ],
+      q(hab) => [
+         q(2696),
+         q(0),
+         ],
+      q(hac) => [
+         q(2697),
+         q(0),
+         ],
+      q(had) => [
+         q(2698),
+         q(0),
+         ],
+      q(hae) => [
+         q(2699),
+         q(0),
+         ],
+      q(haf) => [
+         q(2700),
+         q(0),
+         ],
+      q(hag) => [
+         q(2701),
+         q(0),
+         ],
+      q(hah) => [
+         q(2702),
+         q(0),
+         ],
+      q(hai) => [
+         q(0169),
+         q(0),
+         ],
+      q(haj) => [
+         q(2703),
+         q(0),
+         ],
+      q(hak) => [
+         q(2704),
+         q(0),
+         ],
+      q(hal) => [
+         q(2705),
+         q(0),
+         ],
+      q(ham) => [
+         q(2706),
+         q(0),
+         ],
+      q(han) => [
+         q(2707),
+         q(0),
+         ],
+      q(hao) => [
+         q(2708),
+         q(0),
+         ],
+      q(hap) => [
+         q(2709),
+         q(0),
+         ],
+      q(haq) => [
+         q(2710),
+         q(0),
+         ],
+      q(har) => [
+         q(2711),
+         q(0),
+         ],
+      q(has) => [
+         q(2712),
+         q(0),
+         ],
+      q(hat) => [
+         q(0170),
+         q(0),
+         ],
+      q(hau) => [
+         q(0171),
+         q(0),
+         ],
+      q(hav) => [
+         q(2713),
+         q(0),
+         ],
+      q(haw) => [
+         q(0172),
+         q(0),
+         ],
+      q(hax) => [
+         q(2714),
+         q(0),
+         ],
+      q(hay) => [
+         q(2715),
+         q(0),
+         ],
+      q(haz) => [
+         q(2716),
+         q(0),
+         ],
+      q(hba) => [
+         q(2717),
+         q(0),
+         ],
+      q(hbb) => [
+         q(2718),
+         q(0),
+         ],
+      q(hbn) => [
+         q(2719),
+         q(0),
+         ],
+      q(hbo) => [
+         q(2720),
+         q(0),
+         ],
+      q(hbu) => [
+         q(2721),
+         q(0),
+         ],
+      q(hca) => [
+         q(2722),
+         q(0),
+         ],
+      q(hch) => [
+         q(2723),
+         q(0),
+         ],
+      q(hdn) => [
+         q(2724),
+         q(0),
+         ],
+      q(hds) => [
+         q(2725),
+         q(0),
+         ],
+      q(hdy) => [
+         q(2726),
+         q(0),
+         ],
+      q(hea) => [
+         q(2727),
+         q(0),
+         ],
+      q(heb) => [
+         q(0173),
+         q(0),
+         ],
+      q(hed) => [
+         q(2728),
+         q(0),
+         ],
+      q(heg) => [
+         q(2729),
+         q(0),
+         ],
+      q(heh) => [
+         q(2730),
+         q(0),
+         ],
+      q(hei) => [
+         q(2731),
+         q(0),
+         ],
+      q(hem) => [
+         q(2732),
+         q(0),
+         ],
+      q(her) => [
+         q(0174),
+         q(0),
+         ],
+      q(hgm) => [
+         q(2733),
+         q(0),
+         ],
+      q(hgw) => [
+         q(2734),
+         q(0),
+         ],
+      q(hhi) => [
+         q(2735),
+         q(0),
+         ],
+      q(hhr) => [
+         q(2736),
+         q(0),
+         ],
+      q(hhy) => [
+         q(2737),
+         q(0),
+         ],
+      q(hia) => [
+         q(2738),
+         q(0),
+         ],
+      q(hib) => [
+         q(2739),
+         q(0),
+         ],
+      q(hid) => [
+         q(2740),
+         q(0),
+         ],
+      q(hif) => [
+         q(2741),
+         q(0),
+         ],
+      q(hig) => [
+         q(2742),
+         q(0),
+         ],
+      q(hih) => [
+         q(2743),
+         q(0),
+         ],
+      q(hii) => [
+         q(2744),
+         q(0),
+         ],
+      q(hij) => [
+         q(2745),
+         q(0),
+         ],
+      q(hik) => [
+         q(2746),
+         q(0),
+         ],
+      q(hil) => [
+         q(0175),
+         q(0),
+         ],
+      q(him) => [
+         q(0176),
+         q(0),
+         ],
+      q(hin) => [
+         q(0177),
+         q(0),
+         ],
+      q(hio) => [
+         q(2747),
+         q(0),
+         ],
+      q(hir) => [
+         q(2748),
+         q(0),
+         ],
+      q(hit) => [
+         q(0178),
+         q(0),
+         ],
+      q(hiw) => [
+         q(2749),
+         q(0),
+         ],
+      q(hix) => [
+         q(2750),
+         q(0),
+         ],
+      q(hji) => [
+         q(2751),
+         q(0),
+         ],
+      q(hka) => [
+         q(2752),
+         q(0),
+         ],
+      q(hke) => [
+         q(2753),
+         q(0),
+         ],
+      q(hkk) => [
+         q(2754),
+         q(0),
+         ],
+      q(hks) => [
+         q(2755),
+         q(0),
+         ],
+      q(hla) => [
+         q(2756),
+         q(0),
+         ],
+      q(hlb) => [
+         q(2757),
+         q(0),
+         ],
+      q(hld) => [
+         q(2758),
+         q(0),
+         ],
+      q(hle) => [
+         q(2759),
+         q(0),
+         ],
+      q(hlt) => [
+         q(2760),
+         q(0),
+         ],
+      q(hlu) => [
+         q(2761),
+         q(0),
+         ],
+      q(hma) => [
+         q(2762),
+         q(0),
+         ],
+      q(hmb) => [
+         q(2763),
+         q(0),
+         ],
+      q(hmc) => [
+         q(2764),
+         q(0),
+         ],
+      q(hmd) => [
+         q(2765),
+         q(0),
+         ],
+      q(hme) => [
+         q(2766),
+         q(0),
+         ],
+      q(hmf) => [
+         q(2767),
+         q(0),
+         ],
+      q(hmg) => [
+         q(2768),
+         q(0),
+         ],
+      q(hmh) => [
+         q(2769),
+         q(0),
+         ],
+      q(hmi) => [
+         q(2770),
+         q(0),
+         ],
+      q(hmj) => [
+         q(2771),
+         q(0),
+         ],
+      q(hmk) => [
+         q(2772),
+         q(0),
+         ],
+      q(hml) => [
+         q(2773),
+         q(0),
+         ],
+      q(hmm) => [
+         q(2774),
+         q(0),
+         ],
+      q(hmn) => [
+         q(0179),
+         q(0),
+         ],
+      q(hmo) => [
+         q(0180),
+         q(0),
+         ],
+      q(hmp) => [
+         q(2775),
+         q(0),
+         ],
+      q(hmq) => [
+         q(2776),
+         q(0),
+         ],
+      q(hmr) => [
+         q(2777),
+         q(0),
+         ],
+      q(hms) => [
+         q(2778),
+         q(0),
+         ],
+      q(hmt) => [
+         q(2779),
+         q(0),
+         ],
+      q(hmu) => [
+         q(2780),
+         q(0),
+         ],
+      q(hmv) => [
+         q(2781),
+         q(0),
+         ],
+      q(hmw) => [
+         q(2782),
+         q(0),
+         ],
+      q(hmx) => [
+         q(0509),
+         q(0),
+         ],
+      q(hmy) => [
+         q(2783),
+         q(0),
+         ],
+      q(hmz) => [
+         q(2784),
+         q(0),
+         ],
+      q(hna) => [
+         q(2785),
+         q(0),
+         ],
+      q(hnd) => [
+         q(2786),
+         q(0),
+         ],
+      q(hne) => [
+         q(2787),
+         q(0),
+         ],
+      q(hnh) => [
+         q(2788),
+         q(0),
+         ],
+      q(hni) => [
+         q(2789),
+         q(0),
+         ],
+      q(hnj) => [
+         q(2790),
+         q(0),
+         ],
+      q(hnn) => [
+         q(2791),
+         q(0),
+         ],
+      q(hno) => [
+         q(2792),
+         q(0),
+         ],
+      q(hns) => [
+         q(2793),
+         q(0),
+         ],
+      q(hnu) => [
+         q(2794),
+         q(0),
+         ],
+      q(hoa) => [
+         q(2795),
+         q(0),
+         ],
+      q(hob) => [
+         q(2796),
+         q(0),
+         ],
+      q(hoc) => [
+         q(2797),
+         q(0),
+         ],
+      q(hod) => [
+         q(2798),
+         q(0),
+         ],
+      q(hoe) => [
+         q(2799),
+         q(0),
+         ],
+      q(hoh) => [
+         q(2800),
+         q(0),
+         ],
+      q(hoi) => [
+         q(2801),
+         q(0),
+         ],
+      q(hoj) => [
+         q(2802),
+         q(0),
+         ],
+      q(hok) => [
+         q(0510),
+         q(0),
+         ],
+      q(hol) => [
+         q(2803),
+         q(0),
+         ],
+      q(hom) => [
+         q(2804),
+         q(0),
+         ],
+      q(hoo) => [
+         q(2805),
+         q(0),
+         ],
+      q(hop) => [
+         q(2806),
+         q(0),
+         ],
+      q(hor) => [
+         q(2807),
+         q(0),
+         ],
+      q(hos) => [
+         q(2808),
+         q(0),
+         ],
+      q(hot) => [
+         q(2809),
+         q(0),
+         ],
+      q(hov) => [
+         q(2810),
+         q(0),
+         ],
+      q(how) => [
+         q(2811),
+         q(0),
+         ],
+      q(hoy) => [
+         q(2812),
+         q(0),
+         ],
+      q(hoz) => [
+         q(2813),
+         q(0),
+         ],
+      q(hpo) => [
+         q(2814),
+         q(0),
+         ],
+      q(hps) => [
+         q(2815),
+         q(0),
+         ],
+      q(hra) => [
+         q(2816),
+         q(0),
+         ],
+      q(hre) => [
+         q(2817),
+         q(0),
+         ],
+      q(hrk) => [
+         q(2818),
+         q(0),
+         ],
+      q(hrm) => [
+         q(2819),
+         q(0),
+         ],
+      q(hro) => [
+         q(2820),
+         q(0),
+         ],
+      q(hrt) => [
+         q(2821),
+         q(0),
+         ],
+      q(hru) => [
+         q(2822),
+         q(0),
+         ],
+      q(hrv) => [
+         q(0181),
+         q(0),
+         ],
+      q(hrx) => [
+         q(2823),
+         q(0),
+         ],
+      q(hrz) => [
+         q(2824),
+         q(0),
+         ],
+      q(hsb) => [
+         q(0182),
+         q(0),
+         ],
+      q(hsh) => [
+         q(2825),
+         q(0),
+         ],
+      q(hsl) => [
+         q(2826),
+         q(0),
+         ],
+      q(hsn) => [
+         q(2827),
+         q(0),
+         ],
+      q(hss) => [
+         q(2828),
+         q(0),
+         ],
+      q(hti) => [
+         q(2829),
+         q(0),
+         ],
+      q(hto) => [
+         q(2830),
+         q(0),
+         ],
+      q(hts) => [
+         q(2831),
+         q(0),
+         ],
+      q(htu) => [
+         q(2832),
+         q(0),
+         ],
+      q(htx) => [
+         q(2833),
+         q(0),
+         ],
+      q(hub) => [
+         q(2834),
+         q(0),
+         ],
+      q(huc) => [
+         q(2835),
+         q(0),
+         ],
+      q(hud) => [
+         q(2836),
+         q(0),
+         ],
+      q(hue) => [
+         q(2837),
+         q(0),
+         ],
+      q(huf) => [
+         q(2838),
+         q(0),
+         ],
+      q(hug) => [
+         q(2839),
+         q(0),
+         ],
+      q(huh) => [
+         q(2840),
+         q(0),
+         ],
+      q(hui) => [
+         q(2841),
+         q(0),
+         ],
+      q(huj) => [
+         q(2842),
+         q(0),
+         ],
+      q(huk) => [
+         q(2843),
+         q(0),
+         ],
+      q(hul) => [
+         q(2844),
+         q(0),
+         ],
+      q(hum) => [
+         q(2845),
+         q(0),
+         ],
+      q(hun) => [
+         q(0183),
+         q(0),
+         ],
+      q(huo) => [
+         q(2846),
+         q(0),
+         ],
+      q(hup) => [
+         q(0184),
+         q(0),
+         ],
+      q(huq) => [
+         q(2847),
+         q(0),
+         ],
+      q(hur) => [
+         q(2848),
+         q(0),
+         ],
+      q(hus) => [
+         q(2849),
+         q(0),
+         ],
+      q(hut) => [
+         q(2850),
+         q(0),
+         ],
+      q(huu) => [
+         q(2851),
+         q(0),
+         ],
+      q(huv) => [
+         q(2852),
+         q(0),
+         ],
+      q(huw) => [
+         q(2853),
+         q(0),
+         ],
+      q(hux) => [
+         q(2854),
+         q(0),
+         ],
+      q(huy) => [
+         q(2855),
+         q(0),
+         ],
+      q(huz) => [
+         q(2856),
+         q(0),
+         ],
+      q(hvc) => [
+         q(2857),
+         q(0),
+         ],
+      q(hve) => [
+         q(2858),
+         q(0),
+         ],
+      q(hvk) => [
+         q(2859),
+         q(0),
+         ],
+      q(hvn) => [
+         q(2860),
+         q(0),
+         ],
+      q(hvv) => [
+         q(2861),
+         q(0),
+         ],
+      q(hwa) => [
+         q(2862),
+         q(0),
+         ],
+      q(hwc) => [
+         q(2863),
+         q(0),
+         ],
+      q(hwo) => [
+         q(2864),
+         q(0),
+         ],
+      q(hya) => [
+         q(2865),
+         q(0),
+         ],
+      q(hyx) => [
+         q(0511),
+         q(0),
+         ],
+      q(iai) => [
+         q(2866),
+         q(0),
+         ],
+      q(ian) => [
+         q(2867),
+         q(0),
+         ],
+      q(iap) => [
+         q(2868),
+         q(0),
+         ],
+      q(iar) => [
+         q(2869),
+         q(0),
+         ],
+      q(iba) => [
+         q(0185),
+         q(0),
+         ],
+      q(ibb) => [
+         q(2870),
+         q(0),
+         ],
+      q(ibd) => [
+         q(2871),
+         q(0),
+         ],
+      q(ibe) => [
+         q(2872),
+         q(0),
+         ],
+      q(ibg) => [
+         q(2873),
+         q(0),
+         ],
+      q(ibl) => [
+         q(2874),
+         q(0),
+         ],
+      q(ibm) => [
+         q(2875),
+         q(0),
+         ],
+      q(ibn) => [
+         q(2876),
+         q(0),
+         ],
+      q(ibo) => [
+         q(0186),
+         q(0),
+         ],
+      q(ibr) => [
+         q(2877),
+         q(0),
+         ],
+      q(ibu) => [
+         q(2878),
+         q(0),
+         ],
+      q(iby) => [
+         q(2879),
+         q(0),
+         ],
+      q(ica) => [
+         q(2880),
+         q(0),
+         ],
+      q(ice) => [
+         q(0187),
+         q(0),
+         ],
+      q(ich) => [
+         q(2881),
+         q(0),
+         ],
+      q(icl) => [
+         q(2882),
+         q(0),
+         ],
+      q(icr) => [
+         q(2883),
+         q(0),
+         ],
+      q(ida) => [
+         q(2884),
+         q(0),
+         ],
+      q(idb) => [
+         q(2885),
+         q(0),
+         ],
+      q(idc) => [
+         q(2886),
+         q(0),
+         ],
+      q(idd) => [
+         q(2887),
+         q(0),
+         ],
+      q(ide) => [
+         q(2888),
+         q(0),
+         ],
+      q(idi) => [
+         q(2889),
+         q(0),
+         ],
+      q(ido) => [
+         q(0188),
+         q(0),
+         ],
+      q(idr) => [
+         q(2890),
+         q(0),
+         ],
+      q(ids) => [
+         q(2891),
+         q(0),
+         ],
+      q(idt) => [
+         q(2892),
+         q(0),
+         ],
+      q(idu) => [
+         q(2893),
+         q(0),
+         ],
+      q(ifa) => [
+         q(2894),
+         q(0),
+         ],
+      q(ifb) => [
+         q(2895),
+         q(0),
+         ],
+      q(ife) => [
+         q(2896),
+         q(0),
+         ],
+      q(iff) => [
+         q(2897),
+         q(0),
+         ],
+      q(ifk) => [
+         q(2898),
+         q(0),
+         ],
+      q(ifm) => [
+         q(2899),
+         q(0),
+         ],
+      q(ifu) => [
+         q(2900),
+         q(0),
+         ],
+      q(ify) => [
+         q(2901),
+         q(0),
+         ],
+      q(igb) => [
+         q(2902),
+         q(0),
+         ],
+      q(ige) => [
+         q(2903),
+         q(0),
+         ],
+      q(igg) => [
+         q(2904),
+         q(0),
+         ],
+      q(igl) => [
+         q(2905),
+         q(0),
+         ],
+      q(igm) => [
+         q(2906),
+         q(0),
+         ],
+      q(ign) => [
+         q(2907),
+         q(0),
+         ],
+      q(igo) => [
+         q(2908),
+         q(0),
+         ],
+      q(igs) => [
+         q(2909),
+         q(0),
+         ],
+      q(igw) => [
+         q(2910),
+         q(0),
+         ],
+      q(ihb) => [
+         q(2911),
+         q(0),
+         ],
+      q(ihi) => [
+         q(2912),
+         q(0),
+         ],
+      q(ihp) => [
+         q(2913),
+         q(0),
+         ],
+      q(ihw) => [
+         q(2914),
+         q(0),
+         ],
+      q(iii) => [
+         q(0189),
+         q(0),
+         ],
+      q(iir) => [
+         q(0512),
+         q(0),
+         ],
+      q(ijc) => [
+         q(2915),
+         q(0),
+         ],
+      q(ije) => [
+         q(2916),
+         q(0),
+         ],
+      q(ijj) => [
+         q(2917),
+         q(0),
+         ],
+      q(ijn) => [
+         q(2918),
+         q(0),
+         ],
+      q(ijo) => [
+         q(0190),
+         q(0),
+         ],
+      q(ijs) => [
+         q(2919),
+         q(0),
+         ],
+      q(ike) => [
+         q(2920),
+         q(0),
+         ],
+      q(iki) => [
+         q(2921),
+         q(0),
+         ],
+      q(ikk) => [
+         q(2922),
+         q(0),
+         ],
+      q(ikl) => [
+         q(2923),
+         q(0),
+         ],
+      q(iko) => [
+         q(2924),
+         q(0),
+         ],
+      q(ikp) => [
+         q(2925),
+         q(0),
+         ],
+      q(ikt) => [
+         q(2926),
+         q(0),
+         ],
+      q(iku) => [
+         q(0191),
+         q(0),
+         ],
+      q(ikv) => [
+         q(2927),
+         q(0),
+         ],
+      q(ikw) => [
+         q(2928),
+         q(0),
+         ],
+      q(ikx) => [
+         q(2929),
+         q(0),
+         ],
+      q(ikz) => [
+         q(2930),
+         q(0),
+         ],
+      q(ila) => [
+         q(2931),
+         q(0),
+         ],
+      q(ilb) => [
+         q(2932),
+         q(0),
+         ],
+      q(ile) => [
+         q(0192),
+         q(0),
+         ],
+      q(ilg) => [
+         q(2933),
+         q(0),
+         ],
+      q(ili) => [
+         q(2934),
+         q(0),
+         ],
+      q(ilk) => [
+         q(2935),
+         q(0),
+         ],
+      q(ill) => [
+         q(2936),
+         q(0),
+         ],
+      q(ilo) => [
+         q(0193),
+         q(0),
+         ],
+      q(ils) => [
+         q(2937),
+         q(0),
+         ],
+      q(ilu) => [
+         q(2938),
+         q(0),
+         ],
+      q(ilv) => [
+         q(2939),
+         q(0),
+         ],
+      q(ilw) => [
+         q(2940),
+         q(0),
+         ],
+      q(ima) => [
+         q(2941),
+         q(0),
+         ],
+      q(ime) => [
+         q(2942),
+         q(0),
+         ],
+      q(imi) => [
+         q(2943),
+         q(0),
+         ],
+      q(iml) => [
+         q(2944),
+         q(0),
+         ],
+      q(imn) => [
+         q(2945),
+         q(0),
+         ],
+      q(imo) => [
+         q(2946),
+         q(0),
+         ],
+      q(imr) => [
+         q(2947),
+         q(0),
+         ],
+      q(ims) => [
+         q(2948),
+         q(0),
+         ],
+      q(imy) => [
+         q(2949),
+         q(0),
+         ],
+      q(ina) => [
+         q(0194),
+         q(0),
+         ],
+      q(inb) => [
+         q(2950),
+         q(0),
+         ],
+      q(inc) => [
+         q(0195),
+         q(0),
+         ],
+      q(ind) => [
+         q(0196),
+         q(0),
+         ],
+      q(ine) => [
+         q(0197),
+         q(0),
+         ],
+      q(ing) => [
+         q(2951),
+         q(0),
+         ],
+      q(inh) => [
+         q(0198),
+         q(0),
+         ],
+      q(inj) => [
+         q(2952),
+         q(0),
+         ],
+      q(inl) => [
+         q(2953),
+         q(0),
+         ],
+      q(inm) => [
+         q(2954),
+         q(0),
+         ],
+      q(inn) => [
+         q(2955),
+         q(0),
+         ],
+      q(ino) => [
+         q(2956),
+         q(0),
+         ],
+      q(inp) => [
+         q(2957),
+         q(0),
+         ],
+      q(ins) => [
+         q(2958),
+         q(0),
+         ],
+      q(int) => [
+         q(2959),
+         q(0),
+         ],
+      q(inz) => [
+         q(2960),
+         q(0),
+         ],
+      q(ior) => [
+         q(2961),
+         q(0),
+         ],
+      q(iou) => [
+         q(2962),
+         q(0),
+         ],
+      q(iow) => [
+         q(2963),
+         q(0),
+         ],
+      q(ipi) => [
+         q(2964),
+         q(0),
+         ],
+      q(ipk) => [
+         q(0199),
+         q(0),
+         ],
+      q(ipo) => [
+         q(2965),
+         q(0),
+         ],
+      q(iqu) => [
+         q(2966),
+         q(0),
+         ],
+      q(ira) => [
+         q(0200),
+         q(0),
+         ],
+      q(ire) => [
+         q(2967),
+         q(0),
+         ],
+      q(irh) => [
+         q(2968),
+         q(0),
+         ],
+      q(iri) => [
+         q(2969),
+         q(0),
+         ],
+      q(irk) => [
+         q(2970),
+         q(0),
+         ],
+      q(irn) => [
+         q(2971),
+         q(0),
+         ],
+      q(iro) => [
+         q(0201),
+         q(0),
+         ],
+      q(irr) => [
+         q(2972),
+         q(0),
+         ],
+      q(iru) => [
+         q(2973),
+         q(0),
+         ],
+      q(irx) => [
+         q(2974),
+         q(0),
+         ],
+      q(iry) => [
+         q(2975),
+         q(0),
+         ],
+      q(isa) => [
+         q(2976),
+         q(0),
+         ],
+      q(isc) => [
+         q(2977),
+         q(0),
+         ],
+      q(isd) => [
+         q(2978),
+         q(0),
+         ],
+      q(ise) => [
+         q(2979),
+         q(0),
+         ],
+      q(isg) => [
+         q(2980),
+         q(0),
+         ],
+      q(ish) => [
+         q(2981),
+         q(0),
+         ],
+      q(isi) => [
+         q(2982),
+         q(0),
+         ],
+      q(isk) => [
+         q(2983),
+         q(0),
+         ],
+      q(ism) => [
+         q(2984),
+         q(0),
+         ],
+      q(isn) => [
+         q(2985),
+         q(0),
+         ],
+      q(iso) => [
+         q(2986),
+         q(0),
+         ],
+      q(isr) => [
+         q(2987),
+         q(0),
+         ],
+      q(ist) => [
+         q(2988),
+         q(0),
+         ],
+      q(isu) => [
+         q(2989),
+         q(0),
+         ],
+      q(ita) => [
+         q(0202),
+         q(0),
+         ],
+      q(itb) => [
+         q(2990),
+         q(0),
+         ],
+      q(itc) => [
+         q(0513),
+         q(0),
+         ],
+      q(ite) => [
+         q(2991),
+         q(0),
+         ],
+      q(iti) => [
+         q(2992),
+         q(0),
+         ],
+      q(itk) => [
+         q(2993),
+         q(0),
+         ],
+      q(itl) => [
+         q(2994),
+         q(0),
+         ],
+      q(itm) => [
+         q(2995),
+         q(0),
+         ],
+      q(ito) => [
+         q(2996),
+         q(0),
+         ],
+      q(itr) => [
+         q(2997),
+         q(0),
+         ],
+      q(its) => [
+         q(2998),
+         q(0),
+         ],
+      q(itt) => [
+         q(2999),
+         q(0),
+         ],
+      q(itv) => [
+         q(3000),
+         q(0),
+         ],
+      q(itw) => [
+         q(3001),
+         q(0),
+         ],
+      q(itx) => [
+         q(3002),
+         q(0),
+         ],
+      q(ity) => [
+         q(3003),
+         q(0),
+         ],
+      q(itz) => [
+         q(3004),
+         q(0),
+         ],
+      q(ium) => [
+         q(3005),
+         q(0),
+         ],
+      q(ivb) => [
+         q(3006),
+         q(0),
+         ],
+      q(ivv) => [
+         q(3007),
+         q(0),
+         ],
+      q(iwk) => [
+         q(3008),
+         q(0),
+         ],
+      q(iwm) => [
+         q(3009),
+         q(0),
+         ],
+      q(iwo) => [
+         q(3010),
+         q(0),
+         ],
+      q(iws) => [
+         q(3011),
+         q(0),
+         ],
+      q(ixc) => [
+         q(3012),
+         q(0),
+         ],
+      q(ixl) => [
+         q(3013),
+         q(0),
+         ],
+      q(iya) => [
+         q(3014),
+         q(0),
+         ],
+      q(iyo) => [
+         q(3015),
+         q(0),
+         ],
+      q(iyx) => [
+         q(3016),
+         q(0),
+         ],
+      q(izh) => [
+         q(3017),
+         q(0),
+         ],
+      q(izi) => [
+         q(3018),
+         q(0),
+         ],
+      q(izr) => [
+         q(3019),
+         q(0),
+         ],
+      q(jaa) => [
+         q(3020),
+         q(0),
+         ],
+      q(jab) => [
+         q(3021),
+         q(0),
+         ],
+      q(jac) => [
+         q(3022),
+         q(0),
+         ],
+      q(jad) => [
+         q(3023),
+         q(0),
+         ],
+      q(jae) => [
+         q(3024),
+         q(0),
+         ],
+      q(jaf) => [
+         q(3025),
+         q(0),
+         ],
+      q(jah) => [
+         q(3026),
+         q(0),
+         ],
+      q(jaj) => [
+         q(3027),
+         q(0),
+         ],
+      q(jak) => [
+         q(3028),
+         q(0),
+         ],
+      q(jal) => [
+         q(3029),
+         q(0),
+         ],
+      q(jam) => [
+         q(3030),
+         q(0),
+         ],
+      q(jan) => [
+         q(3031),
+         q(0),
+         ],
+      q(jao) => [
+         q(3032),
+         q(0),
+         ],
+      q(jaq) => [
+         q(3033),
+         q(0),
+         ],
+      q(jas) => [
+         q(3034),
+         q(0),
+         ],
+      q(jat) => [
+         q(3035),
+         q(0),
+         ],
+      q(jau) => [
+         q(3036),
+         q(0),
+         ],
+      q(jav) => [
+         q(0203),
+         q(0),
+         ],
+      q(jax) => [
+         q(3037),
+         q(0),
+         ],
+      q(jay) => [
+         q(3038),
+         q(0),
+         ],
+      q(jaz) => [
+         q(3039),
+         q(0),
+         ],
+      q(jbe) => [
+         q(3040),
+         q(0),
+         ],
+      q(jbj) => [
+         q(3041),
+         q(0),
+         ],
+      q(jbk) => [
+         q(3042),
+         q(0),
+         ],
+      q(jbn) => [
+         q(3043),
+         q(0),
+         ],
+      q(jbo) => [
+         q(0204),
+         q(0),
+         ],
+      q(jbr) => [
+         q(3044),
+         q(0),
+         ],
+      q(jbt) => [
+         q(3045),
+         q(0),
+         ],
+      q(jbu) => [
+         q(3046),
+         q(0),
+         ],
+      q(jbw) => [
+         q(3047),
+         q(0),
+         ],
+      q(jcs) => [
+         q(3048),
+         q(0),
+         ],
+      q(jct) => [
+         q(3049),
+         q(0),
+         ],
+      q(jda) => [
+         q(3050),
+         q(0),
+         ],
+      q(jdg) => [
+         q(3051),
+         q(0),
+         ],
+      q(jdt) => [
+         q(3052),
+         q(0),
+         ],
+      q(jeb) => [
+         q(3053),
+         q(0),
+         ],
+      q(jee) => [
+         q(3054),
+         q(0),
+         ],
+      q(jeg) => [
+         q(3055),
+         q(0),
+         ],
+      q(jeh) => [
+         q(3056),
+         q(0),
+         ],
+      q(jei) => [
+         q(3057),
+         q(0),
+         ],
+      q(jek) => [
+         q(3058),
+         q(0),
+         ],
+      q(jel) => [
+         q(3059),
+         q(0),
+         ],
+      q(jen) => [
+         q(3060),
+         q(0),
+         ],
+      q(jer) => [
+         q(3061),
+         q(0),
+         ],
+      q(jet) => [
+         q(3062),
+         q(0),
+         ],
+      q(jeu) => [
+         q(3063),
+         q(0),
+         ],
+      q(jgb) => [
+         q(3064),
+         q(0),
+         ],
+      q(jge) => [
+         q(3065),
+         q(0),
+         ],
+      q(jgk) => [
+         q(3066),
+         q(0),
+         ],
+      q(jgo) => [
+         q(3067),
+         q(0),
+         ],
+      q(jhi) => [
+         q(3068),
+         q(0),
+         ],
+      q(jhs) => [
+         q(3069),
+         q(0),
+         ],
+      q(jia) => [
+         q(3070),
+         q(0),
+         ],
+      q(jib) => [
+         q(3071),
+         q(0),
+         ],
+      q(jic) => [
+         q(3072),
+         q(0),
+         ],
+      q(jid) => [
+         q(3073),
+         q(0),
+         ],
+      q(jie) => [
+         q(3074),
+         q(0),
+         ],
+      q(jig) => [
+         q(3075),
+         q(0),
+         ],
+      q(jih) => [
+         q(3076),
+         q(0),
+         ],
+      q(jii) => [
+         q(3077),
+         q(0),
+         ],
+      q(jil) => [
+         q(3078),
+         q(0),
+         ],
+      q(jim) => [
+         q(3079),
+         q(0),
+         ],
+      q(jio) => [
+         q(3080),
+         q(0),
+         ],
+      q(jiq) => [
+         q(3081),
+         q(0),
+         ],
+      q(jit) => [
+         q(3082),
+         q(0),
+         ],
+      q(jiu) => [
+         q(3083),
+         q(0),
+         ],
+      q(jiv) => [
+         q(3084),
+         q(0),
+         ],
+      q(jiy) => [
+         q(3085),
+         q(0),
+         ],
+      q(jjr) => [
+         q(3086),
+         q(0),
+         ],
+      q(jkm) => [
+         q(3087),
+         q(0),
+         ],
+      q(jko) => [
+         q(3088),
+         q(0),
+         ],
+      q(jkp) => [
+         q(3089),
+         q(0),
+         ],
+      q(jkr) => [
+         q(3090),
+         q(0),
+         ],
+      q(jku) => [
+         q(3091),
+         q(0),
+         ],
+      q(jle) => [
+         q(3092),
+         q(0),
+         ],
+      q(jls) => [
+         q(3093),
+         q(0),
+         ],
+      q(jma) => [
+         q(3094),
+         q(0),
+         ],
+      q(jmb) => [
+         q(3095),
+         q(0),
+         ],
+      q(jmc) => [
+         q(3096),
+         q(0),
+         ],
+      q(jmd) => [
+         q(3097),
+         q(0),
+         ],
+      q(jmi) => [
+         q(3098),
+         q(0),
+         ],
+      q(jml) => [
+         q(3099),
+         q(0),
+         ],
+      q(jmn) => [
+         q(3100),
+         q(0),
+         ],
+      q(jmr) => [
+         q(3101),
+         q(0),
+         ],
+      q(jms) => [
+         q(3102),
+         q(0),
+         ],
+      q(jmw) => [
+         q(3103),
+         q(0),
+         ],
+      q(jmx) => [
+         q(3104),
+         q(0),
+         ],
+      q(jna) => [
+         q(3105),
+         q(0),
+         ],
+      q(jnd) => [
+         q(3106),
+         q(0),
+         ],
+      q(jng) => [
+         q(3107),
+         q(0),
+         ],
+      q(jni) => [
+         q(3108),
+         q(0),
+         ],
+      q(jnj) => [
+         q(3109),
+         q(0),
+         ],
+      q(jnl) => [
+         q(3110),
+         q(0),
+         ],
+      q(jns) => [
+         q(3111),
+         q(0),
+         ],
+      q(job) => [
+         q(3112),
+         q(0),
+         ],
+      q(jod) => [
+         q(3113),
+         q(0),
+         ],
+      q(jor) => [
+         q(3114),
+         q(0),
+         ],
+      q(jos) => [
+         q(3115),
+         q(0),
+         ],
+      q(jow) => [
+         q(3116),
+         q(0),
+         ],
+      q(jpa) => [
+         q(3117),
+         q(0),
+         ],
+      q(jpn) => [
+         q(0205),
+         q(0),
+         ],
+      q(jpr) => [
+         q(0206),
+         q(0),
+         ],
+      q(jpx) => [
+         q(0514),
+         q(0),
+         ],
+      q(jqr) => [
+         q(3118),
+         q(0),
+         ],
+      q(jra) => [
+         q(3119),
+         q(0),
+         ],
+      q(jrb) => [
+         q(0207),
+         q(0),
+         ],
+      q(jrr) => [
+         q(3120),
+         q(0),
+         ],
+      q(jrt) => [
+         q(3121),
+         q(0),
+         ],
+      q(jru) => [
+         q(3122),
+         q(0),
+         ],
+      q(jsl) => [
+         q(3123),
+         q(0),
+         ],
+      q(jua) => [
+         q(3124),
+         q(0),
+         ],
+      q(jub) => [
+         q(3125),
+         q(0),
+         ],
+      q(juc) => [
+         q(3126),
+         q(0),
+         ],
+      q(jud) => [
+         q(3127),
+         q(0),
+         ],
+      q(juh) => [
+         q(3128),
+         q(0),
+         ],
+      q(jui) => [
+         q(3129),
+         q(0),
+         ],
+      q(juk) => [
+         q(3130),
+         q(0),
+         ],
+      q(jul) => [
+         q(3131),
+         q(0),
+         ],
+      q(jum) => [
+         q(3132),
+         q(0),
+         ],
+      q(jun) => [
+         q(3133),
+         q(0),
+         ],
+      q(juo) => [
+         q(3134),
+         q(0),
+         ],
+      q(jup) => [
+         q(3135),
+         q(0),
+         ],
+      q(jur) => [
+         q(3136),
+         q(0),
+         ],
+      q(jus) => [
+         q(3137),
+         q(0),
+         ],
+      q(jut) => [
+         q(3138),
+         q(0),
+         ],
+      q(juu) => [
+         q(3139),
+         q(0),
+         ],
+      q(juw) => [
+         q(3140),
+         q(0),
+         ],
+      q(juy) => [
+         q(3141),
+         q(0),
+         ],
+      q(jvd) => [
+         q(3142),
+         q(0),
+         ],
+      q(jvn) => [
+         q(3143),
+         q(0),
+         ],
+      q(jwi) => [
+         q(3144),
+         q(0),
+         ],
+      q(jya) => [
+         q(3145),
+         q(0),
+         ],
+      q(jye) => [
+         q(3146),
+         q(0),
+         ],
+      q(jyy) => [
+         q(3147),
+         q(0),
+         ],
+      q(kaa) => [
+         q(0208),
+         q(0),
+         ],
+      q(kab) => [
+         q(0209),
+         q(0),
+         ],
+      q(kac) => [
+         q(0210),
+         q(0),
+         ],
+      q(kad) => [
+         q(3148),
+         q(0),
+         ],
+      q(kae) => [
+         q(3149),
+         q(0),
+         ],
+      q(kaf) => [
+         q(3150),
+         q(0),
+         ],
+      q(kag) => [
+         q(3151),
+         q(0),
+         ],
+      q(kah) => [
+         q(3152),
+         q(0),
+         ],
+      q(kai) => [
+         q(3153),
+         q(0),
+         ],
+      q(kaj) => [
+         q(3154),
+         q(0),
+         ],
+      q(kak) => [
+         q(3155),
+         q(0),
+         ],
+      q(kal) => [
+         q(0211),
+         q(0),
+         ],
+      q(kam) => [
+         q(0212),
+         q(1),
+         ],
+      q(kan) => [
+         q(0213),
+         q(0),
+         ],
+      q(kao) => [
+         q(3156),
+         q(0),
+         ],
+      q(kap) => [
+         q(3157),
+         q(0),
+         ],
+      q(kaq) => [
+         q(3158),
+         q(0),
+         ],
+      q(kar) => [
+         q(0214),
+         q(0),
+         ],
+      q(kas) => [
+         q(0215),
+         q(0),
+         ],
+      q(kau) => [
+         q(0216),
+         q(0),
+         ],
+      q(kav) => [
+         q(3159),
+         q(0),
+         ],
+      q(kaw) => [
+         q(0217),
+         q(0),
+         ],
+      q(kax) => [
+         q(3160),
+         q(0),
+         ],
+      q(kay) => [
+         q(3161),
+         q(0),
+         ],
+      q(kaz) => [
+         q(0218),
+         q(0),
+         ],
+      q(kba) => [
+         q(3162),
+         q(0),
+         ],
+      q(kbb) => [
+         q(3163),
+         q(0),
+         ],
+      q(kbc) => [
+         q(3164),
+         q(0),
+         ],
+      q(kbd) => [
+         q(0219),
+         q(0),
+         ],
+      q(kbe) => [
+         q(3165),
+         q(0),
+         ],
+      q(kbf) => [
+         q(3166),
+         q(0),
+         ],
+      q(kbg) => [
+         q(3167),
+         q(0),
+         ],
+      q(kbh) => [
+         q(3168),
+         q(0),
+         ],
+      q(kbi) => [
+         q(3169),
+         q(0),
+         ],
+      q(kbj) => [
+         q(3170),
+         q(0),
+         ],
+      q(kbk) => [
+         q(3171),
+         q(0),
+         ],
+      q(kbl) => [
+         q(3172),
+         q(0),
+         ],
+      q(kbm) => [
+         q(3173),
+         q(0),
+         ],
+      q(kbn) => [
+         q(3174),
+         q(0),
+         ],
+      q(kbo) => [
+         q(3175),
+         q(0),
+         ],
+      q(kbp) => [
+         q(3176),
+         q(0),
+         ],
+      q(kbq) => [
+         q(3177),
+         q(0),
+         ],
+      q(kbr) => [
+         q(3178),
+         q(0),
+         ],
+      q(kbs) => [
+         q(3179),
+         q(0),
+         ],
+      q(kbt) => [
+         q(3180),
+         q(0),
+         ],
+      q(kbu) => [
+         q(3181),
+         q(0),
+         ],
+      q(kbv) => [
+         q(3182),
+         q(0),
+         ],
+      q(kbw) => [
+         q(3183),
+         q(0),
+         ],
+      q(kbx) => [
+         q(3184),
+         q(0),
+         ],
+      q(kby) => [
+         q(3185),
+         q(0),
+         ],
+      q(kbz) => [
+         q(3186),
+         q(0),
+         ],
+      q(kca) => [
+         q(3187),
+         q(0),
+         ],
+      q(kcb) => [
+         q(3188),
+         q(0),
+         ],
+      q(kcc) => [
+         q(3189),
+         q(0),
+         ],
+      q(kcd) => [
+         q(3190),
+         q(0),
+         ],
+      q(kce) => [
+         q(3191),
+         q(0),
+         ],
+      q(kcf) => [
+         q(3192),
+         q(0),
+         ],
+      q(kcg) => [
+         q(3193),
+         q(0),
+         ],
+      q(kch) => [
+         q(3194),
+         q(0),
+         ],
+      q(kci) => [
+         q(3195),
+         q(0),
+         ],
+      q(kcj) => [
+         q(3196),
+         q(0),
+         ],
+      q(kck) => [
+         q(3197),
+         q(0),
+         ],
+      q(kcl) => [
+         q(3198),
+         q(0),
+         ],
+      q(kcm) => [
+         q(3199),
+         q(0),
+         ],
+      q(kcn) => [
+         q(3200),
+         q(0),
+         ],
+      q(kco) => [
+         q(3201),
+         q(0),
+         ],
+      q(kcp) => [
+         q(3202),
+         q(0),
+         ],
+      q(kcq) => [
+         q(3203),
+         q(0),
+         ],
+      q(kcr) => [
+         q(3204),
+         q(0),
+         ],
+      q(kcs) => [
+         q(3205),
+         q(0),
+         ],
+      q(kct) => [
+         q(3206),
+         q(0),
+         ],
+      q(kcu) => [
+         q(3207),
+         q(0),
+         ],
+      q(kcv) => [
+         q(3208),
+         q(0),
+         ],
+      q(kcw) => [
+         q(3209),
+         q(0),
+         ],
+      q(kcx) => [
+         q(3210),
+         q(0),
+         ],
+      q(kcy) => [
+         q(3211),
+         q(0),
+         ],
+      q(kcz) => [
+         q(3212),
+         q(0),
+         ],
+      q(kda) => [
+         q(3213),
+         q(0),
+         ],
+      q(kdc) => [
+         q(3214),
+         q(0),
+         ],
+      q(kdd) => [
+         q(3215),
+         q(0),
+         ],
+      q(kde) => [
+         q(3216),
+         q(0),
+         ],
+      q(kdf) => [
+         q(3217),
+         q(0),
+         ],
+      q(kdg) => [
+         q(3218),
+         q(0),
+         ],
+      q(kdh) => [
+         q(3219),
+         q(0),
+         ],
+      q(kdi) => [
+         q(3220),
+         q(0),
+         ],
+      q(kdj) => [
+         q(3221),
+         q(0),
+         ],
+      q(kdk) => [
+         q(3222),
+         q(0),
+         ],
+      q(kdl) => [
+         q(3223),
+         q(0),
+         ],
+      q(kdm) => [
+         q(3224),
+         q(0),
+         ],
+      q(kdn) => [
+         q(3225),
+         q(0),
+         ],
+      q(kdo) => [
+         q(0515),
+         q(0),
+         ],
+      q(kdp) => [
+         q(3226),
+         q(0),
+         ],
+      q(kdq) => [
+         q(3227),
+         q(0),
+         ],
+      q(kdr) => [
+         q(3228),
+         q(0),
+         ],
+      q(kdt) => [
+         q(3229),
+         q(0),
+         ],
+      q(kdu) => [
+         q(3230),
+         q(0),
+         ],
+      q(kdw) => [
+         q(3231),
+         q(0),
+         ],
+      q(kdx) => [
+         q(3232),
+         q(0),
+         ],
+      q(kdy) => [
+         q(3233),
+         q(0),
+         ],
+      q(kdz) => [
+         q(3234),
+         q(0),
+         ],
+      q(kea) => [
+         q(3235),
+         q(0),
+         ],
+      q(keb) => [
+         q(3236),
+         q(0),
+         ],
+      q(kec) => [
+         q(3237),
+         q(0),
+         ],
+      q(ked) => [
+         q(3238),
+         q(0),
+         ],
+      q(kee) => [
+         q(3239),
+         q(0),
+         ],
+      q(kef) => [
+         q(3240),
+         q(0),
+         ],
+      q(keg) => [
+         q(3241),
+         q(0),
+         ],
+      q(keh) => [
+         q(3242),
+         q(0),
+         ],
+      q(kei) => [
+         q(3243),
+         q(0),
+         ],
+      q(kej) => [
+         q(3244),
+         q(0),
+         ],
+      q(kek) => [
+         q(3245),
+         q(0),
+         ],
+      q(kel) => [
+         q(3246),
+         q(0),
+         ],
+      q(kem) => [
+         q(3247),
+         q(0),
+         ],
+      q(ken) => [
+         q(3248),
+         q(0),
+         ],
+      q(keo) => [
+         q(3249),
+         q(0),
+         ],
+      q(kep) => [
+         q(3250),
+         q(0),
+         ],
+      q(keq) => [
+         q(3251),
+         q(0),
+         ],
+      q(ker) => [
+         q(3252),
+         q(0),
+         ],
+      q(kes) => [
+         q(3253),
+         q(0),
+         ],
+      q(ket) => [
+         q(3254),
+         q(0),
+         ],
+      q(keu) => [
+         q(3255),
+         q(0),
+         ],
+      q(kev) => [
+         q(3256),
+         q(0),
+         ],
+      q(kew) => [
+         q(3257),
+         q(0),
+         ],
+      q(kex) => [
+         q(3258),
+         q(0),
+         ],
+      q(key) => [
+         q(3259),
+         q(0),
+         ],
+      q(kez) => [
+         q(3260),
+         q(0),
+         ],
+      q(kfa) => [
+         q(3261),
+         q(0),
+         ],
+      q(kfb) => [
+         q(3262),
+         q(0),
+         ],
+      q(kfc) => [
+         q(3263),
+         q(0),
+         ],
+      q(kfd) => [
+         q(3264),
+         q(0),
+         ],
+      q(kfe) => [
+         q(3265),
+         q(0),
+         ],
+      q(kff) => [
+         q(3266),
+         q(0),
+         ],
+      q(kfg) => [
+         q(3267),
+         q(0),
+         ],
+      q(kfh) => [
+         q(3268),
+         q(0),
+         ],
+      q(kfi) => [
+         q(3269),
+         q(0),
+         ],
+      q(kfj) => [
+         q(3270),
+         q(0),
+         ],
+      q(kfk) => [
+         q(3271),
+         q(0),
+         ],
+      q(kfl) => [
+         q(3272),
+         q(0),
+         ],
+      q(kfm) => [
+         q(3273),
+         q(0),
+         ],
+      q(kfn) => [
+         q(3274),
+         q(0),
+         ],
+      q(kfo) => [
+         q(3275),
+         q(0),
+         ],
+      q(kfp) => [
+         q(3276),
+         q(0),
+         ],
+      q(kfq) => [
+         q(3277),
+         q(0),
+         ],
+      q(kfr) => [
+         q(3278),
+         q(0),
+         ],
+      q(kfs) => [
+         q(3279),
+         q(0),
+         ],
+      q(kft) => [
+         q(3280),
+         q(0),
+         ],
+      q(kfu) => [
+         q(3281),
+         q(0),
+         ],
+      q(kfv) => [
+         q(3282),
+         q(0),
+         ],
+      q(kfw) => [
+         q(3283),
+         q(0),
+         ],
+      q(kfx) => [
+         q(3284),
+         q(0),
+         ],
+      q(kfy) => [
+         q(3285),
+         q(0),
+         ],
+      q(kfz) => [
+         q(3286),
+         q(0),
+         ],
+      q(kga) => [
+         q(3287),
+         q(0),
+         ],
+      q(kgb) => [
+         q(3288),
+         q(0),
+         ],
+      q(kgc) => [
+         q(3289),
+         q(0),
+         ],
+      q(kgd) => [
+         q(3290),
+         q(0),
+         ],
+      q(kge) => [
+         q(3291),
+         q(0),
+         ],
+      q(kgf) => [
+         q(3292),
+         q(0),
+         ],
+      q(kgg) => [
+         q(3293),
+         q(0),
+         ],
+      q(kgi) => [
+         q(3294),
+         q(0),
+         ],
+      q(kgj) => [
+         q(3295),
+         q(0),
+         ],
+      q(kgk) => [
+         q(3296),
+         q(0),
+         ],
+      q(kgl) => [
+         q(3297),
+         q(0),
+         ],
+      q(kgm) => [
+         q(3298),
+         q(0),
+         ],
+      q(kgn) => [
+         q(3299),
+         q(0),
+         ],
+      q(kgo) => [
+         q(3300),
+         q(0),
+         ],
+      q(kgp) => [
+         q(3301),
+         q(0),
+         ],
+      q(kgq) => [
+         q(3302),
+         q(0),
+         ],
+      q(kgr) => [
+         q(3303),
+         q(0),
+         ],
+      q(kgs) => [
+         q(3304),
+         q(0),
+         ],
+      q(kgt) => [
+         q(3305),
+         q(0),
+         ],
+      q(kgu) => [
+         q(3306),
+         q(0),
+         ],
+      q(kgv) => [
+         q(3307),
+         q(0),
+         ],
+      q(kgw) => [
+         q(3308),
+         q(0),
+         ],
+      q(kgx) => [
+         q(3309),
+         q(0),
+         ],
+      q(kgy) => [
+         q(3310),
+         q(0),
+         ],
+      q(kha) => [
+         q(0220),
+         q(0),
+         ],
+      q(khb) => [
+         q(3311),
+         q(0),
+         ],
+      q(khc) => [
+         q(3312),
+         q(0),
+         ],
+      q(khd) => [
+         q(3313),
+         q(0),
+         ],
+      q(khe) => [
+         q(3314),
+         q(0),
+         ],
+      q(khf) => [
+         q(3315),
+         q(0),
+         ],
+      q(khg) => [
+         q(3316),
+         q(0),
+         ],
+      q(khh) => [
+         q(3317),
+         q(0),
+         ],
+      q(khi) => [
+         q(0221),
+         q(0),
+         ],
+      q(khj) => [
+         q(3318),
+         q(0),
+         ],
+      q(khk) => [
+         q(3319),
+         q(0),
+         ],
+      q(khl) => [
+         q(3320),
+         q(0),
+         ],
+      q(khm) => [
+         q(0222),
+         q(0),
+         ],
+      q(khn) => [
+         q(3321),
+         q(0),
+         ],
+      q(kho) => [
+         q(0223),
+         q(0),
+         ],
+      q(khp) => [
+         q(3322),
+         q(0),
+         ],
+      q(khq) => [
+         q(3323),
+         q(0),
+         ],
+      q(khr) => [
+         q(3324),
+         q(0),
+         ],
+      q(khs) => [
+         q(3325),
+         q(0),
+         ],
+      q(kht) => [
+         q(3326),
+         q(0),
+         ],
+      q(khu) => [
+         q(3327),
+         q(0),
+         ],
+      q(khv) => [
+         q(3328),
+         q(0),
+         ],
+      q(khw) => [
+         q(3329),
+         q(0),
+         ],
+      q(khx) => [
+         q(3330),
+         q(0),
+         ],
+      q(khy) => [
+         q(3331),
+         q(0),
+         ],
+      q(khz) => [
+         q(3332),
+         q(0),
+         ],
+      q(kia) => [
+         q(3333),
+         q(0),
+         ],
+      q(kib) => [
+         q(3334),
+         q(0),
+         ],
+      q(kic) => [
+         q(3335),
+         q(0),
+         ],
+      q(kid) => [
+         q(3336),
+         q(0),
+         ],
+      q(kie) => [
+         q(3337),
+         q(0),
+         ],
+      q(kif) => [
+         q(3338),
+         q(0),
+         ],
+      q(kig) => [
+         q(3339),
+         q(0),
+         ],
+      q(kih) => [
+         q(3340),
+         q(0),
+         ],
+      q(kii) => [
+         q(3341),
+         q(0),
+         ],
+      q(kij) => [
+         q(3342),
+         q(0),
+         ],
+      q(kik) => [
+         q(0224),
+         q(0),
+         ],
+      q(kil) => [
+         q(3343),
+         q(0),
+         ],
+      q(kim) => [
+         q(3344),
+         q(0),
+         ],
+      q(kin) => [
+         q(0225),
+         q(0),
+         ],
+      q(kio) => [
+         q(3345),
+         q(0),
+         ],
+      q(kip) => [
+         q(3346),
+         q(0),
+         ],
+      q(kiq) => [
+         q(3347),
+         q(0),
+         ],
+      q(kir) => [
+         q(0226),
+         q(0),
+         ],
+      q(kis) => [
+         q(3348),
+         q(0),
+         ],
+      q(kit) => [
+         q(3349),
+         q(0),
+         ],
+      q(kiu) => [
+         q(3350),
+         q(0),
+         ],
+      q(kiv) => [
+         q(3351),
+         q(0),
+         ],
+      q(kiw) => [
+         q(3352),
+         q(0),
+         ],
+      q(kix) => [
+         q(3353),
+         q(0),
+         ],
+      q(kiy) => [
+         q(3354),
+         q(0),
+         ],
+      q(kiz) => [
+         q(3355),
+         q(0),
+         ],
+      q(kja) => [
+         q(3356),
+         q(0),
+         ],
+      q(kjb) => [
+         q(3357),
+         q(0),
+         ],
+      q(kjc) => [
+         q(3358),
+         q(0),
+         ],
+      q(kjd) => [
+         q(3359),
+         q(0),
+         ],
+      q(kje) => [
+         q(3360),
+         q(0),
+         ],
+      q(kjf) => [
+         q(3361),
+         q(0),
+         ],
+      q(kjg) => [
+         q(3362),
+         q(0),
+         ],
+      q(kjh) => [
+         q(3363),
+         q(0),
+         ],
+      q(kji) => [
+         q(3364),
+         q(0),
+         ],
+      q(kjj) => [
+         q(3365),
+         q(0),
+         ],
+      q(kjk) => [
+         q(3366),
+         q(0),
+         ],
+      q(kjl) => [
+         q(3367),
+         q(0),
+         ],
+      q(kjm) => [
+         q(3368),
+         q(0),
+         ],
+      q(kjn) => [
+         q(3369),
+         q(0),
+         ],
+      q(kjo) => [
+         q(3370),
+         q(0),
+         ],
+      q(kjp) => [
+         q(3371),
+         q(0),
+         ],
+      q(kjq) => [
+         q(3372),
+         q(0),
+         ],
+      q(kjr) => [
+         q(3373),
+         q(0),
+         ],
+      q(kjs) => [
+         q(3374),
+         q(0),
+         ],
+      q(kjt) => [
+         q(3375),
+         q(0),
+         ],
+      q(kju) => [
+         q(3376),
+         q(0),
+         ],
+      q(kjx) => [
+         q(3377),
+         q(0),
+         ],
+      q(kjy) => [
+         q(3378),
+         q(0),
+         ],
+      q(kjz) => [
+         q(3379),
+         q(0),
+         ],
+      q(kka) => [
+         q(3380),
+         q(0),
+         ],
+      q(kkb) => [
+         q(3381),
+         q(0),
+         ],
+      q(kkc) => [
+         q(3382),
+         q(0),
+         ],
+      q(kkd) => [
+         q(3383),
+         q(0),
+         ],
+      q(kke) => [
+         q(3384),
+         q(0),
+         ],
+      q(kkf) => [
+         q(3385),
+         q(0),
+         ],
+      q(kkg) => [
+         q(3386),
+         q(0),
+         ],
+      q(kkh) => [
+         q(3387),
+         q(0),
+         ],
+      q(kki) => [
+         q(3388),
+         q(0),
+         ],
+      q(kkj) => [
+         q(3389),
+         q(0),
+         ],
+      q(kkk) => [
+         q(3390),
+         q(0),
+         ],
+      q(kkl) => [
+         q(3391),
+         q(0),
+         ],
+      q(kkm) => [
+         q(3392),
+         q(0),
+         ],
+      q(kkn) => [
+         q(3393),
+         q(0),
+         ],
+      q(kko) => [
+         q(3394),
+         q(0),
+         ],
+      q(kkp) => [
+         q(3395),
+         q(0),
+         ],
+      q(kkq) => [
+         q(3396),
+         q(0),
+         ],
+      q(kkr) => [
+         q(3397),
+         q(0),
+         ],
+      q(kks) => [
+         q(3398),
+         q(0),
+         ],
+      q(kkt) => [
+         q(3399),
+         q(0),
+         ],
+      q(kku) => [
+         q(3400),
+         q(0),
+         ],
+      q(kkv) => [
+         q(3401),
+         q(0),
+         ],
+      q(kkw) => [
+         q(3402),
+         q(0),
+         ],
+      q(kkx) => [
+         q(3403),
+         q(0),
+         ],
+      q(kky) => [
+         q(3404),
+         q(0),
+         ],
+      q(kkz) => [
+         q(3405),
+         q(0),
+         ],
+      q(kla) => [
+         q(3406),
+         q(0),
+         ],
+      q(klb) => [
+         q(3407),
+         q(0),
+         ],
+      q(klc) => [
+         q(3408),
+         q(0),
+         ],
+      q(kld) => [
+         q(3409),
+         q(0),
+         ],
+      q(kle) => [
+         q(3410),
+         q(0),
+         ],
+      q(klf) => [
+         q(3411),
+         q(0),
+         ],
+      q(klg) => [
+         q(3412),
+         q(0),
+         ],
+      q(klh) => [
+         q(3413),
+         q(0),
+         ],
+      q(kli) => [
+         q(3414),
+         q(0),
+         ],
+      q(klj) => [
+         q(3415),
+         q(0),
+         ],
+      q(klk) => [
+         q(3416),
+         q(0),
+         ],
+      q(kll) => [
+         q(3417),
+         q(0),
+         ],
+      q(klm) => [
+         q(3418),
+         q(0),
+         ],
+      q(kln) => [
+         q(3419),
+         q(0),
+         ],
+      q(klo) => [
+         q(3420),
+         q(0),
+         ],
+      q(klp) => [
+         q(3421),
+         q(0),
+         ],
+      q(klq) => [
+         q(3422),
+         q(0),
+         ],
+      q(klr) => [
+         q(3423),
+         q(0),
+         ],
+      q(kls) => [
+         q(3424),
+         q(0),
+         ],
+      q(klt) => [
+         q(3425),
+         q(0),
+         ],
+      q(klu) => [
+         q(3426),
+         q(0),
+         ],
+      q(klv) => [
+         q(3427),
+         q(0),
+         ],
+      q(klw) => [
+         q(3428),
+         q(0),
+         ],
+      q(klx) => [
+         q(3429),
+         q(0),
+         ],
+      q(kly) => [
+         q(3430),
+         q(0),
+         ],
+      q(klz) => [
+         q(3431),
+         q(0),
+         ],
+      q(kma) => [
+         q(3432),
+         q(0),
+         ],
+      q(kmb) => [
+         q(0227),
+         q(0),
+         ],
+      q(kmc) => [
+         q(3433),
+         q(0),
+         ],
+      q(kmd) => [
+         q(3434),
+         q(0),
+         ],
+      q(kme) => [
+         q(3435),
+         q(0),
+         ],
+      q(kmf) => [
+         q(3436),
+         q(0),
+         ],
+      q(kmg) => [
+         q(3437),
+         q(0),
+         ],
+      q(kmh) => [
+         q(3438),
+         q(0),
+         ],
+      q(kmi) => [
+         q(3439),
+         q(0),
+         ],
+      q(kmj) => [
+         q(3440),
+         q(0),
+         ],
+      q(kmk) => [
+         q(3441),
+         q(0),
+         ],
+      q(kml) => [
+         q(3442),
+         q(0),
+         ],
+      q(kmm) => [
+         q(3443),
+         q(0),
+         ],
+      q(kmn) => [
+         q(3444),
+         q(0),
+         ],
+      q(kmo) => [
+         q(3445),
+         q(0),
+         ],
+      q(kmp) => [
+         q(3446),
+         q(0),
+         ],
+      q(kmq) => [
+         q(3447),
+         q(0),
+         ],
+      q(kmr) => [
+         q(3448),
+         q(0),
+         ],
+      q(kms) => [
+         q(3449),
+         q(0),
+         ],
+      q(kmt) => [
+         q(3450),
+         q(0),
+         ],
+      q(kmu) => [
+         q(3451),
+         q(0),
+         ],
+      q(kmv) => [
+         q(3452),
+         q(0),
+         ],
+      q(kmw) => [
+         q(3453),
+         q(0),
+         ],
+      q(kmx) => [
+         q(3454),
+         q(0),
+         ],
+      q(kmy) => [
+         q(3455),
+         q(0),
+         ],
+      q(kmz) => [
+         q(3456),
+         q(0),
+         ],
+      q(kna) => [
+         q(3457),
+         q(0),
+         ],
+      q(knb) => [
+         q(3458),
+         q(0),
+         ],
+      q(knc) => [
+         q(3459),
+         q(0),
+         ],
+      q(knd) => [
+         q(3460),
+         q(0),
+         ],
+      q(kne) => [
+         q(3461),
+         q(0),
+         ],
+      q(knf) => [
+         q(3462),
+         q(0),
+         ],
+      q(kng) => [
+         q(3463),
+         q(0),
+         ],
+      q(kni) => [
+         q(3464),
+         q(0),
+         ],
+      q(knj) => [
+         q(3465),
+         q(0),
+         ],
+      q(knk) => [
+         q(3466),
+         q(0),
+         ],
+      q(knl) => [
+         q(3467),
+         q(0),
+         ],
+      q(knm) => [
+         q(3468),
+         q(0),
+         ],
+      q(knn) => [
+         q(3469),
+         q(0),
+         ],
+      q(kno) => [
+         q(3470),
+         q(0),
+         ],
+      q(knp) => [
+         q(3471),
+         q(0),
+         ],
+      q(knq) => [
+         q(3472),
+         q(0),
+         ],
+      q(knr) => [
+         q(3473),
+         q(0),
+         ],
+      q(kns) => [
+         q(3474),
+         q(0),
+         ],
+      q(knt) => [
+         q(3475),
+         q(0),
+         ],
+      q(knu) => [
+         q(3476),
+         q(0),
+         ],
+      q(knv) => [
+         q(3477),
+         q(0),
+         ],
+      q(knw) => [
+         q(3478),
+         q(0),
+         ],
+      q(knx) => [
+         q(3479),
+         q(0),
+         ],
+      q(kny) => [
+         q(3480),
+         q(0),
+         ],
+      q(knz) => [
+         q(3481),
+         q(0),
+         ],
+      q(koa) => [
+         q(3482),
+         q(0),
+         ],
+      q(koc) => [
+         q(3483),
+         q(0),
+         ],
+      q(kod) => [
+         q(3484),
+         q(0),
+         ],
+      q(koe) => [
+         q(3485),
+         q(0),
+         ],
+      q(kof) => [
+         q(3486),
+         q(0),
+         ],
+      q(kog) => [
+         q(3487),
+         q(0),
+         ],
+      q(koh) => [
+         q(3488),
+         q(0),
+         ],
+      q(koi) => [
+         q(3489),
+         q(0),
+         ],
+      q(koj) => [
+         q(3490),
+         q(0),
+         ],
+      q(kok) => [
+         q(0228),
+         q(1),
+         ],
+      q(kol) => [
+         q(3491),
+         q(0),
+         ],
+      q(kom) => [
+         q(0229),
+         q(0),
+         ],
+      q(kon) => [
+         q(0230),
+         q(0),
+         ],
+      q(koo) => [
+         q(3492),
+         q(0),
+         ],
+      q(kop) => [
+         q(3493),
+         q(0),
+         ],
+      q(koq) => [
+         q(3494),
+         q(0),
+         ],
+      q(kor) => [
+         q(0231),
+         q(0),
+         ],
+      q(kos) => [
+         q(0232),
+         q(0),
+         ],
+      q(kot) => [
+         q(3495),
+         q(0),
+         ],
+      q(kou) => [
+         q(3496),
+         q(0),
+         ],
+      q(kov) => [
+         q(3497),
+         q(0),
+         ],
+      q(kow) => [
+         q(3498),
+         q(0),
+         ],
+      q(kox) => [
+         q(3499),
+         q(0),
+         ],
+      q(koy) => [
+         q(3500),
+         q(0),
+         ],
+      q(koz) => [
+         q(3501),
+         q(0),
+         ],
+      q(kpa) => [
+         q(3502),
+         q(0),
+         ],
+      q(kpb) => [
+         q(3503),
+         q(0),
+         ],
+      q(kpc) => [
+         q(3504),
+         q(0),
+         ],
+      q(kpd) => [
+         q(3505),
+         q(0),
+         ],
+      q(kpe) => [
+         q(0233),
+         q(0),
+         ],
+      q(kpf) => [
+         q(3506),
+         q(0),
+         ],
+      q(kpg) => [
+         q(3507),
+         q(0),
+         ],
+      q(kph) => [
+         q(3508),
+         q(0),
+         ],
+      q(kpi) => [
+         q(3509),
+         q(0),
+         ],
+      q(kpj) => [
+         q(3510),
+         q(0),
+         ],
+      q(kpk) => [
+         q(3511),
+         q(0),
+         ],
+      q(kpl) => [
+         q(3512),
+         q(0),
+         ],
+      q(kpm) => [
+         q(3513),
+         q(0),
+         ],
+      q(kpn) => [
+         q(3514),
+         q(0),
+         ],
+      q(kpo) => [
+         q(3515),
+         q(0),
+         ],
+      q(kpq) => [
+         q(3516),
+         q(0),
+         ],
+      q(kpr) => [
+         q(3517),
+         q(0),
+         ],
+      q(kps) => [
+         q(3518),
+         q(0),
+         ],
+      q(kpt) => [
+         q(3519),
+         q(0),
+         ],
+      q(kpu) => [
+         q(3520),
+         q(0),
+         ],
+      q(kpv) => [
+         q(3521),
+         q(0),
+         ],
+      q(kpw) => [
+         q(3522),
+         q(0),
+         ],
+      q(kpx) => [
+         q(3523),
+         q(0),
+         ],
+      q(kpy) => [
+         q(3524),
+         q(0),
+         ],
+      q(kpz) => [
+         q(3525),
+         q(0),
+         ],
+      q(kqa) => [
+         q(3526),
+         q(0),
+         ],
+      q(kqb) => [
+         q(3527),
+         q(0),
+         ],
+      q(kqc) => [
+         q(3528),
+         q(0),
+         ],
+      q(kqd) => [
+         q(3529),
+         q(0),
+         ],
+      q(kqe) => [
+         q(3530),
+         q(0),
+         ],
+      q(kqf) => [
+         q(3531),
+         q(0),
+         ],
+      q(kqg) => [
+         q(3532),
+         q(0),
+         ],
+      q(kqh) => [
+         q(3533),
+         q(0),
+         ],
+      q(kqi) => [
+         q(3534),
+         q(0),
+         ],
+      q(kqj) => [
+         q(3535),
+         q(0),
+         ],
+      q(kqk) => [
+         q(3536),
+         q(0),
+         ],
+      q(kql) => [
+         q(3537),
+         q(0),
+         ],
+      q(kqm) => [
+         q(3538),
+         q(0),
+         ],
+      q(kqn) => [
+         q(3539),
+         q(0),
+         ],
+      q(kqo) => [
+         q(3540),
+         q(0),
+         ],
+      q(kqp) => [
+         q(3541),
+         q(0),
+         ],
+      q(kqq) => [
+         q(3542),
+         q(0),
+         ],
+      q(kqr) => [
+         q(3543),
+         q(0),
+         ],
+      q(kqs) => [
+         q(3544),
+         q(0),
+         ],
+      q(kqt) => [
+         q(3545),
+         q(0),
+         ],
+      q(kqu) => [
+         q(3546),
+         q(0),
+         ],
+      q(kqv) => [
+         q(3547),
+         q(0),
+         ],
+      q(kqw) => [
+         q(3548),
+         q(0),
+         ],
+      q(kqx) => [
+         q(3549),
+         q(0),
+         ],
+      q(kqy) => [
+         q(3550),
+         q(0),
+         ],
+      q(kqz) => [
+         q(3551),
+         q(0),
+         ],
+      q(kra) => [
+         q(3552),
+         q(0),
+         ],
+      q(krb) => [
+         q(3553),
+         q(0),
+         ],
+      q(krc) => [
+         q(0234),
+         q(0),
+         ],
+      q(krd) => [
+         q(3554),
+         q(0),
+         ],
+      q(kre) => [
+         q(3555),
+         q(0),
+         ],
+      q(krf) => [
+         q(3556),
+         q(0),
+         ],
+      q(krh) => [
+         q(3557),
+         q(0),
+         ],
+      q(kri) => [
+         q(3558),
+         q(0),
+         ],
+      q(krj) => [
+         q(3559),
+         q(0),
+         ],
+      q(krk) => [
+         q(3560),
+         q(0),
+         ],
+      q(krl) => [
+         q(0235),
+         q(0),
+         ],
+      q(krm) => [
+         q(3561),
+         q(0),
+         ],
+      q(krn) => [
+         q(3562),
+         q(0),
+         ],
+      q(kro) => [
+         q(0236),
+         q(0),
+         ],
+      q(krp) => [
+         q(3563),
+         q(0),
+         ],
+      q(krr) => [
+         q(3564),
+         q(0),
+         ],
+      q(krs) => [
+         q(3565),
+         q(0),
+         ],
+      q(krt) => [
+         q(3566),
+         q(0),
+         ],
+      q(kru) => [
+         q(0237),
+         q(0),
+         ],
+      q(krv) => [
+         q(3567),
+         q(0),
+         ],
+      q(krw) => [
+         q(3568),
+         q(0),
+         ],
+      q(krx) => [
+         q(3569),
+         q(0),
+         ],
+      q(kry) => [
+         q(3570),
+         q(0),
+         ],
+      q(krz) => [
+         q(3571),
+         q(0),
+         ],
+      q(ksa) => [
+         q(3572),
+         q(0),
+         ],
+      q(ksb) => [
+         q(3573),
+         q(0),
+         ],
+      q(ksc) => [
+         q(3574),
+         q(0),
+         ],
+      q(ksd) => [
+         q(3575),
+         q(0),
+         ],
+      q(kse) => [
+         q(3576),
+         q(0),
+         ],
+      q(ksf) => [
+         q(3577),
+         q(0),
+         ],
+      q(ksg) => [
+         q(3578),
+         q(0),
+         ],
+      q(ksh) => [
+         q(3579),
+         q(0),
+         ],
+      q(ksi) => [
+         q(3580),
+         q(0),
+         ],
+      q(ksj) => [
+         q(3581),
+         q(0),
+         ],
+      q(ksk) => [
+         q(3582),
+         q(0),
+         ],
+      q(ksl) => [
+         q(3583),
+         q(0),
+         ],
+      q(ksm) => [
+         q(3584),
+         q(0),
+         ],
+      q(ksn) => [
+         q(3585),
+         q(0),
+         ],
+      q(kso) => [
+         q(3586),
+         q(0),
+         ],
+      q(ksp) => [
+         q(3587),
+         q(0),
+         ],
+      q(ksq) => [
+         q(3588),
+         q(0),
+         ],
+      q(ksr) => [
+         q(3589),
+         q(0),
+         ],
+      q(kss) => [
+         q(3590),
+         q(0),
+         ],
+      q(kst) => [
+         q(3591),
+         q(0),
+         ],
+      q(ksu) => [
+         q(3592),
+         q(0),
+         ],
+      q(ksv) => [
+         q(3593),
+         q(0),
+         ],
+      q(ksw) => [
+         q(3594),
+         q(0),
+         ],
+      q(ksx) => [
+         q(3595),
+         q(0),
+         ],
+      q(ksy) => [
+         q(3596),
+         q(0),
+         ],
+      q(ksz) => [
+         q(3597),
+         q(0),
+         ],
+      q(kta) => [
+         q(3598),
+         q(0),
+         ],
+      q(ktb) => [
+         q(3599),
+         q(0),
+         ],
+      q(ktc) => [
+         q(3600),
+         q(0),
+         ],
+      q(ktd) => [
+         q(3601),
+         q(0),
+         ],
+      q(kte) => [
+         q(3602),
+         q(0),
+         ],
+      q(ktf) => [
+         q(3603),
+         q(0),
+         ],
+      q(ktg) => [
+         q(3604),
+         q(0),
+         ],
+      q(kth) => [
+         q(3605),
+         q(0),
+         ],
+      q(kti) => [
+         q(3606),
+         q(0),
+         ],
+      q(ktj) => [
+         q(3607),
+         q(0),
+         ],
+      q(ktk) => [
+         q(3608),
+         q(0),
+         ],
+      q(ktl) => [
+         q(3609),
+         q(0),
+         ],
+      q(ktm) => [
+         q(3610),
+         q(0),
+         ],
+      q(ktn) => [
+         q(3611),
+         q(0),
+         ],
+      q(kto) => [
+         q(3612),
+         q(0),
+         ],
+      q(ktp) => [
+         q(3613),
+         q(0),
+         ],
+      q(ktq) => [
+         q(3614),
+         q(0),
+         ],
+      q(ktr) => [
+         q(3615),
+         q(0),
+         ],
+      q(kts) => [
+         q(3616),
+         q(0),
+         ],
+      q(ktt) => [
+         q(3617),
+         q(0),
+         ],
+      q(ktu) => [
+         q(3618),
+         q(0),
+         ],
+      q(ktv) => [
+         q(3619),
+         q(0),
+         ],
+      q(ktw) => [
+         q(3620),
+         q(0),
+         ],
+      q(ktx) => [
+         q(3621),
+         q(0),
+         ],
+      q(kty) => [
+         q(3622),
+         q(0),
+         ],
+      q(ktz) => [
+         q(3623),
+         q(0),
+         ],
+      q(kua) => [
+         q(0238),
+         q(0),
+         ],
+      q(kub) => [
+         q(3624),
+         q(0),
+         ],
+      q(kuc) => [
+         q(3625),
+         q(0),
+         ],
+      q(kud) => [
+         q(3626),
+         q(0),
+         ],
+      q(kue) => [
+         q(3627),
+         q(0),
+         ],
+      q(kuf) => [
+         q(3628),
+         q(0),
+         ],
+      q(kug) => [
+         q(3629),
+         q(0),
+         ],
+      q(kuh) => [
+         q(3630),
+         q(0),
+         ],
+      q(kui) => [
+         q(3631),
+         q(0),
+         ],
+      q(kuj) => [
+         q(3632),
+         q(0),
+         ],
+      q(kuk) => [
+         q(3633),
+         q(0),
+         ],
+      q(kul) => [
+         q(3634),
+         q(0),
+         ],
+      q(kum) => [
+         q(0239),
+         q(0),
+         ],
+      q(kun) => [
+         q(3635),
+         q(0),
+         ],
+      q(kuo) => [
+         q(3636),
+         q(0),
+         ],
+      q(kup) => [
+         q(3637),
+         q(0),
+         ],
+      q(kuq) => [
+         q(3298),
+         q(0),
+         ],
+      q(kur) => [
+         q(0240),
+         q(0),
+         ],
+      q(kus) => [
+         q(3638),
+         q(0),
+         ],
+      q(kut) => [
+         q(0241),
+         q(0),
+         ],
+      q(kuu) => [
+         q(3639),
+         q(0),
+         ],
+      q(kuv) => [
+         q(3640),
+         q(0),
+         ],
+      q(kuw) => [
+         q(3641),
+         q(0),
+         ],
+      q(kux) => [
+         q(3642),
+         q(0),
+         ],
+      q(kuy) => [
+         q(3643),
+         q(0),
+         ],
+      q(kuz) => [
+         q(3644),
+         q(0),
+         ],
+      q(kva) => [
+         q(3645),
+         q(0),
+         ],
+      q(kvb) => [
+         q(3646),
+         q(0),
+         ],
+      q(kvc) => [
+         q(3647),
+         q(0),
+         ],
+      q(kvd) => [
+         q(3648),
+         q(0),
+         ],
+      q(kve) => [
+         q(3649),
+         q(0),
+         ],
+      q(kvf) => [
+         q(3650),
+         q(0),
+         ],
+      q(kvg) => [
+         q(3651),
+         q(0),
+         ],
+      q(kvh) => [
+         q(3652),
+         q(0),
+         ],
+      q(kvi) => [
+         q(3653),
+         q(0),
+         ],
+      q(kvj) => [
+         q(3654),
+         q(0),
+         ],
+      q(kvk) => [
+         q(3655),
+         q(0),
+         ],
+      q(kvl) => [
+         q(3656),
+         q(0),
+         ],
+      q(kvm) => [
+         q(3657),
+         q(0),
+         ],
+      q(kvn) => [
+         q(3658),
+         q(0),
+         ],
+      q(kvo) => [
+         q(3659),
+         q(0),
+         ],
+      q(kvp) => [
+         q(3660),
+         q(0),
+         ],
+      q(kvq) => [
+         q(3661),
+         q(0),
+         ],
+      q(kvr) => [
+         q(3662),
+         q(0),
+         ],
+      q(kvs) => [
+         q(3663),
+         q(0),
+         ],
+      q(kvt) => [
+         q(3664),
+         q(0),
+         ],
+      q(kvu) => [
+         q(3665),
+         q(0),
+         ],
+      q(kvv) => [
+         q(3666),
+         q(0),
+         ],
+      q(kvw) => [
+         q(3667),
+         q(0),
+         ],
+      q(kvx) => [
+         q(3668),
+         q(0),
+         ],
+      q(kvy) => [
+         q(3669),
+         q(0),
+         ],
+      q(kvz) => [
+         q(3670),
+         q(0),
+         ],
+      q(kwa) => [
+         q(3671),
+         q(0),
+         ],
+      q(kwb) => [
+         q(3672),
+         q(0),
+         ],
+      q(kwc) => [
+         q(3673),
+         q(0),
+         ],
+      q(kwd) => [
+         q(3674),
+         q(0),
+         ],
+      q(kwe) => [
+         q(3675),
+         q(0),
+         ],
+      q(kwf) => [
+         q(3676),
+         q(0),
+         ],
+      q(kwg) => [
+         q(3677),
+         q(0),
+         ],
+      q(kwh) => [
+         q(3678),
+         q(0),
+         ],
+      q(kwi) => [
+         q(3679),
+         q(0),
+         ],
+      q(kwj) => [
+         q(3680),
+         q(0),
+         ],
+      q(kwk) => [
+         q(3681),
+         q(0),
+         ],
+      q(kwl) => [
+         q(3682),
+         q(0),
+         ],
+      q(kwm) => [
+         q(3683),
+         q(0),
+         ],
+      q(kwn) => [
+         q(3684),
+         q(0),
+         ],
+      q(kwo) => [
+         q(3685),
+         q(0),
+         ],
+      q(kwp) => [
+         q(3686),
+         q(0),
+         ],
+      q(kwq) => [
+         q(3687),
+         q(0),
+         ],
+      q(kwr) => [
+         q(3688),
+         q(0),
+         ],
+      q(kws) => [
+         q(3689),
+         q(0),
+         ],
+      q(kwt) => [
+         q(3690),
+         q(0),
+         ],
+      q(kwu) => [
+         q(3691),
+         q(0),
+         ],
+      q(kwv) => [
+         q(3692),
+         q(0),
+         ],
+      q(kww) => [
+         q(3693),
+         q(0),
+         ],
+      q(kwx) => [
+         q(3694),
+         q(0),
+         ],
+      q(kwy) => [
+         q(3695),
+         q(0),
+         ],
+      q(kwz) => [
+         q(3696),
+         q(0),
+         ],
+      q(kxa) => [
+         q(3697),
+         q(0),
+         ],
+      q(kxb) => [
+         q(3698),
+         q(0),
+         ],
+      q(kxc) => [
+         q(3699),
+         q(0),
+         ],
+      q(kxd) => [
+         q(3700),
+         q(0),
+         ],
+      q(kxe) => [
+         q(3701),
+         q(0),
+         ],
+      q(kxf) => [
+         q(3702),
+         q(0),
+         ],
+      q(kxh) => [
+         q(3703),
+         q(0),
+         ],
+      q(kxi) => [
+         q(3704),
+         q(0),
+         ],
+      q(kxj) => [
+         q(3705),
+         q(0),
+         ],
+      q(kxk) => [
+         q(3706),
+         q(0),
+         ],
+      q(kxl) => [
+         q(3707),
+         q(0),
+         ],
+      q(kxm) => [
+         q(3708),
+         q(0),
+         ],
+      q(kxn) => [
+         q(3709),
+         q(0),
+         ],
+      q(kxo) => [
+         q(3710),
+         q(0),
+         ],
+      q(kxp) => [
+         q(3711),
+         q(0),
+         ],
+      q(kxq) => [
+         q(3712),
+         q(0),
+         ],
+      q(kxr) => [
+         q(3713),
+         q(0),
+         ],
+      q(kxs) => [
+         q(3714),
+         q(0),
+         ],
+      q(kxt) => [
+         q(3715),
+         q(0),
+         ],
+      q(kxu) => [
+         q(3716),
+         q(0),
+         ],
+      q(kxv) => [
+         q(3717),
+         q(0),
+         ],
+      q(kxw) => [
+         q(3718),
+         q(0),
+         ],
+      q(kxx) => [
+         q(3719),
+         q(0),
+         ],
+      q(kxy) => [
+         q(3720),
+         q(0),
+         ],
+      q(kxz) => [
+         q(3721),
+         q(0),
+         ],
+      q(kya) => [
+         q(3722),
+         q(0),
+         ],
+      q(kyb) => [
+         q(3723),
+         q(0),
+         ],
+      q(kyc) => [
+         q(3724),
+         q(0),
+         ],
+      q(kyd) => [
+         q(3725),
+         q(0),
+         ],
+      q(kye) => [
+         q(3726),
+         q(0),
+         ],
+      q(kyf) => [
+         q(3727),
+         q(0),
+         ],
+      q(kyg) => [
+         q(3728),
+         q(0),
+         ],
+      q(kyh) => [
+         q(3729),
+         q(0),
+         ],
+      q(kyi) => [
+         q(3730),
+         q(0),
+         ],
+      q(kyj) => [
+         q(3731),
+         q(0),
+         ],
+      q(kyk) => [
+         q(3732),
+         q(0),
+         ],
+      q(kyl) => [
+         q(3733),
+         q(0),
+         ],
+      q(kym) => [
+         q(3734),
+         q(0),
+         ],
+      q(kyn) => [
+         q(3735),
+         q(0),
+         ],
+      q(kyo) => [
+         q(3736),
+         q(0),
+         ],
+      q(kyp) => [
+         q(3737),
+         q(0),
+         ],
+      q(kyq) => [
+         q(3738),
+         q(0),
+         ],
+      q(kyr) => [
+         q(3739),
+         q(0),
+         ],
+      q(kys) => [
+         q(3740),
+         q(0),
+         ],
+      q(kyt) => [
+         q(3741),
+         q(0),
+         ],
+      q(kyu) => [
+         q(3742),
+         q(0),
+         ],
+      q(kyv) => [
+         q(3743),
+         q(0),
+         ],
+      q(kyw) => [
+         q(3744),
+         q(0),
+         ],
+      q(kyx) => [
+         q(3745),
+         q(0),
+         ],
+      q(kyy) => [
+         q(3746),
+         q(0),
+         ],
+      q(kyz) => [
+         q(3747),
+         q(0),
+         ],
+      q(kza) => [
+         q(3748),
+         q(0),
+         ],
+      q(kzb) => [
+         q(3749),
+         q(0),
+         ],
+      q(kzc) => [
+         q(3750),
+         q(0),
+         ],
+      q(kzd) => [
+         q(3751),
+         q(0),
+         ],
+      q(kze) => [
+         q(3752),
+         q(0),
+         ],
+      q(kzf) => [
+         q(3753),
+         q(0),
+         ],
+      q(kzg) => [
+         q(3754),
+         q(0),
+         ],
+      q(kzi) => [
+         q(3755),
+         q(0),
+         ],
+      q(kzj) => [
+         q(3756),
+         q(0),
+         ],
+      q(kzk) => [
+         q(3757),
+         q(0),
+         ],
+      q(kzl) => [
+         q(3758),
+         q(0),
+         ],
+      q(kzm) => [
+         q(3759),
+         q(0),
+         ],
+      q(kzn) => [
+         q(3760),
+         q(0),
+         ],
+      q(kzo) => [
+         q(3761),
+         q(0),
+         ],
+      q(kzp) => [
+         q(3762),
+         q(0),
+         ],
+      q(kzq) => [
+         q(3763),
+         q(0),
+         ],
+      q(kzr) => [
+         q(3764),
+         q(0),
+         ],
+      q(kzs) => [
+         q(3765),
+         q(0),
+         ],
+      q(kzt) => [
+         q(3766),
+         q(0),
+         ],
+      q(kzu) => [
+         q(3767),
+         q(0),
+         ],
+      q(kzv) => [
+         q(3768),
+         q(0),
+         ],
+      q(kzw) => [
+         q(3769),
+         q(0),
+         ],
+      q(kzx) => [
+         q(3770),
+         q(0),
+         ],
+      q(kzy) => [
+         q(3771),
+         q(0),
+         ],
+      q(kzz) => [
+         q(3772),
+         q(0),
+         ],
+      q(laa) => [
+         q(3773),
+         q(0),
+         ],
+      q(lab) => [
+         q(3774),
+         q(0),
+         ],
+      q(lac) => [
+         q(3775),
+         q(0),
+         ],
+      q(lad) => [
+         q(0242),
+         q(0),
+         ],
+      q(lae) => [
+         q(3776),
+         q(0),
+         ],
+      q(laf) => [
+         q(3777),
+         q(0),
+         ],
+      q(lag) => [
+         q(3778),
+         q(0),
+         ],
+      q(lah) => [
+         q(0243),
+         q(0),
+         ],
+      q(lai) => [
+         q(3779),
+         q(0),
+         ],
+      q(laj) => [
+         q(3780),
+         q(0),
+         ],
+      q(lak) => [
+         q(3781),
+         q(0),
+         ],
+      q(lal) => [
+         q(3782),
+         q(0),
+         ],
+      q(lam) => [
+         q(0244),
+         q(0),
+         ],
+      q(lan) => [
+         q(3783),
+         q(0),
+         ],
+      q(lao) => [
+         q(0245),
+         q(0),
+         ],
+      q(lap) => [
+         q(3784),
+         q(0),
+         ],
+      q(laq) => [
+         q(3785),
+         q(0),
+         ],
+      q(lar) => [
+         q(3786),
+         q(0),
+         ],
+      q(las) => [
+         q(3787),
+         q(0),
+         ],
+      q(lat) => [
+         q(0246),
+         q(0),
+         ],
+      q(lau) => [
+         q(3788),
+         q(0),
+         ],
+      q(lav) => [
+         q(0247),
+         q(0),
+         ],
+      q(law) => [
+         q(3789),
+         q(0),
+         ],
+      q(lax) => [
+         q(3790),
+         q(0),
+         ],
+      q(lay) => [
+         q(3791),
+         q(0),
+         ],
+      q(laz) => [
+         q(3792),
+         q(0),
+         ],
+      q(lba) => [
+         q(3793),
+         q(0),
+         ],
+      q(lbb) => [
+         q(3794),
+         q(0),
+         ],
+      q(lbc) => [
+         q(3795),
+         q(0),
+         ],
+      q(lbe) => [
+         q(3796),
+         q(0),
+         ],
+      q(lbf) => [
+         q(3797),
+         q(0),
+         ],
+      q(lbg) => [
+         q(3798),
+         q(0),
+         ],
+      q(lbi) => [
+         q(3799),
+         q(0),
+         ],
+      q(lbj) => [
+         q(3800),
+         q(0),
+         ],
+      q(lbk) => [
+         q(3801),
+         q(0),
+         ],
+      q(lbl) => [
+         q(3802),
+         q(0),
+         ],
+      q(lbm) => [
+         q(3803),
+         q(0),
+         ],
+      q(lbn) => [
+         q(3804),
+         q(0),
+         ],
+      q(lbo) => [
+         q(3805),
+         q(0),
+         ],
+      q(lbq) => [
+         q(3806),
+         q(0),
+         ],
+      q(lbr) => [
+         q(3807),
+         q(0),
+         ],
+      q(lbs) => [
+         q(3808),
+         q(0),
+         ],
+      q(lbt) => [
+         q(3809),
+         q(0),
+         ],
+      q(lbu) => [
+         q(3810),
+         q(0),
+         ],
+      q(lbv) => [
+         q(3811),
+         q(0),
+         ],
+      q(lbw) => [
+         q(3812),
+         q(0),
+         ],
+      q(lbx) => [
+         q(3813),
+         q(0),
+         ],
+      q(lby) => [
+         q(3814),
+         q(0),
+         ],
+      q(lbz) => [
+         q(3815),
+         q(0),
+         ],
+      q(lcc) => [
+         q(3816),
+         q(0),
+         ],
+      q(lcd) => [
+         q(3817),
+         q(0),
+         ],
+      q(lce) => [
+         q(3818),
+         q(0),
+         ],
+      q(lcf) => [
+         q(3819),
+         q(0),
+         ],
+      q(lch) => [
+         q(3820),
+         q(0),
+         ],
+      q(lcl) => [
+         q(3821),
+         q(0),
+         ],
+      q(lcm) => [
+         q(3822),
+         q(0),
+         ],
+      q(lcp) => [
+         q(3823),
+         q(0),
+         ],
+      q(lcs) => [
+         q(3824),
+         q(0),
+         ],
+      q(ldb) => [
+         q(3825),
+         q(0),
+         ],
+      q(ldd) => [
+         q(3826),
+         q(0),
+         ],
+      q(ldg) => [
+         q(3827),
+         q(0),
+         ],
+      q(ldh) => [
+         q(3828),
+         q(0),
+         ],
+      q(ldi) => [
+         q(3829),
+         q(0),
+         ],
+      q(ldj) => [
+         q(3830),
+         q(0),
+         ],
+      q(ldk) => [
+         q(3831),
+         q(0),
+         ],
+      q(ldl) => [
+         q(3832),
+         q(0),
+         ],
+      q(ldm) => [
+         q(3833),
+         q(0),
+         ],
+      q(ldn) => [
+         q(3834),
+         q(0),
+         ],
+      q(ldo) => [
+         q(3835),
+         q(0),
+         ],
+      q(ldp) => [
+         q(3836),
+         q(0),
+         ],
+      q(ldq) => [
+         q(3837),
+         q(0),
+         ],
+      q(lea) => [
+         q(3838),
+         q(0),
+         ],
+      q(leb) => [
+         q(3839),
+         q(0),
+         ],
+      q(lec) => [
+         q(3840),
+         q(0),
+         ],
+      q(led) => [
+         q(3841),
+         q(0),
+         ],
+      q(lee) => [
+         q(3842),
+         q(0),
+         ],
+      q(lef) => [
+         q(3843),
+         q(0),
+         ],
+      q(leg) => [
+         q(3844),
+         q(0),
+         ],
+      q(leh) => [
+         q(3845),
+         q(0),
+         ],
+      q(lei) => [
+         q(3846),
+         q(0),
+         ],
+      q(lej) => [
+         q(3847),
+         q(0),
+         ],
+      q(lek) => [
+         q(3848),
+         q(0),
+         ],
+      q(lel) => [
+         q(3849),
+         q(0),
+         ],
+      q(lem) => [
+         q(3850),
+         q(0),
+         ],
+      q(len) => [
+         q(3851),
+         q(0),
+         ],
+      q(leo) => [
+         q(3852),
+         q(0),
+         ],
+      q(lep) => [
+         q(3853),
+         q(0),
+         ],
+      q(leq) => [
+         q(3854),
+         q(0),
+         ],
+      q(ler) => [
+         q(3855),
+         q(0),
+         ],
+      q(les) => [
+         q(3856),
+         q(0),
+         ],
+      q(let) => [
+         q(3857),
+         q(0),
+         ],
+      q(leu) => [
+         q(3858),
+         q(0),
+         ],
+      q(lev) => [
+         q(3859),
+         q(0),
+         ],
+      q(lew) => [
+         q(3860),
+         q(0),
+         ],
+      q(lex) => [
+         q(3861),
+         q(0),
+         ],
+      q(ley) => [
+         q(3862),
+         q(0),
+         ],
+      q(lez) => [
+         q(0248),
+         q(0),
+         ],
+      q(lfa) => [
+         q(3863),
+         q(0),
+         ],
+      q(lfn) => [
+         q(3864),
+         q(0),
+         ],
+      q(lga) => [
+         q(3865),
+         q(0),
+         ],
+      q(lgb) => [
+         q(3866),
+         q(0),
+         ],
+      q(lgg) => [
+         q(3867),
+         q(0),
+         ],
+      q(lgh) => [
+         q(3868),
+         q(0),
+         ],
+      q(lgi) => [
+         q(3869),
+         q(0),
+         ],
+      q(lgk) => [
+         q(3870),
+         q(0),
+         ],
+      q(lgl) => [
+         q(3871),
+         q(0),
+         ],
+      q(lgm) => [
+         q(3872),
+         q(0),
+         ],
+      q(lgn) => [
+         q(3873),
+         q(0),
+         ],
+      q(lgq) => [
+         q(3874),
+         q(0),
+         ],
+      q(lgr) => [
+         q(3875),
+         q(0),
+         ],
+      q(lgt) => [
+         q(3876),
+         q(0),
+         ],
+      q(lgu) => [
+         q(3877),
+         q(0),
+         ],
+      q(lgz) => [
+         q(3878),
+         q(0),
+         ],
+      q(lha) => [
+         q(3879),
+         q(0),
+         ],
+      q(lhh) => [
+         q(3880),
+         q(0),
+         ],
+      q(lhi) => [
+         q(3881),
+         q(0),
+         ],
+      q(lhl) => [
+         q(3882),
+         q(0),
+         ],
+      q(lhm) => [
+         q(3883),
+         q(0),
+         ],
+      q(lhn) => [
+         q(3884),
+         q(0),
+         ],
+      q(lhp) => [
+         q(3885),
+         q(0),
+         ],
+      q(lhs) => [
+         q(3886),
+         q(0),
+         ],
+      q(lht) => [
+         q(3887),
+         q(0),
+         ],
+      q(lhu) => [
+         q(3888),
+         q(0),
+         ],
+      q(lia) => [
+         q(3889),
+         q(0),
+         ],
+      q(lib) => [
+         q(3890),
+         q(0),
+         ],
+      q(lic) => [
+         q(3891),
+         q(0),
+         ],
+      q(lid) => [
+         q(3892),
+         q(0),
+         ],
+      q(lie) => [
+         q(3893),
+         q(0),
+         ],
+      q(lif) => [
+         q(3894),
+         q(0),
+         ],
+      q(lig) => [
+         q(3895),
+         q(0),
+         ],
+      q(lih) => [
+         q(3896),
+         q(0),
+         ],
+      q(lii) => [
+         q(3897),
+         q(0),
+         ],
+      q(lij) => [
+         q(3898),
+         q(0),
+         ],
+      q(lik) => [
+         q(3899),
+         q(0),
+         ],
+      q(lil) => [
+         q(3900),
+         q(0),
+         ],
+      q(lim) => [
+         q(0249),
+         q(0),
+         ],
+      q(lin) => [
+         q(0250),
+         q(0),
+         ],
+      q(lio) => [
+         q(3901),
+         q(0),
+         ],
+      q(lip) => [
+         q(3902),
+         q(0),
+         ],
+      q(liq) => [
+         q(3903),
+         q(0),
+         ],
+      q(lir) => [
+         q(3904),
+         q(0),
+         ],
+      q(lis) => [
+         q(3905),
+         q(0),
+         ],
+      q(lit) => [
+         q(0251),
+         q(0),
+         ],
+      q(liu) => [
+         q(3906),
+         q(0),
+         ],
+      q(liv) => [
+         q(3907),
+         q(0),
+         ],
+      q(liw) => [
+         q(3908),
+         q(0),
+         ],
+      q(lix) => [
+         q(3909),
+         q(0),
+         ],
+      q(liy) => [
+         q(3910),
+         q(0),
+         ],
+      q(liz) => [
+         q(3911),
+         q(0),
+         ],
+      q(lje) => [
+         q(3912),
+         q(0),
+         ],
+      q(lji) => [
+         q(3913),
+         q(0),
+         ],
+      q(ljl) => [
+         q(3914),
+         q(0),
+         ],
+      q(ljp) => [
+         q(3915),
+         q(0),
+         ],
+      q(lka) => [
+         q(3916),
+         q(0),
+         ],
+      q(lkb) => [
+         q(3917),
+         q(0),
+         ],
+      q(lkc) => [
+         q(3918),
+         q(0),
+         ],
+      q(lkd) => [
+         q(3919),
+         q(0),
+         ],
+      q(lke) => [
+         q(3920),
+         q(0),
+         ],
+      q(lkh) => [
+         q(3921),
+         q(0),
+         ],
+      q(lki) => [
+         q(3922),
+         q(0),
+         ],
+      q(lkj) => [
+         q(3923),
+         q(0),
+         ],
+      q(lkl) => [
+         q(3924),
+         q(0),
+         ],
+      q(lkn) => [
+         q(3925),
+         q(0),
+         ],
+      q(lko) => [
+         q(3926),
+         q(0),
+         ],
+      q(lkr) => [
+         q(3927),
+         q(0),
+         ],
+      q(lks) => [
+         q(3928),
+         q(0),
+         ],
+      q(lkt) => [
+         q(3929),
+         q(0),
+         ],
+      q(lky) => [
+         q(3930),
+         q(0),
+         ],
+      q(lla) => [
+         q(3931),
+         q(0),
+         ],
+      q(llb) => [
+         q(3932),
+         q(0),
+         ],
+      q(llc) => [
+         q(3933),
+         q(0),
+         ],
+      q(lld) => [
+         q(3934),
+         q(0),
+         ],
+      q(lle) => [
+         q(3935),
+         q(0),
+         ],
+      q(llf) => [
+         q(3936),
+         q(0),
+         ],
+      q(llg) => [
+         q(3937),
+         q(0),
+         ],
+      q(llh) => [
+         q(3938),
+         q(0),
+         ],
+      q(lli) => [
+         q(3939),
+         q(0),
+         ],
+      q(llj) => [
+         q(3940),
+         q(0),
+         ],
+      q(llk) => [
+         q(3941),
+         q(0),
+         ],
+      q(lll) => [
+         q(3942),
+         q(0),
+         ],
+      q(llm) => [
+         q(3943),
+         q(0),
+         ],
+      q(lln) => [
+         q(3944),
+         q(0),
+         ],
+      q(llo) => [
+         q(3945),
+         q(0),
+         ],
+      q(llp) => [
+         q(3946),
+         q(0),
+         ],
+      q(llq) => [
+         q(3947),
+         q(0),
+         ],
+      q(lls) => [
+         q(3948),
+         q(0),
+         ],
+      q(llu) => [
+         q(3949),
+         q(0),
+         ],
+      q(llx) => [
+         q(3950),
+         q(0),
+         ],
+      q(lma) => [
+         q(3951),
+         q(0),
+         ],
+      q(lmb) => [
+         q(3952),
+         q(0),
+         ],
+      q(lmc) => [
+         q(3953),
+         q(0),
+         ],
+      q(lmd) => [
+         q(3954),
+         q(0),
+         ],
+      q(lme) => [
+         q(3955),
+         q(0),
+         ],
+      q(lmf) => [
+         q(3956),
+         q(0),
+         ],
+      q(lmg) => [
+         q(3957),
+         q(0),
+         ],
+      q(lmh) => [
+         q(3958),
+         q(0),
+         ],
+      q(lmi) => [
+         q(3959),
+         q(0),
+         ],
+      q(lmj) => [
+         q(3960),
+         q(0),
+         ],
+      q(lmk) => [
+         q(3961),
+         q(0),
+         ],
+      q(lml) => [
+         q(3962),
+         q(0),
+         ],
+      q(lmm) => [
+         q(3963),
+         q(0),
+         ],
+      q(lmn) => [
+         q(3964),
+         q(0),
+         ],
+      q(lmo) => [
+         q(3965),
+         q(0),
+         ],
+      q(lmp) => [
+         q(3966),
+         q(0),
+         ],
+      q(lmq) => [
+         q(3967),
+         q(0),
+         ],
+      q(lmr) => [
+         q(3968),
+         q(0),
+         ],
+      q(lmu) => [
+         q(3969),
+         q(0),
+         ],
+      q(lmv) => [
+         q(3970),
+         q(0),
+         ],
+      q(lmw) => [
+         q(3971),
+         q(0),
+         ],
+      q(lmx) => [
+         q(3972),
+         q(0),
+         ],
+      q(lmy) => [
+         q(3973),
+         q(0),
+         ],
+      q(lmz) => [
+         q(3974),
+         q(0),
+         ],
+      q(lna) => [
+         q(3975),
+         q(0),
+         ],
+      q(lnb) => [
+         q(3976),
+         q(0),
+         ],
+      q(lnd) => [
+         q(3977),
+         q(0),
+         ],
+      q(lng) => [
+         q(3978),
+         q(0),
+         ],
+      q(lnh) => [
+         q(3979),
+         q(0),
+         ],
+      q(lni) => [
+         q(3980),
+         q(0),
+         ],
+      q(lnj) => [
+         q(3981),
+         q(0),
+         ],
+      q(lnl) => [
+         q(3982),
+         q(0),
+         ],
+      q(lnm) => [
+         q(3983),
+         q(0),
+         ],
+      q(lnn) => [
+         q(3984),
+         q(0),
+         ],
+      q(lno) => [
+         q(3985),
+         q(0),
+         ],
+      q(lns) => [
+         q(3986),
+         q(0),
+         ],
+      q(lnu) => [
+         q(3987),
+         q(0),
+         ],
+      q(lnz) => [
+         q(3988),
+         q(0),
+         ],
+      q(loa) => [
+         q(3989),
+         q(0),
+         ],
+      q(lob) => [
+         q(3990),
+         q(0),
+         ],
+      q(loc) => [
+         q(3991),
+         q(0),
+         ],
+      q(loe) => [
+         q(3992),
+         q(0),
+         ],
+      q(lof) => [
+         q(3993),
+         q(0),
+         ],
+      q(log) => [
+         q(3994),
+         q(0),
+         ],
+      q(loh) => [
+         q(3995),
+         q(0),
+         ],
+      q(loi) => [
+         q(3996),
+         q(0),
+         ],
+      q(loj) => [
+         q(3997),
+         q(0),
+         ],
+      q(lok) => [
+         q(3998),
+         q(0),
+         ],
+      q(lol) => [
+         q(0252),
+         q(0),
+         ],
+      q(lom) => [
+         q(3999),
+         q(0),
+         ],
+      q(lon) => [
+         q(4000),
+         q(0),
+         ],
+      q(loo) => [
+         q(4001),
+         q(0),
+         ],
+      q(lop) => [
+         q(4002),
+         q(0),
+         ],
+      q(loq) => [
+         q(4003),
+         q(0),
+         ],
+      q(lor) => [
+         q(4004),
+         q(0),
+         ],
+      q(los) => [
+         q(4005),
+         q(0),
+         ],
+      q(lot) => [
+         q(4006),
+         q(0),
+         ],
+      q(lou) => [
+         q(4007),
+         q(0),
+         ],
+      q(lov) => [
+         q(4008),
+         q(0),
+         ],
+      q(low) => [
+         q(4009),
+         q(0),
+         ],
+      q(lox) => [
+         q(4010),
+         q(0),
+         ],
+      q(loy) => [
+         q(4011),
+         q(0),
+         ],
+      q(loz) => [
+         q(0253),
+         q(0),
+         ],
+      q(lpa) => [
+         q(4012),
+         q(0),
+         ],
+      q(lpe) => [
+         q(4013),
+         q(0),
+         ],
+      q(lpn) => [
+         q(4014),
+         q(0),
+         ],
+      q(lpo) => [
+         q(4015),
+         q(0),
+         ],
+      q(lpx) => [
+         q(4016),
+         q(0),
+         ],
+      q(lra) => [
+         q(4017),
+         q(0),
+         ],
+      q(lrc) => [
+         q(4018),
+         q(0),
+         ],
+      q(lre) => [
+         q(4019),
+         q(0),
+         ],
+      q(lrg) => [
+         q(4020),
+         q(0),
+         ],
+      q(lri) => [
+         q(4021),
+         q(0),
+         ],
+      q(lrk) => [
+         q(4022),
+         q(0),
+         ],
+      q(lrl) => [
+         q(4023),
+         q(0),
+         ],
+      q(lrm) => [
+         q(4024),
+         q(0),
+         ],
+      q(lrn) => [
+         q(4025),
+         q(0),
+         ],
+      q(lro) => [
+         q(4026),
+         q(0),
+         ],
+      q(lrr) => [
+         q(4027),
+         q(0),
+         ],
+      q(lrt) => [
+         q(4028),
+         q(0),
+         ],
+      q(lrv) => [
+         q(4029),
+         q(0),
+         ],
+      q(lrz) => [
+         q(4030),
+         q(0),
+         ],
+      q(lsa) => [
+         q(4031),
+         q(0),
+         ],
+      q(lsd) => [
+         q(4032),
+         q(0),
+         ],
+      q(lse) => [
+         q(4033),
+         q(0),
+         ],
+      q(lsg) => [
+         q(4034),
+         q(0),
+         ],
+      q(lsh) => [
+         q(4035),
+         q(0),
+         ],
+      q(lsi) => [
+         q(4036),
+         q(0),
+         ],
+      q(lsl) => [
+         q(4037),
+         q(0),
+         ],
+      q(lsm) => [
+         q(4038),
+         q(0),
+         ],
+      q(lso) => [
+         q(4039),
+         q(0),
+         ],
+      q(lsp) => [
+         q(4040),
+         q(0),
+         ],
+      q(lsr) => [
+         q(4041),
+         q(0),
+         ],
+      q(lss) => [
+         q(4042),
+         q(0),
+         ],
+      q(lst) => [
+         q(4043),
+         q(0),
+         ],
+      q(lsy) => [
+         q(4044),
+         q(0),
+         ],
+      q(ltc) => [
+         q(4045),
+         q(0),
+         ],
+      q(ltg) => [
+         q(4046),
+         q(0),
+         ],
+      q(lti) => [
+         q(4047),
+         q(0),
+         ],
+      q(ltn) => [
+         q(4048),
+         q(0),
+         ],
+      q(lto) => [
+         q(4049),
+         q(0),
+         ],
+      q(lts) => [
+         q(4050),
+         q(0),
+         ],
+      q(ltu) => [
+         q(4051),
+         q(0),
+         ],
+      q(ltz) => [
+         q(0254),
+         q(0),
+         ],
+      q(lua) => [
+         q(0255),
+         q(0),
+         ],
+      q(lub) => [
+         q(0256),
+         q(0),
+         ],
+      q(luc) => [
+         q(4052),
+         q(0),
+         ],
+      q(lud) => [
+         q(4053),
+         q(0),
+         ],
+      q(lue) => [
+         q(4054),
+         q(0),
+         ],
+      q(luf) => [
+         q(4055),
+         q(0),
+         ],
+      q(lug) => [
+         q(0257),
+         q(0),
+         ],
+      q(lui) => [
+         q(0258),
+         q(0),
+         ],
+      q(luj) => [
+         q(4056),
+         q(0),
+         ],
+      q(luk) => [
+         q(4057),
+         q(0),
+         ],
+      q(lul) => [
+         q(4058),
+         q(0),
+         ],
+      q(lum) => [
+         q(4059),
+         q(0),
+         ],
+      q(lun) => [
+         q(0259),
+         q(0),
+         ],
+      q(luo) => [
+         q(0260),
+         q(0),
+         ],
+      q(lup) => [
+         q(4060),
+         q(0),
+         ],
+      q(luq) => [
+         q(4061),
+         q(0),
+         ],
+      q(lur) => [
+         q(4062),
+         q(0),
+         ],
+      q(lus) => [
+         q(0261),
+         q(0),
+         ],
+      q(lut) => [
+         q(4063),
+         q(0),
+         ],
+      q(luu) => [
+         q(4064),
+         q(0),
+         ],
+      q(luv) => [
+         q(4065),
+         q(0),
+         ],
+      q(luw) => [
+         q(4066),
+         q(0),
+         ],
+      q(luy) => [
+         q(4067),
+         q(0),
+         ],
+      q(luz) => [
+         q(4068),
+         q(0),
+         ],
+      q(lva) => [
+         q(4069),
+         q(0),
+         ],
+      q(lvk) => [
+         q(4070),
+         q(0),
+         ],
+      q(lvs) => [
+         q(4071),
+         q(0),
+         ],
+      q(lvu) => [
+         q(4072),
+         q(0),
+         ],
+      q(lwa) => [
+         q(4073),
+         q(0),
+         ],
+      q(lwe) => [
+         q(4074),
+         q(0),
+         ],
+      q(lwg) => [
+         q(4075),
+         q(0),
+         ],
+      q(lwh) => [
+         q(4076),
+         q(0),
+         ],
+      q(lwl) => [
+         q(4077),
+         q(0),
+         ],
+      q(lwm) => [
+         q(4078),
+         q(0),
+         ],
+      q(lwo) => [
+         q(4079),
+         q(0),
+         ],
+      q(lwt) => [
+         q(4080),
+         q(0),
+         ],
+      q(lww) => [
+         q(4081),
+         q(0),
+         ],
+      q(lya) => [
+         q(4082),
+         q(0),
+         ],
+      q(lyg) => [
+         q(4083),
+         q(0),
+         ],
+      q(lyn) => [
+         q(4084),
+         q(0),
+         ],
+      q(lzh) => [
+         q(4085),
+         q(0),
+         ],
+      q(lzl) => [
+         q(4086),
+         q(0),
+         ],
+      q(lzn) => [
+         q(4087),
+         q(0),
+         ],
+      q(lzz) => [
+         q(4088),
+         q(0),
+         ],
+      q(maa) => [
+         q(4089),
+         q(0),
+         ],
+      q(mab) => [
+         q(4090),
+         q(0),
+         ],
+      q(mac) => [
+         q(0262),
+         q(0),
+         ],
+      q(mad) => [
+         q(0263),
+         q(0),
+         ],
+      q(mae) => [
+         q(4091),
+         q(0),
+         ],
+      q(maf) => [
+         q(4092),
+         q(0),
+         ],
+      q(mag) => [
+         q(0264),
+         q(0),
+         ],
+      q(mah) => [
+         q(0265),
+         q(0),
+         ],
+      q(mai) => [
+         q(0266),
+         q(0),
+         ],
+      q(maj) => [
+         q(4093),
+         q(0),
+         ],
+      q(mak) => [
+         q(0267),
+         q(0),
+         ],
+      q(mal) => [
+         q(0268),
+         q(0),
+         ],
+      q(mam) => [
+         q(4094),
+         q(0),
+         ],
+      q(man) => [
+         q(0269),
+         q(0),
+         ],
+      q(mao) => [
+         q(0270),
+         q(0),
+         ],
+      q(map) => [
+         q(0271),
+         q(0),
+         ],
+      q(maq) => [
+         q(4095),
+         q(0),
+         ],
+      q(mar) => [
+         q(0272),
+         q(0),
+         ],
+      q(mas) => [
+         q(0273),
+         q(0),
+         ],
+      q(mat) => [
+         q(4096),
+         q(0),
+         ],
+      q(mau) => [
+         q(4097),
+         q(0),
+         ],
+      q(mav) => [
+         q(4098),
+         q(0),
+         ],
+      q(maw) => [
+         q(4099),
+         q(0),
+         ],
+      q(max) => [
+         q(4100),
+         q(0),
+         ],
+      q(may) => [
+         q(0274),
+         q(0),
+         ],
+      q(maz) => [
+         q(4101),
+         q(0),
+         ],
+      q(mba) => [
+         q(4102),
+         q(0),
+         ],
+      q(mbb) => [
+         q(4103),
+         q(0),
+         ],
+      q(mbc) => [
+         q(4104),
+         q(0),
+         ],
+      q(mbd) => [
+         q(4105),
+         q(0),
+         ],
+      q(mbe) => [
+         q(4106),
+         q(0),
+         ],
+      q(mbf) => [
+         q(4107),
+         q(0),
+         ],
+      q(mbh) => [
+         q(4108),
+         q(0),
+         ],
+      q(mbi) => [
+         q(4109),
+         q(0),
+         ],
+      q(mbj) => [
+         q(4110),
+         q(0),
+         ],
+      q(mbk) => [
+         q(4111),
+         q(0),
+         ],
+      q(mbl) => [
+         q(4112),
+         q(0),
+         ],
+      q(mbm) => [
+         q(4113),
+         q(0),
+         ],
+      q(mbn) => [
+         q(4114),
+         q(0),
+         ],
+      q(mbo) => [
+         q(4115),
+         q(0),
+         ],
+      q(mbp) => [
+         q(4116),
+         q(0),
+         ],
+      q(mbq) => [
+         q(4117),
+         q(0),
+         ],
+      q(mbr) => [
+         q(4118),
+         q(0),
+         ],
+      q(mbs) => [
+         q(4119),
+         q(0),
+         ],
+      q(mbt) => [
+         q(4120),
+         q(0),
+         ],
+      q(mbu) => [
+         q(4121),
+         q(0),
+         ],
+      q(mbv) => [
+         q(4122),
+         q(0),
+         ],
+      q(mbw) => [
+         q(4123),
+         q(0),
+         ],
+      q(mbx) => [
+         q(4124),
+         q(0),
+         ],
+      q(mby) => [
+         q(4125),
+         q(0),
+         ],
+      q(mbz) => [
+         q(4126),
+         q(0),
+         ],
+      q(mca) => [
+         q(4127),
+         q(0),
+         ],
+      q(mcb) => [
+         q(4128),
+         q(0),
+         ],
+      q(mcc) => [
+         q(4129),
+         q(0),
+         ],
+      q(mcd) => [
+         q(4130),
+         q(0),
+         ],
+      q(mce) => [
+         q(4131),
+         q(0),
+         ],
+      q(mcf) => [
+         q(4132),
+         q(0),
+         ],
+      q(mcg) => [
+         q(4133),
+         q(0),
+         ],
+      q(mch) => [
+         q(4134),
+         q(0),
+         ],
+      q(mci) => [
+         q(4135),
+         q(0),
+         ],
+      q(mcj) => [
+         q(4136),
+         q(0),
+         ],
+      q(mck) => [
+         q(4137),
+         q(0),
+         ],
+      q(mcl) => [
+         q(4138),
+         q(0),
+         ],
+      q(mcm) => [
+         q(4139),
+         q(0),
+         ],
+      q(mcn) => [
+         q(4140),
+         q(0),
+         ],
+      q(mco) => [
+         q(4141),
+         q(0),
+         ],
+      q(mcp) => [
+         q(4142),
+         q(0),
+         ],
+      q(mcq) => [
+         q(4143),
+         q(0),
+         ],
+      q(mcr) => [
+         q(4144),
+         q(0),
+         ],
+      q(mcs) => [
+         q(4145),
+         q(0),
+         ],
+      q(mct) => [
+         q(4146),
+         q(0),
+         ],
+      q(mcu) => [
+         q(4147),
+         q(0),
+         ],
+      q(mcv) => [
+         q(4148),
+         q(0),
+         ],
+      q(mcw) => [
+         q(4149),
+         q(0),
+         ],
+      q(mcx) => [
+         q(4150),
+         q(0),
+         ],
+      q(mcy) => [
+         q(4151),
+         q(0),
+         ],
+      q(mcz) => [
+         q(4152),
+         q(0),
+         ],
+      q(mda) => [
+         q(4153),
+         q(0),
+         ],
+      q(mdb) => [
+         q(4154),
+         q(0),
+         ],
+      q(mdc) => [
+         q(4155),
+         q(0),
+         ],
+      q(mdd) => [
+         q(4156),
+         q(0),
+         ],
+      q(mde) => [
+         q(4157),
+         q(0),
+         ],
+      q(mdf) => [
+         q(0275),
+         q(0),
+         ],
+      q(mdg) => [
+         q(4158),
+         q(0),
+         ],
+      q(mdh) => [
+         q(4159),
+         q(0),
+         ],
+      q(mdi) => [
+         q(4160),
+         q(0),
+         ],
+      q(mdj) => [
+         q(4161),
+         q(0),
+         ],
+      q(mdk) => [
+         q(4162),
+         q(0),
+         ],
+      q(mdl) => [
+         q(4163),
+         q(0),
+         ],
+      q(mdm) => [
+         q(4164),
+         q(0),
+         ],
+      q(mdn) => [
+         q(4165),
+         q(0),
+         ],
+      q(mdp) => [
+         q(4166),
+         q(0),
+         ],
+      q(mdq) => [
+         q(4167),
+         q(0),
+         ],
+      q(mdr) => [
+         q(0276),
+         q(0),
+         ],
+      q(mds) => [
+         q(4168),
+         q(0),
+         ],
+      q(mdt) => [
+         q(4169),
+         q(0),
+         ],
+      q(mdu) => [
+         q(4170),
+         q(0),
+         ],
+      q(mdv) => [
+         q(4171),
+         q(0),
+         ],
+      q(mdw) => [
+         q(4172),
+         q(0),
+         ],
+      q(mdx) => [
+         q(4173),
+         q(0),
+         ],
+      q(mdy) => [
+         q(4174),
+         q(0),
+         ],
+      q(mdz) => [
+         q(4175),
+         q(0),
+         ],
+      q(mea) => [
+         q(4176),
+         q(0),
+         ],
+      q(meb) => [
+         q(4177),
+         q(0),
+         ],
+      q(mec) => [
+         q(4178),
+         q(0),
+         ],
+      q(med) => [
+         q(4179),
+         q(0),
+         ],
+      q(mee) => [
+         q(4180),
+         q(0),
+         ],
+      q(mef) => [
+         q(4181),
+         q(0),
+         ],
+      q(meg) => [
+         q(4182),
+         q(0),
+         ],
+      q(meh) => [
+         q(4183),
+         q(0),
+         ],
+      q(mei) => [
+         q(4184),
+         q(0),
+         ],
+      q(mej) => [
+         q(4185),
+         q(0),
+         ],
+      q(mek) => [
+         q(4186),
+         q(0),
+         ],
+      q(mel) => [
+         q(4187),
+         q(0),
+         ],
+      q(mem) => [
+         q(4188),
+         q(0),
+         ],
+      q(men) => [
+         q(0277),
+         q(1),
+         ],
+      q(meo) => [
+         q(4189),
+         q(0),
+         ],
+      q(mep) => [
+         q(4190),
+         q(0),
+         ],
+      q(meq) => [
+         q(4191),
+         q(0),
+         ],
+      q(mer) => [
+         q(4192),
+         q(0),
+         ],
+      q(mes) => [
+         q(4193),
+         q(0),
+         ],
+      q(met) => [
+         q(4194),
+         q(0),
+         ],
+      q(meu) => [
+         q(4195),
+         q(0),
+         ],
+      q(mev) => [
+         q(4196),
+         q(0),
+         ],
+      q(mew) => [
+         q(4197),
+         q(0),
+         ],
+      q(mey) => [
+         q(4198),
+         q(0),
+         ],
+      q(mez) => [
+         q(4199),
+         q(0),
+         ],
+      q(mfa) => [
+         q(4200),
+         q(0),
+         ],
+      q(mfb) => [
+         q(4201),
+         q(0),
+         ],
+      q(mfc) => [
+         q(4202),
+         q(0),
+         ],
+      q(mfd) => [
+         q(4203),
+         q(0),
+         ],
+      q(mfe) => [
+         q(4204),
+         q(0),
+         ],
+      q(mff) => [
+         q(4205),
+         q(0),
+         ],
+      q(mfg) => [
+         q(4206),
+         q(0),
+         ],
+      q(mfh) => [
+         q(4207),
+         q(0),
+         ],
+      q(mfi) => [
+         q(4208),
+         q(0),
+         ],
+      q(mfj) => [
+         q(4209),
+         q(0),
+         ],
+      q(mfk) => [
+         q(4210),
+         q(0),
+         ],
+      q(mfl) => [
+         q(4211),
+         q(0),
+         ],
+      q(mfm) => [
+         q(4212),
+         q(0),
+         ],
+      q(mfn) => [
+         q(4213),
+         q(0),
+         ],
+      q(mfo) => [
+         q(4214),
+         q(0),
+         ],
+      q(mfp) => [
+         q(4215),
+         q(0),
+         ],
+      q(mfq) => [
+         q(4216),
+         q(0),
+         ],
+      q(mfr) => [
+         q(4217),
+         q(0),
+         ],
+      q(mfs) => [
+         q(4218),
+         q(0),
+         ],
+      q(mft) => [
+         q(4219),
+         q(0),
+         ],
+      q(mfu) => [
+         q(4220),
+         q(0),
+         ],
+      q(mfv) => [
+         q(4221),
+         q(0),
+         ],
+      q(mfw) => [
+         q(4222),
+         q(0),
+         ],
+      q(mfx) => [
+         q(4223),
+         q(0),
+         ],
+      q(mfy) => [
+         q(4224),
+         q(0),
+         ],
+      q(mfz) => [
+         q(4225),
+         q(0),
+         ],
+      q(mga) => [
+         q(0278),
+         q(1),
+         ],
+      q(mgb) => [
+         q(4226),
+         q(0),
+         ],
+      q(mgc) => [
+         q(4227),
+         q(0),
+         ],
+      q(mgd) => [
+         q(4228),
+         q(0),
+         ],
+      q(mge) => [
+         q(4229),
+         q(0),
+         ],
+      q(mgf) => [
+         q(4230),
+         q(0),
+         ],
+      q(mgg) => [
+         q(4231),
+         q(0),
+         ],
+      q(mgh) => [
+         q(4232),
+         q(0),
+         ],
+      q(mgi) => [
+         q(4233),
+         q(0),
+         ],
+      q(mgj) => [
+         q(4234),
+         q(0),
+         ],
+      q(mgk) => [
+         q(4235),
+         q(0),
+         ],
+      q(mgl) => [
+         q(4236),
+         q(0),
+         ],
+      q(mgm) => [
+         q(4237),
+         q(0),
+         ],
+      q(mgn) => [
+         q(4238),
+         q(0),
+         ],
+      q(mgo) => [
+         q(4239),
+         q(0),
+         ],
+      q(mgp) => [
+         q(4240),
+         q(0),
+         ],
+      q(mgq) => [
+         q(4241),
+         q(0),
+         ],
+      q(mgr) => [
+         q(4242),
+         q(0),
+         ],
+      q(mgs) => [
+         q(4243),
+         q(0),
+         ],
+      q(mgt) => [
+         q(4244),
+         q(0),
+         ],
+      q(mgu) => [
+         q(4245),
+         q(0),
+         ],
+      q(mgv) => [
+         q(4246),
+         q(0),
+         ],
+      q(mgw) => [
+         q(4247),
+         q(0),
+         ],
+      q(mgy) => [
+         q(4248),
+         q(0),
+         ],
+      q(mgz) => [
+         q(4249),
+         q(0),
+         ],
+      q(mha) => [
+         q(4250),
+         q(0),
+         ],
+      q(mhb) => [
+         q(4251),
+         q(0),
+         ],
+      q(mhc) => [
+         q(4252),
+         q(0),
+         ],
+      q(mhd) => [
+         q(4253),
+         q(0),
+         ],
+      q(mhe) => [
+         q(4254),
+         q(0),
+         ],
+      q(mhf) => [
+         q(4255),
+         q(0),
+         ],
+      q(mhg) => [
+         q(4256),
+         q(0),
+         ],
+      q(mhh) => [
+         q(4257),
+         q(0),
+         ],
+      q(mhi) => [
+         q(4258),
+         q(0),
+         ],
+      q(mhj) => [
+         q(4259),
+         q(0),
+         ],
+      q(mhk) => [
+         q(4260),
+         q(0),
+         ],
+      q(mhl) => [
+         q(4261),
+         q(0),
+         ],
+      q(mhm) => [
+         q(4262),
+         q(0),
+         ],
+      q(mhn) => [
+         q(4263),
+         q(0),
+         ],
+      q(mho) => [
+         q(4264),
+         q(0),
+         ],
+      q(mhp) => [
+         q(4265),
+         q(0),
+         ],
+      q(mhq) => [
+         q(4266),
+         q(0),
+         ],
+      q(mhr) => [
+         q(4267),
+         q(0),
+         ],
+      q(mhs) => [
+         q(4268),
+         q(0),
+         ],
+      q(mht) => [
+         q(4269),
+         q(0),
+         ],
+      q(mhu) => [
+         q(4270),
+         q(0),
+         ],
+      q(mhw) => [
+         q(4271),
+         q(0),
+         ],
+      q(mhx) => [
+         q(4272),
+         q(0),
+         ],
+      q(mhy) => [
+         q(4273),
+         q(0),
+         ],
+      q(mhz) => [
+         q(4274),
+         q(0),
+         ],
+      q(mia) => [
+         q(4275),
+         q(0),
+         ],
+      q(mib) => [
+         q(4276),
+         q(0),
+         ],
+      q(mic) => [
+         q(0279),
+         q(0),
+         ],
+      q(mid) => [
+         q(4277),
+         q(0),
+         ],
+      q(mie) => [
+         q(4278),
+         q(0),
+         ],
+      q(mif) => [
+         q(4279),
+         q(0),
+         ],
+      q(mig) => [
+         q(4280),
+         q(0),
+         ],
+      q(mih) => [
+         q(4281),
+         q(0),
+         ],
+      q(mii) => [
+         q(4282),
+         q(0),
+         ],
+      q(mij) => [
+         q(4283),
+         q(0),
+         ],
+      q(mik) => [
+         q(4284),
+         q(0),
+         ],
+      q(mil) => [
+         q(4285),
+         q(0),
+         ],
+      q(mim) => [
+         q(4286),
+         q(0),
+         ],
+      q(min) => [
+         q(0280),
+         q(0),
+         ],
+      q(mio) => [
+         q(4287),
+         q(0),
+         ],
+      q(mip) => [
+         q(4288),
+         q(0),
+         ],
+      q(miq) => [
+         q(4289),
+         q(0),
+         ],
+      q(mir) => [
+         q(4290),
+         q(0),
+         ],
+      q(mis) => [
+         q(0281),
+         q(0),
+         ],
+      q(mit) => [
+         q(4291),
+         q(0),
+         ],
+      q(miu) => [
+         q(4292),
+         q(0),
+         ],
+      q(miw) => [
+         q(4293),
+         q(0),
+         ],
+      q(mix) => [
+         q(4294),
+         q(0),
+         ],
+      q(miy) => [
+         q(4295),
+         q(0),
+         ],
+      q(miz) => [
+         q(4296),
+         q(0),
+         ],
+      q(mjc) => [
+         q(4297),
+         q(0),
+         ],
+      q(mjd) => [
+         q(4298),
+         q(0),
+         ],
+      q(mje) => [
+         q(4299),
+         q(0),
+         ],
+      q(mjg) => [
+         q(4300),
+         q(0),
+         ],
+      q(mjh) => [
+         q(4301),
+         q(0),
+         ],
+      q(mji) => [
+         q(4302),
+         q(0),
+         ],
+      q(mjj) => [
+         q(4303),
+         q(0),
+         ],
+      q(mjk) => [
+         q(4304),
+         q(0),
+         ],
+      q(mjl) => [
+         q(4305),
+         q(0),
+         ],
+      q(mjm) => [
+         q(4306),
+         q(0),
+         ],
+      q(mjn) => [
+         q(4307),
+         q(0),
+         ],
+      q(mjo) => [
+         q(4308),
+         q(0),
+         ],
+      q(mjp) => [
+         q(4309),
+         q(0),
+         ],
+      q(mjq) => [
+         q(4310),
+         q(0),
+         ],
+      q(mjr) => [
+         q(4311),
+         q(0),
+         ],
+      q(mjs) => [
+         q(4312),
+         q(0),
+         ],
+      q(mjt) => [
+         q(4313),
+         q(0),
+         ],
+      q(mju) => [
+         q(4314),
+         q(0),
+         ],
+      q(mjv) => [
+         q(4315),
+         q(0),
+         ],
+      q(mjw) => [
+         q(4316),
+         q(0),
+         ],
+      q(mjx) => [
+         q(4317),
+         q(0),
+         ],
+      q(mjy) => [
+         q(4318),
+         q(0),
+         ],
+      q(mjz) => [
+         q(4319),
+         q(0),
+         ],
+      q(mka) => [
+         q(4320),
+         q(0),
+         ],
+      q(mkb) => [
+         q(4321),
+         q(0),
+         ],
+      q(mkc) => [
+         q(4322),
+         q(0),
+         ],
+      q(mke) => [
+         q(4323),
+         q(0),
+         ],
+      q(mkf) => [
+         q(4324),
+         q(0),
+         ],
+      q(mkg) => [
+         q(4325),
+         q(0),
+         ],
+      q(mkh) => [
+         q(0282),
+         q(0),
+         ],
+      q(mki) => [
+         q(4326),
+         q(0),
+         ],
+      q(mkj) => [
+         q(4327),
+         q(0),
+         ],
+      q(mkk) => [
+         q(4328),
+         q(0),
+         ],
+      q(mkl) => [
+         q(4329),
+         q(0),
+         ],
+      q(mkm) => [
+         q(4330),
+         q(0),
+         ],
+      q(mkn) => [
+         q(4331),
+         q(0),
+         ],
+      q(mko) => [
+         q(4332),
+         q(0),
+         ],
+      q(mkp) => [
+         q(4333),
+         q(0),
+         ],
+      q(mkq) => [
+         q(4334),
+         q(0),
+         ],
+      q(mkr) => [
+         q(4335),
+         q(0),
+         ],
+      q(mks) => [
+         q(4336),
+         q(0),
+         ],
+      q(mkt) => [
+         q(4337),
+         q(0),
+         ],
+      q(mku) => [
+         q(4338),
+         q(0),
+         ],
+      q(mkv) => [
+         q(4339),
+         q(0),
+         ],
+      q(mkw) => [
+         q(4340),
+         q(0),
+         ],
+      q(mkx) => [
+         q(4341),
+         q(0),
+         ],
+      q(mky) => [
+         q(4342),
+         q(0),
+         ],
+      q(mkz) => [
+         q(4343),
+         q(0),
+         ],
+      q(mla) => [
+         q(4344),
+         q(0),
+         ],
+      q(mlb) => [
+         q(4345),
+         q(0),
+         ],
+      q(mlc) => [
+         q(4346),
+         q(0),
+         ],
+      q(mld) => [
+         q(4347),
+         q(0),
+         ],
+      q(mle) => [
+         q(4348),
+         q(0),
+         ],
+      q(mlf) => [
+         q(4349),
+         q(0),
+         ],
+      q(mlg) => [
+         q(0283),
+         q(0),
+         ],
+      q(mlh) => [
+         q(4350),
+         q(0),
+         ],
+      q(mli) => [
+         q(4351),
+         q(0),
+         ],
+      q(mlj) => [
+         q(4352),
+         q(0),
+         ],
+      q(mlk) => [
+         q(4353),
+         q(0),
+         ],
+      q(mll) => [
+         q(4354),
+         q(0),
+         ],
+      q(mlm) => [
+         q(4355),
+         q(0),
+         ],
+      q(mln) => [
+         q(4356),
+         q(0),
+         ],
+      q(mlo) => [
+         q(4357),
+         q(0),
+         ],
+      q(mlp) => [
+         q(4358),
+         q(0),
+         ],
+      q(mlq) => [
+         q(4359),
+         q(0),
+         ],
+      q(mlr) => [
+         q(4360),
+         q(0),
+         ],
+      q(mls) => [
+         q(4361),
+         q(0),
+         ],
+      q(mlt) => [
+         q(0284),
+         q(0),
+         ],
+      q(mlu) => [
+         q(4362),
+         q(0),
+         ],
+      q(mlv) => [
+         q(4363),
+         q(0),
+         ],
+      q(mlw) => [
+         q(4364),
+         q(0),
+         ],
+      q(mlx) => [
+         q(4365),
+         q(0),
+         ],
+      q(mlz) => [
+         q(4366),
+         q(0),
+         ],
+      q(mma) => [
+         q(4367),
+         q(0),
+         ],
+      q(mmb) => [
+         q(4368),
+         q(0),
+         ],
+      q(mmc) => [
+         q(4369),
+         q(0),
+         ],
+      q(mmd) => [
+         q(4370),
+         q(0),
+         ],
+      q(mme) => [
+         q(4371),
+         q(0),
+         ],
+      q(mmf) => [
+         q(4372),
+         q(0),
+         ],
+      q(mmg) => [
+         q(4373),
+         q(0),
+         ],
+      q(mmh) => [
+         q(4374),
+         q(0),
+         ],
+      q(mmi) => [
+         q(4375),
+         q(0),
+         ],
+      q(mmj) => [
+         q(4376),
+         q(0),
+         ],
+      q(mmk) => [
+         q(4377),
+         q(0),
+         ],
+      q(mml) => [
+         q(4378),
+         q(0),
+         ],
+      q(mmm) => [
+         q(4379),
+         q(0),
+         ],
+      q(mmn) => [
+         q(4380),
+         q(0),
+         ],
+      q(mmo) => [
+         q(4381),
+         q(0),
+         ],
+      q(mmp) => [
+         q(4382),
+         q(0),
+         ],
+      q(mmq) => [
+         q(4383),
+         q(0),
+         ],
+      q(mmr) => [
+         q(4384),
+         q(0),
+         ],
+      q(mmt) => [
+         q(4385),
+         q(0),
+         ],
+      q(mmu) => [
+         q(4386),
+         q(0),
+         ],
+      q(mmv) => [
+         q(4387),
+         q(0),
+         ],
+      q(mmw) => [
+         q(4388),
+         q(0),
+         ],
+      q(mmx) => [
+         q(4389),
+         q(0),
+         ],
+      q(mmy) => [
+         q(4390),
+         q(0),
+         ],
+      q(mmz) => [
+         q(4391),
+         q(0),
+         ],
+      q(mna) => [
+         q(4392),
+         q(0),
+         ],
+      q(mnb) => [
+         q(4393),
+         q(0),
+         ],
+      q(mnc) => [
+         q(0285),
+         q(0),
+         ],
+      q(mnd) => [
+         q(4394),
+         q(0),
+         ],
+      q(mne) => [
+         q(4395),
+         q(0),
+         ],
+      q(mnf) => [
+         q(4396),
+         q(0),
+         ],
+      q(mng) => [
+         q(4397),
+         q(0),
+         ],
+      q(mnh) => [
+         q(4398),
+         q(0),
+         ],
+      q(mni) => [
+         q(0286),
+         q(0),
+         ],
+      q(mnj) => [
+         q(4399),
+         q(0),
+         ],
+      q(mnk) => [
+         q(4400),
+         q(0),
+         ],
+      q(mnl) => [
+         q(4401),
+         q(0),
+         ],
+      q(mnm) => [
+         q(4402),
+         q(0),
+         ],
+      q(mnn) => [
+         q(4403),
+         q(0),
+         ],
+      q(mno) => [
+         q(0287),
+         q(0),
+         ],
+      q(mnp) => [
+         q(4404),
+         q(0),
+         ],
+      q(mnq) => [
+         q(4405),
+         q(0),
+         ],
+      q(mnr) => [
+         q(4406),
+         q(0),
+         ],
+      q(mns) => [
+         q(4407),
+         q(0),
+         ],
+      q(mnt) => [
+         q(4408),
+         q(0),
+         ],
+      q(mnu) => [
+         q(4409),
+         q(0),
+         ],
+      q(mnv) => [
+         q(4410),
+         q(0),
+         ],
+      q(mnw) => [
+         q(4411),
+         q(0),
+         ],
+      q(mnx) => [
+         q(4412),
+         q(0),
+         ],
+      q(mny) => [
+         q(4413),
+         q(0),
+         ],
+      q(mnz) => [
+         q(4414),
+         q(0),
+         ],
+      q(moa) => [
+         q(4415),
+         q(0),
+         ],
+      q(moc) => [
+         q(4416),
+         q(0),
+         ],
+      q(mod) => [
+         q(4417),
+         q(0),
+         ],
+      q(moe) => [
+         q(4418),
+         q(0),
+         ],
+      q(mog) => [
+         q(4419),
+         q(0),
+         ],
+      q(moh) => [
+         q(0288),
+         q(0),
+         ],
+      q(moi) => [
+         q(4420),
+         q(0),
+         ],
+      q(moj) => [
+         q(4421),
+         q(0),
+         ],
+      q(mok) => [
+         q(4422),
+         q(0),
+         ],
+      q(mom) => [
+         q(4423),
+         q(0),
+         ],
+      q(mon) => [
+         q(0289),
+         q(0),
+         ],
+      q(moo) => [
+         q(4424),
+         q(0),
+         ],
+      q(mop) => [
+         q(4425),
+         q(0),
+         ],
+      q(moq) => [
+         q(4426),
+         q(0),
+         ],
+      q(mor) => [
+         q(4427),
+         q(0),
+         ],
+      q(mos) => [
+         q(0290),
+         q(0),
+         ],
+      q(mot) => [
+         q(1137),
+         q(0),
+         ],
+      q(mou) => [
+         q(4428),
+         q(0),
+         ],
+      q(mov) => [
+         q(4429),
+         q(0),
+         ],
+      q(mow) => [
+         q(4430),
+         q(0),
+         ],
+      q(mox) => [
+         q(4431),
+         q(0),
+         ],
+      q(moy) => [
+         q(4432),
+         q(0),
+         ],
+      q(moz) => [
+         q(4433),
+         q(0),
+         ],
+      q(mpa) => [
+         q(4434),
+         q(0),
+         ],
+      q(mpb) => [
+         q(4435),
+         q(0),
+         ],
+      q(mpc) => [
+         q(4436),
+         q(0),
+         ],
+      q(mpd) => [
+         q(4437),
+         q(0),
+         ],
+      q(mpe) => [
+         q(4438),
+         q(0),
+         ],
+      q(mpg) => [
+         q(4439),
+         q(0),
+         ],
+      q(mph) => [
+         q(4440),
+         q(0),
+         ],
+      q(mpi) => [
+         q(4441),
+         q(0),
+         ],
+      q(mpj) => [
+         q(4442),
+         q(0),
+         ],
+      q(mpk) => [
+         q(4443),
+         q(0),
+         ],
+      q(mpl) => [
+         q(4444),
+         q(0),
+         ],
+      q(mpm) => [
+         q(4445),
+         q(0),
+         ],
+      q(mpn) => [
+         q(4446),
+         q(0),
+         ],
+      q(mpo) => [
+         q(4447),
+         q(0),
+         ],
+      q(mpp) => [
+         q(4448),
+         q(0),
+         ],
+      q(mpq) => [
+         q(4449),
+         q(0),
+         ],
+      q(mpr) => [
+         q(4450),
+         q(0),
+         ],
+      q(mps) => [
+         q(4451),
+         q(0),
+         ],
+      q(mpt) => [
+         q(4452),
+         q(0),
+         ],
+      q(mpu) => [
+         q(4453),
+         q(0),
+         ],
+      q(mpv) => [
+         q(4454),
+         q(0),
+         ],
+      q(mpw) => [
+         q(4455),
+         q(0),
+         ],
+      q(mpx) => [
+         q(4456),
+         q(0),
+         ],
+      q(mpy) => [
+         q(4457),
+         q(0),
+         ],
+      q(mpz) => [
+         q(4458),
+         q(0),
+         ],
+      q(mqa) => [
+         q(4459),
+         q(0),
+         ],
+      q(mqb) => [
+         q(4460),
+         q(0),
+         ],
+      q(mqc) => [
+         q(4461),
+         q(0),
+         ],
+      q(mqe) => [
+         q(4462),
+         q(0),
+         ],
+      q(mqf) => [
+         q(4463),
+         q(0),
+         ],
+      q(mqg) => [
+         q(4464),
+         q(0),
+         ],
+      q(mqh) => [
+         q(4465),
+         q(0),
+         ],
+      q(mqi) => [
+         q(4466),
+         q(0),
+         ],
+      q(mqj) => [
+         q(4467),
+         q(0),
+         ],
+      q(mqk) => [
+         q(4468),
+         q(0),
+         ],
+      q(mql) => [
+         q(4469),
+         q(0),
+         ],
+      q(mqm) => [
+         q(4470),
+         q(0),
+         ],
+      q(mqn) => [
+         q(4471),
+         q(0),
+         ],
+      q(mqo) => [
+         q(4472),
+         q(0),
+         ],
+      q(mqp) => [
+         q(4473),
+         q(0),
+         ],
+      q(mqq) => [
+         q(4474),
+         q(0),
+         ],
+      q(mqr) => [
+         q(4475),
+         q(0),
+         ],
+      q(mqs) => [
+         q(4476),
+         q(0),
+         ],
+      q(mqt) => [
+         q(4477),
+         q(0),
+         ],
+      q(mqu) => [
+         q(4478),
+         q(0),
+         ],
+      q(mqv) => [
+         q(4479),
+         q(0),
+         ],
+      q(mqw) => [
+         q(4480),
+         q(0),
+         ],
+      q(mqx) => [
+         q(4481),
+         q(0),
+         ],
+      q(mqy) => [
+         q(4482),
+         q(0),
+         ],
+      q(mqz) => [
+         q(4483),
+         q(0),
+         ],
+      q(mra) => [
+         q(4484),
+         q(0),
+         ],
+      q(mrb) => [
+         q(4485),
+         q(0),
+         ],
+      q(mrc) => [
+         q(4486),
+         q(0),
+         ],
+      q(mrd) => [
+         q(4487),
+         q(0),
+         ],
+      q(mre) => [
+         q(4488),
+         q(0),
+         ],
+      q(mrf) => [
+         q(4489),
+         q(0),
+         ],
+      q(mrg) => [
+         q(4490),
+         q(0),
+         ],
+      q(mrh) => [
+         q(4491),
+         q(0),
+         ],
+      q(mrj) => [
+         q(4492),
+         q(0),
+         ],
+      q(mrk) => [
+         q(4493),
+         q(0),
+         ],
+      q(mrl) => [
+         q(4494),
+         q(0),
+         ],
+      q(mrm) => [
+         q(4495),
+         q(0),
+         ],
+      q(mrn) => [
+         q(4496),
+         q(0),
+         ],
+      q(mro) => [
+         q(4497),
+         q(0),
+         ],
+      q(mrp) => [
+         q(4498),
+         q(0),
+         ],
+      q(mrq) => [
+         q(4499),
+         q(0),
+         ],
+      q(mrr) => [
+         q(4500),
+         q(0),
+         ],
+      q(mrs) => [
+         q(4501),
+         q(0),
+         ],
+      q(mrt) => [
+         q(4502),
+         q(0),
+         ],
+      q(mru) => [
+         q(4503),
+         q(0),
+         ],
+      q(mrv) => [
+         q(4504),
+         q(0),
+         ],
+      q(mrw) => [
+         q(4505),
+         q(0),
+         ],
+      q(mrx) => [
+         q(4506),
+         q(0),
+         ],
+      q(mry) => [
+         q(4507),
+         q(0),
+         ],
+      q(mrz) => [
+         q(4508),
+         q(0),
+         ],
+      q(msb) => [
+         q(4509),
+         q(0),
+         ],
+      q(msc) => [
+         q(4510),
+         q(0),
+         ],
+      q(msd) => [
+         q(4511),
+         q(0),
+         ],
+      q(mse) => [
+         q(4512),
+         q(0),
+         ],
+      q(msf) => [
+         q(4513),
+         q(0),
+         ],
+      q(msg) => [
+         q(4514),
+         q(0),
+         ],
+      q(msh) => [
+         q(4515),
+         q(0),
+         ],
+      q(msi) => [
+         q(4516),
+         q(0),
+         ],
+      q(msj) => [
+         q(4517),
+         q(0),
+         ],
+      q(msk) => [
+         q(4518),
+         q(0),
+         ],
+      q(msl) => [
+         q(4519),
+         q(0),
+         ],
+      q(msm) => [
+         q(4520),
+         q(0),
+         ],
+      q(msn) => [
+         q(4521),
+         q(0),
+         ],
+      q(mso) => [
+         q(4522),
+         q(0),
+         ],
+      q(msp) => [
+         q(4523),
+         q(0),
+         ],
+      q(msq) => [
+         q(4524),
+         q(0),
+         ],
+      q(msr) => [
+         q(4525),
+         q(0),
+         ],
+      q(mss) => [
+         q(4526),
+         q(0),
+         ],
+      q(msu) => [
+         q(4527),
+         q(0),
+         ],
+      q(msv) => [
+         q(4528),
+         q(0),
+         ],
+      q(msw) => [
+         q(4529),
+         q(0),
+         ],
+      q(msx) => [
+         q(4530),
+         q(0),
+         ],
+      q(msy) => [
+         q(4531),
+         q(0),
+         ],
+      q(msz) => [
+         q(4532),
+         q(0),
+         ],
+      q(mta) => [
+         q(4533),
+         q(0),
+         ],
+      q(mtb) => [
+         q(4534),
+         q(0),
+         ],
+      q(mtc) => [
+         q(4535),
+         q(0),
+         ],
+      q(mtd) => [
+         q(4536),
+         q(0),
+         ],
+      q(mte) => [
+         q(4537),
+         q(0),
+         ],
+      q(mtf) => [
+         q(4538),
+         q(0),
+         ],
+      q(mtg) => [
+         q(4539),
+         q(0),
+         ],
+      q(mth) => [
+         q(4540),
+         q(0),
+         ],
+      q(mti) => [
+         q(4541),
+         q(0),
+         ],
+      q(mtj) => [
+         q(4542),
+         q(0),
+         ],
+      q(mtk) => [
+         q(4543),
+         q(0),
+         ],
+      q(mtl) => [
+         q(4544),
+         q(0),
+         ],
+      q(mtm) => [
+         q(4545),
+         q(0),
+         ],
+      q(mtn) => [
+         q(4546),
+         q(0),
+         ],
+      q(mto) => [
+         q(4547),
+         q(0),
+         ],
+      q(mtp) => [
+         q(4548),
+         q(0),
+         ],
+      q(mtq) => [
+         q(4549),
+         q(0),
+         ],
+      q(mtr) => [
+         q(4550),
+         q(0),
+         ],
+      q(mts) => [
+         q(4551),
+         q(0),
+         ],
+      q(mtt) => [
+         q(4552),
+         q(0),
+         ],
+      q(mtu) => [
+         q(4553),
+         q(0),
+         ],
+      q(mtv) => [
+         q(4554),
+         q(0),
+         ],
+      q(mtw) => [
+         q(4555),
+         q(0),
+         ],
+      q(mtx) => [
+         q(4556),
+         q(0),
+         ],
+      q(mty) => [
+         q(4557),
+         q(0),
+         ],
+      q(mua) => [
+         q(4558),
+         q(0),
+         ],
+      q(mub) => [
+         q(4559),
+         q(0),
+         ],
+      q(muc) => [
+         q(4560),
+         q(0),
+         ],
+      q(mud) => [
+         q(4561),
+         q(0),
+         ],
+      q(mue) => [
+         q(4562),
+         q(0),
+         ],
+      q(mug) => [
+         q(4563),
+         q(0),
+         ],
+      q(muh) => [
+         q(4564),
+         q(0),
+         ],
+      q(mui) => [
+         q(4565),
+         q(0),
+         ],
+      q(muj) => [
+         q(4566),
+         q(0),
+         ],
+      q(muk) => [
+         q(4567),
+         q(0),
+         ],
+      q(mul) => [
+         q(0291),
+         q(0),
+         ],
+      q(mum) => [
+         q(4568),
+         q(0),
+         ],
+      q(mun) => [
+         q(0292),
+         q(0),
+         ],
+      q(muo) => [
+         q(4569),
+         q(0),
+         ],
+      q(mup) => [
+         q(4570),
+         q(0),
+         ],
+      q(muq) => [
+         q(4571),
+         q(0),
+         ],
+      q(mur) => [
+         q(4572),
+         q(0),
+         ],
+      q(mus) => [
+         q(0293),
+         q(0),
+         ],
+      q(mut) => [
+         q(4573),
+         q(0),
+         ],
+      q(muu) => [
+         q(4574),
+         q(0),
+         ],
+      q(muv) => [
+         q(4575),
+         q(0),
+         ],
+      q(mux) => [
+         q(4576),
+         q(0),
+         ],
+      q(muy) => [
+         q(4577),
+         q(0),
+         ],
+      q(muz) => [
+         q(4578),
+         q(0),
+         ],
+      q(mva) => [
+         q(4579),
+         q(0),
+         ],
+      q(mvb) => [
+         q(4580),
+         q(0),
+         ],
+      q(mvd) => [
+         q(4581),
+         q(0),
+         ],
+      q(mve) => [
+         q(4582),
+         q(0),
+         ],
+      q(mvf) => [
+         q(4583),
+         q(0),
+         ],
+      q(mvg) => [
+         q(4584),
+         q(0),
+         ],
+      q(mvh) => [
+         q(4585),
+         q(0),
+         ],
+      q(mvi) => [
+         q(4586),
+         q(0),
+         ],
+      q(mvk) => [
+         q(4587),
+         q(0),
+         ],
+      q(mvl) => [
+         q(4588),
+         q(0),
+         ],
+      q(mvm) => [
+         q(4589),
+         q(0),
+         ],
+      q(mvn) => [
+         q(4590),
+         q(0),
+         ],
+      q(mvo) => [
+         q(4591),
+         q(0),
+         ],
+      q(mvp) => [
+         q(4592),
+         q(0),
+         ],
+      q(mvq) => [
+         q(4593),
+         q(0),
+         ],
+      q(mvr) => [
+         q(4594),
+         q(0),
+         ],
+      q(mvs) => [
+         q(4595),
+         q(0),
+         ],
+      q(mvt) => [
+         q(4596),
+         q(0),
+         ],
+      q(mvu) => [
+         q(4597),
+         q(0),
+         ],
+      q(mvv) => [
+         q(4598),
+         q(0),
+         ],
+      q(mvw) => [
+         q(4599),
+         q(0),
+         ],
+      q(mvx) => [
+         q(4600),
+         q(0),
+         ],
+      q(mvy) => [
+         q(4601),
+         q(0),
+         ],
+      q(mvz) => [
+         q(4602),
+         q(0),
+         ],
+      q(mwa) => [
+         q(4603),
+         q(0),
+         ],
+      q(mwb) => [
+         q(4604),
+         q(0),
+         ],
+      q(mwc) => [
+         q(4605),
+         q(0),
+         ],
+      q(mwd) => [
+         q(4606),
+         q(0),
+         ],
+      q(mwe) => [
+         q(4607),
+         q(0),
+         ],
+      q(mwf) => [
+         q(4608),
+         q(0),
+         ],
+      q(mwg) => [
+         q(4609),
+         q(0),
+         ],
+      q(mwh) => [
+         q(4610),
+         q(0),
+         ],
+      q(mwi) => [
+         q(4611),
+         q(0),
+         ],
+      q(mwj) => [
+         q(4612),
+         q(0),
+         ],
+      q(mwk) => [
+         q(4613),
+         q(0),
+         ],
+      q(mwl) => [
+         q(0294),
+         q(0),
+         ],
+      q(mwm) => [
+         q(4614),
+         q(0),
+         ],
+      q(mwn) => [
+         q(4615),
+         q(0),
+         ],
+      q(mwo) => [
+         q(4616),
+         q(0),
+         ],
+      q(mwp) => [
+         q(4617),
+         q(0),
+         ],
+      q(mwq) => [
+         q(4618),
+         q(0),
+         ],
+      q(mwr) => [
+         q(0295),
+         q(0),
+         ],
+      q(mws) => [
+         q(4619),
+         q(0),
+         ],
+      q(mwt) => [
+         q(4620),
+         q(0),
+         ],
+      q(mwu) => [
+         q(4621),
+         q(0),
+         ],
+      q(mwv) => [
+         q(4622),
+         q(0),
+         ],
+      q(mww) => [
+         q(4623),
+         q(0),
+         ],
+      q(mwx) => [
+         q(4624),
+         q(0),
+         ],
+      q(mwy) => [
+         q(4625),
+         q(0),
+         ],
+      q(mwz) => [
+         q(4626),
+         q(0),
+         ],
+      q(mxa) => [
+         q(4627),
+         q(0),
+         ],
+      q(mxb) => [
+         q(4628),
+         q(0),
+         ],
+      q(mxc) => [
+         q(4629),
+         q(0),
+         ],
+      q(mxd) => [
+         q(4630),
+         q(0),
+         ],
+      q(mxe) => [
+         q(4631),
+         q(0),
+         ],
+      q(mxf) => [
+         q(4632),
+         q(0),
+         ],
+      q(mxg) => [
+         q(4633),
+         q(0),
+         ],
+      q(mxh) => [
+         q(4634),
+         q(0),
+         ],
+      q(mxi) => [
+         q(4635),
+         q(0),
+         ],
+      q(mxj) => [
+         q(4636),
+         q(0),
+         ],
+      q(mxk) => [
+         q(4637),
+         q(0),
+         ],
+      q(mxl) => [
+         q(4638),
+         q(0),
+         ],
+      q(mxm) => [
+         q(4639),
+         q(0),
+         ],
+      q(mxn) => [
+         q(4640),
+         q(0),
+         ],
+      q(mxo) => [
+         q(4641),
+         q(0),
+         ],
+      q(mxp) => [
+         q(4642),
+         q(0),
+         ],
+      q(mxq) => [
+         q(4643),
+         q(0),
+         ],
+      q(mxr) => [
+         q(4644),
+         q(0),
+         ],
+      q(mxs) => [
+         q(4645),
+         q(0),
+         ],
+      q(mxt) => [
+         q(4646),
+         q(0),
+         ],
+      q(mxu) => [
+         q(4647),
+         q(0),
+         ],
+      q(mxv) => [
+         q(4648),
+         q(0),
+         ],
+      q(mxw) => [
+         q(4649),
+         q(0),
+         ],
+      q(mxx) => [
+         q(4650),
+         q(0),
+         ],
+      q(mxy) => [
+         q(4651),
+         q(0),
+         ],
+      q(mxz) => [
+         q(4652),
+         q(0),
+         ],
+      q(myb) => [
+         q(4653),
+         q(0),
+         ],
+      q(myc) => [
+         q(4654),
+         q(0),
+         ],
+      q(myd) => [
+         q(4655),
+         q(0),
+         ],
+      q(mye) => [
+         q(4656),
+         q(0),
+         ],
+      q(myf) => [
+         q(4657),
+         q(0),
+         ],
+      q(myg) => [
+         q(4658),
+         q(0),
+         ],
+      q(myh) => [
+         q(4659),
+         q(0),
+         ],
+      q(myi) => [
+         q(4660),
+         q(0),
+         ],
+      q(myj) => [
+         q(4661),
+         q(0),
+         ],
+      q(myk) => [
+         q(4662),
+         q(0),
+         ],
+      q(myl) => [
+         q(4663),
+         q(0),
+         ],
+      q(mym) => [
+         q(4664),
+         q(0),
+         ],
+      q(myn) => [
+         q(0296),
+         q(0),
+         ],
+      q(myo) => [
+         q(4665),
+         q(0),
+         ],
+      q(myp) => [
+         q(4666),
+         q(0),
+         ],
+      q(myq) => [
+         q(4667),
+         q(0),
+         ],
+      q(myr) => [
+         q(4668),
+         q(0),
+         ],
+      q(mys) => [
+         q(4669),
+         q(0),
+         ],
+      q(myu) => [
+         q(4670),
+         q(0),
+         ],
+      q(myv) => [
+         q(0297),
+         q(0),
+         ],
+      q(myw) => [
+         q(4671),
+         q(0),
+         ],
+      q(myx) => [
+         q(4672),
+         q(0),
+         ],
+      q(myy) => [
+         q(4673),
+         q(0),
+         ],
+      q(myz) => [
+         q(4674),
+         q(0),
+         ],
+      q(mza) => [
+         q(4675),
+         q(0),
+         ],
+      q(mzb) => [
+         q(4676),
+         q(0),
+         ],
+      q(mzc) => [
+         q(4677),
+         q(0),
+         ],
+      q(mzd) => [
+         q(4678),
+         q(0),
+         ],
+      q(mze) => [
+         q(4679),
+         q(0),
+         ],
+      q(mzg) => [
+         q(4680),
+         q(0),
+         ],
+      q(mzh) => [
+         q(4681),
+         q(0),
+         ],
+      q(mzi) => [
+         q(4682),
+         q(0),
+         ],
+      q(mzj) => [
+         q(4683),
+         q(0),
+         ],
+      q(mzk) => [
+         q(4684),
+         q(0),
+         ],
+      q(mzl) => [
+         q(4685),
+         q(0),
+         ],
+      q(mzm) => [
+         q(4686),
+         q(0),
+         ],
+      q(mzn) => [
+         q(4687),
+         q(0),
+         ],
+      q(mzo) => [
+         q(4688),
+         q(0),
+         ],
+      q(mzp) => [
+         q(4689),
+         q(0),
+         ],
+      q(mzq) => [
+         q(4690),
+         q(0),
+         ],
+      q(mzr) => [
+         q(4691),
+         q(0),
+         ],
+      q(mzs) => [
+         q(4692),
+         q(0),
+         ],
+      q(mzt) => [
+         q(4693),
+         q(0),
+         ],
+      q(mzu) => [
+         q(4694),
+         q(0),
+         ],
+      q(mzv) => [
+         q(4695),
+         q(0),
+         ],
+      q(mzw) => [
+         q(4696),
+         q(0),
+         ],
+      q(mzx) => [
+         q(4697),
+         q(0),
+         ],
+      q(mzy) => [
+         q(4698),
+         q(0),
+         ],
+      q(mzz) => [
+         q(4699),
+         q(0),
+         ],
+      q(naa) => [
+         q(4700),
+         q(0),
+         ],
+      q(nab) => [
+         q(4701),
+         q(0),
+         ],
+      q(nac) => [
+         q(4702),
+         q(0),
+         ],
+      q(nad) => [
+         q(4703),
+         q(0),
+         ],
+      q(nae) => [
+         q(4704),
+         q(0),
+         ],
+      q(naf) => [
+         q(4705),
+         q(0),
+         ],
+      q(nag) => [
+         q(4706),
+         q(0),
+         ],
+      q(nah) => [
+         q(0298),
+         q(0),
+         ],
+      q(nai) => [
+         q(0299),
+         q(0),
+         ],
+      q(naj) => [
+         q(4707),
+         q(0),
+         ],
+      q(nak) => [
+         q(4708),
+         q(0),
+         ],
+      q(nal) => [
+         q(4709),
+         q(0),
+         ],
+      q(nam) => [
+         q(4710),
+         q(0),
+         ],
+      q(nan) => [
+         q(4711),
+         q(0),
+         ],
+      q(nao) => [
+         q(4712),
+         q(0),
+         ],
+      q(nap) => [
+         q(0300),
+         q(0),
+         ],
+      q(naq) => [
+         q(4713),
+         q(0),
+         ],
+      q(nar) => [
+         q(4714),
+         q(0),
+         ],
+      q(nas) => [
+         q(4715),
+         q(0),
+         ],
+      q(nat) => [
+         q(4716),
+         q(0),
+         ],
+      q(nau) => [
+         q(0301),
+         q(0),
+         ],
+      q(nav) => [
+         q(0302),
+         q(0),
+         ],
+      q(naw) => [
+         q(4717),
+         q(0),
+         ],
+      q(nax) => [
+         q(4718),
+         q(0),
+         ],
+      q(nay) => [
+         q(4719),
+         q(0),
+         ],
+      q(naz) => [
+         q(4720),
+         q(0),
+         ],
+      q(nba) => [
+         q(4721),
+         q(0),
+         ],
+      q(nbb) => [
+         q(4722),
+         q(0),
+         ],
+      q(nbc) => [
+         q(4723),
+         q(0),
+         ],
+      q(nbd) => [
+         q(4724),
+         q(0),
+         ],
+      q(nbe) => [
+         q(4725),
+         q(0),
+         ],
+      q(nbg) => [
+         q(4726),
+         q(0),
+         ],
+      q(nbh) => [
+         q(4727),
+         q(0),
+         ],
+      q(nbi) => [
+         q(4728),
+         q(0),
+         ],
+      q(nbj) => [
+         q(4729),
+         q(0),
+         ],
+      q(nbk) => [
+         q(4730),
+         q(0),
+         ],
+      q(nbl) => [
+         q(0303),
+         q(0),
+         ],
+      q(nbm) => [
+         q(4731),
+         q(0),
+         ],
+      q(nbn) => [
+         q(4732),
+         q(0),
+         ],
+      q(nbo) => [
+         q(4733),
+         q(0),
+         ],
+      q(nbp) => [
+         q(4734),
+         q(0),
+         ],
+      q(nbq) => [
+         q(4735),
+         q(0),
+         ],
+      q(nbr) => [
+         q(4736),
+         q(0),
+         ],
+      q(nbs) => [
+         q(4737),
+         q(0),
+         ],
+      q(nbt) => [
+         q(4738),
+         q(0),
+         ],
+      q(nbu) => [
+         q(4739),
+         q(0),
+         ],
+      q(nbv) => [
+         q(4740),
+         q(0),
+         ],
+      q(nbw) => [
+         q(4741),
+         q(0),
+         ],
+      q(nbx) => [
+         q(4742),
+         q(0),
+         ],
+      q(nby) => [
+         q(4743),
+         q(0),
+         ],
+      q(nca) => [
+         q(4744),
+         q(0),
+         ],
+      q(ncb) => [
+         q(4745),
+         q(0),
+         ],
+      q(ncc) => [
+         q(4746),
+         q(0),
+         ],
+      q(ncd) => [
+         q(4747),
+         q(0),
+         ],
+      q(nce) => [
+         q(4748),
+         q(0),
+         ],
+      q(ncf) => [
+         q(4749),
+         q(0),
+         ],
+      q(ncg) => [
+         q(4750),
+         q(0),
+         ],
+      q(nch) => [
+         q(4751),
+         q(0),
+         ],
+      q(nci) => [
+         q(4752),
+         q(0),
+         ],
+      q(ncj) => [
+         q(4753),
+         q(0),
+         ],
+      q(nck) => [
+         q(4754),
+         q(0),
+         ],
+      q(ncl) => [
+         q(4755),
+         q(0),
+         ],
+      q(ncm) => [
+         q(4756),
+         q(0),
+         ],
+      q(ncn) => [
+         q(4757),
+         q(0),
+         ],
+      q(nco) => [
+         q(4758),
+         q(0),
+         ],
+      q(ncp) => [
+         q(4759),
+         q(0),
+         ],
+      q(ncr) => [
+         q(4760),
+         q(0),
+         ],
+      q(ncs) => [
+         q(4761),
+         q(0),
+         ],
+      q(nct) => [
+         q(4762),
+         q(0),
+         ],
+      q(ncu) => [
+         q(4763),
+         q(0),
+         ],
+      q(ncx) => [
+         q(4764),
+         q(0),
+         ],
+      q(ncz) => [
+         q(4765),
+         q(0),
+         ],
+      q(nda) => [
+         q(4766),
+         q(0),
+         ],
+      q(ndb) => [
+         q(4767),
+         q(0),
+         ],
+      q(ndc) => [
+         q(4768),
+         q(0),
+         ],
+      q(ndd) => [
+         q(4769),
+         q(0),
+         ],
+      q(nde) => [
+         q(0304),
+         q(0),
+         ],
+      q(ndf) => [
+         q(4770),
+         q(0),
+         ],
+      q(ndg) => [
+         q(4771),
+         q(0),
+         ],
+      q(ndh) => [
+         q(4772),
+         q(0),
+         ],
+      q(ndi) => [
+         q(4773),
+         q(0),
+         ],
+      q(ndj) => [
+         q(4774),
+         q(0),
+         ],
+      q(ndk) => [
+         q(4775),
+         q(0),
+         ],
+      q(ndl) => [
+         q(4776),
+         q(0),
+         ],
+      q(ndm) => [
+         q(4777),
+         q(0),
+         ],
+      q(ndn) => [
+         q(4778),
+         q(0),
+         ],
+      q(ndo) => [
+         q(0305),
+         q(0),
+         ],
+      q(ndp) => [
+         q(4779),
+         q(0),
+         ],
+      q(ndq) => [
+         q(4780),
+         q(0),
+         ],
+      q(ndr) => [
+         q(4781),
+         q(0),
+         ],
+      q(nds) => [
+         q(0306),
+         q(0),
+         ],
+      q(ndt) => [
+         q(4782),
+         q(0),
+         ],
+      q(ndu) => [
+         q(4783),
+         q(0),
+         ],
+      q(ndv) => [
+         q(4784),
+         q(0),
+         ],
+      q(ndw) => [
+         q(4785),
+         q(0),
+         ],
+      q(ndx) => [
+         q(4786),
+         q(0),
+         ],
+      q(ndy) => [
+         q(4787),
+         q(0),
+         ],
+      q(ndz) => [
+         q(4788),
+         q(0),
+         ],
+      q(nea) => [
+         q(4789),
+         q(0),
+         ],
+      q(neb) => [
+         q(4790),
+         q(0),
+         ],
+      q(nec) => [
+         q(4791),
+         q(0),
+         ],
+      q(ned) => [
+         q(4792),
+         q(0),
+         ],
+      q(nee) => [
+         q(4793),
+         q(0),
+         ],
+      q(nef) => [
+         q(4794),
+         q(0),
+         ],
+      q(neg) => [
+         q(4795),
+         q(0),
+         ],
+      q(neh) => [
+         q(4796),
+         q(0),
+         ],
+      q(nei) => [
+         q(4797),
+         q(0),
+         ],
+      q(nej) => [
+         q(4798),
+         q(0),
+         ],
+      q(nek) => [
+         q(4799),
+         q(0),
+         ],
+      q(nem) => [
+         q(4800),
+         q(0),
+         ],
+      q(nen) => [
+         q(4801),
+         q(0),
+         ],
+      q(neo) => [
+         q(4802),
+         q(0),
+         ],
+      q(nep) => [
+         q(0307),
+         q(0),
+         ],
+      q(neq) => [
+         q(4803),
+         q(0),
+         ],
+      q(ner) => [
+         q(4804),
+         q(0),
+         ],
+      q(nes) => [
+         q(4805),
+         q(0),
+         ],
+      q(net) => [
+         q(4806),
+         q(0),
+         ],
+      q(neu) => [
+         q(4807),
+         q(0),
+         ],
+      q(nev) => [
+         q(4808),
+         q(0),
+         ],
+      q(new) => [
+         q(0308),
+         q(0),
+         ],
+      q(nex) => [
+         q(4809),
+         q(0),
+         ],
+      q(ney) => [
+         q(4810),
+         q(0),
+         ],
+      q(nez) => [
+         q(4811),
+         q(0),
+         ],
+      q(nfa) => [
+         q(4812),
+         q(0),
+         ],
+      q(nfd) => [
+         q(4813),
+         q(0),
+         ],
+      q(nfl) => [
+         q(4814),
+         q(0),
+         ],
+      q(nfr) => [
+         q(4815),
+         q(0),
+         ],
+      q(nfu) => [
+         q(4816),
+         q(0),
+         ],
+      q(nga) => [
+         q(4817),
+         q(0),
+         ],
+      q(ngb) => [
+         q(4818),
+         q(0),
+         ],
+      q(ngc) => [
+         q(4819),
+         q(0),
+         ],
+      q(ngd) => [
+         q(4820),
+         q(0),
+         ],
+      q(nge) => [
+         q(4821),
+         q(0),
+         ],
+      q(ngf) => [
+         q(0516),
+         q(0),
+         ],
+      q(ngg) => [
+         q(4822),
+         q(0),
+         ],
+      q(ngh) => [
+         q(4823),
+         q(0),
+         ],
+      q(ngi) => [
+         q(4824),
+         q(0),
+         ],
+      q(ngj) => [
+         q(4825),
+         q(0),
+         ],
+      q(ngk) => [
+         q(4826),
+         q(0),
+         ],
+      q(ngl) => [
+         q(4827),
+         q(0),
+         ],
+      q(ngm) => [
+         q(4828),
+         q(0),
+         ],
+      q(ngn) => [
+         q(4829),
+         q(0),
+         ],
+      q(ngo) => [
+         q(4830),
+         q(0),
+         ],
+      q(ngp) => [
+         q(4831),
+         q(0),
+         ],
+      q(ngq) => [
+         q(4832),
+         q(0),
+         ],
+      q(ngr) => [
+         q(4833),
+         q(0),
+         ],
+      q(ngs) => [
+         q(4834),
+         q(0),
+         ],
+      q(ngt) => [
+         q(4835),
+         q(0),
+         ],
+      q(ngu) => [
+         q(4836),
+         q(0),
+         ],
+      q(ngv) => [
+         q(4837),
+         q(0),
+         ],
+      q(ngw) => [
+         q(4838),
+         q(0),
+         ],
+      q(ngx) => [
+         q(4839),
+         q(0),
+         ],
+      q(ngy) => [
+         q(4840),
+         q(0),
+         ],
+      q(ngz) => [
+         q(4841),
+         q(0),
+         ],
+      q(nha) => [
+         q(4842),
+         q(0),
+         ],
+      q(nhb) => [
+         q(4843),
+         q(0),
+         ],
+      q(nhc) => [
+         q(4844),
+         q(0),
+         ],
+      q(nhd) => [
+         q(4845),
+         q(0),
+         ],
+      q(nhe) => [
+         q(4846),
+         q(0),
+         ],
+      q(nhf) => [
+         q(4847),
+         q(0),
+         ],
+      q(nhg) => [
+         q(4848),
+         q(0),
+         ],
+      q(nhh) => [
+         q(4849),
+         q(0),
+         ],
+      q(nhi) => [
+         q(4850),
+         q(0),
+         ],
+      q(nhk) => [
+         q(4851),
+         q(0),
+         ],
+      q(nhm) => [
+         q(4852),
+         q(0),
+         ],
+      q(nhn) => [
+         q(4853),
+         q(0),
+         ],
+      q(nho) => [
+         q(4854),
+         q(0),
+         ],
+      q(nhp) => [
+         q(4855),
+         q(0),
+         ],
+      q(nhq) => [
+         q(4856),
+         q(0),
+         ],
+      q(nhr) => [
+         q(4857),
+         q(0),
+         ],
+      q(nht) => [
+         q(4858),
+         q(0),
+         ],
+      q(nhu) => [
+         q(4859),
+         q(0),
+         ],
+      q(nhv) => [
+         q(4860),
+         q(0),
+         ],
+      q(nhw) => [
+         q(4861),
+         q(0),
+         ],
+      q(nhx) => [
+         q(4862),
+         q(0),
+         ],
+      q(nhy) => [
+         q(4863),
+         q(0),
+         ],
+      q(nhz) => [
+         q(4864),
+         q(0),
+         ],
+      q(nia) => [
+         q(0309),
+         q(0),
+         ],
+      q(nib) => [
+         q(4865),
+         q(0),
+         ],
+      q(nic) => [
+         q(0310),
+         q(0),
+         ],
+      q(nid) => [
+         q(4866),
+         q(0),
+         ],
+      q(nie) => [
+         q(4867),
+         q(0),
+         ],
+      q(nif) => [
+         q(4868),
+         q(0),
+         ],
+      q(nig) => [
+         q(4869),
+         q(0),
+         ],
+      q(nih) => [
+         q(4870),
+         q(0),
+         ],
+      q(nii) => [
+         q(4871),
+         q(0),
+         ],
+      q(nij) => [
+         q(4872),
+         q(0),
+         ],
+      q(nik) => [
+         q(4873),
+         q(0),
+         ],
+      q(nil) => [
+         q(4874),
+         q(0),
+         ],
+      q(nim) => [
+         q(4875),
+         q(0),
+         ],
+      q(nin) => [
+         q(4876),
+         q(0),
+         ],
+      q(nio) => [
+         q(4877),
+         q(0),
+         ],
+      q(niq) => [
+         q(4878),
+         q(0),
+         ],
+      q(nir) => [
+         q(4879),
+         q(0),
+         ],
+      q(nis) => [
+         q(4880),
+         q(0),
+         ],
+      q(nit) => [
+         q(4881),
+         q(0),
+         ],
+      q(niu) => [
+         q(0311),
+         q(0),
+         ],
+      q(niv) => [
+         q(4882),
+         q(0),
+         ],
+      q(niw) => [
+         q(4883),
+         q(0),
+         ],
+      q(nix) => [
+         q(4884),
+         q(0),
+         ],
+      q(niy) => [
+         q(4885),
+         q(0),
+         ],
+      q(niz) => [
+         q(4886),
+         q(0),
+         ],
+      q(nja) => [
+         q(4887),
+         q(0),
+         ],
+      q(njb) => [
+         q(4888),
+         q(0),
+         ],
+      q(njd) => [
+         q(4889),
+         q(0),
+         ],
+      q(njh) => [
+         q(4890),
+         q(0),
+         ],
+      q(nji) => [
+         q(4891),
+         q(0),
+         ],
+      q(njj) => [
+         q(4892),
+         q(0),
+         ],
+      q(njl) => [
+         q(4893),
+         q(0),
+         ],
+      q(njm) => [
+         q(4894),
+         q(0),
+         ],
+      q(njn) => [
+         q(4895),
+         q(0),
+         ],
+      q(njo) => [
+         q(4896),
+         q(0),
+         ],
+      q(njr) => [
+         q(4897),
+         q(0),
+         ],
+      q(njs) => [
+         q(4898),
+         q(0),
+         ],
+      q(njt) => [
+         q(4899),
+         q(0),
+         ],
+      q(nju) => [
+         q(4900),
+         q(0),
+         ],
+      q(njx) => [
+         q(4901),
+         q(0),
+         ],
+      q(njy) => [
+         q(4902),
+         q(0),
+         ],
+      q(njz) => [
+         q(4903),
+         q(0),
+         ],
+      q(nka) => [
+         q(4904),
+         q(0),
+         ],
+      q(nkb) => [
+         q(4905),
+         q(0),
+         ],
+      q(nkc) => [
+         q(4906),
+         q(0),
+         ],
+      q(nkd) => [
+         q(4907),
+         q(0),
+         ],
+      q(nke) => [
+         q(4908),
+         q(0),
+         ],
+      q(nkf) => [
+         q(4909),
+         q(0),
+         ],
+      q(nkg) => [
+         q(4910),
+         q(0),
+         ],
+      q(nkh) => [
+         q(4911),
+         q(0),
+         ],
+      q(nki) => [
+         q(4912),
+         q(0),
+         ],
+      q(nkj) => [
+         q(4913),
+         q(0),
+         ],
+      q(nkk) => [
+         q(4914),
+         q(0),
+         ],
+      q(nkm) => [
+         q(4915),
+         q(0),
+         ],
+      q(nkn) => [
+         q(4916),
+         q(0),
+         ],
+      q(nko) => [
+         q(4917),
+         q(0),
+         ],
+      q(nkp) => [
+         q(4918),
+         q(0),
+         ],
+      q(nkq) => [
+         q(4919),
+         q(0),
+         ],
+      q(nkr) => [
+         q(4920),
+         q(0),
+         ],
+      q(nks) => [
+         q(4921),
+         q(0),
+         ],
+      q(nkt) => [
+         q(4922),
+         q(0),
+         ],
+      q(nku) => [
+         q(4923),
+         q(0),
+         ],
+      q(nkv) => [
+         q(4924),
+         q(0),
+         ],
+      q(nkw) => [
+         q(4925),
+         q(0),
+         ],
+      q(nkx) => [
+         q(4926),
+         q(0),
+         ],
+      q(nkz) => [
+         q(4927),
+         q(0),
+         ],
+      q(nla) => [
+         q(4928),
+         q(0),
+         ],
+      q(nlc) => [
+         q(4929),
+         q(0),
+         ],
+      q(nle) => [
+         q(4930),
+         q(0),
+         ],
+      q(nlg) => [
+         q(4931),
+         q(0),
+         ],
+      q(nli) => [
+         q(4932),
+         q(0),
+         ],
+      q(nlj) => [
+         q(4933),
+         q(0),
+         ],
+      q(nlk) => [
+         q(4934),
+         q(0),
+         ],
+      q(nll) => [
+         q(4935),
+         q(0),
+         ],
+      q(nlo) => [
+         q(4936),
+         q(0),
+         ],
+      q(nlr) => [
+         q(4937),
+         q(0),
+         ],
+      q(nlu) => [
+         q(4938),
+         q(0),
+         ],
+      q(nlv) => [
+         q(4939),
+         q(0),
+         ],
+      q(nlx) => [
+         q(4940),
+         q(0),
+         ],
+      q(nly) => [
+         q(4941),
+         q(0),
+         ],
+      q(nlz) => [
+         q(4942),
+         q(0),
+         ],
+      q(nma) => [
+         q(4943),
+         q(0),
+         ],
+      q(nmb) => [
+         q(4944),
+         q(0),
+         ],
+      q(nmc) => [
+         q(4945),
+         q(0),
+         ],
+      q(nmd) => [
+         q(4946),
+         q(0),
+         ],
+      q(nme) => [
+         q(4947),
+         q(0),
+         ],
+      q(nmf) => [
+         q(4948),
+         q(0),
+         ],
+      q(nmg) => [
+         q(4949),
+         q(0),
+         ],
+      q(nmh) => [
+         q(4950),
+         q(0),
+         ],
+      q(nmi) => [
+         q(4951),
+         q(0),
+         ],
+      q(nmj) => [
+         q(4952),
+         q(0),
+         ],
+      q(nmk) => [
+         q(4953),
+         q(0),
+         ],
+      q(nml) => [
+         q(4954),
+         q(0),
+         ],
+      q(nmm) => [
+         q(4955),
+         q(0),
+         ],
+      q(nmn) => [
+         q(4956),
+         q(0),
+         ],
+      q(nmo) => [
+         q(4957),
+         q(0),
+         ],
+      q(nmp) => [
+         q(4958),
+         q(0),
+         ],
+      q(nmq) => [
+         q(4959),
+         q(0),
+         ],
+      q(nmr) => [
+         q(4960),
+         q(0),
+         ],
+      q(nms) => [
+         q(4961),
+         q(0),
+         ],
+      q(nmt) => [
+         q(4962),
+         q(0),
+         ],
+      q(nmu) => [
+         q(4963),
+         q(0),
+         ],
+      q(nmv) => [
+         q(4964),
+         q(0),
+         ],
+      q(nmw) => [
+         q(4965),
+         q(0),
+         ],
+      q(nmx) => [
+         q(4966),
+         q(0),
+         ],
+      q(nmy) => [
+         q(4967),
+         q(0),
+         ],
+      q(nmz) => [
+         q(4968),
+         q(0),
+         ],
+      q(nna) => [
+         q(4969),
+         q(0),
+         ],
+      q(nnb) => [
+         q(4970),
+         q(0),
+         ],
+      q(nnc) => [
+         q(4971),
+         q(0),
+         ],
+      q(nnd) => [
+         q(4972),
+         q(0),
+         ],
+      q(nne) => [
+         q(4973),
+         q(0),
+         ],
+      q(nnf) => [
+         q(4974),
+         q(0),
+         ],
+      q(nng) => [
+         q(4975),
+         q(0),
+         ],
+      q(nnh) => [
+         q(4976),
+         q(0),
+         ],
+      q(nni) => [
+         q(4977),
+         q(0),
+         ],
+      q(nnj) => [
+         q(4978),
+         q(0),
+         ],
+      q(nnk) => [
+         q(4979),
+         q(0),
+         ],
+      q(nnl) => [
+         q(4980),
+         q(0),
+         ],
+      q(nnm) => [
+         q(4981),
+         q(0),
+         ],
+      q(nnn) => [
+         q(4982),
+         q(0),
+         ],
+      q(nno) => [
+         q(0312),
+         q(0),
+         ],
+      q(nnp) => [
+         q(4983),
+         q(0),
+         ],
+      q(nnq) => [
+         q(4984),
+         q(0),
+         ],
+      q(nnr) => [
+         q(4985),
+         q(0),
+         ],
+      q(nns) => [
+         q(4986),
+         q(0),
+         ],
+      q(nnt) => [
+         q(4987),
+         q(0),
+         ],
+      q(nnu) => [
+         q(4988),
+         q(0),
+         ],
+      q(nnv) => [
+         q(4989),
+         q(0),
+         ],
+      q(nnw) => [
+         q(4990),
+         q(0),
+         ],
+      q(nnx) => [
+         q(4991),
+         q(0),
+         ],
+      q(nny) => [
+         q(4992),
+         q(0),
+         ],
+      q(nnz) => [
+         q(4993),
+         q(0),
+         ],
+      q(noa) => [
+         q(4994),
+         q(0),
+         ],
+      q(nob) => [
+         q(0313),
+         q(0),
+         ],
+      q(noc) => [
+         q(4995),
+         q(0),
+         ],
+      q(nod) => [
+         q(4996),
+         q(0),
+         ],
+      q(noe) => [
+         q(4997),
+         q(0),
+         ],
+      q(nof) => [
+         q(4998),
+         q(0),
+         ],
+      q(nog) => [
+         q(0314),
+         q(0),
+         ],
+      q(noh) => [
+         q(4999),
+         q(0),
+         ],
+      q(noi) => [
+         q(5000),
+         q(0),
+         ],
+      q(noj) => [
+         q(5001),
+         q(0),
+         ],
+      q(nok) => [
+         q(5002),
+         q(0),
+         ],
+      q(nom) => [
+         q(5003),
+         q(0),
+         ],
+      q(non) => [
+         q(0315),
+         q(1),
+         ],
+      q(nop) => [
+         q(5004),
+         q(0),
+         ],
+      q(noq) => [
+         q(5005),
+         q(0),
+         ],
+      q(nor) => [
+         q(0316),
+         q(0),
+         ],
+      q(nos) => [
+         q(5006),
+         q(0),
+         ],
+      q(not) => [
+         q(5007),
+         q(0),
+         ],
+      q(nou) => [
+         q(5008),
+         q(0),
+         ],
+      q(nov) => [
+         q(5009),
+         q(0),
+         ],
+      q(now) => [
+         q(5010),
+         q(0),
+         ],
+      q(noy) => [
+         q(5011),
+         q(0),
+         ],
+      q(noz) => [
+         q(5012),
+         q(0),
+         ],
+      q(npa) => [
+         q(5013),
+         q(0),
+         ],
+      q(npb) => [
+         q(5014),
+         q(0),
+         ],
+      q(npg) => [
+         q(5015),
+         q(0),
+         ],
+      q(nph) => [
+         q(5016),
+         q(0),
+         ],
+      q(npi) => [
+         q(5017),
+         q(0),
+         ],
+      q(npl) => [
+         q(5018),
+         q(0),
+         ],
+      q(npn) => [
+         q(5019),
+         q(0),
+         ],
+      q(npo) => [
+         q(5020),
+         q(0),
+         ],
+      q(nps) => [
+         q(5021),
+         q(0),
+         ],
+      q(npu) => [
+         q(5022),
+         q(0),
+         ],
+      q(npy) => [
+         q(5023),
+         q(0),
+         ],
+      q(nqg) => [
+         q(5024),
+         q(0),
+         ],
+      q(nqk) => [
+         q(5025),
+         q(0),
+         ],
+      q(nqm) => [
+         q(5026),
+         q(0),
+         ],
+      q(nqn) => [
+         q(5027),
+         q(0),
+         ],
+      q(nqo) => [
+         q(0317),
+         q(0),
+         ],
+      q(nqy) => [
+         q(5028),
+         q(0),
+         ],
+      q(nra) => [
+         q(5029),
+         q(0),
+         ],
+      q(nrb) => [
+         q(5030),
+         q(0),
+         ],
+      q(nrc) => [
+         q(5031),
+         q(0),
+         ],
+      q(nre) => [
+         q(5032),
+         q(0),
+         ],
+      q(nrg) => [
+         q(5033),
+         q(0),
+         ],
+      q(nri) => [
+         q(5034),
+         q(0),
+         ],
+      q(nrl) => [
+         q(5035),
+         q(0),
+         ],
+      q(nrm) => [
+         q(5036),
+         q(0),
+         ],
+      q(nrn) => [
+         q(5037),
+         q(0),
+         ],
+      q(nrp) => [
+         q(5038),
+         q(0),
+         ],
+      q(nrr) => [
+         q(5039),
+         q(0),
+         ],
+      q(nrt) => [
+         q(5040),
+         q(0),
+         ],
+      q(nru) => [
+         q(5041),
+         q(0),
+         ],
+      q(nrx) => [
+         q(5042),
+         q(0),
+         ],
+      q(nrz) => [
+         q(5043),
+         q(0),
+         ],
+      q(nsa) => [
+         q(5044),
+         q(0),
+         ],
+      q(nsc) => [
+         q(5045),
+         q(0),
+         ],
+      q(nsd) => [
+         q(5046),
+         q(0),
+         ],
+      q(nse) => [
+         q(5047),
+         q(0),
+         ],
+      q(nsf) => [
+         q(5048),
+         q(0),
+         ],
+      q(nsg) => [
+         q(5049),
+         q(0),
+         ],
+      q(nsh) => [
+         q(5050),
+         q(0),
+         ],
+      q(nsi) => [
+         q(5051),
+         q(0),
+         ],
+      q(nsk) => [
+         q(5052),
+         q(0),
+         ],
+      q(nsl) => [
+         q(5053),
+         q(0),
+         ],
+      q(nsm) => [
+         q(5054),
+         q(0),
+         ],
+      q(nsn) => [
+         q(5055),
+         q(0),
+         ],
+      q(nso) => [
+         q(0318),
+         q(0),
+         ],
+      q(nsp) => [
+         q(5056),
+         q(0),
+         ],
+      q(nsq) => [
+         q(5057),
+         q(0),
+         ],
+      q(nsr) => [
+         q(5058),
+         q(0),
+         ],
+      q(nss) => [
+         q(5059),
+         q(0),
+         ],
+      q(nst) => [
+         q(5060),
+         q(0),
+         ],
+      q(nsu) => [
+         q(5061),
+         q(0),
+         ],
+      q(nsv) => [
+         q(5062),
+         q(0),
+         ],
+      q(nsw) => [
+         q(5063),
+         q(0),
+         ],
+      q(nsx) => [
+         q(5064),
+         q(0),
+         ],
+      q(nsy) => [
+         q(5065),
+         q(0),
+         ],
+      q(nsz) => [
+         q(5066),
+         q(0),
+         ],
+      q(nte) => [
+         q(5067),
+         q(0),
+         ],
+      q(nti) => [
+         q(5068),
+         q(0),
+         ],
+      q(ntj) => [
+         q(5069),
+         q(0),
+         ],
+      q(ntk) => [
+         q(5070),
+         q(0),
+         ],
+      q(ntm) => [
+         q(5071),
+         q(0),
+         ],
+      q(nto) => [
+         q(5072),
+         q(0),
+         ],
+      q(ntp) => [
+         q(5073),
+         q(0),
+         ],
+      q(ntr) => [
+         q(5074),
+         q(0),
+         ],
+      q(nts) => [
+         q(5075),
+         q(0),
+         ],
+      q(ntu) => [
+         q(5076),
+         q(0),
+         ],
+      q(ntw) => [
+         q(5077),
+         q(0),
+         ],
+      q(ntx) => [
+         q(5078),
+         q(0),
+         ],
+      q(nty) => [
+         q(5079),
+         q(0),
+         ],
+      q(ntz) => [
+         q(5080),
+         q(0),
+         ],
+      q(nua) => [
+         q(5081),
+         q(0),
+         ],
+      q(nub) => [
+         q(0319),
+         q(0),
+         ],
+      q(nuc) => [
+         q(5082),
+         q(0),
+         ],
+      q(nud) => [
+         q(5083),
+         q(0),
+         ],
+      q(nue) => [
+         q(5084),
+         q(0),
+         ],
+      q(nuf) => [
+         q(5085),
+         q(0),
+         ],
+      q(nug) => [
+         q(5086),
+         q(0),
+         ],
+      q(nuh) => [
+         q(5087),
+         q(0),
+         ],
+      q(nui) => [
+         q(5088),
+         q(0),
+         ],
+      q(nuj) => [
+         q(5089),
+         q(0),
+         ],
+      q(nuk) => [
+         q(5090),
+         q(0),
+         ],
+      q(nul) => [
+         q(5091),
+         q(0),
+         ],
+      q(num) => [
+         q(5092),
+         q(0),
+         ],
+      q(nun) => [
+         q(5093),
+         q(0),
+         ],
+      q(nuo) => [
+         q(5094),
+         q(0),
+         ],
+      q(nup) => [
+         q(5095),
+         q(0),
+         ],
+      q(nuq) => [
+         q(5096),
+         q(0),
+         ],
+      q(nur) => [
+         q(5097),
+         q(0),
+         ],
+      q(nus) => [
+         q(5098),
+         q(0),
+         ],
+      q(nut) => [
+         q(5099),
+         q(0),
+         ],
+      q(nuu) => [
+         q(5100),
+         q(0),
+         ],
+      q(nuv) => [
+         q(5101),
+         q(0),
+         ],
+      q(nuw) => [
+         q(5102),
+         q(0),
+         ],
+      q(nux) => [
+         q(5103),
+         q(0),
+         ],
+      q(nuy) => [
+         q(5104),
+         q(0),
+         ],
+      q(nuz) => [
+         q(5105),
+         q(0),
+         ],
+      q(nvh) => [
+         q(5106),
+         q(0),
+         ],
+      q(nvm) => [
+         q(5107),
+         q(0),
+         ],
+      q(nvo) => [
+         q(5108),
+         q(0),
+         ],
+      q(nwa) => [
+         q(5109),
+         q(0),
+         ],
+      q(nwb) => [
+         q(5110),
+         q(0),
+         ],
+      q(nwc) => [
+         q(0320),
+         q(0),
+         ],
+      q(nwe) => [
+         q(5111),
+         q(0),
+         ],
+      q(nwg) => [
+         q(5112),
+         q(0),
+         ],
+      q(nwi) => [
+         q(5113),
+         q(0),
+         ],
+      q(nwm) => [
+         q(5114),
+         q(0),
+         ],
+      q(nwo) => [
+         q(5115),
+         q(0),
+         ],
+      q(nwr) => [
+         q(5116),
+         q(0),
+         ],
+      q(nwx) => [
+         q(5117),
+         q(0),
+         ],
+      q(nwy) => [
+         q(5118),
+         q(0),
+         ],
+      q(nxa) => [
+         q(5119),
+         q(0),
+         ],
+      q(nxd) => [
+         q(5120),
+         q(0),
+         ],
+      q(nxe) => [
+         q(5121),
+         q(0),
+         ],
+      q(nxg) => [
+         q(5122),
+         q(0),
+         ],
+      q(nxi) => [
+         q(5123),
+         q(0),
+         ],
+      q(nxk) => [
+         q(5124),
+         q(0),
+         ],
+      q(nxl) => [
+         q(5125),
+         q(0),
+         ],
+      q(nxm) => [
+         q(5126),
+         q(0),
+         ],
+      q(nxn) => [
+         q(5127),
+         q(0),
+         ],
+      q(nxq) => [
+         q(5128),
+         q(0),
+         ],
+      q(nxr) => [
+         q(5129),
+         q(0),
+         ],
+      q(nxu) => [
+         q(5130),
+         q(0),
+         ],
+      q(nxx) => [
+         q(5131),
+         q(0),
+         ],
+      q(nya) => [
+         q(0321),
+         q(0),
+         ],
+      q(nyb) => [
+         q(5132),
+         q(0),
+         ],
+      q(nyc) => [
+         q(5133),
+         q(0),
+         ],
+      q(nyd) => [
+         q(5134),
+         q(0),
+         ],
+      q(nye) => [
+         q(5135),
+         q(0),
+         ],
+      q(nyf) => [
+         q(5136),
+         q(0),
+         ],
+      q(nyg) => [
+         q(5137),
+         q(0),
+         ],
+      q(nyh) => [
+         q(5138),
+         q(0),
+         ],
+      q(nyi) => [
+         q(5139),
+         q(0),
+         ],
+      q(nyj) => [
+         q(5140),
+         q(0),
+         ],
+      q(nyk) => [
+         q(5141),
+         q(0),
+         ],
+      q(nyl) => [
+         q(5142),
+         q(0),
+         ],
+      q(nym) => [
+         q(0322),
+         q(0),
+         ],
+      q(nyn) => [
+         q(0323),
+         q(0),
+         ],
+      q(nyo) => [
+         q(0324),
+         q(0),
+         ],
+      q(nyp) => [
+         q(5143),
+         q(0),
+         ],
+      q(nyq) => [
+         q(5144),
+         q(0),
+         ],
+      q(nyr) => [
+         q(5145),
+         q(0),
+         ],
+      q(nys) => [
+         q(5146),
+         q(0),
+         ],
+      q(nyt) => [
+         q(5147),
+         q(0),
+         ],
+      q(nyu) => [
+         q(5148),
+         q(0),
+         ],
+      q(nyv) => [
+         q(5149),
+         q(0),
+         ],
+      q(nyw) => [
+         q(5150),
+         q(0),
+         ],
+      q(nyx) => [
+         q(5151),
+         q(0),
+         ],
+      q(nyy) => [
+         q(5152),
+         q(0),
+         ],
+      q(nza) => [
+         q(5153),
+         q(0),
+         ],
+      q(nzb) => [
+         q(5154),
+         q(0),
+         ],
+      q(nzi) => [
+         q(0325),
+         q(0),
+         ],
+      q(nzk) => [
+         q(5155),
+         q(0),
+         ],
+      q(nzm) => [
+         q(5156),
+         q(0),
+         ],
+      q(nzs) => [
+         q(5157),
+         q(0),
+         ],
+      q(nzu) => [
+         q(5158),
+         q(0),
+         ],
+      q(nzy) => [
+         q(5159),
+         q(0),
+         ],
+      q(nzz) => [
+         q(5160),
+         q(0),
+         ],
+      q(oaa) => [
+         q(5161),
+         q(0),
+         ],
+      q(oac) => [
+         q(5162),
+         q(0),
+         ],
+      q(oar) => [
+         q(5163),
+         q(0),
+         ],
+      q(oav) => [
+         q(5164),
+         q(0),
+         ],
+      q(obi) => [
+         q(5165),
+         q(0),
+         ],
+      q(obk) => [
+         q(5166),
+         q(0),
+         ],
+      q(obl) => [
+         q(5167),
+         q(0),
+         ],
+      q(obm) => [
+         q(5168),
+         q(0),
+         ],
+      q(obo) => [
+         q(5169),
+         q(0),
+         ],
+      q(obr) => [
+         q(5170),
+         q(0),
+         ],
+      q(obt) => [
+         q(5171),
+         q(0),
+         ],
+      q(obu) => [
+         q(5172),
+         q(0),
+         ],
+      q(oca) => [
+         q(5173),
+         q(0),
+         ],
+      q(och) => [
+         q(5174),
+         q(0),
+         ],
+      q(oci) => [
+         q(0326),
+         q(0),
+         ],
+      q(oco) => [
+         q(5175),
+         q(0),
+         ],
+      q(ocu) => [
+         q(5176),
+         q(0),
+         ],
+      q(oda) => [
+         q(5177),
+         q(0),
+         ],
+      q(odk) => [
+         q(5178),
+         q(0),
+         ],
+      q(odt) => [
+         q(5179),
+         q(0),
+         ],
+      q(odu) => [
+         q(5180),
+         q(0),
+         ],
+      q(ofo) => [
+         q(5181),
+         q(0),
+         ],
+      q(ofs) => [
+         q(5182),
+         q(0),
+         ],
+      q(ofu) => [
+         q(5183),
+         q(0),
+         ],
+      q(ogb) => [
+         q(5184),
+         q(0),
+         ],
+      q(ogc) => [
+         q(5185),
+         q(0),
+         ],
+      q(oge) => [
+         q(5186),
+         q(0),
+         ],
+      q(ogg) => [
+         q(5187),
+         q(0),
+         ],
+      q(ogo) => [
+         q(5188),
+         q(0),
+         ],
+      q(ogu) => [
+         q(5189),
+         q(0),
+         ],
+      q(oht) => [
+         q(5190),
+         q(0),
+         ],
+      q(ohu) => [
+         q(5191),
+         q(0),
+         ],
+      q(oia) => [
+         q(5192),
+         q(0),
+         ],
+      q(oin) => [
+         q(5193),
+         q(0),
+         ],
+      q(ojb) => [
+         q(5194),
+         q(0),
+         ],
+      q(ojc) => [
+         q(5195),
+         q(0),
+         ],
+      q(ojg) => [
+         q(5196),
+         q(0),
+         ],
+      q(oji) => [
+         q(0327),
+         q(0),
+         ],
+      q(ojp) => [
+         q(5197),
+         q(0),
+         ],
+      q(ojs) => [
+         q(5198),
+         q(0),
+         ],
+      q(ojv) => [
+         q(5199),
+         q(0),
+         ],
+      q(ojw) => [
+         q(5200),
+         q(0),
+         ],
+      q(oka) => [
+         q(5201),
+         q(0),
+         ],
+      q(okb) => [
+         q(5202),
+         q(0),
+         ],
+      q(okd) => [
+         q(5203),
+         q(0),
+         ],
+      q(oke) => [
+         q(5204),
+         q(0),
+         ],
+      q(okg) => [
+         q(5205),
+         q(0),
+         ],
+      q(okh) => [
+         q(5206),
+         q(0),
+         ],
+      q(oki) => [
+         q(5207),
+         q(0),
+         ],
+      q(okj) => [
+         q(5208),
+         q(0),
+         ],
+      q(okk) => [
+         q(5209),
+         q(0),
+         ],
+      q(okl) => [
+         q(5210),
+         q(0),
+         ],
+      q(okm) => [
+         q(5211),
+         q(0),
+         ],
+      q(okn) => [
+         q(5212),
+         q(0),
+         ],
+      q(oko) => [
+         q(5213),
+         q(0),
+         ],
+      q(okr) => [
+         q(5214),
+         q(0),
+         ],
+      q(oks) => [
+         q(5215),
+         q(0),
+         ],
+      q(oku) => [
+         q(5216),
+         q(0),
+         ],
+      q(okv) => [
+         q(5217),
+         q(0),
+         ],
+      q(okx) => [
+         q(5218),
+         q(0),
+         ],
+      q(ola) => [
+         q(5219),
+         q(0),
+         ],
+      q(old) => [
+         q(5220),
+         q(0),
+         ],
+      q(ole) => [
+         q(5221),
+         q(0),
+         ],
+      q(olm) => [
+         q(5222),
+         q(0),
+         ],
+      q(olo) => [
+         q(5223),
+         q(0),
+         ],
+      q(olr) => [
+         q(5224),
+         q(0),
+         ],
+      q(oma) => [
+         q(5225),
+         q(0),
+         ],
+      q(omb) => [
+         q(5226),
+         q(0),
+         ],
+      q(omc) => [
+         q(5227),
+         q(0),
+         ],
+      q(ome) => [
+         q(5228),
+         q(0),
+         ],
+      q(omg) => [
+         q(5229),
+         q(0),
+         ],
+      q(omi) => [
+         q(5230),
+         q(0),
+         ],
+      q(omk) => [
+         q(5231),
+         q(0),
+         ],
+      q(oml) => [
+         q(5232),
+         q(0),
+         ],
+      q(omn) => [
+         q(5233),
+         q(0),
+         ],
+      q(omo) => [
+         q(5234),
+         q(0),
+         ],
+      q(omp) => [
+         q(5235),
+         q(0),
+         ],
+      q(omq) => [
+         q(0517),
+         q(0),
+         ],
+      q(omr) => [
+         q(5236),
+         q(0),
+         ],
+      q(omt) => [
+         q(5237),
+         q(0),
+         ],
+      q(omu) => [
+         q(5238),
+         q(0),
+         ],
+      q(omv) => [
+         q(0518),
+         q(0),
+         ],
+      q(omw) => [
+         q(5239),
+         q(0),
+         ],
+      q(omx) => [
+         q(5240),
+         q(0),
+         ],
+      q(ona) => [
+         q(5241),
+         q(0),
+         ],
+      q(onb) => [
+         q(5242),
+         q(0),
+         ],
+      q(one) => [
+         q(5243),
+         q(0),
+         ],
+      q(ong) => [
+         q(5244),
+         q(0),
+         ],
+      q(oni) => [
+         q(5245),
+         q(0),
+         ],
+      q(onj) => [
+         q(5246),
+         q(0),
+         ],
+      q(onk) => [
+         q(5247),
+         q(0),
+         ],
+      q(onn) => [
+         q(5248),
+         q(0),
+         ],
+      q(ono) => [
+         q(5249),
+         q(0),
+         ],
+      q(onp) => [
+         q(5250),
+         q(0),
+         ],
+      q(onr) => [
+         q(5251),
+         q(0),
+         ],
+      q(ons) => [
+         q(5252),
+         q(0),
+         ],
+      q(ont) => [
+         q(5253),
+         q(0),
+         ],
+      q(onu) => [
+         q(5254),
+         q(0),
+         ],
+      q(onw) => [
+         q(5255),
+         q(0),
+         ],
+      q(onx) => [
+         q(5256),
+         q(0),
+         ],
+      q(ood) => [
+         q(5257),
+         q(0),
+         ],
+      q(oog) => [
+         q(5258),
+         q(0),
+         ],
+      q(oon) => [
+         q(5259),
+         q(0),
+         ],
+      q(oor) => [
+         q(5260),
+         q(0),
+         ],
+      q(oos) => [
+         q(5261),
+         q(0),
+         ],
+      q(opa) => [
+         q(5262),
+         q(0),
+         ],
+      q(opk) => [
+         q(5263),
+         q(0),
+         ],
+      q(opm) => [
+         q(5264),
+         q(0),
+         ],
+      q(opo) => [
+         q(5265),
+         q(0),
+         ],
+      q(opt) => [
+         q(5266),
+         q(0),
+         ],
+      q(opy) => [
+         q(5267),
+         q(0),
+         ],
+      q(ora) => [
+         q(5268),
+         q(0),
+         ],
+      q(orc) => [
+         q(5269),
+         q(0),
+         ],
+      q(ore) => [
+         q(5270),
+         q(0),
+         ],
+      q(org) => [
+         q(5271),
+         q(0),
+         ],
+      q(orh) => [
+         q(5272),
+         q(0),
+         ],
+      q(ori) => [
+         q(0328),
+         q(0),
+         ],
+      q(orm) => [
+         q(0329),
+         q(0),
+         ],
+      q(orn) => [
+         q(5273),
+         q(0),
+         ],
+      q(oro) => [
+         q(5274),
+         q(0),
+         ],
+      q(orr) => [
+         q(5275),
+         q(0),
+         ],
+      q(ors) => [
+         q(5276),
+         q(0),
+         ],
+      q(ort) => [
+         q(5277),
+         q(0),
+         ],
+      q(oru) => [
+         q(5278),
+         q(0),
+         ],
+      q(orv) => [
+         q(5279),
+         q(0),
+         ],
+      q(orw) => [
+         q(5280),
+         q(0),
+         ],
+      q(orx) => [
+         q(5281),
+         q(0),
+         ],
+      q(ory) => [
+         q(5282),
+         q(0),
+         ],
+      q(orz) => [
+         q(5283),
+         q(0),
+         ],
+      q(osa) => [
+         q(0330),
+         q(0),
+         ],
+      q(osc) => [
+         q(5284),
+         q(0),
+         ],
+      q(osi) => [
+         q(5285),
+         q(0),
+         ],
+      q(oso) => [
+         q(5286),
+         q(0),
+         ],
+      q(osp) => [
+         q(5287),
+         q(0),
+         ],
+      q(oss) => [
+         q(0331),
+         q(0),
+         ],
+      q(ost) => [
+         q(5288),
+         q(0),
+         ],
+      q(osu) => [
+         q(5289),
+         q(0),
+         ],
+      q(osx) => [
+         q(5290),
+         q(0),
+         ],
+      q(ota) => [
+         q(0332),
+         q(1),
+         ],
+      q(otb) => [
+         q(5291),
+         q(0),
+         ],
+      q(otd) => [
+         q(5292),
+         q(0),
+         ],
+      q(ote) => [
+         q(5293),
+         q(0),
+         ],
+      q(oti) => [
+         q(5294),
+         q(0),
+         ],
+      q(otk) => [
+         q(5295),
+         q(0),
+         ],
+      q(otl) => [
+         q(5296),
+         q(0),
+         ],
+      q(otm) => [
+         q(5297),
+         q(0),
+         ],
+      q(otn) => [
+         q(5298),
+         q(0),
+         ],
+      q(oto) => [
+         q(0333),
+         q(0),
+         ],
+      q(otq) => [
+         q(5299),
+         q(0),
+         ],
+      q(otr) => [
+         q(5300),
+         q(0),
+         ],
+      q(ots) => [
+         q(5301),
+         q(0),
+         ],
+      q(ott) => [
+         q(5302),
+         q(0),
+         ],
+      q(otu) => [
+         q(5303),
+         q(0),
+         ],
+      q(otw) => [
+         q(5304),
+         q(0),
+         ],
+      q(otx) => [
+         q(5305),
+         q(0),
+         ],
+      q(oty) => [
+         q(5306),
+         q(0),
+         ],
+      q(otz) => [
+         q(5307),
+         q(0),
+         ],
+      q(oua) => [
+         q(5308),
+         q(0),
+         ],
+      q(oub) => [
+         q(5309),
+         q(0),
+         ],
+      q(oue) => [
+         q(5310),
+         q(0),
+         ],
+      q(oui) => [
+         q(5311),
+         q(0),
+         ],
+      q(oum) => [
+         q(5312),
+         q(0),
+         ],
+      q(oun) => [
+         q(5313),
+         q(0),
+         ],
+      q(owi) => [
+         q(5314),
+         q(0),
+         ],
+      q(owl) => [
+         q(5315),
+         q(0),
+         ],
+      q(oyb) => [
+         q(5316),
+         q(0),
+         ],
+      q(oyd) => [
+         q(5317),
+         q(0),
+         ],
+      q(oym) => [
+         q(5318),
+         q(0),
+         ],
+      q(oyy) => [
+         q(5319),
+         q(0),
+         ],
+      q(ozm) => [
+         q(5320),
+         q(0),
+         ],
+      q(paa) => [
+         q(0334),
+         q(0),
+         ],
+      q(pab) => [
+         q(5321),
+         q(0),
+         ],
+      q(pac) => [
+         q(5322),
+         q(0),
+         ],
+      q(pad) => [
+         q(5323),
+         q(0),
+         ],
+      q(pae) => [
+         q(5324),
+         q(0),
+         ],
+      q(paf) => [
+         q(5325),
+         q(0),
+         ],
+      q(pag) => [
+         q(0335),
+         q(0),
+         ],
+      q(pah) => [
+         q(5326),
+         q(0),
+         ],
+      q(pai) => [
+         q(5327),
+         q(0),
+         ],
+      q(pak) => [
+         q(5328),
+         q(0),
+         ],
+      q(pal) => [
+         q(0336),
+         q(0),
+         ],
+      q(pam) => [
+         q(0337),
+         q(0),
+         ],
+      q(pan) => [
+         q(0338),
+         q(0),
+         ],
+      q(pao) => [
+         q(5329),
+         q(0),
+         ],
+      q(pap) => [
+         q(0339),
+         q(0),
+         ],
+      q(paq) => [
+         q(5330),
+         q(0),
+         ],
+      q(par) => [
+         q(5331),
+         q(0),
+         ],
+      q(pas) => [
+         q(5332),
+         q(0),
+         ],
+      q(pat) => [
+         q(5333),
+         q(0),
+         ],
+      q(pau) => [
+         q(0340),
+         q(0),
+         ],
+      q(pav) => [
+         q(5334),
+         q(0),
+         ],
+      q(paw) => [
+         q(5335),
+         q(0),
+         ],
+      q(pax) => [
+         q(5336),
+         q(0),
+         ],
+      q(pay) => [
+         q(5337),
+         q(0),
+         ],
+      q(paz) => [
+         q(5338),
+         q(0),
+         ],
+      q(pbb) => [
+         q(5339),
+         q(0),
+         ],
+      q(pbc) => [
+         q(5340),
+         q(0),
+         ],
+      q(pbe) => [
+         q(5341),
+         q(0),
+         ],
+      q(pbf) => [
+         q(5342),
+         q(0),
+         ],
+      q(pbg) => [
+         q(5343),
+         q(0),
+         ],
+      q(pbh) => [
+         q(5344),
+         q(0),
+         ],
+      q(pbi) => [
+         q(5345),
+         q(0),
+         ],
+      q(pbl) => [
+         q(5346),
+         q(0),
+         ],
+      q(pbn) => [
+         q(5347),
+         q(0),
+         ],
+      q(pbo) => [
+         q(5348),
+         q(0),
+         ],
+      q(pbp) => [
+         q(5349),
+         q(0),
+         ],
+      q(pbr) => [
+         q(5350),
+         q(0),
+         ],
+      q(pbs) => [
+         q(5351),
+         q(0),
+         ],
+      q(pbt) => [
+         q(5352),
+         q(0),
+         ],
+      q(pbu) => [
+         q(5353),
+         q(0),
+         ],
+      q(pbv) => [
+         q(5354),
+         q(0),
+         ],
+      q(pby) => [
+         q(5355),
+         q(0),
+         ],
+      q(pca) => [
+         q(5356),
+         q(0),
+         ],
+      q(pcb) => [
+         q(5357),
+         q(0),
+         ],
+      q(pcc) => [
+         q(5358),
+         q(0),
+         ],
+      q(pcd) => [
+         q(5359),
+         q(0),
+         ],
+      q(pce) => [
+         q(5360),
+         q(0),
+         ],
+      q(pcf) => [
+         q(5361),
+         q(0),
+         ],
+      q(pcg) => [
+         q(5362),
+         q(0),
+         ],
+      q(pch) => [
+         q(5363),
+         q(0),
+         ],
+      q(pci) => [
+         q(5364),
+         q(0),
+         ],
+      q(pcj) => [
+         q(5365),
+         q(0),
+         ],
+      q(pck) => [
+         q(5366),
+         q(0),
+         ],
+      q(pcl) => [
+         q(5367),
+         q(0),
+         ],
+      q(pcm) => [
+         q(5368),
+         q(0),
+         ],
+      q(pcn) => [
+         q(5369),
+         q(0),
+         ],
+      q(pcp) => [
+         q(5370),
+         q(0),
+         ],
+      q(pcr) => [
+         q(5371),
+         q(0),
+         ],
+      q(pcw) => [
+         q(5372),
+         q(0),
+         ],
+      q(pda) => [
+         q(5373),
+         q(0),
+         ],
+      q(pdc) => [
+         q(5374),
+         q(0),
+         ],
+      q(pdi) => [
+         q(5375),
+         q(0),
+         ],
+      q(pdn) => [
+         q(5376),
+         q(0),
+         ],
+      q(pdo) => [
+         q(5377),
+         q(0),
+         ],
+      q(pdt) => [
+         q(5378),
+         q(0),
+         ],
+      q(pdu) => [
+         q(5379),
+         q(0),
+         ],
+      q(pea) => [
+         q(5380),
+         q(0),
+         ],
+      q(peb) => [
+         q(5381),
+         q(0),
+         ],
+      q(ped) => [
+         q(5382),
+         q(0),
+         ],
+      q(pee) => [
+         q(5383),
+         q(0),
+         ],
+      q(pef) => [
+         q(5384),
+         q(0),
+         ],
+      q(peg) => [
+         q(5385),
+         q(0),
+         ],
+      q(peh) => [
+         q(5386),
+         q(0),
+         ],
+      q(pei) => [
+         q(5387),
+         q(0),
+         ],
+      q(pej) => [
+         q(5388),
+         q(0),
+         ],
+      q(pek) => [
+         q(5389),
+         q(0),
+         ],
+      q(pel) => [
+         q(5390),
+         q(0),
+         ],
+      q(pem) => [
+         q(5391),
+         q(0),
+         ],
+      q(peo) => [
+         q(0341),
+         q(1),
+         ],
+      q(pep) => [
+         q(5392),
+         q(0),
+         ],
+      q(peq) => [
+         q(5393),
+         q(0),
+         ],
+      q(per) => [
+         q(0342),
+         q(0),
+         ],
+      q(pes) => [
+         q(5394),
+         q(0),
+         ],
+      q(pev) => [
+         q(5395),
+         q(0),
+         ],
+      q(pex) => [
+         q(5396),
+         q(0),
+         ],
+      q(pey) => [
+         q(5397),
+         q(0),
+         ],
+      q(pez) => [
+         q(5398),
+         q(0),
+         ],
+      q(pfa) => [
+         q(5399),
+         q(0),
+         ],
+      q(pfe) => [
+         q(5400),
+         q(0),
+         ],
+      q(pfl) => [
+         q(5401),
+         q(0),
+         ],
+      q(pga) => [
+         q(5402),
+         q(0),
+         ],
+      q(pgg) => [
+         q(5403),
+         q(0),
+         ],
+      q(pgi) => [
+         q(5404),
+         q(0),
+         ],
+      q(pgk) => [
+         q(5405),
+         q(0),
+         ],
+      q(pgl) => [
+         q(5406),
+         q(0),
+         ],
+      q(pgn) => [
+         q(5407),
+         q(0),
+         ],
+      q(pgs) => [
+         q(5408),
+         q(0),
+         ],
+      q(pgu) => [
+         q(5409),
+         q(0),
+         ],
+      q(pha) => [
+         q(5410),
+         q(0),
+         ],
+      q(phd) => [
+         q(5411),
+         q(0),
+         ],
+      q(phg) => [
+         q(5412),
+         q(0),
+         ],
+      q(phh) => [
+         q(5413),
+         q(0),
+         ],
+      q(phi) => [
+         q(0343),
+         q(0),
+         ],
+      q(phk) => [
+         q(5414),
+         q(0),
+         ],
+      q(phl) => [
+         q(5415),
+         q(0),
+         ],
+      q(phm) => [
+         q(5416),
+         q(0),
+         ],
+      q(phn) => [
+         q(0344),
+         q(0),
+         ],
+      q(pho) => [
+         q(5417),
+         q(0),
+         ],
+      q(phq) => [
+         q(5418),
+         q(0),
+         ],
+      q(phr) => [
+         q(5419),
+         q(0),
+         ],
+      q(pht) => [
+         q(5420),
+         q(0),
+         ],
+      q(phu) => [
+         q(5421),
+         q(0),
+         ],
+      q(phv) => [
+         q(5422),
+         q(0),
+         ],
+      q(phw) => [
+         q(5423),
+         q(0),
+         ],
+      q(pia) => [
+         q(5424),
+         q(0),
+         ],
+      q(pib) => [
+         q(5425),
+         q(0),
+         ],
+      q(pic) => [
+         q(5426),
+         q(0),
+         ],
+      q(pid) => [
+         q(5427),
+         q(0),
+         ],
+      q(pie) => [
+         q(5428),
+         q(0),
+         ],
+      q(pif) => [
+         q(5429),
+         q(0),
+         ],
+      q(pig) => [
+         q(5430),
+         q(0),
+         ],
+      q(pih) => [
+         q(5431),
+         q(0),
+         ],
+      q(pii) => [
+         q(5432),
+         q(0),
+         ],
+      q(pij) => [
+         q(5433),
+         q(0),
+         ],
+      q(pil) => [
+         q(5434),
+         q(0),
+         ],
+      q(pim) => [
+         q(5435),
+         q(0),
+         ],
+      q(pin) => [
+         q(5436),
+         q(0),
+         ],
+      q(pio) => [
+         q(5437),
+         q(0),
+         ],
+      q(pip) => [
+         q(5438),
+         q(0),
+         ],
+      q(pir) => [
+         q(5439),
+         q(0),
+         ],
+      q(pis) => [
+         q(5440),
+         q(0),
+         ],
+      q(pit) => [
+         q(5441),
+         q(0),
+         ],
+      q(piu) => [
+         q(5442),
+         q(0),
+         ],
+      q(piv) => [
+         q(5443),
+         q(0),
+         ],
+      q(piw) => [
+         q(5444),
+         q(0),
+         ],
+      q(pix) => [
+         q(5445),
+         q(0),
+         ],
+      q(piy) => [
+         q(5446),
+         q(0),
+         ],
+      q(piz) => [
+         q(5447),
+         q(0),
+         ],
+      q(pjt) => [
+         q(5448),
+         q(0),
+         ],
+      q(pka) => [
+         q(5449),
+         q(0),
+         ],
+      q(pkb) => [
+         q(5450),
+         q(0),
+         ],
+      q(pkc) => [
+         q(5451),
+         q(0),
+         ],
+      q(pkg) => [
+         q(5452),
+         q(0),
+         ],
+      q(pkh) => [
+         q(5453),
+         q(0),
+         ],
+      q(pkn) => [
+         q(5454),
+         q(0),
+         ],
+      q(pko) => [
+         q(5455),
+         q(0),
+         ],
+      q(pkp) => [
+         q(5456),
+         q(0),
+         ],
+      q(pkr) => [
+         q(5457),
+         q(0),
+         ],
+      q(pks) => [
+         q(5458),
+         q(0),
+         ],
+      q(pkt) => [
+         q(5459),
+         q(0),
+         ],
+      q(pku) => [
+         q(5460),
+         q(0),
+         ],
+      q(pla) => [
+         q(5461),
+         q(0),
+         ],
+      q(plb) => [
+         q(5462),
+         q(0),
+         ],
+      q(plc) => [
+         q(5463),
+         q(0),
+         ],
+      q(pld) => [
+         q(5464),
+         q(0),
+         ],
+      q(ple) => [
+         q(5465),
+         q(0),
+         ],
+      q(plf) => [
+         q(0519),
+         q(0),
+         ],
+      q(plg) => [
+         q(5466),
+         q(0),
+         ],
+      q(plh) => [
+         q(5467),
+         q(0),
+         ],
+      q(pli) => [
+         q(0345),
+         q(0),
+         ],
+      q(plj) => [
+         q(5468),
+         q(0),
+         ],
+      q(plk) => [
+         q(5469),
+         q(0),
+         ],
+      q(pll) => [
+         q(5470),
+         q(0),
+         ],
+      q(pln) => [
+         q(5471),
+         q(0),
+         ],
+      q(plo) => [
+         q(5472),
+         q(0),
+         ],
+      q(plp) => [
+         q(5473),
+         q(0),
+         ],
+      q(plq) => [
+         q(5474),
+         q(0),
+         ],
+      q(plr) => [
+         q(5475),
+         q(0),
+         ],
+      q(pls) => [
+         q(5476),
+         q(0),
+         ],
+      q(plt) => [
+         q(5477),
+         q(0),
+         ],
+      q(plu) => [
+         q(5478),
+         q(0),
+         ],
+      q(plv) => [
+         q(5479),
+         q(0),
+         ],
+      q(plw) => [
+         q(5480),
+         q(0),
+         ],
+      q(ply) => [
+         q(5481),
+         q(0),
+         ],
+      q(plz) => [
+         q(5482),
+         q(0),
+         ],
+      q(pma) => [
+         q(5483),
+         q(0),
+         ],
+      q(pmb) => [
+         q(5484),
+         q(0),
+         ],
+      q(pmc) => [
+         q(5485),
+         q(0),
+         ],
+      q(pmd) => [
+         q(5486),
+         q(0),
+         ],
+      q(pme) => [
+         q(5487),
+         q(0),
+         ],
+      q(pmf) => [
+         q(5488),
+         q(0),
+         ],
+      q(pmh) => [
+         q(5489),
+         q(0),
+         ],
+      q(pmi) => [
+         q(5490),
+         q(0),
+         ],
+      q(pmj) => [
+         q(5491),
+         q(0),
+         ],
+      q(pmk) => [
+         q(5492),
+         q(0),
+         ],
+      q(pml) => [
+         q(5493),
+         q(0),
+         ],
+      q(pmm) => [
+         q(5494),
+         q(0),
+         ],
+      q(pmn) => [
+         q(5495),
+         q(0),
+         ],
+      q(pmo) => [
+         q(5496),
+         q(0),
+         ],
+      q(pmq) => [
+         q(5497),
+         q(0),
+         ],
+      q(pmr) => [
+         q(5498),
+         q(0),
+         ],
+      q(pms) => [
+         q(5499),
+         q(0),
+         ],
+      q(pmt) => [
+         q(5500),
+         q(0),
+         ],
+      q(pmu) => [
+         q(5501),
+         q(0),
+         ],
+      q(pmw) => [
+         q(5502),
+         q(0),
+         ],
+      q(pmx) => [
+         q(5503),
+         q(0),
+         ],
+      q(pmy) => [
+         q(5504),
+         q(0),
+         ],
+      q(pmz) => [
+         q(5505),
+         q(0),
+         ],
+      q(pna) => [
+         q(5506),
+         q(0),
+         ],
+      q(pnb) => [
+         q(5507),
+         q(0),
+         ],
+      q(pnc) => [
+         q(5508),
+         q(0),
+         ],
+      q(pne) => [
+         q(5509),
+         q(0),
+         ],
+      q(png) => [
+         q(5510),
+         q(0),
+         ],
+      q(pnh) => [
+         q(5511),
+         q(0),
+         ],
+      q(pni) => [
+         q(5512),
+         q(0),
+         ],
+      q(pnk) => [
+         q(5513),
+         q(0),
+         ],
+      q(pnm) => [
+         q(5514),
+         q(0),
+         ],
+      q(pnn) => [
+         q(5515),
+         q(0),
+         ],
+      q(pno) => [
+         q(5516),
+         q(0),
+         ],
+      q(pnp) => [
+         q(5517),
+         q(0),
+         ],
+      q(pnq) => [
+         q(5518),
+         q(0),
+         ],
+      q(pnr) => [
+         q(5519),
+         q(0),
+         ],
+      q(pns) => [
+         q(5520),
+         q(0),
+         ],
+      q(pnt) => [
+         q(5521),
+         q(0),
+         ],
+      q(pnu) => [
+         q(5522),
+         q(0),
+         ],
+      q(pnv) => [
+         q(5523),
+         q(0),
+         ],
+      q(pnw) => [
+         q(5524),
+         q(0),
+         ],
+      q(pnx) => [
+         q(5525),
+         q(0),
+         ],
+      q(pny) => [
+         q(5526),
+         q(0),
+         ],
+      q(pnz) => [
+         q(5527),
+         q(0),
+         ],
+      q(poc) => [
+         q(5528),
+         q(0),
+         ],
+      q(pod) => [
+         q(5529),
+         q(0),
+         ],
+      q(poe) => [
+         q(5530),
+         q(0),
+         ],
+      q(pof) => [
+         q(5531),
+         q(0),
+         ],
+      q(pog) => [
+         q(5532),
+         q(0),
+         ],
+      q(poh) => [
+         q(5533),
+         q(0),
+         ],
+      q(poi) => [
+         q(5534),
+         q(0),
+         ],
+      q(pok) => [
+         q(5535),
+         q(0),
+         ],
+      q(pol) => [
+         q(0346),
+         q(0),
+         ],
+      q(pom) => [
+         q(5536),
+         q(0),
+         ],
+      q(pon) => [
+         q(0347),
+         q(0),
+         ],
+      q(poo) => [
+         q(5537),
+         q(0),
+         ],
+      q(pop) => [
+         q(5538),
+         q(0),
+         ],
+      q(poq) => [
+         q(5539),
+         q(0),
+         ],
+      q(por) => [
+         q(0348),
+         q(0),
+         ],
+      q(pos) => [
+         q(5540),
+         q(0),
+         ],
+      q(pot) => [
+         q(5541),
+         q(0),
+         ],
+      q(pov) => [
+         q(5542),
+         q(0),
+         ],
+      q(pow) => [
+         q(5543),
+         q(0),
+         ],
+      q(pox) => [
+         q(5544),
+         q(0),
+         ],
+      q(poy) => [
+         q(5545),
+         q(0),
+         ],
+      q(poz) => [
+         q(0520),
+         q(0),
+         ],
+      q(ppa) => [
+         q(5546),
+         q(0),
+         ],
+      q(ppe) => [
+         q(5547),
+         q(0),
+         ],
+      q(ppi) => [
+         q(5548),
+         q(0),
+         ],
+      q(ppk) => [
+         q(5549),
+         q(0),
+         ],
+      q(ppl) => [
+         q(5550),
+         q(0),
+         ],
+      q(ppm) => [
+         q(5551),
+         q(0),
+         ],
+      q(ppn) => [
+         q(5552),
+         q(0),
+         ],
+      q(ppo) => [
+         q(5553),
+         q(0),
+         ],
+      q(ppp) => [
+         q(5554),
+         q(0),
+         ],
+      q(ppq) => [
+         q(5555),
+         q(0),
+         ],
+      q(ppr) => [
+         q(5556),
+         q(0),
+         ],
+      q(pps) => [
+         q(5557),
+         q(0),
+         ],
+      q(ppt) => [
+         q(5558),
+         q(0),
+         ],
+      q(ppu) => [
+         q(5559),
+         q(0),
+         ],
+      q(pqa) => [
+         q(5560),
+         q(0),
+         ],
+      q(pqe) => [
+         q(0521),
+         q(0),
+         ],
+      q(pqm) => [
+         q(5561),
+         q(0),
+         ],
+      q(pqw) => [
+         q(0522),
+         q(0),
+         ],
+      q(pra) => [
+         q(0349),
+         q(0),
+         ],
+      q(prb) => [
+         q(5562),
+         q(0),
+         ],
+      q(prc) => [
+         q(5563),
+         q(0),
+         ],
+      q(prd) => [
+         q(5564),
+         q(0),
+         ],
+      q(pre) => [
+         q(5565),
+         q(0),
+         ],
+      q(prf) => [
+         q(5566),
+         q(0),
+         ],
+      q(prg) => [
+         q(5567),
+         q(0),
+         ],
+      q(prh) => [
+         q(5568),
+         q(0),
+         ],
+      q(pri) => [
+         q(5569),
+         q(0),
+         ],
+      q(prk) => [
+         q(5570),
+         q(0),
+         ],
+      q(prl) => [
+         q(5571),
+         q(0),
+         ],
+      q(prm) => [
+         q(5572),
+         q(0),
+         ],
+      q(prn) => [
+         q(5573),
+         q(0),
+         ],
+      q(pro) => [
+         q(0350),
+         q(1),
+         ],
+      q(prp) => [
+         q(5574),
+         q(0),
+         ],
+      q(prq) => [
+         q(5575),
+         q(0),
+         ],
+      q(prr) => [
+         q(5576),
+         q(0),
+         ],
+      q(prs) => [
+         q(5577),
+         q(0),
+         ],
+      q(prt) => [
+         q(5578),
+         q(0),
+         ],
+      q(pru) => [
+         q(5579),
+         q(0),
+         ],
+      q(prw) => [
+         q(5580),
+         q(0),
+         ],
+      q(prx) => [
+         q(5581),
+         q(0),
+         ],
+      q(pry) => [
+         q(5582),
+         q(0),
+         ],
+      q(prz) => [
+         q(5583),
+         q(0),
+         ],
+      q(psa) => [
+         q(5584),
+         q(0),
+         ],
+      q(psc) => [
+         q(5585),
+         q(0),
+         ],
+      q(psd) => [
+         q(5586),
+         q(0),
+         ],
+      q(pse) => [
+         q(5587),
+         q(0),
+         ],
+      q(psg) => [
+         q(5588),
+         q(0),
+         ],
+      q(psh) => [
+         q(5589),
+         q(0),
+         ],
+      q(psi) => [
+         q(5590),
+         q(0),
+         ],
+      q(psl) => [
+         q(5591),
+         q(0),
+         ],
+      q(psm) => [
+         q(5592),
+         q(0),
+         ],
+      q(psn) => [
+         q(5593),
+         q(0),
+         ],
+      q(pso) => [
+         q(5594),
+         q(0),
+         ],
+      q(psp) => [
+         q(5595),
+         q(0),
+         ],
+      q(psq) => [
+         q(5596),
+         q(0),
+         ],
+      q(psr) => [
+         q(5597),
+         q(0),
+         ],
+      q(pss) => [
+         q(5598),
+         q(0),
+         ],
+      q(pst) => [
+         q(5599),
+         q(0),
+         ],
+      q(psu) => [
+         q(5600),
+         q(0),
+         ],
+      q(psw) => [
+         q(5601),
+         q(0),
+         ],
+      q(psy) => [
+         q(5602),
+         q(0),
+         ],
+      q(pta) => [
+         q(5603),
+         q(0),
+         ],
+      q(pth) => [
+         q(5604),
+         q(0),
+         ],
+      q(pti) => [
+         q(5605),
+         q(0),
+         ],
+      q(ptn) => [
+         q(5606),
+         q(0),
+         ],
+      q(pto) => [
+         q(5607),
+         q(0),
+         ],
+      q(ptp) => [
+         q(5608),
+         q(0),
+         ],
+      q(ptr) => [
+         q(5609),
+         q(0),
+         ],
+      q(ptt) => [
+         q(5610),
+         q(0),
+         ],
+      q(ptu) => [
+         q(5611),
+         q(0),
+         ],
+      q(ptv) => [
+         q(5612),
+         q(0),
+         ],
+      q(ptw) => [
+         q(5613),
+         q(0),
+         ],
+      q(pty) => [
+         q(5614),
+         q(0),
+         ],
+      q(pua) => [
+         q(5615),
+         q(0),
+         ],
+      q(pub) => [
+         q(5616),
+         q(0),
+         ],
+      q(puc) => [
+         q(5617),
+         q(0),
+         ],
+      q(pud) => [
+         q(5618),
+         q(0),
+         ],
+      q(pue) => [
+         q(5619),
+         q(0),
+         ],
+      q(puf) => [
+         q(5620),
+         q(0),
+         ],
+      q(pug) => [
+         q(5621),
+         q(0),
+         ],
+      q(pui) => [
+         q(5622),
+         q(0),
+         ],
+      q(puj) => [
+         q(5623),
+         q(0),
+         ],
+      q(puk) => [
+         q(5624),
+         q(0),
+         ],
+      q(pum) => [
+         q(5625),
+         q(0),
+         ],
+      q(puo) => [
+         q(5626),
+         q(0),
+         ],
+      q(pup) => [
+         q(5627),
+         q(0),
+         ],
+      q(puq) => [
+         q(5628),
+         q(0),
+         ],
+      q(pur) => [
+         q(5629),
+         q(0),
+         ],
+      q(pus) => [
+         q(0351),
+         q(0),
+         ],
+      q(put) => [
+         q(5630),
+         q(0),
+         ],
+      q(puu) => [
+         q(5631),
+         q(0),
+         ],
+      q(puw) => [
+         q(5632),
+         q(0),
+         ],
+      q(pux) => [
+         q(5633),
+         q(0),
+         ],
+      q(puy) => [
+         q(5634),
+         q(0),
+         ],
+      q(puz) => [
+         q(5635),
+         q(0),
+         ],
+      q(pwa) => [
+         q(5636),
+         q(0),
+         ],
+      q(pwb) => [
+         q(5637),
+         q(0),
+         ],
+      q(pwg) => [
+         q(5638),
+         q(0),
+         ],
+      q(pwm) => [
+         q(5639),
+         q(0),
+         ],
+      q(pwn) => [
+         q(5640),
+         q(0),
+         ],
+      q(pwo) => [
+         q(5641),
+         q(0),
+         ],
+      q(pwr) => [
+         q(5642),
+         q(0),
+         ],
+      q(pww) => [
+         q(5643),
+         q(0),
+         ],
+      q(pxm) => [
+         q(5644),
+         q(0),
+         ],
+      q(pye) => [
+         q(5645),
+         q(0),
+         ],
+      q(pym) => [
+         q(5646),
+         q(0),
+         ],
+      q(pyn) => [
+         q(5647),
+         q(0),
+         ],
+      q(pys) => [
+         q(5648),
+         q(0),
+         ],
+      q(pyu) => [
+         q(5649),
+         q(0),
+         ],
+      q(pyx) => [
+         q(5650),
+         q(0),
+         ],
+      q(pyy) => [
+         q(5651),
+         q(0),
+         ],
+      q(pzn) => [
+         q(5652),
+         q(0),
+         ],
+      q(qtz) => [
+         q(0352),
+         q(0),
+         ],
+      q(qua) => [
+         q(5653),
+         q(0),
+         ],
+      q(qub) => [
+         q(5654),
+         q(0),
+         ],
+      q(quc) => [
+         q(5655),
+         q(0),
+         ],
+      q(qud) => [
+         q(5656),
+         q(0),
+         ],
+      q(que) => [
+         q(0353),
+         q(0),
+         ],
+      q(quf) => [
+         q(5657),
+         q(0),
+         ],
+      q(qug) => [
+         q(5658),
+         q(0),
+         ],
+      q(quh) => [
+         q(5659),
+         q(0),
+         ],
+      q(qui) => [
+         q(5660),
+         q(0),
+         ],
+      q(quk) => [
+         q(5661),
+         q(0),
+         ],
+      q(qul) => [
+         q(5662),
+         q(0),
+         ],
+      q(qum) => [
+         q(5663),
+         q(0),
+         ],
+      q(qun) => [
+         q(5664),
+         q(0),
+         ],
+      q(qup) => [
+         q(5665),
+         q(0),
+         ],
+      q(quq) => [
+         q(5666),
+         q(0),
+         ],
+      q(qur) => [
+         q(5667),
+         q(0),
+         ],
+      q(qus) => [
+         q(5668),
+         q(0),
+         ],
+      q(quv) => [
+         q(5669),
+         q(0),
+         ],
+      q(quw) => [
+         q(5670),
+         q(0),
+         ],
+      q(qux) => [
+         q(5671),
+         q(0),
+         ],
+      q(quy) => [
+         q(5672),
+         q(0),
+         ],
+      q(quz) => [
+         q(5673),
+         q(0),
+         ],
+      q(qva) => [
+         q(5674),
+         q(0),
+         ],
+      q(qvc) => [
+         q(5675),
+         q(0),
+         ],
+      q(qve) => [
+         q(5676),
+         q(0),
+         ],
+      q(qvh) => [
+         q(5677),
+         q(0),
+         ],
+      q(qvi) => [
+         q(5678),
+         q(0),
+         ],
+      q(qvj) => [
+         q(5679),
+         q(0),
+         ],
+      q(qvl) => [
+         q(5680),
+         q(0),
+         ],
+      q(qvm) => [
+         q(5681),
+         q(0),
+         ],
+      q(qvn) => [
+         q(5682),
+         q(0),
+         ],
+      q(qvo) => [
+         q(5683),
+         q(0),
+         ],
+      q(qvp) => [
+         q(5684),
+         q(0),
+         ],
+      q(qvs) => [
+         q(5685),
+         q(0),
+         ],
+      q(qvw) => [
+         q(5686),
+         q(0),
+         ],
+      q(qvy) => [
+         q(5687),
+         q(0),
+         ],
+      q(qvz) => [
+         q(5688),
+         q(0),
+         ],
+      q(qwa) => [
+         q(5689),
+         q(0),
+         ],
+      q(qwc) => [
+         q(5690),
+         q(0),
+         ],
+      q(qwe) => [
+         q(0523),
+         q(0),
+         ],
+      q(qwh) => [
+         q(5691),
+         q(0),
+         ],
+      q(qwm) => [
+         q(5692),
+         q(0),
+         ],
+      q(qws) => [
+         q(5693),
+         q(0),
+         ],
+      q(qwt) => [
+         q(5694),
+         q(0),
+         ],
+      q(qxa) => [
+         q(5695),
+         q(0),
+         ],
+      q(qxc) => [
+         q(5696),
+         q(0),
+         ],
+      q(qxh) => [
+         q(5697),
+         q(0),
+         ],
+      q(qxl) => [
+         q(5698),
+         q(0),
+         ],
+      q(qxn) => [
+         q(5699),
+         q(0),
+         ],
+      q(qxo) => [
+         q(5700),
+         q(0),
+         ],
+      q(qxp) => [
+         q(5701),
+         q(0),
+         ],
+      q(qxq) => [
+         q(5702),
+         q(0),
+         ],
+      q(qxr) => [
+         q(5703),
+         q(0),
+         ],
+      q(qxs) => [
+         q(5704),
+         q(0),
+         ],
+      q(qxt) => [
+         q(5705),
+         q(0),
+         ],
+      q(qxu) => [
+         q(5706),
+         q(0),
+         ],
+      q(qxw) => [
+         q(5707),
+         q(0),
+         ],
+      q(qya) => [
+         q(5708),
+         q(0),
+         ],
+      q(qyp) => [
+         q(5709),
+         q(0),
+         ],
+      q(raa) => [
+         q(5710),
+         q(0),
+         ],
+      q(rab) => [
+         q(5711),
+         q(0),
+         ],
+      q(rac) => [
+         q(5712),
+         q(0),
+         ],
+      q(rad) => [
+         q(5713),
+         q(0),
+         ],
+      q(raf) => [
+         q(5714),
+         q(0),
+         ],
+      q(rag) => [
+         q(5715),
+         q(0),
+         ],
+      q(rah) => [
+         q(5716),
+         q(0),
+         ],
+      q(rai) => [
+         q(5717),
+         q(0),
+         ],
+      q(raj) => [
+         q(0354),
+         q(0),
+         ],
+      q(rak) => [
+         q(5718),
+         q(0),
+         ],
+      q(ral) => [
+         q(5719),
+         q(0),
+         ],
+      q(ram) => [
+         q(5720),
+         q(0),
+         ],
+      q(ran) => [
+         q(5721),
+         q(0),
+         ],
+      q(rao) => [
+         q(5722),
+         q(0),
+         ],
+      q(rap) => [
+         q(0355),
+         q(0),
+         ],
+      q(raq) => [
+         q(5723),
+         q(0),
+         ],
+      q(rar) => [
+         q(0356),
+         q(0),
+         ],
+      q(ras) => [
+         q(5724),
+         q(0),
+         ],
+      q(rat) => [
+         q(5725),
+         q(0),
+         ],
+      q(rau) => [
+         q(5726),
+         q(0),
+         ],
+      q(rav) => [
+         q(5727),
+         q(0),
+         ],
+      q(raw) => [
+         q(5728),
+         q(0),
+         ],
+      q(rax) => [
+         q(5729),
+         q(0),
+         ],
+      q(ray) => [
+         q(5730),
+         q(0),
+         ],
+      q(raz) => [
+         q(5731),
+         q(0),
+         ],
+      q(rbb) => [
+         q(5732),
+         q(0),
+         ],
+      q(rbk) => [
+         q(5733),
+         q(0),
+         ],
+      q(rbl) => [
+         q(5734),
+         q(0),
+         ],
+      q(rbp) => [
+         q(5735),
+         q(0),
+         ],
+      q(rcf) => [
+         q(5736),
+         q(0),
+         ],
+      q(rdb) => [
+         q(5737),
+         q(0),
+         ],
+      q(rea) => [
+         q(5738),
+         q(0),
+         ],
+      q(reb) => [
+         q(5739),
+         q(0),
+         ],
+      q(ree) => [
+         q(5740),
+         q(0),
+         ],
+      q(reg) => [
+         q(5741),
+         q(0),
+         ],
+      q(rei) => [
+         q(5742),
+         q(0),
+         ],
+      q(rej) => [
+         q(5743),
+         q(0),
+         ],
+      q(rel) => [
+         q(5744),
+         q(0),
+         ],
+      q(rem) => [
+         q(5745),
+         q(0),
+         ],
+      q(ren) => [
+         q(5746),
+         q(0),
+         ],
+      q(rer) => [
+         q(5747),
+         q(0),
+         ],
+      q(res) => [
+         q(5748),
+         q(0),
+         ],
+      q(ret) => [
+         q(5749),
+         q(0),
+         ],
+      q(rey) => [
+         q(5750),
+         q(0),
+         ],
+      q(rga) => [
+         q(5751),
+         q(0),
+         ],
+      q(rge) => [
+         q(5752),
+         q(0),
+         ],
+      q(rgk) => [
+         q(5753),
+         q(0),
+         ],
+      q(rgn) => [
+         q(5754),
+         q(0),
+         ],
+      q(rgr) => [
+         q(5755),
+         q(0),
+         ],
+      q(rgs) => [
+         q(5756),
+         q(0),
+         ],
+      q(rgu) => [
+         q(5757),
+         q(0),
+         ],
+      q(rhg) => [
+         q(5758),
+         q(0),
+         ],
+      q(rhp) => [
+         q(5759),
+         q(0),
+         ],
+      q(ria) => [
+         q(5760),
+         q(0),
+         ],
+      q(rie) => [
+         q(5761),
+         q(0),
+         ],
+      q(rif) => [
+         q(5762),
+         q(0),
+         ],
+      q(ril) => [
+         q(5763),
+         q(0),
+         ],
+      q(rim) => [
+         q(5764),
+         q(0),
+         ],
+      q(rin) => [
+         q(5765),
+         q(0),
+         ],
+      q(rir) => [
+         q(5766),
+         q(0),
+         ],
+      q(rit) => [
+         q(5767),
+         q(0),
+         ],
+      q(riu) => [
+         q(5768),
+         q(0),
+         ],
+      q(rjg) => [
+         q(5769),
+         q(0),
+         ],
+      q(rji) => [
+         q(5770),
+         q(0),
+         ],
+      q(rjs) => [
+         q(5771),
+         q(0),
+         ],
+      q(rka) => [
+         q(5772),
+         q(0),
+         ],
+      q(rkb) => [
+         q(5773),
+         q(0),
+         ],
+      q(rkh) => [
+         q(5774),
+         q(0),
+         ],
+      q(rki) => [
+         q(5775),
+         q(0),
+         ],
+      q(rkm) => [
+         q(5776),
+         q(0),
+         ],
+      q(rkt) => [
+         q(5777),
+         q(0),
+         ],
+      q(rma) => [
+         q(5778),
+         q(0),
+         ],
+      q(rmb) => [
+         q(5779),
+         q(0),
+         ],
+      q(rmc) => [
+         q(5780),
+         q(0),
+         ],
+      q(rmd) => [
+         q(5781),
+         q(0),
+         ],
+      q(rme) => [
+         q(5782),
+         q(0),
+         ],
+      q(rmf) => [
+         q(5783),
+         q(0),
+         ],
+      q(rmg) => [
+         q(5784),
+         q(0),
+         ],
+      q(rmh) => [
+         q(5785),
+         q(0),
+         ],
+      q(rmi) => [
+         q(5786),
+         q(0),
+         ],
+      q(rmk) => [
+         q(5787),
+         q(0),
+         ],
+      q(rml) => [
+         q(5788),
+         q(0),
+         ],
+      q(rmm) => [
+         q(5789),
+         q(0),
+         ],
+      q(rmn) => [
+         q(5790),
+         q(0),
+         ],
+      q(rmo) => [
+         q(5791),
+         q(0),
+         ],
+      q(rmp) => [
+         q(5792),
+         q(0),
+         ],
+      q(rmq) => [
+         q(5793),
+         q(0),
+         ],
+      q(rms) => [
+         q(5794),
+         q(0),
+         ],
+      q(rmt) => [
+         q(5795),
+         q(0),
+         ],
+      q(rmu) => [
+         q(5796),
+         q(0),
+         ],
+      q(rmv) => [
+         q(5797),
+         q(0),
+         ],
+      q(rmw) => [
+         q(5798),
+         q(0),
+         ],
+      q(rmx) => [
+         q(5799),
+         q(0),
+         ],
+      q(rmy) => [
+         q(5800),
+         q(0),
+         ],
+      q(rmz) => [
+         q(5801),
+         q(0),
+         ],
+      q(rna) => [
+         q(5802),
+         q(0),
+         ],
+      q(rnd) => [
+         q(5803),
+         q(0),
+         ],
+      q(rng) => [
+         q(5804),
+         q(0),
+         ],
+      q(rnl) => [
+         q(5805),
+         q(0),
+         ],
+      q(rnn) => [
+         q(5806),
+         q(0),
+         ],
+      q(rnp) => [
+         q(5807),
+         q(0),
+         ],
+      q(rnr) => [
+         q(5808),
+         q(0),
+         ],
+      q(rnw) => [
+         q(5809),
+         q(0),
+         ],
+      q(roa) => [
+         q(0357),
+         q(0),
+         ],
+      q(rob) => [
+         q(5810),
+         q(0),
+         ],
+      q(roc) => [
+         q(5811),
+         q(0),
+         ],
+      q(rod) => [
+         q(5812),
+         q(0),
+         ],
+      q(roe) => [
+         q(5813),
+         q(0),
+         ],
+      q(rof) => [
+         q(5814),
+         q(0),
+         ],
+      q(rog) => [
+         q(5815),
+         q(0),
+         ],
+      q(roh) => [
+         q(0358),
+         q(0),
+         ],
+      q(rol) => [
+         q(5816),
+         q(0),
+         ],
+      q(rom) => [
+         q(0359),
+         q(0),
+         ],
+      q(roo) => [
+         q(5817),
+         q(0),
+         ],
+      q(rop) => [
+         q(5818),
+         q(0),
+         ],
+      q(ror) => [
+         q(5819),
+         q(0),
+         ],
+      q(rou) => [
+         q(5820),
+         q(0),
+         ],
+      q(row) => [
+         q(5821),
+         q(0),
+         ],
+      q(rpn) => [
+         q(5822),
+         q(0),
+         ],
+      q(rpt) => [
+         q(5823),
+         q(0),
+         ],
+      q(rri) => [
+         q(5824),
+         q(0),
+         ],
+      q(rro) => [
+         q(5825),
+         q(0),
+         ],
+      q(rrt) => [
+         q(5826),
+         q(0),
+         ],
+      q(rsb) => [
+         q(5827),
+         q(0),
+         ],
+      q(rsi) => [
+         q(5828),
+         q(0),
+         ],
+      q(rsl) => [
+         q(5829),
+         q(0),
+         ],
+      q(rtc) => [
+         q(5830),
+         q(0),
+         ],
+      q(rth) => [
+         q(5831),
+         q(0),
+         ],
+      q(rtm) => [
+         q(5832),
+         q(0),
+         ],
+      q(rtw) => [
+         q(5833),
+         q(0),
+         ],
+      q(rub) => [
+         q(5834),
+         q(0),
+         ],
+      q(ruc) => [
+         q(5835),
+         q(0),
+         ],
+      q(rue) => [
+         q(5836),
+         q(0),
+         ],
+      q(ruf) => [
+         q(5837),
+         q(0),
+         ],
+      q(rug) => [
+         q(5838),
+         q(0),
+         ],
+      q(ruh) => [
+         q(5839),
+         q(0),
+         ],
+      q(rui) => [
+         q(5840),
+         q(0),
+         ],
+      q(ruk) => [
+         q(5841),
+         q(0),
+         ],
+      q(rum) => [
+         q(0360),
+         q(0),
+         ],
+      q(run) => [
+         q(0361),
+         q(0),
+         ],
+      q(ruo) => [
+         q(5842),
+         q(0),
+         ],
+      q(rup) => [
+         q(0362),
+         q(0),
+         ],
+      q(ruq) => [
+         q(5843),
+         q(0),
+         ],
+      q(rus) => [
+         q(0363),
+         q(0),
+         ],
+      q(rut) => [
+         q(5844),
+         q(0),
+         ],
+      q(ruu) => [
+         q(5845),
+         q(0),
+         ],
+      q(ruy) => [
+         q(5846),
+         q(0),
+         ],
+      q(ruz) => [
+         q(5847),
+         q(0),
+         ],
+      q(rwa) => [
+         q(5848),
+         q(0),
+         ],
+      q(rwk) => [
+         q(5849),
+         q(0),
+         ],
+      q(rwm) => [
+         q(5850),
+         q(0),
+         ],
+      q(rwo) => [
+         q(5851),
+         q(0),
+         ],
+      q(rwr) => [
+         q(5852),
+         q(0),
+         ],
+      q(ryn) => [
+         q(5853),
+         q(0),
+         ],
+      q(rys) => [
+         q(5854),
+         q(0),
+         ],
+      q(ryu) => [
+         q(5855),
+         q(0),
+         ],
+      q(saa) => [
+         q(5856),
+         q(0),
+         ],
+      q(sab) => [
+         q(5857),
+         q(0),
+         ],
+      q(sac) => [
+         q(5858),
+         q(0),
+         ],
+      q(sad) => [
+         q(0364),
+         q(0),
+         ],
+      q(sae) => [
+         q(5859),
+         q(0),
+         ],
+      q(saf) => [
+         q(5860),
+         q(0),
+         ],
+      q(sag) => [
+         q(0365),
+         q(0),
+         ],
+      q(sah) => [
+         q(0366),
+         q(0),
+         ],
+      q(sai) => [
+         q(0367),
+         q(1),
+         ],
+      q(saj) => [
+         q(5861),
+         q(0),
+         ],
+      q(sak) => [
+         q(5862),
+         q(0),
+         ],
+      q(sal) => [
+         q(0368),
+         q(0),
+         ],
+      q(sam) => [
+         q(0369),
+         q(0),
+         ],
+      q(san) => [
+         q(0370),
+         q(0),
+         ],
+      q(sao) => [
+         q(5863),
+         q(0),
+         ],
+      q(sap) => [
+         q(5864),
+         q(0),
+         ],
+      q(saq) => [
+         q(5865),
+         q(0),
+         ],
+      q(sar) => [
+         q(5866),
+         q(0),
+         ],
+      q(sas) => [
+         q(0371),
+         q(0),
+         ],
+      q(sat) => [
+         q(0372),
+         q(0),
+         ],
+      q(sau) => [
+         q(5867),
+         q(0),
+         ],
+      q(sav) => [
+         q(5868),
+         q(0),
+         ],
+      q(saw) => [
+         q(5869),
+         q(0),
+         ],
+      q(sax) => [
+         q(5870),
+         q(0),
+         ],
+      q(say) => [
+         q(5871),
+         q(0),
+         ],
+      q(saz) => [
+         q(5872),
+         q(0),
+         ],
+      q(sba) => [
+         q(5873),
+         q(0),
+         ],
+      q(sbb) => [
+         q(5874),
+         q(0),
+         ],
+      q(sbc) => [
+         q(5875),
+         q(0),
+         ],
+      q(sbd) => [
+         q(5876),
+         q(0),
+         ],
+      q(sbe) => [
+         q(5877),
+         q(0),
+         ],
+      q(sbf) => [
+         q(5878),
+         q(0),
+         ],
+      q(sbg) => [
+         q(5879),
+         q(0),
+         ],
+      q(sbh) => [
+         q(5880),
+         q(0),
+         ],
+      q(sbi) => [
+         q(5881),
+         q(0),
+         ],
+      q(sbj) => [
+         q(5882),
+         q(0),
+         ],
+      q(sbk) => [
+         q(5883),
+         q(0),
+         ],
+      q(sbl) => [
+         q(5884),
+         q(0),
+         ],
+      q(sbm) => [
+         q(5885),
+         q(0),
+         ],
+      q(sbn) => [
+         q(5886),
+         q(0),
+         ],
+      q(sbo) => [
+         q(5887),
+         q(0),
+         ],
+      q(sbp) => [
+         q(5888),
+         q(0),
+         ],
+      q(sbq) => [
+         q(5889),
+         q(0),
+         ],
+      q(sbr) => [
+         q(5890),
+         q(0),
+         ],
+      q(sbs) => [
+         q(5891),
+         q(0),
+         ],
+      q(sbt) => [
+         q(5892),
+         q(0),
+         ],
+      q(sbu) => [
+         q(5893),
+         q(0),
+         ],
+      q(sbv) => [
+         q(5894),
+         q(0),
+         ],
+      q(sbw) => [
+         q(5895),
+         q(0),
+         ],
+      q(sbx) => [
+         q(5896),
+         q(0),
+         ],
+      q(sby) => [
+         q(5897),
+         q(0),
+         ],
+      q(sbz) => [
+         q(5898),
+         q(0),
+         ],
+      q(scb) => [
+         q(5899),
+         q(0),
+         ],
+      q(sce) => [
+         q(5900),
+         q(0),
+         ],
+      q(scf) => [
+         q(5901),
+         q(0),
+         ],
+      q(scg) => [
+         q(5902),
+         q(0),
+         ],
+      q(sch) => [
+         q(5903),
+         q(0),
+         ],
+      q(sci) => [
+         q(5904),
+         q(0),
+         ],
+      q(sck) => [
+         q(5905),
+         q(0),
+         ],
+      q(scl) => [
+         q(5906),
+         q(0),
+         ],
+      q(scn) => [
+         q(0373),
+         q(0),
+         ],
+      q(sco) => [
+         q(0374),
+         q(0),
+         ],
+      q(scp) => [
+         q(5907),
+         q(0),
+         ],
+      q(scq) => [
+         q(5908),
+         q(0),
+         ],
+      q(scs) => [
+         q(5909),
+         q(0),
+         ],
+      q(scu) => [
+         q(5910),
+         q(0),
+         ],
+      q(scv) => [
+         q(5911),
+         q(0),
+         ],
+      q(scw) => [
+         q(5912),
+         q(0),
+         ],
+      q(scx) => [
+         q(5913),
+         q(0),
+         ],
+      q(sda) => [
+         q(5914),
+         q(0),
+         ],
+      q(sdb) => [
+         q(5915),
+         q(0),
+         ],
+      q(sdc) => [
+         q(5916),
+         q(0),
+         ],
+      q(sde) => [
+         q(5917),
+         q(0),
+         ],
+      q(sdf) => [
+         q(5918),
+         q(0),
+         ],
+      q(sdg) => [
+         q(5919),
+         q(0),
+         ],
+      q(sdh) => [
+         q(5920),
+         q(0),
+         ],
+      q(sdj) => [
+         q(5921),
+         q(0),
+         ],
+      q(sdk) => [
+         q(5922),
+         q(0),
+         ],
+      q(sdl) => [
+         q(5923),
+         q(0),
+         ],
+      q(sdm) => [
+         q(5924),
+         q(0),
+         ],
+      q(sdn) => [
+         q(5925),
+         q(0),
+         ],
+      q(sdo) => [
+         q(5926),
+         q(0),
+         ],
+      q(sdp) => [
+         q(5927),
+         q(0),
+         ],
+      q(sdr) => [
+         q(5928),
+         q(0),
+         ],
+      q(sds) => [
+         q(5929),
+         q(0),
+         ],
+      q(sdt) => [
+         q(5930),
+         q(0),
+         ],
+      q(sdu) => [
+         q(5931),
+         q(0),
+         ],
+      q(sdv) => [
+         q(0524),
+         q(0),
+         ],
+      q(sdx) => [
+         q(5932),
+         q(0),
+         ],
+      q(sdz) => [
+         q(5933),
+         q(0),
+         ],
+      q(sea) => [
+         q(5934),
+         q(0),
+         ],
+      q(seb) => [
+         q(5935),
+         q(0),
+         ],
+      q(sec) => [
+         q(5936),
+         q(0),
+         ],
+      q(sed) => [
+         q(5937),
+         q(0),
+         ],
+      q(see) => [
+         q(5938),
+         q(0),
+         ],
+      q(sef) => [
+         q(5939),
+         q(0),
+         ],
+      q(seg) => [
+         q(5940),
+         q(0),
+         ],
+      q(seh) => [
+         q(5941),
+         q(0),
+         ],
+      q(sei) => [
+         q(5942),
+         q(0),
+         ],
+      q(sej) => [
+         q(5943),
+         q(0),
+         ],
+      q(sek) => [
+         q(5944),
+         q(0),
+         ],
+      q(sel) => [
+         q(0375),
+         q(0),
+         ],
+      q(sem) => [
+         q(0376),
+         q(0),
+         ],
+      q(sen) => [
+         q(5945),
+         q(0),
+         ],
+      q(seo) => [
+         q(5946),
+         q(0),
+         ],
+      q(sep) => [
+         q(5947),
+         q(0),
+         ],
+      q(seq) => [
+         q(5948),
+         q(0),
+         ],
+      q(ser) => [
+         q(5949),
+         q(0),
+         ],
+      q(ses) => [
+         q(5950),
+         q(0),
+         ],
+      q(set) => [
+         q(5951),
+         q(0),
+         ],
+      q(seu) => [
+         q(5952),
+         q(0),
+         ],
+      q(sev) => [
+         q(5953),
+         q(0),
+         ],
+      q(sew) => [
+         q(5954),
+         q(0),
+         ],
+      q(sey) => [
+         q(5955),
+         q(0),
+         ],
+      q(sez) => [
+         q(5956),
+         q(0),
+         ],
+      q(sfb) => [
+         q(5957),
+         q(0),
+         ],
+      q(sfe) => [
+         q(5958),
+         q(0),
+         ],
+      q(sfm) => [
+         q(5959),
+         q(0),
+         ],
+      q(sfs) => [
+         q(5960),
+         q(0),
+         ],
+      q(sfw) => [
+         q(5961),
+         q(0),
+         ],
+      q(sga) => [
+         q(0377),
+         q(1),
+         ],
+      q(sgb) => [
+         q(5962),
+         q(0),
+         ],
+      q(sgc) => [
+         q(5963),
+         q(0),
+         ],
+      q(sgd) => [
+         q(5964),
+         q(0),
+         ],
+      q(sge) => [
+         q(5965),
+         q(0),
+         ],
+      q(sgg) => [
+         q(5966),
+         q(0),
+         ],
+      q(sgh) => [
+         q(5967),
+         q(0),
+         ],
+      q(sgi) => [
+         q(5968),
+         q(0),
+         ],
+      q(sgj) => [
+         q(5969),
+         q(0),
+         ],
+      q(sgk) => [
+         q(5970),
+         q(0),
+         ],
+      q(sgm) => [
+         q(5971),
+         q(0),
+         ],
+      q(sgn) => [
+         q(0378),
+         q(0),
+         ],
+      q(sgo) => [
+         q(5972),
+         q(0),
+         ],
+      q(sgp) => [
+         q(5973),
+         q(0),
+         ],
+      q(sgr) => [
+         q(5974),
+         q(0),
+         ],
+      q(sgs) => [
+         q(5975),
+         q(0),
+         ],
+      q(sgt) => [
+         q(5976),
+         q(0),
+         ],
+      q(sgu) => [
+         q(5977),
+         q(0),
+         ],
+      q(sgw) => [
+         q(5978),
+         q(0),
+         ],
+      q(sgx) => [
+         q(5979),
+         q(0),
+         ],
+      q(sgy) => [
+         q(5980),
+         q(0),
+         ],
+      q(sgz) => [
+         q(5981),
+         q(0),
+         ],
+      q(sha) => [
+         q(5982),
+         q(0),
+         ],
+      q(shb) => [
+         q(5983),
+         q(0),
+         ],
+      q(shc) => [
+         q(5984),
+         q(0),
+         ],
+      q(shd) => [
+         q(5985),
+         q(0),
+         ],
+      q(she) => [
+         q(5986),
+         q(0),
+         ],
+      q(shg) => [
+         q(5987),
+         q(0),
+         ],
+      q(shh) => [
+         q(5988),
+         q(0),
+         ],
+      q(shi) => [
+         q(5989),
+         q(0),
+         ],
+      q(shj) => [
+         q(5990),
+         q(0),
+         ],
+      q(shk) => [
+         q(5991),
+         q(0),
+         ],
+      q(shl) => [
+         q(5992),
+         q(0),
+         ],
+      q(shm) => [
+         q(5993),
+         q(0),
+         ],
+      q(shn) => [
+         q(0379),
+         q(0),
+         ],
+      q(sho) => [
+         q(5994),
+         q(0),
+         ],
+      q(shp) => [
+         q(5995),
+         q(0),
+         ],
+      q(shq) => [
+         q(5996),
+         q(0),
+         ],
+      q(shr) => [
+         q(5997),
+         q(0),
+         ],
+      q(shs) => [
+         q(5998),
+         q(0),
+         ],
+      q(sht) => [
+         q(5999),
+         q(0),
+         ],
+      q(shu) => [
+         q(6000),
+         q(0),
+         ],
+      q(shv) => [
+         q(6001),
+         q(0),
+         ],
+      q(shw) => [
+         q(6002),
+         q(0),
+         ],
+      q(shx) => [
+         q(6003),
+         q(0),
+         ],
+      q(shy) => [
+         q(6004),
+         q(0),
+         ],
+      q(shz) => [
+         q(6005),
+         q(0),
+         ],
+      q(sia) => [
+         q(6006),
+         q(0),
+         ],
+      q(sib) => [
+         q(6007),
+         q(0),
+         ],
+      q(sid) => [
+         q(0380),
+         q(0),
+         ],
+      q(sie) => [
+         q(6008),
+         q(0),
+         ],
+      q(sif) => [
+         q(6009),
+         q(0),
+         ],
+      q(sig) => [
+         q(6010),
+         q(0),
+         ],
+      q(sih) => [
+         q(6011),
+         q(0),
+         ],
+      q(sii) => [
+         q(6012),
+         q(0),
+         ],
+      q(sij) => [
+         q(6013),
+         q(0),
+         ],
+      q(sik) => [
+         q(6014),
+         q(0),
+         ],
+      q(sil) => [
+         q(6015),
+         q(0),
+         ],
+      q(sim) => [
+         q(6016),
+         q(0),
+         ],
+      q(sin) => [
+         q(0381),
+         q(0),
+         ],
+      q(sio) => [
+         q(0382),
+         q(0),
+         ],
+      q(sip) => [
+         q(6017),
+         q(0),
+         ],
+      q(siq) => [
+         q(6018),
+         q(0),
+         ],
+      q(sir) => [
+         q(6019),
+         q(0),
+         ],
+      q(sis) => [
+         q(6020),
+         q(0),
+         ],
+      q(sit) => [
+         q(0383),
+         q(0),
+         ],
+      q(siu) => [
+         q(6021),
+         q(0),
+         ],
+      q(siv) => [
+         q(6022),
+         q(0),
+         ],
+      q(siw) => [
+         q(6023),
+         q(0),
+         ],
+      q(six) => [
+         q(6024),
+         q(0),
+         ],
+      q(siy) => [
+         q(6025),
+         q(0),
+         ],
+      q(siz) => [
+         q(6026),
+         q(0),
+         ],
+      q(sja) => [
+         q(6027),
+         q(0),
+         ],
+      q(sjb) => [
+         q(6028),
+         q(0),
+         ],
+      q(sjd) => [
+         q(6029),
+         q(0),
+         ],
+      q(sje) => [
+         q(6030),
+         q(0),
+         ],
+      q(sjg) => [
+         q(6031),
+         q(0),
+         ],
+      q(sjk) => [
+         q(6032),
+         q(0),
+         ],
+      q(sjl) => [
+         q(6033),
+         q(0),
+         ],
+      q(sjm) => [
+         q(6034),
+         q(0),
+         ],
+      q(sjn) => [
+         q(6035),
+         q(0),
+         ],
+      q(sjo) => [
+         q(6036),
+         q(0),
+         ],
+      q(sjp) => [
+         q(6037),
+         q(0),
+         ],
+      q(sjr) => [
+         q(6038),
+         q(0),
+         ],
+      q(sjs) => [
+         q(6039),
+         q(0),
+         ],
+      q(sjt) => [
+         q(6040),
+         q(0),
+         ],
+      q(sju) => [
+         q(6041),
+         q(0),
+         ],
+      q(sjw) => [
+         q(6042),
+         q(0),
+         ],
+      q(ska) => [
+         q(6043),
+         q(0),
+         ],
+      q(skb) => [
+         q(6044),
+         q(0),
+         ],
+      q(skc) => [
+         q(6045),
+         q(0),
+         ],
+      q(skd) => [
+         q(6046),
+         q(0),
+         ],
+      q(ske) => [
+         q(6047),
+         q(0),
+         ],
+      q(skf) => [
+         q(6048),
+         q(0),
+         ],
+      q(skg) => [
+         q(6049),
+         q(0),
+         ],
+      q(skh) => [
+         q(6050),
+         q(0),
+         ],
+      q(ski) => [
+         q(6051),
+         q(0),
+         ],
+      q(skj) => [
+         q(6052),
+         q(0),
+         ],
+      q(skk) => [
+         q(6053),
+         q(0),
+         ],
+      q(skm) => [
+         q(6054),
+         q(0),
+         ],
+      q(skn) => [
+         q(6055),
+         q(0),
+         ],
+      q(sko) => [
+         q(6056),
+         q(0),
+         ],
+      q(skp) => [
+         q(6057),
+         q(0),
+         ],
+      q(skq) => [
+         q(6058),
+         q(0),
+         ],
+      q(skr) => [
+         q(6059),
+         q(0),
+         ],
+      q(sks) => [
+         q(6060),
+         q(0),
+         ],
+      q(skt) => [
+         q(6061),
+         q(0),
+         ],
+      q(sku) => [
+         q(6062),
+         q(0),
+         ],
+      q(skv) => [
+         q(6063),
+         q(0),
+         ],
+      q(skw) => [
+         q(6064),
+         q(0),
+         ],
+      q(skx) => [
+         q(6065),
+         q(0),
+         ],
+      q(sky) => [
+         q(6066),
+         q(0),
+         ],
+      q(skz) => [
+         q(6067),
+         q(0),
+         ],
+      q(sla) => [
+         q(0384),
+         q(0),
+         ],
+      q(slc) => [
+         q(5877),
+         q(0),
+         ],
+      q(sld) => [
+         q(6068),
+         q(0),
+         ],
+      q(sle) => [
+         q(6069),
+         q(0),
+         ],
+      q(slf) => [
+         q(6070),
+         q(0),
+         ],
+      q(slg) => [
+         q(6071),
+         q(0),
+         ],
+      q(slh) => [
+         q(6072),
+         q(0),
+         ],
+      q(sli) => [
+         q(6073),
+         q(0),
+         ],
+      q(slj) => [
+         q(6074),
+         q(0),
+         ],
+      q(sll) => [
+         q(6075),
+         q(0),
+         ],
+      q(slm) => [
+         q(6076),
+         q(0),
+         ],
+      q(sln) => [
+         q(6077),
+         q(0),
+         ],
+      q(slo) => [
+         q(0385),
+         q(0),
+         ],
+      q(slp) => [
+         q(6078),
+         q(0),
+         ],
+      q(slq) => [
+         q(6079),
+         q(0),
+         ],
+      q(slr) => [
+         q(6080),
+         q(0),
+         ],
+      q(sls) => [
+         q(6081),
+         q(0),
+         ],
+      q(slt) => [
+         q(6082),
+         q(0),
+         ],
+      q(slu) => [
+         q(6083),
+         q(0),
+         ],
+      q(slv) => [
+         q(0386),
+         q(0),
+         ],
+      q(slw) => [
+         q(6084),
+         q(0),
+         ],
+      q(slx) => [
+         q(6085),
+         q(0),
+         ],
+      q(sly) => [
+         q(6086),
+         q(0),
+         ],
+      q(slz) => [
+         q(6087),
+         q(0),
+         ],
+      q(sma) => [
+         q(0387),
+         q(0),
+         ],
+      q(smb) => [
+         q(6088),
+         q(0),
+         ],
+      q(smc) => [
+         q(6089),
+         q(0),
+         ],
+      q(smd) => [
+         q(6090),
+         q(0),
+         ],
+      q(sme) => [
+         q(0388),
+         q(0),
+         ],
+      q(smf) => [
+         q(6091),
+         q(0),
+         ],
+      q(smg) => [
+         q(6092),
+         q(0),
+         ],
+      q(smh) => [
+         q(6093),
+         q(0),
+         ],
+      q(smi) => [
+         q(0389),
+         q(0),
+         ],
+      q(smj) => [
+         q(0390),
+         q(0),
+         ],
+      q(smk) => [
+         q(6094),
+         q(0),
+         ],
+      q(sml) => [
+         q(6095),
+         q(0),
+         ],
+      q(smm) => [
+         q(6096),
+         q(0),
+         ],
+      q(smn) => [
+         q(0391),
+         q(0),
+         ],
+      q(smo) => [
+         q(0392),
+         q(0),
+         ],
+      q(smp) => [
+         q(6097),
+         q(0),
+         ],
+      q(smq) => [
+         q(6098),
+         q(0),
+         ],
+      q(smr) => [
+         q(6099),
+         q(0),
+         ],
+      q(sms) => [
+         q(0393),
+         q(0),
+         ],
+      q(smt) => [
+         q(6100),
+         q(0),
+         ],
+      q(smu) => [
+         q(6101),
+         q(0),
+         ],
+      q(smv) => [
+         q(6102),
+         q(0),
+         ],
+      q(smw) => [
+         q(6103),
+         q(0),
+         ],
+      q(smx) => [
+         q(6104),
+         q(0),
+         ],
+      q(smy) => [
+         q(6105),
+         q(0),
+         ],
+      q(smz) => [
+         q(6106),
+         q(0),
+         ],
+      q(sna) => [
+         q(0394),
+         q(0),
+         ],
+      q(snb) => [
+         q(6107),
+         q(0),
+         ],
+      q(snc) => [
+         q(6108),
+         q(0),
+         ],
+      q(snd) => [
+         q(0395),
+         q(0),
+         ],
+      q(sne) => [
+         q(6109),
+         q(0),
+         ],
+      q(snf) => [
+         q(6110),
+         q(0),
+         ],
+      q(sng) => [
+         q(6111),
+         q(0),
+         ],
+      q(snh) => [
+         q(6112),
+         q(0),
+         ],
+      q(sni) => [
+         q(6113),
+         q(0),
+         ],
+      q(snj) => [
+         q(6114),
+         q(0),
+         ],
+      q(snk) => [
+         q(0396),
+         q(0),
+         ],
+      q(snl) => [
+         q(6115),
+         q(0),
+         ],
+      q(snm) => [
+         q(6116),
+         q(0),
+         ],
+      q(snn) => [
+         q(6117),
+         q(0),
+         ],
+      q(sno) => [
+         q(6118),
+         q(0),
+         ],
+      q(snp) => [
+         q(6119),
+         q(0),
+         ],
+      q(snq) => [
+         q(6120),
+         q(0),
+         ],
+      q(snr) => [
+         q(6121),
+         q(0),
+         ],
+      q(sns) => [
+         q(6122),
+         q(0),
+         ],
+      q(snu) => [
+         q(6123),
+         q(0),
+         ],
+      q(snv) => [
+         q(6124),
+         q(0),
+         ],
+      q(snw) => [
+         q(6125),
+         q(0),
+         ],
+      q(snx) => [
+         q(6126),
+         q(0),
+         ],
+      q(sny) => [
+         q(6127),
+         q(0),
+         ],
+      q(snz) => [
+         q(6128),
+         q(0),
+         ],
+      q(soa) => [
+         q(6129),
+         q(0),
+         ],
+      q(sob) => [
+         q(6130),
+         q(0),
+         ],
+      q(soc) => [
+         q(6131),
+         q(0),
+         ],
+      q(sod) => [
+         q(6132),
+         q(0),
+         ],
+      q(soe) => [
+         q(6133),
+         q(0),
+         ],
+      q(sog) => [
+         q(0397),
+         q(0),
+         ],
+      q(soh) => [
+         q(6134),
+         q(0),
+         ],
+      q(soi) => [
+         q(6135),
+         q(0),
+         ],
+      q(soj) => [
+         q(6136),
+         q(0),
+         ],
+      q(sok) => [
+         q(6137),
+         q(0),
+         ],
+      q(sol) => [
+         q(6138),
+         q(0),
+         ],
+      q(som) => [
+         q(0398),
+         q(0),
+         ],
+      q(son) => [
+         q(0399),
+         q(0),
+         ],
+      q(soo) => [
+         q(6139),
+         q(0),
+         ],
+      q(sop) => [
+         q(6140),
+         q(0),
+         ],
+      q(soq) => [
+         q(6141),
+         q(0),
+         ],
+      q(sor) => [
+         q(6142),
+         q(0),
+         ],
+      q(sos) => [
+         q(6143),
+         q(0),
+         ],
+      q(sot) => [
+         q(0400),
+         q(0),
+         ],
+      q(sou) => [
+         q(6144),
+         q(0),
+         ],
+      q(sov) => [
+         q(6145),
+         q(0),
+         ],
+      q(sow) => [
+         q(6146),
+         q(0),
+         ],
+      q(sox) => [
+         q(6147),
+         q(0),
+         ],
+      q(soy) => [
+         q(6148),
+         q(0),
+         ],
+      q(soz) => [
+         q(6149),
+         q(0),
+         ],
+      q(spa) => [
+         q(0401),
+         q(0),
+         ],
+      q(spb) => [
+         q(6150),
+         q(0),
+         ],
+      q(spc) => [
+         q(6151),
+         q(0),
+         ],
+      q(spd) => [
+         q(6152),
+         q(0),
+         ],
+      q(spe) => [
+         q(6153),
+         q(0),
+         ],
+      q(spg) => [
+         q(6154),
+         q(0),
+         ],
+      q(spi) => [
+         q(6155),
+         q(0),
+         ],
+      q(spk) => [
+         q(6156),
+         q(0),
+         ],
+      q(spl) => [
+         q(6157),
+         q(0),
+         ],
+      q(spm) => [
+         q(6158),
+         q(0),
+         ],
+      q(spo) => [
+         q(6159),
+         q(0),
+         ],
+      q(spp) => [
+         q(6160),
+         q(0),
+         ],
+      q(spq) => [
+         q(6161),
+         q(0),
+         ],
+      q(spr) => [
+         q(6162),
+         q(0),
+         ],
+      q(sps) => [
+         q(6163),
+         q(0),
+         ],
+      q(spt) => [
+         q(6164),
+         q(0),
+         ],
+      q(spu) => [
+         q(6165),
+         q(0),
+         ],
+      q(spv) => [
+         q(6166),
+         q(0),
+         ],
+      q(spx) => [
+         q(6167),
+         q(0),
+         ],
+      q(spy) => [
+         q(6168),
+         q(0),
+         ],
+      q(sqa) => [
+         q(6169),
+         q(0),
+         ],
+      q(sqh) => [
+         q(6170),
+         q(0),
+         ],
+      q(sqj) => [
+         q(0525),
+         q(0),
+         ],
+      q(sqk) => [
+         q(6171),
+         q(0),
+         ],
+      q(sqm) => [
+         q(6172),
+         q(0),
+         ],
+      q(sqn) => [
+         q(6173),
+         q(0),
+         ],
+      q(sqo) => [
+         q(6174),
+         q(0),
+         ],
+      q(sqq) => [
+         q(6175),
+         q(0),
+         ],
+      q(sqr) => [
+         q(6176),
+         q(0),
+         ],
+      q(sqs) => [
+         q(6177),
+         q(0),
+         ],
+      q(sqt) => [
+         q(6178),
+         q(0),
+         ],
+      q(squ) => [
+         q(6179),
+         q(0),
+         ],
+      q(sra) => [
+         q(6180),
+         q(0),
+         ],
+      q(srb) => [
+         q(6181),
+         q(0),
+         ],
+      q(src) => [
+         q(6182),
+         q(0),
+         ],
+      q(srd) => [
+         q(0402),
+         q(0),
+         ],
+      q(sre) => [
+         q(6183),
+         q(0),
+         ],
+      q(srf) => [
+         q(6184),
+         q(0),
+         ],
+      q(srg) => [
+         q(6185),
+         q(0),
+         ],
+      q(srh) => [
+         q(6186),
+         q(0),
+         ],
+      q(sri) => [
+         q(6187),
+         q(0),
+         ],
+      q(srk) => [
+         q(6188),
+         q(0),
+         ],
+      q(srl) => [
+         q(6189),
+         q(0),
+         ],
+      q(srm) => [
+         q(6190),
+         q(0),
+         ],
+      q(srn) => [
+         q(0403),
+         q(0),
+         ],
+      q(sro) => [
+         q(6191),
+         q(0),
+         ],
+      q(srp) => [
+         q(0404),
+         q(0),
+         ],
+      q(srq) => [
+         q(6192),
+         q(0),
+         ],
+      q(srr) => [
+         q(0405),
+         q(0),
+         ],
+      q(srs) => [
+         q(6193),
+         q(0),
+         ],
+      q(srt) => [
+         q(6194),
+         q(0),
+         ],
+      q(sru) => [
+         q(6195),
+         q(0),
+         ],
+      q(srv) => [
+         q(6196),
+         q(0),
+         ],
+      q(srw) => [
+         q(6197),
+         q(0),
+         ],
+      q(srx) => [
+         q(6198),
+         q(0),
+         ],
+      q(sry) => [
+         q(6199),
+         q(0),
+         ],
+      q(srz) => [
+         q(6200),
+         q(0),
+         ],
+      q(ssa) => [
+         q(0406),
+         q(0),
+         ],
+      q(ssb) => [
+         q(6201),
+         q(0),
+         ],
+      q(ssc) => [
+         q(6202),
+         q(0),
+         ],
+      q(ssd) => [
+         q(6203),
+         q(0),
+         ],
+      q(sse) => [
+         q(6204),
+         q(0),
+         ],
+      q(ssf) => [
+         q(6205),
+         q(0),
+         ],
+      q(ssg) => [
+         q(6206),
+         q(0),
+         ],
+      q(ssh) => [
+         q(6207),
+         q(0),
+         ],
+      q(ssi) => [
+         q(6208),
+         q(0),
+         ],
+      q(ssj) => [
+         q(6209),
+         q(0),
+         ],
+      q(ssk) => [
+         q(6210),
+         q(0),
+         ],
+      q(ssl) => [
+         q(6211),
+         q(0),
+         ],
+      q(ssm) => [
+         q(6212),
+         q(0),
+         ],
+      q(ssn) => [
+         q(6213),
+         q(0),
+         ],
+      q(sso) => [
+         q(6214),
+         q(0),
+         ],
+      q(ssp) => [
+         q(6215),
+         q(0),
+         ],
+      q(ssq) => [
+         q(6216),
+         q(0),
+         ],
+      q(ssr) => [
+         q(6217),
+         q(0),
+         ],
+      q(sss) => [
+         q(6218),
+         q(0),
+         ],
+      q(sst) => [
+         q(6219),
+         q(0),
+         ],
+      q(ssu) => [
+         q(6220),
+         q(0),
+         ],
+      q(ssv) => [
+         q(6221),
+         q(0),
+         ],
+      q(ssw) => [
+         q(0407),
+         q(0),
+         ],
+      q(ssx) => [
+         q(6222),
+         q(0),
+         ],
+      q(ssy) => [
+         q(6223),
+         q(0),
+         ],
+      q(ssz) => [
+         q(6224),
+         q(0),
+         ],
+      q(sta) => [
+         q(6225),
+         q(0),
+         ],
+      q(stb) => [
+         q(6226),
+         q(0),
+         ],
+      q(std) => [
+         q(6227),
+         q(0),
+         ],
+      q(ste) => [
+         q(6228),
+         q(0),
+         ],
+      q(stf) => [
+         q(6229),
+         q(0),
+         ],
+      q(stg) => [
+         q(6230),
+         q(0),
+         ],
+      q(sth) => [
+         q(6231),
+         q(0),
+         ],
+      q(sti) => [
+         q(6232),
+         q(0),
+         ],
+      q(stj) => [
+         q(6233),
+         q(0),
+         ],
+      q(stk) => [
+         q(6234),
+         q(0),
+         ],
+      q(stl) => [
+         q(6235),
+         q(0),
+         ],
+      q(stm) => [
+         q(6236),
+         q(0),
+         ],
+      q(stn) => [
+         q(6237),
+         q(0),
+         ],
+      q(sto) => [
+         q(6238),
+         q(0),
+         ],
+      q(stp) => [
+         q(6239),
+         q(0),
+         ],
+      q(stq) => [
+         q(6240),
+         q(0),
+         ],
+      q(str) => [
+         q(6241),
+         q(0),
+         ],
+      q(sts) => [
+         q(6242),
+         q(0),
+         ],
+      q(stt) => [
+         q(6243),
+         q(0),
+         ],
+      q(stu) => [
+         q(6244),
+         q(0),
+         ],
+      q(stv) => [
+         q(6245),
+         q(0),
+         ],
+      q(stw) => [
+         q(6246),
+         q(0),
+         ],
+      q(sua) => [
+         q(6247),
+         q(0),
+         ],
+      q(sub) => [
+         q(6248),
+         q(0),
+         ],
+      q(suc) => [
+         q(6249),
+         q(0),
+         ],
+      q(sue) => [
+         q(6250),
+         q(0),
+         ],
+      q(sug) => [
+         q(6251),
+         q(0),
+         ],
+      q(sui) => [
+         q(6252),
+         q(0),
+         ],
+      q(suj) => [
+         q(6253),
+         q(0),
+         ],
+      q(suk) => [
+         q(0408),
+         q(0),
+         ],
+      q(sun) => [
+         q(0409),
+         q(0),
+         ],
+      q(suq) => [
+         q(6254),
+         q(0),
+         ],
+      q(sur) => [
+         q(6255),
+         q(0),
+         ],
+      q(sus) => [
+         q(0410),
+         q(0),
+         ],
+      q(sut) => [
+         q(6256),
+         q(0),
+         ],
+      q(suv) => [
+         q(6257),
+         q(0),
+         ],
+      q(suw) => [
+         q(6258),
+         q(0),
+         ],
+      q(sux) => [
+         q(0411),
+         q(0),
+         ],
+      q(suy) => [
+         q(6259),
+         q(0),
+         ],
+      q(suz) => [
+         q(6260),
+         q(0),
+         ],
+      q(sva) => [
+         q(6261),
+         q(0),
+         ],
+      q(svb) => [
+         q(6262),
+         q(0),
+         ],
+      q(svc) => [
+         q(6263),
+         q(0),
+         ],
+      q(sve) => [
+         q(6264),
+         q(0),
+         ],
+      q(svk) => [
+         q(6265),
+         q(0),
+         ],
+      q(svr) => [
+         q(6266),
+         q(0),
+         ],
+      q(svs) => [
+         q(6267),
+         q(0),
+         ],
+      q(svx) => [
+         q(6268),
+         q(0),
+         ],
+      q(swa) => [
+         q(0412),
+         q(0),
+         ],
+      q(swb) => [
+         q(6269),
+         q(0),
+         ],
+      q(swc) => [
+         q(6270),
+         q(0),
+         ],
+      q(swe) => [
+         q(0413),
+         q(0),
+         ],
+      q(swf) => [
+         q(6271),
+         q(0),
+         ],
+      q(swg) => [
+         q(6272),
+         q(0),
+         ],
+      q(swh) => [
+         q(6273),
+         q(0),
+         ],
+      q(swi) => [
+         q(6274),
+         q(0),
+         ],
+      q(swj) => [
+         q(6275),
+         q(0),
+         ],
+      q(swk) => [
+         q(6276),
+         q(0),
+         ],
+      q(swl) => [
+         q(6277),
+         q(0),
+         ],
+      q(swm) => [
+         q(6278),
+         q(0),
+         ],
+      q(swn) => [
+         q(6279),
+         q(0),
+         ],
+      q(swo) => [
+         q(6280),
+         q(0),
+         ],
+      q(swp) => [
+         q(6281),
+         q(0),
+         ],
+      q(swq) => [
+         q(6282),
+         q(0),
+         ],
+      q(swr) => [
+         q(6283),
+         q(0),
+         ],
+      q(sws) => [
+         q(6284),
+         q(0),
+         ],
+      q(swt) => [
+         q(6285),
+         q(0),
+         ],
+      q(swu) => [
+         q(6286),
+         q(0),
+         ],
+      q(swv) => [
+         q(6287),
+         q(0),
+         ],
+      q(sww) => [
+         q(6288),
+         q(0),
+         ],
+      q(swx) => [
+         q(6289),
+         q(0),
+         ],
+      q(swy) => [
+         q(6290),
+         q(0),
+         ],
+      q(sxb) => [
+         q(6291),
+         q(0),
+         ],
+      q(sxc) => [
+         q(6292),
+         q(0),
+         ],
+      q(sxe) => [
+         q(6293),
+         q(0),
+         ],
+      q(sxg) => [
+         q(6294),
+         q(0),
+         ],
+      q(sxk) => [
+         q(6295),
+         q(0),
+         ],
+      q(sxl) => [
+         q(6296),
+         q(0),
+         ],
+      q(sxm) => [
+         q(6297),
+         q(0),
+         ],
+      q(sxn) => [
+         q(6298),
+         q(0),
+         ],
+      q(sxo) => [
+         q(6299),
+         q(0),
+         ],
+      q(sxr) => [
+         q(6300),
+         q(0),
+         ],
+      q(sxs) => [
+         q(6301),
+         q(0),
+         ],
+      q(sxu) => [
+         q(6302),
+         q(0),
+         ],
+      q(sxw) => [
+         q(6303),
+         q(0),
+         ],
+      q(sya) => [
+         q(6304),
+         q(0),
+         ],
+      q(syb) => [
+         q(6305),
+         q(0),
+         ],
+      q(syc) => [
+         q(0414),
+         q(0),
+         ],
+      q(syd) => [
+         q(0526),
+         q(0),
+         ],
+      q(syi) => [
+         q(6306),
+         q(0),
+         ],
+      q(syk) => [
+         q(6307),
+         q(0),
+         ],
+      q(syl) => [
+         q(6308),
+         q(0),
+         ],
+      q(sym) => [
+         q(6309),
+         q(0),
+         ],
+      q(syn) => [
+         q(6310),
+         q(0),
+         ],
+      q(syo) => [
+         q(6311),
+         q(0),
+         ],
+      q(syr) => [
+         q(0415),
+         q(0),
+         ],
+      q(sys) => [
+         q(6312),
+         q(0),
+         ],
+      q(syw) => [
+         q(6313),
+         q(0),
+         ],
+      q(syy) => [
+         q(6314),
+         q(0),
+         ],
+      q(sza) => [
+         q(6315),
+         q(0),
+         ],
+      q(szb) => [
+         q(6316),
+         q(0),
+         ],
+      q(szc) => [
+         q(6317),
+         q(0),
+         ],
+      q(szd) => [
+         q(6318),
+         q(0),
+         ],
+      q(sze) => [
+         q(6319),
+         q(0),
+         ],
+      q(szg) => [
+         q(6320),
+         q(0),
+         ],
+      q(szl) => [
+         q(6321),
+         q(0),
+         ],
+      q(szn) => [
+         q(6322),
+         q(0),
+         ],
+      q(szp) => [
+         q(6323),
+         q(0),
+         ],
+      q(szv) => [
+         q(6324),
+         q(0),
+         ],
+      q(szw) => [
+         q(6325),
+         q(0),
+         ],
+      q(taa) => [
+         q(6326),
+         q(0),
+         ],
+      q(tab) => [
+         q(6327),
+         q(0),
+         ],
+      q(tac) => [
+         q(6328),
+         q(0),
+         ],
+      q(tad) => [
+         q(6329),
+         q(0),
+         ],
+      q(tae) => [
+         q(6330),
+         q(0),
+         ],
+      q(taf) => [
+         q(6331),
+         q(0),
+         ],
+      q(tag) => [
+         q(6332),
+         q(0),
+         ],
+      q(tah) => [
+         q(0416),
+         q(0),
+         ],
+      q(tai) => [
+         q(0417),
+         q(0),
+         ],
+      q(taj) => [
+         q(6333),
+         q(0),
+         ],
+      q(tak) => [
+         q(6334),
+         q(0),
+         ],
+      q(tal) => [
+         q(6335),
+         q(0),
+         ],
+      q(tam) => [
+         q(0418),
+         q(0),
+         ],
+      q(tan) => [
+         q(6336),
+         q(0),
+         ],
+      q(tao) => [
+         q(6337),
+         q(0),
+         ],
+      q(tap) => [
+         q(6338),
+         q(0),
+         ],
+      q(taq) => [
+         q(6339),
+         q(0),
+         ],
+      q(tar) => [
+         q(6340),
+         q(0),
+         ],
+      q(tas) => [
+         q(6341),
+         q(0),
+         ],
+      q(tat) => [
+         q(0419),
+         q(0),
+         ],
+      q(tau) => [
+         q(6342),
+         q(0),
+         ],
+      q(tav) => [
+         q(6343),
+         q(0),
+         ],
+      q(taw) => [
+         q(6344),
+         q(0),
+         ],
+      q(tax) => [
+         q(6345),
+         q(0),
+         ],
+      q(tay) => [
+         q(6346),
+         q(0),
+         ],
+      q(taz) => [
+         q(6347),
+         q(0),
+         ],
+      q(tba) => [
+         q(6348),
+         q(0),
+         ],
+      q(tbb) => [
+         q(6349),
+         q(0),
+         ],
+      q(tbc) => [
+         q(6350),
+         q(0),
+         ],
+      q(tbd) => [
+         q(6351),
+         q(0),
+         ],
+      q(tbe) => [
+         q(6352),
+         q(0),
+         ],
+      q(tbf) => [
+         q(6353),
+         q(0),
+         ],
+      q(tbg) => [
+         q(6354),
+         q(0),
+         ],
+      q(tbh) => [
+         q(6355),
+         q(0),
+         ],
+      q(tbi) => [
+         q(6356),
+         q(0),
+         ],
+      q(tbj) => [
+         q(6357),
+         q(0),
+         ],
+      q(tbk) => [
+         q(6358),
+         q(0),
+         ],
+      q(tbl) => [
+         q(6359),
+         q(0),
+         ],
+      q(tbm) => [
+         q(6360),
+         q(0),
+         ],
+      q(tbn) => [
+         q(6361),
+         q(0),
+         ],
+      q(tbo) => [
+         q(6362),
+         q(0),
+         ],
+      q(tbp) => [
+         q(6363),
+         q(0),
+         ],
+      q(tbq) => [
+         q(0527),
+         q(0),
+         ],
+      q(tbr) => [
+         q(6364),
+         q(0),
+         ],
+      q(tbs) => [
+         q(6365),
+         q(0),
+         ],
+      q(tbt) => [
+         q(6366),
+         q(0),
+         ],
+      q(tbu) => [
+         q(6367),
+         q(0),
+         ],
+      q(tbv) => [
+         q(6368),
+         q(0),
+         ],
+      q(tbw) => [
+         q(6369),
+         q(0),
+         ],
+      q(tbx) => [
+         q(6370),
+         q(0),
+         ],
+      q(tby) => [
+         q(6371),
+         q(0),
+         ],
+      q(tbz) => [
+         q(6372),
+         q(0),
+         ],
+      q(tca) => [
+         q(6373),
+         q(0),
+         ],
+      q(tcb) => [
+         q(6374),
+         q(0),
+         ],
+      q(tcc) => [
+         q(6375),
+         q(0),
+         ],
+      q(tcd) => [
+         q(6376),
+         q(0),
+         ],
+      q(tce) => [
+         q(6377),
+         q(0),
+         ],
+      q(tcf) => [
+         q(6378),
+         q(0),
+         ],
+      q(tcg) => [
+         q(6379),
+         q(0),
+         ],
+      q(tch) => [
+         q(6380),
+         q(0),
+         ],
+      q(tci) => [
+         q(6381),
+         q(0),
+         ],
+      q(tck) => [
+         q(6382),
+         q(0),
+         ],
+      q(tcl) => [
+         q(6383),
+         q(0),
+         ],
+      q(tcm) => [
+         q(6384),
+         q(0),
+         ],
+      q(tcn) => [
+         q(6385),
+         q(0),
+         ],
+      q(tco) => [
+         q(6386),
+         q(0),
+         ],
+      q(tcp) => [
+         q(6387),
+         q(0),
+         ],
+      q(tcq) => [
+         q(6388),
+         q(0),
+         ],
+      q(tcs) => [
+         q(6389),
+         q(0),
+         ],
+      q(tct) => [
+         q(6390),
+         q(0),
+         ],
+      q(tcu) => [
+         q(6391),
+         q(0),
+         ],
+      q(tcw) => [
+         q(6392),
+         q(0),
+         ],
+      q(tcx) => [
+         q(6393),
+         q(0),
+         ],
+      q(tcy) => [
+         q(6394),
+         q(0),
+         ],
+      q(tcz) => [
+         q(6395),
+         q(0),
+         ],
+      q(tda) => [
+         q(6396),
+         q(0),
+         ],
+      q(tdb) => [
+         q(6397),
+         q(0),
+         ],
+      q(tdc) => [
+         q(6398),
+         q(0),
+         ],
+      q(tdd) => [
+         q(6399),
+         q(0),
+         ],
+      q(tde) => [
+         q(6400),
+         q(0),
+         ],
+      q(tdf) => [
+         q(6401),
+         q(0),
+         ],
+      q(tdg) => [
+         q(6402),
+         q(0),
+         ],
+      q(tdh) => [
+         q(6403),
+         q(0),
+         ],
+      q(tdi) => [
+         q(6404),
+         q(0),
+         ],
+      q(tdj) => [
+         q(6405),
+         q(0),
+         ],
+      q(tdk) => [
+         q(6406),
+         q(0),
+         ],
+      q(tdl) => [
+         q(6407),
+         q(0),
+         ],
+      q(tdn) => [
+         q(6408),
+         q(0),
+         ],
+      q(tdo) => [
+         q(6409),
+         q(0),
+         ],
+      q(tdq) => [
+         q(6410),
+         q(0),
+         ],
+      q(tdr) => [
+         q(6411),
+         q(0),
+         ],
+      q(tds) => [
+         q(6412),
+         q(0),
+         ],
+      q(tdt) => [
+         q(6413),
+         q(0),
+         ],
+      q(tdu) => [
+         q(6414),
+         q(0),
+         ],
+      q(tdv) => [
+         q(6415),
+         q(0),
+         ],
+      q(tdx) => [
+         q(6416),
+         q(0),
+         ],
+      q(tdy) => [
+         q(6417),
+         q(0),
+         ],
+      q(tea) => [
+         q(6418),
+         q(0),
+         ],
+      q(teb) => [
+         q(6419),
+         q(0),
+         ],
+      q(tec) => [
+         q(6420),
+         q(0),
+         ],
+      q(ted) => [
+         q(6421),
+         q(0),
+         ],
+      q(tee) => [
+         q(6422),
+         q(0),
+         ],
+      q(tef) => [
+         q(6423),
+         q(0),
+         ],
+      q(teg) => [
+         q(6424),
+         q(0),
+         ],
+      q(teh) => [
+         q(6425),
+         q(0),
+         ],
+      q(tei) => [
+         q(6426),
+         q(0),
+         ],
+      q(tek) => [
+         q(6427),
+         q(0),
+         ],
+      q(tel) => [
+         q(0420),
+         q(0),
+         ],
+      q(tem) => [
+         q(0421),
+         q(0),
+         ],
+      q(ten) => [
+         q(6428),
+         q(0),
+         ],
+      q(teo) => [
+         q(6429),
+         q(0),
+         ],
+      q(tep) => [
+         q(6430),
+         q(0),
+         ],
+      q(teq) => [
+         q(6431),
+         q(0),
+         ],
+      q(ter) => [
+         q(0422),
+         q(0),
+         ],
+      q(tes) => [
+         q(6432),
+         q(0),
+         ],
+      q(tet) => [
+         q(0423),
+         q(0),
+         ],
+      q(teu) => [
+         q(6433),
+         q(0),
+         ],
+      q(tev) => [
+         q(6434),
+         q(0),
+         ],
+      q(tew) => [
+         q(6435),
+         q(0),
+         ],
+      q(tex) => [
+         q(6436),
+         q(0),
+         ],
+      q(tey) => [
+         q(6437),
+         q(0),
+         ],
+      q(tfi) => [
+         q(6438),
+         q(0),
+         ],
+      q(tfn) => [
+         q(6439),
+         q(0),
+         ],
+      q(tfo) => [
+         q(6440),
+         q(0),
+         ],
+      q(tfr) => [
+         q(6441),
+         q(0),
+         ],
+      q(tft) => [
+         q(6442),
+         q(0),
+         ],
+      q(tga) => [
+         q(6443),
+         q(0),
+         ],
+      q(tgb) => [
+         q(6444),
+         q(0),
+         ],
+      q(tgc) => [
+         q(6445),
+         q(0),
+         ],
+      q(tgd) => [
+         q(6446),
+         q(0),
+         ],
+      q(tge) => [
+         q(6447),
+         q(0),
+         ],
+      q(tgf) => [
+         q(6448),
+         q(0),
+         ],
+      q(tgg) => [
+         q(6449),
+         q(0),
+         ],
+      q(tgh) => [
+         q(6450),
+         q(0),
+         ],
+      q(tgi) => [
+         q(6451),
+         q(0),
+         ],
+      q(tgj) => [
+         q(6452),
+         q(0),
+         ],
+      q(tgk) => [
+         q(0424),
+         q(0),
+         ],
+      q(tgl) => [
+         q(0425),
+         q(0),
+         ],
+      q(tgn) => [
+         q(6453),
+         q(0),
+         ],
+      q(tgo) => [
+         q(6454),
+         q(0),
+         ],
+      q(tgp) => [
+         q(6455),
+         q(0),
+         ],
+      q(tgq) => [
+         q(6456),
+         q(0),
+         ],
+      q(tgr) => [
+         q(6457),
+         q(0),
+         ],
+      q(tgs) => [
+         q(6458),
+         q(0),
+         ],
+      q(tgt) => [
+         q(6459),
+         q(0),
+         ],
+      q(tgu) => [
+         q(6460),
+         q(0),
+         ],
+      q(tgv) => [
+         q(6461),
+         q(0),
+         ],
+      q(tgw) => [
+         q(6462),
+         q(0),
+         ],
+      q(tgx) => [
+         q(6463),
+         q(0),
+         ],
+      q(tgy) => [
+         q(6464),
+         q(0),
+         ],
+      q(tgz) => [
+         q(6465),
+         q(0),
+         ],
+      q(tha) => [
+         q(0426),
+         q(0),
+         ],
+      q(thc) => [
+         q(6466),
+         q(0),
+         ],
+      q(thd) => [
+         q(6467),
+         q(0),
+         ],
+      q(the) => [
+         q(6468),
+         q(0),
+         ],
+      q(thf) => [
+         q(6469),
+         q(0),
+         ],
+      q(thh) => [
+         q(6470),
+         q(0),
+         ],
+      q(thi) => [
+         q(6471),
+         q(0),
+         ],
+      q(thk) => [
+         q(6472),
+         q(0),
+         ],
+      q(thl) => [
+         q(6473),
+         q(0),
+         ],
+      q(thm) => [
+         q(6474),
+         q(0),
+         ],
+      q(thn) => [
+         q(6475),
+         q(0),
+         ],
+      q(thp) => [
+         q(6476),
+         q(0),
+         ],
+      q(thq) => [
+         q(6477),
+         q(0),
+         ],
+      q(thr) => [
+         q(6478),
+         q(0),
+         ],
+      q(ths) => [
+         q(6479),
+         q(0),
+         ],
+      q(tht) => [
+         q(6480),
+         q(0),
+         ],
+      q(thu) => [
+         q(6481),
+         q(0),
+         ],
+      q(thv) => [
+         q(6482),
+         q(0),
+         ],
+      q(thw) => [
+         q(6483),
+         q(0),
+         ],
+      q(thx) => [
+         q(6484),
+         q(0),
+         ],
+      q(thy) => [
+         q(6485),
+         q(0),
+         ],
+      q(thz) => [
+         q(6486),
+         q(0),
+         ],
+      q(tia) => [
+         q(6487),
+         q(0),
+         ],
+      q(tib) => [
+         q(0427),
+         q(0),
+         ],
+      q(tic) => [
+         q(6488),
+         q(0),
+         ],
+      q(tid) => [
+         q(6489),
+         q(0),
+         ],
+      q(tif) => [
+         q(6490),
+         q(0),
+         ],
+      q(tig) => [
+         q(0428),
+         q(0),
+         ],
+      q(tih) => [
+         q(6491),
+         q(0),
+         ],
+      q(tii) => [
+         q(6492),
+         q(0),
+         ],
+      q(tij) => [
+         q(6493),
+         q(0),
+         ],
+      q(tik) => [
+         q(6494),
+         q(0),
+         ],
+      q(til) => [
+         q(6495),
+         q(0),
+         ],
+      q(tim) => [
+         q(6496),
+         q(0),
+         ],
+      q(tin) => [
+         q(6497),
+         q(0),
+         ],
+      q(tio) => [
+         q(6498),
+         q(0),
+         ],
+      q(tip) => [
+         q(6499),
+         q(0),
+         ],
+      q(tiq) => [
+         q(6500),
+         q(0),
+         ],
+      q(tir) => [
+         q(0429),
+         q(0),
+         ],
+      q(tis) => [
+         q(6501),
+         q(0),
+         ],
+      q(tit) => [
+         q(6502),
+         q(0),
+         ],
+      q(tiu) => [
+         q(6503),
+         q(0),
+         ],
+      q(tiv) => [
+         q(0430),
+         q(0),
+         ],
+      q(tiw) => [
+         q(6504),
+         q(0),
+         ],
+      q(tix) => [
+         q(6505),
+         q(0),
+         ],
+      q(tiy) => [
+         q(6506),
+         q(0),
+         ],
+      q(tiz) => [
+         q(6507),
+         q(0),
+         ],
+      q(tja) => [
+         q(6508),
+         q(0),
+         ],
+      q(tjg) => [
+         q(6509),
+         q(0),
+         ],
+      q(tji) => [
+         q(6510),
+         q(0),
+         ],
+      q(tjl) => [
+         q(6511),
+         q(0),
+         ],
+      q(tjm) => [
+         q(6512),
+         q(0),
+         ],
+      q(tjn) => [
+         q(6513),
+         q(0),
+         ],
+      q(tjo) => [
+         q(6514),
+         q(0),
+         ],
+      q(tjs) => [
+         q(6515),
+         q(0),
+         ],
+      q(tju) => [
+         q(6516),
+         q(0),
+         ],
+      q(tka) => [
+         q(6517),
+         q(0),
+         ],
+      q(tkb) => [
+         q(6518),
+         q(0),
+         ],
+      q(tkd) => [
+         q(6519),
+         q(0),
+         ],
+      q(tke) => [
+         q(6520),
+         q(0),
+         ],
+      q(tkf) => [
+         q(6521),
+         q(0),
+         ],
+      q(tkg) => [
+         q(6522),
+         q(0),
+         ],
+      q(tkl) => [
+         q(0431),
+         q(0),
+         ],
+      q(tkm) => [
+         q(6523),
+         q(0),
+         ],
+      q(tkn) => [
+         q(6524),
+         q(0),
+         ],
+      q(tkp) => [
+         q(6525),
+         q(0),
+         ],
+      q(tkq) => [
+         q(6526),
+         q(0),
+         ],
+      q(tkr) => [
+         q(6527),
+         q(0),
+         ],
+      q(tks) => [
+         q(6528),
+         q(0),
+         ],
+      q(tkt) => [
+         q(6529),
+         q(0),
+         ],
+      q(tku) => [
+         q(6530),
+         q(0),
+         ],
+      q(tkw) => [
+         q(6531),
+         q(0),
+         ],
+      q(tkx) => [
+         q(6532),
+         q(0),
+         ],
+      q(tkz) => [
+         q(6533),
+         q(0),
+         ],
+      q(tla) => [
+         q(6534),
+         q(0),
+         ],
+      q(tlb) => [
+         q(6535),
+         q(0),
+         ],
+      q(tlc) => [
+         q(6536),
+         q(0),
+         ],
+      q(tld) => [
+         q(6537),
+         q(0),
+         ],
+      q(tlf) => [
+         q(6538),
+         q(0),
+         ],
+      q(tlg) => [
+         q(6539),
+         q(0),
+         ],
+      q(tlh) => [
+         q(0432),
+         q(0),
+         ],
+      q(tli) => [
+         q(0433),
+         q(0),
+         ],
+      q(tlj) => [
+         q(6540),
+         q(0),
+         ],
+      q(tlk) => [
+         q(6541),
+         q(0),
+         ],
+      q(tll) => [
+         q(6542),
+         q(0),
+         ],
+      q(tlm) => [
+         q(6543),
+         q(0),
+         ],
+      q(tln) => [
+         q(6544),
+         q(0),
+         ],
+      q(tlo) => [
+         q(6545),
+         q(0),
+         ],
+      q(tlp) => [
+         q(6546),
+         q(0),
+         ],
+      q(tlq) => [
+         q(6547),
+         q(0),
+         ],
+      q(tlr) => [
+         q(6548),
+         q(0),
+         ],
+      q(tls) => [
+         q(6549),
+         q(0),
+         ],
+      q(tlt) => [
+         q(6550),
+         q(0),
+         ],
+      q(tlu) => [
+         q(6551),
+         q(0),
+         ],
+      q(tlv) => [
+         q(6552),
+         q(0),
+         ],
+      q(tlx) => [
+         q(6553),
+         q(0),
+         ],
+      q(tly) => [
+         q(6554),
+         q(0),
+         ],
+      q(tma) => [
+         q(6555),
+         q(0),
+         ],
+      q(tmb) => [
+         q(6556),
+         q(0),
+         ],
+      q(tmc) => [
+         q(6557),
+         q(0),
+         ],
+      q(tmd) => [
+         q(6558),
+         q(0),
+         ],
+      q(tme) => [
+         q(6559),
+         q(0),
+         ],
+      q(tmf) => [
+         q(6560),
+         q(0),
+         ],
+      q(tmg) => [
+         q(6561),
+         q(0),
+         ],
+      q(tmh) => [
+         q(0434),
+         q(0),
+         ],
+      q(tmi) => [
+         q(6562),
+         q(0),
+         ],
+      q(tmj) => [
+         q(6563),
+         q(0),
+         ],
+      q(tmk) => [
+         q(6564),
+         q(0),
+         ],
+      q(tml) => [
+         q(6565),
+         q(0),
+         ],
+      q(tmm) => [
+         q(6566),
+         q(0),
+         ],
+      q(tmn) => [
+         q(6567),
+         q(0),
+         ],
+      q(tmo) => [
+         q(6568),
+         q(0),
+         ],
+      q(tmp) => [
+         q(6569),
+         q(0),
+         ],
+      q(tmq) => [
+         q(6570),
+         q(0),
+         ],
+      q(tmr) => [
+         q(6571),
+         q(0),
+         ],
+      q(tms) => [
+         q(6572),
+         q(0),
+         ],
+      q(tmt) => [
+         q(6573),
+         q(0),
+         ],
+      q(tmu) => [
+         q(6574),
+         q(0),
+         ],
+      q(tmv) => [
+         q(6575),
+         q(0),
+         ],
+      q(tmw) => [
+         q(6576),
+         q(0),
+         ],
+      q(tmy) => [
+         q(6577),
+         q(0),
+         ],
+      q(tmz) => [
+         q(6578),
+         q(0),
+         ],
+      q(tna) => [
+         q(6579),
+         q(0),
+         ],
+      q(tnb) => [
+         q(6580),
+         q(0),
+         ],
+      q(tnc) => [
+         q(6581),
+         q(0),
+         ],
+      q(tnd) => [
+         q(6582),
+         q(0),
+         ],
+      q(tne) => [
+         q(6583),
+         q(0),
+         ],
+      q(tng) => [
+         q(6584),
+         q(0),
+         ],
+      q(tnh) => [
+         q(6585),
+         q(0),
+         ],
+      q(tni) => [
+         q(6586),
+         q(0),
+         ],
+      q(tnk) => [
+         q(6587),
+         q(0),
+         ],
+      q(tnl) => [
+         q(6588),
+         q(0),
+         ],
+      q(tnm) => [
+         q(6589),
+         q(0),
+         ],
+      q(tnn) => [
+         q(6590),
+         q(0),
+         ],
+      q(tno) => [
+         q(6591),
+         q(0),
+         ],
+      q(tnp) => [
+         q(6592),
+         q(0),
+         ],
+      q(tnq) => [
+         q(6593),
+         q(0),
+         ],
+      q(tnr) => [
+         q(6594),
+         q(0),
+         ],
+      q(tns) => [
+         q(6595),
+         q(0),
+         ],
+      q(tnt) => [
+         q(6596),
+         q(0),
+         ],
+      q(tnu) => [
+         q(6597),
+         q(0),
+         ],
+      q(tnv) => [
+         q(6598),
+         q(0),
+         ],
+      q(tnw) => [
+         q(6599),
+         q(0),
+         ],
+      q(tnx) => [
+         q(6600),
+         q(0),
+         ],
+      q(tny) => [
+         q(6601),
+         q(0),
+         ],
+      q(tnz) => [
+         q(6602),
+         q(0),
+         ],
+      q(tob) => [
+         q(6603),
+         q(0),
+         ],
+      q(toc) => [
+         q(6604),
+         q(0),
+         ],
+      q(tod) => [
+         q(6605),
+         q(0),
+         ],
+      q(toe) => [
+         q(6606),
+         q(0),
+         ],
+      q(tof) => [
+         q(6607),
+         q(0),
+         ],
+      q(tog) => [
+         q(0435),
+         q(0),
+         ],
+      q(toh) => [
+         q(6608),
+         q(0),
+         ],
+      q(toi) => [
+         q(6609),
+         q(0),
+         ],
+      q(toj) => [
+         q(6610),
+         q(0),
+         ],
+      q(tol) => [
+         q(6611),
+         q(0),
+         ],
+      q(tom) => [
+         q(6612),
+         q(0),
+         ],
+      q(ton) => [
+         q(0436),
+         q(0),
+         ],
+      q(too) => [
+         q(6613),
+         q(0),
+         ],
+      q(top) => [
+         q(6614),
+         q(0),
+         ],
+      q(toq) => [
+         q(6615),
+         q(0),
+         ],
+      q(tor) => [
+         q(6616),
+         q(0),
+         ],
+      q(tos) => [
+         q(6617),
+         q(0),
+         ],
+      q(tou) => [
+         q(6618),
+         q(0),
+         ],
+      q(tov) => [
+         q(6619),
+         q(0),
+         ],
+      q(tow) => [
+         q(6620),
+         q(0),
+         ],
+      q(tox) => [
+         q(6621),
+         q(0),
+         ],
+      q(toy) => [
+         q(6622),
+         q(0),
+         ],
+      q(toz) => [
+         q(6623),
+         q(0),
+         ],
+      q(tpa) => [
+         q(6624),
+         q(0),
+         ],
+      q(tpc) => [
+         q(6625),
+         q(0),
+         ],
+      q(tpe) => [
+         q(6626),
+         q(0),
+         ],
+      q(tpf) => [
+         q(6627),
+         q(0),
+         ],
+      q(tpg) => [
+         q(6628),
+         q(0),
+         ],
+      q(tpi) => [
+         q(0437),
+         q(0),
+         ],
+      q(tpj) => [
+         q(6629),
+         q(0),
+         ],
+      q(tpk) => [
+         q(6630),
+         q(0),
+         ],
+      q(tpl) => [
+         q(6631),
+         q(0),
+         ],
+      q(tpm) => [
+         q(6632),
+         q(0),
+         ],
+      q(tpn) => [
+         q(6633),
+         q(0),
+         ],
+      q(tpo) => [
+         q(6634),
+         q(0),
+         ],
+      q(tpp) => [
+         q(6635),
+         q(0),
+         ],
+      q(tpq) => [
+         q(6636),
+         q(0),
+         ],
+      q(tpr) => [
+         q(6637),
+         q(0),
+         ],
+      q(tpt) => [
+         q(6638),
+         q(0),
+         ],
+      q(tpu) => [
+         q(6639),
+         q(0),
+         ],
+      q(tpv) => [
+         q(6640),
+         q(0),
+         ],
+      q(tpw) => [
+         q(6641),
+         q(0),
+         ],
+      q(tpx) => [
+         q(6642),
+         q(0),
+         ],
+      q(tpy) => [
+         q(6643),
+         q(0),
+         ],
+      q(tpz) => [
+         q(6644),
+         q(0),
+         ],
+      q(tqb) => [
+         q(6645),
+         q(0),
+         ],
+      q(tql) => [
+         q(6646),
+         q(0),
+         ],
+      q(tqm) => [
+         q(6647),
+         q(0),
+         ],
+      q(tqn) => [
+         q(6648),
+         q(0),
+         ],
+      q(tqo) => [
+         q(6649),
+         q(0),
+         ],
+      q(tqp) => [
+         q(6650),
+         q(0),
+         ],
+      q(tqq) => [
+         q(6651),
+         q(0),
+         ],
+      q(tqr) => [
+         q(6652),
+         q(0),
+         ],
+      q(tqt) => [
+         q(6653),
+         q(0),
+         ],
+      q(tqu) => [
+         q(6654),
+         q(0),
+         ],
+      q(tqw) => [
+         q(6655),
+         q(0),
+         ],
+      q(tra) => [
+         q(6656),
+         q(0),
+         ],
+      q(trb) => [
+         q(6657),
+         q(0),
+         ],
+      q(trc) => [
+         q(6658),
+         q(0),
+         ],
+      q(trd) => [
+         q(6659),
+         q(0),
+         ],
+      q(tre) => [
+         q(6660),
+         q(0),
+         ],
+      q(trf) => [
+         q(6661),
+         q(0),
+         ],
+      q(trg) => [
+         q(6662),
+         q(0),
+         ],
+      q(trh) => [
+         q(6663),
+         q(0),
+         ],
+      q(tri) => [
+         q(6664),
+         q(0),
+         ],
+      q(trj) => [
+         q(6665),
+         q(0),
+         ],
+      q(trk) => [
+         q(0528),
+         q(0),
+         ],
+      q(trl) => [
+         q(6666),
+         q(0),
+         ],
+      q(trm) => [
+         q(6667),
+         q(0),
+         ],
+      q(trn) => [
+         q(6668),
+         q(0),
+         ],
+      q(tro) => [
+         q(6669),
+         q(0),
+         ],
+      q(trp) => [
+         q(6670),
+         q(0),
+         ],
+      q(trq) => [
+         q(6671),
+         q(0),
+         ],
+      q(trr) => [
+         q(6672),
+         q(0),
+         ],
+      q(trs) => [
+         q(6673),
+         q(0),
+         ],
+      q(trt) => [
+         q(6674),
+         q(0),
+         ],
+      q(tru) => [
+         q(6675),
+         q(0),
+         ],
+      q(trv) => [
+         q(6676),
+         q(0),
+         ],
+      q(trw) => [
+         q(6677),
+         q(0),
+         ],
+      q(trx) => [
+         q(6678),
+         q(0),
+         ],
+      q(try) => [
+         q(6679),
+         q(0),
+         ],
+      q(trz) => [
+         q(6680),
+         q(0),
+         ],
+      q(tsa) => [
+         q(6681),
+         q(0),
+         ],
+      q(tsb) => [
+         q(6682),
+         q(0),
+         ],
+      q(tsc) => [
+         q(6683),
+         q(0),
+         ],
+      q(tsd) => [
+         q(6684),
+         q(0),
+         ],
+      q(tse) => [
+         q(6685),
+         q(0),
+         ],
+      q(tsf) => [
+         q(6686),
+         q(0),
+         ],
+      q(tsg) => [
+         q(6687),
+         q(0),
+         ],
+      q(tsh) => [
+         q(6688),
+         q(0),
+         ],
+      q(tsi) => [
+         q(0438),
+         q(0),
+         ],
+      q(tsj) => [
+         q(6689),
+         q(0),
+         ],
+      q(tsk) => [
+         q(6690),
+         q(0),
+         ],
+      q(tsl) => [
+         q(6691),
+         q(0),
+         ],
+      q(tsm) => [
+         q(6692),
+         q(0),
+         ],
+      q(tsn) => [
+         q(0439),
+         q(0),
+         ],
+      q(tso) => [
+         q(0440),
+         q(0),
+         ],
+      q(tsp) => [
+         q(6693),
+         q(0),
+         ],
+      q(tsq) => [
+         q(6694),
+         q(0),
+         ],
+      q(tsr) => [
+         q(6695),
+         q(0),
+         ],
+      q(tss) => [
+         q(6696),
+         q(0),
+         ],
+      q(tst) => [
+         q(6697),
+         q(0),
+         ],
+      q(tsu) => [
+         q(6698),
+         q(0),
+         ],
+      q(tsv) => [
+         q(6699),
+         q(0),
+         ],
+      q(tsw) => [
+         q(6700),
+         q(0),
+         ],
+      q(tsx) => [
+         q(6701),
+         q(0),
+         ],
+      q(tsy) => [
+         q(6702),
+         q(0),
+         ],
+      q(tsz) => [
+         q(6703),
+         q(0),
+         ],
+      q(tta) => [
+         q(6704),
+         q(0),
+         ],
+      q(ttb) => [
+         q(6705),
+         q(0),
+         ],
+      q(ttc) => [
+         q(6706),
+         q(0),
+         ],
+      q(ttd) => [
+         q(6707),
+         q(0),
+         ],
+      q(tte) => [
+         q(6708),
+         q(0),
+         ],
+      q(ttf) => [
+         q(6709),
+         q(0),
+         ],
+      q(ttg) => [
+         q(6710),
+         q(0),
+         ],
+      q(tth) => [
+         q(6711),
+         q(0),
+         ],
+      q(tti) => [
+         q(6712),
+         q(0),
+         ],
+      q(ttj) => [
+         q(6713),
+         q(0),
+         ],
+      q(ttk) => [
+         q(6714),
+         q(0),
+         ],
+      q(ttl) => [
+         q(6715),
+         q(0),
+         ],
+      q(ttm) => [
+         q(6716),
+         q(0),
+         ],
+      q(ttn) => [
+         q(6717),
+         q(0),
+         ],
+      q(tto) => [
+         q(6718),
+         q(0),
+         ],
+      q(ttp) => [
+         q(6719),
+         q(0),
+         ],
+      q(ttq) => [
+         q(6720),
+         q(0),
+         ],
+      q(ttr) => [
+         q(6721),
+         q(0),
+         ],
+      q(tts) => [
+         q(6722),
+         q(0),
+         ],
+      q(ttt) => [
+         q(6723),
+         q(0),
+         ],
+      q(ttu) => [
+         q(6724),
+         q(0),
+         ],
+      q(ttv) => [
+         q(6725),
+         q(0),
+         ],
+      q(ttw) => [
+         q(6726),
+         q(0),
+         ],
+      q(tty) => [
+         q(6727),
+         q(0),
+         ],
+      q(ttz) => [
+         q(6728),
+         q(0),
+         ],
+      q(tua) => [
+         q(6729),
+         q(0),
+         ],
+      q(tub) => [
+         q(6730),
+         q(0),
+         ],
+      q(tuc) => [
+         q(6731),
+         q(0),
+         ],
+      q(tud) => [
+         q(6732),
+         q(0),
+         ],
+      q(tue) => [
+         q(6733),
+         q(0),
+         ],
+      q(tuf) => [
+         q(6734),
+         q(0),
+         ],
+      q(tug) => [
+         q(6735),
+         q(0),
+         ],
+      q(tuh) => [
+         q(6736),
+         q(0),
+         ],
+      q(tui) => [
+         q(6737),
+         q(0),
+         ],
+      q(tuj) => [
+         q(6738),
+         q(0),
+         ],
+      q(tuk) => [
+         q(0441),
+         q(0),
+         ],
+      q(tul) => [
+         q(6739),
+         q(0),
+         ],
+      q(tum) => [
+         q(0442),
+         q(0),
+         ],
+      q(tun) => [
+         q(6740),
+         q(0),
+         ],
+      q(tuo) => [
+         q(6741),
+         q(0),
+         ],
+      q(tup) => [
+         q(0443),
+         q(0),
+         ],
+      q(tuq) => [
+         q(6742),
+         q(0),
+         ],
+      q(tur) => [
+         q(0444),
+         q(0),
+         ],
+      q(tus) => [
+         q(6743),
+         q(0),
+         ],
+      q(tut) => [
+         q(0445),
+         q(0),
+         ],
+      q(tuu) => [
+         q(6744),
+         q(0),
+         ],
+      q(tuv) => [
+         q(6745),
+         q(0),
+         ],
+      q(tuw) => [
+         q(0529),
+         q(0),
+         ],
+      q(tux) => [
+         q(6746),
+         q(0),
+         ],
+      q(tuy) => [
+         q(6747),
+         q(0),
+         ],
+      q(tuz) => [
+         q(6748),
+         q(0),
+         ],
+      q(tva) => [
+         q(6749),
+         q(0),
+         ],
+      q(tvd) => [
+         q(6750),
+         q(0),
+         ],
+      q(tve) => [
+         q(6751),
+         q(0),
+         ],
+      q(tvk) => [
+         q(6752),
+         q(0),
+         ],
+      q(tvl) => [
+         q(0446),
+         q(0),
+         ],
+      q(tvm) => [
+         q(6753),
+         q(0),
+         ],
+      q(tvn) => [
+         q(6754),
+         q(0),
+         ],
+      q(tvo) => [
+         q(6755),
+         q(0),
+         ],
+      q(tvs) => [
+         q(6756),
+         q(0),
+         ],
+      q(tvt) => [
+         q(6757),
+         q(0),
+         ],
+      q(tvu) => [
+         q(6758),
+         q(0),
+         ],
+      q(tvw) => [
+         q(6759),
+         q(0),
+         ],
+      q(tvy) => [
+         q(6760),
+         q(0),
+         ],
+      q(twa) => [
+         q(6761),
+         q(0),
+         ],
+      q(twb) => [
+         q(6762),
+         q(0),
+         ],
+      q(twc) => [
+         q(6763),
+         q(0),
+         ],
+      q(twd) => [
+         q(6764),
+         q(0),
+         ],
+      q(twe) => [
+         q(6765),
+         q(0),
+         ],
+      q(twf) => [
+         q(6766),
+         q(0),
+         ],
+      q(twg) => [
+         q(6767),
+         q(0),
+         ],
+      q(twh) => [
+         q(6768),
+         q(0),
+         ],
+      q(twi) => [
+         q(0447),
+         q(0),
+         ],
+      q(twl) => [
+         q(6769),
+         q(0),
+         ],
+      q(twm) => [
+         q(6770),
+         q(0),
+         ],
+      q(twn) => [
+         q(6771),
+         q(0),
+         ],
+      q(two) => [
+         q(6772),
+         q(0),
+         ],
+      q(twp) => [
+         q(6773),
+         q(0),
+         ],
+      q(twq) => [
+         q(6774),
+         q(0),
+         ],
+      q(twr) => [
+         q(6775),
+         q(0),
+         ],
+      q(twt) => [
+         q(6776),
+         q(0),
+         ],
+      q(twu) => [
+         q(6777),
+         q(0),
+         ],
+      q(tww) => [
+         q(6778),
+         q(0),
+         ],
+      q(twx) => [
+         q(6779),
+         q(0),
+         ],
+      q(twy) => [
+         q(6780),
+         q(0),
+         ],
+      q(txa) => [
+         q(6781),
+         q(0),
+         ],
+      q(txb) => [
+         q(6782),
+         q(0),
+         ],
+      q(txc) => [
+         q(6783),
+         q(0),
+         ],
+      q(txe) => [
+         q(6784),
+         q(0),
+         ],
+      q(txg) => [
+         q(6785),
+         q(0),
+         ],
+      q(txh) => [
+         q(6786),
+         q(0),
+         ],
+      q(txi) => [
+         q(6787),
+         q(0),
+         ],
+      q(txm) => [
+         q(6788),
+         q(0),
+         ],
+      q(txn) => [
+         q(6789),
+         q(0),
+         ],
+      q(txo) => [
+         q(6790),
+         q(0),
+         ],
+      q(txq) => [
+         q(6791),
+         q(0),
+         ],
+      q(txr) => [
+         q(6792),
+         q(0),
+         ],
+      q(txs) => [
+         q(6793),
+         q(0),
+         ],
+      q(txt) => [
+         q(6794),
+         q(0),
+         ],
+      q(txu) => [
+         q(6795),
+         q(0),
+         ],
+      q(txx) => [
+         q(6796),
+         q(0),
+         ],
+      q(txy) => [
+         q(6797),
+         q(0),
+         ],
+      q(tya) => [
+         q(6798),
+         q(0),
+         ],
+      q(tye) => [
+         q(6799),
+         q(0),
+         ],
+      q(tyh) => [
+         q(6800),
+         q(0),
+         ],
+      q(tyi) => [
+         q(6801),
+         q(0),
+         ],
+      q(tyj) => [
+         q(6802),
+         q(0),
+         ],
+      q(tyl) => [
+         q(6803),
+         q(0),
+         ],
+      q(tyn) => [
+         q(6804),
+         q(0),
+         ],
+      q(typ) => [
+         q(6805),
+         q(0),
+         ],
+      q(tyr) => [
+         q(6806),
+         q(0),
+         ],
+      q(tys) => [
+         q(6807),
+         q(0),
+         ],
+      q(tyt) => [
+         q(6808),
+         q(0),
+         ],
+      q(tyu) => [
+         q(6809),
+         q(0),
+         ],
+      q(tyv) => [
+         q(0448),
+         q(0),
+         ],
+      q(tyx) => [
+         q(6810),
+         q(0),
+         ],
+      q(tyz) => [
+         q(6811),
+         q(0),
+         ],
+      q(tza) => [
+         q(6812),
+         q(0),
+         ],
+      q(tzh) => [
+         q(6813),
+         q(0),
+         ],
+      q(tzj) => [
+         q(6814),
+         q(0),
+         ],
+      q(tzm) => [
+         q(6815),
+         q(0),
+         ],
+      q(tzn) => [
+         q(6816),
+         q(0),
+         ],
+      q(tzo) => [
+         q(6817),
+         q(0),
+         ],
+      q(tzx) => [
+         q(6818),
+         q(0),
+         ],
+      q(uam) => [
+         q(6819),
+         q(0),
+         ],
+      q(uan) => [
+         q(6820),
+         q(0),
+         ],
+      q(uar) => [
+         q(6821),
+         q(0),
+         ],
+      q(uba) => [
+         q(6822),
+         q(0),
+         ],
+      q(ubi) => [
+         q(6823),
+         q(0),
+         ],
+      q(ubl) => [
+         q(6824),
+         q(0),
+         ],
+      q(ubr) => [
+         q(6825),
+         q(0),
+         ],
+      q(ubu) => [
+         q(6826),
+         q(0),
+         ],
+      q(uby) => [
+         q(6827),
+         q(0),
+         ],
+      q(uda) => [
+         q(6828),
+         q(0),
+         ],
+      q(ude) => [
+         q(6829),
+         q(0),
+         ],
+      q(udg) => [
+         q(6830),
+         q(0),
+         ],
+      q(udi) => [
+         q(6831),
+         q(0),
+         ],
+      q(udj) => [
+         q(6832),
+         q(0),
+         ],
+      q(udl) => [
+         q(6833),
+         q(0),
+         ],
+      q(udm) => [
+         q(0449),
+         q(0),
+         ],
+      q(udu) => [
+         q(6834),
+         q(0),
+         ],
+      q(ues) => [
+         q(6835),
+         q(0),
+         ],
+      q(ufi) => [
+         q(6836),
+         q(0),
+         ],
+      q(uga) => [
+         q(0450),
+         q(0),
+         ],
+      q(ugb) => [
+         q(6837),
+         q(0),
+         ],
+      q(uge) => [
+         q(6838),
+         q(0),
+         ],
+      q(ugn) => [
+         q(6839),
+         q(0),
+         ],
+      q(ugo) => [
+         q(6840),
+         q(0),
+         ],
+      q(ugy) => [
+         q(6841),
+         q(0),
+         ],
+      q(uha) => [
+         q(6842),
+         q(0),
+         ],
+      q(uhn) => [
+         q(6843),
+         q(0),
+         ],
+      q(uig) => [
+         q(0451),
+         q(0),
+         ],
+      q(uis) => [
+         q(6844),
+         q(0),
+         ],
+      q(uiv) => [
+         q(6845),
+         q(0),
+         ],
+      q(uji) => [
+         q(6846),
+         q(0),
+         ],
+      q(uka) => [
+         q(6847),
+         q(0),
+         ],
+      q(ukg) => [
+         q(6848),
+         q(0),
+         ],
+      q(ukh) => [
+         q(6849),
+         q(0),
+         ],
+      q(ukl) => [
+         q(6850),
+         q(0),
+         ],
+      q(ukp) => [
+         q(6851),
+         q(0),
+         ],
+      q(ukq) => [
+         q(6852),
+         q(0),
+         ],
+      q(ukr) => [
+         q(0452),
+         q(0),
+         ],
+      q(uks) => [
+         q(6853),
+         q(0),
+         ],
+      q(uku) => [
+         q(6854),
+         q(0),
+         ],
+      q(ukw) => [
+         q(6855),
+         q(0),
+         ],
+      q(uky) => [
+         q(6856),
+         q(0),
+         ],
+      q(ula) => [
+         q(6857),
+         q(0),
+         ],
+      q(ulb) => [
+         q(6858),
+         q(0),
+         ],
+      q(ulc) => [
+         q(6859),
+         q(0),
+         ],
+      q(ulf) => [
+         q(6860),
+         q(0),
+         ],
+      q(uli) => [
+         q(6861),
+         q(0),
+         ],
+      q(ulk) => [
+         q(6862),
+         q(0),
+         ],
+      q(ull) => [
+         q(6863),
+         q(0),
+         ],
+      q(ulm) => [
+         q(6864),
+         q(0),
+         ],
+      q(uln) => [
+         q(6865),
+         q(0),
+         ],
+      q(ulu) => [
+         q(6866),
+         q(0),
+         ],
+      q(ulw) => [
+         q(6867),
+         q(0),
+         ],
+      q(uma) => [
+         q(6868),
+         q(0),
+         ],
+      q(umb) => [
+         q(0453),
+         q(0),
+         ],
+      q(umc) => [
+         q(6869),
+         q(0),
+         ],
+      q(umd) => [
+         q(6870),
+         q(0),
+         ],
+      q(umg) => [
+         q(6871),
+         q(0),
+         ],
+      q(umi) => [
+         q(6872),
+         q(0),
+         ],
+      q(umm) => [
+         q(6873),
+         q(0),
+         ],
+      q(umn) => [
+         q(6874),
+         q(0),
+         ],
+      q(umo) => [
+         q(6875),
+         q(0),
+         ],
+      q(ump) => [
+         q(6876),
+         q(0),
+         ],
+      q(umr) => [
+         q(6877),
+         q(0),
+         ],
+      q(ums) => [
+         q(6878),
+         q(0),
+         ],
+      q(umu) => [
+         q(6879),
+         q(0),
+         ],
+      q(una) => [
+         q(6880),
+         q(0),
+         ],
+      q(und) => [
+         q(0454),
+         q(0),
+         ],
+      q(une) => [
+         q(6881),
+         q(0),
+         ],
+      q(ung) => [
+         q(6882),
+         q(0),
+         ],
+      q(unk) => [
+         q(6883),
+         q(0),
+         ],
+      q(unm) => [
+         q(6884),
+         q(0),
+         ],
+      q(unr) => [
+         q(6885),
+         q(0),
+         ],
+      q(unx) => [
+         q(6886),
+         q(0),
+         ],
+      q(unz) => [
+         q(6887),
+         q(0),
+         ],
+      q(uok) => [
+         q(6888),
+         q(0),
+         ],
+      q(upi) => [
+         q(6889),
+         q(0),
+         ],
+      q(upv) => [
+         q(6890),
+         q(0),
+         ],
+      q(ura) => [
+         q(6891),
+         q(0),
+         ],
+      q(urb) => [
+         q(6892),
+         q(0),
+         ],
+      q(urc) => [
+         q(6893),
+         q(0),
+         ],
+      q(urd) => [
+         q(0455),
+         q(0),
+         ],
+      q(ure) => [
+         q(6894),
+         q(0),
+         ],
+      q(urf) => [
+         q(6895),
+         q(0),
+         ],
+      q(urg) => [
+         q(6896),
+         q(0),
+         ],
+      q(urh) => [
+         q(6897),
+         q(0),
+         ],
+      q(uri) => [
+         q(6898),
+         q(0),
+         ],
+      q(urj) => [
+         q(0530),
+         q(0),
+         ],
+      q(urk) => [
+         q(6899),
+         q(0),
+         ],
+      q(url) => [
+         q(6900),
+         q(0),
+         ],
+      q(urm) => [
+         q(6901),
+         q(0),
+         ],
+      q(urn) => [
+         q(6902),
+         q(0),
+         ],
+      q(uro) => [
+         q(6903),
+         q(0),
+         ],
+      q(urp) => [
+         q(6904),
+         q(0),
+         ],
+      q(urr) => [
+         q(6905),
+         q(0),
+         ],
+      q(urt) => [
+         q(6906),
+         q(0),
+         ],
+      q(uru) => [
+         q(6907),
+         q(0),
+         ],
+      q(urv) => [
+         q(6908),
+         q(0),
+         ],
+      q(urw) => [
+         q(6909),
+         q(0),
+         ],
+      q(urx) => [
+         q(6910),
+         q(0),
+         ],
+      q(ury) => [
+         q(6911),
+         q(0),
+         ],
+      q(urz) => [
+         q(6912),
+         q(0),
+         ],
+      q(usa) => [
+         q(6913),
+         q(0),
+         ],
+      q(ush) => [
+         q(6914),
+         q(0),
+         ],
+      q(usi) => [
+         q(6915),
+         q(0),
+         ],
+      q(usk) => [
+         q(6916),
+         q(0),
+         ],
+      q(usp) => [
+         q(6917),
+         q(0),
+         ],
+      q(usu) => [
+         q(6918),
+         q(0),
+         ],
+      q(uta) => [
+         q(6919),
+         q(0),
+         ],
+      q(ute) => [
+         q(6920),
+         q(0),
+         ],
+      q(utp) => [
+         q(6921),
+         q(0),
+         ],
+      q(utr) => [
+         q(6922),
+         q(0),
+         ],
+      q(utu) => [
+         q(6923),
+         q(0),
+         ],
+      q(uum) => [
+         q(6924),
+         q(0),
+         ],
+      q(uun) => [
+         q(6925),
+         q(0),
+         ],
+      q(uur) => [
+         q(6926),
+         q(0),
+         ],
+      q(uuu) => [
+         q(6927),
+         q(0),
+         ],
+      q(uve) => [
+         q(6928),
+         q(0),
+         ],
+      q(uvh) => [
+         q(6929),
+         q(0),
+         ],
+      q(uvl) => [
+         q(6930),
+         q(0),
+         ],
+      q(uwa) => [
+         q(6931),
+         q(0),
+         ],
+      q(uya) => [
+         q(6932),
+         q(0),
+         ],
+      q(uzb) => [
+         q(0456),
+         q(0),
+         ],
+      q(uzn) => [
+         q(6933),
+         q(0),
+         ],
+      q(uzs) => [
+         q(6934),
+         q(0),
+         ],
+      q(vaa) => [
+         q(6935),
+         q(0),
+         ],
+      q(vae) => [
+         q(6936),
+         q(0),
+         ],
+      q(vaf) => [
+         q(6937),
+         q(0),
+         ],
+      q(vag) => [
+         q(6938),
+         q(0),
+         ],
+      q(vah) => [
+         q(6939),
+         q(0),
+         ],
+      q(vai) => [
+         q(0457),
+         q(0),
+         ],
+      q(vaj) => [
+         q(6940),
+         q(0),
+         ],
+      q(val) => [
+         q(6941),
+         q(0),
+         ],
+      q(vam) => [
+         q(6942),
+         q(0),
+         ],
+      q(van) => [
+         q(6943),
+         q(0),
+         ],
+      q(vao) => [
+         q(6944),
+         q(0),
+         ],
+      q(vap) => [
+         q(6945),
+         q(0),
+         ],
+      q(var) => [
+         q(6946),
+         q(0),
+         ],
+      q(vas) => [
+         q(6947),
+         q(0),
+         ],
+      q(vau) => [
+         q(6948),
+         q(0),
+         ],
+      q(vav) => [
+         q(6949),
+         q(0),
+         ],
+      q(vay) => [
+         q(6950),
+         q(0),
+         ],
+      q(vbb) => [
+         q(6951),
+         q(0),
+         ],
+      q(vbk) => [
+         q(6952),
+         q(0),
+         ],
+      q(vec) => [
+         q(6953),
+         q(0),
+         ],
+      q(ved) => [
+         q(6954),
+         q(0),
+         ],
+      q(vel) => [
+         q(6955),
+         q(0),
+         ],
+      q(vem) => [
+         q(6956),
+         q(0),
+         ],
+      q(ven) => [
+         q(0458),
+         q(0),
+         ],
+      q(veo) => [
+         q(6957),
+         q(0),
+         ],
+      q(vep) => [
+         q(6958),
+         q(0),
+         ],
+      q(ver) => [
+         q(6959),
+         q(0),
+         ],
+      q(vgr) => [
+         q(6960),
+         q(0),
+         ],
+      q(vgt) => [
+         q(6961),
+         q(0),
+         ],
+      q(vic) => [
+         q(6962),
+         q(0),
+         ],
+      q(vid) => [
+         q(6963),
+         q(0),
+         ],
+      q(vie) => [
+         q(0459),
+         q(0),
+         ],
+      q(vif) => [
+         q(6964),
+         q(0),
+         ],
+      q(vig) => [
+         q(6965),
+         q(0),
+         ],
+      q(vil) => [
+         q(6966),
+         q(0),
+         ],
+      q(vin) => [
+         q(6967),
+         q(0),
+         ],
+      q(vis) => [
+         q(6968),
+         q(0),
+         ],
+      q(vit) => [
+         q(6969),
+         q(0),
+         ],
+      q(viv) => [
+         q(6970),
+         q(0),
+         ],
+      q(vka) => [
+         q(6971),
+         q(0),
+         ],
+      q(vki) => [
+         q(6972),
+         q(0),
+         ],
+      q(vkj) => [
+         q(6973),
+         q(0),
+         ],
+      q(vkk) => [
+         q(6974),
+         q(0),
+         ],
+      q(vkl) => [
+         q(6975),
+         q(0),
+         ],
+      q(vkm) => [
+         q(6976),
+         q(0),
+         ],
+      q(vko) => [
+         q(6977),
+         q(0),
+         ],
+      q(vkp) => [
+         q(6978),
+         q(0),
+         ],
+      q(vkt) => [
+         q(6979),
+         q(0),
+         ],
+      q(vku) => [
+         q(6980),
+         q(0),
+         ],
+      q(vlp) => [
+         q(6981),
+         q(0),
+         ],
+      q(vls) => [
+         q(6982),
+         q(0),
+         ],
+      q(vma) => [
+         q(6983),
+         q(0),
+         ],
+      q(vmb) => [
+         q(6984),
+         q(0),
+         ],
+      q(vmc) => [
+         q(6985),
+         q(0),
+         ],
+      q(vmd) => [
+         q(6986),
+         q(0),
+         ],
+      q(vme) => [
+         q(6987),
+         q(0),
+         ],
+      q(vmf) => [
+         q(6988),
+         q(0),
+         ],
+      q(vmg) => [
+         q(6989),
+         q(0),
+         ],
+      q(vmh) => [
+         q(6990),
+         q(0),
+         ],
+      q(vmi) => [
+         q(6991),
+         q(0),
+         ],
+      q(vmj) => [
+         q(6992),
+         q(0),
+         ],
+      q(vmk) => [
+         q(6993),
+         q(0),
+         ],
+      q(vml) => [
+         q(6994),
+         q(0),
+         ],
+      q(vmm) => [
+         q(6995),
+         q(0),
+         ],
+      q(vmp) => [
+         q(6996),
+         q(0),
+         ],
+      q(vmq) => [
+         q(6997),
+         q(0),
+         ],
+      q(vmr) => [
+         q(6998),
+         q(0),
+         ],
+      q(vms) => [
+         q(6999),
+         q(0),
+         ],
+      q(vmu) => [
+         q(7000),
+         q(0),
+         ],
+      q(vmv) => [
+         q(7001),
+         q(0),
+         ],
+      q(vmw) => [
+         q(7002),
+         q(0),
+         ],
+      q(vmx) => [
+         q(7003),
+         q(0),
+         ],
+      q(vmy) => [
+         q(7004),
+         q(0),
+         ],
+      q(vmz) => [
+         q(7005),
+         q(0),
+         ],
+      q(vnk) => [
+         q(7006),
+         q(0),
+         ],
+      q(vnm) => [
+         q(7007),
+         q(0),
+         ],
+      q(vnp) => [
+         q(7008),
+         q(0),
+         ],
+      q(vol) => [
+         q(0460),
+         q(0),
+         ],
+      q(vor) => [
+         q(7009),
+         q(0),
+         ],
+      q(vot) => [
+         q(0461),
+         q(0),
+         ],
+      q(vra) => [
+         q(7010),
+         q(0),
+         ],
+      q(vro) => [
+         q(7009),
+         q(0),
+         ],
+      q(vrs) => [
+         q(7011),
+         q(0),
+         ],
+      q(vrt) => [
+         q(7012),
+         q(0),
+         ],
+      q(vsi) => [
+         q(7013),
+         q(0),
+         ],
+      q(vsl) => [
+         q(7014),
+         q(0),
+         ],
+      q(vsv) => [
+         q(7015),
+         q(0),
+         ],
+      q(vto) => [
+         q(7016),
+         q(0),
+         ],
+      q(vum) => [
+         q(7017),
+         q(0),
+         ],
+      q(vun) => [
+         q(7018),
+         q(0),
+         ],
+      q(vut) => [
+         q(7019),
+         q(0),
+         ],
+      q(vwa) => [
+         q(7020),
+         q(0),
+         ],
+      q(waa) => [
+         q(7021),
+         q(0),
+         ],
+      q(wab) => [
+         q(7022),
+         q(0),
+         ],
+      q(wac) => [
+         q(7023),
+         q(0),
+         ],
+      q(wad) => [
+         q(7024),
+         q(0),
+         ],
+      q(wae) => [
+         q(7025),
+         q(0),
+         ],
+      q(waf) => [
+         q(7026),
+         q(0),
+         ],
+      q(wag) => [
+         q(7027),
+         q(0),
+         ],
+      q(wah) => [
+         q(7028),
+         q(0),
+         ],
+      q(wai) => [
+         q(7029),
+         q(0),
+         ],
+      q(waj) => [
+         q(7030),
+         q(0),
+         ],
+      q(wak) => [
+         q(0462),
+         q(0),
+         ],
+      q(wal) => [
+         q(0463),
+         q(1),
+         ],
+      q(wam) => [
+         q(7031),
+         q(0),
+         ],
+      q(wan) => [
+         q(7032),
+         q(0),
+         ],
+      q(wao) => [
+         q(7033),
+         q(0),
+         ],
+      q(wap) => [
+         q(7034),
+         q(0),
+         ],
+      q(waq) => [
+         q(7035),
+         q(0),
+         ],
+      q(war) => [
+         q(0464),
+         q(1),
+         ],
+      q(was) => [
+         q(0465),
+         q(0),
+         ],
+      q(wat) => [
+         q(7036),
+         q(0),
+         ],
+      q(wau) => [
+         q(7037),
+         q(0),
+         ],
+      q(wav) => [
+         q(7038),
+         q(0),
+         ],
+      q(waw) => [
+         q(7039),
+         q(0),
+         ],
+      q(wax) => [
+         q(7040),
+         q(0),
+         ],
+      q(way) => [
+         q(7041),
+         q(0),
+         ],
+      q(waz) => [
+         q(7042),
+         q(0),
+         ],
+      q(wba) => [
+         q(7043),
+         q(0),
+         ],
+      q(wbb) => [
+         q(7044),
+         q(0),
+         ],
+      q(wbe) => [
+         q(7045),
+         q(0),
+         ],
+      q(wbf) => [
+         q(6381),
+         q(0),
+         ],
+      q(wbh) => [
+         q(7046),
+         q(0),
+         ],
+      q(wbi) => [
+         q(7047),
+         q(0),
+         ],
+      q(wbj) => [
+         q(7048),
+         q(0),
+         ],
+      q(wbk) => [
+         q(7049),
+         q(0),
+         ],
+      q(wbl) => [
+         q(7050),
+         q(0),
+         ],
+      q(wbm) => [
+         q(7051),
+         q(0),
+         ],
+      q(wbp) => [
+         q(7052),
+         q(0),
+         ],
+      q(wbq) => [
+         q(7053),
+         q(0),
+         ],
+      q(wbr) => [
+         q(7054),
+         q(0),
+         ],
+      q(wbt) => [
+         q(7055),
+         q(0),
+         ],
+      q(wbv) => [
+         q(7056),
+         q(0),
+         ],
+      q(wbw) => [
+         q(7057),
+         q(0),
+         ],
+      q(wca) => [
+         q(7058),
+         q(0),
+         ],
+      q(wci) => [
+         q(7059),
+         q(0),
+         ],
+      q(wdd) => [
+         q(7060),
+         q(0),
+         ],
+      q(wdg) => [
+         q(7061),
+         q(0),
+         ],
+      q(wdj) => [
+         q(7062),
+         q(0),
+         ],
+      q(wdu) => [
+         q(7063),
+         q(0),
+         ],
+      q(wea) => [
+         q(7064),
+         q(0),
+         ],
+      q(wec) => [
+         q(7065),
+         q(0),
+         ],
+      q(wed) => [
+         q(7066),
+         q(0),
+         ],
+      q(weh) => [
+         q(7067),
+         q(0),
+         ],
+      q(wei) => [
+         q(7068),
+         q(0),
+         ],
+      q(wel) => [
+         q(0466),
+         q(0),
+         ],
+      q(wem) => [
+         q(7069),
+         q(0),
+         ],
+      q(wen) => [
+         q(0467),
+         q(0),
+         ],
+      q(weo) => [
+         q(7070),
+         q(0),
+         ],
+      q(wep) => [
+         q(7071),
+         q(0),
+         ],
+      q(wer) => [
+         q(7072),
+         q(0),
+         ],
+      q(wes) => [
+         q(7073),
+         q(0),
+         ],
+      q(wet) => [
+         q(7074),
+         q(0),
+         ],
+      q(weu) => [
+         q(7075),
+         q(0),
+         ],
+      q(wew) => [
+         q(7076),
+         q(0),
+         ],
+      q(wfg) => [
+         q(7077),
+         q(0),
+         ],
+      q(wga) => [
+         q(7078),
+         q(0),
+         ],
+      q(wgb) => [
+         q(7079),
+         q(0),
+         ],
+      q(wgg) => [
+         q(7080),
+         q(0),
+         ],
+      q(wgi) => [
+         q(7081),
+         q(0),
+         ],
+      q(wgo) => [
+         q(7082),
+         q(0),
+         ],
+      q(wgu) => [
+         q(7083),
+         q(0),
+         ],
+      q(wgy) => [
+         q(7084),
+         q(0),
+         ],
+      q(wha) => [
+         q(7085),
+         q(0),
+         ],
+      q(whg) => [
+         q(7086),
+         q(0),
+         ],
+      q(whk) => [
+         q(7087),
+         q(0),
+         ],
+      q(whu) => [
+         q(7088),
+         q(0),
+         ],
+      q(wib) => [
+         q(7089),
+         q(0),
+         ],
+      q(wic) => [
+         q(7090),
+         q(0),
+         ],
+      q(wie) => [
+         q(7091),
+         q(0),
+         ],
+      q(wif) => [
+         q(7092),
+         q(0),
+         ],
+      q(wig) => [
+         q(7093),
+         q(0),
+         ],
+      q(wih) => [
+         q(7094),
+         q(0),
+         ],
+      q(wii) => [
+         q(7095),
+         q(0),
+         ],
+      q(wij) => [
+         q(7096),
+         q(0),
+         ],
+      q(wik) => [
+         q(7097),
+         q(0),
+         ],
+      q(wil) => [
+         q(7098),
+         q(0),
+         ],
+      q(wim) => [
+         q(7099),
+         q(0),
+         ],
+      q(win) => [
+         q(7100),
+         q(0),
+         ],
+      q(wir) => [
+         q(7101),
+         q(0),
+         ],
+      q(wit) => [
+         q(7102),
+         q(0),
+         ],
+      q(wiu) => [
+         q(7103),
+         q(0),
+         ],
+      q(wiv) => [
+         q(7104),
+         q(0),
+         ],
+      q(wiy) => [
+         q(7105),
+         q(0),
+         ],
+      q(wja) => [
+         q(7106),
+         q(0),
+         ],
+      q(wji) => [
+         q(7107),
+         q(0),
+         ],
+      q(wka) => [
+         q(7108),
+         q(0),
+         ],
+      q(wkb) => [
+         q(7109),
+         q(0),
+         ],
+      q(wkd) => [
+         q(7110),
+         q(0),
+         ],
+      q(wkl) => [
+         q(7111),
+         q(0),
+         ],
+      q(wku) => [
+         q(7112),
+         q(0),
+         ],
+      q(wkw) => [
+         q(7113),
+         q(0),
+         ],
+      q(wla) => [
+         q(7114),
+         q(0),
+         ],
+      q(wlc) => [
+         q(7115),
+         q(0),
+         ],
+      q(wle) => [
+         q(7116),
+         q(0),
+         ],
+      q(wlg) => [
+         q(7117),
+         q(0),
+         ],
+      q(wli) => [
+         q(7118),
+         q(0),
+         ],
+      q(wlk) => [
+         q(7119),
+         q(0),
+         ],
+      q(wll) => [
+         q(7120),
+         q(0),
+         ],
+      q(wlm) => [
+         q(7121),
+         q(0),
+         ],
+      q(wln) => [
+         q(0468),
+         q(0),
+         ],
+      q(wlo) => [
+         q(7122),
+         q(0),
+         ],
+      q(wlr) => [
+         q(7123),
+         q(0),
+         ],
+      q(wls) => [
+         q(7124),
+         q(0),
+         ],
+      q(wlu) => [
+         q(7125),
+         q(0),
+         ],
+      q(wlv) => [
+         q(7126),
+         q(0),
+         ],
+      q(wlw) => [
+         q(7127),
+         q(0),
+         ],
+      q(wlx) => [
+         q(7128),
+         q(0),
+         ],
+      q(wly) => [
+         q(7129),
+         q(0),
+         ],
+      q(wma) => [
+         q(7130),
+         q(0),
+         ],
+      q(wmb) => [
+         q(7131),
+         q(0),
+         ],
+      q(wmc) => [
+         q(7132),
+         q(0),
+         ],
+      q(wmd) => [
+         q(7133),
+         q(0),
+         ],
+      q(wme) => [
+         q(7134),
+         q(0),
+         ],
+      q(wmh) => [
+         q(7135),
+         q(0),
+         ],
+      q(wmi) => [
+         q(7136),
+         q(0),
+         ],
+      q(wmm) => [
+         q(7137),
+         q(0),
+         ],
+      q(wmn) => [
+         q(7138),
+         q(0),
+         ],
+      q(wmo) => [
+         q(7139),
+         q(0),
+         ],
+      q(wms) => [
+         q(7140),
+         q(0),
+         ],
+      q(wmt) => [
+         q(7141),
+         q(0),
+         ],
+      q(wmw) => [
+         q(7142),
+         q(0),
+         ],
+      q(wmx) => [
+         q(7143),
+         q(0),
+         ],
+      q(wnb) => [
+         q(7144),
+         q(0),
+         ],
+      q(wnc) => [
+         q(7145),
+         q(0),
+         ],
+      q(wnd) => [
+         q(7146),
+         q(0),
+         ],
+      q(wne) => [
+         q(7147),
+         q(0),
+         ],
+      q(wng) => [
+         q(7148),
+         q(0),
+         ],
+      q(wni) => [
+         q(7149),
+         q(0),
+         ],
+      q(wnk) => [
+         q(7150),
+         q(0),
+         ],
+      q(wnm) => [
+         q(7151),
+         q(0),
+         ],
+      q(wno) => [
+         q(7152),
+         q(0),
+         ],
+      q(wnp) => [
+         q(7153),
+         q(0),
+         ],
+      q(wnu) => [
+         q(7154),
+         q(0),
+         ],
+      q(wny) => [
+         q(7155),
+         q(0),
+         ],
+      q(woa) => [
+         q(7156),
+         q(0),
+         ],
+      q(wob) => [
+         q(7157),
+         q(0),
+         ],
+      q(woc) => [
+         q(7158),
+         q(0),
+         ],
+      q(wod) => [
+         q(7159),
+         q(0),
+         ],
+      q(woe) => [
+         q(7160),
+         q(0),
+         ],
+      q(wof) => [
+         q(7161),
+         q(0),
+         ],
+      q(wog) => [
+         q(7162),
+         q(0),
+         ],
+      q(woi) => [
+         q(7163),
+         q(0),
+         ],
+      q(wok) => [
+         q(7164),
+         q(0),
+         ],
+      q(wol) => [
+         q(0469),
+         q(0),
+         ],
+      q(wom) => [
+         q(7165),
+         q(0),
+         ],
+      q(won) => [
+         q(7166),
+         q(0),
+         ],
+      q(woo) => [
+         q(7167),
+         q(0),
+         ],
+      q(wor) => [
+         q(7168),
+         q(0),
+         ],
+      q(wos) => [
+         q(7169),
+         q(0),
+         ],
+      q(wow) => [
+         q(7170),
+         q(0),
+         ],
+      q(woy) => [
+         q(7171),
+         q(0),
+         ],
+      q(wpc) => [
+         q(7172),
+         q(0),
+         ],
+      q(wra) => [
+         q(7173),
+         q(0),
+         ],
+      q(wrb) => [
+         q(7174),
+         q(0),
+         ],
+      q(wrd) => [
+         q(7175),
+         q(0),
+         ],
+      q(wrg) => [
+         q(7176),
+         q(0),
+         ],
+      q(wrh) => [
+         q(7177),
+         q(0),
+         ],
+      q(wri) => [
+         q(7178),
+         q(0),
+         ],
+      q(wrk) => [
+         q(7179),
+         q(0),
+         ],
+      q(wrl) => [
+         q(7180),
+         q(0),
+         ],
+      q(wrm) => [
+         q(7181),
+         q(0),
+         ],
+      q(wrn) => [
+         q(7182),
+         q(0),
+         ],
+      q(wro) => [
+         q(7183),
+         q(0),
+         ],
+      q(wrp) => [
+         q(7184),
+         q(0),
+         ],
+      q(wrr) => [
+         q(7185),
+         q(0),
+         ],
+      q(wrs) => [
+         q(7186),
+         q(0),
+         ],
+      q(wru) => [
+         q(7187),
+         q(0),
+         ],
+      q(wrv) => [
+         q(7188),
+         q(0),
+         ],
+      q(wrw) => [
+         q(7189),
+         q(0),
+         ],
+      q(wrx) => [
+         q(7190),
+         q(0),
+         ],
+      q(wry) => [
+         q(7191),
+         q(0),
+         ],
+      q(wrz) => [
+         q(7192),
+         q(0),
+         ],
+      q(wsa) => [
+         q(7193),
+         q(0),
+         ],
+      q(wsi) => [
+         q(7194),
+         q(0),
+         ],
+      q(wsk) => [
+         q(7195),
+         q(0),
+         ],
+      q(wsr) => [
+         q(7196),
+         q(0),
+         ],
+      q(wss) => [
+         q(7197),
+         q(0),
+         ],
+      q(wsu) => [
+         q(7198),
+         q(0),
+         ],
+      q(wsv) => [
+         q(7199),
+         q(0),
+         ],
+      q(wtf) => [
+         q(7200),
+         q(0),
+         ],
+      q(wti) => [
+         q(7201),
+         q(0),
+         ],
+      q(wtk) => [
+         q(7202),
+         q(0),
+         ],
+      q(wtm) => [
+         q(7203),
+         q(0),
+         ],
+      q(wtw) => [
+         q(7204),
+         q(0),
+         ],
+      q(wua) => [
+         q(7205),
+         q(0),
+         ],
+      q(wub) => [
+         q(7206),
+         q(0),
+         ],
+      q(wud) => [
+         q(7207),
+         q(0),
+         ],
+      q(wuh) => [
+         q(7208),
+         q(0),
+         ],
+      q(wul) => [
+         q(7209),
+         q(0),
+         ],
+      q(wum) => [
+         q(7210),
+         q(0),
+         ],
+      q(wun) => [
+         q(7211),
+         q(0),
+         ],
+      q(wur) => [
+         q(7212),
+         q(0),
+         ],
+      q(wut) => [
+         q(7213),
+         q(0),
+         ],
+      q(wuu) => [
+         q(7214),
+         q(0),
+         ],
+      q(wuv) => [
+         q(7215),
+         q(0),
+         ],
+      q(wux) => [
+         q(7216),
+         q(0),
+         ],
+      q(wuy) => [
+         q(7217),
+         q(0),
+         ],
+      q(wwa) => [
+         q(7218),
+         q(0),
+         ],
+      q(wwb) => [
+         q(7219),
+         q(0),
+         ],
+      q(wwo) => [
+         q(7220),
+         q(0),
+         ],
+      q(wwr) => [
+         q(7221),
+         q(0),
+         ],
+      q(www) => [
+         q(7222),
+         q(0),
+         ],
+      q(wxa) => [
+         q(7223),
+         q(0),
+         ],
+      q(wya) => [
+         q(7224),
+         q(0),
+         ],
+      q(wyb) => [
+         q(7225),
+         q(0),
+         ],
+      q(wym) => [
+         q(7226),
+         q(0),
+         ],
+      q(wyr) => [
+         q(7227),
+         q(0),
+         ],
+      q(wyy) => [
+         q(7228),
+         q(0),
+         ],
+      q(xaa) => [
+         q(7229),
+         q(0),
+         ],
+      q(xab) => [
+         q(7230),
+         q(0),
+         ],
+      q(xac) => [
+         q(7231),
+         q(0),
+         ],
+      q(xad) => [
+         q(7232),
+         q(0),
+         ],
+      q(xae) => [
+         q(7233),
+         q(0),
+         ],
+      q(xag) => [
+         q(7234),
+         q(0),
+         ],
+      q(xai) => [
+         q(7235),
+         q(0),
+         ],
+      q(xal) => [
+         q(0470),
+         q(0),
+         ],
+      q(xam) => [
+         q(7236),
+         q(0),
+         ],
+      q(xan) => [
+         q(7237),
+         q(0),
+         ],
+      q(xao) => [
+         q(7238),
+         q(0),
+         ],
+      q(xap) => [
+         q(7239),
+         q(0),
+         ],
+      q(xaq) => [
+         q(7240),
+         q(0),
+         ],
+      q(xar) => [
+         q(7241),
+         q(0),
+         ],
+      q(xas) => [
+         q(7242),
+         q(0),
+         ],
+      q(xat) => [
+         q(7243),
+         q(0),
+         ],
+      q(xau) => [
+         q(7244),
+         q(0),
+         ],
+      q(xav) => [
+         q(7245),
+         q(0),
+         ],
+      q(xaw) => [
+         q(7246),
+         q(0),
+         ],
+      q(xay) => [
+         q(7247),
+         q(0),
+         ],
+      q(xba) => [
+         q(7248),
+         q(0),
+         ],
+      q(xbb) => [
+         q(7249),
+         q(0),
+         ],
+      q(xbc) => [
+         q(7250),
+         q(0),
+         ],
+      q(xbi) => [
+         q(7251),
+         q(0),
+         ],
+      q(xbm) => [
+         q(7252),
+         q(0),
+         ],
+      q(xbn) => [
+         q(7253),
+         q(0),
+         ],
+      q(xbo) => [
+         q(7254),
+         q(0),
+         ],
+      q(xbr) => [
+         q(7255),
+         q(0),
+         ],
+      q(xbw) => [
+         q(7256),
+         q(0),
+         ],
+      q(xbx) => [
+         q(7257),
+         q(0),
+         ],
+      q(xcb) => [
+         q(7258),
+         q(0),
+         ],
+      q(xcc) => [
+         q(7259),
+         q(0),
+         ],
+      q(xce) => [
+         q(7260),
+         q(0),
+         ],
+      q(xcg) => [
+         q(7261),
+         q(0),
+         ],
+      q(xch) => [
+         q(7262),
+         q(0),
+         ],
+      q(xcl) => [
+         q(7263),
+         q(0),
+         ],
+      q(xcm) => [
+         q(7264),
+         q(0),
+         ],
+      q(xcn) => [
+         q(7265),
+         q(0),
+         ],
+      q(xco) => [
+         q(7266),
+         q(0),
+         ],
+      q(xcr) => [
+         q(7267),
+         q(0),
+         ],
+      q(xct) => [
+         q(7268),
+         q(0),
+         ],
+      q(xcu) => [
+         q(7269),
+         q(0),
+         ],
+      q(xcv) => [
+         q(7270),
+         q(0),
+         ],
+      q(xcw) => [
+         q(7271),
+         q(0),
+         ],
+      q(xcy) => [
+         q(7272),
+         q(0),
+         ],
+      q(xdc) => [
+         q(7273),
+         q(0),
+         ],
+      q(xdm) => [
+         q(7274),
+         q(0),
+         ],
+      q(xdy) => [
+         q(7275),
+         q(0),
+         ],
+      q(xeb) => [
+         q(7276),
+         q(0),
+         ],
+      q(xed) => [
+         q(7277),
+         q(0),
+         ],
+      q(xeg) => [
+         q(7278),
+         q(0),
+         ],
+      q(xel) => [
+         q(7279),
+         q(0),
+         ],
+      q(xem) => [
+         q(7280),
+         q(0),
+         ],
+      q(xep) => [
+         q(7281),
+         q(0),
+         ],
+      q(xer) => [
+         q(7282),
+         q(0),
+         ],
+      q(xes) => [
+         q(7283),
+         q(0),
+         ],
+      q(xet) => [
+         q(7284),
+         q(0),
+         ],
+      q(xeu) => [
+         q(7285),
+         q(0),
+         ],
+      q(xfa) => [
+         q(7286),
+         q(0),
+         ],
+      q(xga) => [
+         q(7287),
+         q(0),
+         ],
+      q(xgb) => [
+         q(7288),
+         q(0),
+         ],
+      q(xgf) => [
+         q(7289),
+         q(0),
+         ],
+      q(xgl) => [
+         q(7290),
+         q(0),
+         ],
+      q(xgn) => [
+         q(0531),
+         q(0),
+         ],
+      q(xgr) => [
+         q(7291),
+         q(0),
+         ],
+      q(xgu) => [
+         q(7292),
+         q(0),
+         ],
+      q(xha) => [
+         q(7293),
+         q(0),
+         ],
+      q(xhc) => [
+         q(7294),
+         q(0),
+         ],
+      q(xhd) => [
+         q(7295),
+         q(0),
+         ],
+      q(xhe) => [
+         q(7296),
+         q(0),
+         ],
+      q(xho) => [
+         q(0471),
+         q(0),
+         ],
+      q(xhr) => [
+         q(7297),
+         q(0),
+         ],
+      q(xht) => [
+         q(7298),
+         q(0),
+         ],
+      q(xhu) => [
+         q(7299),
+         q(0),
+         ],
+      q(xhv) => [
+         q(7300),
+         q(0),
+         ],
+      q(xia) => [
+         q(7301),
+         q(0),
+         ],
+      q(xib) => [
+         q(7302),
+         q(0),
+         ],
+      q(xii) => [
+         q(7303),
+         q(0),
+         ],
+      q(xil) => [
+         q(7304),
+         q(0),
+         ],
+      q(xin) => [
+         q(7305),
+         q(0),
+         ],
+      q(xip) => [
+         q(7306),
+         q(0),
+         ],
+      q(xir) => [
+         q(7307),
+         q(0),
+         ],
+      q(xiv) => [
+         q(7308),
+         q(0),
+         ],
+      q(xiy) => [
+         q(7309),
+         q(0),
+         ],
+      q(xka) => [
+         q(7310),
+         q(0),
+         ],
+      q(xkb) => [
+         q(7311),
+         q(0),
+         ],
+      q(xkc) => [
+         q(7312),
+         q(0),
+         ],
+      q(xkd) => [
+         q(7313),
+         q(0),
+         ],
+      q(xke) => [
+         q(7314),
+         q(0),
+         ],
+      q(xkf) => [
+         q(7315),
+         q(0),
+         ],
+      q(xkg) => [
+         q(7316),
+         q(0),
+         ],
+      q(xkh) => [
+         q(7317),
+         q(0),
+         ],
+      q(xki) => [
+         q(7318),
+         q(0),
+         ],
+      q(xkj) => [
+         q(7319),
+         q(0),
+         ],
+      q(xkk) => [
+         q(7320),
+         q(0),
+         ],
+      q(xkl) => [
+         q(7321),
+         q(0),
+         ],
+      q(xkn) => [
+         q(7322),
+         q(0),
+         ],
+      q(xko) => [
+         q(7323),
+         q(0),
+         ],
+      q(xkp) => [
+         q(7324),
+         q(0),
+         ],
+      q(xkq) => [
+         q(7325),
+         q(0),
+         ],
+      q(xkr) => [
+         q(7326),
+         q(0),
+         ],
+      q(xks) => [
+         q(7327),
+         q(0),
+         ],
+      q(xkt) => [
+         q(7328),
+         q(0),
+         ],
+      q(xku) => [
+         q(7329),
+         q(0),
+         ],
+      q(xkv) => [
+         q(7330),
+         q(0),
+         ],
+      q(xkw) => [
+         q(7331),
+         q(0),
+         ],
+      q(xkx) => [
+         q(7332),
+         q(0),
+         ],
+      q(xky) => [
+         q(7333),
+         q(0),
+         ],
+      q(xkz) => [
+         q(7334),
+         q(0),
+         ],
+      q(xla) => [
+         q(7335),
+         q(0),
+         ],
+      q(xlb) => [
+         q(7336),
+         q(0),
+         ],
+      q(xlc) => [
+         q(7337),
+         q(0),
+         ],
+      q(xld) => [
+         q(7338),
+         q(0),
+         ],
+      q(xle) => [
+         q(7339),
+         q(0),
+         ],
+      q(xlg) => [
+         q(7340),
+         q(0),
+         ],
+      q(xli) => [
+         q(7341),
+         q(0),
+         ],
+      q(xln) => [
+         q(7342),
+         q(0),
+         ],
+      q(xlo) => [
+         q(7343),
+         q(0),
+         ],
+      q(xlp) => [
+         q(7344),
+         q(0),
+         ],
+      q(xls) => [
+         q(7345),
+         q(0),
+         ],
+      q(xlu) => [
+         q(7346),
+         q(0),
+         ],
+      q(xly) => [
+         q(7347),
+         q(0),
+         ],
+      q(xma) => [
+         q(7348),
+         q(0),
+         ],
+      q(xmb) => [
+         q(7349),
+         q(0),
+         ],
+      q(xmc) => [
+         q(7350),
+         q(0),
+         ],
+      q(xmd) => [
+         q(7351),
+         q(0),
+         ],
+      q(xme) => [
+         q(7352),
+         q(0),
+         ],
+      q(xmf) => [
+         q(7353),
+         q(0),
+         ],
+      q(xmg) => [
+         q(7354),
+         q(0),
+         ],
+      q(xmh) => [
+         q(7355),
+         q(0),
+         ],
+      q(xmj) => [
+         q(7356),
+         q(0),
+         ],
+      q(xmk) => [
+         q(7357),
+         q(0),
+         ],
+      q(xml) => [
+         q(7358),
+         q(0),
+         ],
+      q(xmm) => [
+         q(7359),
+         q(0),
+         ],
+      q(xmn) => [
+         q(7360),
+         q(0),
+         ],
+      q(xmo) => [
+         q(7361),
+         q(0),
+         ],
+      q(xmp) => [
+         q(7362),
+         q(0),
+         ],
+      q(xmq) => [
+         q(7363),
+         q(0),
+         ],
+      q(xmr) => [
+         q(7364),
+         q(0),
+         ],
+      q(xms) => [
+         q(7365),
+         q(0),
+         ],
+      q(xmt) => [
+         q(7366),
+         q(0),
+         ],
+      q(xmu) => [
+         q(7367),
+         q(0),
+         ],
+      q(xmv) => [
+         q(7368),
+         q(0),
+         ],
+      q(xmw) => [
+         q(7369),
+         q(0),
+         ],
+      q(xmx) => [
+         q(7370),
+         q(0),
+         ],
+      q(xmy) => [
+         q(7371),
+         q(0),
+         ],
+      q(xmz) => [
+         q(7372),
+         q(0),
+         ],
+      q(xna) => [
+         q(7373),
+         q(0),
+         ],
+      q(xnb) => [
+         q(7374),
+         q(0),
+         ],
+      q(xnd) => [
+         q(0532),
+         q(0),
+         ],
+      q(xng) => [
+         q(7375),
+         q(0),
+         ],
+      q(xnh) => [
+         q(7376),
+         q(0),
+         ],
+      q(xnn) => [
+         q(7377),
+         q(0),
+         ],
+      q(xno) => [
+         q(7378),
+         q(0),
+         ],
+      q(xnr) => [
+         q(7379),
+         q(0),
+         ],
+      q(xns) => [
+         q(7380),
+         q(0),
+         ],
+      q(xnt) => [
+         q(7381),
+         q(0),
+         ],
+      q(xnz) => [
+         q(7382),
+         q(0),
+         ],
+      q(xoc) => [
+         q(7383),
+         q(0),
+         ],
+      q(xod) => [
+         q(7384),
+         q(0),
+         ],
+      q(xog) => [
+         q(7385),
+         q(0),
+         ],
+      q(xoi) => [
+         q(7386),
+         q(0),
+         ],
+      q(xok) => [
+         q(7387),
+         q(0),
+         ],
+      q(xom) => [
+         q(7388),
+         q(0),
+         ],
+      q(xon) => [
+         q(7389),
+         q(0),
+         ],
+      q(xoo) => [
+         q(7390),
+         q(0),
+         ],
+      q(xop) => [
+         q(7391),
+         q(0),
+         ],
+      q(xor) => [
+         q(7392),
+         q(0),
+         ],
+      q(xow) => [
+         q(7393),
+         q(0),
+         ],
+      q(xpc) => [
+         q(7394),
+         q(0),
+         ],
+      q(xpe) => [
+         q(7395),
+         q(0),
+         ],
+      q(xpg) => [
+         q(7396),
+         q(0),
+         ],
+      q(xpi) => [
+         q(7397),
+         q(0),
+         ],
+      q(xpj) => [
+         q(7398),
+         q(0),
+         ],
+      q(xpk) => [
+         q(7399),
+         q(0),
+         ],
+      q(xpm) => [
+         q(7400),
+         q(0),
+         ],
+      q(xpn) => [
+         q(7401),
+         q(0),
+         ],
+      q(xpo) => [
+         q(7402),
+         q(0),
+         ],
+      q(xpp) => [
+         q(7403),
+         q(0),
+         ],
+      q(xpq) => [
+         q(7404),
+         q(0),
+         ],
+      q(xpr) => [
+         q(7405),
+         q(0),
+         ],
+      q(xps) => [
+         q(7406),
+         q(0),
+         ],
+      q(xpu) => [
+         q(7407),
+         q(0),
+         ],
+      q(xpy) => [
+         q(7408),
+         q(0),
+         ],
+      q(xqa) => [
+         q(7409),
+         q(0),
+         ],
+      q(xqt) => [
+         q(7410),
+         q(0),
+         ],
+      q(xra) => [
+         q(7411),
+         q(0),
+         ],
+      q(xrb) => [
+         q(7412),
+         q(0),
+         ],
+      q(xre) => [
+         q(7413),
+         q(0),
+         ],
+      q(xri) => [
+         q(7414),
+         q(0),
+         ],
+      q(xrm) => [
+         q(7415),
+         q(0),
+         ],
+      q(xrn) => [
+         q(7416),
+         q(0),
+         ],
+      q(xrr) => [
+         q(7417),
+         q(0),
+         ],
+      q(xrt) => [
+         q(7418),
+         q(0),
+         ],
+      q(xru) => [
+         q(7419),
+         q(0),
+         ],
+      q(xrw) => [
+         q(7420),
+         q(0),
+         ],
+      q(xsa) => [
+         q(7421),
+         q(0),
+         ],
+      q(xsb) => [
+         q(7422),
+         q(0),
+         ],
+      q(xsc) => [
+         q(7423),
+         q(0),
+         ],
+      q(xsd) => [
+         q(7424),
+         q(0),
+         ],
+      q(xse) => [
+         q(7425),
+         q(0),
+         ],
+      q(xsh) => [
+         q(7426),
+         q(0),
+         ],
+      q(xsi) => [
+         q(7427),
+         q(0),
+         ],
+      q(xsj) => [
+         q(7428),
+         q(0),
+         ],
+      q(xsl) => [
+         q(7429),
+         q(0),
+         ],
+      q(xsm) => [
+         q(7430),
+         q(0),
+         ],
+      q(xsn) => [
+         q(7431),
+         q(0),
+         ],
+      q(xso) => [
+         q(7432),
+         q(0),
+         ],
+      q(xsp) => [
+         q(7433),
+         q(0),
+         ],
+      q(xsq) => [
+         q(7434),
+         q(0),
+         ],
+      q(xsr) => [
+         q(7435),
+         q(0),
+         ],
+      q(xss) => [
+         q(7436),
+         q(0),
+         ],
+      q(xsu) => [
+         q(7437),
+         q(0),
+         ],
+      q(xsv) => [
+         q(7438),
+         q(0),
+         ],
+      q(xsy) => [
+         q(7439),
+         q(0),
+         ],
+      q(xta) => [
+         q(7440),
+         q(0),
+         ],
+      q(xtb) => [
+         q(7441),
+         q(0),
+         ],
+      q(xtc) => [
+         q(7442),
+         q(0),
+         ],
+      q(xtd) => [
+         q(7443),
+         q(0),
+         ],
+      q(xte) => [
+         q(7444),
+         q(0),
+         ],
+      q(xtg) => [
+         q(7445),
+         q(0),
+         ],
+      q(xti) => [
+         q(7446),
+         q(0),
+         ],
+      q(xtj) => [
+         q(7447),
+         q(0),
+         ],
+      q(xtl) => [
+         q(7448),
+         q(0),
+         ],
+      q(xtm) => [
+         q(7449),
+         q(0),
+         ],
+      q(xtn) => [
+         q(7450),
+         q(0),
+         ],
+      q(xto) => [
+         q(7451),
+         q(0),
+         ],
+      q(xtp) => [
+         q(7452),
+         q(0),
+         ],
+      q(xtq) => [
+         q(7453),
+         q(0),
+         ],
+      q(xtr) => [
+         q(7454),
+         q(0),
+         ],
+      q(xts) => [
+         q(7455),
+         q(0),
+         ],
+      q(xtt) => [
+         q(7456),
+         q(0),
+         ],
+      q(xtu) => [
+         q(7457),
+         q(0),
+         ],
+      q(xtw) => [
+         q(7458),
+         q(0),
+         ],
+      q(xty) => [
+         q(7459),
+         q(0),
+         ],
+      q(xtz) => [
+         q(7460),
+         q(0),
+         ],
+      q(xua) => [
+         q(7461),
+         q(0),
+         ],
+      q(xub) => [
+         q(7462),
+         q(0),
+         ],
+      q(xud) => [
+         q(7463),
+         q(0),
+         ],
+      q(xug) => [
+         q(7464),
+         q(0),
+         ],
+      q(xuj) => [
+         q(7465),
+         q(0),
+         ],
+      q(xum) => [
+         q(7466),
+         q(0),
+         ],
+      q(xun) => [
+         q(7467),
+         q(0),
+         ],
+      q(xuo) => [
+         q(7468),
+         q(0),
+         ],
+      q(xup) => [
+         q(7469),
+         q(0),
+         ],
+      q(xur) => [
+         q(7470),
+         q(0),
+         ],
+      q(xut) => [
+         q(7471),
+         q(0),
+         ],
+      q(xuu) => [
+         q(7472),
+         q(0),
+         ],
+      q(xve) => [
+         q(7473),
+         q(0),
+         ],
+      q(xvi) => [
+         q(7474),
+         q(0),
+         ],
+      q(xvn) => [
+         q(7475),
+         q(0),
+         ],
+      q(xvo) => [
+         q(7476),
+         q(0),
+         ],
+      q(xvs) => [
+         q(7477),
+         q(0),
+         ],
+      q(xwa) => [
+         q(7478),
+         q(0),
+         ],
+      q(xwc) => [
+         q(7479),
+         q(0),
+         ],
+      q(xwe) => [
+         q(7480),
+         q(0),
+         ],
+      q(xwg) => [
+         q(7481),
+         q(0),
+         ],
+      q(xwl) => [
+         q(7482),
+         q(0),
+         ],
+      q(xwo) => [
+         q(7483),
+         q(0),
+         ],
+      q(xwr) => [
+         q(7484),
+         q(0),
+         ],
+      q(xxb) => [
+         q(7485),
+         q(0),
+         ],
+      q(xxk) => [
+         q(7486),
+         q(0),
+         ],
+      q(xxr) => [
+         q(7487),
+         q(0),
+         ],
+      q(xxt) => [
+         q(7488),
+         q(0),
+         ],
+      q(xyl) => [
+         q(7489),
+         q(0),
+         ],
+      q(xyy) => [
+         q(7490),
+         q(0),
+         ],
+      q(xzh) => [
+         q(7491),
+         q(0),
+         ],
+      q(xzm) => [
+         q(7492),
+         q(0),
+         ],
+      q(xzp) => [
+         q(7493),
+         q(0),
+         ],
+      q(yaa) => [
+         q(7494),
+         q(0),
+         ],
+      q(yab) => [
+         q(7495),
+         q(0),
+         ],
+      q(yac) => [
+         q(7496),
+         q(0),
+         ],
+      q(yad) => [
+         q(7497),
+         q(0),
+         ],
+      q(yae) => [
+         q(7498),
+         q(0),
+         ],
+      q(yaf) => [
+         q(7499),
+         q(0),
+         ],
+      q(yag) => [
+         q(7500),
+         q(0),
+         ],
+      q(yah) => [
+         q(7501),
+         q(0),
+         ],
+      q(yai) => [
+         q(7502),
+         q(0),
+         ],
+      q(yaj) => [
+         q(7503),
+         q(0),
+         ],
+      q(yak) => [
+         q(7504),
+         q(0),
+         ],
+      q(yal) => [
+         q(7505),
+         q(0),
+         ],
+      q(yam) => [
+         q(7506),
+         q(0),
+         ],
+      q(yan) => [
+         q(7507),
+         q(0),
+         ],
+      q(yao) => [
+         q(0472),
+         q(0),
+         ],
+      q(yap) => [
+         q(0473),
+         q(0),
+         ],
+      q(yaq) => [
+         q(7508),
+         q(0),
+         ],
+      q(yar) => [
+         q(7509),
+         q(0),
+         ],
+      q(yas) => [
+         q(7510),
+         q(0),
+         ],
+      q(yat) => [
+         q(7511),
+         q(0),
+         ],
+      q(yau) => [
+         q(7512),
+         q(0),
+         ],
+      q(yav) => [
+         q(7513),
+         q(0),
+         ],
+      q(yaw) => [
+         q(7514),
+         q(0),
+         ],
+      q(yax) => [
+         q(7515),
+         q(0),
+         ],
+      q(yay) => [
+         q(7516),
+         q(0),
+         ],
+      q(yaz) => [
+         q(7517),
+         q(0),
+         ],
+      q(yba) => [
+         q(7518),
+         q(0),
+         ],
+      q(ybb) => [
+         q(7519),
+         q(0),
+         ],
+      q(ybe) => [
+         q(7520),
+         q(0),
+         ],
+      q(ybh) => [
+         q(7521),
+         q(0),
+         ],
+      q(ybi) => [
+         q(7522),
+         q(0),
+         ],
+      q(ybj) => [
+         q(7523),
+         q(0),
+         ],
+      q(ybk) => [
+         q(7524),
+         q(0),
+         ],
+      q(ybl) => [
+         q(7525),
+         q(0),
+         ],
+      q(ybm) => [
+         q(7526),
+         q(0),
+         ],
+      q(ybn) => [
+         q(7527),
+         q(0),
+         ],
+      q(ybo) => [
+         q(7528),
+         q(0),
+         ],
+      q(ybx) => [
+         q(7529),
+         q(0),
+         ],
+      q(yby) => [
+         q(7530),
+         q(0),
+         ],
+      q(ych) => [
+         q(7531),
+         q(0),
+         ],
+      q(ycl) => [
+         q(7532),
+         q(0),
+         ],
+      q(ycn) => [
+         q(7533),
+         q(0),
+         ],
+      q(ycp) => [
+         q(7534),
+         q(0),
+         ],
+      q(ydd) => [
+         q(7535),
+         q(0),
+         ],
+      q(yde) => [
+         q(7536),
+         q(0),
+         ],
+      q(ydg) => [
+         q(7537),
+         q(0),
+         ],
+      q(ydk) => [
+         q(7538),
+         q(0),
+         ],
+      q(yds) => [
+         q(7539),
+         q(0),
+         ],
+      q(yea) => [
+         q(7540),
+         q(0),
+         ],
+      q(yec) => [
+         q(7541),
+         q(0),
+         ],
+      q(yee) => [
+         q(7542),
+         q(0),
+         ],
+      q(yei) => [
+         q(7543),
+         q(0),
+         ],
+      q(yej) => [
+         q(7544),
+         q(0),
+         ],
+      q(yel) => [
+         q(7545),
+         q(0),
+         ],
+      q(yer) => [
+         q(7546),
+         q(0),
+         ],
+      q(yes) => [
+         q(7547),
+         q(0),
+         ],
+      q(yet) => [
+         q(7548),
+         q(0),
+         ],
+      q(yeu) => [
+         q(7549),
+         q(0),
+         ],
+      q(yev) => [
+         q(7550),
+         q(0),
+         ],
+      q(yey) => [
+         q(7551),
+         q(0),
+         ],
+      q(yga) => [
+         q(7552),
+         q(0),
+         ],
+      q(ygl) => [
+         q(7553),
+         q(0),
+         ],
+      q(ygm) => [
+         q(7554),
+         q(0),
+         ],
+      q(ygp) => [
+         q(7555),
+         q(0),
+         ],
+      q(ygr) => [
+         q(7556),
+         q(0),
+         ],
+      q(ygw) => [
+         q(7557),
+         q(0),
+         ],
+      q(yha) => [
+         q(7558),
+         q(0),
+         ],
+      q(yhd) => [
+         q(7559),
+         q(0),
+         ],
+      q(yhl) => [
+         q(7560),
+         q(0),
+         ],
+      q(yia) => [
+         q(7561),
+         q(0),
+         ],
+      q(yid) => [
+         q(0474),
+         q(0),
+         ],
+      q(yif) => [
+         q(2642),
+         q(0),
+         ],
+      q(yig) => [
+         q(7562),
+         q(0),
+         ],
+      q(yih) => [
+         q(7563),
+         q(0),
+         ],
+      q(yii) => [
+         q(7564),
+         q(0),
+         ],
+      q(yij) => [
+         q(7565),
+         q(0),
+         ],
+      q(yik) => [
+         q(7566),
+         q(0),
+         ],
+      q(yil) => [
+         q(7567),
+         q(0),
+         ],
+      q(yim) => [
+         q(7568),
+         q(0),
+         ],
+      q(yin) => [
+         q(7569),
+         q(0),
+         ],
+      q(yip) => [
+         q(7570),
+         q(0),
+         ],
+      q(yiq) => [
+         q(7571),
+         q(0),
+         ],
+      q(yir) => [
+         q(7572),
+         q(0),
+         ],
+      q(yis) => [
+         q(7573),
+         q(0),
+         ],
+      q(yit) => [
+         q(7574),
+         q(0),
+         ],
+      q(yiu) => [
+         q(7575),
+         q(0),
+         ],
+      q(yiv) => [
+         q(7576),
+         q(0),
+         ],
+      q(yix) => [
+         q(7577),
+         q(0),
+         ],
+      q(yiy) => [
+         q(7578),
+         q(0),
+         ],
+      q(yiz) => [
+         q(7579),
+         q(0),
+         ],
+      q(yka) => [
+         q(7580),
+         q(0),
+         ],
+      q(ykg) => [
+         q(7581),
+         q(0),
+         ],
+      q(yki) => [
+         q(7582),
+         q(0),
+         ],
+      q(ykk) => [
+         q(7583),
+         q(0),
+         ],
+      q(ykl) => [
+         q(7584),
+         q(0),
+         ],
+      q(ykm) => [
+         q(7585),
+         q(0),
+         ],
+      q(ykn) => [
+         q(7586),
+         q(0),
+         ],
+      q(yko) => [
+         q(7587),
+         q(0),
+         ],
+      q(ykr) => [
+         q(7588),
+         q(0),
+         ],
+      q(ykt) => [
+         q(7589),
+         q(0),
+         ],
+      q(yku) => [
+         q(7590),
+         q(0),
+         ],
+      q(yky) => [
+         q(7591),
+         q(0),
+         ],
+      q(yla) => [
+         q(7592),
+         q(0),
+         ],
+      q(ylb) => [
+         q(7593),
+         q(0),
+         ],
+      q(yle) => [
+         q(7594),
+         q(0),
+         ],
+      q(ylg) => [
+         q(7595),
+         q(0),
+         ],
+      q(yli) => [
+         q(7596),
+         q(0),
+         ],
+      q(yll) => [
+         q(7597),
+         q(0),
+         ],
+      q(ylm) => [
+         q(7598),
+         q(0),
+         ],
+      q(yln) => [
+         q(7599),
+         q(0),
+         ],
+      q(ylo) => [
+         q(7600),
+         q(0),
+         ],
+      q(ylr) => [
+         q(7601),
+         q(0),
+         ],
+      q(ylu) => [
+         q(7602),
+         q(0),
+         ],
+      q(yly) => [
+         q(7603),
+         q(0),
+         ],
+      q(ymb) => [
+         q(7604),
+         q(0),
+         ],
+      q(ymc) => [
+         q(7605),
+         q(0),
+         ],
+      q(ymd) => [
+         q(7606),
+         q(0),
+         ],
+      q(yme) => [
+         q(7607),
+         q(0),
+         ],
+      q(ymg) => [
+         q(7608),
+         q(0),
+         ],
+      q(ymh) => [
+         q(7609),
+         q(0),
+         ],
+      q(ymi) => [
+         q(7610),
+         q(0),
+         ],
+      q(ymk) => [
+         q(7611),
+         q(0),
+         ],
+      q(yml) => [
+         q(7612),
+         q(0),
+         ],
+      q(ymm) => [
+         q(7613),
+         q(0),
+         ],
+      q(ymn) => [
+         q(7614),
+         q(0),
+         ],
+      q(ymo) => [
+         q(7615),
+         q(0),
+         ],
+      q(ymp) => [
+         q(7616),
+         q(0),
+         ],
+      q(ymq) => [
+         q(7617),
+         q(0),
+         ],
+      q(ymr) => [
+         q(7618),
+         q(0),
+         ],
+      q(yms) => [
+         q(7619),
+         q(0),
+         ],
+      q(ymt) => [
+         q(7620),
+         q(0),
+         ],
+      q(ymx) => [
+         q(7621),
+         q(0),
+         ],
+      q(ymz) => [
+         q(7622),
+         q(0),
+         ],
+      q(yna) => [
+         q(7623),
+         q(0),
+         ],
+      q(ynd) => [
+         q(7624),
+         q(0),
+         ],
+      q(yne) => [
+         q(7625),
+         q(0),
+         ],
+      q(yng) => [
+         q(7626),
+         q(0),
+         ],
+      q(ynh) => [
+         q(7627),
+         q(0),
+         ],
+      q(ynk) => [
+         q(7628),
+         q(0),
+         ],
+      q(ynl) => [
+         q(7629),
+         q(0),
+         ],
+      q(ynn) => [
+         q(7630),
+         q(0),
+         ],
+      q(yno) => [
+         q(7631),
+         q(0),
+         ],
+      q(ynq) => [
+         q(7632),
+         q(0),
+         ],
+      q(yns) => [
+         q(7633),
+         q(0),
+         ],
+      q(ynu) => [
+         q(7634),
+         q(0),
+         ],
+      q(yob) => [
+         q(7635),
+         q(0),
+         ],
+      q(yog) => [
+         q(7636),
+         q(0),
+         ],
+      q(yoi) => [
+         q(7637),
+         q(0),
+         ],
+      q(yok) => [
+         q(7638),
+         q(0),
+         ],
+      q(yol) => [
+         q(7639),
+         q(0),
+         ],
+      q(yom) => [
+         q(7640),
+         q(0),
+         ],
+      q(yon) => [
+         q(7641),
+         q(0),
+         ],
+      q(yor) => [
+         q(0475),
+         q(0),
+         ],
+      q(yos) => [
+         q(7642),
+         q(0),
+         ],
+      q(yot) => [
+         q(7643),
+         q(0),
+         ],
+      q(yox) => [
+         q(7644),
+         q(0),
+         ],
+      q(yoy) => [
+         q(7645),
+         q(0),
+         ],
+      q(ypa) => [
+         q(7646),
+         q(0),
+         ],
+      q(ypb) => [
+         q(7647),
+         q(0),
+         ],
+      q(ypg) => [
+         q(7648),
+         q(0),
+         ],
+      q(yph) => [
+         q(7649),
+         q(0),
+         ],
+      q(ypk) => [
+         q(0476),
+         q(0),
+         ],
+      q(ypm) => [
+         q(7650),
+         q(0),
+         ],
+      q(ypn) => [
+         q(7651),
+         q(0),
+         ],
+      q(ypo) => [
+         q(7652),
+         q(0),
+         ],
+      q(ypp) => [
+         q(7653),
+         q(0),
+         ],
+      q(ypz) => [
+         q(7654),
+         q(0),
+         ],
+      q(yra) => [
+         q(7655),
+         q(0),
+         ],
+      q(yrb) => [
+         q(7656),
+         q(0),
+         ],
+      q(yre) => [
+         q(7657),
+         q(0),
+         ],
+      q(yri) => [
+         q(7658),
+         q(0),
+         ],
+      q(yrk) => [
+         q(7659),
+         q(0),
+         ],
+      q(yrl) => [
+         q(7660),
+         q(0),
+         ],
+      q(yrn) => [
+         q(7661),
+         q(0),
+         ],
+      q(yrs) => [
+         q(7662),
+         q(0),
+         ],
+      q(yrw) => [
+         q(7663),
+         q(0),
+         ],
+      q(ysc) => [
+         q(7664),
+         q(0),
+         ],
+      q(ysd) => [
+         q(7665),
+         q(0),
+         ],
+      q(ysg) => [
+         q(7666),
+         q(0),
+         ],
+      q(ysl) => [
+         q(7667),
+         q(0),
+         ],
+      q(ysn) => [
+         q(7668),
+         q(0),
+         ],
+      q(yso) => [
+         q(7669),
+         q(0),
+         ],
+      q(ysp) => [
+         q(7670),
+         q(0),
+         ],
+      q(ysr) => [
+         q(7671),
+         q(0),
+         ],
+      q(yss) => [
+         q(7672),
+         q(0),
+         ],
+      q(ysy) => [
+         q(7673),
+         q(0),
+         ],
+      q(yta) => [
+         q(7674),
+         q(0),
+         ],
+      q(ytl) => [
+         q(7675),
+         q(0),
+         ],
+      q(ytp) => [
+         q(7676),
+         q(0),
+         ],
+      q(ytw) => [
+         q(7677),
+         q(0),
+         ],
+      q(yua) => [
+         q(7678),
+         q(0),
+         ],
+      q(yub) => [
+         q(7679),
+         q(0),
+         ],
+      q(yuc) => [
+         q(7680),
+         q(0),
+         ],
+      q(yud) => [
+         q(7681),
+         q(0),
+         ],
+      q(yue) => [
+         q(7682),
+         q(0),
+         ],
+      q(yuf) => [
+         q(7683),
+         q(0),
+         ],
+      q(yug) => [
+         q(7684),
+         q(0),
+         ],
+      q(yui) => [
+         q(7685),
+         q(0),
+         ],
+      q(yuj) => [
+         q(7686),
+         q(0),
+         ],
+      q(yuk) => [
+         q(7687),
+         q(0),
+         ],
+      q(yul) => [
+         q(7688),
+         q(0),
+         ],
+      q(yum) => [
+         q(7689),
+         q(0),
+         ],
+      q(yun) => [
+         q(7690),
+         q(0),
+         ],
+      q(yup) => [
+         q(7691),
+         q(0),
+         ],
+      q(yuq) => [
+         q(7692),
+         q(0),
+         ],
+      q(yur) => [
+         q(7693),
+         q(0),
+         ],
+      q(yut) => [
+         q(7694),
+         q(0),
+         ],
+      q(yuu) => [
+         q(7695),
+         q(0),
+         ],
+      q(yuw) => [
+         q(7696),
+         q(0),
+         ],
+      q(yux) => [
+         q(7697),
+         q(0),
+         ],
+      q(yuy) => [
+         q(7698),
+         q(0),
+         ],
+      q(yuz) => [
+         q(7699),
+         q(0),
+         ],
+      q(yva) => [
+         q(7700),
+         q(0),
+         ],
+      q(yvt) => [
+         q(7701),
+         q(0),
+         ],
+      q(ywa) => [
+         q(7702),
+         q(0),
+         ],
+      q(ywl) => [
+         q(7703),
+         q(0),
+         ],
+      q(ywn) => [
+         q(7704),
+         q(0),
+         ],
+      q(ywq) => [
+         q(7705),
+         q(0),
+         ],
+      q(ywr) => [
+         q(7706),
+         q(0),
+         ],
+      q(ywt) => [
+         q(7707),
+         q(0),
+         ],
+      q(ywu) => [
+         q(7708),
+         q(0),
+         ],
+      q(yww) => [
+         q(7709),
+         q(0),
+         ],
+      q(yxg) => [
+         q(7710),
+         q(0),
+         ],
+      q(yxy) => [
+         q(7711),
+         q(0),
+         ],
+      q(yyu) => [
+         q(7712),
+         q(0),
+         ],
+      q(yyz) => [
+         q(7713),
+         q(0),
+         ],
+      q(yzg) => [
+         q(7714),
+         q(0),
+         ],
+      q(yzk) => [
+         q(7715),
+         q(0),
+         ],
+      q(zaa) => [
+         q(7716),
+         q(0),
+         ],
+      q(zab) => [
+         q(7717),
+         q(0),
+         ],
+      q(zac) => [
+         q(7718),
+         q(0),
+         ],
+      q(zad) => [
+         q(7719),
+         q(0),
+         ],
+      q(zae) => [
+         q(7720),
+         q(0),
+         ],
+      q(zaf) => [
+         q(7721),
+         q(0),
+         ],
+      q(zag) => [
+         q(7722),
+         q(0),
+         ],
+      q(zah) => [
+         q(7723),
+         q(0),
+         ],
+      q(zai) => [
+         q(7724),
+         q(0),
+         ],
+      q(zaj) => [
+         q(7725),
+         q(0),
+         ],
+      q(zak) => [
+         q(7726),
+         q(0),
+         ],
+      q(zal) => [
+         q(7727),
+         q(0),
+         ],
+      q(zam) => [
+         q(7728),
+         q(0),
+         ],
+      q(zao) => [
+         q(7729),
+         q(0),
+         ],
+      q(zap) => [
+         q(0477),
+         q(0),
+         ],
+      q(zaq) => [
+         q(7730),
+         q(0),
+         ],
+      q(zar) => [
+         q(7731),
+         q(0),
+         ],
+      q(zas) => [
+         q(7732),
+         q(0),
+         ],
+      q(zat) => [
+         q(7733),
+         q(0),
+         ],
+      q(zau) => [
+         q(7734),
+         q(0),
+         ],
+      q(zav) => [
+         q(7735),
+         q(0),
+         ],
+      q(zaw) => [
+         q(7736),
+         q(0),
+         ],
+      q(zax) => [
+         q(7737),
+         q(0),
+         ],
+      q(zay) => [
+         q(7738),
+         q(0),
+         ],
+      q(zaz) => [
+         q(7739),
+         q(0),
+         ],
+      q(zbc) => [
+         q(7740),
+         q(0),
+         ],
+      q(zbe) => [
+         q(7741),
+         q(0),
+         ],
+      q(zbl) => [
+         q(0478),
+         q(0),
+         ],
+      q(zbt) => [
+         q(7742),
+         q(0),
+         ],
+      q(zbw) => [
+         q(7743),
+         q(0),
+         ],
+      q(zca) => [
+         q(7744),
+         q(0),
+         ],
+      q(zch) => [
+         q(7745),
+         q(0),
+         ],
+      q(zdj) => [
+         q(7746),
+         q(0),
+         ],
+      q(zea) => [
+         q(7747),
+         q(0),
+         ],
+      q(zeg) => [
+         q(7748),
+         q(0),
+         ],
+      q(zeh) => [
+         q(7749),
+         q(0),
+         ],
+      q(zen) => [
+         q(0479),
+         q(0),
+         ],
+      q(zga) => [
+         q(7750),
+         q(0),
+         ],
+      q(zgb) => [
+         q(7751),
+         q(0),
+         ],
+      q(zgh) => [
+         q(0480),
+         q(0),
+         ],
+      q(zgm) => [
+         q(7752),
+         q(0),
+         ],
+      q(zgn) => [
+         q(7753),
+         q(0),
+         ],
+      q(zgr) => [
+         q(7754),
+         q(0),
+         ],
+      q(zha) => [
+         q(0481),
+         q(0),
+         ],
+      q(zhb) => [
+         q(7755),
+         q(0),
+         ],
+      q(zhd) => [
+         q(7756),
+         q(0),
+         ],
+      q(zhi) => [
+         q(7757),
+         q(0),
+         ],
+      q(zhn) => [
+         q(7758),
+         q(0),
+         ],
+      q(zhw) => [
+         q(7759),
+         q(0),
+         ],
+      q(zhx) => [
+         q(0533),
+         q(0),
+         ],
+      q(zia) => [
+         q(7760),
+         q(0),
+         ],
+      q(zib) => [
+         q(7761),
+         q(0),
+         ],
+      q(zik) => [
+         q(7762),
+         q(0),
+         ],
+      q(zil) => [
+         q(7763),
+         q(0),
+         ],
+      q(zim) => [
+         q(7764),
+         q(0),
+         ],
+      q(zin) => [
+         q(7765),
+         q(0),
+         ],
+      q(zir) => [
+         q(7766),
+         q(0),
+         ],
+      q(ziw) => [
+         q(7767),
+         q(0),
+         ],
+      q(ziz) => [
+         q(7768),
+         q(0),
+         ],
+      q(zka) => [
+         q(7769),
+         q(0),
+         ],
+      q(zkb) => [
+         q(7770),
+         q(0),
+         ],
+      q(zkd) => [
+         q(7771),
+         q(0),
+         ],
+      q(zkg) => [
+         q(7772),
+         q(0),
+         ],
+      q(zkh) => [
+         q(7773),
+         q(0),
+         ],
+      q(zkk) => [
+         q(7774),
+         q(0),
+         ],
+      q(zkn) => [
+         q(7775),
+         q(0),
+         ],
+      q(zko) => [
+         q(7776),
+         q(0),
+         ],
+      q(zkp) => [
+         q(7777),
+         q(0),
+         ],
+      q(zkr) => [
+         q(7778),
+         q(0),
+         ],
+      q(zkt) => [
+         q(7779),
+         q(0),
+         ],
+      q(zku) => [
+         q(7780),
+         q(0),
+         ],
+      q(zkv) => [
+         q(7781),
+         q(0),
+         ],
+      q(zkz) => [
+         q(7782),
+         q(0),
+         ],
+      q(zle) => [
+         q(0534),
+         q(0),
+         ],
+      q(zlj) => [
+         q(7783),
+         q(0),
+         ],
+      q(zlm) => [
+         q(7784),
+         q(0),
+         ],
+      q(zln) => [
+         q(7785),
+         q(0),
+         ],
+      q(zlq) => [
+         q(7786),
+         q(0),
+         ],
+      q(zls) => [
+         q(0535),
+         q(0),
+         ],
+      q(zlw) => [
+         q(0536),
+         q(0),
+         ],
+      q(zma) => [
+         q(7787),
+         q(0),
+         ],
+      q(zmb) => [
+         q(7788),
+         q(0),
+         ],
+      q(zmc) => [
+         q(7789),
+         q(0),
+         ],
+      q(zmd) => [
+         q(7790),
+         q(0),
+         ],
+      q(zme) => [
+         q(7791),
+         q(0),
+         ],
+      q(zmf) => [
+         q(7792),
+         q(0),
+         ],
+      q(zmg) => [
+         q(7793),
+         q(0),
+         ],
+      q(zmh) => [
+         q(7794),
+         q(0),
+         ],
+      q(zmi) => [
+         q(7795),
+         q(0),
+         ],
+      q(zmj) => [
+         q(7796),
+         q(0),
+         ],
+      q(zmk) => [
+         q(7797),
+         q(0),
+         ],
+      q(zml) => [
+         q(7798),
+         q(0),
+         ],
+      q(zmm) => [
+         q(7799),
+         q(0),
+         ],
+      q(zmn) => [
+         q(7800),
+         q(0),
+         ],
+      q(zmo) => [
+         q(7801),
+         q(0),
+         ],
+      q(zmp) => [
+         q(7802),
+         q(0),
+         ],
+      q(zmq) => [
+         q(7803),
+         q(0),
+         ],
+      q(zmr) => [
+         q(7804),
+         q(0),
+         ],
+      q(zms) => [
+         q(7805),
+         q(0),
+         ],
+      q(zmt) => [
+         q(7806),
+         q(0),
+         ],
+      q(zmu) => [
+         q(7807),
+         q(0),
+         ],
+      q(zmv) => [
+         q(7808),
+         q(0),
+         ],
+      q(zmw) => [
+         q(7809),
+         q(0),
+         ],
+      q(zmx) => [
+         q(7810),
+         q(0),
+         ],
+      q(zmy) => [
+         q(7811),
+         q(0),
+         ],
+      q(zmz) => [
+         q(7812),
+         q(0),
+         ],
+      q(zna) => [
+         q(7813),
+         q(0),
+         ],
+      q(znd) => [
+         q(0482),
+         q(0),
+         ],
+      q(zne) => [
+         q(7814),
+         q(0),
+         ],
+      q(zng) => [
+         q(7815),
+         q(0),
+         ],
+      q(znk) => [
+         q(7816),
+         q(0),
+         ],
+      q(zns) => [
+         q(7817),
+         q(0),
+         ],
+      q(zoc) => [
+         q(7818),
+         q(0),
+         ],
+      q(zoh) => [
+         q(7819),
+         q(0),
+         ],
+      q(zom) => [
+         q(7820),
+         q(0),
+         ],
+      q(zoo) => [
+         q(7821),
+         q(0),
+         ],
+      q(zoq) => [
+         q(7822),
+         q(0),
+         ],
+      q(zor) => [
+         q(7823),
+         q(0),
+         ],
+      q(zos) => [
+         q(7824),
+         q(0),
+         ],
+      q(zpa) => [
+         q(7825),
+         q(0),
+         ],
+      q(zpb) => [
+         q(7826),
+         q(0),
+         ],
+      q(zpc) => [
+         q(7827),
+         q(0),
+         ],
+      q(zpd) => [
+         q(7828),
+         q(0),
+         ],
+      q(zpe) => [
+         q(7829),
+         q(0),
+         ],
+      q(zpf) => [
+         q(7830),
+         q(0),
+         ],
+      q(zpg) => [
+         q(7831),
+         q(0),
+         ],
+      q(zph) => [
+         q(7832),
+         q(0),
+         ],
+      q(zpi) => [
+         q(7833),
+         q(0),
+         ],
+      q(zpj) => [
+         q(7834),
+         q(0),
+         ],
+      q(zpk) => [
+         q(7835),
+         q(0),
+         ],
+      q(zpl) => [
+         q(7836),
+         q(0),
+         ],
+      q(zpm) => [
+         q(7837),
+         q(0),
+         ],
+      q(zpn) => [
+         q(7838),
+         q(0),
+         ],
+      q(zpo) => [
+         q(7839),
+         q(0),
+         ],
+      q(zpp) => [
+         q(7840),
+         q(0),
+         ],
+      q(zpq) => [
+         q(7841),
+         q(0),
+         ],
+      q(zpr) => [
+         q(7842),
+         q(0),
+         ],
+      q(zps) => [
+         q(7843),
+         q(0),
+         ],
+      q(zpt) => [
+         q(7844),
+         q(0),
+         ],
+      q(zpu) => [
+         q(7845),
+         q(0),
+         ],
+      q(zpv) => [
+         q(7846),
+         q(0),
+         ],
+      q(zpw) => [
+         q(7847),
+         q(0),
+         ],
+      q(zpx) => [
+         q(7848),
+         q(0),
+         ],
+      q(zpy) => [
+         q(7849),
+         q(0),
+         ],
+      q(zpz) => [
+         q(7850),
+         q(0),
+         ],
+      q(zqe) => [
+         q(7851),
+         q(0),
+         ],
+      q(zra) => [
+         q(7852),
+         q(0),
+         ],
+      q(zrg) => [
+         q(7853),
+         q(0),
+         ],
+      q(zrn) => [
+         q(7854),
+         q(0),
+         ],
+      q(zro) => [
+         q(7855),
+         q(0),
+         ],
+      q(zrp) => [
+         q(7856),
+         q(0),
+         ],
+      q(zrs) => [
+         q(7857),
+         q(0),
+         ],
+      q(zsa) => [
+         q(7858),
+         q(0),
+         ],
+      q(zsk) => [
+         q(7859),
+         q(0),
+         ],
+      q(zsl) => [
+         q(7860),
+         q(0),
+         ],
+      q(zsm) => [
+         q(7861),
+         q(0),
+         ],
+      q(zsr) => [
+         q(7862),
+         q(0),
+         ],
+      q(zsu) => [
+         q(7863),
+         q(0),
+         ],
+      q(zte) => [
+         q(7864),
+         q(0),
+         ],
+      q(ztg) => [
+         q(7865),
+         q(0),
+         ],
+      q(ztl) => [
+         q(7866),
+         q(0),
+         ],
+      q(ztm) => [
+         q(7867),
+         q(0),
+         ],
+      q(ztn) => [
+         q(7868),
+         q(0),
+         ],
+      q(ztp) => [
+         q(7869),
+         q(0),
+         ],
+      q(ztq) => [
+         q(7870),
+         q(0),
+         ],
+      q(zts) => [
+         q(7871),
+         q(0),
+         ],
+      q(ztt) => [
+         q(7872),
+         q(0),
+         ],
+      q(ztu) => [
+         q(7873),
+         q(0),
+         ],
+      q(ztx) => [
+         q(7874),
+         q(0),
+         ],
+      q(zty) => [
+         q(7875),
+         q(0),
+         ],
+      q(zua) => [
+         q(7876),
+         q(0),
+         ],
+      q(zuh) => [
+         q(7877),
+         q(0),
+         ],
+      q(zul) => [
+         q(0483),
+         q(0),
+         ],
+      q(zum) => [
+         q(7878),
+         q(0),
+         ],
+      q(zun) => [
+         q(0484),
+         q(0),
+         ],
+      q(zuy) => [
+         q(7879),
+         q(0),
+         ],
+      q(zwa) => [
+         q(7880),
+         q(0),
+         ],
+      q(zxx) => [
+         q(0485),
+         q(0),
+         ],
+      q(zyb) => [
+         q(7881),
+         q(0),
+         ],
+      q(zyg) => [
+         q(7882),
+         q(0),
+         ],
+      q(zyj) => [
+         q(7883),
+         q(0),
+         ],
+      q(zyn) => [
+         q(7884),
+         q(0),
+         ],
+      q(zyp) => [
+         q(7885),
+         q(0),
+         ],
+      q(zza) => [
+         q(0486),
+         q(0),
+         ],
+      q(zzj) => [
+         q(7886),
+         q(0),
+         ],
+      },
+   q(term) => {
+      q(bod) => [
+         q(0427),
+         q(0),
+         ],
+      q(ces) => [
+         q(0101),
+         q(0),
+         ],
+      q(cym) => [
+         q(0466),
+         q(0),
+         ],
+      q(deu) => [
+         q(0150),
+         q(0),
+         ],
+      q(ell) => [
+         q(0164),
+         q(0),
+         ],
+      q(eus) => [
+         q(0044),
+         q(0),
+         ],
+      q(fas) => [
+         q(0342),
+         q(0),
+         ],
+      q(fra) => [
+         q(0137),
+         q(0),
+         ],
+      q(hye) => [
+         q(0024),
+         q(0),
+         ],
+      q(isl) => [
+         q(0187),
+         q(0),
+         ],
+      q(kat) => [
+         q(0149),
+         q(0),
+         ],
+      q(mkd) => [
+         q(0262),
+         q(0),
+         ],
+      q(mri) => [
+         q(0270),
+         q(0),
+         ],
+      q(msa) => [
+         q(0274),
+         q(0),
+         ],
+      q(mya) => [
+         q(0066),
+         q(0),
+         ],
+      q(nld) => [
+         q(0116),
+         q(0),
+         ],
+      q(ron) => [
+         q(0360),
+         q(0),
+         ],
+      q(slk) => [
+         q(0385),
+         q(0),
+         ],
+      q(sqi) => [
+         q(0013),
+         q(0),
+         ],
+      q(zho) => [
+         q(0079),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'language'}{'id2code'} = {
+   q(alpha-2) => {
+      q(0001) => q(aa),
+      q(0002) => q(ab),
+      q(0009) => q(af),
+      q(0011) => q(ak),
+      q(0013) => q(sq),
+      q(0017) => q(am),
+      q(0021) => q(ar),
+      q(0023) => q(an),
+      q(0024) => q(hy),
+      q(0029) => q(as),
+      q(0033) => q(av),
+      q(0034) => q(ae),
+      q(0036) => q(ay),
+      q(0037) => q(az),
+      q(0040) => q(ba),
+      q(0042) => q(bm),
+      q(0044) => q(eu),
+      q(0048) => q(be),
+      q(0050) => q(bn),
+      q(0053) => q(bh),
+      q(0056) => q(bi),
+      q(0059) => q(bs),
+      q(0061) => q(br),
+      q(0065) => q(bg),
+      q(0066) => q(my),
+      q(0071) => q(ca),
+      q(0075) => q(ch),
+      q(0077) => q(ce),
+      q(0079) => q(zh),
+      q(0086) => q(cu),
+      q(0087) => q(cv),
+      q(0091) => q(kw),
+      q(0092) => q(co),
+      q(0096) => q(cr),
+      q(0101) => q(cs),
+      q(0103) => q(da),
+      q(0110) => q(dv),
+      q(0116) => q(nl),
+      q(0118) => q(dz),
+      q(0123) => q(en),
+      q(0125) => q(eo),
+      q(0126) => q(et),
+      q(0127) => q(ee),
+      q(0130) => q(fo),
+      q(0132) => q(fj),
+      q(0134) => q(fi),
+      q(0137) => q(fr),
+      q(0142) => q(fy),
+      q(0143) => q(ff),
+      q(0149) => q(ka),
+      q(0150) => q(de),
+      q(0153) => q(gd),
+      q(0154) => q(ga),
+      q(0155) => q(gl),
+      q(0156) => q(gv),
+      q(0164) => q(el),
+      q(0165) => q(gn),
+      q(0167) => q(gu),
+      q(0170) => q(ht),
+      q(0171) => q(ha),
+      q(0173) => q(he),
+      q(0174) => q(hz),
+      q(0177) => q(hi),
+      q(0180) => q(ho),
+      q(0181) => q(hr),
+      q(0183) => q(hu),
+      q(0186) => q(ig),
+      q(0187) => q(is),
+      q(0188) => q(io),
+      q(0189) => q(ii),
+      q(0191) => q(iu),
+      q(0192) => q(ie),
+      q(0194) => q(ia),
+      q(0196) => q(id),
+      q(0199) => q(ik),
+      q(0202) => q(it),
+      q(0203) => q(jv),
+      q(0205) => q(ja),
+      q(0211) => q(kl),
+      q(0213) => q(kn),
+      q(0215) => q(ks),
+      q(0216) => q(kr),
+      q(0218) => q(kk),
+      q(0222) => q(km),
+      q(0224) => q(ki),
+      q(0225) => q(rw),
+      q(0226) => q(ky),
+      q(0229) => q(kv),
+      q(0230) => q(kg),
+      q(0231) => q(ko),
+      q(0238) => q(kj),
+      q(0240) => q(ku),
+      q(0245) => q(lo),
+      q(0246) => q(la),
+      q(0247) => q(lv),
+      q(0249) => q(li),
+      q(0250) => q(ln),
+      q(0251) => q(lt),
+      q(0254) => q(lb),
+      q(0256) => q(lu),
+      q(0257) => q(lg),
+      q(0262) => q(mk),
+      q(0265) => q(mh),
+      q(0268) => q(ml),
+      q(0270) => q(mi),
+      q(0272) => q(mr),
+      q(0274) => q(ms),
+      q(0283) => q(mg),
+      q(0284) => q(mt),
+      q(0289) => q(mn),
+      q(0301) => q(na),
+      q(0302) => q(nv),
+      q(0303) => q(nr),
+      q(0304) => q(nd),
+      q(0305) => q(ng),
+      q(0307) => q(ne),
+      q(0312) => q(nn),
+      q(0313) => q(nb),
+      q(0316) => q(no),
+      q(0321) => q(ny),
+      q(0326) => q(oc),
+      q(0327) => q(oj),
+      q(0328) => q(or),
+      q(0329) => q(om),
+      q(0331) => q(os),
+      q(0338) => q(pa),
+      q(0342) => q(fa),
+      q(0345) => q(pi),
+      q(0346) => q(pl),
+      q(0348) => q(pt),
+      q(0351) => q(ps),
+      q(0353) => q(qu),
+      q(0358) => q(rm),
+      q(0360) => q(ro),
+      q(0361) => q(rn),
+      q(0363) => q(ru),
+      q(0365) => q(sg),
+      q(0370) => q(sa),
+      q(0381) => q(si),
+      q(0385) => q(sk),
+      q(0386) => q(sl),
+      q(0388) => q(se),
+      q(0392) => q(sm),
+      q(0394) => q(sn),
+      q(0395) => q(sd),
+      q(0398) => q(so),
+      q(0400) => q(st),
+      q(0401) => q(es),
+      q(0402) => q(sc),
+      q(0404) => q(sr),
+      q(0407) => q(ss),
+      q(0409) => q(su),
+      q(0412) => q(sw),
+      q(0413) => q(sv),
+      q(0416) => q(ty),
+      q(0418) => q(ta),
+      q(0419) => q(tt),
+      q(0420) => q(te),
+      q(0424) => q(tg),
+      q(0425) => q(tl),
+      q(0426) => q(th),
+      q(0427) => q(bo),
+      q(0429) => q(ti),
+      q(0436) => q(to),
+      q(0439) => q(tn),
+      q(0440) => q(ts),
+      q(0441) => q(tk),
+      q(0444) => q(tr),
+      q(0447) => q(tw),
+      q(0451) => q(ug),
+      q(0452) => q(uk),
+      q(0455) => q(ur),
+      q(0456) => q(uz),
+      q(0458) => q(ve),
+      q(0459) => q(vi),
+      q(0460) => q(vo),
+      q(0466) => q(cy),
+      q(0468) => q(wa),
+      q(0469) => q(wo),
+      q(0471) => q(xh),
+      q(0474) => q(yi),
+      q(0475) => q(yo),
+      q(0481) => q(za),
+      q(0483) => q(zu),
+      q(0537) => q(sh),
+      },
+   q(alpha-3) => {
+      q(0001) => q(aar),
+      q(0002) => q(abk),
+      q(0003) => q(ace),
+      q(0004) => q(ach),
+      q(0005) => q(ada),
+      q(0006) => q(ady),
+      q(0007) => q(afa),
+      q(0008) => q(afh),
+      q(0009) => q(afr),
+      q(0010) => q(ain),
+      q(0011) => q(aka),
+      q(0012) => q(akk),
+      q(0013) => q(alb),
+      q(0014) => q(ale),
+      q(0015) => q(alg),
+      q(0016) => q(alt),
+      q(0017) => q(amh),
+      q(0018) => q(ang),
+      q(0019) => q(anp),
+      q(0020) => q(apa),
+      q(0021) => q(ara),
+      q(0022) => q(arc),
+      q(0023) => q(arg),
+      q(0024) => q(arm),
+      q(0025) => q(arn),
+      q(0026) => q(arp),
+      q(0027) => q(art),
+      q(0028) => q(arw),
+      q(0029) => q(asm),
+      q(0030) => q(ast),
+      q(0031) => q(ath),
+      q(0032) => q(aus),
+      q(0033) => q(ava),
+      q(0034) => q(ave),
+      q(0035) => q(awa),
+      q(0036) => q(aym),
+      q(0037) => q(aze),
+      q(0038) => q(bad),
+      q(0039) => q(bai),
+      q(0040) => q(bak),
+      q(0041) => q(bal),
+      q(0042) => q(bam),
+      q(0043) => q(ban),
+      q(0044) => q(baq),
+      q(0045) => q(bas),
+      q(0046) => q(bat),
+      q(0047) => q(bej),
+      q(0048) => q(bel),
+      q(0049) => q(bem),
+      q(0050) => q(ben),
+      q(0051) => q(ber),
+      q(0052) => q(bho),
+      q(0053) => q(bih),
+      q(0054) => q(bik),
+      q(0055) => q(bin),
+      q(0056) => q(bis),
+      q(0057) => q(bla),
+      q(0058) => q(bnt),
+      q(0059) => q(bos),
+      q(0060) => q(bra),
+      q(0061) => q(bre),
+      q(0062) => q(btk),
+      q(0063) => q(bua),
+      q(0064) => q(bug),
+      q(0065) => q(bul),
+      q(0066) => q(bur),
+      q(0067) => q(byn),
+      q(0068) => q(cad),
+      q(0069) => q(cai),
+      q(0070) => q(car),
+      q(0071) => q(cat),
+      q(0072) => q(cau),
+      q(0073) => q(ceb),
+      q(0074) => q(cel),
+      q(0075) => q(cha),
+      q(0076) => q(chb),
+      q(0077) => q(che),
+      q(0078) => q(chg),
+      q(0079) => q(chi),
+      q(0080) => q(chk),
+      q(0081) => q(chm),
+      q(0082) => q(chn),
+      q(0083) => q(cho),
+      q(0084) => q(chp),
+      q(0085) => q(chr),
+      q(0086) => q(chu),
+      q(0087) => q(chv),
+      q(0088) => q(chy),
+      q(0089) => q(cmc),
+      q(0090) => q(cop),
+      q(0091) => q(cor),
+      q(0092) => q(cos),
+      q(0093) => q(cpe),
+      q(0094) => q(cpf),
+      q(0095) => q(cpp),
+      q(0096) => q(cre),
+      q(0097) => q(crh),
+      q(0098) => q(crp),
+      q(0099) => q(csb),
+      q(0100) => q(cus),
+      q(0101) => q(cze),
+      q(0102) => q(dak),
+      q(0103) => q(dan),
+      q(0104) => q(dar),
+      q(0105) => q(day),
+      q(0106) => q(del),
+      q(0107) => q(den),
+      q(0108) => q(dgr),
+      q(0109) => q(din),
+      q(0110) => q(div),
+      q(0111) => q(doi),
+      q(0112) => q(dra),
+      q(0113) => q(dsb),
+      q(0114) => q(dua),
+      q(0115) => q(dum),
+      q(0116) => q(dut),
+      q(0117) => q(dyu),
+      q(0118) => q(dzo),
+      q(0119) => q(efi),
+      q(0120) => q(egy),
+      q(0121) => q(eka),
+      q(0122) => q(elx),
+      q(0123) => q(eng),
+      q(0124) => q(enm),
+      q(0125) => q(epo),
+      q(0126) => q(est),
+      q(0127) => q(ewe),
+      q(0128) => q(ewo),
+      q(0129) => q(fan),
+      q(0130) => q(fao),
+      q(0131) => q(fat),
+      q(0132) => q(fij),
+      q(0133) => q(fil),
+      q(0134) => q(fin),
+      q(0135) => q(fiu),
+      q(0136) => q(fon),
+      q(0137) => q(fre),
+      q(0138) => q(frm),
+      q(0139) => q(fro),
+      q(0140) => q(frr),
+      q(0141) => q(frs),
+      q(0142) => q(fry),
+      q(0143) => q(ful),
+      q(0144) => q(fur),
+      q(0145) => q(gaa),
+      q(0146) => q(gay),
+      q(0147) => q(gba),
+      q(0148) => q(gem),
+      q(0149) => q(geo),
+      q(0150) => q(ger),
+      q(0151) => q(gez),
+      q(0152) => q(gil),
+      q(0153) => q(gla),
+      q(0154) => q(gle),
+      q(0155) => q(glg),
+      q(0156) => q(glv),
+      q(0157) => q(gmh),
+      q(0158) => q(goh),
+      q(0159) => q(gon),
+      q(0160) => q(gor),
+      q(0161) => q(got),
+      q(0162) => q(grb),
+      q(0163) => q(grc),
+      q(0164) => q(gre),
+      q(0165) => q(grn),
+      q(0166) => q(gsw),
+      q(0167) => q(guj),
+      q(0168) => q(gwi),
+      q(0169) => q(hai),
+      q(0170) => q(hat),
+      q(0171) => q(hau),
+      q(0172) => q(haw),
+      q(0173) => q(heb),
+      q(0174) => q(her),
+      q(0175) => q(hil),
+      q(0176) => q(him),
+      q(0177) => q(hin),
+      q(0178) => q(hit),
+      q(0179) => q(hmn),
+      q(0180) => q(hmo),
+      q(0181) => q(hrv),
+      q(0182) => q(hsb),
+      q(0183) => q(hun),
+      q(0184) => q(hup),
+      q(0185) => q(iba),
+      q(0186) => q(ibo),
+      q(0187) => q(ice),
+      q(0188) => q(ido),
+      q(0189) => q(iii),
+      q(0190) => q(ijo),
+      q(0191) => q(iku),
+      q(0192) => q(ile),
+      q(0193) => q(ilo),
+      q(0194) => q(ina),
+      q(0195) => q(inc),
+      q(0196) => q(ind),
+      q(0197) => q(ine),
+      q(0198) => q(inh),
+      q(0199) => q(ipk),
+      q(0200) => q(ira),
+      q(0201) => q(iro),
+      q(0202) => q(ita),
+      q(0203) => q(jav),
+      q(0204) => q(jbo),
+      q(0205) => q(jpn),
+      q(0206) => q(jpr),
+      q(0207) => q(jrb),
+      q(0208) => q(kaa),
+      q(0209) => q(kab),
+      q(0210) => q(kac),
+      q(0211) => q(kal),
+      q(0212) => q(kam),
+      q(0213) => q(kan),
+      q(0214) => q(kar),
+      q(0215) => q(kas),
+      q(0216) => q(kau),
+      q(0217) => q(kaw),
+      q(0218) => q(kaz),
+      q(0219) => q(kbd),
+      q(0220) => q(kha),
+      q(0221) => q(khi),
+      q(0222) => q(khm),
+      q(0223) => q(kho),
+      q(0224) => q(kik),
+      q(0225) => q(kin),
+      q(0226) => q(kir),
+      q(0227) => q(kmb),
+      q(0228) => q(kok),
+      q(0229) => q(kom),
+      q(0230) => q(kon),
+      q(0231) => q(kor),
+      q(0232) => q(kos),
+      q(0233) => q(kpe),
+      q(0234) => q(krc),
+      q(0235) => q(krl),
+      q(0236) => q(kro),
+      q(0237) => q(kru),
+      q(0238) => q(kua),
+      q(0239) => q(kum),
+      q(0240) => q(kur),
+      q(0241) => q(kut),
+      q(0242) => q(lad),
+      q(0243) => q(lah),
+      q(0244) => q(lam),
+      q(0245) => q(lao),
+      q(0246) => q(lat),
+      q(0247) => q(lav),
+      q(0248) => q(lez),
+      q(0249) => q(lim),
+      q(0250) => q(lin),
+      q(0251) => q(lit),
+      q(0252) => q(lol),
+      q(0253) => q(loz),
+      q(0254) => q(ltz),
+      q(0255) => q(lua),
+      q(0256) => q(lub),
+      q(0257) => q(lug),
+      q(0258) => q(lui),
+      q(0259) => q(lun),
+      q(0260) => q(luo),
+      q(0261) => q(lus),
+      q(0262) => q(mac),
+      q(0263) => q(mad),
+      q(0264) => q(mag),
+      q(0265) => q(mah),
+      q(0266) => q(mai),
+      q(0267) => q(mak),
+      q(0268) => q(mal),
+      q(0269) => q(man),
+      q(0270) => q(mao),
+      q(0271) => q(map),
+      q(0272) => q(mar),
+      q(0273) => q(mas),
+      q(0274) => q(may),
+      q(0275) => q(mdf),
+      q(0276) => q(mdr),
+      q(0277) => q(men),
+      q(0278) => q(mga),
+      q(0279) => q(mic),
+      q(0280) => q(min),
+      q(0281) => q(mis),
+      q(0282) => q(mkh),
+      q(0283) => q(mlg),
+      q(0284) => q(mlt),
+      q(0285) => q(mnc),
+      q(0286) => q(mni),
+      q(0287) => q(mno),
+      q(0288) => q(moh),
+      q(0289) => q(mon),
+      q(0290) => q(mos),
+      q(0291) => q(mul),
+      q(0292) => q(mun),
+      q(0293) => q(mus),
+      q(0294) => q(mwl),
+      q(0295) => q(mwr),
+      q(0296) => q(myn),
+      q(0297) => q(myv),
+      q(0298) => q(nah),
+      q(0299) => q(nai),
+      q(0300) => q(nap),
+      q(0301) => q(nau),
+      q(0302) => q(nav),
+      q(0303) => q(nbl),
+      q(0304) => q(nde),
+      q(0305) => q(ndo),
+      q(0306) => q(nds),
+      q(0307) => q(nep),
+      q(0308) => q(new),
+      q(0309) => q(nia),
+      q(0310) => q(nic),
+      q(0311) => q(niu),
+      q(0312) => q(nno),
+      q(0313) => q(nob),
+      q(0314) => q(nog),
+      q(0315) => q(non),
+      q(0316) => q(nor),
+      q(0317) => q(nqo),
+      q(0318) => q(nso),
+      q(0319) => q(nub),
+      q(0320) => q(nwc),
+      q(0321) => q(nya),
+      q(0322) => q(nym),
+      q(0323) => q(nyn),
+      q(0324) => q(nyo),
+      q(0325) => q(nzi),
+      q(0326) => q(oci),
+      q(0327) => q(oji),
+      q(0328) => q(ori),
+      q(0329) => q(orm),
+      q(0330) => q(osa),
+      q(0331) => q(oss),
+      q(0332) => q(ota),
+      q(0333) => q(oto),
+      q(0334) => q(paa),
+      q(0335) => q(pag),
+      q(0336) => q(pal),
+      q(0337) => q(pam),
+      q(0338) => q(pan),
+      q(0339) => q(pap),
+      q(0340) => q(pau),
+      q(0341) => q(peo),
+      q(0342) => q(per),
+      q(0343) => q(phi),
+      q(0344) => q(phn),
+      q(0345) => q(pli),
+      q(0346) => q(pol),
+      q(0347) => q(pon),
+      q(0348) => q(por),
+      q(0349) => q(pra),
+      q(0350) => q(pro),
+      q(0351) => q(pus),
+      q(0352) => q(qtz),
+      q(0353) => q(que),
+      q(0354) => q(raj),
+      q(0355) => q(rap),
+      q(0356) => q(rar),
+      q(0357) => q(roa),
+      q(0358) => q(roh),
+      q(0359) => q(rom),
+      q(0360) => q(rum),
+      q(0361) => q(run),
+      q(0362) => q(rup),
+      q(0363) => q(rus),
+      q(0364) => q(sad),
+      q(0365) => q(sag),
+      q(0366) => q(sah),
+      q(0367) => q(sai),
+      q(0368) => q(sal),
+      q(0369) => q(sam),
+      q(0370) => q(san),
+      q(0371) => q(sas),
+      q(0372) => q(sat),
+      q(0373) => q(scn),
+      q(0374) => q(sco),
+      q(0375) => q(sel),
+      q(0376) => q(sem),
+      q(0377) => q(sga),
+      q(0378) => q(sgn),
+      q(0379) => q(shn),
+      q(0380) => q(sid),
+      q(0381) => q(sin),
+      q(0382) => q(sio),
+      q(0383) => q(sit),
+      q(0384) => q(sla),
+      q(0385) => q(slo),
+      q(0386) => q(slv),
+      q(0387) => q(sma),
+      q(0388) => q(sme),
+      q(0389) => q(smi),
+      q(0390) => q(smj),
+      q(0391) => q(smn),
+      q(0392) => q(smo),
+      q(0393) => q(sms),
+      q(0394) => q(sna),
+      q(0395) => q(snd),
+      q(0396) => q(snk),
+      q(0397) => q(sog),
+      q(0398) => q(som),
+      q(0399) => q(son),
+      q(0400) => q(sot),
+      q(0401) => q(spa),
+      q(0402) => q(srd),
+      q(0403) => q(srn),
+      q(0404) => q(srp),
+      q(0405) => q(srr),
+      q(0406) => q(ssa),
+      q(0407) => q(ssw),
+      q(0408) => q(suk),
+      q(0409) => q(sun),
+      q(0410) => q(sus),
+      q(0411) => q(sux),
+      q(0412) => q(swa),
+      q(0413) => q(swe),
+      q(0414) => q(syc),
+      q(0415) => q(syr),
+      q(0416) => q(tah),
+      q(0417) => q(tai),
+      q(0418) => q(tam),
+      q(0419) => q(tat),
+      q(0420) => q(tel),
+      q(0421) => q(tem),
+      q(0422) => q(ter),
+      q(0423) => q(tet),
+      q(0424) => q(tgk),
+      q(0425) => q(tgl),
+      q(0426) => q(tha),
+      q(0427) => q(tib),
+      q(0428) => q(tig),
+      q(0429) => q(tir),
+      q(0430) => q(tiv),
+      q(0431) => q(tkl),
+      q(0432) => q(tlh),
+      q(0433) => q(tli),
+      q(0434) => q(tmh),
+      q(0435) => q(tog),
+      q(0436) => q(ton),
+      q(0437) => q(tpi),
+      q(0438) => q(tsi),
+      q(0439) => q(tsn),
+      q(0440) => q(tso),
+      q(0441) => q(tuk),
+      q(0442) => q(tum),
+      q(0443) => q(tup),
+      q(0444) => q(tur),
+      q(0445) => q(tut),
+      q(0446) => q(tvl),
+      q(0447) => q(twi),
+      q(0448) => q(tyv),
+      q(0449) => q(udm),
+      q(0450) => q(uga),
+      q(0451) => q(uig),
+      q(0452) => q(ukr),
+      q(0453) => q(umb),
+      q(0454) => q(und),
+      q(0455) => q(urd),
+      q(0456) => q(uzb),
+      q(0457) => q(vai),
+      q(0458) => q(ven),
+      q(0459) => q(vie),
+      q(0460) => q(vol),
+      q(0461) => q(vot),
+      q(0462) => q(wak),
+      q(0463) => q(wal),
+      q(0464) => q(war),
+      q(0465) => q(was),
+      q(0466) => q(wel),
+      q(0467) => q(wen),
+      q(0468) => q(wln),
+      q(0469) => q(wol),
+      q(0470) => q(xal),
+      q(0471) => q(xho),
+      q(0472) => q(yao),
+      q(0473) => q(yap),
+      q(0474) => q(yid),
+      q(0475) => q(yor),
+      q(0476) => q(ypk),
+      q(0477) => q(zap),
+      q(0478) => q(zbl),
+      q(0479) => q(zen),
+      q(0480) => q(zgh),
+      q(0481) => q(zha),
+      q(0482) => q(znd),
+      q(0483) => q(zul),
+      q(0484) => q(zun),
+      q(0485) => q(zxx),
+      q(0486) => q(zza),
+      q(0487) => q(aav),
+      q(0488) => q(alv),
+      q(0489) => q(aqa),
+      q(0490) => q(aql),
+      q(0491) => q(auf),
+      q(0492) => q(awd),
+      q(0493) => q(azc),
+      q(0494) => q(cba),
+      q(0495) => q(ccn),
+      q(0496) => q(ccs),
+      q(0497) => q(cdc),
+      q(0498) => q(cdd),
+      q(0499) => q(csu),
+      q(0500) => q(dmn),
+      q(0501) => q(egx),
+      q(0502) => q(esx),
+      q(0503) => q(euq),
+      q(0504) => q(fox),
+      q(0505) => q(gme),
+      q(0506) => q(gmq),
+      q(0507) => q(gmw),
+      q(0508) => q(grk),
+      q(0509) => q(hmx),
+      q(0510) => q(hok),
+      q(0511) => q(hyx),
+      q(0512) => q(iir),
+      q(0513) => q(itc),
+      q(0514) => q(jpx),
+      q(0515) => q(kdo),
+      q(0516) => q(ngf),
+      q(0517) => q(omq),
+      q(0518) => q(omv),
+      q(0519) => q(plf),
+      q(0520) => q(poz),
+      q(0521) => q(pqe),
+      q(0522) => q(pqw),
+      q(0523) => q(qwe),
+      q(0524) => q(sdv),
+      q(0525) => q(sqj),
+      q(0526) => q(syd),
+      q(0527) => q(tbq),
+      q(0528) => q(trk),
+      q(0529) => q(tuw),
+      q(0530) => q(urj),
+      q(0531) => q(xgn),
+      q(0532) => q(xnd),
+      q(0533) => q(zhx),
+      q(0534) => q(zle),
+      q(0535) => q(zls),
+      q(0536) => q(zlw),
+      q(0538) => q(aaa),
+      q(0539) => q(aab),
+      q(0540) => q(aac),
+      q(0541) => q(aad),
+      q(0542) => q(aae),
+      q(0543) => q(aaf),
+      q(0544) => q(aag),
+      q(0545) => q(aah),
+      q(0546) => q(aai),
+      q(0547) => q(aak),
+      q(0548) => q(aal),
+      q(0549) => q(aam),
+      q(0550) => q(aan),
+      q(0551) => q(aao),
+      q(0552) => q(aap),
+      q(0553) => q(aaq),
+      q(0554) => q(aas),
+      q(0555) => q(aat),
+      q(0556) => q(aau),
+      q(0557) => q(aaw),
+      q(0558) => q(aax),
+      q(0559) => q(aaz),
+      q(0560) => q(aba),
+      q(0561) => q(abb),
+      q(0562) => q(abc),
+      q(0563) => q(abd),
+      q(0564) => q(abe),
+      q(0565) => q(abf),
+      q(0566) => q(abg),
+      q(0567) => q(abh),
+      q(0568) => q(abi),
+      q(0569) => q(abj),
+      q(0570) => q(abl),
+      q(0571) => q(abm),
+      q(0572) => q(abn),
+      q(0573) => q(abo),
+      q(0574) => q(abp),
+      q(0575) => q(abq),
+      q(0576) => q(abr),
+      q(0577) => q(abs),
+      q(0578) => q(abt),
+      q(0579) => q(abu),
+      q(0580) => q(abv),
+      q(0581) => q(abw),
+      q(0582) => q(abx),
+      q(0583) => q(aby),
+      q(0584) => q(abz),
+      q(0585) => q(aca),
+      q(0586) => q(acb),
+      q(0587) => q(acd),
+      q(0588) => q(acf),
+      q(0589) => q(aci),
+      q(0590) => q(ack),
+      q(0591) => q(acl),
+      q(0592) => q(acm),
+      q(0593) => q(acn),
+      q(0594) => q(acp),
+      q(0595) => q(acq),
+      q(0596) => q(acr),
+      q(0597) => q(acs),
+      q(0598) => q(act),
+      q(0599) => q(acu),
+      q(0600) => q(acv),
+      q(0601) => q(acw),
+      q(0602) => q(acx),
+      q(0603) => q(acy),
+      q(0604) => q(acz),
+      q(0605) => q(adb),
+      q(0606) => q(add),
+      q(0607) => q(ade),
+      q(0608) => q(adf),
+      q(0609) => q(adg),
+      q(0610) => q(adh),
+      q(0611) => q(adi),
+      q(0612) => q(adj),
+      q(0613) => q(adl),
+      q(0614) => q(adn),
+      q(0615) => q(ado),
+      q(0616) => q(adp),
+      q(0617) => q(adq),
+      q(0618) => q(adr),
+      q(0619) => q(ads),
+      q(0620) => q(adt),
+      q(0621) => q(adu),
+      q(0622) => q(adw),
+      q(0623) => q(adx),
+      q(0624) => q(adz),
+      q(0625) => q(aea),
+      q(0626) => q(aeb),
+      q(0627) => q(aec),
+      q(0628) => q(aed),
+      q(0629) => q(aee),
+      q(0630) => q(aek),
+      q(0631) => q(ael),
+      q(0632) => q(aem),
+      q(0633) => q(aen),
+      q(0634) => q(aeq),
+      q(0635) => q(aer),
+      q(0636) => q(aes),
+      q(0637) => q(aeu),
+      q(0638) => q(aew),
+      q(0639) => q(aey),
+      q(0640) => q(aez),
+      q(0641) => q(afb),
+      q(0642) => q(afd),
+      q(0643) => q(afe),
+      q(0644) => q(afg),
+      q(0645) => q(afi),
+      q(0646) => q(afk),
+      q(0647) => q(afn),
+      q(0648) => q(afo),
+      q(0649) => q(afp),
+      q(0650) => q(afs),
+      q(0651) => q(aft),
+      q(0652) => q(afu),
+      q(0653) => q(afz),
+      q(0654) => q(aga),
+      q(0655) => q(agb),
+      q(0656) => q(agc),
+      q(0657) => q(agd),
+      q(0658) => q(age),
+      q(0659) => q(agf),
+      q(0660) => q(agg),
+      q(0661) => q(agh),
+      q(0662) => q(agi),
+      q(0663) => q(agj),
+      q(0664) => q(agk),
+      q(0665) => q(agl),
+      q(0666) => q(agm),
+      q(0667) => q(agn),
+      q(0668) => q(ago),
+      q(0669) => q(agq),
+      q(0670) => q(agr),
+      q(0671) => q(ags),
+      q(0672) => q(agt),
+      q(0673) => q(agu),
+      q(0674) => q(agv),
+      q(0675) => q(agw),
+      q(0676) => q(agx),
+      q(0677) => q(agy),
+      q(0678) => q(agz),
+      q(0679) => q(aha),
+      q(0680) => q(ahb),
+      q(0681) => q(ahg),
+      q(0682) => q(ahh),
+      q(0683) => q(ahi),
+      q(0684) => q(ahk),
+      q(0685) => q(ahl),
+      q(0686) => q(ahm),
+      q(0687) => q(ahn),
+      q(0688) => q(aho),
+      q(0689) => q(ahp),
+      q(0690) => q(ahr),
+      q(0691) => q(ahs),
+      q(0692) => q(aht),
+      q(0693) => q(aia),
+      q(0694) => q(aib),
+      q(0695) => q(aic),
+      q(0696) => q(aid),
+      q(0697) => q(aie),
+      q(0698) => q(aif),
+      q(0699) => q(aig),
+      q(0700) => q(aih),
+      q(0701) => q(aii),
+      q(0702) => q(aij),
+      q(0703) => q(aik),
+      q(0704) => q(ail),
+      q(0705) => q(aim),
+      q(0706) => q(aio),
+      q(0707) => q(aip),
+      q(0708) => q(aiq),
+      q(0709) => q(air),
+      q(0710) => q(ais),
+      q(0711) => q(ait),
+      q(0712) => q(aiw),
+      q(0713) => q(aix),
+      q(0714) => q(aiy),
+      q(0715) => q(aja),
+      q(0716) => q(ajg),
+      q(0717) => q(aji),
+      q(0718) => q(ajn),
+      q(0719) => q(ajp),
+      q(0720) => q(ajt),
+      q(0721) => q(aju),
+      q(0722) => q(ajw),
+      q(0723) => q(ajz),
+      q(0724) => q(akb),
+      q(0725) => q(akc),
+      q(0726) => q(akd),
+      q(0727) => q(ake),
+      q(0728) => q(akf),
+      q(0729) => q(akg),
+      q(0730) => q(akh),
+      q(0731) => q(aki),
+      q(0732) => q(akj),
+      q(0733) => q(akl),
+      q(0734) => q(akm),
+      q(0735) => q(ako),
+      q(0736) => q(akp),
+      q(0737) => q(akq),
+      q(0738) => q(akr),
+      q(0739) => q(aks),
+      q(0740) => q(akt),
+      q(0741) => q(aku),
+      q(0742) => q(akv),
+      q(0743) => q(akw),
+      q(0744) => q(akx),
+      q(0745) => q(aky),
+      q(0746) => q(akz),
+      q(0747) => q(ala),
+      q(0748) => q(alc),
+      q(0749) => q(ald),
+      q(0750) => q(alf),
+      q(0751) => q(alh),
+      q(0752) => q(ali),
+      q(0753) => q(alj),
+      q(0754) => q(alk),
+      q(0755) => q(all),
+      q(0756) => q(alm),
+      q(0757) => q(aln),
+      q(0758) => q(alo),
+      q(0759) => q(alp),
+      q(0760) => q(alq),
+      q(0761) => q(alr),
+      q(0762) => q(als),
+      q(0763) => q(alu),
+      q(0764) => q(alw),
+      q(0765) => q(alx),
+      q(0766) => q(aly),
+      q(0767) => q(alz),
+      q(0768) => q(ama),
+      q(0769) => q(amb),
+      q(0770) => q(amc),
+      q(0771) => q(ame),
+      q(0772) => q(amf),
+      q(0773) => q(amg),
+      q(0774) => q(ami),
+      q(0775) => q(amj),
+      q(0776) => q(amk),
+      q(0777) => q(aml),
+      q(0778) => q(amm),
+      q(0779) => q(amn),
+      q(0780) => q(amo),
+      q(0781) => q(amp),
+      q(0782) => q(amq),
+      q(0783) => q(amr),
+      q(0784) => q(ams),
+      q(0785) => q(amt),
+      q(0786) => q(amu),
+      q(0787) => q(amv),
+      q(0788) => q(amw),
+      q(0789) => q(amx),
+      q(0790) => q(amy),
+      q(0791) => q(amz),
+      q(0792) => q(ana),
+      q(0793) => q(anb),
+      q(0794) => q(anc),
+      q(0795) => q(and),
+      q(0796) => q(ane),
+      q(0797) => q(anf),
+      q(0798) => q(anh),
+      q(0799) => q(ani),
+      q(0800) => q(anj),
+      q(0801) => q(ank),
+      q(0802) => q(anl),
+      q(0803) => q(anm),
+      q(0804) => q(ann),
+      q(0805) => q(ano),
+      q(0806) => q(anq),
+      q(0807) => q(anr),
+      q(0808) => q(ans),
+      q(0809) => q(ant),
+      q(0810) => q(anu),
+      q(0811) => q(anv),
+      q(0812) => q(anw),
+      q(0813) => q(anx),
+      q(0814) => q(any),
+      q(0815) => q(anz),
+      q(0816) => q(aoa),
+      q(0817) => q(aob),
+      q(0818) => q(aoc),
+      q(0819) => q(aod),
+      q(0820) => q(aoe),
+      q(0821) => q(aof),
+      q(0822) => q(aog),
+      q(0823) => q(aoh),
+      q(0824) => q(aoi),
+      q(0825) => q(aoj),
+      q(0826) => q(aok),
+      q(0827) => q(aol),
+      q(0828) => q(aom),
+      q(0829) => q(aon),
+      q(0830) => q(aor),
+      q(0831) => q(aos),
+      q(0832) => q(aot),
+      q(0833) => q(aou),
+      q(0834) => q(aox),
+      q(0835) => q(aoz),
+      q(0836) => q(apb),
+      q(0837) => q(apc),
+      q(0838) => q(apd),
+      q(0839) => q(ape),
+      q(0840) => q(apf),
+      q(0841) => q(apg),
+      q(0842) => q(aph),
+      q(0843) => q(api),
+      q(0844) => q(apj),
+      q(0845) => q(apk),
+      q(0846) => q(apl),
+      q(0847) => q(apm),
+      q(0848) => q(apn),
+      q(0849) => q(apo),
+      q(0850) => q(app),
+      q(0851) => q(apq),
+      q(0852) => q(apr),
+      q(0853) => q(aps),
+      q(0854) => q(apt),
+      q(0855) => q(apu),
+      q(0856) => q(apv),
+      q(0857) => q(apw),
+      q(0858) => q(apx),
+      q(0859) => q(apy),
+      q(0860) => q(apz),
+      q(0861) => q(aqc),
+      q(0862) => q(aqd),
+      q(0863) => q(aqg),
+      q(0864) => q(aqm),
+      q(0865) => q(aqn),
+      q(0866) => q(aqp),
+      q(0867) => q(aqr),
+      q(0868) => q(aqz),
+      q(0869) => q(arb),
+      q(0870) => q(ard),
+      q(0871) => q(are),
+      q(0872) => q(arh),
+      q(0873) => q(ari),
+      q(0874) => q(arj),
+      q(0875) => q(ark),
+      q(0876) => q(arl),
+      q(0877) => q(aro),
+      q(0878) => q(arq),
+      q(0879) => q(arr),
+      q(0880) => q(ars),
+      q(0881) => q(aru),
+      q(0882) => q(arv),
+      q(0883) => q(arx),
+      q(0884) => q(ary),
+      q(0885) => q(arz),
+      q(0886) => q(asa),
+      q(0887) => q(asb),
+      q(0888) => q(asc),
+      q(0889) => q(asd),
+      q(0890) => q(ase),
+      q(0891) => q(asf),
+      q(0892) => q(asg),
+      q(0893) => q(ash),
+      q(0894) => q(asi),
+      q(0895) => q(asj),
+      q(0896) => q(ask),
+      q(0897) => q(asl),
+      q(0898) => q(asn),
+      q(0899) => q(aso),
+      q(0900) => q(asp),
+      q(0901) => q(asq),
+      q(0902) => q(asr),
+      q(0903) => q(ass),
+      q(0904) => q(asu),
+      q(0905) => q(asv),
+      q(0906) => q(asw),
+      q(0907) => q(asx),
+      q(0908) => q(asy),
+      q(0909) => q(asz),
+      q(0910) => q(ata),
+      q(0911) => q(atb),
+      q(0912) => q(atc),
+      q(0913) => q(atd),
+      q(0914) => q(ate),
+      q(0915) => q(atg),
+      q(0916) => q(ati),
+      q(0917) => q(atj),
+      q(0918) => q(atk),
+      q(0919) => q(atl),
+      q(0920) => q(atm),
+      q(0921) => q(atn),
+      q(0922) => q(ato),
+      q(0923) => q(atp),
+      q(0924) => q(atq),
+      q(0925) => q(atr),
+      q(0926) => q(ats),
+      q(0927) => q(att),
+      q(0928) => q(atu),
+      q(0929) => q(atv),
+      q(0930) => q(atw),
+      q(0931) => q(atx),
+      q(0932) => q(aty),
+      q(0933) => q(atz),
+      q(0934) => q(aua),
+      q(0935) => q(aub),
+      q(0936) => q(auc),
+      q(0937) => q(aud),
+      q(0938) => q(aue),
+      q(0939) => q(aug),
+      q(0940) => q(auh),
+      q(0941) => q(aui),
+      q(0942) => q(auj),
+      q(0943) => q(auk),
+      q(0944) => q(aul),
+      q(0945) => q(aum),
+      q(0946) => q(aun),
+      q(0947) => q(auo),
+      q(0948) => q(aup),
+      q(0949) => q(auq),
+      q(0950) => q(aur),
+      q(0951) => q(aut),
+      q(0952) => q(auu),
+      q(0953) => q(auw),
+      q(0954) => q(aux),
+      q(0955) => q(auy),
+      q(0956) => q(auz),
+      q(0957) => q(avb),
+      q(0958) => q(avd),
+      q(0959) => q(avi),
+      q(0960) => q(avk),
+      q(0961) => q(avl),
+      q(0962) => q(avm),
+      q(0963) => q(avn),
+      q(0964) => q(avo),
+      q(0965) => q(avs),
+      q(0966) => q(avt),
+      q(0967) => q(avu),
+      q(0968) => q(avv),
+      q(0969) => q(awb),
+      q(0970) => q(awc),
+      q(0971) => q(awe),
+      q(0972) => q(awg),
+      q(0973) => q(awh),
+      q(0974) => q(awi),
+      q(0975) => q(awk),
+      q(0976) => q(awm),
+      q(0977) => q(awn),
+      q(0978) => q(awo),
+      q(0979) => q(awr),
+      q(0980) => q(aws),
+      q(0981) => q(awt),
+      q(0982) => q(awu),
+      q(0983) => q(awv),
+      q(0984) => q(aww),
+      q(0985) => q(awx),
+      q(0986) => q(awy),
+      q(0987) => q(axb),
+      q(0988) => q(axe),
+      q(0989) => q(axg),
+      q(0990) => q(axk),
+      q(0991) => q(axm),
+      q(0992) => q(axx),
+      q(0993) => q(aya),
+      q(0994) => q(ayb),
+      q(0995) => q(ayc),
+      q(0996) => q(ayd),
+      q(0997) => q(aye),
+      q(0998) => q(ayg),
+      q(0999) => q(ayh),
+      q(1000) => q(ayi),
+      q(1001) => q(ayk),
+      q(1002) => q(ayl),
+      q(1003) => q(ayn),
+      q(1004) => q(ayo),
+      q(1005) => q(ayp),
+      q(1006) => q(ayq),
+      q(1007) => q(ayr),
+      q(1008) => q(ays),
+      q(1009) => q(ayt),
+      q(1010) => q(ayu),
+      q(1011) => q(ayy),
+      q(1012) => q(ayz),
+      q(1013) => q(aza),
+      q(1014) => q(azb),
+      q(1015) => q(azd),
+      q(1016) => q(azg),
+      q(1017) => q(azj),
+      q(1018) => q(azm),
+      q(1019) => q(azn),
+      q(1020) => q(azo),
+      q(1021) => q(azt),
+      q(1022) => q(azz),
+      q(1023) => q(baa),
+      q(1024) => q(bab),
+      q(1025) => q(bac),
+      q(1026) => q(bae),
+      q(1027) => q(baf),
+      q(1028) => q(bag),
+      q(1029) => q(bah),
+      q(1030) => q(baj),
+      q(1031) => q(bao),
+      q(1032) => q(bap),
+      q(1033) => q(bar),
+      q(1034) => q(bau),
+      q(1035) => q(bav),
+      q(1036) => q(baw),
+      q(1037) => q(bax),
+      q(1038) => q(bay),
+      q(1039) => q(bba),
+      q(1040) => q(bbb),
+      q(1041) => q(bbc),
+      q(1042) => q(bbd),
+      q(1043) => q(bbe),
+      q(1044) => q(bbf),
+      q(1045) => q(bbg),
+      q(1046) => q(bbh),
+      q(1047) => q(bbi),
+      q(1048) => q(bbj),
+      q(1049) => q(bbk),
+      q(1050) => q(bbl),
+      q(1051) => q(bbm),
+      q(1052) => q(bbn),
+      q(1053) => q(bbo),
+      q(1054) => q(bbp),
+      q(1055) => q(bbq),
+      q(1056) => q(bbr),
+      q(1057) => q(bbs),
+      q(1058) => q(bbt),
+      q(1059) => q(bbu),
+      q(1060) => q(bbv),
+      q(1061) => q(bbw),
+      q(1062) => q(bbx),
+      q(1063) => q(bby),
+      q(1064) => q(bbz),
+      q(1065) => q(bca),
+      q(1066) => q(bcb),
+      q(1067) => q(bcc),
+      q(1068) => q(bcd),
+      q(1069) => q(bce),
+      q(1070) => q(bcf),
+      q(1071) => q(bcg),
+      q(1072) => q(bch),
+      q(1073) => q(bci),
+      q(1074) => q(bcj),
+      q(1075) => q(bck),
+      q(1076) => q(bcl),
+      q(1077) => q(bcm),
+      q(1078) => q(bcn),
+      q(1079) => q(bco),
+      q(1080) => q(bcp),
+      q(1081) => q(bcq),
+      q(1082) => q(bcr),
+      q(1083) => q(bcs),
+      q(1084) => q(bct),
+      q(1085) => q(bcu),
+      q(1086) => q(bcv),
+      q(1087) => q(bcw),
+      q(1088) => q(bcy),
+      q(1089) => q(bcz),
+      q(1090) => q(bda),
+      q(1091) => q(bdb),
+      q(1092) => q(bdc),
+      q(1093) => q(bdd),
+      q(1094) => q(bde),
+      q(1095) => q(bdf),
+      q(1096) => q(bdg),
+      q(1097) => q(bdh),
+      q(1098) => q(bdi),
+      q(1099) => q(bdj),
+      q(1100) => q(bdk),
+      q(1101) => q(bdl),
+      q(1102) => q(bdm),
+      q(1103) => q(bdn),
+      q(1104) => q(bdo),
+      q(1105) => q(bdp),
+      q(1106) => q(bdq),
+      q(1107) => q(bdr),
+      q(1108) => q(bds),
+      q(1109) => q(bdt),
+      q(1110) => q(bdu),
+      q(1111) => q(bdv),
+      q(1112) => q(bdw),
+      q(1113) => q(bdx),
+      q(1114) => q(bdy),
+      q(1115) => q(bdz),
+      q(1116) => q(bea),
+      q(1117) => q(beb),
+      q(1118) => q(bec),
+      q(1119) => q(bed),
+      q(1120) => q(bee),
+      q(1121) => q(bef),
+      q(1122) => q(beg),
+      q(1123) => q(beh),
+      q(1124) => q(bei),
+      q(1125) => q(bek),
+      q(1126) => q(beo),
+      q(1127) => q(bep),
+      q(1128) => q(beq),
+      q(1129) => q(bes),
+      q(1130) => q(bet),
+      q(1131) => q(beu),
+      q(1132) => q(bev),
+      q(1133) => q(bew),
+      q(1134) => q(bex),
+      q(1135) => q(bey),
+      q(1136) => q(bez),
+      q(1137) => q(mot),
+      q(1138) => q(bfb),
+      q(1139) => q(bfc),
+      q(1140) => q(bfd),
+      q(1141) => q(bfe),
+      q(1142) => q(bff),
+      q(1143) => q(bfg),
+      q(1144) => q(bfh),
+      q(1145) => q(bfi),
+      q(1146) => q(bfj),
+      q(1147) => q(bfk),
+      q(1148) => q(bfl),
+      q(1149) => q(bfm),
+      q(1150) => q(bfn),
+      q(1151) => q(bfo),
+      q(1152) => q(bfp),
+      q(1153) => q(bfq),
+      q(1154) => q(bfr),
+      q(1155) => q(bfs),
+      q(1156) => q(bft),
+      q(1157) => q(bfu),
+      q(1158) => q(bfw),
+      q(1159) => q(bfx),
+      q(1160) => q(bfy),
+      q(1161) => q(bfz),
+      q(1162) => q(bga),
+      q(1163) => q(bgb),
+      q(1164) => q(bgc),
+      q(1165) => q(bgd),
+      q(1166) => q(bge),
+      q(1167) => q(bgf),
+      q(1168) => q(bgg),
+      q(1169) => q(bgi),
+      q(1170) => q(bgj),
+      q(1171) => q(bgk),
+      q(1172) => q(bgl),
+      q(1173) => q(bgm),
+      q(1174) => q(bgn),
+      q(1175) => q(bgo),
+      q(1176) => q(bgp),
+      q(1177) => q(bgq),
+      q(1178) => q(bgr),
+      q(1179) => q(bgs),
+      q(1180) => q(bgt),
+      q(1181) => q(bgu),
+      q(1182) => q(bgv),
+      q(1183) => q(bgw),
+      q(1184) => q(bgx),
+      q(1185) => q(bgy),
+      q(1186) => q(bgz),
+      q(1187) => q(bha),
+      q(1188) => q(bhb),
+      q(1189) => q(bhc),
+      q(1190) => q(bhd),
+      q(1191) => q(bhe),
+      q(1192) => q(bhf),
+      q(1193) => q(bhg),
+      q(1194) => q(bhh),
+      q(1195) => q(bhi),
+      q(1196) => q(bhj),
+      q(1197) => q(bhl),
+      q(1198) => q(bhm),
+      q(1199) => q(bhn),
+      q(1200) => q(bhp),
+      q(1201) => q(bhq),
+      q(1202) => q(bhr),
+      q(1203) => q(bhs),
+      q(1204) => q(bht),
+      q(1205) => q(bhu),
+      q(1206) => q(bhv),
+      q(1207) => q(bhw),
+      q(1208) => q(bhx),
+      q(1209) => q(bhy),
+      q(1210) => q(bhz),
+      q(1211) => q(bia),
+      q(1212) => q(bib),
+      q(1213) => q(bic),
+      q(1214) => q(bid),
+      q(1215) => q(bie),
+      q(1216) => q(bif),
+      q(1217) => q(big),
+      q(1218) => q(bij),
+      q(1219) => q(bil),
+      q(1220) => q(bim),
+      q(1221) => q(bio),
+      q(1222) => q(bip),
+      q(1223) => q(biq),
+      q(1224) => q(bir),
+      q(1225) => q(bit),
+      q(1226) => q(biu),
+      q(1227) => q(biv),
+      q(1228) => q(biw),
+      q(1229) => q(bix),
+      q(1230) => q(biy),
+      q(1231) => q(biz),
+      q(1232) => q(bja),
+      q(1233) => q(bjb),
+      q(1234) => q(bjc),
+      q(1235) => q(bje),
+      q(1236) => q(bjf),
+      q(1237) => q(bjg),
+      q(1238) => q(bjh),
+      q(1239) => q(bji),
+      q(1240) => q(bjj),
+      q(1241) => q(bjk),
+      q(1242) => q(bjl),
+      q(1243) => q(bjm),
+      q(1244) => q(bjn),
+      q(1245) => q(bjo),
+      q(1246) => q(bjr),
+      q(1247) => q(bjs),
+      q(1248) => q(bjt),
+      q(1249) => q(bju),
+      q(1250) => q(bjv),
+      q(1251) => q(bjw),
+      q(1252) => q(bjx),
+      q(1253) => q(bjy),
+      q(1254) => q(bjz),
+      q(1255) => q(bka),
+      q(1256) => q(bkc),
+      q(1257) => q(bkd),
+      q(1258) => q(bkf),
+      q(1259) => q(bkg),
+      q(1260) => q(bkh),
+      q(1261) => q(bki),
+      q(1262) => q(bkj),
+      q(1263) => q(bkk),
+      q(1264) => q(bkl),
+      q(1265) => q(bkm),
+      q(1266) => q(bkn),
+      q(1267) => q(bko),
+      q(1268) => q(bkp),
+      q(1269) => q(bkq),
+      q(1270) => q(bkr),
+      q(1271) => q(bks),
+      q(1272) => q(bkt),
+      q(1273) => q(bku),
+      q(1274) => q(bkv),
+      q(1275) => q(bkw),
+      q(1276) => q(bkx),
+      q(1277) => q(bky),
+      q(1278) => q(bkz),
+      q(1279) => q(blb),
+      q(1280) => q(blc),
+      q(1281) => q(bld),
+      q(1282) => q(ble),
+      q(1283) => q(blf),
+      q(1284) => q(blg),
+      q(1285) => q(blh),
+      q(1286) => q(bli),
+      q(1287) => q(blj),
+      q(1288) => q(blk),
+      q(1289) => q(bll),
+      q(1290) => q(blm),
+      q(1291) => q(bln),
+      q(1292) => q(blo),
+      q(1293) => q(blp),
+      q(1294) => q(blq),
+      q(1295) => q(blr),
+      q(1296) => q(bls),
+      q(1297) => q(blt),
+      q(1298) => q(blv),
+      q(1299) => q(blw),
+      q(1300) => q(blx),
+      q(1301) => q(bly),
+      q(1302) => q(blz),
+      q(1303) => q(bma),
+      q(1304) => q(bmb),
+      q(1305) => q(bmc),
+      q(1306) => q(bmd),
+      q(1307) => q(bme),
+      q(1308) => q(bmf),
+      q(1309) => q(bmg),
+      q(1310) => q(bmh),
+      q(1311) => q(bmi),
+      q(1312) => q(bmj),
+      q(1313) => q(bmk),
+      q(1314) => q(bml),
+      q(1315) => q(bmm),
+      q(1316) => q(bmn),
+      q(1317) => q(bmo),
+      q(1318) => q(bmp),
+      q(1319) => q(bmq),
+      q(1320) => q(bmr),
+      q(1321) => q(bms),
+      q(1322) => q(bmt),
+      q(1323) => q(bmu),
+      q(1324) => q(bmv),
+      q(1325) => q(bmw),
+      q(1326) => q(bmx),
+      q(1327) => q(bmy),
+      q(1328) => q(bmz),
+      q(1329) => q(bna),
+      q(1330) => q(bnb),
+      q(1331) => q(bnc),
+      q(1332) => q(bnd),
+      q(1333) => q(bne),
+      q(1334) => q(bnf),
+      q(1335) => q(bng),
+      q(1336) => q(bni),
+      q(1337) => q(bnj),
+      q(1338) => q(bnk),
+      q(1339) => q(bnl),
+      q(1340) => q(bnm),
+      q(1341) => q(bnn),
+      q(1342) => q(bno),
+      q(1343) => q(bnp),
+      q(1344) => q(bnq),
+      q(1345) => q(bnr),
+      q(1346) => q(bns),
+      q(1347) => q(bnu),
+      q(1348) => q(bnv),
+      q(1349) => q(bnw),
+      q(1350) => q(bnx),
+      q(1351) => q(bny),
+      q(1352) => q(bnz),
+      q(1353) => q(boa),
+      q(1354) => q(bob),
+      q(1355) => q(boe),
+      q(1356) => q(bof),
+      q(1357) => q(bog),
+      q(1358) => q(boh),
+      q(1359) => q(boi),
+      q(1360) => q(boj),
+      q(1361) => q(bok),
+      q(1362) => q(bol),
+      q(1363) => q(bom),
+      q(1364) => q(bon),
+      q(1365) => q(boo),
+      q(1366) => q(bop),
+      q(1367) => q(boq),
+      q(1368) => q(bor),
+      q(1369) => q(bot),
+      q(1370) => q(bou),
+      q(1371) => q(bov),
+      q(1372) => q(bow),
+      q(1373) => q(box),
+      q(1374) => q(boy),
+      q(1375) => q(boz),
+      q(1376) => q(bpa),
+      q(1377) => q(bpb),
+      q(1378) => q(bpd),
+      q(1379) => q(bpg),
+      q(1380) => q(bph),
+      q(1381) => q(bpi),
+      q(1382) => q(bpj),
+      q(1383) => q(bpk),
+      q(1384) => q(bpl),
+      q(1385) => q(bpm),
+      q(1386) => q(bpn),
+      q(1387) => q(bpo),
+      q(1388) => q(bpp),
+      q(1389) => q(bpq),
+      q(1390) => q(bpr),
+      q(1391) => q(bps),
+      q(1392) => q(bpt),
+      q(1393) => q(bpu),
+      q(1394) => q(bpv),
+      q(1395) => q(bpw),
+      q(1396) => q(bpx),
+      q(1397) => q(bpy),
+      q(1398) => q(bpz),
+      q(1399) => q(bqa),
+      q(1400) => q(bqb),
+      q(1401) => q(bqc),
+      q(1402) => q(bqd),
+      q(1403) => q(bqf),
+      q(1404) => q(bqg),
+      q(1405) => q(bqh),
+      q(1406) => q(bqi),
+      q(1407) => q(bqj),
+      q(1408) => q(bqk),
+      q(1409) => q(bql),
+      q(1410) => q(bqm),
+      q(1411) => q(bqn),
+      q(1412) => q(bqo),
+      q(1413) => q(bqp),
+      q(1414) => q(bqq),
+      q(1415) => q(bqr),
+      q(1416) => q(bqs),
+      q(1417) => q(bqt),
+      q(1418) => q(bqu),
+      q(1419) => q(bqv),
+      q(1420) => q(bqw),
+      q(1421) => q(bqx),
+      q(1422) => q(bqy),
+      q(1423) => q(bqz),
+      q(1424) => q(brb),
+      q(1425) => q(brc),
+      q(1426) => q(brd),
+      q(1427) => q(brf),
+      q(1428) => q(brg),
+      q(1429) => q(brh),
+      q(1430) => q(bri),
+      q(1431) => q(brj),
+      q(1432) => q(brk),
+      q(1433) => q(brl),
+      q(1434) => q(brm),
+      q(1435) => q(brn),
+      q(1436) => q(bro),
+      q(1437) => q(brp),
+      q(1438) => q(brq),
+      q(1439) => q(brr),
+      q(1440) => q(brs),
+      q(1441) => q(brt),
+      q(1442) => q(bru),
+      q(1443) => q(brv),
+      q(1444) => q(brw),
+      q(1445) => q(brx),
+      q(1446) => q(bry),
+      q(1447) => q(brz),
+      q(1448) => q(bsa),
+      q(1449) => q(bsb),
+      q(1450) => q(bsc),
+      q(1451) => q(bse),
+      q(1452) => q(bsf),
+      q(1453) => q(bsg),
+      q(1454) => q(bsh),
+      q(1455) => q(bsi),
+      q(1456) => q(bsj),
+      q(1457) => q(bsk),
+      q(1458) => q(bsl),
+      q(1459) => q(bsm),
+      q(1460) => q(bsn),
+      q(1461) => q(bso),
+      q(1462) => q(bsp),
+      q(1463) => q(bsq),
+      q(1464) => q(bsr),
+      q(1465) => q(bss),
+      q(1466) => q(bst),
+      q(1467) => q(bsu),
+      q(1468) => q(bsv),
+      q(1469) => q(bsw),
+      q(1470) => q(bsx),
+      q(1471) => q(bsy),
+      q(1472) => q(bta),
+      q(1473) => q(btc),
+      q(1474) => q(btd),
+      q(1475) => q(bte),
+      q(1476) => q(btf),
+      q(1477) => q(btg),
+      q(1478) => q(bth),
+      q(1479) => q(bti),
+      q(1480) => q(btj),
+      q(1481) => q(btl),
+      q(1482) => q(btm),
+      q(1483) => q(btn),
+      q(1484) => q(bto),
+      q(1485) => q(btp),
+      q(1486) => q(btq),
+      q(1487) => q(btr),
+      q(1488) => q(bts),
+      q(1489) => q(btt),
+      q(1490) => q(btu),
+      q(1491) => q(btv),
+      q(1492) => q(btw),
+      q(1493) => q(btx),
+      q(1494) => q(bty),
+      q(1495) => q(btz),
+      q(1496) => q(bub),
+      q(1497) => q(buc),
+      q(1498) => q(bud),
+      q(1499) => q(bue),
+      q(1500) => q(buf),
+      q(1501) => q(buh),
+      q(1502) => q(bui),
+      q(1503) => q(buj),
+      q(1504) => q(buk),
+      q(1505) => q(bum),
+      q(1506) => q(bun),
+      q(1507) => q(buo),
+      q(1508) => q(bup),
+      q(1509) => q(buq),
+      q(1510) => q(bus),
+      q(1511) => q(but),
+      q(1512) => q(buu),
+      q(1513) => q(buv),
+      q(1514) => q(buw),
+      q(1515) => q(bux),
+      q(1516) => q(buy),
+      q(1517) => q(buz),
+      q(1518) => q(bva),
+      q(1519) => q(bvb),
+      q(1520) => q(bvc),
+      q(1521) => q(bvd),
+      q(1522) => q(bve),
+      q(1523) => q(bvf),
+      q(1524) => q(bvg),
+      q(1525) => q(bvh),
+      q(1526) => q(bvi),
+      q(1527) => q(bvj),
+      q(1528) => q(bvk),
+      q(1529) => q(bvl),
+      q(1530) => q(bvm),
+      q(1531) => q(bvn),
+      q(1532) => q(bvo),
+      q(1533) => q(bvq),
+      q(1534) => q(bvr),
+      q(1535) => q(bvt),
+      q(1536) => q(bvu),
+      q(1537) => q(bvv),
+      q(1538) => q(bvw),
+      q(1539) => q(bvx),
+      q(1540) => q(bvy),
+      q(1541) => q(bvz),
+      q(1542) => q(bwa),
+      q(1543) => q(bwb),
+      q(1544) => q(bwc),
+      q(1545) => q(bwd),
+      q(1546) => q(bwe),
+      q(1547) => q(bwf),
+      q(1548) => q(bwg),
+      q(1549) => q(bwh),
+      q(1550) => q(bwi),
+      q(1551) => q(bwj),
+      q(1552) => q(bwk),
+      q(1553) => q(bwl),
+      q(1554) => q(bwm),
+      q(1555) => q(bwn),
+      q(1556) => q(bwo),
+      q(1557) => q(bwp),
+      q(1558) => q(bwq),
+      q(1559) => q(bwr),
+      q(1560) => q(bws),
+      q(1561) => q(bwt),
+      q(1562) => q(bwu),
+      q(1563) => q(bww),
+      q(1564) => q(bwx),
+      q(1565) => q(bwy),
+      q(1566) => q(bwz),
+      q(1567) => q(bxa),
+      q(1568) => q(bxb),
+      q(1569) => q(bxc),
+      q(1570) => q(bxd),
+      q(1571) => q(bxe),
+      q(1572) => q(bxf),
+      q(1573) => q(bxg),
+      q(1574) => q(bxh),
+      q(1575) => q(bxi),
+      q(1576) => q(bxj),
+      q(1577) => q(bxk),
+      q(1578) => q(bxl),
+      q(1579) => q(bxm),
+      q(1580) => q(bxn),
+      q(1581) => q(bxo),
+      q(1582) => q(bxp),
+      q(1583) => q(bxq),
+      q(1584) => q(bxr),
+      q(1585) => q(bxs),
+      q(1586) => q(bxu),
+      q(1587) => q(bxv),
+      q(1588) => q(bxw),
+      q(1589) => q(bxx),
+      q(1590) => q(bxz),
+      q(1591) => q(bya),
+      q(1592) => q(byb),
+      q(1593) => q(byc),
+      q(1594) => q(byd),
+      q(1595) => q(bye),
+      q(1596) => q(byf),
+      q(1597) => q(byg),
+      q(1598) => q(byh),
+      q(1599) => q(byi),
+      q(1600) => q(byj),
+      q(1601) => q(byk),
+      q(1602) => q(byl),
+      q(1603) => q(bym),
+      q(1604) => q(byo),
+      q(1605) => q(byp),
+      q(1606) => q(byq),
+      q(1607) => q(byr),
+      q(1608) => q(bys),
+      q(1609) => q(byt),
+      q(1610) => q(byv),
+      q(1611) => q(byw),
+      q(1612) => q(byx),
+      q(1613) => q(byy),
+      q(1614) => q(byz),
+      q(1615) => q(bza),
+      q(1616) => q(bzb),
+      q(1617) => q(bzc),
+      q(1618) => q(bzd),
+      q(1619) => q(bze),
+      q(1620) => q(bzf),
+      q(1621) => q(bzg),
+      q(1622) => q(bzh),
+      q(1623) => q(bzi),
+      q(1624) => q(bzj),
+      q(1625) => q(bzk),
+      q(1626) => q(bzl),
+      q(1627) => q(bzm),
+      q(1628) => q(bzn),
+      q(1629) => q(bzo),
+      q(1630) => q(bzp),
+      q(1631) => q(bzq),
+      q(1632) => q(bzr),
+      q(1633) => q(bzs),
+      q(1634) => q(bzt),
+      q(1635) => q(bzu),
+      q(1636) => q(bzv),
+      q(1637) => q(bzw),
+      q(1638) => q(bzx),
+      q(1639) => q(bzy),
+      q(1640) => q(bzz),
+      q(1641) => q(caa),
+      q(1642) => q(cab),
+      q(1643) => q(cac),
+      q(1644) => q(cae),
+      q(1645) => q(caf),
+      q(1646) => q(cag),
+      q(1647) => q(cah),
+      q(1648) => q(caj),
+      q(1649) => q(cak),
+      q(1650) => q(cal),
+      q(1651) => q(cam),
+      q(1652) => q(can),
+      q(1653) => q(cao),
+      q(1654) => q(cap),
+      q(1655) => q(caq),
+      q(1656) => q(cas),
+      q(1657) => q(cav),
+      q(1658) => q(caw),
+      q(1659) => q(cax),
+      q(1660) => q(cay),
+      q(1661) => q(caz),
+      q(1662) => q(cbb),
+      q(1663) => q(cbc),
+      q(1664) => q(cbd),
+      q(1665) => q(cbe),
+      q(1666) => q(cbg),
+      q(1667) => q(cbh),
+      q(1668) => q(cbi),
+      q(1669) => q(cbj),
+      q(1670) => q(cbk),
+      q(1671) => q(cbl),
+      q(1672) => q(cbn),
+      q(1673) => q(cbo),
+      q(1674) => q(cbr),
+      q(1675) => q(cbs),
+      q(1676) => q(cbt),
+      q(1677) => q(cbu),
+      q(1678) => q(cbv),
+      q(1679) => q(cbw),
+      q(1680) => q(cby),
+      q(1681) => q(cca),
+      q(1682) => q(ccc),
+      q(1683) => q(ccd),
+      q(1684) => q(cce),
+      q(1685) => q(ccg),
+      q(1686) => q(cch),
+      q(1687) => q(ccj),
+      q(1688) => q(ccl),
+      q(1689) => q(ccm),
+      q(1690) => q(cco),
+      q(1691) => q(ccp),
+      q(1692) => q(ccr),
+      q(1693) => q(cda),
+      q(1694) => q(cde),
+      q(1695) => q(cdf),
+      q(1696) => q(cdg),
+      q(1697) => q(cdh),
+      q(1698) => q(cdi),
+      q(1699) => q(cdj),
+      q(1700) => q(cdm),
+      q(1701) => q(cdn),
+      q(1702) => q(cdo),
+      q(1703) => q(cdr),
+      q(1704) => q(cds),
+      q(1705) => q(cdy),
+      q(1706) => q(cdz),
+      q(1707) => q(cea),
+      q(1708) => q(ceg),
+      q(1709) => q(cek),
+      q(1710) => q(cen),
+      q(1711) => q(cet),
+      q(1712) => q(cfa),
+      q(1713) => q(cfd),
+      q(1714) => q(cfg),
+      q(1715) => q(cfm),
+      q(1716) => q(cga),
+      q(1717) => q(cgc),
+      q(1718) => q(cgg),
+      q(1719) => q(cgk),
+      q(1720) => q(chc),
+      q(1721) => q(chd),
+      q(1722) => q(chf),
+      q(1723) => q(chh),
+      q(1724) => q(chj),
+      q(1725) => q(chl),
+      q(1726) => q(chq),
+      q(1727) => q(cht),
+      q(1728) => q(chw),
+      q(1729) => q(chx),
+      q(1730) => q(chz),
+      q(1731) => q(cia),
+      q(1732) => q(cib),
+      q(1733) => q(cic),
+      q(1734) => q(cid),
+      q(1735) => q(cie),
+      q(1736) => q(cih),
+      q(1737) => q(cik),
+      q(1738) => q(cim),
+      q(1739) => q(cin),
+      q(1740) => q(cip),
+      q(1741) => q(cir),
+      q(1742) => q(ciw),
+      q(1743) => q(ciy),
+      q(1744) => q(cja),
+      q(1745) => q(cje),
+      q(1746) => q(cjh),
+      q(1747) => q(cji),
+      q(1748) => q(cjk),
+      q(1749) => q(cjm),
+      q(1750) => q(cjn),
+      q(1751) => q(cjo),
+      q(1752) => q(cjp),
+      q(1753) => q(cjs),
+      q(1754) => q(cjv),
+      q(1755) => q(cjy),
+      q(1756) => q(ckb),
+      q(1757) => q(ckh),
+      q(1758) => q(ckl),
+      q(1759) => q(cko),
+      q(1760) => q(ckq),
+      q(1761) => q(ckr),
+      q(1762) => q(cks),
+      q(1763) => q(ckt),
+      q(1764) => q(cku),
+      q(1765) => q(ckv),
+      q(1766) => q(ckx),
+      q(1767) => q(cky),
+      q(1768) => q(ckz),
+      q(1769) => q(cla),
+      q(1770) => q(clc),
+      q(1771) => q(cld),
+      q(1772) => q(cle),
+      q(1773) => q(clh),
+      q(1774) => q(cli),
+      q(1775) => q(clj),
+      q(1776) => q(clk),
+      q(1777) => q(cll),
+      q(1778) => q(clm),
+      q(1779) => q(clo),
+      q(1780) => q(clt),
+      q(1781) => q(clu),
+      q(1782) => q(clw),
+      q(1783) => q(cly),
+      q(1784) => q(cma),
+      q(1785) => q(cme),
+      q(1786) => q(cmg),
+      q(1787) => q(cmi),
+      q(1788) => q(cml),
+      q(1789) => q(cmm),
+      q(1790) => q(cmn),
+      q(1791) => q(cmo),
+      q(1792) => q(cmr),
+      q(1793) => q(cms),
+      q(1794) => q(cmt),
+      q(1795) => q(cna),
+      q(1796) => q(cnb),
+      q(1797) => q(cnc),
+      q(1798) => q(cng),
+      q(1799) => q(cnh),
+      q(1800) => q(cni),
+      q(1801) => q(cnk),
+      q(1802) => q(cnl),
+      q(1803) => q(cno),
+      q(1804) => q(cns),
+      q(1805) => q(cnt),
+      q(1806) => q(cnu),
+      q(1807) => q(cnw),
+      q(1808) => q(cnx),
+      q(1809) => q(coa),
+      q(1810) => q(cob),
+      q(1811) => q(coc),
+      q(1812) => q(cod),
+      q(1813) => q(coe),
+      q(1814) => q(cof),
+      q(1815) => q(cog),
+      q(1816) => q(coh),
+      q(1817) => q(coj),
+      q(1818) => q(cok),
+      q(1819) => q(col),
+      q(1820) => q(com),
+      q(1821) => q(con),
+      q(1822) => q(coo),
+      q(1823) => q(coq),
+      q(1824) => q(cot),
+      q(1825) => q(cou),
+      q(1826) => q(cov),
+      q(1827) => q(cow),
+      q(1828) => q(cox),
+      q(1829) => q(coy),
+      q(1830) => q(coz),
+      q(1831) => q(cpa),
+      q(1832) => q(cpb),
+      q(1833) => q(cpc),
+      q(1834) => q(cpg),
+      q(1835) => q(cpi),
+      q(1836) => q(cpn),
+      q(1837) => q(cps),
+      q(1838) => q(cpu),
+      q(1839) => q(cpx),
+      q(1840) => q(cpy),
+      q(1841) => q(cqd),
+      q(1842) => q(cqu),
+      q(1843) => q(cra),
+      q(1844) => q(crb),
+      q(1845) => q(crc),
+      q(1846) => q(crd),
+      q(1847) => q(crf),
+      q(1848) => q(crg),
+      q(1849) => q(cri),
+      q(1850) => q(crj),
+      q(1851) => q(crk),
+      q(1852) => q(crl),
+      q(1853) => q(crm),
+      q(1854) => q(crn),
+      q(1855) => q(cro),
+      q(1856) => q(crq),
+      q(1857) => q(crr),
+      q(1858) => q(crs),
+      q(1859) => q(crt),
+      q(1860) => q(crv),
+      q(1861) => q(crw),
+      q(1862) => q(crx),
+      q(1863) => q(cry),
+      q(1864) => q(crz),
+      q(1865) => q(csa),
+      q(1866) => q(csc),
+      q(1867) => q(csd),
+      q(1868) => q(cse),
+      q(1869) => q(csf),
+      q(1870) => q(csg),
+      q(1871) => q(csh),
+      q(1872) => q(csi),
+      q(1873) => q(csk),
+      q(1874) => q(csl),
+      q(1875) => q(csm),
+      q(1876) => q(csn),
+      q(1877) => q(cso),
+      q(1878) => q(csq),
+      q(1879) => q(csr),
+      q(1880) => q(css),
+      q(1881) => q(cst),
+      q(1882) => q(csv),
+      q(1883) => q(csw),
+      q(1884) => q(csy),
+      q(1885) => q(csz),
+      q(1886) => q(cta),
+      q(1887) => q(ctc),
+      q(1888) => q(ctd),
+      q(1889) => q(cte),
+      q(1890) => q(ctg),
+      q(1891) => q(cth),
+      q(1892) => q(ctl),
+      q(1893) => q(ctm),
+      q(1894) => q(ctn),
+      q(1895) => q(cto),
+      q(1896) => q(ctp),
+      q(1897) => q(cts),
+      q(1898) => q(ctt),
+      q(1899) => q(ctu),
+      q(1900) => q(ctz),
+      q(1901) => q(cua),
+      q(1902) => q(cub),
+      q(1903) => q(cuc),
+      q(1904) => q(cug),
+      q(1905) => q(cuh),
+      q(1906) => q(cui),
+      q(1907) => q(cuj),
+      q(1908) => q(cuk),
+      q(1909) => q(cul),
+      q(1910) => q(cum),
+      q(1911) => q(cuo),
+      q(1912) => q(cup),
+      q(1913) => q(cuq),
+      q(1914) => q(cur),
+      q(1915) => q(cut),
+      q(1916) => q(cuu),
+      q(1917) => q(cuv),
+      q(1918) => q(cuw),
+      q(1919) => q(cux),
+      q(1920) => q(cvg),
+      q(1921) => q(cvn),
+      q(1922) => q(cwa),
+      q(1923) => q(cwb),
+      q(1924) => q(cwd),
+      q(1925) => q(cwe),
+      q(1926) => q(cwg),
+      q(1927) => q(cwt),
+      q(1928) => q(cya),
+      q(1929) => q(cyb),
+      q(1930) => q(cyo),
+      q(1931) => q(czh),
+      q(1932) => q(czk),
+      q(1933) => q(czn),
+      q(1934) => q(czo),
+      q(1935) => q(czt),
+      q(1936) => q(daa),
+      q(1937) => q(dac),
+      q(1938) => q(dad),
+      q(1939) => q(dae),
+      q(1940) => q(daf),
+      q(1941) => q(dag),
+      q(1942) => q(dah),
+      q(1943) => q(dai),
+      q(1944) => q(daj),
+      q(1945) => q(dal),
+      q(1946) => q(dam),
+      q(1947) => q(dao),
+      q(1948) => q(daq),
+      q(1949) => q(das),
+      q(1950) => q(dau),
+      q(1951) => q(dav),
+      q(1952) => q(daw),
+      q(1953) => q(dax),
+      q(1954) => q(daz),
+      q(1955) => q(dba),
+      q(1956) => q(dbb),
+      q(1957) => q(dbd),
+      q(1958) => q(dbe),
+      q(1959) => q(dbf),
+      q(1960) => q(dbg),
+      q(1961) => q(dbi),
+      q(1962) => q(dbj),
+      q(1963) => q(dbl),
+      q(1964) => q(dbm),
+      q(1965) => q(dbn),
+      q(1966) => q(dbo),
+      q(1967) => q(dbp),
+      q(1968) => q(dbq),
+      q(1969) => q(dbr),
+      q(1970) => q(dbt),
+      q(1971) => q(dbu),
+      q(1972) => q(dbv),
+      q(1973) => q(dbw),
+      q(1974) => q(dby),
+      q(1975) => q(dcc),
+      q(1976) => q(dcr),
+      q(1977) => q(dda),
+      q(1978) => q(ddd),
+      q(1979) => q(dde),
+      q(1980) => q(ddg),
+      q(1981) => q(ddi),
+      q(1982) => q(ddj),
+      q(1983) => q(ddn),
+      q(1984) => q(ddo),
+      q(1985) => q(ddr),
+      q(1986) => q(dds),
+      q(1987) => q(ddw),
+      q(1988) => q(dec),
+      q(1989) => q(ded),
+      q(1990) => q(dee),
+      q(1991) => q(def),
+      q(1992) => q(deg),
+      q(1993) => q(deh),
+      q(1994) => q(dei),
+      q(1995) => q(dek),
+      q(1996) => q(dem),
+      q(1997) => q(dep),
+      q(1998) => q(deq),
+      q(1999) => q(der),
+      q(2000) => q(des),
+      q(2001) => q(dev),
+      q(2002) => q(dez),
+      q(2003) => q(dga),
+      q(2004) => q(dgb),
+      q(2005) => q(dgc),
+      q(2006) => q(dgd),
+      q(2007) => q(dge),
+      q(2008) => q(dgg),
+      q(2009) => q(dgh),
+      q(2010) => q(dgi),
+      q(2011) => q(dgk),
+      q(2012) => q(dgl),
+      q(2013) => q(dgn),
+      q(2014) => q(dgo),
+      q(2015) => q(dgs),
+      q(2016) => q(dgt),
+      q(2017) => q(dgu),
+      q(2018) => q(dgw),
+      q(2019) => q(dgx),
+      q(2020) => q(dgz),
+      q(2021) => q(dhd),
+      q(2022) => q(dhg),
+      q(2023) => q(dhi),
+      q(2024) => q(dhl),
+      q(2025) => q(dhm),
+      q(2026) => q(dhn),
+      q(2027) => q(dho),
+      q(2028) => q(dhr),
+      q(2029) => q(dhs),
+      q(2030) => q(dhu),
+      q(2031) => q(dhv),
+      q(2032) => q(dhw),
+      q(2033) => q(dia),
+      q(2034) => q(dib),
+      q(2035) => q(dic),
+      q(2036) => q(did),
+      q(2037) => q(dif),
+      q(2038) => q(dig),
+      q(2039) => q(dih),
+      q(2040) => q(dii),
+      q(2041) => q(dij),
+      q(2042) => q(dik),
+      q(2043) => q(dil),
+      q(2044) => q(dim),
+      q(2045) => q(dio),
+      q(2046) => q(dip),
+      q(2047) => q(diq),
+      q(2048) => q(dir),
+      q(2049) => q(dis),
+      q(2050) => q(dit),
+      q(2051) => q(diu),
+      q(2052) => q(diw),
+      q(2053) => q(dix),
+      q(2054) => q(diy),
+      q(2055) => q(diz),
+      q(2056) => q(dja),
+      q(2057) => q(djb),
+      q(2058) => q(djc),
+      q(2059) => q(djd),
+      q(2060) => q(dje),
+      q(2061) => q(djf),
+      q(2062) => q(dji),
+      q(2063) => q(djj),
+      q(2064) => q(djk),
+      q(2065) => q(djl),
+      q(2066) => q(djm),
+      q(2067) => q(djn),
+      q(2068) => q(djo),
+      q(2069) => q(djr),
+      q(2070) => q(dju),
+      q(2071) => q(djw),
+      q(2072) => q(dka),
+      q(2073) => q(dkk),
+      q(2074) => q(dkr),
+      q(2075) => q(dks),
+      q(2076) => q(dkx),
+      q(2077) => q(dlg),
+      q(2078) => q(dlm),
+      q(2079) => q(dln),
+      q(2080) => q(dma),
+      q(2081) => q(dmb),
+      q(2082) => q(dmc),
+      q(2083) => q(dmd),
+      q(2084) => q(dme),
+      q(2085) => q(dmg),
+      q(2086) => q(dmk),
+      q(2087) => q(dml),
+      q(2088) => q(dmm),
+      q(2089) => q(dmo),
+      q(2090) => q(dmr),
+      q(2091) => q(dms),
+      q(2092) => q(dmu),
+      q(2093) => q(dmv),
+      q(2094) => q(dmx),
+      q(2095) => q(dmy),
+      q(2096) => q(dna),
+      q(2097) => q(dnd),
+      q(2098) => q(dne),
+      q(2099) => q(dng),
+      q(2100) => q(dni),
+      q(2101) => q(dnk),
+      q(2102) => q(dnn),
+      q(2103) => q(dnr),
+      q(2104) => q(dnt),
+      q(2105) => q(dnu),
+      q(2106) => q(dnv),
+      q(2107) => q(dnw),
+      q(2108) => q(dny),
+      q(2109) => q(doa),
+      q(2110) => q(dob),
+      q(2111) => q(doc),
+      q(2112) => q(doe),
+      q(2113) => q(dof),
+      q(2114) => q(doh),
+      q(2115) => q(dok),
+      q(2116) => q(dol),
+      q(2117) => q(don),
+      q(2118) => q(doo),
+      q(2119) => q(dop),
+      q(2120) => q(doq),
+      q(2121) => q(dor),
+      q(2122) => q(dos),
+      q(2123) => q(dot),
+      q(2124) => q(dov),
+      q(2125) => q(dow),
+      q(2126) => q(dox),
+      q(2127) => q(doy),
+      q(2128) => q(doz),
+      q(2129) => q(dpp),
+      q(2130) => q(drb),
+      q(2131) => q(drc),
+      q(2132) => q(drd),
+      q(2133) => q(dre),
+      q(2134) => q(drg),
+      q(2135) => q(dri),
+      q(2136) => q(drl),
+      q(2137) => q(drn),
+      q(2138) => q(dro),
+      q(2139) => q(drq),
+      q(2140) => q(drr),
+      q(2141) => q(drs),
+      q(2142) => q(drt),
+      q(2143) => q(dru),
+      q(2144) => q(dry),
+      q(2145) => q(dse),
+      q(2146) => q(dsh),
+      q(2147) => q(dsi),
+      q(2148) => q(dsl),
+      q(2149) => q(dsn),
+      q(2150) => q(dso),
+      q(2151) => q(dsq),
+      q(2152) => q(dta),
+      q(2153) => q(dtb),
+      q(2154) => q(dtd),
+      q(2155) => q(dth),
+      q(2156) => q(dti),
+      q(2157) => q(dtk),
+      q(2158) => q(dtm),
+      q(2159) => q(dto),
+      q(2160) => q(dtp),
+      q(2161) => q(dtr),
+      q(2162) => q(dts),
+      q(2163) => q(dtt),
+      q(2164) => q(dtu),
+      q(2165) => q(dty),
+      q(2166) => q(dub),
+      q(2167) => q(duc),
+      q(2168) => q(dud),
+      q(2169) => q(due),
+      q(2170) => q(duf),
+      q(2171) => q(dug),
+      q(2172) => q(duh),
+      q(2173) => q(dui),
+      q(2174) => q(duj),
+      q(2175) => q(duk),
+      q(2176) => q(dul),
+      q(2177) => q(dun),
+      q(2178) => q(duo),
+      q(2179) => q(dup),
+      q(2180) => q(duq),
+      q(2181) => q(dur),
+      q(2182) => q(dus),
+      q(2183) => q(duu),
+      q(2184) => q(duv),
+      q(2185) => q(duw),
+      q(2186) => q(dux),
+      q(2187) => q(duy),
+      q(2188) => q(duz),
+      q(2189) => q(dva),
+      q(2190) => q(dwa),
+      q(2191) => q(dwr),
+      q(2192) => q(dws),
+      q(2193) => q(dww),
+      q(2194) => q(dya),
+      q(2195) => q(dyb),
+      q(2196) => q(dyd),
+      q(2197) => q(dyg),
+      q(2198) => q(dyi),
+      q(2199) => q(dym),
+      q(2200) => q(dyn),
+      q(2201) => q(dyo),
+      q(2202) => q(dyy),
+      q(2203) => q(dza),
+      q(2204) => q(dzd),
+      q(2205) => q(dzg),
+      q(2206) => q(dzl),
+      q(2207) => q(dzn),
+      q(2208) => q(ebg),
+      q(2209) => q(ebk),
+      q(2210) => q(ebo),
+      q(2211) => q(ebr),
+      q(2212) => q(ebu),
+      q(2213) => q(ecr),
+      q(2214) => q(ecs),
+      q(2215) => q(ecy),
+      q(2216) => q(eee),
+      q(2217) => q(efa),
+      q(2218) => q(efe),
+      q(2219) => q(ega),
+      q(2220) => q(egl),
+      q(2221) => q(ego),
+      q(2222) => q(ehu),
+      q(2223) => q(eip),
+      q(2224) => q(eit),
+      q(2225) => q(eiv),
+      q(2226) => q(eja),
+      q(2227) => q(eke),
+      q(2228) => q(ekg),
+      q(2229) => q(eki),
+      q(2230) => q(ekk),
+      q(2231) => q(ekl),
+      q(2232) => q(ekm),
+      q(2233) => q(eko),
+      q(2234) => q(ekp),
+      q(2235) => q(ekr),
+      q(2236) => q(eky),
+      q(2237) => q(ele),
+      q(2238) => q(elh),
+      q(2239) => q(eli),
+      q(2240) => q(elk),
+      q(2241) => q(elm),
+      q(2242) => q(elo),
+      q(2243) => q(elu),
+      q(2244) => q(ema),
+      q(2245) => q(emb),
+      q(2246) => q(eme),
+      q(2247) => q(emg),
+      q(2248) => q(emi),
+      q(2249) => q(emk),
+      q(2250) => q(emm),
+      q(2251) => q(emn),
+      q(2252) => q(emo),
+      q(2253) => q(emp),
+      q(2254) => q(ems),
+      q(2255) => q(emu),
+      q(2256) => q(emw),
+      q(2257) => q(emx),
+      q(2258) => q(emy),
+      q(2259) => q(ena),
+      q(2260) => q(enb),
+      q(2261) => q(enc),
+      q(2262) => q(end),
+      q(2263) => q(enf),
+      q(2264) => q(enh),
+      q(2265) => q(enn),
+      q(2266) => q(eno),
+      q(2267) => q(enq),
+      q(2268) => q(enr),
+      q(2269) => q(enu),
+      q(2270) => q(env),
+      q(2271) => q(enw),
+      q(2272) => q(eot),
+      q(2273) => q(epi),
+      q(2274) => q(era),
+      q(2275) => q(erg),
+      q(2276) => q(erh),
+      q(2277) => q(eri),
+      q(2278) => q(erk),
+      q(2279) => q(ero),
+      q(2280) => q(err),
+      q(2281) => q(ers),
+      q(2282) => q(ert),
+      q(2283) => q(erw),
+      q(2284) => q(ese),
+      q(2285) => q(esh),
+      q(2286) => q(esi),
+      q(2287) => q(esk),
+      q(2288) => q(esl),
+      q(2289) => q(esm),
+      q(2290) => q(esn),
+      q(2291) => q(eso),
+      q(2292) => q(esq),
+      q(2293) => q(ess),
+      q(2294) => q(esu),
+      q(2295) => q(etb),
+      q(2296) => q(etc),
+      q(2297) => q(eth),
+      q(2298) => q(etn),
+      q(2299) => q(eto),
+      q(2300) => q(etr),
+      q(2301) => q(ets),
+      q(2302) => q(ett),
+      q(2303) => q(etu),
+      q(2304) => q(etx),
+      q(2305) => q(etz),
+      q(2306) => q(eve),
+      q(2307) => q(evh),
+      q(2308) => q(evn),
+      q(2309) => q(ext),
+      q(2310) => q(eya),
+      q(2311) => q(eyo),
+      q(2312) => q(eze),
+      q(2313) => q(faa),
+      q(2314) => q(fab),
+      q(2315) => q(fad),
+      q(2316) => q(faf),
+      q(2317) => q(fag),
+      q(2318) => q(fah),
+      q(2319) => q(fai),
+      q(2320) => q(faj),
+      q(2321) => q(fak),
+      q(2322) => q(fal),
+      q(2323) => q(fam),
+      q(2324) => q(fap),
+      q(2325) => q(far),
+      q(2326) => q(fau),
+      q(2327) => q(fax),
+      q(2328) => q(fay),
+      q(2329) => q(faz),
+      q(2330) => q(fbl),
+      q(2331) => q(fcs),
+      q(2332) => q(fer),
+      q(2333) => q(ffi),
+      q(2334) => q(ffm),
+      q(2335) => q(fgr),
+      q(2336) => q(fia),
+      q(2337) => q(fie),
+      q(2338) => q(fip),
+      q(2339) => q(fir),
+      q(2340) => q(fit),
+      q(2341) => q(fiw),
+      q(2342) => q(fkk),
+      q(2343) => q(fkv),
+      q(2344) => q(fla),
+      q(2345) => q(flh),
+      q(2346) => q(fli),
+      q(2347) => q(fll),
+      q(2348) => q(fln),
+      q(2349) => q(flr),
+      q(2350) => q(fly),
+      q(2351) => q(fmp),
+      q(2352) => q(fmu),
+      q(2353) => q(fng),
+      q(2354) => q(fni),
+      q(2355) => q(fod),
+      q(2356) => q(foi),
+      q(2357) => q(fom),
+      q(2358) => q(for),
+      q(2359) => q(fos),
+      q(2360) => q(fpe),
+      q(2361) => q(fqs),
+      q(2362) => q(frc),
+      q(2363) => q(frd),
+      q(2364) => q(frk),
+      q(2365) => q(frp),
+      q(2366) => q(frq),
+      q(2367) => q(frt),
+      q(2368) => q(fse),
+      q(2369) => q(fsl),
+      q(2370) => q(fss),
+      q(2371) => q(fub),
+      q(2372) => q(fuc),
+      q(2373) => q(fud),
+      q(2374) => q(fue),
+      q(2375) => q(fuf),
+      q(2376) => q(fuh),
+      q(2377) => q(fui),
+      q(2378) => q(fuj),
+      q(2379) => q(fum),
+      q(2380) => q(fun),
+      q(2381) => q(fuq),
+      q(2382) => q(fut),
+      q(2383) => q(fuu),
+      q(2384) => q(fuv),
+      q(2385) => q(fuy),
+      q(2386) => q(fvr),
+      q(2387) => q(fwa),
+      q(2388) => q(fwe),
+      q(2389) => q(gab),
+      q(2390) => q(gac),
+      q(2391) => q(gad),
+      q(2392) => q(gae),
+      q(2393) => q(gaf),
+      q(2394) => q(gag),
+      q(2395) => q(gah),
+      q(2396) => q(gai),
+      q(2397) => q(gaj),
+      q(2398) => q(gak),
+      q(2399) => q(gal),
+      q(2400) => q(gam),
+      q(2401) => q(gan),
+      q(2402) => q(gao),
+      q(2403) => q(gap),
+      q(2404) => q(gaq),
+      q(2405) => q(gar),
+      q(2406) => q(gas),
+      q(2407) => q(gat),
+      q(2408) => q(gau),
+      q(2409) => q(gaw),
+      q(2410) => q(gax),
+      q(2411) => q(gaz),
+      q(2412) => q(gbb),
+      q(2413) => q(gbd),
+      q(2414) => q(gbe),
+      q(2415) => q(gbf),
+      q(2416) => q(gbg),
+      q(2417) => q(gbh),
+      q(2418) => q(gbi),
+      q(2419) => q(gbj),
+      q(2420) => q(gbk),
+      q(2421) => q(gbl),
+      q(2422) => q(gbm),
+      q(2423) => q(gbn),
+      q(2424) => q(gbo),
+      q(2425) => q(gbp),
+      q(2426) => q(gbq),
+      q(2427) => q(gbr),
+      q(2428) => q(gbs),
+      q(2429) => q(gbu),
+      q(2430) => q(gbv),
+      q(2431) => q(gbx),
+      q(2432) => q(gby),
+      q(2433) => q(gbz),
+      q(2434) => q(gcc),
+      q(2435) => q(gcd),
+      q(2436) => q(gce),
+      q(2437) => q(gcf),
+      q(2438) => q(gcl),
+      q(2439) => q(gcn),
+      q(2440) => q(gcr),
+      q(2441) => q(gct),
+      q(2442) => q(gda),
+      q(2443) => q(gdb),
+      q(2444) => q(gdc),
+      q(2445) => q(gdd),
+      q(2446) => q(gde),
+      q(2447) => q(gdf),
+      q(2448) => q(gdg),
+      q(2449) => q(gdh),
+      q(2450) => q(gdi),
+      q(2451) => q(gdj),
+      q(2452) => q(gdk),
+      q(2453) => q(gdl),
+      q(2454) => q(gdm),
+      q(2455) => q(gdn),
+      q(2456) => q(gdo),
+      q(2457) => q(gdq),
+      q(2458) => q(gdr),
+      q(2459) => q(gds),
+      q(2460) => q(gdu),
+      q(2461) => q(gdx),
+      q(2462) => q(gea),
+      q(2463) => q(geb),
+      q(2464) => q(gec),
+      q(2465) => q(ged),
+      q(2466) => q(geg),
+      q(2467) => q(geh),
+      q(2468) => q(gei),
+      q(2469) => q(gej),
+      q(2470) => q(gek),
+      q(2471) => q(gel),
+      q(2472) => q(geq),
+      q(2473) => q(ges),
+      q(2474) => q(gew),
+      q(2475) => q(gex),
+      q(2476) => q(gey),
+      q(2477) => q(gfk),
+      q(2478) => q(gft),
+      q(2479) => q(gfx),
+      q(2480) => q(gga),
+      q(2481) => q(ggb),
+      q(2482) => q(ggd),
+      q(2483) => q(gge),
+      q(2484) => q(ggg),
+      q(2485) => q(ggk),
+      q(2486) => q(ggl),
+      q(2487) => q(ggn),
+      q(2488) => q(ggo),
+      q(2489) => q(ggr),
+      q(2490) => q(ggt),
+      q(2491) => q(ggu),
+      q(2492) => q(ggw),
+      q(2493) => q(gha),
+      q(2494) => q(ghc),
+      q(2495) => q(ghe),
+      q(2496) => q(ghh),
+      q(2497) => q(ghk),
+      q(2498) => q(ghl),
+      q(2499) => q(ghn),
+      q(2500) => q(gho),
+      q(2501) => q(ghr),
+      q(2502) => q(ghs),
+      q(2503) => q(ght),
+      q(2504) => q(gia),
+      q(2505) => q(gib),
+      q(2506) => q(gic),
+      q(2507) => q(gid),
+      q(2508) => q(gig),
+      q(2509) => q(gim),
+      q(2510) => q(gin),
+      q(2511) => q(gip),
+      q(2512) => q(giq),
+      q(2513) => q(gir),
+      q(2514) => q(gis),
+      q(2515) => q(git),
+      q(2516) => q(giu),
+      q(2517) => q(giw),
+      q(2518) => q(gix),
+      q(2519) => q(giy),
+      q(2520) => q(giz),
+      q(2521) => q(gji),
+      q(2522) => q(gjk),
+      q(2523) => q(gjn),
+      q(2524) => q(gju),
+      q(2525) => q(gka),
+      q(2526) => q(gke),
+      q(2527) => q(gkn),
+      q(2528) => q(gko),
+      q(2529) => q(gkp),
+      q(2530) => q(glc),
+      q(2531) => q(gld),
+      q(2532) => q(glh),
+      q(2533) => q(gli),
+      q(2534) => q(glj),
+      q(2535) => q(glk),
+      q(2536) => q(glo),
+      q(2537) => q(glr),
+      q(2538) => q(glu),
+      q(2539) => q(glw),
+      q(2540) => q(gly),
+      q(2541) => q(gma),
+      q(2542) => q(gmb),
+      q(2543) => q(gmd),
+      q(2544) => q(gml),
+      q(2545) => q(gmm),
+      q(2546) => q(gmn),
+      q(2547) => q(gmu),
+      q(2548) => q(gmv),
+      q(2549) => q(gmx),
+      q(2550) => q(gmy),
+      q(2551) => q(gna),
+      q(2552) => q(gnb),
+      q(2553) => q(gnc),
+      q(2554) => q(gnd),
+      q(2555) => q(gne),
+      q(2556) => q(gng),
+      q(2557) => q(gnh),
+      q(2558) => q(gni),
+      q(2559) => q(gnk),
+      q(2560) => q(gnl),
+      q(2561) => q(gnm),
+      q(2562) => q(gnn),
+      q(2563) => q(gno),
+      q(2564) => q(gnq),
+      q(2565) => q(gnr),
+      q(2566) => q(gnt),
+      q(2567) => q(gnu),
+      q(2568) => q(gnw),
+      q(2569) => q(gnz),
+      q(2570) => q(goa),
+      q(2571) => q(gob),
+      q(2572) => q(goc),
+      q(2573) => q(god),
+      q(2574) => q(goe),
+      q(2575) => q(gof),
+      q(2576) => q(gog),
+      q(2577) => q(goi),
+      q(2578) => q(goj),
+      q(2579) => q(gok),
+      q(2580) => q(gol),
+      q(2581) => q(gom),
+      q(2582) => q(goo),
+      q(2583) => q(gop),
+      q(2584) => q(goq),
+      q(2585) => q(gos),
+      q(2586) => q(gou),
+      q(2587) => q(gow),
+      q(2588) => q(gox),
+      q(2589) => q(goy),
+      q(2590) => q(goz),
+      q(2591) => q(gpa),
+      q(2592) => q(gpe),
+      q(2593) => q(gpn),
+      q(2594) => q(gqa),
+      q(2595) => q(gqi),
+      q(2596) => q(gqn),
+      q(2597) => q(gqr),
+      q(2598) => q(gqu),
+      q(2599) => q(gra),
+      q(2600) => q(grd),
+      q(2601) => q(grg),
+      q(2602) => q(grh),
+      q(2603) => q(gri),
+      q(2604) => q(grj),
+      q(2605) => q(grm),
+      q(2606) => q(gro),
+      q(2607) => q(grq),
+      q(2608) => q(grr),
+      q(2609) => q(grs),
+      q(2610) => q(grt),
+      q(2611) => q(gru),
+      q(2612) => q(grv),
+      q(2613) => q(grw),
+      q(2614) => q(grx),
+      q(2615) => q(gry),
+      q(2616) => q(grz),
+      q(2617) => q(gse),
+      q(2618) => q(gsg),
+      q(2619) => q(gsl),
+      q(2620) => q(gsm),
+      q(2621) => q(gsn),
+      q(2622) => q(gso),
+      q(2623) => q(gsp),
+      q(2624) => q(gss),
+      q(2625) => q(gta),
+      q(2626) => q(gti),
+      q(2627) => q(gua),
+      q(2628) => q(gub),
+      q(2629) => q(guc),
+      q(2630) => q(gud),
+      q(2631) => q(gue),
+      q(2632) => q(guf),
+      q(2633) => q(gug),
+      q(2634) => q(guh),
+      q(2635) => q(gui),
+      q(2636) => q(guk),
+      q(2637) => q(gul),
+      q(2638) => q(gum),
+      q(2639) => q(gun),
+      q(2640) => q(guo),
+      q(2641) => q(gup),
+      q(2642) => q(yif),
+      q(2643) => q(gur),
+      q(2644) => q(gus),
+      q(2645) => q(gut),
+      q(2646) => q(guu),
+      q(2647) => q(guv),
+      q(2648) => q(guw),
+      q(2649) => q(gux),
+      q(2650) => q(guz),
+      q(2651) => q(gva),
+      q(2652) => q(gvc),
+      q(2653) => q(gve),
+      q(2654) => q(gvf),
+      q(2655) => q(gvj),
+      q(2656) => q(gvl),
+      q(2657) => q(gvm),
+      q(2658) => q(gvn),
+      q(2659) => q(gvo),
+      q(2660) => q(gvp),
+      q(2661) => q(gvr),
+      q(2662) => q(gvs),
+      q(2663) => q(gvy),
+      q(2664) => q(gwa),
+      q(2665) => q(gwb),
+      q(2666) => q(gwc),
+      q(2667) => q(gwd),
+      q(2668) => q(gwe),
+      q(2669) => q(gwf),
+      q(2670) => q(gwg),
+      q(2671) => q(gwj),
+      q(2672) => q(gwm),
+      q(2673) => q(gwn),
+      q(2674) => q(gwr),
+      q(2675) => q(gwt),
+      q(2676) => q(gwu),
+      q(2677) => q(gww),
+      q(2678) => q(gwx),
+      q(2679) => q(gxx),
+      q(2680) => q(gya),
+      q(2681) => q(gyb),
+      q(2682) => q(gyd),
+      q(2683) => q(gye),
+      q(2684) => q(gyf),
+      q(2685) => q(gyg),
+      q(2686) => q(gyi),
+      q(2687) => q(gyl),
+      q(2688) => q(gym),
+      q(2689) => q(gyn),
+      q(2690) => q(gyr),
+      q(2691) => q(gyy),
+      q(2692) => q(gza),
+      q(2693) => q(gzi),
+      q(2694) => q(gzn),
+      q(2695) => q(haa),
+      q(2696) => q(hab),
+      q(2697) => q(hac),
+      q(2698) => q(had),
+      q(2699) => q(hae),
+      q(2700) => q(haf),
+      q(2701) => q(hag),
+      q(2702) => q(hah),
+      q(2703) => q(haj),
+      q(2704) => q(hak),
+      q(2705) => q(hal),
+      q(2706) => q(ham),
+      q(2707) => q(han),
+      q(2708) => q(hao),
+      q(2709) => q(hap),
+      q(2710) => q(haq),
+      q(2711) => q(har),
+      q(2712) => q(has),
+      q(2713) => q(hav),
+      q(2714) => q(hax),
+      q(2715) => q(hay),
+      q(2716) => q(haz),
+      q(2717) => q(hba),
+      q(2718) => q(hbb),
+      q(2719) => q(hbn),
+      q(2720) => q(hbo),
+      q(2721) => q(hbu),
+      q(2722) => q(hca),
+      q(2723) => q(hch),
+      q(2724) => q(hdn),
+      q(2725) => q(hds),
+      q(2726) => q(hdy),
+      q(2727) => q(hea),
+      q(2728) => q(hed),
+      q(2729) => q(heg),
+      q(2730) => q(heh),
+      q(2731) => q(hei),
+      q(2732) => q(hem),
+      q(2733) => q(hgm),
+      q(2734) => q(hgw),
+      q(2735) => q(hhi),
+      q(2736) => q(hhr),
+      q(2737) => q(hhy),
+      q(2738) => q(hia),
+      q(2739) => q(hib),
+      q(2740) => q(hid),
+      q(2741) => q(hif),
+      q(2742) => q(hig),
+      q(2743) => q(hih),
+      q(2744) => q(hii),
+      q(2745) => q(hij),
+      q(2746) => q(hik),
+      q(2747) => q(hio),
+      q(2748) => q(hir),
+      q(2749) => q(hiw),
+      q(2750) => q(hix),
+      q(2751) => q(hji),
+      q(2752) => q(hka),
+      q(2753) => q(hke),
+      q(2754) => q(hkk),
+      q(2755) => q(hks),
+      q(2756) => q(hla),
+      q(2757) => q(hlb),
+      q(2758) => q(hld),
+      q(2759) => q(hle),
+      q(2760) => q(hlt),
+      q(2761) => q(hlu),
+      q(2762) => q(hma),
+      q(2763) => q(hmb),
+      q(2764) => q(hmc),
+      q(2765) => q(hmd),
+      q(2766) => q(hme),
+      q(2767) => q(hmf),
+      q(2768) => q(hmg),
+      q(2769) => q(hmh),
+      q(2770) => q(hmi),
+      q(2771) => q(hmj),
+      q(2772) => q(hmk),
+      q(2773) => q(hml),
+      q(2774) => q(hmm),
+      q(2775) => q(hmp),
+      q(2776) => q(hmq),
+      q(2777) => q(hmr),
+      q(2778) => q(hms),
+      q(2779) => q(hmt),
+      q(2780) => q(hmu),
+      q(2781) => q(hmv),
+      q(2782) => q(hmw),
+      q(2783) => q(hmy),
+      q(2784) => q(hmz),
+      q(2785) => q(hna),
+      q(2786) => q(hnd),
+      q(2787) => q(hne),
+      q(2788) => q(hnh),
+      q(2789) => q(hni),
+      q(2790) => q(hnj),
+      q(2791) => q(hnn),
+      q(2792) => q(hno),
+      q(2793) => q(hns),
+      q(2794) => q(hnu),
+      q(2795) => q(hoa),
+      q(2796) => q(hob),
+      q(2797) => q(hoc),
+      q(2798) => q(hod),
+      q(2799) => q(hoe),
+      q(2800) => q(hoh),
+      q(2801) => q(hoi),
+      q(2802) => q(hoj),
+      q(2803) => q(hol),
+      q(2804) => q(hom),
+      q(2805) => q(hoo),
+      q(2806) => q(hop),
+      q(2807) => q(hor),
+      q(2808) => q(hos),
+      q(2809) => q(hot),
+      q(2810) => q(hov),
+      q(2811) => q(how),
+      q(2812) => q(hoy),
+      q(2813) => q(hoz),
+      q(2814) => q(hpo),
+      q(2815) => q(hps),
+      q(2816) => q(hra),
+      q(2817) => q(hre),
+      q(2818) => q(hrk),
+      q(2819) => q(hrm),
+      q(2820) => q(hro),
+      q(2821) => q(hrt),
+      q(2822) => q(hru),
+      q(2823) => q(hrx),
+      q(2824) => q(hrz),
+      q(2825) => q(hsh),
+      q(2826) => q(hsl),
+      q(2827) => q(hsn),
+      q(2828) => q(hss),
+      q(2829) => q(hti),
+      q(2830) => q(hto),
+      q(2831) => q(hts),
+      q(2832) => q(htu),
+      q(2833) => q(htx),
+      q(2834) => q(hub),
+      q(2835) => q(huc),
+      q(2836) => q(hud),
+      q(2837) => q(hue),
+      q(2838) => q(huf),
+      q(2839) => q(hug),
+      q(2840) => q(huh),
+      q(2841) => q(hui),
+      q(2842) => q(huj),
+      q(2843) => q(huk),
+      q(2844) => q(hul),
+      q(2845) => q(hum),
+      q(2846) => q(huo),
+      q(2847) => q(huq),
+      q(2848) => q(hur),
+      q(2849) => q(hus),
+      q(2850) => q(hut),
+      q(2851) => q(huu),
+      q(2852) => q(huv),
+      q(2853) => q(huw),
+      q(2854) => q(hux),
+      q(2855) => q(huy),
+      q(2856) => q(huz),
+      q(2857) => q(hvc),
+      q(2858) => q(hve),
+      q(2859) => q(hvk),
+      q(2860) => q(hvn),
+      q(2861) => q(hvv),
+      q(2862) => q(hwa),
+      q(2863) => q(hwc),
+      q(2864) => q(hwo),
+      q(2865) => q(hya),
+      q(2866) => q(iai),
+      q(2867) => q(ian),
+      q(2868) => q(iap),
+      q(2869) => q(iar),
+      q(2870) => q(ibb),
+      q(2871) => q(ibd),
+      q(2872) => q(ibe),
+      q(2873) => q(ibg),
+      q(2874) => q(ibl),
+      q(2875) => q(ibm),
+      q(2876) => q(ibn),
+      q(2877) => q(ibr),
+      q(2878) => q(ibu),
+      q(2879) => q(iby),
+      q(2880) => q(ica),
+      q(2881) => q(ich),
+      q(2882) => q(icl),
+      q(2883) => q(icr),
+      q(2884) => q(ida),
+      q(2885) => q(idb),
+      q(2886) => q(idc),
+      q(2887) => q(idd),
+      q(2888) => q(ide),
+      q(2889) => q(idi),
+      q(2890) => q(idr),
+      q(2891) => q(ids),
+      q(2892) => q(idt),
+      q(2893) => q(idu),
+      q(2894) => q(ifa),
+      q(2895) => q(ifb),
+      q(2896) => q(ife),
+      q(2897) => q(iff),
+      q(2898) => q(ifk),
+      q(2899) => q(ifm),
+      q(2900) => q(ifu),
+      q(2901) => q(ify),
+      q(2902) => q(igb),
+      q(2903) => q(ige),
+      q(2904) => q(igg),
+      q(2905) => q(igl),
+      q(2906) => q(igm),
+      q(2907) => q(ign),
+      q(2908) => q(igo),
+      q(2909) => q(igs),
+      q(2910) => q(igw),
+      q(2911) => q(ihb),
+      q(2912) => q(ihi),
+      q(2913) => q(ihp),
+      q(2914) => q(ihw),
+      q(2915) => q(ijc),
+      q(2916) => q(ije),
+      q(2917) => q(ijj),
+      q(2918) => q(ijn),
+      q(2919) => q(ijs),
+      q(2920) => q(ike),
+      q(2921) => q(iki),
+      q(2922) => q(ikk),
+      q(2923) => q(ikl),
+      q(2924) => q(iko),
+      q(2925) => q(ikp),
+      q(2926) => q(ikt),
+      q(2927) => q(ikv),
+      q(2928) => q(ikw),
+      q(2929) => q(ikx),
+      q(2930) => q(ikz),
+      q(2931) => q(ila),
+      q(2932) => q(ilb),
+      q(2933) => q(ilg),
+      q(2934) => q(ili),
+      q(2935) => q(ilk),
+      q(2936) => q(ill),
+      q(2937) => q(ils),
+      q(2938) => q(ilu),
+      q(2939) => q(ilv),
+      q(2940) => q(ilw),
+      q(2941) => q(ima),
+      q(2942) => q(ime),
+      q(2943) => q(imi),
+      q(2944) => q(iml),
+      q(2945) => q(imn),
+      q(2946) => q(imo),
+      q(2947) => q(imr),
+      q(2948) => q(ims),
+      q(2949) => q(imy),
+      q(2950) => q(inb),
+      q(2951) => q(ing),
+      q(2952) => q(inj),
+      q(2953) => q(inl),
+      q(2954) => q(inm),
+      q(2955) => q(inn),
+      q(2956) => q(ino),
+      q(2957) => q(inp),
+      q(2958) => q(ins),
+      q(2959) => q(int),
+      q(2960) => q(inz),
+      q(2961) => q(ior),
+      q(2962) => q(iou),
+      q(2963) => q(iow),
+      q(2964) => q(ipi),
+      q(2965) => q(ipo),
+      q(2966) => q(iqu),
+      q(2967) => q(ire),
+      q(2968) => q(irh),
+      q(2969) => q(iri),
+      q(2970) => q(irk),
+      q(2971) => q(irn),
+      q(2972) => q(irr),
+      q(2973) => q(iru),
+      q(2974) => q(irx),
+      q(2975) => q(iry),
+      q(2976) => q(isa),
+      q(2977) => q(isc),
+      q(2978) => q(isd),
+      q(2979) => q(ise),
+      q(2980) => q(isg),
+      q(2981) => q(ish),
+      q(2982) => q(isi),
+      q(2983) => q(isk),
+      q(2984) => q(ism),
+      q(2985) => q(isn),
+      q(2986) => q(iso),
+      q(2987) => q(isr),
+      q(2988) => q(ist),
+      q(2989) => q(isu),
+      q(2990) => q(itb),
+      q(2991) => q(ite),
+      q(2992) => q(iti),
+      q(2993) => q(itk),
+      q(2994) => q(itl),
+      q(2995) => q(itm),
+      q(2996) => q(ito),
+      q(2997) => q(itr),
+      q(2998) => q(its),
+      q(2999) => q(itt),
+      q(3000) => q(itv),
+      q(3001) => q(itw),
+      q(3002) => q(itx),
+      q(3003) => q(ity),
+      q(3004) => q(itz),
+      q(3005) => q(ium),
+      q(3006) => q(ivb),
+      q(3007) => q(ivv),
+      q(3008) => q(iwk),
+      q(3009) => q(iwm),
+      q(3010) => q(iwo),
+      q(3011) => q(iws),
+      q(3012) => q(ixc),
+      q(3013) => q(ixl),
+      q(3014) => q(iya),
+      q(3015) => q(iyo),
+      q(3016) => q(iyx),
+      q(3017) => q(izh),
+      q(3018) => q(izi),
+      q(3019) => q(izr),
+      q(3020) => q(jaa),
+      q(3021) => q(jab),
+      q(3022) => q(jac),
+      q(3023) => q(jad),
+      q(3024) => q(jae),
+      q(3025) => q(jaf),
+      q(3026) => q(jah),
+      q(3027) => q(jaj),
+      q(3028) => q(jak),
+      q(3029) => q(jal),
+      q(3030) => q(jam),
+      q(3031) => q(jan),
+      q(3032) => q(jao),
+      q(3033) => q(jaq),
+      q(3034) => q(jas),
+      q(3035) => q(jat),
+      q(3036) => q(jau),
+      q(3037) => q(jax),
+      q(3038) => q(jay),
+      q(3039) => q(jaz),
+      q(3040) => q(jbe),
+      q(3041) => q(jbj),
+      q(3042) => q(jbk),
+      q(3043) => q(jbn),
+      q(3044) => q(jbr),
+      q(3045) => q(jbt),
+      q(3046) => q(jbu),
+      q(3047) => q(jbw),
+      q(3048) => q(jcs),
+      q(3049) => q(jct),
+      q(3050) => q(jda),
+      q(3051) => q(jdg),
+      q(3052) => q(jdt),
+      q(3053) => q(jeb),
+      q(3054) => q(jee),
+      q(3055) => q(jeg),
+      q(3056) => q(jeh),
+      q(3057) => q(jei),
+      q(3058) => q(jek),
+      q(3059) => q(jel),
+      q(3060) => q(jen),
+      q(3061) => q(jer),
+      q(3062) => q(jet),
+      q(3063) => q(jeu),
+      q(3064) => q(jgb),
+      q(3065) => q(jge),
+      q(3066) => q(jgk),
+      q(3067) => q(jgo),
+      q(3068) => q(jhi),
+      q(3069) => q(jhs),
+      q(3070) => q(jia),
+      q(3071) => q(jib),
+      q(3072) => q(jic),
+      q(3073) => q(jid),
+      q(3074) => q(jie),
+      q(3075) => q(jig),
+      q(3076) => q(jih),
+      q(3077) => q(jii),
+      q(3078) => q(jil),
+      q(3079) => q(jim),
+      q(3080) => q(jio),
+      q(3081) => q(jiq),
+      q(3082) => q(jit),
+      q(3083) => q(jiu),
+      q(3084) => q(jiv),
+      q(3085) => q(jiy),
+      q(3086) => q(jjr),
+      q(3087) => q(jkm),
+      q(3088) => q(jko),
+      q(3089) => q(jkp),
+      q(3090) => q(jkr),
+      q(3091) => q(jku),
+      q(3092) => q(jle),
+      q(3093) => q(jls),
+      q(3094) => q(jma),
+      q(3095) => q(jmb),
+      q(3096) => q(jmc),
+      q(3097) => q(jmd),
+      q(3098) => q(jmi),
+      q(3099) => q(jml),
+      q(3100) => q(jmn),
+      q(3101) => q(jmr),
+      q(3102) => q(jms),
+      q(3103) => q(jmw),
+      q(3104) => q(jmx),
+      q(3105) => q(jna),
+      q(3106) => q(jnd),
+      q(3107) => q(jng),
+      q(3108) => q(jni),
+      q(3109) => q(jnj),
+      q(3110) => q(jnl),
+      q(3111) => q(jns),
+      q(3112) => q(job),
+      q(3113) => q(jod),
+      q(3114) => q(jor),
+      q(3115) => q(jos),
+      q(3116) => q(jow),
+      q(3117) => q(jpa),
+      q(3118) => q(jqr),
+      q(3119) => q(jra),
+      q(3120) => q(jrr),
+      q(3121) => q(jrt),
+      q(3122) => q(jru),
+      q(3123) => q(jsl),
+      q(3124) => q(jua),
+      q(3125) => q(jub),
+      q(3126) => q(juc),
+      q(3127) => q(jud),
+      q(3128) => q(juh),
+      q(3129) => q(jui),
+      q(3130) => q(juk),
+      q(3131) => q(jul),
+      q(3132) => q(jum),
+      q(3133) => q(jun),
+      q(3134) => q(juo),
+      q(3135) => q(jup),
+      q(3136) => q(jur),
+      q(3137) => q(jus),
+      q(3138) => q(jut),
+      q(3139) => q(juu),
+      q(3140) => q(juw),
+      q(3141) => q(juy),
+      q(3142) => q(jvd),
+      q(3143) => q(jvn),
+      q(3144) => q(jwi),
+      q(3145) => q(jya),
+      q(3146) => q(jye),
+      q(3147) => q(jyy),
+      q(3148) => q(kad),
+      q(3149) => q(kae),
+      q(3150) => q(kaf),
+      q(3151) => q(kag),
+      q(3152) => q(kah),
+      q(3153) => q(kai),
+      q(3154) => q(kaj),
+      q(3155) => q(kak),
+      q(3156) => q(kao),
+      q(3157) => q(kap),
+      q(3158) => q(kaq),
+      q(3159) => q(kav),
+      q(3160) => q(kax),
+      q(3161) => q(kay),
+      q(3162) => q(kba),
+      q(3163) => q(kbb),
+      q(3164) => q(kbc),
+      q(3165) => q(kbe),
+      q(3166) => q(kbf),
+      q(3167) => q(kbg),
+      q(3168) => q(kbh),
+      q(3169) => q(kbi),
+      q(3170) => q(kbj),
+      q(3171) => q(kbk),
+      q(3172) => q(kbl),
+      q(3173) => q(kbm),
+      q(3174) => q(kbn),
+      q(3175) => q(kbo),
+      q(3176) => q(kbp),
+      q(3177) => q(kbq),
+      q(3178) => q(kbr),
+      q(3179) => q(kbs),
+      q(3180) => q(kbt),
+      q(3181) => q(kbu),
+      q(3182) => q(kbv),
+      q(3183) => q(kbw),
+      q(3184) => q(kbx),
+      q(3185) => q(kby),
+      q(3186) => q(kbz),
+      q(3187) => q(kca),
+      q(3188) => q(kcb),
+      q(3189) => q(kcc),
+      q(3190) => q(kcd),
+      q(3191) => q(kce),
+      q(3192) => q(kcf),
+      q(3193) => q(kcg),
+      q(3194) => q(kch),
+      q(3195) => q(kci),
+      q(3196) => q(kcj),
+      q(3197) => q(kck),
+      q(3198) => q(kcl),
+      q(3199) => q(kcm),
+      q(3200) => q(kcn),
+      q(3201) => q(kco),
+      q(3202) => q(kcp),
+      q(3203) => q(kcq),
+      q(3204) => q(kcr),
+      q(3205) => q(kcs),
+      q(3206) => q(kct),
+      q(3207) => q(kcu),
+      q(3208) => q(kcv),
+      q(3209) => q(kcw),
+      q(3210) => q(kcx),
+      q(3211) => q(kcy),
+      q(3212) => q(kcz),
+      q(3213) => q(kda),
+      q(3214) => q(kdc),
+      q(3215) => q(kdd),
+      q(3216) => q(kde),
+      q(3217) => q(kdf),
+      q(3218) => q(kdg),
+      q(3219) => q(kdh),
+      q(3220) => q(kdi),
+      q(3221) => q(kdj),
+      q(3222) => q(kdk),
+      q(3223) => q(kdl),
+      q(3224) => q(kdm),
+      q(3225) => q(kdn),
+      q(3226) => q(kdp),
+      q(3227) => q(kdq),
+      q(3228) => q(kdr),
+      q(3229) => q(kdt),
+      q(3230) => q(kdu),
+      q(3231) => q(kdw),
+      q(3232) => q(kdx),
+      q(3233) => q(kdy),
+      q(3234) => q(kdz),
+      q(3235) => q(kea),
+      q(3236) => q(keb),
+      q(3237) => q(kec),
+      q(3238) => q(ked),
+      q(3239) => q(kee),
+      q(3240) => q(kef),
+      q(3241) => q(keg),
+      q(3242) => q(keh),
+      q(3243) => q(kei),
+      q(3244) => q(kej),
+      q(3245) => q(kek),
+      q(3246) => q(kel),
+      q(3247) => q(kem),
+      q(3248) => q(ken),
+      q(3249) => q(keo),
+      q(3250) => q(kep),
+      q(3251) => q(keq),
+      q(3252) => q(ker),
+      q(3253) => q(kes),
+      q(3254) => q(ket),
+      q(3255) => q(keu),
+      q(3256) => q(kev),
+      q(3257) => q(kew),
+      q(3258) => q(kex),
+      q(3259) => q(key),
+      q(3260) => q(kez),
+      q(3261) => q(kfa),
+      q(3262) => q(kfb),
+      q(3263) => q(kfc),
+      q(3264) => q(kfd),
+      q(3265) => q(kfe),
+      q(3266) => q(kff),
+      q(3267) => q(kfg),
+      q(3268) => q(kfh),
+      q(3269) => q(kfi),
+      q(3270) => q(kfj),
+      q(3271) => q(kfk),
+      q(3272) => q(kfl),
+      q(3273) => q(kfm),
+      q(3274) => q(kfn),
+      q(3275) => q(kfo),
+      q(3276) => q(kfp),
+      q(3277) => q(kfq),
+      q(3278) => q(kfr),
+      q(3279) => q(kfs),
+      q(3280) => q(kft),
+      q(3281) => q(kfu),
+      q(3282) => q(kfv),
+      q(3283) => q(kfw),
+      q(3284) => q(kfx),
+      q(3285) => q(kfy),
+      q(3286) => q(kfz),
+      q(3287) => q(kga),
+      q(3288) => q(kgb),
+      q(3289) => q(kgc),
+      q(3290) => q(kgd),
+      q(3291) => q(kge),
+      q(3292) => q(kgf),
+      q(3293) => q(kgg),
+      q(3294) => q(kgi),
+      q(3295) => q(kgj),
+      q(3296) => q(kgk),
+      q(3297) => q(kgl),
+      q(3298) => q(kuq),
+      q(3299) => q(kgn),
+      q(3300) => q(kgo),
+      q(3301) => q(kgp),
+      q(3302) => q(kgq),
+      q(3303) => q(kgr),
+      q(3304) => q(kgs),
+      q(3305) => q(kgt),
+      q(3306) => q(kgu),
+      q(3307) => q(kgv),
+      q(3308) => q(kgw),
+      q(3309) => q(kgx),
+      q(3310) => q(kgy),
+      q(3311) => q(khb),
+      q(3312) => q(khc),
+      q(3313) => q(khd),
+      q(3314) => q(khe),
+      q(3315) => q(khf),
+      q(3316) => q(khg),
+      q(3317) => q(khh),
+      q(3318) => q(khj),
+      q(3319) => q(khk),
+      q(3320) => q(khl),
+      q(3321) => q(khn),
+      q(3322) => q(khp),
+      q(3323) => q(khq),
+      q(3324) => q(khr),
+      q(3325) => q(khs),
+      q(3326) => q(kht),
+      q(3327) => q(khu),
+      q(3328) => q(khv),
+      q(3329) => q(khw),
+      q(3330) => q(khx),
+      q(3331) => q(khy),
+      q(3332) => q(khz),
+      q(3333) => q(kia),
+      q(3334) => q(kib),
+      q(3335) => q(kic),
+      q(3336) => q(kid),
+      q(3337) => q(kie),
+      q(3338) => q(kif),
+      q(3339) => q(kig),
+      q(3340) => q(kih),
+      q(3341) => q(kii),
+      q(3342) => q(kij),
+      q(3343) => q(kil),
+      q(3344) => q(kim),
+      q(3345) => q(kio),
+      q(3346) => q(kip),
+      q(3347) => q(kiq),
+      q(3348) => q(kis),
+      q(3349) => q(kit),
+      q(3350) => q(kiu),
+      q(3351) => q(kiv),
+      q(3352) => q(kiw),
+      q(3353) => q(kix),
+      q(3354) => q(kiy),
+      q(3355) => q(kiz),
+      q(3356) => q(kja),
+      q(3357) => q(kjb),
+      q(3358) => q(kjc),
+      q(3359) => q(kjd),
+      q(3360) => q(kje),
+      q(3361) => q(kjf),
+      q(3362) => q(kjg),
+      q(3363) => q(kjh),
+      q(3364) => q(kji),
+      q(3365) => q(kjj),
+      q(3366) => q(kjk),
+      q(3367) => q(kjl),
+      q(3368) => q(kjm),
+      q(3369) => q(kjn),
+      q(3370) => q(kjo),
+      q(3371) => q(kjp),
+      q(3372) => q(kjq),
+      q(3373) => q(kjr),
+      q(3374) => q(kjs),
+      q(3375) => q(kjt),
+      q(3376) => q(kju),
+      q(3377) => q(kjx),
+      q(3378) => q(kjy),
+      q(3379) => q(kjz),
+      q(3380) => q(kka),
+      q(3381) => q(kkb),
+      q(3382) => q(kkc),
+      q(3383) => q(kkd),
+      q(3384) => q(kke),
+      q(3385) => q(kkf),
+      q(3386) => q(kkg),
+      q(3387) => q(kkh),
+      q(3388) => q(kki),
+      q(3389) => q(kkj),
+      q(3390) => q(kkk),
+      q(3391) => q(kkl),
+      q(3392) => q(kkm),
+      q(3393) => q(kkn),
+      q(3394) => q(kko),
+      q(3395) => q(kkp),
+      q(3396) => q(kkq),
+      q(3397) => q(kkr),
+      q(3398) => q(kks),
+      q(3399) => q(kkt),
+      q(3400) => q(kku),
+      q(3401) => q(kkv),
+      q(3402) => q(kkw),
+      q(3403) => q(kkx),
+      q(3404) => q(kky),
+      q(3405) => q(kkz),
+      q(3406) => q(kla),
+      q(3407) => q(klb),
+      q(3408) => q(klc),
+      q(3409) => q(kld),
+      q(3410) => q(kle),
+      q(3411) => q(klf),
+      q(3412) => q(klg),
+      q(3413) => q(klh),
+      q(3414) => q(kli),
+      q(3415) => q(klj),
+      q(3416) => q(klk),
+      q(3417) => q(kll),
+      q(3418) => q(klm),
+      q(3419) => q(kln),
+      q(3420) => q(klo),
+      q(3421) => q(klp),
+      q(3422) => q(klq),
+      q(3423) => q(klr),
+      q(3424) => q(kls),
+      q(3425) => q(klt),
+      q(3426) => q(klu),
+      q(3427) => q(klv),
+      q(3428) => q(klw),
+      q(3429) => q(klx),
+      q(3430) => q(kly),
+      q(3431) => q(klz),
+      q(3432) => q(kma),
+      q(3433) => q(kmc),
+      q(3434) => q(kmd),
+      q(3435) => q(kme),
+      q(3436) => q(kmf),
+      q(3437) => q(kmg),
+      q(3438) => q(kmh),
+      q(3439) => q(kmi),
+      q(3440) => q(kmj),
+      q(3441) => q(kmk),
+      q(3442) => q(kml),
+      q(3443) => q(kmm),
+      q(3444) => q(kmn),
+      q(3445) => q(kmo),
+      q(3446) => q(kmp),
+      q(3447) => q(kmq),
+      q(3448) => q(kmr),
+      q(3449) => q(kms),
+      q(3450) => q(kmt),
+      q(3451) => q(kmu),
+      q(3452) => q(kmv),
+      q(3453) => q(kmw),
+      q(3454) => q(kmx),
+      q(3455) => q(kmy),
+      q(3456) => q(kmz),
+      q(3457) => q(kna),
+      q(3458) => q(knb),
+      q(3459) => q(knc),
+      q(3460) => q(knd),
+      q(3461) => q(kne),
+      q(3462) => q(knf),
+      q(3463) => q(kng),
+      q(3464) => q(kni),
+      q(3465) => q(knj),
+      q(3466) => q(knk),
+      q(3467) => q(knl),
+      q(3468) => q(knm),
+      q(3469) => q(knn),
+      q(3470) => q(kno),
+      q(3471) => q(knp),
+      q(3472) => q(knq),
+      q(3473) => q(knr),
+      q(3474) => q(kns),
+      q(3475) => q(knt),
+      q(3476) => q(knu),
+      q(3477) => q(knv),
+      q(3478) => q(knw),
+      q(3479) => q(knx),
+      q(3480) => q(kny),
+      q(3481) => q(knz),
+      q(3482) => q(koa),
+      q(3483) => q(koc),
+      q(3484) => q(kod),
+      q(3485) => q(koe),
+      q(3486) => q(kof),
+      q(3487) => q(kog),
+      q(3488) => q(koh),
+      q(3489) => q(koi),
+      q(3490) => q(koj),
+      q(3491) => q(kol),
+      q(3492) => q(koo),
+      q(3493) => q(kop),
+      q(3494) => q(koq),
+      q(3495) => q(kot),
+      q(3496) => q(kou),
+      q(3497) => q(kov),
+      q(3498) => q(kow),
+      q(3499) => q(kox),
+      q(3500) => q(koy),
+      q(3501) => q(koz),
+      q(3502) => q(kpa),
+      q(3503) => q(kpb),
+      q(3504) => q(kpc),
+      q(3505) => q(kpd),
+      q(3506) => q(kpf),
+      q(3507) => q(kpg),
+      q(3508) => q(kph),
+      q(3509) => q(kpi),
+      q(3510) => q(kpj),
+      q(3511) => q(kpk),
+      q(3512) => q(kpl),
+      q(3513) => q(kpm),
+      q(3514) => q(kpn),
+      q(3515) => q(kpo),
+      q(3516) => q(kpq),
+      q(3517) => q(kpr),
+      q(3518) => q(kps),
+      q(3519) => q(kpt),
+      q(3520) => q(kpu),
+      q(3521) => q(kpv),
+      q(3522) => q(kpw),
+      q(3523) => q(kpx),
+      q(3524) => q(kpy),
+      q(3525) => q(kpz),
+      q(3526) => q(kqa),
+      q(3527) => q(kqb),
+      q(3528) => q(kqc),
+      q(3529) => q(kqd),
+      q(3530) => q(kqe),
+      q(3531) => q(kqf),
+      q(3532) => q(kqg),
+      q(3533) => q(kqh),
+      q(3534) => q(kqi),
+      q(3535) => q(kqj),
+      q(3536) => q(kqk),
+      q(3537) => q(kql),
+      q(3538) => q(kqm),
+      q(3539) => q(kqn),
+      q(3540) => q(kqo),
+      q(3541) => q(kqp),
+      q(3542) => q(kqq),
+      q(3543) => q(kqr),
+      q(3544) => q(kqs),
+      q(3545) => q(kqt),
+      q(3546) => q(kqu),
+      q(3547) => q(kqv),
+      q(3548) => q(kqw),
+      q(3549) => q(kqx),
+      q(3550) => q(kqy),
+      q(3551) => q(kqz),
+      q(3552) => q(kra),
+      q(3553) => q(krb),
+      q(3554) => q(krd),
+      q(3555) => q(kre),
+      q(3556) => q(krf),
+      q(3557) => q(krh),
+      q(3558) => q(kri),
+      q(3559) => q(krj),
+      q(3560) => q(krk),
+      q(3561) => q(krm),
+      q(3562) => q(krn),
+      q(3563) => q(krp),
+      q(3564) => q(krr),
+      q(3565) => q(krs),
+      q(3566) => q(krt),
+      q(3567) => q(krv),
+      q(3568) => q(krw),
+      q(3569) => q(krx),
+      q(3570) => q(kry),
+      q(3571) => q(krz),
+      q(3572) => q(ksa),
+      q(3573) => q(ksb),
+      q(3574) => q(ksc),
+      q(3575) => q(ksd),
+      q(3576) => q(kse),
+      q(3577) => q(ksf),
+      q(3578) => q(ksg),
+      q(3579) => q(ksh),
+      q(3580) => q(ksi),
+      q(3581) => q(ksj),
+      q(3582) => q(ksk),
+      q(3583) => q(ksl),
+      q(3584) => q(ksm),
+      q(3585) => q(ksn),
+      q(3586) => q(kso),
+      q(3587) => q(ksp),
+      q(3588) => q(ksq),
+      q(3589) => q(ksr),
+      q(3590) => q(kss),
+      q(3591) => q(kst),
+      q(3592) => q(ksu),
+      q(3593) => q(ksv),
+      q(3594) => q(ksw),
+      q(3595) => q(ksx),
+      q(3596) => q(ksy),
+      q(3597) => q(ksz),
+      q(3598) => q(kta),
+      q(3599) => q(ktb),
+      q(3600) => q(ktc),
+      q(3601) => q(ktd),
+      q(3602) => q(kte),
+      q(3603) => q(ktf),
+      q(3604) => q(ktg),
+      q(3605) => q(kth),
+      q(3606) => q(kti),
+      q(3607) => q(ktj),
+      q(3608) => q(ktk),
+      q(3609) => q(ktl),
+      q(3610) => q(ktm),
+      q(3611) => q(ktn),
+      q(3612) => q(kto),
+      q(3613) => q(ktp),
+      q(3614) => q(ktq),
+      q(3615) => q(ktr),
+      q(3616) => q(kts),
+      q(3617) => q(ktt),
+      q(3618) => q(ktu),
+      q(3619) => q(ktv),
+      q(3620) => q(ktw),
+      q(3621) => q(ktx),
+      q(3622) => q(kty),
+      q(3623) => q(ktz),
+      q(3624) => q(kub),
+      q(3625) => q(kuc),
+      q(3626) => q(kud),
+      q(3627) => q(kue),
+      q(3628) => q(kuf),
+      q(3629) => q(kug),
+      q(3630) => q(kuh),
+      q(3631) => q(kui),
+      q(3632) => q(kuj),
+      q(3633) => q(kuk),
+      q(3634) => q(kul),
+      q(3635) => q(kun),
+      q(3636) => q(kuo),
+      q(3637) => q(kup),
+      q(3638) => q(kus),
+      q(3639) => q(kuu),
+      q(3640) => q(kuv),
+      q(3641) => q(kuw),
+      q(3642) => q(kux),
+      q(3643) => q(kuy),
+      q(3644) => q(kuz),
+      q(3645) => q(kva),
+      q(3646) => q(kvb),
+      q(3647) => q(kvc),
+      q(3648) => q(kvd),
+      q(3649) => q(kve),
+      q(3650) => q(kvf),
+      q(3651) => q(kvg),
+      q(3652) => q(kvh),
+      q(3653) => q(kvi),
+      q(3654) => q(kvj),
+      q(3655) => q(kvk),
+      q(3656) => q(kvl),
+      q(3657) => q(kvm),
+      q(3658) => q(kvn),
+      q(3659) => q(kvo),
+      q(3660) => q(kvp),
+      q(3661) => q(kvq),
+      q(3662) => q(kvr),
+      q(3663) => q(kvs),
+      q(3664) => q(kvt),
+      q(3665) => q(kvu),
+      q(3666) => q(kvv),
+      q(3667) => q(kvw),
+      q(3668) => q(kvx),
+      q(3669) => q(kvy),
+      q(3670) => q(kvz),
+      q(3671) => q(kwa),
+      q(3672) => q(kwb),
+      q(3673) => q(kwc),
+      q(3674) => q(kwd),
+      q(3675) => q(kwe),
+      q(3676) => q(kwf),
+      q(3677) => q(kwg),
+      q(3678) => q(kwh),
+      q(3679) => q(kwi),
+      q(3680) => q(kwj),
+      q(3681) => q(kwk),
+      q(3682) => q(kwl),
+      q(3683) => q(kwm),
+      q(3684) => q(kwn),
+      q(3685) => q(kwo),
+      q(3686) => q(kwp),
+      q(3687) => q(kwq),
+      q(3688) => q(kwr),
+      q(3689) => q(kws),
+      q(3690) => q(kwt),
+      q(3691) => q(kwu),
+      q(3692) => q(kwv),
+      q(3693) => q(kww),
+      q(3694) => q(kwx),
+      q(3695) => q(kwy),
+      q(3696) => q(kwz),
+      q(3697) => q(kxa),
+      q(3698) => q(kxb),
+      q(3699) => q(kxc),
+      q(3700) => q(kxd),
+      q(3701) => q(kxe),
+      q(3702) => q(kxf),
+      q(3703) => q(kxh),
+      q(3704) => q(kxi),
+      q(3705) => q(kxj),
+      q(3706) => q(kxk),
+      q(3707) => q(kxl),
+      q(3708) => q(kxm),
+      q(3709) => q(kxn),
+      q(3710) => q(kxo),
+      q(3711) => q(kxp),
+      q(3712) => q(kxq),
+      q(3713) => q(kxr),
+      q(3714) => q(kxs),
+      q(3715) => q(kxt),
+      q(3716) => q(kxu),
+      q(3717) => q(kxv),
+      q(3718) => q(kxw),
+      q(3719) => q(kxx),
+      q(3720) => q(kxy),
+      q(3721) => q(kxz),
+      q(3722) => q(kya),
+      q(3723) => q(kyb),
+      q(3724) => q(kyc),
+      q(3725) => q(kyd),
+      q(3726) => q(kye),
+      q(3727) => q(kyf),
+      q(3728) => q(kyg),
+      q(3729) => q(kyh),
+      q(3730) => q(kyi),
+      q(3731) => q(kyj),
+      q(3732) => q(kyk),
+      q(3733) => q(kyl),
+      q(3734) => q(kym),
+      q(3735) => q(kyn),
+      q(3736) => q(kyo),
+      q(3737) => q(kyp),
+      q(3738) => q(kyq),
+      q(3739) => q(kyr),
+      q(3740) => q(kys),
+      q(3741) => q(kyt),
+      q(3742) => q(kyu),
+      q(3743) => q(kyv),
+      q(3744) => q(kyw),
+      q(3745) => q(kyx),
+      q(3746) => q(kyy),
+      q(3747) => q(kyz),
+      q(3748) => q(kza),
+      q(3749) => q(kzb),
+      q(3750) => q(kzc),
+      q(3751) => q(kzd),
+      q(3752) => q(kze),
+      q(3753) => q(kzf),
+      q(3754) => q(kzg),
+      q(3755) => q(kzi),
+      q(3756) => q(kzj),
+      q(3757) => q(kzk),
+      q(3758) => q(kzl),
+      q(3759) => q(kzm),
+      q(3760) => q(kzn),
+      q(3761) => q(kzo),
+      q(3762) => q(kzp),
+      q(3763) => q(kzq),
+      q(3764) => q(kzr),
+      q(3765) => q(kzs),
+      q(3766) => q(kzt),
+      q(3767) => q(kzu),
+      q(3768) => q(kzv),
+      q(3769) => q(kzw),
+      q(3770) => q(kzx),
+      q(3771) => q(kzy),
+      q(3772) => q(kzz),
+      q(3773) => q(laa),
+      q(3774) => q(lab),
+      q(3775) => q(lac),
+      q(3776) => q(lae),
+      q(3777) => q(laf),
+      q(3778) => q(lag),
+      q(3779) => q(lai),
+      q(3780) => q(laj),
+      q(3781) => q(lak),
+      q(3782) => q(lal),
+      q(3783) => q(lan),
+      q(3784) => q(lap),
+      q(3785) => q(laq),
+      q(3786) => q(lar),
+      q(3787) => q(las),
+      q(3788) => q(lau),
+      q(3789) => q(law),
+      q(3790) => q(lax),
+      q(3791) => q(lay),
+      q(3792) => q(laz),
+      q(3793) => q(lba),
+      q(3794) => q(lbb),
+      q(3795) => q(lbc),
+      q(3796) => q(lbe),
+      q(3797) => q(lbf),
+      q(3798) => q(lbg),
+      q(3799) => q(lbi),
+      q(3800) => q(lbj),
+      q(3801) => q(lbk),
+      q(3802) => q(lbl),
+      q(3803) => q(lbm),
+      q(3804) => q(lbn),
+      q(3805) => q(lbo),
+      q(3806) => q(lbq),
+      q(3807) => q(lbr),
+      q(3808) => q(lbs),
+      q(3809) => q(lbt),
+      q(3810) => q(lbu),
+      q(3811) => q(lbv),
+      q(3812) => q(lbw),
+      q(3813) => q(lbx),
+      q(3814) => q(lby),
+      q(3815) => q(lbz),
+      q(3816) => q(lcc),
+      q(3817) => q(lcd),
+      q(3818) => q(lce),
+      q(3819) => q(lcf),
+      q(3820) => q(lch),
+      q(3821) => q(lcl),
+      q(3822) => q(lcm),
+      q(3823) => q(lcp),
+      q(3824) => q(lcs),
+      q(3825) => q(ldb),
+      q(3826) => q(ldd),
+      q(3827) => q(ldg),
+      q(3828) => q(ldh),
+      q(3829) => q(ldi),
+      q(3830) => q(ldj),
+      q(3831) => q(ldk),
+      q(3832) => q(ldl),
+      q(3833) => q(ldm),
+      q(3834) => q(ldn),
+      q(3835) => q(ldo),
+      q(3836) => q(ldp),
+      q(3837) => q(ldq),
+      q(3838) => q(lea),
+      q(3839) => q(leb),
+      q(3840) => q(lec),
+      q(3841) => q(led),
+      q(3842) => q(lee),
+      q(3843) => q(lef),
+      q(3844) => q(leg),
+      q(3845) => q(leh),
+      q(3846) => q(lei),
+      q(3847) => q(lej),
+      q(3848) => q(lek),
+      q(3849) => q(lel),
+      q(3850) => q(lem),
+      q(3851) => q(len),
+      q(3852) => q(leo),
+      q(3853) => q(lep),
+      q(3854) => q(leq),
+      q(3855) => q(ler),
+      q(3856) => q(les),
+      q(3857) => q(let),
+      q(3858) => q(leu),
+      q(3859) => q(lev),
+      q(3860) => q(lew),
+      q(3861) => q(lex),
+      q(3862) => q(ley),
+      q(3863) => q(lfa),
+      q(3864) => q(lfn),
+      q(3865) => q(lga),
+      q(3866) => q(lgb),
+      q(3867) => q(lgg),
+      q(3868) => q(lgh),
+      q(3869) => q(lgi),
+      q(3870) => q(lgk),
+      q(3871) => q(lgl),
+      q(3872) => q(lgm),
+      q(3873) => q(lgn),
+      q(3874) => q(lgq),
+      q(3875) => q(lgr),
+      q(3876) => q(lgt),
+      q(3877) => q(lgu),
+      q(3878) => q(lgz),
+      q(3879) => q(lha),
+      q(3880) => q(lhh),
+      q(3881) => q(lhi),
+      q(3882) => q(lhl),
+      q(3883) => q(lhm),
+      q(3884) => q(lhn),
+      q(3885) => q(lhp),
+      q(3886) => q(lhs),
+      q(3887) => q(lht),
+      q(3888) => q(lhu),
+      q(3889) => q(lia),
+      q(3890) => q(lib),
+      q(3891) => q(lic),
+      q(3892) => q(lid),
+      q(3893) => q(lie),
+      q(3894) => q(lif),
+      q(3895) => q(lig),
+      q(3896) => q(lih),
+      q(3897) => q(lii),
+      q(3898) => q(lij),
+      q(3899) => q(lik),
+      q(3900) => q(lil),
+      q(3901) => q(lio),
+      q(3902) => q(lip),
+      q(3903) => q(liq),
+      q(3904) => q(lir),
+      q(3905) => q(lis),
+      q(3906) => q(liu),
+      q(3907) => q(liv),
+      q(3908) => q(liw),
+      q(3909) => q(lix),
+      q(3910) => q(liy),
+      q(3911) => q(liz),
+      q(3912) => q(lje),
+      q(3913) => q(lji),
+      q(3914) => q(ljl),
+      q(3915) => q(ljp),
+      q(3916) => q(lka),
+      q(3917) => q(lkb),
+      q(3918) => q(lkc),
+      q(3919) => q(lkd),
+      q(3920) => q(lke),
+      q(3921) => q(lkh),
+      q(3922) => q(lki),
+      q(3923) => q(lkj),
+      q(3924) => q(lkl),
+      q(3925) => q(lkn),
+      q(3926) => q(lko),
+      q(3927) => q(lkr),
+      q(3928) => q(lks),
+      q(3929) => q(lkt),
+      q(3930) => q(lky),
+      q(3931) => q(lla),
+      q(3932) => q(llb),
+      q(3933) => q(llc),
+      q(3934) => q(lld),
+      q(3935) => q(lle),
+      q(3936) => q(llf),
+      q(3937) => q(llg),
+      q(3938) => q(llh),
+      q(3939) => q(lli),
+      q(3940) => q(llj),
+      q(3941) => q(llk),
+      q(3942) => q(lll),
+      q(3943) => q(llm),
+      q(3944) => q(lln),
+      q(3945) => q(llo),
+      q(3946) => q(llp),
+      q(3947) => q(llq),
+      q(3948) => q(lls),
+      q(3949) => q(llu),
+      q(3950) => q(llx),
+      q(3951) => q(lma),
+      q(3952) => q(lmb),
+      q(3953) => q(lmc),
+      q(3954) => q(lmd),
+      q(3955) => q(lme),
+      q(3956) => q(lmf),
+      q(3957) => q(lmg),
+      q(3958) => q(lmh),
+      q(3959) => q(lmi),
+      q(3960) => q(lmj),
+      q(3961) => q(lmk),
+      q(3962) => q(lml),
+      q(3963) => q(lmm),
+      q(3964) => q(lmn),
+      q(3965) => q(lmo),
+      q(3966) => q(lmp),
+      q(3967) => q(lmq),
+      q(3968) => q(lmr),
+      q(3969) => q(lmu),
+      q(3970) => q(lmv),
+      q(3971) => q(lmw),
+      q(3972) => q(lmx),
+      q(3973) => q(lmy),
+      q(3974) => q(lmz),
+      q(3975) => q(lna),
+      q(3976) => q(lnb),
+      q(3977) => q(lnd),
+      q(3978) => q(lng),
+      q(3979) => q(lnh),
+      q(3980) => q(lni),
+      q(3981) => q(lnj),
+      q(3982) => q(lnl),
+      q(3983) => q(lnm),
+      q(3984) => q(lnn),
+      q(3985) => q(lno),
+      q(3986) => q(lns),
+      q(3987) => q(lnu),
+      q(3988) => q(lnz),
+      q(3989) => q(loa),
+      q(3990) => q(lob),
+      q(3991) => q(loc),
+      q(3992) => q(loe),
+      q(3993) => q(lof),
+      q(3994) => q(log),
+      q(3995) => q(loh),
+      q(3996) => q(loi),
+      q(3997) => q(loj),
+      q(3998) => q(lok),
+      q(3999) => q(lom),
+      q(4000) => q(lon),
+      q(4001) => q(loo),
+      q(4002) => q(lop),
+      q(4003) => q(loq),
+      q(4004) => q(lor),
+      q(4005) => q(los),
+      q(4006) => q(lot),
+      q(4007) => q(lou),
+      q(4008) => q(lov),
+      q(4009) => q(low),
+      q(4010) => q(lox),
+      q(4011) => q(loy),
+      q(4012) => q(lpa),
+      q(4013) => q(lpe),
+      q(4014) => q(lpn),
+      q(4015) => q(lpo),
+      q(4016) => q(lpx),
+      q(4017) => q(lra),
+      q(4018) => q(lrc),
+      q(4019) => q(lre),
+      q(4020) => q(lrg),
+      q(4021) => q(lri),
+      q(4022) => q(lrk),
+      q(4023) => q(lrl),
+      q(4024) => q(lrm),
+      q(4025) => q(lrn),
+      q(4026) => q(lro),
+      q(4027) => q(lrr),
+      q(4028) => q(lrt),
+      q(4029) => q(lrv),
+      q(4030) => q(lrz),
+      q(4031) => q(lsa),
+      q(4032) => q(lsd),
+      q(4033) => q(lse),
+      q(4034) => q(lsg),
+      q(4035) => q(lsh),
+      q(4036) => q(lsi),
+      q(4037) => q(lsl),
+      q(4038) => q(lsm),
+      q(4039) => q(lso),
+      q(4040) => q(lsp),
+      q(4041) => q(lsr),
+      q(4042) => q(lss),
+      q(4043) => q(lst),
+      q(4044) => q(lsy),
+      q(4045) => q(ltc),
+      q(4046) => q(ltg),
+      q(4047) => q(lti),
+      q(4048) => q(ltn),
+      q(4049) => q(lto),
+      q(4050) => q(lts),
+      q(4051) => q(ltu),
+      q(4052) => q(luc),
+      q(4053) => q(lud),
+      q(4054) => q(lue),
+      q(4055) => q(luf),
+      q(4056) => q(luj),
+      q(4057) => q(luk),
+      q(4058) => q(lul),
+      q(4059) => q(lum),
+      q(4060) => q(lup),
+      q(4061) => q(luq),
+      q(4062) => q(lur),
+      q(4063) => q(lut),
+      q(4064) => q(luu),
+      q(4065) => q(luv),
+      q(4066) => q(luw),
+      q(4067) => q(luy),
+      q(4068) => q(luz),
+      q(4069) => q(lva),
+      q(4070) => q(lvk),
+      q(4071) => q(lvs),
+      q(4072) => q(lvu),
+      q(4073) => q(lwa),
+      q(4074) => q(lwe),
+      q(4075) => q(lwg),
+      q(4076) => q(lwh),
+      q(4077) => q(lwl),
+      q(4078) => q(lwm),
+      q(4079) => q(lwo),
+      q(4080) => q(lwt),
+      q(4081) => q(lww),
+      q(4082) => q(lya),
+      q(4083) => q(lyg),
+      q(4084) => q(lyn),
+      q(4085) => q(lzh),
+      q(4086) => q(lzl),
+      q(4087) => q(lzn),
+      q(4088) => q(lzz),
+      q(4089) => q(maa),
+      q(4090) => q(mab),
+      q(4091) => q(mae),
+      q(4092) => q(maf),
+      q(4093) => q(maj),
+      q(4094) => q(mam),
+      q(4095) => q(maq),
+      q(4096) => q(mat),
+      q(4097) => q(mau),
+      q(4098) => q(mav),
+      q(4099) => q(maw),
+      q(4100) => q(max),
+      q(4101) => q(maz),
+      q(4102) => q(mba),
+      q(4103) => q(mbb),
+      q(4104) => q(mbc),
+      q(4105) => q(mbd),
+      q(4106) => q(mbe),
+      q(4107) => q(mbf),
+      q(4108) => q(mbh),
+      q(4109) => q(mbi),
+      q(4110) => q(mbj),
+      q(4111) => q(mbk),
+      q(4112) => q(mbl),
+      q(4113) => q(mbm),
+      q(4114) => q(mbn),
+      q(4115) => q(mbo),
+      q(4116) => q(mbp),
+      q(4117) => q(mbq),
+      q(4118) => q(mbr),
+      q(4119) => q(mbs),
+      q(4120) => q(mbt),
+      q(4121) => q(mbu),
+      q(4122) => q(mbv),
+      q(4123) => q(mbw),
+      q(4124) => q(mbx),
+      q(4125) => q(mby),
+      q(4126) => q(mbz),
+      q(4127) => q(mca),
+      q(4128) => q(mcb),
+      q(4129) => q(mcc),
+      q(4130) => q(mcd),
+      q(4131) => q(mce),
+      q(4132) => q(mcf),
+      q(4133) => q(mcg),
+      q(4134) => q(mch),
+      q(4135) => q(mci),
+      q(4136) => q(mcj),
+      q(4137) => q(mck),
+      q(4138) => q(mcl),
+      q(4139) => q(mcm),
+      q(4140) => q(mcn),
+      q(4141) => q(mco),
+      q(4142) => q(mcp),
+      q(4143) => q(mcq),
+      q(4144) => q(mcr),
+      q(4145) => q(mcs),
+      q(4146) => q(mct),
+      q(4147) => q(mcu),
+      q(4148) => q(mcv),
+      q(4149) => q(mcw),
+      q(4150) => q(mcx),
+      q(4151) => q(mcy),
+      q(4152) => q(mcz),
+      q(4153) => q(mda),
+      q(4154) => q(mdb),
+      q(4155) => q(mdc),
+      q(4156) => q(mdd),
+      q(4157) => q(mde),
+      q(4158) => q(mdg),
+      q(4159) => q(mdh),
+      q(4160) => q(mdi),
+      q(4161) => q(mdj),
+      q(4162) => q(mdk),
+      q(4163) => q(mdl),
+      q(4164) => q(mdm),
+      q(4165) => q(mdn),
+      q(4166) => q(mdp),
+      q(4167) => q(mdq),
+      q(4168) => q(mds),
+      q(4169) => q(mdt),
+      q(4170) => q(mdu),
+      q(4171) => q(mdv),
+      q(4172) => q(mdw),
+      q(4173) => q(mdx),
+      q(4174) => q(mdy),
+      q(4175) => q(mdz),
+      q(4176) => q(mea),
+      q(4177) => q(meb),
+      q(4178) => q(mec),
+      q(4179) => q(med),
+      q(4180) => q(mee),
+      q(4181) => q(mef),
+      q(4182) => q(meg),
+      q(4183) => q(meh),
+      q(4184) => q(mei),
+      q(4185) => q(mej),
+      q(4186) => q(mek),
+      q(4187) => q(mel),
+      q(4188) => q(mem),
+      q(4189) => q(meo),
+      q(4190) => q(mep),
+      q(4191) => q(meq),
+      q(4192) => q(mer),
+      q(4193) => q(mes),
+      q(4194) => q(met),
+      q(4195) => q(meu),
+      q(4196) => q(mev),
+      q(4197) => q(mew),
+      q(4198) => q(mey),
+      q(4199) => q(mez),
+      q(4200) => q(mfa),
+      q(4201) => q(mfb),
+      q(4202) => q(mfc),
+      q(4203) => q(mfd),
+      q(4204) => q(mfe),
+      q(4205) => q(mff),
+      q(4206) => q(mfg),
+      q(4207) => q(mfh),
+      q(4208) => q(mfi),
+      q(4209) => q(mfj),
+      q(4210) => q(mfk),
+      q(4211) => q(mfl),
+      q(4212) => q(mfm),
+      q(4213) => q(mfn),
+      q(4214) => q(mfo),
+      q(4215) => q(mfp),
+      q(4216) => q(mfq),
+      q(4217) => q(mfr),
+      q(4218) => q(mfs),
+      q(4219) => q(mft),
+      q(4220) => q(mfu),
+      q(4221) => q(mfv),
+      q(4222) => q(mfw),
+      q(4223) => q(mfx),
+      q(4224) => q(mfy),
+      q(4225) => q(mfz),
+      q(4226) => q(mgb),
+      q(4227) => q(mgc),
+      q(4228) => q(mgd),
+      q(4229) => q(mge),
+      q(4230) => q(mgf),
+      q(4231) => q(mgg),
+      q(4232) => q(mgh),
+      q(4233) => q(mgi),
+      q(4234) => q(mgj),
+      q(4235) => q(mgk),
+      q(4236) => q(mgl),
+      q(4237) => q(mgm),
+      q(4238) => q(mgn),
+      q(4239) => q(mgo),
+      q(4240) => q(mgp),
+      q(4241) => q(mgq),
+      q(4242) => q(mgr),
+      q(4243) => q(mgs),
+      q(4244) => q(mgt),
+      q(4245) => q(mgu),
+      q(4246) => q(mgv),
+      q(4247) => q(mgw),
+      q(4248) => q(mgy),
+      q(4249) => q(mgz),
+      q(4250) => q(mha),
+      q(4251) => q(mhb),
+      q(4252) => q(mhc),
+      q(4253) => q(mhd),
+      q(4254) => q(mhe),
+      q(4255) => q(mhf),
+      q(4256) => q(mhg),
+      q(4257) => q(mhh),
+      q(4258) => q(mhi),
+      q(4259) => q(mhj),
+      q(4260) => q(mhk),
+      q(4261) => q(mhl),
+      q(4262) => q(mhm),
+      q(4263) => q(mhn),
+      q(4264) => q(mho),
+      q(4265) => q(mhp),
+      q(4266) => q(mhq),
+      q(4267) => q(mhr),
+      q(4268) => q(mhs),
+      q(4269) => q(mht),
+      q(4270) => q(mhu),
+      q(4271) => q(mhw),
+      q(4272) => q(mhx),
+      q(4273) => q(mhy),
+      q(4274) => q(mhz),
+      q(4275) => q(mia),
+      q(4276) => q(mib),
+      q(4277) => q(mid),
+      q(4278) => q(mie),
+      q(4279) => q(mif),
+      q(4280) => q(mig),
+      q(4281) => q(mih),
+      q(4282) => q(mii),
+      q(4283) => q(mij),
+      q(4284) => q(mik),
+      q(4285) => q(mil),
+      q(4286) => q(mim),
+      q(4287) => q(mio),
+      q(4288) => q(mip),
+      q(4289) => q(miq),
+      q(4290) => q(mir),
+      q(4291) => q(mit),
+      q(4292) => q(miu),
+      q(4293) => q(miw),
+      q(4294) => q(mix),
+      q(4295) => q(miy),
+      q(4296) => q(miz),
+      q(4297) => q(mjc),
+      q(4298) => q(mjd),
+      q(4299) => q(mje),
+      q(4300) => q(mjg),
+      q(4301) => q(mjh),
+      q(4302) => q(mji),
+      q(4303) => q(mjj),
+      q(4304) => q(mjk),
+      q(4305) => q(mjl),
+      q(4306) => q(mjm),
+      q(4307) => q(mjn),
+      q(4308) => q(mjo),
+      q(4309) => q(mjp),
+      q(4310) => q(mjq),
+      q(4311) => q(mjr),
+      q(4312) => q(mjs),
+      q(4313) => q(mjt),
+      q(4314) => q(mju),
+      q(4315) => q(mjv),
+      q(4316) => q(mjw),
+      q(4317) => q(mjx),
+      q(4318) => q(mjy),
+      q(4319) => q(mjz),
+      q(4320) => q(mka),
+      q(4321) => q(mkb),
+      q(4322) => q(mkc),
+      q(4323) => q(mke),
+      q(4324) => q(mkf),
+      q(4325) => q(mkg),
+      q(4326) => q(mki),
+      q(4327) => q(mkj),
+      q(4328) => q(mkk),
+      q(4329) => q(mkl),
+      q(4330) => q(mkm),
+      q(4331) => q(mkn),
+      q(4332) => q(mko),
+      q(4333) => q(mkp),
+      q(4334) => q(mkq),
+      q(4335) => q(mkr),
+      q(4336) => q(mks),
+      q(4337) => q(mkt),
+      q(4338) => q(mku),
+      q(4339) => q(mkv),
+      q(4340) => q(mkw),
+      q(4341) => q(mkx),
+      q(4342) => q(mky),
+      q(4343) => q(mkz),
+      q(4344) => q(mla),
+      q(4345) => q(mlb),
+      q(4346) => q(mlc),
+      q(4347) => q(mld),
+      q(4348) => q(mle),
+      q(4349) => q(mlf),
+      q(4350) => q(mlh),
+      q(4351) => q(mli),
+      q(4352) => q(mlj),
+      q(4353) => q(mlk),
+      q(4354) => q(mll),
+      q(4355) => q(mlm),
+      q(4356) => q(mln),
+      q(4357) => q(mlo),
+      q(4358) => q(mlp),
+      q(4359) => q(mlq),
+      q(4360) => q(mlr),
+      q(4361) => q(mls),
+      q(4362) => q(mlu),
+      q(4363) => q(mlv),
+      q(4364) => q(mlw),
+      q(4365) => q(mlx),
+      q(4366) => q(mlz),
+      q(4367) => q(mma),
+      q(4368) => q(mmb),
+      q(4369) => q(mmc),
+      q(4370) => q(mmd),
+      q(4371) => q(mme),
+      q(4372) => q(mmf),
+      q(4373) => q(mmg),
+      q(4374) => q(mmh),
+      q(4375) => q(mmi),
+      q(4376) => q(mmj),
+      q(4377) => q(mmk),
+      q(4378) => q(mml),
+      q(4379) => q(mmm),
+      q(4380) => q(mmn),
+      q(4381) => q(mmo),
+      q(4382) => q(mmp),
+      q(4383) => q(mmq),
+      q(4384) => q(mmr),
+      q(4385) => q(mmt),
+      q(4386) => q(mmu),
+      q(4387) => q(mmv),
+      q(4388) => q(mmw),
+      q(4389) => q(mmx),
+      q(4390) => q(mmy),
+      q(4391) => q(mmz),
+      q(4392) => q(mna),
+      q(4393) => q(mnb),
+      q(4394) => q(mnd),
+      q(4395) => q(mne),
+      q(4396) => q(mnf),
+      q(4397) => q(mng),
+      q(4398) => q(mnh),
+      q(4399) => q(mnj),
+      q(4400) => q(mnk),
+      q(4401) => q(mnl),
+      q(4402) => q(mnm),
+      q(4403) => q(mnn),
+      q(4404) => q(mnp),
+      q(4405) => q(mnq),
+      q(4406) => q(mnr),
+      q(4407) => q(mns),
+      q(4408) => q(mnt),
+      q(4409) => q(mnu),
+      q(4410) => q(mnv),
+      q(4411) => q(mnw),
+      q(4412) => q(mnx),
+      q(4413) => q(mny),
+      q(4414) => q(mnz),
+      q(4415) => q(moa),
+      q(4416) => q(moc),
+      q(4417) => q(mod),
+      q(4418) => q(moe),
+      q(4419) => q(mog),
+      q(4420) => q(moi),
+      q(4421) => q(moj),
+      q(4422) => q(mok),
+      q(4423) => q(mom),
+      q(4424) => q(moo),
+      q(4425) => q(mop),
+      q(4426) => q(moq),
+      q(4427) => q(mor),
+      q(4428) => q(mou),
+      q(4429) => q(mov),
+      q(4430) => q(mow),
+      q(4431) => q(mox),
+      q(4432) => q(moy),
+      q(4433) => q(moz),
+      q(4434) => q(mpa),
+      q(4435) => q(mpb),
+      q(4436) => q(mpc),
+      q(4437) => q(mpd),
+      q(4438) => q(mpe),
+      q(4439) => q(mpg),
+      q(4440) => q(mph),
+      q(4441) => q(mpi),
+      q(4442) => q(mpj),
+      q(4443) => q(mpk),
+      q(4444) => q(mpl),
+      q(4445) => q(mpm),
+      q(4446) => q(mpn),
+      q(4447) => q(mpo),
+      q(4448) => q(mpp),
+      q(4449) => q(mpq),
+      q(4450) => q(mpr),
+      q(4451) => q(mps),
+      q(4452) => q(mpt),
+      q(4453) => q(mpu),
+      q(4454) => q(mpv),
+      q(4455) => q(mpw),
+      q(4456) => q(mpx),
+      q(4457) => q(mpy),
+      q(4458) => q(mpz),
+      q(4459) => q(mqa),
+      q(4460) => q(mqb),
+      q(4461) => q(mqc),
+      q(4462) => q(mqe),
+      q(4463) => q(mqf),
+      q(4464) => q(mqg),
+      q(4465) => q(mqh),
+      q(4466) => q(mqi),
+      q(4467) => q(mqj),
+      q(4468) => q(mqk),
+      q(4469) => q(mql),
+      q(4470) => q(mqm),
+      q(4471) => q(mqn),
+      q(4472) => q(mqo),
+      q(4473) => q(mqp),
+      q(4474) => q(mqq),
+      q(4475) => q(mqr),
+      q(4476) => q(mqs),
+      q(4477) => q(mqt),
+      q(4478) => q(mqu),
+      q(4479) => q(mqv),
+      q(4480) => q(mqw),
+      q(4481) => q(mqx),
+      q(4482) => q(mqy),
+      q(4483) => q(mqz),
+      q(4484) => q(mra),
+      q(4485) => q(mrb),
+      q(4486) => q(mrc),
+      q(4487) => q(mrd),
+      q(4488) => q(mre),
+      q(4489) => q(mrf),
+      q(4490) => q(mrg),
+      q(4491) => q(mrh),
+      q(4492) => q(mrj),
+      q(4493) => q(mrk),
+      q(4494) => q(mrl),
+      q(4495) => q(mrm),
+      q(4496) => q(mrn),
+      q(4497) => q(mro),
+      q(4498) => q(mrp),
+      q(4499) => q(mrq),
+      q(4500) => q(mrr),
+      q(4501) => q(mrs),
+      q(4502) => q(mrt),
+      q(4503) => q(mru),
+      q(4504) => q(mrv),
+      q(4505) => q(mrw),
+      q(4506) => q(mrx),
+      q(4507) => q(mry),
+      q(4508) => q(mrz),
+      q(4509) => q(msb),
+      q(4510) => q(msc),
+      q(4511) => q(msd),
+      q(4512) => q(mse),
+      q(4513) => q(msf),
+      q(4514) => q(msg),
+      q(4515) => q(msh),
+      q(4516) => q(msi),
+      q(4517) => q(msj),
+      q(4518) => q(msk),
+      q(4519) => q(msl),
+      q(4520) => q(msm),
+      q(4521) => q(msn),
+      q(4522) => q(mso),
+      q(4523) => q(msp),
+      q(4524) => q(msq),
+      q(4525) => q(msr),
+      q(4526) => q(mss),
+      q(4527) => q(msu),
+      q(4528) => q(msv),
+      q(4529) => q(msw),
+      q(4530) => q(msx),
+      q(4531) => q(msy),
+      q(4532) => q(msz),
+      q(4533) => q(mta),
+      q(4534) => q(mtb),
+      q(4535) => q(mtc),
+      q(4536) => q(mtd),
+      q(4537) => q(mte),
+      q(4538) => q(mtf),
+      q(4539) => q(mtg),
+      q(4540) => q(mth),
+      q(4541) => q(mti),
+      q(4542) => q(mtj),
+      q(4543) => q(mtk),
+      q(4544) => q(mtl),
+      q(4545) => q(mtm),
+      q(4546) => q(mtn),
+      q(4547) => q(mto),
+      q(4548) => q(mtp),
+      q(4549) => q(mtq),
+      q(4550) => q(mtr),
+      q(4551) => q(mts),
+      q(4552) => q(mtt),
+      q(4553) => q(mtu),
+      q(4554) => q(mtv),
+      q(4555) => q(mtw),
+      q(4556) => q(mtx),
+      q(4557) => q(mty),
+      q(4558) => q(mua),
+      q(4559) => q(mub),
+      q(4560) => q(muc),
+      q(4561) => q(mud),
+      q(4562) => q(mue),
+      q(4563) => q(mug),
+      q(4564) => q(muh),
+      q(4565) => q(mui),
+      q(4566) => q(muj),
+      q(4567) => q(muk),
+      q(4568) => q(mum),
+      q(4569) => q(muo),
+      q(4570) => q(mup),
+      q(4571) => q(muq),
+      q(4572) => q(mur),
+      q(4573) => q(mut),
+      q(4574) => q(muu),
+      q(4575) => q(muv),
+      q(4576) => q(mux),
+      q(4577) => q(muy),
+      q(4578) => q(muz),
+      q(4579) => q(mva),
+      q(4580) => q(mvb),
+      q(4581) => q(mvd),
+      q(4582) => q(mve),
+      q(4583) => q(mvf),
+      q(4584) => q(mvg),
+      q(4585) => q(mvh),
+      q(4586) => q(mvi),
+      q(4587) => q(mvk),
+      q(4588) => q(mvl),
+      q(4589) => q(mvm),
+      q(4590) => q(mvn),
+      q(4591) => q(mvo),
+      q(4592) => q(mvp),
+      q(4593) => q(mvq),
+      q(4594) => q(mvr),
+      q(4595) => q(mvs),
+      q(4596) => q(mvt),
+      q(4597) => q(mvu),
+      q(4598) => q(mvv),
+      q(4599) => q(mvw),
+      q(4600) => q(mvx),
+      q(4601) => q(mvy),
+      q(4602) => q(mvz),
+      q(4603) => q(mwa),
+      q(4604) => q(mwb),
+      q(4605) => q(mwc),
+      q(4606) => q(mwd),
+      q(4607) => q(mwe),
+      q(4608) => q(mwf),
+      q(4609) => q(mwg),
+      q(4610) => q(mwh),
+      q(4611) => q(mwi),
+      q(4612) => q(mwj),
+      q(4613) => q(mwk),
+      q(4614) => q(mwm),
+      q(4615) => q(mwn),
+      q(4616) => q(mwo),
+      q(4617) => q(mwp),
+      q(4618) => q(mwq),
+      q(4619) => q(mws),
+      q(4620) => q(mwt),
+      q(4621) => q(mwu),
+      q(4622) => q(mwv),
+      q(4623) => q(mww),
+      q(4624) => q(mwx),
+      q(4625) => q(mwy),
+      q(4626) => q(mwz),
+      q(4627) => q(mxa),
+      q(4628) => q(mxb),
+      q(4629) => q(mxc),
+      q(4630) => q(mxd),
+      q(4631) => q(mxe),
+      q(4632) => q(mxf),
+      q(4633) => q(mxg),
+      q(4634) => q(mxh),
+      q(4635) => q(mxi),
+      q(4636) => q(mxj),
+      q(4637) => q(mxk),
+      q(4638) => q(mxl),
+      q(4639) => q(mxm),
+      q(4640) => q(mxn),
+      q(4641) => q(mxo),
+      q(4642) => q(mxp),
+      q(4643) => q(mxq),
+      q(4644) => q(mxr),
+      q(4645) => q(mxs),
+      q(4646) => q(mxt),
+      q(4647) => q(mxu),
+      q(4648) => q(mxv),
+      q(4649) => q(mxw),
+      q(4650) => q(mxx),
+      q(4651) => q(mxy),
+      q(4652) => q(mxz),
+      q(4653) => q(myb),
+      q(4654) => q(myc),
+      q(4655) => q(myd),
+      q(4656) => q(mye),
+      q(4657) => q(myf),
+      q(4658) => q(myg),
+      q(4659) => q(myh),
+      q(4660) => q(myi),
+      q(4661) => q(myj),
+      q(4662) => q(myk),
+      q(4663) => q(myl),
+      q(4664) => q(mym),
+      q(4665) => q(myo),
+      q(4666) => q(myp),
+      q(4667) => q(myq),
+      q(4668) => q(myr),
+      q(4669) => q(mys),
+      q(4670) => q(myu),
+      q(4671) => q(myw),
+      q(4672) => q(myx),
+      q(4673) => q(myy),
+      q(4674) => q(myz),
+      q(4675) => q(mza),
+      q(4676) => q(mzb),
+      q(4677) => q(mzc),
+      q(4678) => q(mzd),
+      q(4679) => q(mze),
+      q(4680) => q(mzg),
+      q(4681) => q(mzh),
+      q(4682) => q(mzi),
+      q(4683) => q(mzj),
+      q(4684) => q(mzk),
+      q(4685) => q(mzl),
+      q(4686) => q(mzm),
+      q(4687) => q(mzn),
+      q(4688) => q(mzo),
+      q(4689) => q(mzp),
+      q(4690) => q(mzq),
+      q(4691) => q(mzr),
+      q(4692) => q(mzs),
+      q(4693) => q(mzt),
+      q(4694) => q(mzu),
+      q(4695) => q(mzv),
+      q(4696) => q(mzw),
+      q(4697) => q(mzx),
+      q(4698) => q(mzy),
+      q(4699) => q(mzz),
+      q(4700) => q(naa),
+      q(4701) => q(nab),
+      q(4702) => q(nac),
+      q(4703) => q(nad),
+      q(4704) => q(nae),
+      q(4705) => q(naf),
+      q(4706) => q(nag),
+      q(4707) => q(naj),
+      q(4708) => q(nak),
+      q(4709) => q(nal),
+      q(4710) => q(nam),
+      q(4711) => q(nan),
+      q(4712) => q(nao),
+      q(4713) => q(naq),
+      q(4714) => q(nar),
+      q(4715) => q(nas),
+      q(4716) => q(nat),
+      q(4717) => q(naw),
+      q(4718) => q(nax),
+      q(4719) => q(nay),
+      q(4720) => q(naz),
+      q(4721) => q(nba),
+      q(4722) => q(nbb),
+      q(4723) => q(nbc),
+      q(4724) => q(nbd),
+      q(4725) => q(nbe),
+      q(4726) => q(nbg),
+      q(4727) => q(nbh),
+      q(4728) => q(nbi),
+      q(4729) => q(nbj),
+      q(4730) => q(nbk),
+      q(4731) => q(nbm),
+      q(4732) => q(nbn),
+      q(4733) => q(nbo),
+      q(4734) => q(nbp),
+      q(4735) => q(nbq),
+      q(4736) => q(nbr),
+      q(4737) => q(nbs),
+      q(4738) => q(nbt),
+      q(4739) => q(nbu),
+      q(4740) => q(nbv),
+      q(4741) => q(nbw),
+      q(4742) => q(nbx),
+      q(4743) => q(nby),
+      q(4744) => q(nca),
+      q(4745) => q(ncb),
+      q(4746) => q(ncc),
+      q(4747) => q(ncd),
+      q(4748) => q(nce),
+      q(4749) => q(ncf),
+      q(4750) => q(ncg),
+      q(4751) => q(nch),
+      q(4752) => q(nci),
+      q(4753) => q(ncj),
+      q(4754) => q(nck),
+      q(4755) => q(ncl),
+      q(4756) => q(ncm),
+      q(4757) => q(ncn),
+      q(4758) => q(nco),
+      q(4759) => q(ncp),
+      q(4760) => q(ncr),
+      q(4761) => q(ncs),
+      q(4762) => q(nct),
+      q(4763) => q(ncu),
+      q(4764) => q(ncx),
+      q(4765) => q(ncz),
+      q(4766) => q(nda),
+      q(4767) => q(ndb),
+      q(4768) => q(ndc),
+      q(4769) => q(ndd),
+      q(4770) => q(ndf),
+      q(4771) => q(ndg),
+      q(4772) => q(ndh),
+      q(4773) => q(ndi),
+      q(4774) => q(ndj),
+      q(4775) => q(ndk),
+      q(4776) => q(ndl),
+      q(4777) => q(ndm),
+      q(4778) => q(ndn),
+      q(4779) => q(ndp),
+      q(4780) => q(ndq),
+      q(4781) => q(ndr),
+      q(4782) => q(ndt),
+      q(4783) => q(ndu),
+      q(4784) => q(ndv),
+      q(4785) => q(ndw),
+      q(4786) => q(ndx),
+      q(4787) => q(ndy),
+      q(4788) => q(ndz),
+      q(4789) => q(nea),
+      q(4790) => q(neb),
+      q(4791) => q(nec),
+      q(4792) => q(ned),
+      q(4793) => q(nee),
+      q(4794) => q(nef),
+      q(4795) => q(neg),
+      q(4796) => q(neh),
+      q(4797) => q(nei),
+      q(4798) => q(nej),
+      q(4799) => q(nek),
+      q(4800) => q(nem),
+      q(4801) => q(nen),
+      q(4802) => q(neo),
+      q(4803) => q(neq),
+      q(4804) => q(ner),
+      q(4805) => q(nes),
+      q(4806) => q(net),
+      q(4807) => q(neu),
+      q(4808) => q(nev),
+      q(4809) => q(nex),
+      q(4810) => q(ney),
+      q(4811) => q(nez),
+      q(4812) => q(nfa),
+      q(4813) => q(nfd),
+      q(4814) => q(nfl),
+      q(4815) => q(nfr),
+      q(4816) => q(nfu),
+      q(4817) => q(nga),
+      q(4818) => q(ngb),
+      q(4819) => q(ngc),
+      q(4820) => q(ngd),
+      q(4821) => q(nge),
+      q(4822) => q(ngg),
+      q(4823) => q(ngh),
+      q(4824) => q(ngi),
+      q(4825) => q(ngj),
+      q(4826) => q(ngk),
+      q(4827) => q(ngl),
+      q(4828) => q(ngm),
+      q(4829) => q(ngn),
+      q(4830) => q(ngo),
+      q(4831) => q(ngp),
+      q(4832) => q(ngq),
+      q(4833) => q(ngr),
+      q(4834) => q(ngs),
+      q(4835) => q(ngt),
+      q(4836) => q(ngu),
+      q(4837) => q(ngv),
+      q(4838) => q(ngw),
+      q(4839) => q(ngx),
+      q(4840) => q(ngy),
+      q(4841) => q(ngz),
+      q(4842) => q(nha),
+      q(4843) => q(nhb),
+      q(4844) => q(nhc),
+      q(4845) => q(nhd),
+      q(4846) => q(nhe),
+      q(4847) => q(nhf),
+      q(4848) => q(nhg),
+      q(4849) => q(nhh),
+      q(4850) => q(nhi),
+      q(4851) => q(nhk),
+      q(4852) => q(nhm),
+      q(4853) => q(nhn),
+      q(4854) => q(nho),
+      q(4855) => q(nhp),
+      q(4856) => q(nhq),
+      q(4857) => q(nhr),
+      q(4858) => q(nht),
+      q(4859) => q(nhu),
+      q(4860) => q(nhv),
+      q(4861) => q(nhw),
+      q(4862) => q(nhx),
+      q(4863) => q(nhy),
+      q(4864) => q(nhz),
+      q(4865) => q(nib),
+      q(4866) => q(nid),
+      q(4867) => q(nie),
+      q(4868) => q(nif),
+      q(4869) => q(nig),
+      q(4870) => q(nih),
+      q(4871) => q(nii),
+      q(4872) => q(nij),
+      q(4873) => q(nik),
+      q(4874) => q(nil),
+      q(4875) => q(nim),
+      q(4876) => q(nin),
+      q(4877) => q(nio),
+      q(4878) => q(niq),
+      q(4879) => q(nir),
+      q(4880) => q(nis),
+      q(4881) => q(nit),
+      q(4882) => q(niv),
+      q(4883) => q(niw),
+      q(4884) => q(nix),
+      q(4885) => q(niy),
+      q(4886) => q(niz),
+      q(4887) => q(nja),
+      q(4888) => q(njb),
+      q(4889) => q(njd),
+      q(4890) => q(njh),
+      q(4891) => q(nji),
+      q(4892) => q(njj),
+      q(4893) => q(njl),
+      q(4894) => q(njm),
+      q(4895) => q(njn),
+      q(4896) => q(njo),
+      q(4897) => q(njr),
+      q(4898) => q(njs),
+      q(4899) => q(njt),
+      q(4900) => q(nju),
+      q(4901) => q(njx),
+      q(4902) => q(njy),
+      q(4903) => q(njz),
+      q(4904) => q(nka),
+      q(4905) => q(nkb),
+      q(4906) => q(nkc),
+      q(4907) => q(nkd),
+      q(4908) => q(nke),
+      q(4909) => q(nkf),
+      q(4910) => q(nkg),
+      q(4911) => q(nkh),
+      q(4912) => q(nki),
+      q(4913) => q(nkj),
+      q(4914) => q(nkk),
+      q(4915) => q(nkm),
+      q(4916) => q(nkn),
+      q(4917) => q(nko),
+      q(4918) => q(nkp),
+      q(4919) => q(nkq),
+      q(4920) => q(nkr),
+      q(4921) => q(nks),
+      q(4922) => q(nkt),
+      q(4923) => q(nku),
+      q(4924) => q(nkv),
+      q(4925) => q(nkw),
+      q(4926) => q(nkx),
+      q(4927) => q(nkz),
+      q(4928) => q(nla),
+      q(4929) => q(nlc),
+      q(4930) => q(nle),
+      q(4931) => q(nlg),
+      q(4932) => q(nli),
+      q(4933) => q(nlj),
+      q(4934) => q(nlk),
+      q(4935) => q(nll),
+      q(4936) => q(nlo),
+      q(4937) => q(nlr),
+      q(4938) => q(nlu),
+      q(4939) => q(nlv),
+      q(4940) => q(nlx),
+      q(4941) => q(nly),
+      q(4942) => q(nlz),
+      q(4943) => q(nma),
+      q(4944) => q(nmb),
+      q(4945) => q(nmc),
+      q(4946) => q(nmd),
+      q(4947) => q(nme),
+      q(4948) => q(nmf),
+      q(4949) => q(nmg),
+      q(4950) => q(nmh),
+      q(4951) => q(nmi),
+      q(4952) => q(nmj),
+      q(4953) => q(nmk),
+      q(4954) => q(nml),
+      q(4955) => q(nmm),
+      q(4956) => q(nmn),
+      q(4957) => q(nmo),
+      q(4958) => q(nmp),
+      q(4959) => q(nmq),
+      q(4960) => q(nmr),
+      q(4961) => q(nms),
+      q(4962) => q(nmt),
+      q(4963) => q(nmu),
+      q(4964) => q(nmv),
+      q(4965) => q(nmw),
+      q(4966) => q(nmx),
+      q(4967) => q(nmy),
+      q(4968) => q(nmz),
+      q(4969) => q(nna),
+      q(4970) => q(nnb),
+      q(4971) => q(nnc),
+      q(4972) => q(nnd),
+      q(4973) => q(nne),
+      q(4974) => q(nnf),
+      q(4975) => q(nng),
+      q(4976) => q(nnh),
+      q(4977) => q(nni),
+      q(4978) => q(nnj),
+      q(4979) => q(nnk),
+      q(4980) => q(nnl),
+      q(4981) => q(nnm),
+      q(4982) => q(nnn),
+      q(4983) => q(nnp),
+      q(4984) => q(nnq),
+      q(4985) => q(nnr),
+      q(4986) => q(nns),
+      q(4987) => q(nnt),
+      q(4988) => q(nnu),
+      q(4989) => q(nnv),
+      q(4990) => q(nnw),
+      q(4991) => q(nnx),
+      q(4992) => q(nny),
+      q(4993) => q(nnz),
+      q(4994) => q(noa),
+      q(4995) => q(noc),
+      q(4996) => q(nod),
+      q(4997) => q(noe),
+      q(4998) => q(nof),
+      q(4999) => q(noh),
+      q(5000) => q(noi),
+      q(5001) => q(noj),
+      q(5002) => q(nok),
+      q(5003) => q(nom),
+      q(5004) => q(nop),
+      q(5005) => q(noq),
+      q(5006) => q(nos),
+      q(5007) => q(not),
+      q(5008) => q(nou),
+      q(5009) => q(nov),
+      q(5010) => q(now),
+      q(5011) => q(noy),
+      q(5012) => q(noz),
+      q(5013) => q(npa),
+      q(5014) => q(npb),
+      q(5015) => q(npg),
+      q(5016) => q(nph),
+      q(5017) => q(npi),
+      q(5018) => q(npl),
+      q(5019) => q(npn),
+      q(5020) => q(npo),
+      q(5021) => q(nps),
+      q(5022) => q(npu),
+      q(5023) => q(npy),
+      q(5024) => q(nqg),
+      q(5025) => q(nqk),
+      q(5026) => q(nqm),
+      q(5027) => q(nqn),
+      q(5028) => q(nqy),
+      q(5029) => q(nra),
+      q(5030) => q(nrb),
+      q(5031) => q(nrc),
+      q(5032) => q(nre),
+      q(5033) => q(nrg),
+      q(5034) => q(nri),
+      q(5035) => q(nrl),
+      q(5036) => q(nrm),
+      q(5037) => q(nrn),
+      q(5038) => q(nrp),
+      q(5039) => q(nrr),
+      q(5040) => q(nrt),
+      q(5041) => q(nru),
+      q(5042) => q(nrx),
+      q(5043) => q(nrz),
+      q(5044) => q(nsa),
+      q(5045) => q(nsc),
+      q(5046) => q(nsd),
+      q(5047) => q(nse),
+      q(5048) => q(nsf),
+      q(5049) => q(nsg),
+      q(5050) => q(nsh),
+      q(5051) => q(nsi),
+      q(5052) => q(nsk),
+      q(5053) => q(nsl),
+      q(5054) => q(nsm),
+      q(5055) => q(nsn),
+      q(5056) => q(nsp),
+      q(5057) => q(nsq),
+      q(5058) => q(nsr),
+      q(5059) => q(nss),
+      q(5060) => q(nst),
+      q(5061) => q(nsu),
+      q(5062) => q(nsv),
+      q(5063) => q(nsw),
+      q(5064) => q(nsx),
+      q(5065) => q(nsy),
+      q(5066) => q(nsz),
+      q(5067) => q(nte),
+      q(5068) => q(nti),
+      q(5069) => q(ntj),
+      q(5070) => q(ntk),
+      q(5071) => q(ntm),
+      q(5072) => q(nto),
+      q(5073) => q(ntp),
+      q(5074) => q(ntr),
+      q(5075) => q(nts),
+      q(5076) => q(ntu),
+      q(5077) => q(ntw),
+      q(5078) => q(ntx),
+      q(5079) => q(nty),
+      q(5080) => q(ntz),
+      q(5081) => q(nua),
+      q(5082) => q(nuc),
+      q(5083) => q(nud),
+      q(5084) => q(nue),
+      q(5085) => q(nuf),
+      q(5086) => q(nug),
+      q(5087) => q(nuh),
+      q(5088) => q(nui),
+      q(5089) => q(nuj),
+      q(5090) => q(nuk),
+      q(5091) => q(nul),
+      q(5092) => q(num),
+      q(5093) => q(nun),
+      q(5094) => q(nuo),
+      q(5095) => q(nup),
+      q(5096) => q(nuq),
+      q(5097) => q(nur),
+      q(5098) => q(nus),
+      q(5099) => q(nut),
+      q(5100) => q(nuu),
+      q(5101) => q(nuv),
+      q(5102) => q(nuw),
+      q(5103) => q(nux),
+      q(5104) => q(nuy),
+      q(5105) => q(nuz),
+      q(5106) => q(nvh),
+      q(5107) => q(nvm),
+      q(5108) => q(nvo),
+      q(5109) => q(nwa),
+      q(5110) => q(nwb),
+      q(5111) => q(nwe),
+      q(5112) => q(nwg),
+      q(5113) => q(nwi),
+      q(5114) => q(nwm),
+      q(5115) => q(nwo),
+      q(5116) => q(nwr),
+      q(5117) => q(nwx),
+      q(5118) => q(nwy),
+      q(5119) => q(nxa),
+      q(5120) => q(nxd),
+      q(5121) => q(nxe),
+      q(5122) => q(nxg),
+      q(5123) => q(nxi),
+      q(5124) => q(nxk),
+      q(5125) => q(nxl),
+      q(5126) => q(nxm),
+      q(5127) => q(nxn),
+      q(5128) => q(nxq),
+      q(5129) => q(nxr),
+      q(5130) => q(nxu),
+      q(5131) => q(nxx),
+      q(5132) => q(nyb),
+      q(5133) => q(nyc),
+      q(5134) => q(nyd),
+      q(5135) => q(nye),
+      q(5136) => q(nyf),
+      q(5137) => q(nyg),
+      q(5138) => q(nyh),
+      q(5139) => q(nyi),
+      q(5140) => q(nyj),
+      q(5141) => q(nyk),
+      q(5142) => q(nyl),
+      q(5143) => q(nyp),
+      q(5144) => q(nyq),
+      q(5145) => q(nyr),
+      q(5146) => q(nys),
+      q(5147) => q(nyt),
+      q(5148) => q(nyu),
+      q(5149) => q(nyv),
+      q(5150) => q(nyw),
+      q(5151) => q(nyx),
+      q(5152) => q(nyy),
+      q(5153) => q(nza),
+      q(5154) => q(nzb),
+      q(5155) => q(nzk),
+      q(5156) => q(nzm),
+      q(5157) => q(nzs),
+      q(5158) => q(nzu),
+      q(5159) => q(nzy),
+      q(5160) => q(nzz),
+      q(5161) => q(oaa),
+      q(5162) => q(oac),
+      q(5163) => q(oar),
+      q(5164) => q(oav),
+      q(5165) => q(obi),
+      q(5166) => q(obk),
+      q(5167) => q(obl),
+      q(5168) => q(obm),
+      q(5169) => q(obo),
+      q(5170) => q(obr),
+      q(5171) => q(obt),
+      q(5172) => q(obu),
+      q(5173) => q(oca),
+      q(5174) => q(och),
+      q(5175) => q(oco),
+      q(5176) => q(ocu),
+      q(5177) => q(oda),
+      q(5178) => q(odk),
+      q(5179) => q(odt),
+      q(5180) => q(odu),
+      q(5181) => q(ofo),
+      q(5182) => q(ofs),
+      q(5183) => q(ofu),
+      q(5184) => q(ogb),
+      q(5185) => q(ogc),
+      q(5186) => q(oge),
+      q(5187) => q(ogg),
+      q(5188) => q(ogo),
+      q(5189) => q(ogu),
+      q(5190) => q(oht),
+      q(5191) => q(ohu),
+      q(5192) => q(oia),
+      q(5193) => q(oin),
+      q(5194) => q(ojb),
+      q(5195) => q(ojc),
+      q(5196) => q(ojg),
+      q(5197) => q(ojp),
+      q(5198) => q(ojs),
+      q(5199) => q(ojv),
+      q(5200) => q(ojw),
+      q(5201) => q(oka),
+      q(5202) => q(okb),
+      q(5203) => q(okd),
+      q(5204) => q(oke),
+      q(5205) => q(okg),
+      q(5206) => q(okh),
+      q(5207) => q(oki),
+      q(5208) => q(okj),
+      q(5209) => q(okk),
+      q(5210) => q(okl),
+      q(5211) => q(okm),
+      q(5212) => q(okn),
+      q(5213) => q(oko),
+      q(5214) => q(okr),
+      q(5215) => q(oks),
+      q(5216) => q(oku),
+      q(5217) => q(okv),
+      q(5218) => q(okx),
+      q(5219) => q(ola),
+      q(5220) => q(old),
+      q(5221) => q(ole),
+      q(5222) => q(olm),
+      q(5223) => q(olo),
+      q(5224) => q(olr),
+      q(5225) => q(oma),
+      q(5226) => q(omb),
+      q(5227) => q(omc),
+      q(5228) => q(ome),
+      q(5229) => q(omg),
+      q(5230) => q(omi),
+      q(5231) => q(omk),
+      q(5232) => q(oml),
+      q(5233) => q(omn),
+      q(5234) => q(omo),
+      q(5235) => q(omp),
+      q(5236) => q(omr),
+      q(5237) => q(omt),
+      q(5238) => q(omu),
+      q(5239) => q(omw),
+      q(5240) => q(omx),
+      q(5241) => q(ona),
+      q(5242) => q(onb),
+      q(5243) => q(one),
+      q(5244) => q(ong),
+      q(5245) => q(oni),
+      q(5246) => q(onj),
+      q(5247) => q(onk),
+      q(5248) => q(onn),
+      q(5249) => q(ono),
+      q(5250) => q(onp),
+      q(5251) => q(onr),
+      q(5252) => q(ons),
+      q(5253) => q(ont),
+      q(5254) => q(onu),
+      q(5255) => q(onw),
+      q(5256) => q(onx),
+      q(5257) => q(ood),
+      q(5258) => q(oog),
+      q(5259) => q(oon),
+      q(5260) => q(oor),
+      q(5261) => q(oos),
+      q(5262) => q(opa),
+      q(5263) => q(opk),
+      q(5264) => q(opm),
+      q(5265) => q(opo),
+      q(5266) => q(opt),
+      q(5267) => q(opy),
+      q(5268) => q(ora),
+      q(5269) => q(orc),
+      q(5270) => q(ore),
+      q(5271) => q(org),
+      q(5272) => q(orh),
+      q(5273) => q(orn),
+      q(5274) => q(oro),
+      q(5275) => q(orr),
+      q(5276) => q(ors),
+      q(5277) => q(ort),
+      q(5278) => q(oru),
+      q(5279) => q(orv),
+      q(5280) => q(orw),
+      q(5281) => q(orx),
+      q(5282) => q(ory),
+      q(5283) => q(orz),
+      q(5284) => q(osc),
+      q(5285) => q(osi),
+      q(5286) => q(oso),
+      q(5287) => q(osp),
+      q(5288) => q(ost),
+      q(5289) => q(osu),
+      q(5290) => q(osx),
+      q(5291) => q(otb),
+      q(5292) => q(otd),
+      q(5293) => q(ote),
+      q(5294) => q(oti),
+      q(5295) => q(otk),
+      q(5296) => q(otl),
+      q(5297) => q(otm),
+      q(5298) => q(otn),
+      q(5299) => q(otq),
+      q(5300) => q(otr),
+      q(5301) => q(ots),
+      q(5302) => q(ott),
+      q(5303) => q(otu),
+      q(5304) => q(otw),
+      q(5305) => q(otx),
+      q(5306) => q(oty),
+      q(5307) => q(otz),
+      q(5308) => q(oua),
+      q(5309) => q(oub),
+      q(5310) => q(oue),
+      q(5311) => q(oui),
+      q(5312) => q(oum),
+      q(5313) => q(oun),
+      q(5314) => q(owi),
+      q(5315) => q(owl),
+      q(5316) => q(oyb),
+      q(5317) => q(oyd),
+      q(5318) => q(oym),
+      q(5319) => q(oyy),
+      q(5320) => q(ozm),
+      q(5321) => q(pab),
+      q(5322) => q(pac),
+      q(5323) => q(pad),
+      q(5324) => q(pae),
+      q(5325) => q(paf),
+      q(5326) => q(pah),
+      q(5327) => q(pai),
+      q(5328) => q(pak),
+      q(5329) => q(pao),
+      q(5330) => q(paq),
+      q(5331) => q(par),
+      q(5332) => q(pas),
+      q(5333) => q(pat),
+      q(5334) => q(pav),
+      q(5335) => q(paw),
+      q(5336) => q(pax),
+      q(5337) => q(pay),
+      q(5338) => q(paz),
+      q(5339) => q(pbb),
+      q(5340) => q(pbc),
+      q(5341) => q(pbe),
+      q(5342) => q(pbf),
+      q(5343) => q(pbg),
+      q(5344) => q(pbh),
+      q(5345) => q(pbi),
+      q(5346) => q(pbl),
+      q(5347) => q(pbn),
+      q(5348) => q(pbo),
+      q(5349) => q(pbp),
+      q(5350) => q(pbr),
+      q(5351) => q(pbs),
+      q(5352) => q(pbt),
+      q(5353) => q(pbu),
+      q(5354) => q(pbv),
+      q(5355) => q(pby),
+      q(5356) => q(pca),
+      q(5357) => q(pcb),
+      q(5358) => q(pcc),
+      q(5359) => q(pcd),
+      q(5360) => q(pce),
+      q(5361) => q(pcf),
+      q(5362) => q(pcg),
+      q(5363) => q(pch),
+      q(5364) => q(pci),
+      q(5365) => q(pcj),
+      q(5366) => q(pck),
+      q(5367) => q(pcl),
+      q(5368) => q(pcm),
+      q(5369) => q(pcn),
+      q(5370) => q(pcp),
+      q(5371) => q(pcr),
+      q(5372) => q(pcw),
+      q(5373) => q(pda),
+      q(5374) => q(pdc),
+      q(5375) => q(pdi),
+      q(5376) => q(pdn),
+      q(5377) => q(pdo),
+      q(5378) => q(pdt),
+      q(5379) => q(pdu),
+      q(5380) => q(pea),
+      q(5381) => q(peb),
+      q(5382) => q(ped),
+      q(5383) => q(pee),
+      q(5384) => q(pef),
+      q(5385) => q(peg),
+      q(5386) => q(peh),
+      q(5387) => q(pei),
+      q(5388) => q(pej),
+      q(5389) => q(pek),
+      q(5390) => q(pel),
+      q(5391) => q(pem),
+      q(5392) => q(pep),
+      q(5393) => q(peq),
+      q(5394) => q(pes),
+      q(5395) => q(pev),
+      q(5396) => q(pex),
+      q(5397) => q(pey),
+      q(5398) => q(pez),
+      q(5399) => q(pfa),
+      q(5400) => q(pfe),
+      q(5401) => q(pfl),
+      q(5402) => q(pga),
+      q(5403) => q(pgg),
+      q(5404) => q(pgi),
+      q(5405) => q(pgk),
+      q(5406) => q(pgl),
+      q(5407) => q(pgn),
+      q(5408) => q(pgs),
+      q(5409) => q(pgu),
+      q(5410) => q(pha),
+      q(5411) => q(phd),
+      q(5412) => q(phg),
+      q(5413) => q(phh),
+      q(5414) => q(phk),
+      q(5415) => q(phl),
+      q(5416) => q(phm),
+      q(5417) => q(pho),
+      q(5418) => q(phq),
+      q(5419) => q(phr),
+      q(5420) => q(pht),
+      q(5421) => q(phu),
+      q(5422) => q(phv),
+      q(5423) => q(phw),
+      q(5424) => q(pia),
+      q(5425) => q(pib),
+      q(5426) => q(pic),
+      q(5427) => q(pid),
+      q(5428) => q(pie),
+      q(5429) => q(pif),
+      q(5430) => q(pig),
+      q(5431) => q(pih),
+      q(5432) => q(pii),
+      q(5433) => q(pij),
+      q(5434) => q(pil),
+      q(5435) => q(pim),
+      q(5436) => q(pin),
+      q(5437) => q(pio),
+      q(5438) => q(pip),
+      q(5439) => q(pir),
+      q(5440) => q(pis),
+      q(5441) => q(pit),
+      q(5442) => q(piu),
+      q(5443) => q(piv),
+      q(5444) => q(piw),
+      q(5445) => q(pix),
+      q(5446) => q(piy),
+      q(5447) => q(piz),
+      q(5448) => q(pjt),
+      q(5449) => q(pka),
+      q(5450) => q(pkb),
+      q(5451) => q(pkc),
+      q(5452) => q(pkg),
+      q(5453) => q(pkh),
+      q(5454) => q(pkn),
+      q(5455) => q(pko),
+      q(5456) => q(pkp),
+      q(5457) => q(pkr),
+      q(5458) => q(pks),
+      q(5459) => q(pkt),
+      q(5460) => q(pku),
+      q(5461) => q(pla),
+      q(5462) => q(plb),
+      q(5463) => q(plc),
+      q(5464) => q(pld),
+      q(5465) => q(ple),
+      q(5466) => q(plg),
+      q(5467) => q(plh),
+      q(5468) => q(plj),
+      q(5469) => q(plk),
+      q(5470) => q(pll),
+      q(5471) => q(pln),
+      q(5472) => q(plo),
+      q(5473) => q(plp),
+      q(5474) => q(plq),
+      q(5475) => q(plr),
+      q(5476) => q(pls),
+      q(5477) => q(plt),
+      q(5478) => q(plu),
+      q(5479) => q(plv),
+      q(5480) => q(plw),
+      q(5481) => q(ply),
+      q(5482) => q(plz),
+      q(5483) => q(pma),
+      q(5484) => q(pmb),
+      q(5485) => q(pmc),
+      q(5486) => q(pmd),
+      q(5487) => q(pme),
+      q(5488) => q(pmf),
+      q(5489) => q(pmh),
+      q(5490) => q(pmi),
+      q(5491) => q(pmj),
+      q(5492) => q(pmk),
+      q(5493) => q(pml),
+      q(5494) => q(pmm),
+      q(5495) => q(pmn),
+      q(5496) => q(pmo),
+      q(5497) => q(pmq),
+      q(5498) => q(pmr),
+      q(5499) => q(pms),
+      q(5500) => q(pmt),
+      q(5501) => q(pmu),
+      q(5502) => q(pmw),
+      q(5503) => q(pmx),
+      q(5504) => q(pmy),
+      q(5505) => q(pmz),
+      q(5506) => q(pna),
+      q(5507) => q(pnb),
+      q(5508) => q(pnc),
+      q(5509) => q(pne),
+      q(5510) => q(png),
+      q(5511) => q(pnh),
+      q(5512) => q(pni),
+      q(5513) => q(pnk),
+      q(5514) => q(pnm),
+      q(5515) => q(pnn),
+      q(5516) => q(pno),
+      q(5517) => q(pnp),
+      q(5518) => q(pnq),
+      q(5519) => q(pnr),
+      q(5520) => q(pns),
+      q(5521) => q(pnt),
+      q(5522) => q(pnu),
+      q(5523) => q(pnv),
+      q(5524) => q(pnw),
+      q(5525) => q(pnx),
+      q(5526) => q(pny),
+      q(5527) => q(pnz),
+      q(5528) => q(poc),
+      q(5529) => q(pod),
+      q(5530) => q(poe),
+      q(5531) => q(pof),
+      q(5532) => q(pog),
+      q(5533) => q(poh),
+      q(5534) => q(poi),
+      q(5535) => q(pok),
+      q(5536) => q(pom),
+      q(5537) => q(poo),
+      q(5538) => q(pop),
+      q(5539) => q(poq),
+      q(5540) => q(pos),
+      q(5541) => q(pot),
+      q(5542) => q(pov),
+      q(5543) => q(pow),
+      q(5544) => q(pox),
+      q(5545) => q(poy),
+      q(5546) => q(ppa),
+      q(5547) => q(ppe),
+      q(5548) => q(ppi),
+      q(5549) => q(ppk),
+      q(5550) => q(ppl),
+      q(5551) => q(ppm),
+      q(5552) => q(ppn),
+      q(5553) => q(ppo),
+      q(5554) => q(ppp),
+      q(5555) => q(ppq),
+      q(5556) => q(ppr),
+      q(5557) => q(pps),
+      q(5558) => q(ppt),
+      q(5559) => q(ppu),
+      q(5560) => q(pqa),
+      q(5561) => q(pqm),
+      q(5562) => q(prb),
+      q(5563) => q(prc),
+      q(5564) => q(prd),
+      q(5565) => q(pre),
+      q(5566) => q(prf),
+      q(5567) => q(prg),
+      q(5568) => q(prh),
+      q(5569) => q(pri),
+      q(5570) => q(prk),
+      q(5571) => q(prl),
+      q(5572) => q(prm),
+      q(5573) => q(prn),
+      q(5574) => q(prp),
+      q(5575) => q(prq),
+      q(5576) => q(prr),
+      q(5577) => q(prs),
+      q(5578) => q(prt),
+      q(5579) => q(pru),
+      q(5580) => q(prw),
+      q(5581) => q(prx),
+      q(5582) => q(pry),
+      q(5583) => q(prz),
+      q(5584) => q(psa),
+      q(5585) => q(psc),
+      q(5586) => q(psd),
+      q(5587) => q(pse),
+      q(5588) => q(psg),
+      q(5589) => q(psh),
+      q(5590) => q(psi),
+      q(5591) => q(psl),
+      q(5592) => q(psm),
+      q(5593) => q(psn),
+      q(5594) => q(pso),
+      q(5595) => q(psp),
+      q(5596) => q(psq),
+      q(5597) => q(psr),
+      q(5598) => q(pss),
+      q(5599) => q(pst),
+      q(5600) => q(psu),
+      q(5601) => q(psw),
+      q(5602) => q(psy),
+      q(5603) => q(pta),
+      q(5604) => q(pth),
+      q(5605) => q(pti),
+      q(5606) => q(ptn),
+      q(5607) => q(pto),
+      q(5608) => q(ptp),
+      q(5609) => q(ptr),
+      q(5610) => q(ptt),
+      q(5611) => q(ptu),
+      q(5612) => q(ptv),
+      q(5613) => q(ptw),
+      q(5614) => q(pty),
+      q(5615) => q(pua),
+      q(5616) => q(pub),
+      q(5617) => q(puc),
+      q(5618) => q(pud),
+      q(5619) => q(pue),
+      q(5620) => q(puf),
+      q(5621) => q(pug),
+      q(5622) => q(pui),
+      q(5623) => q(puj),
+      q(5624) => q(puk),
+      q(5625) => q(pum),
+      q(5626) => q(puo),
+      q(5627) => q(pup),
+      q(5628) => q(puq),
+      q(5629) => q(pur),
+      q(5630) => q(put),
+      q(5631) => q(puu),
+      q(5632) => q(puw),
+      q(5633) => q(pux),
+      q(5634) => q(puy),
+      q(5635) => q(puz),
+      q(5636) => q(pwa),
+      q(5637) => q(pwb),
+      q(5638) => q(pwg),
+      q(5639) => q(pwm),
+      q(5640) => q(pwn),
+      q(5641) => q(pwo),
+      q(5642) => q(pwr),
+      q(5643) => q(pww),
+      q(5644) => q(pxm),
+      q(5645) => q(pye),
+      q(5646) => q(pym),
+      q(5647) => q(pyn),
+      q(5648) => q(pys),
+      q(5649) => q(pyu),
+      q(5650) => q(pyx),
+      q(5651) => q(pyy),
+      q(5652) => q(pzn),
+      q(5653) => q(qua),
+      q(5654) => q(qub),
+      q(5655) => q(quc),
+      q(5656) => q(qud),
+      q(5657) => q(quf),
+      q(5658) => q(qug),
+      q(5659) => q(quh),
+      q(5660) => q(qui),
+      q(5661) => q(quk),
+      q(5662) => q(qul),
+      q(5663) => q(qum),
+      q(5664) => q(qun),
+      q(5665) => q(qup),
+      q(5666) => q(quq),
+      q(5667) => q(qur),
+      q(5668) => q(qus),
+      q(5669) => q(quv),
+      q(5670) => q(quw),
+      q(5671) => q(qux),
+      q(5672) => q(quy),
+      q(5673) => q(quz),
+      q(5674) => q(qva),
+      q(5675) => q(qvc),
+      q(5676) => q(qve),
+      q(5677) => q(qvh),
+      q(5678) => q(qvi),
+      q(5679) => q(qvj),
+      q(5680) => q(qvl),
+      q(5681) => q(qvm),
+      q(5682) => q(qvn),
+      q(5683) => q(qvo),
+      q(5684) => q(qvp),
+      q(5685) => q(qvs),
+      q(5686) => q(qvw),
+      q(5687) => q(qvy),
+      q(5688) => q(qvz),
+      q(5689) => q(qwa),
+      q(5690) => q(qwc),
+      q(5691) => q(qwh),
+      q(5692) => q(qwm),
+      q(5693) => q(qws),
+      q(5694) => q(qwt),
+      q(5695) => q(qxa),
+      q(5696) => q(qxc),
+      q(5697) => q(qxh),
+      q(5698) => q(qxl),
+      q(5699) => q(qxn),
+      q(5700) => q(qxo),
+      q(5701) => q(qxp),
+      q(5702) => q(qxq),
+      q(5703) => q(qxr),
+      q(5704) => q(qxs),
+      q(5705) => q(qxt),
+      q(5706) => q(qxu),
+      q(5707) => q(qxw),
+      q(5708) => q(qya),
+      q(5709) => q(qyp),
+      q(5710) => q(raa),
+      q(5711) => q(rab),
+      q(5712) => q(rac),
+      q(5713) => q(rad),
+      q(5714) => q(raf),
+      q(5715) => q(rag),
+      q(5716) => q(rah),
+      q(5717) => q(rai),
+      q(5718) => q(rak),
+      q(5719) => q(ral),
+      q(5720) => q(ram),
+      q(5721) => q(ran),
+      q(5722) => q(rao),
+      q(5723) => q(raq),
+      q(5724) => q(ras),
+      q(5725) => q(rat),
+      q(5726) => q(rau),
+      q(5727) => q(rav),
+      q(5728) => q(raw),
+      q(5729) => q(rax),
+      q(5730) => q(ray),
+      q(5731) => q(raz),
+      q(5732) => q(rbb),
+      q(5733) => q(rbk),
+      q(5734) => q(rbl),
+      q(5735) => q(rbp),
+      q(5736) => q(rcf),
+      q(5737) => q(rdb),
+      q(5738) => q(rea),
+      q(5739) => q(reb),
+      q(5740) => q(ree),
+      q(5741) => q(reg),
+      q(5742) => q(rei),
+      q(5743) => q(rej),
+      q(5744) => q(rel),
+      q(5745) => q(rem),
+      q(5746) => q(ren),
+      q(5747) => q(rer),
+      q(5748) => q(res),
+      q(5749) => q(ret),
+      q(5750) => q(rey),
+      q(5751) => q(rga),
+      q(5752) => q(rge),
+      q(5753) => q(rgk),
+      q(5754) => q(rgn),
+      q(5755) => q(rgr),
+      q(5756) => q(rgs),
+      q(5757) => q(rgu),
+      q(5758) => q(rhg),
+      q(5759) => q(rhp),
+      q(5760) => q(ria),
+      q(5761) => q(rie),
+      q(5762) => q(rif),
+      q(5763) => q(ril),
+      q(5764) => q(rim),
+      q(5765) => q(rin),
+      q(5766) => q(rir),
+      q(5767) => q(rit),
+      q(5768) => q(riu),
+      q(5769) => q(rjg),
+      q(5770) => q(rji),
+      q(5771) => q(rjs),
+      q(5772) => q(rka),
+      q(5773) => q(rkb),
+      q(5774) => q(rkh),
+      q(5775) => q(rki),
+      q(5776) => q(rkm),
+      q(5777) => q(rkt),
+      q(5778) => q(rma),
+      q(5779) => q(rmb),
+      q(5780) => q(rmc),
+      q(5781) => q(rmd),
+      q(5782) => q(rme),
+      q(5783) => q(rmf),
+      q(5784) => q(rmg),
+      q(5785) => q(rmh),
+      q(5786) => q(rmi),
+      q(5787) => q(rmk),
+      q(5788) => q(rml),
+      q(5789) => q(rmm),
+      q(5790) => q(rmn),
+      q(5791) => q(rmo),
+      q(5792) => q(rmp),
+      q(5793) => q(rmq),
+      q(5794) => q(rms),
+      q(5795) => q(rmt),
+      q(5796) => q(rmu),
+      q(5797) => q(rmv),
+      q(5798) => q(rmw),
+      q(5799) => q(rmx),
+      q(5800) => q(rmy),
+      q(5801) => q(rmz),
+      q(5802) => q(rna),
+      q(5803) => q(rnd),
+      q(5804) => q(rng),
+      q(5805) => q(rnl),
+      q(5806) => q(rnn),
+      q(5807) => q(rnp),
+      q(5808) => q(rnr),
+      q(5809) => q(rnw),
+      q(5810) => q(rob),
+      q(5811) => q(roc),
+      q(5812) => q(rod),
+      q(5813) => q(roe),
+      q(5814) => q(rof),
+      q(5815) => q(rog),
+      q(5816) => q(rol),
+      q(5817) => q(roo),
+      q(5818) => q(rop),
+      q(5819) => q(ror),
+      q(5820) => q(rou),
+      q(5821) => q(row),
+      q(5822) => q(rpn),
+      q(5823) => q(rpt),
+      q(5824) => q(rri),
+      q(5825) => q(rro),
+      q(5826) => q(rrt),
+      q(5827) => q(rsb),
+      q(5828) => q(rsi),
+      q(5829) => q(rsl),
+      q(5830) => q(rtc),
+      q(5831) => q(rth),
+      q(5832) => q(rtm),
+      q(5833) => q(rtw),
+      q(5834) => q(rub),
+      q(5835) => q(ruc),
+      q(5836) => q(rue),
+      q(5837) => q(ruf),
+      q(5838) => q(rug),
+      q(5839) => q(ruh),
+      q(5840) => q(rui),
+      q(5841) => q(ruk),
+      q(5842) => q(ruo),
+      q(5843) => q(ruq),
+      q(5844) => q(rut),
+      q(5845) => q(ruu),
+      q(5846) => q(ruy),
+      q(5847) => q(ruz),
+      q(5848) => q(rwa),
+      q(5849) => q(rwk),
+      q(5850) => q(rwm),
+      q(5851) => q(rwo),
+      q(5852) => q(rwr),
+      q(5853) => q(ryn),
+      q(5854) => q(rys),
+      q(5855) => q(ryu),
+      q(5856) => q(saa),
+      q(5857) => q(sab),
+      q(5858) => q(sac),
+      q(5859) => q(sae),
+      q(5860) => q(saf),
+      q(5861) => q(saj),
+      q(5862) => q(sak),
+      q(5863) => q(sao),
+      q(5864) => q(sap),
+      q(5865) => q(saq),
+      q(5866) => q(sar),
+      q(5867) => q(sau),
+      q(5868) => q(sav),
+      q(5869) => q(saw),
+      q(5870) => q(sax),
+      q(5871) => q(say),
+      q(5872) => q(saz),
+      q(5873) => q(sba),
+      q(5874) => q(sbb),
+      q(5875) => q(sbc),
+      q(5876) => q(sbd),
+      q(5877) => q(slc),
+      q(5878) => q(sbf),
+      q(5879) => q(sbg),
+      q(5880) => q(sbh),
+      q(5881) => q(sbi),
+      q(5882) => q(sbj),
+      q(5883) => q(sbk),
+      q(5884) => q(sbl),
+      q(5885) => q(sbm),
+      q(5886) => q(sbn),
+      q(5887) => q(sbo),
+      q(5888) => q(sbp),
+      q(5889) => q(sbq),
+      q(5890) => q(sbr),
+      q(5891) => q(sbs),
+      q(5892) => q(sbt),
+      q(5893) => q(sbu),
+      q(5894) => q(sbv),
+      q(5895) => q(sbw),
+      q(5896) => q(sbx),
+      q(5897) => q(sby),
+      q(5898) => q(sbz),
+      q(5899) => q(scb),
+      q(5900) => q(sce),
+      q(5901) => q(scf),
+      q(5902) => q(scg),
+      q(5903) => q(sch),
+      q(5904) => q(sci),
+      q(5905) => q(sck),
+      q(5906) => q(scl),
+      q(5907) => q(scp),
+      q(5908) => q(scq),
+      q(5909) => q(scs),
+      q(5910) => q(scu),
+      q(5911) => q(scv),
+      q(5912) => q(scw),
+      q(5913) => q(scx),
+      q(5914) => q(sda),
+      q(5915) => q(sdb),
+      q(5916) => q(sdc),
+      q(5917) => q(sde),
+      q(5918) => q(sdf),
+      q(5919) => q(sdg),
+      q(5920) => q(sdh),
+      q(5921) => q(sdj),
+      q(5922) => q(sdk),
+      q(5923) => q(sdl),
+      q(5924) => q(sdm),
+      q(5925) => q(sdn),
+      q(5926) => q(sdo),
+      q(5927) => q(sdp),
+      q(5928) => q(sdr),
+      q(5929) => q(sds),
+      q(5930) => q(sdt),
+      q(5931) => q(sdu),
+      q(5932) => q(sdx),
+      q(5933) => q(sdz),
+      q(5934) => q(sea),
+      q(5935) => q(seb),
+      q(5936) => q(sec),
+      q(5937) => q(sed),
+      q(5938) => q(see),
+      q(5939) => q(sef),
+      q(5940) => q(seg),
+      q(5941) => q(seh),
+      q(5942) => q(sei),
+      q(5943) => q(sej),
+      q(5944) => q(sek),
+      q(5945) => q(sen),
+      q(5946) => q(seo),
+      q(5947) => q(sep),
+      q(5948) => q(seq),
+      q(5949) => q(ser),
+      q(5950) => q(ses),
+      q(5951) => q(set),
+      q(5952) => q(seu),
+      q(5953) => q(sev),
+      q(5954) => q(sew),
+      q(5955) => q(sey),
+      q(5956) => q(sez),
+      q(5957) => q(sfb),
+      q(5958) => q(sfe),
+      q(5959) => q(sfm),
+      q(5960) => q(sfs),
+      q(5961) => q(sfw),
+      q(5962) => q(sgb),
+      q(5963) => q(sgc),
+      q(5964) => q(sgd),
+      q(5965) => q(sge),
+      q(5966) => q(sgg),
+      q(5967) => q(sgh),
+      q(5968) => q(sgi),
+      q(5969) => q(sgj),
+      q(5970) => q(sgk),
+      q(5971) => q(sgm),
+      q(5972) => q(sgo),
+      q(5973) => q(sgp),
+      q(5974) => q(sgr),
+      q(5975) => q(sgs),
+      q(5976) => q(sgt),
+      q(5977) => q(sgu),
+      q(5978) => q(sgw),
+      q(5979) => q(sgx),
+      q(5980) => q(sgy),
+      q(5981) => q(sgz),
+      q(5982) => q(sha),
+      q(5983) => q(shb),
+      q(5984) => q(shc),
+      q(5985) => q(shd),
+      q(5986) => q(she),
+      q(5987) => q(shg),
+      q(5988) => q(shh),
+      q(5989) => q(shi),
+      q(5990) => q(shj),
+      q(5991) => q(shk),
+      q(5992) => q(shl),
+      q(5993) => q(shm),
+      q(5994) => q(sho),
+      q(5995) => q(shp),
+      q(5996) => q(shq),
+      q(5997) => q(shr),
+      q(5998) => q(shs),
+      q(5999) => q(sht),
+      q(6000) => q(shu),
+      q(6001) => q(shv),
+      q(6002) => q(shw),
+      q(6003) => q(shx),
+      q(6004) => q(shy),
+      q(6005) => q(shz),
+      q(6006) => q(sia),
+      q(6007) => q(sib),
+      q(6008) => q(sie),
+      q(6009) => q(sif),
+      q(6010) => q(sig),
+      q(6011) => q(sih),
+      q(6012) => q(sii),
+      q(6013) => q(sij),
+      q(6014) => q(sik),
+      q(6015) => q(sil),
+      q(6016) => q(sim),
+      q(6017) => q(sip),
+      q(6018) => q(siq),
+      q(6019) => q(sir),
+      q(6020) => q(sis),
+      q(6021) => q(siu),
+      q(6022) => q(siv),
+      q(6023) => q(siw),
+      q(6024) => q(six),
+      q(6025) => q(siy),
+      q(6026) => q(siz),
+      q(6027) => q(sja),
+      q(6028) => q(sjb),
+      q(6029) => q(sjd),
+      q(6030) => q(sje),
+      q(6031) => q(sjg),
+      q(6032) => q(sjk),
+      q(6033) => q(sjl),
+      q(6034) => q(sjm),
+      q(6035) => q(sjn),
+      q(6036) => q(sjo),
+      q(6037) => q(sjp),
+      q(6038) => q(sjr),
+      q(6039) => q(sjs),
+      q(6040) => q(sjt),
+      q(6041) => q(sju),
+      q(6042) => q(sjw),
+      q(6043) => q(ska),
+      q(6044) => q(skb),
+      q(6045) => q(skc),
+      q(6046) => q(skd),
+      q(6047) => q(ske),
+      q(6048) => q(skf),
+      q(6049) => q(skg),
+      q(6050) => q(skh),
+      q(6051) => q(ski),
+      q(6052) => q(skj),
+      q(6053) => q(skk),
+      q(6054) => q(skm),
+      q(6055) => q(skn),
+      q(6056) => q(sko),
+      q(6057) => q(skp),
+      q(6058) => q(skq),
+      q(6059) => q(skr),
+      q(6060) => q(sks),
+      q(6061) => q(skt),
+      q(6062) => q(sku),
+      q(6063) => q(skv),
+      q(6064) => q(skw),
+      q(6065) => q(skx),
+      q(6066) => q(sky),
+      q(6067) => q(skz),
+      q(6068) => q(sld),
+      q(6069) => q(sle),
+      q(6070) => q(slf),
+      q(6071) => q(slg),
+      q(6072) => q(slh),
+      q(6073) => q(sli),
+      q(6074) => q(slj),
+      q(6075) => q(sll),
+      q(6076) => q(slm),
+      q(6077) => q(sln),
+      q(6078) => q(slp),
+      q(6079) => q(slq),
+      q(6080) => q(slr),
+      q(6081) => q(sls),
+      q(6082) => q(slt),
+      q(6083) => q(slu),
+      q(6084) => q(slw),
+      q(6085) => q(slx),
+      q(6086) => q(sly),
+      q(6087) => q(slz),
+      q(6088) => q(smb),
+      q(6089) => q(smc),
+      q(6090) => q(smd),
+      q(6091) => q(smf),
+      q(6092) => q(smg),
+      q(6093) => q(smh),
+      q(6094) => q(smk),
+      q(6095) => q(sml),
+      q(6096) => q(smm),
+      q(6097) => q(smp),
+      q(6098) => q(smq),
+      q(6099) => q(smr),
+      q(6100) => q(smt),
+      q(6101) => q(smu),
+      q(6102) => q(smv),
+      q(6103) => q(smw),
+      q(6104) => q(smx),
+      q(6105) => q(smy),
+      q(6106) => q(smz),
+      q(6107) => q(snb),
+      q(6108) => q(snc),
+      q(6109) => q(sne),
+      q(6110) => q(snf),
+      q(6111) => q(sng),
+      q(6112) => q(snh),
+      q(6113) => q(sni),
+      q(6114) => q(snj),
+      q(6115) => q(snl),
+      q(6116) => q(snm),
+      q(6117) => q(snn),
+      q(6118) => q(sno),
+      q(6119) => q(snp),
+      q(6120) => q(snq),
+      q(6121) => q(snr),
+      q(6122) => q(sns),
+      q(6123) => q(snu),
+      q(6124) => q(snv),
+      q(6125) => q(snw),
+      q(6126) => q(snx),
+      q(6127) => q(sny),
+      q(6128) => q(snz),
+      q(6129) => q(soa),
+      q(6130) => q(sob),
+      q(6131) => q(soc),
+      q(6132) => q(sod),
+      q(6133) => q(soe),
+      q(6134) => q(soh),
+      q(6135) => q(soi),
+      q(6136) => q(soj),
+      q(6137) => q(sok),
+      q(6138) => q(sol),
+      q(6139) => q(soo),
+      q(6140) => q(sop),
+      q(6141) => q(soq),
+      q(6142) => q(sor),
+      q(6143) => q(sos),
+      q(6144) => q(sou),
+      q(6145) => q(sov),
+      q(6146) => q(sow),
+      q(6147) => q(sox),
+      q(6148) => q(soy),
+      q(6149) => q(soz),
+      q(6150) => q(spb),
+      q(6151) => q(spc),
+      q(6152) => q(spd),
+      q(6153) => q(spe),
+      q(6154) => q(spg),
+      q(6155) => q(spi),
+      q(6156) => q(spk),
+      q(6157) => q(spl),
+      q(6158) => q(spm),
+      q(6159) => q(spo),
+      q(6160) => q(spp),
+      q(6161) => q(spq),
+      q(6162) => q(spr),
+      q(6163) => q(sps),
+      q(6164) => q(spt),
+      q(6165) => q(spu),
+      q(6166) => q(spv),
+      q(6167) => q(spx),
+      q(6168) => q(spy),
+      q(6169) => q(sqa),
+      q(6170) => q(sqh),
+      q(6171) => q(sqk),
+      q(6172) => q(sqm),
+      q(6173) => q(sqn),
+      q(6174) => q(sqo),
+      q(6175) => q(sqq),
+      q(6176) => q(sqr),
+      q(6177) => q(sqs),
+      q(6178) => q(sqt),
+      q(6179) => q(squ),
+      q(6180) => q(sra),
+      q(6181) => q(srb),
+      q(6182) => q(src),
+      q(6183) => q(sre),
+      q(6184) => q(srf),
+      q(6185) => q(srg),
+      q(6186) => q(srh),
+      q(6187) => q(sri),
+      q(6188) => q(srk),
+      q(6189) => q(srl),
+      q(6190) => q(srm),
+      q(6191) => q(sro),
+      q(6192) => q(srq),
+      q(6193) => q(srs),
+      q(6194) => q(srt),
+      q(6195) => q(sru),
+      q(6196) => q(srv),
+      q(6197) => q(srw),
+      q(6198) => q(srx),
+      q(6199) => q(sry),
+      q(6200) => q(srz),
+      q(6201) => q(ssb),
+      q(6202) => q(ssc),
+      q(6203) => q(ssd),
+      q(6204) => q(sse),
+      q(6205) => q(ssf),
+      q(6206) => q(ssg),
+      q(6207) => q(ssh),
+      q(6208) => q(ssi),
+      q(6209) => q(ssj),
+      q(6210) => q(ssk),
+      q(6211) => q(ssl),
+      q(6212) => q(ssm),
+      q(6213) => q(ssn),
+      q(6214) => q(sso),
+      q(6215) => q(ssp),
+      q(6216) => q(ssq),
+      q(6217) => q(ssr),
+      q(6218) => q(sss),
+      q(6219) => q(sst),
+      q(6220) => q(ssu),
+      q(6221) => q(ssv),
+      q(6222) => q(ssx),
+      q(6223) => q(ssy),
+      q(6224) => q(ssz),
+      q(6225) => q(sta),
+      q(6226) => q(stb),
+      q(6227) => q(std),
+      q(6228) => q(ste),
+      q(6229) => q(stf),
+      q(6230) => q(stg),
+      q(6231) => q(sth),
+      q(6232) => q(sti),
+      q(6233) => q(stj),
+      q(6234) => q(stk),
+      q(6235) => q(stl),
+      q(6236) => q(stm),
+      q(6237) => q(stn),
+      q(6238) => q(sto),
+      q(6239) => q(stp),
+      q(6240) => q(stq),
+      q(6241) => q(str),
+      q(6242) => q(sts),
+      q(6243) => q(stt),
+      q(6244) => q(stu),
+      q(6245) => q(stv),
+      q(6246) => q(stw),
+      q(6247) => q(sua),
+      q(6248) => q(sub),
+      q(6249) => q(suc),
+      q(6250) => q(sue),
+      q(6251) => q(sug),
+      q(6252) => q(sui),
+      q(6253) => q(suj),
+      q(6254) => q(suq),
+      q(6255) => q(sur),
+      q(6256) => q(sut),
+      q(6257) => q(suv),
+      q(6258) => q(suw),
+      q(6259) => q(suy),
+      q(6260) => q(suz),
+      q(6261) => q(sva),
+      q(6262) => q(svb),
+      q(6263) => q(svc),
+      q(6264) => q(sve),
+      q(6265) => q(svk),
+      q(6266) => q(svr),
+      q(6267) => q(svs),
+      q(6268) => q(svx),
+      q(6269) => q(swb),
+      q(6270) => q(swc),
+      q(6271) => q(swf),
+      q(6272) => q(swg),
+      q(6273) => q(swh),
+      q(6274) => q(swi),
+      q(6275) => q(swj),
+      q(6276) => q(swk),
+      q(6277) => q(swl),
+      q(6278) => q(swm),
+      q(6279) => q(swn),
+      q(6280) => q(swo),
+      q(6281) => q(swp),
+      q(6282) => q(swq),
+      q(6283) => q(swr),
+      q(6284) => q(sws),
+      q(6285) => q(swt),
+      q(6286) => q(swu),
+      q(6287) => q(swv),
+      q(6288) => q(sww),
+      q(6289) => q(swx),
+      q(6290) => q(swy),
+      q(6291) => q(sxb),
+      q(6292) => q(sxc),
+      q(6293) => q(sxe),
+      q(6294) => q(sxg),
+      q(6295) => q(sxk),
+      q(6296) => q(sxl),
+      q(6297) => q(sxm),
+      q(6298) => q(sxn),
+      q(6299) => q(sxo),
+      q(6300) => q(sxr),
+      q(6301) => q(sxs),
+      q(6302) => q(sxu),
+      q(6303) => q(sxw),
+      q(6304) => q(sya),
+      q(6305) => q(syb),
+      q(6306) => q(syi),
+      q(6307) => q(syk),
+      q(6308) => q(syl),
+      q(6309) => q(sym),
+      q(6310) => q(syn),
+      q(6311) => q(syo),
+      q(6312) => q(sys),
+      q(6313) => q(syw),
+      q(6314) => q(syy),
+      q(6315) => q(sza),
+      q(6316) => q(szb),
+      q(6317) => q(szc),
+      q(6318) => q(szd),
+      q(6319) => q(sze),
+      q(6320) => q(szg),
+      q(6321) => q(szl),
+      q(6322) => q(szn),
+      q(6323) => q(szp),
+      q(6324) => q(szv),
+      q(6325) => q(szw),
+      q(6326) => q(taa),
+      q(6327) => q(tab),
+      q(6328) => q(tac),
+      q(6329) => q(tad),
+      q(6330) => q(tae),
+      q(6331) => q(taf),
+      q(6332) => q(tag),
+      q(6333) => q(taj),
+      q(6334) => q(tak),
+      q(6335) => q(tal),
+      q(6336) => q(tan),
+      q(6337) => q(tao),
+      q(6338) => q(tap),
+      q(6339) => q(taq),
+      q(6340) => q(tar),
+      q(6341) => q(tas),
+      q(6342) => q(tau),
+      q(6343) => q(tav),
+      q(6344) => q(taw),
+      q(6345) => q(tax),
+      q(6346) => q(tay),
+      q(6347) => q(taz),
+      q(6348) => q(tba),
+      q(6349) => q(tbb),
+      q(6350) => q(tbc),
+      q(6351) => q(tbd),
+      q(6352) => q(tbe),
+      q(6353) => q(tbf),
+      q(6354) => q(tbg),
+      q(6355) => q(tbh),
+      q(6356) => q(tbi),
+      q(6357) => q(tbj),
+      q(6358) => q(tbk),
+      q(6359) => q(tbl),
+      q(6360) => q(tbm),
+      q(6361) => q(tbn),
+      q(6362) => q(tbo),
+      q(6363) => q(tbp),
+      q(6364) => q(tbr),
+      q(6365) => q(tbs),
+      q(6366) => q(tbt),
+      q(6367) => q(tbu),
+      q(6368) => q(tbv),
+      q(6369) => q(tbw),
+      q(6370) => q(tbx),
+      q(6371) => q(tby),
+      q(6372) => q(tbz),
+      q(6373) => q(tca),
+      q(6374) => q(tcb),
+      q(6375) => q(tcc),
+      q(6376) => q(tcd),
+      q(6377) => q(tce),
+      q(6378) => q(tcf),
+      q(6379) => q(tcg),
+      q(6380) => q(tch),
+      q(6381) => q(wbf),
+      q(6382) => q(tck),
+      q(6383) => q(tcl),
+      q(6384) => q(tcm),
+      q(6385) => q(tcn),
+      q(6386) => q(tco),
+      q(6387) => q(tcp),
+      q(6388) => q(tcq),
+      q(6389) => q(tcs),
+      q(6390) => q(tct),
+      q(6391) => q(tcu),
+      q(6392) => q(tcw),
+      q(6393) => q(tcx),
+      q(6394) => q(tcy),
+      q(6395) => q(tcz),
+      q(6396) => q(tda),
+      q(6397) => q(tdb),
+      q(6398) => q(tdc),
+      q(6399) => q(tdd),
+      q(6400) => q(tde),
+      q(6401) => q(tdf),
+      q(6402) => q(tdg),
+      q(6403) => q(tdh),
+      q(6404) => q(tdi),
+      q(6405) => q(tdj),
+      q(6406) => q(tdk),
+      q(6407) => q(tdl),
+      q(6408) => q(tdn),
+      q(6409) => q(tdo),
+      q(6410) => q(tdq),
+      q(6411) => q(tdr),
+      q(6412) => q(tds),
+      q(6413) => q(tdt),
+      q(6414) => q(tdu),
+      q(6415) => q(tdv),
+      q(6416) => q(tdx),
+      q(6417) => q(tdy),
+      q(6418) => q(tea),
+      q(6419) => q(teb),
+      q(6420) => q(tec),
+      q(6421) => q(ted),
+      q(6422) => q(tee),
+      q(6423) => q(tef),
+      q(6424) => q(teg),
+      q(6425) => q(teh),
+      q(6426) => q(tei),
+      q(6427) => q(tek),
+      q(6428) => q(ten),
+      q(6429) => q(teo),
+      q(6430) => q(tep),
+      q(6431) => q(teq),
+      q(6432) => q(tes),
+      q(6433) => q(teu),
+      q(6434) => q(tev),
+      q(6435) => q(tew),
+      q(6436) => q(tex),
+      q(6437) => q(tey),
+      q(6438) => q(tfi),
+      q(6439) => q(tfn),
+      q(6440) => q(tfo),
+      q(6441) => q(tfr),
+      q(6442) => q(tft),
+      q(6443) => q(tga),
+      q(6444) => q(tgb),
+      q(6445) => q(tgc),
+      q(6446) => q(tgd),
+      q(6447) => q(tge),
+      q(6448) => q(tgf),
+      q(6449) => q(tgg),
+      q(6450) => q(tgh),
+      q(6451) => q(tgi),
+      q(6452) => q(tgj),
+      q(6453) => q(tgn),
+      q(6454) => q(tgo),
+      q(6455) => q(tgp),
+      q(6456) => q(tgq),
+      q(6457) => q(tgr),
+      q(6458) => q(tgs),
+      q(6459) => q(tgt),
+      q(6460) => q(tgu),
+      q(6461) => q(tgv),
+      q(6462) => q(tgw),
+      q(6463) => q(tgx),
+      q(6464) => q(tgy),
+      q(6465) => q(tgz),
+      q(6466) => q(thc),
+      q(6467) => q(thd),
+      q(6468) => q(the),
+      q(6469) => q(thf),
+      q(6470) => q(thh),
+      q(6471) => q(thi),
+      q(6472) => q(thk),
+      q(6473) => q(thl),
+      q(6474) => q(thm),
+      q(6475) => q(thn),
+      q(6476) => q(thp),
+      q(6477) => q(thq),
+      q(6478) => q(thr),
+      q(6479) => q(ths),
+      q(6480) => q(tht),
+      q(6481) => q(thu),
+      q(6482) => q(thv),
+      q(6483) => q(thw),
+      q(6484) => q(thx),
+      q(6485) => q(thy),
+      q(6486) => q(thz),
+      q(6487) => q(tia),
+      q(6488) => q(tic),
+      q(6489) => q(tid),
+      q(6490) => q(tif),
+      q(6491) => q(tih),
+      q(6492) => q(tii),
+      q(6493) => q(tij),
+      q(6494) => q(tik),
+      q(6495) => q(til),
+      q(6496) => q(tim),
+      q(6497) => q(tin),
+      q(6498) => q(tio),
+      q(6499) => q(tip),
+      q(6500) => q(tiq),
+      q(6501) => q(tis),
+      q(6502) => q(tit),
+      q(6503) => q(tiu),
+      q(6504) => q(tiw),
+      q(6505) => q(tix),
+      q(6506) => q(tiy),
+      q(6507) => q(tiz),
+      q(6508) => q(tja),
+      q(6509) => q(tjg),
+      q(6510) => q(tji),
+      q(6511) => q(tjl),
+      q(6512) => q(tjm),
+      q(6513) => q(tjn),
+      q(6514) => q(tjo),
+      q(6515) => q(tjs),
+      q(6516) => q(tju),
+      q(6517) => q(tka),
+      q(6518) => q(tkb),
+      q(6519) => q(tkd),
+      q(6520) => q(tke),
+      q(6521) => q(tkf),
+      q(6522) => q(tkg),
+      q(6523) => q(tkm),
+      q(6524) => q(tkn),
+      q(6525) => q(tkp),
+      q(6526) => q(tkq),
+      q(6527) => q(tkr),
+      q(6528) => q(tks),
+      q(6529) => q(tkt),
+      q(6530) => q(tku),
+      q(6531) => q(tkw),
+      q(6532) => q(tkx),
+      q(6533) => q(tkz),
+      q(6534) => q(tla),
+      q(6535) => q(tlb),
+      q(6536) => q(tlc),
+      q(6537) => q(tld),
+      q(6538) => q(tlf),
+      q(6539) => q(tlg),
+      q(6540) => q(tlj),
+      q(6541) => q(tlk),
+      q(6542) => q(tll),
+      q(6543) => q(tlm),
+      q(6544) => q(tln),
+      q(6545) => q(tlo),
+      q(6546) => q(tlp),
+      q(6547) => q(tlq),
+      q(6548) => q(tlr),
+      q(6549) => q(tls),
+      q(6550) => q(tlt),
+      q(6551) => q(tlu),
+      q(6552) => q(tlv),
+      q(6553) => q(tlx),
+      q(6554) => q(tly),
+      q(6555) => q(tma),
+      q(6556) => q(tmb),
+      q(6557) => q(tmc),
+      q(6558) => q(tmd),
+      q(6559) => q(tme),
+      q(6560) => q(tmf),
+      q(6561) => q(tmg),
+      q(6562) => q(tmi),
+      q(6563) => q(tmj),
+      q(6564) => q(tmk),
+      q(6565) => q(tml),
+      q(6566) => q(tmm),
+      q(6567) => q(tmn),
+      q(6568) => q(tmo),
+      q(6569) => q(tmp),
+      q(6570) => q(tmq),
+      q(6571) => q(tmr),
+      q(6572) => q(tms),
+      q(6573) => q(tmt),
+      q(6574) => q(tmu),
+      q(6575) => q(tmv),
+      q(6576) => q(tmw),
+      q(6577) => q(tmy),
+      q(6578) => q(tmz),
+      q(6579) => q(tna),
+      q(6580) => q(tnb),
+      q(6581) => q(tnc),
+      q(6582) => q(tnd),
+      q(6583) => q(tne),
+      q(6584) => q(tng),
+      q(6585) => q(tnh),
+      q(6586) => q(tni),
+      q(6587) => q(tnk),
+      q(6588) => q(tnl),
+      q(6589) => q(tnm),
+      q(6590) => q(tnn),
+      q(6591) => q(tno),
+      q(6592) => q(tnp),
+      q(6593) => q(tnq),
+      q(6594) => q(tnr),
+      q(6595) => q(tns),
+      q(6596) => q(tnt),
+      q(6597) => q(tnu),
+      q(6598) => q(tnv),
+      q(6599) => q(tnw),
+      q(6600) => q(tnx),
+      q(6601) => q(tny),
+      q(6602) => q(tnz),
+      q(6603) => q(tob),
+      q(6604) => q(toc),
+      q(6605) => q(tod),
+      q(6606) => q(toe),
+      q(6607) => q(tof),
+      q(6608) => q(toh),
+      q(6609) => q(toi),
+      q(6610) => q(toj),
+      q(6611) => q(tol),
+      q(6612) => q(tom),
+      q(6613) => q(too),
+      q(6614) => q(top),
+      q(6615) => q(toq),
+      q(6616) => q(tor),
+      q(6617) => q(tos),
+      q(6618) => q(tou),
+      q(6619) => q(tov),
+      q(6620) => q(tow),
+      q(6621) => q(tox),
+      q(6622) => q(toy),
+      q(6623) => q(toz),
+      q(6624) => q(tpa),
+      q(6625) => q(tpc),
+      q(6626) => q(tpe),
+      q(6627) => q(tpf),
+      q(6628) => q(tpg),
+      q(6629) => q(tpj),
+      q(6630) => q(tpk),
+      q(6631) => q(tpl),
+      q(6632) => q(tpm),
+      q(6633) => q(tpn),
+      q(6634) => q(tpo),
+      q(6635) => q(tpp),
+      q(6636) => q(tpq),
+      q(6637) => q(tpr),
+      q(6638) => q(tpt),
+      q(6639) => q(tpu),
+      q(6640) => q(tpv),
+      q(6641) => q(tpw),
+      q(6642) => q(tpx),
+      q(6643) => q(tpy),
+      q(6644) => q(tpz),
+      q(6645) => q(tqb),
+      q(6646) => q(tql),
+      q(6647) => q(tqm),
+      q(6648) => q(tqn),
+      q(6649) => q(tqo),
+      q(6650) => q(tqp),
+      q(6651) => q(tqq),
+      q(6652) => q(tqr),
+      q(6653) => q(tqt),
+      q(6654) => q(tqu),
+      q(6655) => q(tqw),
+      q(6656) => q(tra),
+      q(6657) => q(trb),
+      q(6658) => q(trc),
+      q(6659) => q(trd),
+      q(6660) => q(tre),
+      q(6661) => q(trf),
+      q(6662) => q(trg),
+      q(6663) => q(trh),
+      q(6664) => q(tri),
+      q(6665) => q(trj),
+      q(6666) => q(trl),
+      q(6667) => q(trm),
+      q(6668) => q(trn),
+      q(6669) => q(tro),
+      q(6670) => q(trp),
+      q(6671) => q(trq),
+      q(6672) => q(trr),
+      q(6673) => q(trs),
+      q(6674) => q(trt),
+      q(6675) => q(tru),
+      q(6676) => q(trv),
+      q(6677) => q(trw),
+      q(6678) => q(trx),
+      q(6679) => q(try),
+      q(6680) => q(trz),
+      q(6681) => q(tsa),
+      q(6682) => q(tsb),
+      q(6683) => q(tsc),
+      q(6684) => q(tsd),
+      q(6685) => q(tse),
+      q(6686) => q(tsf),
+      q(6687) => q(tsg),
+      q(6688) => q(tsh),
+      q(6689) => q(tsj),
+      q(6690) => q(tsk),
+      q(6691) => q(tsl),
+      q(6692) => q(tsm),
+      q(6693) => q(tsp),
+      q(6694) => q(tsq),
+      q(6695) => q(tsr),
+      q(6696) => q(tss),
+      q(6697) => q(tst),
+      q(6698) => q(tsu),
+      q(6699) => q(tsv),
+      q(6700) => q(tsw),
+      q(6701) => q(tsx),
+      q(6702) => q(tsy),
+      q(6703) => q(tsz),
+      q(6704) => q(tta),
+      q(6705) => q(ttb),
+      q(6706) => q(ttc),
+      q(6707) => q(ttd),
+      q(6708) => q(tte),
+      q(6709) => q(ttf),
+      q(6710) => q(ttg),
+      q(6711) => q(tth),
+      q(6712) => q(tti),
+      q(6713) => q(ttj),
+      q(6714) => q(ttk),
+      q(6715) => q(ttl),
+      q(6716) => q(ttm),
+      q(6717) => q(ttn),
+      q(6718) => q(tto),
+      q(6719) => q(ttp),
+      q(6720) => q(ttq),
+      q(6721) => q(ttr),
+      q(6722) => q(tts),
+      q(6723) => q(ttt),
+      q(6724) => q(ttu),
+      q(6725) => q(ttv),
+      q(6726) => q(ttw),
+      q(6727) => q(tty),
+      q(6728) => q(ttz),
+      q(6729) => q(tua),
+      q(6730) => q(tub),
+      q(6731) => q(tuc),
+      q(6732) => q(tud),
+      q(6733) => q(tue),
+      q(6734) => q(tuf),
+      q(6735) => q(tug),
+      q(6736) => q(tuh),
+      q(6737) => q(tui),
+      q(6738) => q(tuj),
+      q(6739) => q(tul),
+      q(6740) => q(tun),
+      q(6741) => q(tuo),
+      q(6742) => q(tuq),
+      q(6743) => q(tus),
+      q(6744) => q(tuu),
+      q(6745) => q(tuv),
+      q(6746) => q(tux),
+      q(6747) => q(tuy),
+      q(6748) => q(tuz),
+      q(6749) => q(tva),
+      q(6750) => q(tvd),
+      q(6751) => q(tve),
+      q(6752) => q(tvk),
+      q(6753) => q(tvm),
+      q(6754) => q(tvn),
+      q(6755) => q(tvo),
+      q(6756) => q(tvs),
+      q(6757) => q(tvt),
+      q(6758) => q(tvu),
+      q(6759) => q(tvw),
+      q(6760) => q(tvy),
+      q(6761) => q(twa),
+      q(6762) => q(twb),
+      q(6763) => q(twc),
+      q(6764) => q(twd),
+      q(6765) => q(twe),
+      q(6766) => q(twf),
+      q(6767) => q(twg),
+      q(6768) => q(twh),
+      q(6769) => q(twl),
+      q(6770) => q(twm),
+      q(6771) => q(twn),
+      q(6772) => q(two),
+      q(6773) => q(twp),
+      q(6774) => q(twq),
+      q(6775) => q(twr),
+      q(6776) => q(twt),
+      q(6777) => q(twu),
+      q(6778) => q(tww),
+      q(6779) => q(twx),
+      q(6780) => q(twy),
+      q(6781) => q(txa),
+      q(6782) => q(txb),
+      q(6783) => q(txc),
+      q(6784) => q(txe),
+      q(6785) => q(txg),
+      q(6786) => q(txh),
+      q(6787) => q(txi),
+      q(6788) => q(txm),
+      q(6789) => q(txn),
+      q(6790) => q(txo),
+      q(6791) => q(txq),
+      q(6792) => q(txr),
+      q(6793) => q(txs),
+      q(6794) => q(txt),
+      q(6795) => q(txu),
+      q(6796) => q(txx),
+      q(6797) => q(txy),
+      q(6798) => q(tya),
+      q(6799) => q(tye),
+      q(6800) => q(tyh),
+      q(6801) => q(tyi),
+      q(6802) => q(tyj),
+      q(6803) => q(tyl),
+      q(6804) => q(tyn),
+      q(6805) => q(typ),
+      q(6806) => q(tyr),
+      q(6807) => q(tys),
+      q(6808) => q(tyt),
+      q(6809) => q(tyu),
+      q(6810) => q(tyx),
+      q(6811) => q(tyz),
+      q(6812) => q(tza),
+      q(6813) => q(tzh),
+      q(6814) => q(tzj),
+      q(6815) => q(tzm),
+      q(6816) => q(tzn),
+      q(6817) => q(tzo),
+      q(6818) => q(tzx),
+      q(6819) => q(uam),
+      q(6820) => q(uan),
+      q(6821) => q(uar),
+      q(6822) => q(uba),
+      q(6823) => q(ubi),
+      q(6824) => q(ubl),
+      q(6825) => q(ubr),
+      q(6826) => q(ubu),
+      q(6827) => q(uby),
+      q(6828) => q(uda),
+      q(6829) => q(ude),
+      q(6830) => q(udg),
+      q(6831) => q(udi),
+      q(6832) => q(udj),
+      q(6833) => q(udl),
+      q(6834) => q(udu),
+      q(6835) => q(ues),
+      q(6836) => q(ufi),
+      q(6837) => q(ugb),
+      q(6838) => q(uge),
+      q(6839) => q(ugn),
+      q(6840) => q(ugo),
+      q(6841) => q(ugy),
+      q(6842) => q(uha),
+      q(6843) => q(uhn),
+      q(6844) => q(uis),
+      q(6845) => q(uiv),
+      q(6846) => q(uji),
+      q(6847) => q(uka),
+      q(6848) => q(ukg),
+      q(6849) => q(ukh),
+      q(6850) => q(ukl),
+      q(6851) => q(ukp),
+      q(6852) => q(ukq),
+      q(6853) => q(uks),
+      q(6854) => q(uku),
+      q(6855) => q(ukw),
+      q(6856) => q(uky),
+      q(6857) => q(ula),
+      q(6858) => q(ulb),
+      q(6859) => q(ulc),
+      q(6860) => q(ulf),
+      q(6861) => q(uli),
+      q(6862) => q(ulk),
+      q(6863) => q(ull),
+      q(6864) => q(ulm),
+      q(6865) => q(uln),
+      q(6866) => q(ulu),
+      q(6867) => q(ulw),
+      q(6868) => q(uma),
+      q(6869) => q(umc),
+      q(6870) => q(umd),
+      q(6871) => q(umg),
+      q(6872) => q(umi),
+      q(6873) => q(umm),
+      q(6874) => q(umn),
+      q(6875) => q(umo),
+      q(6876) => q(ump),
+      q(6877) => q(umr),
+      q(6878) => q(ums),
+      q(6879) => q(umu),
+      q(6880) => q(una),
+      q(6881) => q(une),
+      q(6882) => q(ung),
+      q(6883) => q(unk),
+      q(6884) => q(unm),
+      q(6885) => q(unr),
+      q(6886) => q(unx),
+      q(6887) => q(unz),
+      q(6888) => q(uok),
+      q(6889) => q(upi),
+      q(6890) => q(upv),
+      q(6891) => q(ura),
+      q(6892) => q(urb),
+      q(6893) => q(urc),
+      q(6894) => q(ure),
+      q(6895) => q(urf),
+      q(6896) => q(urg),
+      q(6897) => q(urh),
+      q(6898) => q(uri),
+      q(6899) => q(urk),
+      q(6900) => q(url),
+      q(6901) => q(urm),
+      q(6902) => q(urn),
+      q(6903) => q(uro),
+      q(6904) => q(urp),
+      q(6905) => q(urr),
+      q(6906) => q(urt),
+      q(6907) => q(uru),
+      q(6908) => q(urv),
+      q(6909) => q(urw),
+      q(6910) => q(urx),
+      q(6911) => q(ury),
+      q(6912) => q(urz),
+      q(6913) => q(usa),
+      q(6914) => q(ush),
+      q(6915) => q(usi),
+      q(6916) => q(usk),
+      q(6917) => q(usp),
+      q(6918) => q(usu),
+      q(6919) => q(uta),
+      q(6920) => q(ute),
+      q(6921) => q(utp),
+      q(6922) => q(utr),
+      q(6923) => q(utu),
+      q(6924) => q(uum),
+      q(6925) => q(uun),
+      q(6926) => q(uur),
+      q(6927) => q(uuu),
+      q(6928) => q(uve),
+      q(6929) => q(uvh),
+      q(6930) => q(uvl),
+      q(6931) => q(uwa),
+      q(6932) => q(uya),
+      q(6933) => q(uzn),
+      q(6934) => q(uzs),
+      q(6935) => q(vaa),
+      q(6936) => q(vae),
+      q(6937) => q(vaf),
+      q(6938) => q(vag),
+      q(6939) => q(vah),
+      q(6940) => q(vaj),
+      q(6941) => q(val),
+      q(6942) => q(vam),
+      q(6943) => q(van),
+      q(6944) => q(vao),
+      q(6945) => q(vap),
+      q(6946) => q(var),
+      q(6947) => q(vas),
+      q(6948) => q(vau),
+      q(6949) => q(vav),
+      q(6950) => q(vay),
+      q(6951) => q(vbb),
+      q(6952) => q(vbk),
+      q(6953) => q(vec),
+      q(6954) => q(ved),
+      q(6955) => q(vel),
+      q(6956) => q(vem),
+      q(6957) => q(veo),
+      q(6958) => q(vep),
+      q(6959) => q(ver),
+      q(6960) => q(vgr),
+      q(6961) => q(vgt),
+      q(6962) => q(vic),
+      q(6963) => q(vid),
+      q(6964) => q(vif),
+      q(6965) => q(vig),
+      q(6966) => q(vil),
+      q(6967) => q(vin),
+      q(6968) => q(vis),
+      q(6969) => q(vit),
+      q(6970) => q(viv),
+      q(6971) => q(vka),
+      q(6972) => q(vki),
+      q(6973) => q(vkj),
+      q(6974) => q(vkk),
+      q(6975) => q(vkl),
+      q(6976) => q(vkm),
+      q(6977) => q(vko),
+      q(6978) => q(vkp),
+      q(6979) => q(vkt),
+      q(6980) => q(vku),
+      q(6981) => q(vlp),
+      q(6982) => q(vls),
+      q(6983) => q(vma),
+      q(6984) => q(vmb),
+      q(6985) => q(vmc),
+      q(6986) => q(vmd),
+      q(6987) => q(vme),
+      q(6988) => q(vmf),
+      q(6989) => q(vmg),
+      q(6990) => q(vmh),
+      q(6991) => q(vmi),
+      q(6992) => q(vmj),
+      q(6993) => q(vmk),
+      q(6994) => q(vml),
+      q(6995) => q(vmm),
+      q(6996) => q(vmp),
+      q(6997) => q(vmq),
+      q(6998) => q(vmr),
+      q(6999) => q(vms),
+      q(7000) => q(vmu),
+      q(7001) => q(vmv),
+      q(7002) => q(vmw),
+      q(7003) => q(vmx),
+      q(7004) => q(vmy),
+      q(7005) => q(vmz),
+      q(7006) => q(vnk),
+      q(7007) => q(vnm),
+      q(7008) => q(vnp),
+      q(7009) => q(vro),
+      q(7010) => q(vra),
+      q(7011) => q(vrs),
+      q(7012) => q(vrt),
+      q(7013) => q(vsi),
+      q(7014) => q(vsl),
+      q(7015) => q(vsv),
+      q(7016) => q(vto),
+      q(7017) => q(vum),
+      q(7018) => q(vun),
+      q(7019) => q(vut),
+      q(7020) => q(vwa),
+      q(7021) => q(waa),
+      q(7022) => q(wab),
+      q(7023) => q(wac),
+      q(7024) => q(wad),
+      q(7025) => q(wae),
+      q(7026) => q(waf),
+      q(7027) => q(wag),
+      q(7028) => q(wah),
+      q(7029) => q(wai),
+      q(7030) => q(waj),
+      q(7031) => q(wam),
+      q(7032) => q(wan),
+      q(7033) => q(wao),
+      q(7034) => q(wap),
+      q(7035) => q(waq),
+      q(7036) => q(wat),
+      q(7037) => q(wau),
+      q(7038) => q(wav),
+      q(7039) => q(waw),
+      q(7040) => q(wax),
+      q(7041) => q(way),
+      q(7042) => q(waz),
+      q(7043) => q(wba),
+      q(7044) => q(wbb),
+      q(7045) => q(wbe),
+      q(7046) => q(wbh),
+      q(7047) => q(wbi),
+      q(7048) => q(wbj),
+      q(7049) => q(wbk),
+      q(7050) => q(wbl),
+      q(7051) => q(wbm),
+      q(7052) => q(wbp),
+      q(7053) => q(wbq),
+      q(7054) => q(wbr),
+      q(7055) => q(wbt),
+      q(7056) => q(wbv),
+      q(7057) => q(wbw),
+      q(7058) => q(wca),
+      q(7059) => q(wci),
+      q(7060) => q(wdd),
+      q(7061) => q(wdg),
+      q(7062) => q(wdj),
+      q(7063) => q(wdu),
+      q(7064) => q(wea),
+      q(7065) => q(wec),
+      q(7066) => q(wed),
+      q(7067) => q(weh),
+      q(7068) => q(wei),
+      q(7069) => q(wem),
+      q(7070) => q(weo),
+      q(7071) => q(wep),
+      q(7072) => q(wer),
+      q(7073) => q(wes),
+      q(7074) => q(wet),
+      q(7075) => q(weu),
+      q(7076) => q(wew),
+      q(7077) => q(wfg),
+      q(7078) => q(wga),
+      q(7079) => q(wgb),
+      q(7080) => q(wgg),
+      q(7081) => q(wgi),
+      q(7082) => q(wgo),
+      q(7083) => q(wgu),
+      q(7084) => q(wgy),
+      q(7085) => q(wha),
+      q(7086) => q(whg),
+      q(7087) => q(whk),
+      q(7088) => q(whu),
+      q(7089) => q(wib),
+      q(7090) => q(wic),
+      q(7091) => q(wie),
+      q(7092) => q(wif),
+      q(7093) => q(wig),
+      q(7094) => q(wih),
+      q(7095) => q(wii),
+      q(7096) => q(wij),
+      q(7097) => q(wik),
+      q(7098) => q(wil),
+      q(7099) => q(wim),
+      q(7100) => q(win),
+      q(7101) => q(wir),
+      q(7102) => q(wit),
+      q(7103) => q(wiu),
+      q(7104) => q(wiv),
+      q(7105) => q(wiy),
+      q(7106) => q(wja),
+      q(7107) => q(wji),
+      q(7108) => q(wka),
+      q(7109) => q(wkb),
+      q(7110) => q(wkd),
+      q(7111) => q(wkl),
+      q(7112) => q(wku),
+      q(7113) => q(wkw),
+      q(7114) => q(wla),
+      q(7115) => q(wlc),
+      q(7116) => q(wle),
+      q(7117) => q(wlg),
+      q(7118) => q(wli),
+      q(7119) => q(wlk),
+      q(7120) => q(wll),
+      q(7121) => q(wlm),
+      q(7122) => q(wlo),
+      q(7123) => q(wlr),
+      q(7124) => q(wls),
+      q(7125) => q(wlu),
+      q(7126) => q(wlv),
+      q(7127) => q(wlw),
+      q(7128) => q(wlx),
+      q(7129) => q(wly),
+      q(7130) => q(wma),
+      q(7131) => q(wmb),
+      q(7132) => q(wmc),
+      q(7133) => q(wmd),
+      q(7134) => q(wme),
+      q(7135) => q(wmh),
+      q(7136) => q(wmi),
+      q(7137) => q(wmm),
+      q(7138) => q(wmn),
+      q(7139) => q(wmo),
+      q(7140) => q(wms),
+      q(7141) => q(wmt),
+      q(7142) => q(wmw),
+      q(7143) => q(wmx),
+      q(7144) => q(wnb),
+      q(7145) => q(wnc),
+      q(7146) => q(wnd),
+      q(7147) => q(wne),
+      q(7148) => q(wng),
+      q(7149) => q(wni),
+      q(7150) => q(wnk),
+      q(7151) => q(wnm),
+      q(7152) => q(wno),
+      q(7153) => q(wnp),
+      q(7154) => q(wnu),
+      q(7155) => q(wny),
+      q(7156) => q(woa),
+      q(7157) => q(wob),
+      q(7158) => q(woc),
+      q(7159) => q(wod),
+      q(7160) => q(woe),
+      q(7161) => q(wof),
+      q(7162) => q(wog),
+      q(7163) => q(woi),
+      q(7164) => q(wok),
+      q(7165) => q(wom),
+      q(7166) => q(won),
+      q(7167) => q(woo),
+      q(7168) => q(wor),
+      q(7169) => q(wos),
+      q(7170) => q(wow),
+      q(7171) => q(woy),
+      q(7172) => q(wpc),
+      q(7173) => q(wra),
+      q(7174) => q(wrb),
+      q(7175) => q(wrd),
+      q(7176) => q(wrg),
+      q(7177) => q(wrh),
+      q(7178) => q(wri),
+      q(7179) => q(wrk),
+      q(7180) => q(wrl),
+      q(7181) => q(wrm),
+      q(7182) => q(wrn),
+      q(7183) => q(wro),
+      q(7184) => q(wrp),
+      q(7185) => q(wrr),
+      q(7186) => q(wrs),
+      q(7187) => q(wru),
+      q(7188) => q(wrv),
+      q(7189) => q(wrw),
+      q(7190) => q(wrx),
+      q(7191) => q(wry),
+      q(7192) => q(wrz),
+      q(7193) => q(wsa),
+      q(7194) => q(wsi),
+      q(7195) => q(wsk),
+      q(7196) => q(wsr),
+      q(7197) => q(wss),
+      q(7198) => q(wsu),
+      q(7199) => q(wsv),
+      q(7200) => q(wtf),
+      q(7201) => q(wti),
+      q(7202) => q(wtk),
+      q(7203) => q(wtm),
+      q(7204) => q(wtw),
+      q(7205) => q(wua),
+      q(7206) => q(wub),
+      q(7207) => q(wud),
+      q(7208) => q(wuh),
+      q(7209) => q(wul),
+      q(7210) => q(wum),
+      q(7211) => q(wun),
+      q(7212) => q(wur),
+      q(7213) => q(wut),
+      q(7214) => q(wuu),
+      q(7215) => q(wuv),
+      q(7216) => q(wux),
+      q(7217) => q(wuy),
+      q(7218) => q(wwa),
+      q(7219) => q(wwb),
+      q(7220) => q(wwo),
+      q(7221) => q(wwr),
+      q(7222) => q(www),
+      q(7223) => q(wxa),
+      q(7224) => q(wya),
+      q(7225) => q(wyb),
+      q(7226) => q(wym),
+      q(7227) => q(wyr),
+      q(7228) => q(wyy),
+      q(7229) => q(xaa),
+      q(7230) => q(xab),
+      q(7231) => q(xac),
+      q(7232) => q(xad),
+      q(7233) => q(xae),
+      q(7234) => q(xag),
+      q(7235) => q(xai),
+      q(7236) => q(xam),
+      q(7237) => q(xan),
+      q(7238) => q(xao),
+      q(7239) => q(xap),
+      q(7240) => q(xaq),
+      q(7241) => q(xar),
+      q(7242) => q(xas),
+      q(7243) => q(xat),
+      q(7244) => q(xau),
+      q(7245) => q(xav),
+      q(7246) => q(xaw),
+      q(7247) => q(xay),
+      q(7248) => q(xba),
+      q(7249) => q(xbb),
+      q(7250) => q(xbc),
+      q(7251) => q(xbi),
+      q(7252) => q(xbm),
+      q(7253) => q(xbn),
+      q(7254) => q(xbo),
+      q(7255) => q(xbr),
+      q(7256) => q(xbw),
+      q(7257) => q(xbx),
+      q(7258) => q(xcb),
+      q(7259) => q(xcc),
+      q(7260) => q(xce),
+      q(7261) => q(xcg),
+      q(7262) => q(xch),
+      q(7263) => q(xcl),
+      q(7264) => q(xcm),
+      q(7265) => q(xcn),
+      q(7266) => q(xco),
+      q(7267) => q(xcr),
+      q(7268) => q(xct),
+      q(7269) => q(xcu),
+      q(7270) => q(xcv),
+      q(7271) => q(xcw),
+      q(7272) => q(xcy),
+      q(7273) => q(xdc),
+      q(7274) => q(xdm),
+      q(7275) => q(xdy),
+      q(7276) => q(xeb),
+      q(7277) => q(xed),
+      q(7278) => q(xeg),
+      q(7279) => q(xel),
+      q(7280) => q(xem),
+      q(7281) => q(xep),
+      q(7282) => q(xer),
+      q(7283) => q(xes),
+      q(7284) => q(xet),
+      q(7285) => q(xeu),
+      q(7286) => q(xfa),
+      q(7287) => q(xga),
+      q(7288) => q(xgb),
+      q(7289) => q(xgf),
+      q(7290) => q(xgl),
+      q(7291) => q(xgr),
+      q(7292) => q(xgu),
+      q(7293) => q(xha),
+      q(7294) => q(xhc),
+      q(7295) => q(xhd),
+      q(7296) => q(xhe),
+      q(7297) => q(xhr),
+      q(7298) => q(xht),
+      q(7299) => q(xhu),
+      q(7300) => q(xhv),
+      q(7301) => q(xia),
+      q(7302) => q(xib),
+      q(7303) => q(xii),
+      q(7304) => q(xil),
+      q(7305) => q(xin),
+      q(7306) => q(xip),
+      q(7307) => q(xir),
+      q(7308) => q(xiv),
+      q(7309) => q(xiy),
+      q(7310) => q(xka),
+      q(7311) => q(xkb),
+      q(7312) => q(xkc),
+      q(7313) => q(xkd),
+      q(7314) => q(xke),
+      q(7315) => q(xkf),
+      q(7316) => q(xkg),
+      q(7317) => q(xkh),
+      q(7318) => q(xki),
+      q(7319) => q(xkj),
+      q(7320) => q(xkk),
+      q(7321) => q(xkl),
+      q(7322) => q(xkn),
+      q(7323) => q(xko),
+      q(7324) => q(xkp),
+      q(7325) => q(xkq),
+      q(7326) => q(xkr),
+      q(7327) => q(xks),
+      q(7328) => q(xkt),
+      q(7329) => q(xku),
+      q(7330) => q(xkv),
+      q(7331) => q(xkw),
+      q(7332) => q(xkx),
+      q(7333) => q(xky),
+      q(7334) => q(xkz),
+      q(7335) => q(xla),
+      q(7336) => q(xlb),
+      q(7337) => q(xlc),
+      q(7338) => q(xld),
+      q(7339) => q(xle),
+      q(7340) => q(xlg),
+      q(7341) => q(xli),
+      q(7342) => q(xln),
+      q(7343) => q(xlo),
+      q(7344) => q(xlp),
+      q(7345) => q(xls),
+      q(7346) => q(xlu),
+      q(7347) => q(xly),
+      q(7348) => q(xma),
+      q(7349) => q(xmb),
+      q(7350) => q(xmc),
+      q(7351) => q(xmd),
+      q(7352) => q(xme),
+      q(7353) => q(xmf),
+      q(7354) => q(xmg),
+      q(7355) => q(xmh),
+      q(7356) => q(xmj),
+      q(7357) => q(xmk),
+      q(7358) => q(xml),
+      q(7359) => q(xmm),
+      q(7360) => q(xmn),
+      q(7361) => q(xmo),
+      q(7362) => q(xmp),
+      q(7363) => q(xmq),
+      q(7364) => q(xmr),
+      q(7365) => q(xms),
+      q(7366) => q(xmt),
+      q(7367) => q(xmu),
+      q(7368) => q(xmv),
+      q(7369) => q(xmw),
+      q(7370) => q(xmx),
+      q(7371) => q(xmy),
+      q(7372) => q(xmz),
+      q(7373) => q(xna),
+      q(7374) => q(xnb),
+      q(7375) => q(xng),
+      q(7376) => q(xnh),
+      q(7377) => q(xnn),
+      q(7378) => q(xno),
+      q(7379) => q(xnr),
+      q(7380) => q(xns),
+      q(7381) => q(xnt),
+      q(7382) => q(xnz),
+      q(7383) => q(xoc),
+      q(7384) => q(xod),
+      q(7385) => q(xog),
+      q(7386) => q(xoi),
+      q(7387) => q(xok),
+      q(7388) => q(xom),
+      q(7389) => q(xon),
+      q(7390) => q(xoo),
+      q(7391) => q(xop),
+      q(7392) => q(xor),
+      q(7393) => q(xow),
+      q(7394) => q(xpc),
+      q(7395) => q(xpe),
+      q(7396) => q(xpg),
+      q(7397) => q(xpi),
+      q(7398) => q(xpj),
+      q(7399) => q(xpk),
+      q(7400) => q(xpm),
+      q(7401) => q(xpn),
+      q(7402) => q(xpo),
+      q(7403) => q(xpp),
+      q(7404) => q(xpq),
+      q(7405) => q(xpr),
+      q(7406) => q(xps),
+      q(7407) => q(xpu),
+      q(7408) => q(xpy),
+      q(7409) => q(xqa),
+      q(7410) => q(xqt),
+      q(7411) => q(xra),
+      q(7412) => q(xrb),
+      q(7413) => q(xre),
+      q(7414) => q(xri),
+      q(7415) => q(xrm),
+      q(7416) => q(xrn),
+      q(7417) => q(xrr),
+      q(7418) => q(xrt),
+      q(7419) => q(xru),
+      q(7420) => q(xrw),
+      q(7421) => q(xsa),
+      q(7422) => q(xsb),
+      q(7423) => q(xsc),
+      q(7424) => q(xsd),
+      q(7425) => q(xse),
+      q(7426) => q(xsh),
+      q(7427) => q(xsi),
+      q(7428) => q(xsj),
+      q(7429) => q(xsl),
+      q(7430) => q(xsm),
+      q(7431) => q(xsn),
+      q(7432) => q(xso),
+      q(7433) => q(xsp),
+      q(7434) => q(xsq),
+      q(7435) => q(xsr),
+      q(7436) => q(xss),
+      q(7437) => q(xsu),
+      q(7438) => q(xsv),
+      q(7439) => q(xsy),
+      q(7440) => q(xta),
+      q(7441) => q(xtb),
+      q(7442) => q(xtc),
+      q(7443) => q(xtd),
+      q(7444) => q(xte),
+      q(7445) => q(xtg),
+      q(7446) => q(xti),
+      q(7447) => q(xtj),
+      q(7448) => q(xtl),
+      q(7449) => q(xtm),
+      q(7450) => q(xtn),
+      q(7451) => q(xto),
+      q(7452) => q(xtp),
+      q(7453) => q(xtq),
+      q(7454) => q(xtr),
+      q(7455) => q(xts),
+      q(7456) => q(xtt),
+      q(7457) => q(xtu),
+      q(7458) => q(xtw),
+      q(7459) => q(xty),
+      q(7460) => q(xtz),
+      q(7461) => q(xua),
+      q(7462) => q(xub),
+      q(7463) => q(xud),
+      q(7464) => q(xug),
+      q(7465) => q(xuj),
+      q(7466) => q(xum),
+      q(7467) => q(xun),
+      q(7468) => q(xuo),
+      q(7469) => q(xup),
+      q(7470) => q(xur),
+      q(7471) => q(xut),
+      q(7472) => q(xuu),
+      q(7473) => q(xve),
+      q(7474) => q(xvi),
+      q(7475) => q(xvn),
+      q(7476) => q(xvo),
+      q(7477) => q(xvs),
+      q(7478) => q(xwa),
+      q(7479) => q(xwc),
+      q(7480) => q(xwe),
+      q(7481) => q(xwg),
+      q(7482) => q(xwl),
+      q(7483) => q(xwo),
+      q(7484) => q(xwr),
+      q(7485) => q(xxb),
+      q(7486) => q(xxk),
+      q(7487) => q(xxr),
+      q(7488) => q(xxt),
+      q(7489) => q(xyl),
+      q(7490) => q(xyy),
+      q(7491) => q(xzh),
+      q(7492) => q(xzm),
+      q(7493) => q(xzp),
+      q(7494) => q(yaa),
+      q(7495) => q(yab),
+      q(7496) => q(yac),
+      q(7497) => q(yad),
+      q(7498) => q(yae),
+      q(7499) => q(yaf),
+      q(7500) => q(yag),
+      q(7501) => q(yah),
+      q(7502) => q(yai),
+      q(7503) => q(yaj),
+      q(7504) => q(yak),
+      q(7505) => q(yal),
+      q(7506) => q(yam),
+      q(7507) => q(yan),
+      q(7508) => q(yaq),
+      q(7509) => q(yar),
+      q(7510) => q(yas),
+      q(7511) => q(yat),
+      q(7512) => q(yau),
+      q(7513) => q(yav),
+      q(7514) => q(yaw),
+      q(7515) => q(yax),
+      q(7516) => q(yay),
+      q(7517) => q(yaz),
+      q(7518) => q(yba),
+      q(7519) => q(ybb),
+      q(7520) => q(ybe),
+      q(7521) => q(ybh),
+      q(7522) => q(ybi),
+      q(7523) => q(ybj),
+      q(7524) => q(ybk),
+      q(7525) => q(ybl),
+      q(7526) => q(ybm),
+      q(7527) => q(ybn),
+      q(7528) => q(ybo),
+      q(7529) => q(ybx),
+      q(7530) => q(yby),
+      q(7531) => q(ych),
+      q(7532) => q(ycl),
+      q(7533) => q(ycn),
+      q(7534) => q(ycp),
+      q(7535) => q(ydd),
+      q(7536) => q(yde),
+      q(7537) => q(ydg),
+      q(7538) => q(ydk),
+      q(7539) => q(yds),
+      q(7540) => q(yea),
+      q(7541) => q(yec),
+      q(7542) => q(yee),
+      q(7543) => q(yei),
+      q(7544) => q(yej),
+      q(7545) => q(yel),
+      q(7546) => q(yer),
+      q(7547) => q(yes),
+      q(7548) => q(yet),
+      q(7549) => q(yeu),
+      q(7550) => q(yev),
+      q(7551) => q(yey),
+      q(7552) => q(yga),
+      q(7553) => q(ygl),
+      q(7554) => q(ygm),
+      q(7555) => q(ygp),
+      q(7556) => q(ygr),
+      q(7557) => q(ygw),
+      q(7558) => q(yha),
+      q(7559) => q(yhd),
+      q(7560) => q(yhl),
+      q(7561) => q(yia),
+      q(7562) => q(yig),
+      q(7563) => q(yih),
+      q(7564) => q(yii),
+      q(7565) => q(yij),
+      q(7566) => q(yik),
+      q(7567) => q(yil),
+      q(7568) => q(yim),
+      q(7569) => q(yin),
+      q(7570) => q(yip),
+      q(7571) => q(yiq),
+      q(7572) => q(yir),
+      q(7573) => q(yis),
+      q(7574) => q(yit),
+      q(7575) => q(yiu),
+      q(7576) => q(yiv),
+      q(7577) => q(yix),
+      q(7578) => q(yiy),
+      q(7579) => q(yiz),
+      q(7580) => q(yka),
+      q(7581) => q(ykg),
+      q(7582) => q(yki),
+      q(7583) => q(ykk),
+      q(7584) => q(ykl),
+      q(7585) => q(ykm),
+      q(7586) => q(ykn),
+      q(7587) => q(yko),
+      q(7588) => q(ykr),
+      q(7589) => q(ykt),
+      q(7590) => q(yku),
+      q(7591) => q(yky),
+      q(7592) => q(yla),
+      q(7593) => q(ylb),
+      q(7594) => q(yle),
+      q(7595) => q(ylg),
+      q(7596) => q(yli),
+      q(7597) => q(yll),
+      q(7598) => q(ylm),
+      q(7599) => q(yln),
+      q(7600) => q(ylo),
+      q(7601) => q(ylr),
+      q(7602) => q(ylu),
+      q(7603) => q(yly),
+      q(7604) => q(ymb),
+      q(7605) => q(ymc),
+      q(7606) => q(ymd),
+      q(7607) => q(yme),
+      q(7608) => q(ymg),
+      q(7609) => q(ymh),
+      q(7610) => q(ymi),
+      q(7611) => q(ymk),
+      q(7612) => q(yml),
+      q(7613) => q(ymm),
+      q(7614) => q(ymn),
+      q(7615) => q(ymo),
+      q(7616) => q(ymp),
+      q(7617) => q(ymq),
+      q(7618) => q(ymr),
+      q(7619) => q(yms),
+      q(7620) => q(ymt),
+      q(7621) => q(ymx),
+      q(7622) => q(ymz),
+      q(7623) => q(yna),
+      q(7624) => q(ynd),
+      q(7625) => q(yne),
+      q(7626) => q(yng),
+      q(7627) => q(ynh),
+      q(7628) => q(ynk),
+      q(7629) => q(ynl),
+      q(7630) => q(ynn),
+      q(7631) => q(yno),
+      q(7632) => q(ynq),
+      q(7633) => q(yns),
+      q(7634) => q(ynu),
+      q(7635) => q(yob),
+      q(7636) => q(yog),
+      q(7637) => q(yoi),
+      q(7638) => q(yok),
+      q(7639) => q(yol),
+      q(7640) => q(yom),
+      q(7641) => q(yon),
+      q(7642) => q(yos),
+      q(7643) => q(yot),
+      q(7644) => q(yox),
+      q(7645) => q(yoy),
+      q(7646) => q(ypa),
+      q(7647) => q(ypb),
+      q(7648) => q(ypg),
+      q(7649) => q(yph),
+      q(7650) => q(ypm),
+      q(7651) => q(ypn),
+      q(7652) => q(ypo),
+      q(7653) => q(ypp),
+      q(7654) => q(ypz),
+      q(7655) => q(yra),
+      q(7656) => q(yrb),
+      q(7657) => q(yre),
+      q(7658) => q(yri),
+      q(7659) => q(yrk),
+      q(7660) => q(yrl),
+      q(7661) => q(yrn),
+      q(7662) => q(yrs),
+      q(7663) => q(yrw),
+      q(7664) => q(ysc),
+      q(7665) => q(ysd),
+      q(7666) => q(ysg),
+      q(7667) => q(ysl),
+      q(7668) => q(ysn),
+      q(7669) => q(yso),
+      q(7670) => q(ysp),
+      q(7671) => q(ysr),
+      q(7672) => q(yss),
+      q(7673) => q(ysy),
+      q(7674) => q(yta),
+      q(7675) => q(ytl),
+      q(7676) => q(ytp),
+      q(7677) => q(ytw),
+      q(7678) => q(yua),
+      q(7679) => q(yub),
+      q(7680) => q(yuc),
+      q(7681) => q(yud),
+      q(7682) => q(yue),
+      q(7683) => q(yuf),
+      q(7684) => q(yug),
+      q(7685) => q(yui),
+      q(7686) => q(yuj),
+      q(7687) => q(yuk),
+      q(7688) => q(yul),
+      q(7689) => q(yum),
+      q(7690) => q(yun),
+      q(7691) => q(yup),
+      q(7692) => q(yuq),
+      q(7693) => q(yur),
+      q(7694) => q(yut),
+      q(7695) => q(yuu),
+      q(7696) => q(yuw),
+      q(7697) => q(yux),
+      q(7698) => q(yuy),
+      q(7699) => q(yuz),
+      q(7700) => q(yva),
+      q(7701) => q(yvt),
+      q(7702) => q(ywa),
+      q(7703) => q(ywl),
+      q(7704) => q(ywn),
+      q(7705) => q(ywq),
+      q(7706) => q(ywr),
+      q(7707) => q(ywt),
+      q(7708) => q(ywu),
+      q(7709) => q(yww),
+      q(7710) => q(yxg),
+      q(7711) => q(yxy),
+      q(7712) => q(yyu),
+      q(7713) => q(yyz),
+      q(7714) => q(yzg),
+      q(7715) => q(yzk),
+      q(7716) => q(zaa),
+      q(7717) => q(zab),
+      q(7718) => q(zac),
+      q(7719) => q(zad),
+      q(7720) => q(zae),
+      q(7721) => q(zaf),
+      q(7722) => q(zag),
+      q(7723) => q(zah),
+      q(7724) => q(zai),
+      q(7725) => q(zaj),
+      q(7726) => q(zak),
+      q(7727) => q(zal),
+      q(7728) => q(zam),
+      q(7729) => q(zao),
+      q(7730) => q(zaq),
+      q(7731) => q(zar),
+      q(7732) => q(zas),
+      q(7733) => q(zat),
+      q(7734) => q(zau),
+      q(7735) => q(zav),
+      q(7736) => q(zaw),
+      q(7737) => q(zax),
+      q(7738) => q(zay),
+      q(7739) => q(zaz),
+      q(7740) => q(zbc),
+      q(7741) => q(zbe),
+      q(7742) => q(zbt),
+      q(7743) => q(zbw),
+      q(7744) => q(zca),
+      q(7745) => q(zch),
+      q(7746) => q(zdj),
+      q(7747) => q(zea),
+      q(7748) => q(zeg),
+      q(7749) => q(zeh),
+      q(7750) => q(zga),
+      q(7751) => q(zgb),
+      q(7752) => q(zgm),
+      q(7753) => q(zgn),
+      q(7754) => q(zgr),
+      q(7755) => q(zhb),
+      q(7756) => q(zhd),
+      q(7757) => q(zhi),
+      q(7758) => q(zhn),
+      q(7759) => q(zhw),
+      q(7760) => q(zia),
+      q(7761) => q(zib),
+      q(7762) => q(zik),
+      q(7763) => q(zil),
+      q(7764) => q(zim),
+      q(7765) => q(zin),
+      q(7766) => q(zir),
+      q(7767) => q(ziw),
+      q(7768) => q(ziz),
+      q(7769) => q(zka),
+      q(7770) => q(zkb),
+      q(7771) => q(zkd),
+      q(7772) => q(zkg),
+      q(7773) => q(zkh),
+      q(7774) => q(zkk),
+      q(7775) => q(zkn),
+      q(7776) => q(zko),
+      q(7777) => q(zkp),
+      q(7778) => q(zkr),
+      q(7779) => q(zkt),
+      q(7780) => q(zku),
+      q(7781) => q(zkv),
+      q(7782) => q(zkz),
+      q(7783) => q(zlj),
+      q(7784) => q(zlm),
+      q(7785) => q(zln),
+      q(7786) => q(zlq),
+      q(7787) => q(zma),
+      q(7788) => q(zmb),
+      q(7789) => q(zmc),
+      q(7790) => q(zmd),
+      q(7791) => q(zme),
+      q(7792) => q(zmf),
+      q(7793) => q(zmg),
+      q(7794) => q(zmh),
+      q(7795) => q(zmi),
+      q(7796) => q(zmj),
+      q(7797) => q(zmk),
+      q(7798) => q(zml),
+      q(7799) => q(zmm),
+      q(7800) => q(zmn),
+      q(7801) => q(zmo),
+      q(7802) => q(zmp),
+      q(7803) => q(zmq),
+      q(7804) => q(zmr),
+      q(7805) => q(zms),
+      q(7806) => q(zmt),
+      q(7807) => q(zmu),
+      q(7808) => q(zmv),
+      q(7809) => q(zmw),
+      q(7810) => q(zmx),
+      q(7811) => q(zmy),
+      q(7812) => q(zmz),
+      q(7813) => q(zna),
+      q(7814) => q(zne),
+      q(7815) => q(zng),
+      q(7816) => q(znk),
+      q(7817) => q(zns),
+      q(7818) => q(zoc),
+      q(7819) => q(zoh),
+      q(7820) => q(zom),
+      q(7821) => q(zoo),
+      q(7822) => q(zoq),
+      q(7823) => q(zor),
+      q(7824) => q(zos),
+      q(7825) => q(zpa),
+      q(7826) => q(zpb),
+      q(7827) => q(zpc),
+      q(7828) => q(zpd),
+      q(7829) => q(zpe),
+      q(7830) => q(zpf),
+      q(7831) => q(zpg),
+      q(7832) => q(zph),
+      q(7833) => q(zpi),
+      q(7834) => q(zpj),
+      q(7835) => q(zpk),
+      q(7836) => q(zpl),
+      q(7837) => q(zpm),
+      q(7838) => q(zpn),
+      q(7839) => q(zpo),
+      q(7840) => q(zpp),
+      q(7841) => q(zpq),
+      q(7842) => q(zpr),
+      q(7843) => q(zps),
+      q(7844) => q(zpt),
+      q(7845) => q(zpu),
+      q(7846) => q(zpv),
+      q(7847) => q(zpw),
+      q(7848) => q(zpx),
+      q(7849) => q(zpy),
+      q(7850) => q(zpz),
+      q(7851) => q(zqe),
+      q(7852) => q(zra),
+      q(7853) => q(zrg),
+      q(7854) => q(zrn),
+      q(7855) => q(zro),
+      q(7856) => q(zrp),
+      q(7857) => q(zrs),
+      q(7858) => q(zsa),
+      q(7859) => q(zsk),
+      q(7860) => q(zsl),
+      q(7861) => q(zsm),
+      q(7862) => q(zsr),
+      q(7863) => q(zsu),
+      q(7864) => q(zte),
+      q(7865) => q(ztg),
+      q(7866) => q(ztl),
+      q(7867) => q(ztm),
+      q(7868) => q(ztn),
+      q(7869) => q(ztp),
+      q(7870) => q(ztq),
+      q(7871) => q(zts),
+      q(7872) => q(ztt),
+      q(7873) => q(ztu),
+      q(7874) => q(ztx),
+      q(7875) => q(zty),
+      q(7876) => q(zua),
+      q(7877) => q(zuh),
+      q(7878) => q(zum),
+      q(7879) => q(zuy),
+      q(7880) => q(zwa),
+      q(7881) => q(zyb),
+      q(7882) => q(zyg),
+      q(7883) => q(zyj),
+      q(7884) => q(zyn),
+      q(7885) => q(zyp),
+      q(7886) => q(zzj),
+      },
+   q(term) => {
+      q(0013) => q(sqi),
+      q(0024) => q(hye),
+      q(0044) => q(eus),
+      q(0066) => q(mya),
+      q(0079) => q(zho),
+      q(0101) => q(ces),
+      q(0116) => q(nld),
+      q(0137) => q(fra),
+      q(0149) => q(kat),
+      q(0150) => q(deu),
+      q(0164) => q(ell),
+      q(0187) => q(isl),
+      q(0262) => q(mkd),
+      q(0270) => q(mri),
+      q(0274) => q(msa),
+      q(0342) => q(fas),
+      q(0360) => q(ron),
+      q(0385) => q(slk),
+      q(0427) => q(bod),
+      q(0466) => q(cym),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Language_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,269 @@
+package Locale::Codes::Language_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Language_Retired - retired language codes for the Locale::Codes::Language module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Language module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'language'}{'alpha-2'}{'code'} = {
+   q(in) => q(Indonesian),
+   q(iw) => q(Hebrew),
+   q(ji) => q(Yiddish),
+   q(jw) => q(Javanese),
+   q(mo) => q(Moldavian),
+};
+
+$Locale::Codes::Retired{'language'}{'alpha-3'}{'code'} = {
+   q(ayx) => q(Ayi (China)),
+   q(baz) => q(Tunen),
+   q(bjd) => q(Bandjigali),
+   q(bjq) => q(Southern Betsimisaraka Malagasy),
+   q(ccq) => q(Chaungtha),
+   q(cka) => q(Khumi Awa Chin),
+   q(dap) => q(Nisi (India)),
+   q(dha) => q(Dhanwar (India)),
+   q(dkl) => q(Kolum So Dogon),
+   q(dwl) => q(Walo Kumbe Dogon),
+   q(elp) => q(Elpaputih),
+   q(gbc) => q(Garawa),
+   q(gio) => q(Gelao),
+   q(hrr) => q(Horuru),
+   q(ibi) => q(Ibilo),
+   q(jar) => q(Jarawa (Nigeria)),
+   q(kdv) => q(Kado),
+   q(kgh) => q(Upper Tanudan Kalinga),
+   q(kpp) => q(Paku Karen),
+   q(kzh) => q(Kenuzi-Dongola),
+   q(lcq) => q(Luhu),
+   q(mgx) => q(Omati),
+   q(mja) => q(Mahei),
+   q(nbf) => q(Naxi),
+   q(nln) => q(Durango Nahuatl),
+   q(noo) => q(Nootka),
+   q(pbz) => q(Palu),
+   q(pgy) => q(Pongyong),
+   q(sca) => q(Sansu),
+   q(tie) => q(Tingal),
+   q(tkk) => q(Takpa),
+   q(tlw) => q(South Wemale),
+   q(unp) => q(Worora),
+   q(wiw) => q(Wirangu),
+   q(ybd) => q(Yangbye),
+   q(yen) => q(Yendang),
+   q(yma) => q(Yamphe),
+};
+
+$Locale::Codes::Retired{'language'}{'term'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'language'}{'alpha-2'}{'name'} = {
+   q((afan) oromo) => [ q(om), q((Afan) Oromo) ],
+   q(bengali; bangla) => [ q(bn), q(Bengali; Bangla) ],
+   q(bhutani) => [ q(dz), q(Bhutani) ],
+   q(bihari) => [ q(bh), q(Bihari) ],
+   q(byelorussian) => [ q(be), q(Byelorussian) ],
+   q(cambodian) => [ q(km), q(Cambodian) ],
+   q(chichewa; nyanja) => [ q(ny), q(Chichewa; Nyanja) ],
+   q(faeroese) => [ q(fo), q(Faeroese) ],
+   q(fiji) => [ q(fj), q(Fiji) ],
+   q(frisian) => [ q(fy), q(Frisian) ],
+   q(gaelic (scots)) => [ q(gd), q(Gaelic (Scots)) ],
+   q(gallegan) => [ q(gl), q(Gallegan) ],
+   q(greek) => [ q(el), q(Greek) ],
+   q(greek, modern (1453-)) => [ q(el), q(Greek, Modern (1453-)) ],
+   q(greenlandic) => [ q(kl), q(Greenlandic) ],
+   q(interlingua) => [ q(ia), q(Interlingua) ],
+   q(inupiak) => [ q(ik), q(Inupiak) ],
+   q(khmer) => [ q(km), q(Khmer) ],
+   q(kirundi) => [ q(rn), q(Kirundi) ],
+   q(laothian) => [ q(lo), q(Laothian) ],
+   q(latvian, lettish) => [ q(lv), q(Latvian, Lettish) ],
+   q(letzeburgesch) => [ q(lb), q(Letzeburgesch) ],
+   q(malay) => [ q(ms), q(Malay) ],
+   q(marshall) => [ q(mh), q(Marshall) ],
+   q(moldavian) => [ q(mo), q(Moldavian) ],
+   q(nepali) => [ q(ne), q(Nepali) ],
+   q(norwegian bokmal) => [ q(nb), q(Norwegian Bokmal) ],
+   q(occitan) => [ q(oc), q(Occitan) ],
+   q(oriya) => [ q(or), q(Oriya) ],
+   q(ossetian; ossetic) => [ q(os), q(Ossetian; Ossetic) ],
+   q(pashto, pushto) => [ q(ps), q(Pashto, Pushto) ],
+   q(punjabi) => [ q(pa), q(Punjabi) ],
+   q(rhaeto-romance) => [ q(rm), q(Rhaeto-Romance) ],
+   q(sami) => [ q(se), q(Sami) ],
+   q(sangro) => [ q(sg), q(Sangro) ],
+   q(scots gaelic) => [ q(gd), q(Scots Gaelic) ],
+   q(sesotho) => [ q(st), q(Sesotho) ],
+   q(setswana) => [ q(tn), q(Setswana) ],
+   q(singhalese) => [ q(si), q(Singhalese) ],
+   q(sinhalese) => [ q(si), q(Sinhalese) ],
+   q(siswati) => [ q(ss), q(Siswati) ],
+   q(sotho) => [ q(st), q(Sotho) ],
+   q(sotho, southern) => [ q(st), q(Sotho, Southern) ],
+   q(swahili) => [ q(sw), q(Swahili) ],
+   q(tegulu) => [ q(te), q(Tegulu) ],
+   q(tonga) => [ q(to), q(Tonga) ],
+   q(volapuk) => [ q(vo), q(Volapuk) ],
+};
+
+$Locale::Codes::Retired{'language'}{'alpha-3'}{'name'} = {
+   q(ainu) => [ q(ain), q(Ainu) ],
+   q(amarag) => [ q(amg), q(Amarag) ],
+   q(anu) => [ q(anl), q(Anu) ],
+   q(apalik) => [ q(apo), q(Apalik) ],
+   q(ayi (china)) => [ q(ayx), q(Ayi (China)) ],
+   q(bandjigali) => [ q(bjd), q(Bandjigali) ],
+   q(bantu (other)) => [ q(bnt), q(Bantu (Other)) ],
+   q(basa) => [ q(bas), q(Basa) ],
+   q(begbere-ejar) => [ q(bqv), q(Begbere-Ejar) ],
+   q(bekwil) => [ q(bkw), q(Bekwil) ],
+   q(bemba) => [ q(bem), q(Bemba) ],
+   q(brek karen) => [ q(kvl), q(Brek Karen) ],
+   q(burum-mindik) => [ q(bmu), q(Burum-Mindik) ],
+   q(central bicolano) => [ q(bcl), q(Central Bicolano) ],
+   q(chaungtha) => [ q(ccq), q(Chaungtha) ],
+   q(creoles and pidgins ) => [ q(crp), q(Creoles and pidgins ) ],
+   q(creoles and pidgins, english based) => [ q(cpe), q(Creoles and pidgins, English based) ],
+   q(creoles and pidgins, french-based ) => [ q(cpf), q(Creoles and pidgins, French-based ) ],
+   q(creoles and pidgins, portuguese-based ) => [ q(cpp), q(Creoles and pidgins, Portuguese-based ) ],
+   q(darling) => [ q(drl), q(Darling) ],
+   q(dhanwar (india)) => [ q(dha), q(Dhanwar (India)) ],
+   q(dogri) => [ q(doi), q(Dogri) ],
+   q(duduela) => [ q(duk), q(Duduela) ],
+   q(dumpu) => [ q(wtf), q(Dumpu) ],
+   q(durango nahuatl) => [ q(nln), q(Durango Nahuatl) ],
+   q(dutch, middle (ca.1050-1350)) => [ q(dum), q(Dutch, Middle (ca.1050-1350)) ],
+   q(elpaputih) => [ q(elp), q(Elpaputih) ],
+   q(english, middle (1100-1500)) => [ q(enm), q(English, Middle (1100-1500)) ],
+   q(english, old (ca.450-1100)) => [ q(ang), q(English, Old (ca.450-1100)) ],
+   q(fang) => [ q(fan), q(Fang) ],
+   q(french, middle (ca.1400-1600)) => [ q(frm), q(French, Middle (ca.1400-1600)) ],
+   q(french, old (842-ca.1400)) => [ q(fro), q(French, Old (842-ca.1400)) ],
+   q(garawa) => [ q(gbc), q(Garawa) ],
+   q(gbaya) => [ q(gba), q(Gbaya) ],
+   q(gelao) => [ q(gio), q(Gelao) ],
+   q(german, middle high (ca.1050-1500)) => [ q(gmh), q(German, Middle High (ca.1050-1500)) ],
+   q(german, old high (ca.750-1050)) => [ q(goh), q(German, Old High (ca.750-1050)) ],
+   q(greek, ancient (to 1453)) => [ q(grc), q(Greek, Ancient (to 1453)) ],
+   q(hainyaxo bozo) => [ q(bzx), q(Hainyaxo Bozo) ],
+   q(horuru) => [ q(hrr), q(Horuru) ],
+   q(ibilo) => [ q(ibi), q(Ibilo) ],
+   q(idun) => [ q(ldb), q(Idun) ],
+   q(ikobi-mena) => [ q(meb), q(Ikobi-Mena) ],
+   q(irish, middle (900-1200)) => [ q(mga), q(Irish, Middle (900-1200)) ],
+   q(irish, old (to 900)) => [ q(sga), q(Irish, Old (to 900)) ],
+   q(jarawa (nigeria)) => [ q(jar), q(Jarawa (Nigeria)) ],
+   q(kadara) => [ q(kad), q(Kadara) ],
+   q(kado) => [ q(kdv), q(Kado) ],
+   q(kag-fer-jiir-koor-ror-us-zuksun) => [ q(gel), q(Kag-Fer-Jiir-Koor-Ror-Us-Zuksun) ],
+   q(kamba) => [ q(kam), q(Kamba) ],
+   q(kemezung) => [ q(dmo), q(Kemezung) ],
+   q(kenuzi-dongola) => [ q(kzh), q(Kenuzi-Dongola) ],
+   q(khumi awa chin) => [ q(cka), q(Khumi Awa Chin) ],
+   q(kol) => [ q(ekl), q(Kol) ],
+   q(kolum so dogon) => [ q(dkl), q(Kolum So Dogon) ],
+   q(konkani) => [ q(kok), q(Konkani) ],
+   q(kumak) => [ q(nee), q(Kumak) ],
+   q(kutang ghale) => [ q(ght), q(Kutang Ghale) ],
+   q(kwato) => [ q(kop), q(Kwato) ],
+   q(lowa) => [ q(loy), q(Lowa) ],
+   q(lower tanudan kalinga) => [ q(kml), q(Lower Tanudan Kalinga) ],
+   q(luhu) => [ q(lcq), q(Luhu) ],
+   q(mahei) => [ q(mja), q(Mahei) ],
+   q(malasanga) => [ q(mqz), q(Malasanga) ],
+   q(mari) => [ q(chm), q(Mari) ],
+   q(mbedam) => [ q(xmd), q(Mbedam) ],
+   q(mende) => [ q(men), q(Mende) ],
+   q(mire) => [ q(mvh), q(Mire) ],
+   q(miri) => [ q(mrg), q(Miri) ],
+   q(misima-paneati) => [ q(mpx), q(Misima-Paneati) ],
+   q(mpongmpong) => [ q(mgg), q(Mpongmpong) ],
+   q(mro chin) => [ q(cmr), q(Mro Chin) ],
+   q(muduapa) => [ q(wiv), q(Muduapa) ],
+   q(nakama) => [ q(nib), q(Nakama) ],
+   q(nanggu) => [ q(ngr), q(Nanggu) ],
+   q(nangikurrunggurr) => [ q(nam), q(Nangikurrunggurr) ],
+   q(nga la) => [ q(hlt), q(Nga La) ],
+   q(nisi (india)) => [ q(dap), q(Nisi (India)) ],
+   q(nootka) => [ q(noo), q(Nootka) ],
+   q(norse, old) => [ q(non), q(Norse, Old) ],
+   q(north wemale) => [ q(weo), q(North Wemale) ],
+   q(northern catanduanes bicolano) => [ q(cts), q(Northern Catanduanes Bicolano) ],
+   q(northern lorung) => [ q(lbr), q(Northern Lorung) ],
+   q(nung (myanmar)) => [ q(nun), q(Nung (Myanmar)) ],
+   q(omati) => [ q(mgx), q(Omati) ],
+   q(ounge) => [ q(oue), q(Ounge) ],
+   q(palu) => [ q(pbz), q(Palu) ],
+   q(persian, old (ca.600-400 b.c.)) => [ q(peo), q(Persian, Old (ca.600-400 B.C.)) ],
+   q(pongyong) => [ q(pgy), q(Pongyong) ],
+   q(provencal, old (to 1500)) => [ q(pro), q(Provencal, Old (to 1500)) ],
+   q(sakam) => [ q(skm), q(Sakam) ],
+   q(sansu) => [ q(sca), q(Sansu) ],
+   q(sauk) => [ q(skc), q(Sauk) ],
+   q(sepen) => [ q(spm), q(Sepen) ],
+   q(shangzhai) => [ q(jih), q(Shangzhai) ],
+   q(so (cameroon)) => [ q(sox), q(So (Cameroon)) ],
+   q(south american indian (other)) => [ q(sai), q(South American Indian (Other)) ],
+   q(south wemale) => [ q(tlw), q(South Wemale) ],
+   q(southern catanduanes bicolano) => [ q(bln), q(Southern Catanduanes Bicolano) ],
+   q(southern lorung) => [ q(lrr), q(Southern Lorung) ],
+   q(sulung) => [ q(suv), q(Sulung) ],
+   q(takpa) => [ q(tkk), q(Takpa) ],
+   q(tangkhul naga) => [ q(nmf), q(Tangkhul Naga) ],
+   q(tina sambal) => [ q(xsb), q(Tina Sambal) ],
+   q(tingal) => [ q(tie), q(Tingal) ],
+   q(turkish, ottoman (1500-1928)) => [ q(ota), q(Turkish, Ottoman (1500-1928)) ],
+   q(upper tanudan kalinga) => [ q(kgh), q(Upper Tanudan Kalinga) ],
+   q(walamo) => [ q(wal), q(Walamo) ],
+   q(walo kumbe dogon) => [ q(dwl), q(Walo Kumbe Dogon) ],
+   q(waray) => [ q(war), q(Waray) ],
+   q(welaung) => [ q(weu), q(Welaung) ],
+   q(were) => [ q(wei), q(Were) ],
+   q(western canadian inuktitut) => [ q(ikt), q(Western Canadian Inuktitut) ],
+   q(worora) => [ q(unp), q(Worora) ],
+   q(yamphe) => [ q(yma), q(Yamphe) ],
+   q(yangbye) => [ q(ybd), q(Yangbye) ],
+   q(yeskwa) => [ q(yes), q(Yeskwa) ],
+   q(yonggom) => [ q(yon), q(Yonggom) ],
+};
+
+$Locale::Codes::Retired{'language'}{'term'}{'name'} = {
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script.pod
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,131 @@
+=pod
+
+=head1 NAME
+
+Locale::Codes::Script - standard codes for script identification
+
+=head1 SYNOPSIS
+
+   use Locale::Codes::Script;
+
+   $script  = code2script('phnx');                     # 'Phoenician'
+   $code    = script2code('Phoenician');               # 'Phnx'
+   $code    = script2code('Phoenician',
+                          LOCALE_CODE_NUMERIC);        # 115
+
+   @codes   = all_script_codes();
+   @scripts = all_script_names();
+
+=head1 DESCRIPTION
+
+The C<Locale::Codes::Script> module provides access to standards codes used
+for identifying scripts, such as those defined in ISO 15924.
+
+Most of the routines take an optional additional argument which
+specifies the code set to use. If not specified, the default ISO
+15924 four-letter codes will be used.
+
+=head1 SUPPORTED CODE SETS
+
+There are several different code sets you can use for identifying
+scripts. A code set may be specified using either a name, or a
+constant that is automatically exported by this module.
+
+For example, the two are equivalent:
+
+   $script = code2script('phnx','alpha');
+   $script = code2script('phnx',LOCALE_SCRIPT_ALPHA);
+
+The codesets currently supported are:
+
+=over 4
+
+=item B<alpha, LOCALE_SCRIPT_ALPHA>
+
+This is a set of four-letter (capitalized) codes from ISO 15924
+such as 'Phnx' for Phoenician.  It also includes additions to this
+set included in the IANA language registry.
+
+The Zxxx, Zyyy, and Zzzz codes are not used.
+
+This is the default code set.
+
+=item B<num, LOCALE_SCRIPT_NUMERIC>
+
+This is a set of three-digit numeric codes from ISO 15924 such as 115
+for Phoenician.
+
+=back
+
+=head1 ROUTINES
+
+=over 4
+
+=item B<code2script ( CODE [,CODESET] )>
+
+=item B<script2code ( NAME [,CODESET] )>
+
+=item B<script_code2code ( CODE ,CODESET ,CODESET2 )>
+
+=item B<all_script_codes ( [CODESET] )>
+
+=item B<all_script_names ( [CODESET] )>
+
+=item B<Locale::Codes::Script::rename_script  ( CODE ,NEW_NAME [,CODESET] )>
+
+=item B<Locale::Codes::Script::add_script  ( CODE ,NAME [,CODESET] )>
+
+=item B<Locale::Codes::Script::delete_script  ( CODE [,CODESET] )>
+
+=item B<Locale::Codes::Script::add_script_alias  ( NAME ,NEW_NAME )>
+
+=item B<Locale::Codes::Script::delete_script_alias  ( NAME )>
+
+=item B<Locale::Codes::Script::rename_script_code  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Script::add_script_code_alias  ( CODE ,NEW_CODE [,CODESET] )>
+
+=item B<Locale::Codes::Script::delete_script_code_alias  ( CODE [,CODESET] )>
+
+These routines are all documented in the Locale::Codes::API man page.
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item B<Locale::Codes>
+
+The Locale-Codes distribution.
+
+=item B<Locale::Codes::API>
+
+The list of functions supported by this module.
+
+=item B<http://www.unicode.org/iso15924/>
+
+Home page for ISO 15924.
+
+=item B<http://www.iana.org/assignments/language-subtag-registry>
+
+The IANA language subtag registry.
+
+=back
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3150 @@
+package Locale::Codes::Script_Codes;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'get_codes' is run.
+#    Generated on: Wed Feb 27 10:04:29 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Script_Codes - script codes for the Locale::Codes::Script module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Script module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Data{'script'}{'id'} = '0161';
+
+$Locale::Codes::Data{'script'}{'id2names'} = {
+   q(0001) => [
+      q(Afaka),
+      ],
+   q(0002) => [
+      q(Caucasian Albanian),
+      ],
+   q(0003) => [
+      q(Arabic),
+      ],
+   q(0004) => [
+      q(Imperial Aramaic),
+      ],
+   q(0005) => [
+      q(Armenian),
+      ],
+   q(0006) => [
+      q(Avestan),
+      ],
+   q(0007) => [
+      q(Balinese),
+      ],
+   q(0008) => [
+      q(Bamum),
+      ],
+   q(0009) => [
+      q(Bassa Vah),
+      ],
+   q(0010) => [
+      q(Batak),
+      ],
+   q(0011) => [
+      q(Bengali),
+      ],
+   q(0012) => [
+      q(Blissymbols),
+      ],
+   q(0013) => [
+      q(Bopomofo),
+      ],
+   q(0014) => [
+      q(Brahmi),
+      ],
+   q(0015) => [
+      q(Braille),
+      ],
+   q(0016) => [
+      q(Buginese),
+      ],
+   q(0017) => [
+      q(Buhid),
+      ],
+   q(0018) => [
+      q(Chakma),
+      ],
+   q(0019) => [
+      q(Unified Canadian Aboriginal Syllabics),
+      ],
+   q(0020) => [
+      q(Carian),
+      ],
+   q(0021) => [
+      q(Cham),
+      ],
+   q(0022) => [
+      q(Cherokee),
+      ],
+   q(0023) => [
+      q(Cirth),
+      ],
+   q(0024) => [
+      q(Coptic),
+      ],
+   q(0025) => [
+      q(Cypriot),
+      ],
+   q(0026) => [
+      q(Cyrillic),
+      ],
+   q(0027) => [
+      q(Cyrillic (Old Church Slavonic variant)),
+      ],
+   q(0028) => [
+      q(Devanagari (Nagari)),
+      q(Devanagari),
+      q(Nagari),
+      ],
+   q(0029) => [
+      q(Deseret (Mormon)),
+      q(Deseret),
+      q(Mormon),
+      ],
+   q(0030) => [
+      q(Duployan shorthand, Duployan stenography),
+      q(Duployan shorthand),
+      q(Duployan stenography),
+      ],
+   q(0031) => [
+      q(Egyptian demotic),
+      ],
+   q(0032) => [
+      q(Egyptian hieratic),
+      ],
+   q(0033) => [
+      q(Egyptian hieroglyphs),
+      ],
+   q(0034) => [
+      q(Elbasan),
+      ],
+   q(0035) => [
+      q(Ethiopic (Geez)),
+      q(Ethiopic),
+      q(Ge'ez),
+      ],
+   q(0036) => [
+      q(Georgian (Mkhedruli)),
+      ],
+   q(0037) => [
+      q(Khutsuri (Asomtavruli and Nuskhuri)),
+      ],
+   q(0038) => [
+      q(Glagolitic),
+      ],
+   q(0039) => [
+      q(Gothic),
+      ],
+   q(0040) => [
+      q(Grantha),
+      ],
+   q(0041) => [
+      q(Greek),
+      ],
+   q(0042) => [
+      q(Gujarati),
+      ],
+   q(0043) => [
+      q(Gurmukhi),
+      ],
+   q(0044) => [
+      q(Hangul (Hangul, Hangeul)),
+      q(Hangul),
+      q(Hangeul),
+      ],
+   q(0045) => [
+      q(Han (Hanzi, Kanji, Hanja)),
+      q(Han),
+      q(Hanzi),
+      q(Kanji),
+      q(Hanja),
+      ],
+   q(0046) => [
+      q(Hanunoo (Hanunoo)),
+      q(Hanunoo),
+      ],
+   q(0047) => [
+      q(Han (Simplified variant)),
+      ],
+   q(0048) => [
+      q(Han (Traditional variant)),
+      ],
+   q(0049) => [
+      q(Hebrew),
+      ],
+   q(0050) => [
+      q(Hiragana),
+      ],
+   q(0051) => [
+      q(Anatolian Hieroglyphs (Luwian Hieroglyphs, Hittite Hieroglyphs)),
+      q(Anatolian Hieroglyphs),
+      q(Luwian Hieroglyphs),
+      q(Hittite Hieroglyphs),
+      ],
+   q(0052) => [
+      q(Pahawh Hmong),
+      ],
+   q(0053) => [
+      q(Japanese syllabaries (alias for Hiragana + Katakana)),
+      ],
+   q(0054) => [
+      q(Old Hungarian (Hungarian Runic)),
+      q(Old Hungarian),
+      q(Hungarian Runic),
+      ],
+   q(0055) => [
+      q(Indus (Harappan)),
+      q(Indus),
+      q(Harappan),
+      ],
+   q(0056) => [
+      q(Old Italic (Etruscan, Oscan, etc.)),
+      ],
+   q(0057) => [
+      q(Javanese),
+      ],
+   q(0058) => [
+      q(Japanese (alias for Han + Hiragana + Katakana)),
+      ],
+   q(0059) => [
+      q(Jurchen),
+      ],
+   q(0060) => [
+      q(Kayah Li),
+      ],
+   q(0061) => [
+      q(Katakana),
+      ],
+   q(0062) => [
+      q(Kharoshthi),
+      ],
+   q(0063) => [
+      q(Khmer),
+      ],
+   q(0064) => [
+      q(Khojki),
+      ],
+   q(0065) => [
+      q(Kannada),
+      ],
+   q(0066) => [
+      q(Korean (alias for Hangul + Han)),
+      ],
+   q(0067) => [
+      q(Kpelle),
+      ],
+   q(0068) => [
+      q(Kaithi),
+      ],
+   q(0069) => [
+      q(Tai Tham (Lanna)),
+      q(Tai Tham),
+      q(Lanna),
+      ],
+   q(0070) => [
+      q(Lao),
+      ],
+   q(0071) => [
+      q(Latin (Fraktur variant)),
+      ],
+   q(0072) => [
+      q(Latin (Gaelic variant)),
+      ],
+   q(0073) => [
+      q(Latin),
+      ],
+   q(0074) => [
+      q(Lepcha (Rong)),
+      q(Lepcha),
+      q(Rong),
+      ],
+   q(0075) => [
+      q(Limbu),
+      ],
+   q(0076) => [
+      q(Linear A),
+      ],
+   q(0077) => [
+      q(Linear B),
+      ],
+   q(0078) => [
+      q(Lisu (Fraser)),
+      q(Lisu),
+      q(Fraser),
+      ],
+   q(0079) => [
+      q(Loma),
+      ],
+   q(0080) => [
+      q(Lycian),
+      ],
+   q(0081) => [
+      q(Lydian),
+      ],
+   q(0082) => [
+      q(Mahajani),
+      ],
+   q(0083) => [
+      q(Mandaic, Mandaean),
+      q(Mandaic),
+      q(Mandaean),
+      ],
+   q(0084) => [
+      q(Manichaean),
+      ],
+   q(0085) => [
+      q(Mayan hieroglyphs),
+      ],
+   q(0086) => [
+      q(Mende),
+      ],
+   q(0087) => [
+      q(Meroitic Cursive),
+      ],
+   q(0088) => [
+      q(Meroitic Hieroglyphs),
+      ],
+   q(0089) => [
+      q(Malayalam),
+      ],
+   q(0090) => [
+      q(Moon (Moon code, Moon script, Moon type)),
+      q(Moon),
+      q(Moon code),
+      q(Moon script),
+      q(Moon type),
+      ],
+   q(0091) => [
+      q(Mongolian),
+      ],
+   q(0092) => [
+      q(Mro, Mru),
+      q(Mro),
+      q(Mru),
+      ],
+   q(0093) => [
+      q(Meitei Mayek (Meithei, Meetei)),
+      q(Meitei Mayek),
+      q(Meithei),
+      q(Meetei),
+      ],
+   q(0094) => [
+      q(Myanmar (Burmese)),
+      q(Myanmar),
+      q(Burmese),
+      ],
+   q(0095) => [
+      q(Old North Arabian (Ancient North Arabian)),
+      q(Old North Arabian),
+      q(Ancient North Arabian),
+      ],
+   q(0096) => [
+      q(Nabataean),
+      ],
+   q(0097) => [
+      q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)),
+      q(Nakhi Geba),
+      q('Na-'Khi Ggo-baw),
+      q(Naxi Geba),
+      ],
+   q(0098) => [
+      q(N'Ko),
+      ],
+   q(0099) => [
+      q(Nushu),
+      ],
+   q(0100) => [
+      q(Ogham),
+      ],
+   q(0101) => [
+      q(Ol Chiki (Ol Cemet, Ol, Santali)),
+      q(Ol Chiki),
+      q(Ol Cemet'),
+      q(Ol),
+      q(Santali),
+      ],
+   q(0102) => [
+      q(Old Turkic, Orkhon Runic),
+      q(Old Turkic),
+      q(Orkhon Runic),
+      ],
+   q(0103) => [
+      q(Oriya),
+      ],
+   q(0104) => [
+      q(Osmanya),
+      ],
+   q(0105) => [
+      q(Palmyrene),
+      ],
+   q(0106) => [
+      q(Old Permic),
+      ],
+   q(0107) => [
+      q(Phags-pa),
+      ],
+   q(0108) => [
+      q(Inscriptional Pahlavi),
+      ],
+   q(0109) => [
+      q(Psalter Pahlavi),
+      ],
+   q(0110) => [
+      q(Book Pahlavi),
+      ],
+   q(0111) => [
+      q(Phoenician),
+      ],
+   q(0112) => [
+      q(Miao (Pollard)),
+      q(Miao),
+      q(Pollard),
+      ],
+   q(0113) => [
+      q(Inscriptional Parthian),
+      ],
+   q(0114) => [
+      q(Reserved for private use (start)),
+      ],
+   q(0115) => [
+      q(Reserved for private use (end)),
+      ],
+   q(0116) => [
+      q(Rejang (Redjang, Kaganga)),
+      q(Rejang),
+      q(Redjang),
+      q(Kaganga),
+      ],
+   q(0117) => [
+      q(Rongorongo),
+      ],
+   q(0118) => [
+      q(Runic),
+      ],
+   q(0119) => [
+      q(Samaritan),
+      ],
+   q(0120) => [
+      q(Sarati),
+      ],
+   q(0121) => [
+      q(Old South Arabian),
+      ],
+   q(0122) => [
+      q(Saurashtra),
+      ],
+   q(0123) => [
+      q(SignWriting),
+      ],
+   q(0124) => [
+      q(Shavian (Shaw)),
+      q(Shavian),
+      q(Shaw),
+      ],
+   q(0125) => [
+      q(Sharada, Sarada),
+      q(Sharada),
+      q(Sarada),
+      ],
+   q(0126) => [
+      q(Khudawadi, Sindhi),
+      q(Khudawadi),
+      q(Sindhi),
+      ],
+   q(0127) => [
+      q(Sinhala),
+      ],
+   q(0128) => [
+      q(Sora Sompeng),
+      ],
+   q(0129) => [
+      q(Sundanese),
+      ],
+   q(0130) => [
+      q(Syloti Nagri),
+      ],
+   q(0131) => [
+      q(Syriac),
+      ],
+   q(0132) => [
+      q(Syriac (Estrangelo variant)),
+      ],
+   q(0133) => [
+      q(Syriac (Western variant)),
+      ],
+   q(0134) => [
+      q(Syriac (Eastern variant)),
+      ],
+   q(0135) => [
+      q(Tagbanwa),
+      ],
+   q(0136) => [
+      q(Takri, Takri, Tankri),
+      q(Takri),
+      q(Tankri),
+      ],
+   q(0137) => [
+      q(Tai Le),
+      ],
+   q(0138) => [
+      q(New Tai Lue),
+      ],
+   q(0139) => [
+      q(Tamil),
+      ],
+   q(0140) => [
+      q(Tangut),
+      ],
+   q(0141) => [
+      q(Tai Viet),
+      ],
+   q(0142) => [
+      q(Telugu),
+      ],
+   q(0143) => [
+      q(Tengwar),
+      ],
+   q(0144) => [
+      q(Tifinagh (Berber)),
+      q(Tifinagh),
+      q(Berber),
+      ],
+   q(0145) => [
+      q(Tagalog (Baybayin, Alibata)),
+      q(Tagalog),
+      q(Baybayin),
+      q(Alibata),
+      ],
+   q(0146) => [
+      q(Thaana),
+      ],
+   q(0147) => [
+      q(Thai),
+      ],
+   q(0148) => [
+      q(Tibetan),
+      ],
+   q(0149) => [
+      q(Tirhuta),
+      ],
+   q(0150) => [
+      q(Ugaritic),
+      ],
+   q(0151) => [
+      q(Vai),
+      ],
+   q(0152) => [
+      q(Visible Speech),
+      ],
+   q(0153) => [
+      q(Warang Citi (Varang Kshiti)),
+      q(Warang Citi),
+      q(Varang Kshiti),
+      ],
+   q(0154) => [
+      q(Woleai),
+      ],
+   q(0155) => [
+      q(Old Persian),
+      ],
+   q(0156) => [
+      q(Cuneiform, Sumero-Akkadian),
+      q(Sumero-Akkadian cuneiform),
+      ],
+   q(0157) => [
+      q(Yi),
+      ],
+   q(0158) => [
+      q(Code for inherited script),
+      ],
+   q(0159) => [
+      q(Mathematical notation),
+      ],
+   q(0160) => [
+      q(Symbols),
+      ],
+};
+
+$Locale::Codes::Data{'script'}{'alias2id'} = {
+   q('na-'khi ggo-baw) => [
+      q(0097),
+      q(2),
+      ],
+   q(afaka) => [
+      q(0001),
+      q(0),
+      ],
+   q(alibata) => [
+      q(0145),
+      q(3),
+      ],
+   q(anatolian hieroglyphs) => [
+      q(0051),
+      q(1),
+      ],
+   q(anatolian hieroglyphs (luwian hieroglyphs, hittite hieroglyphs)) => [
+      q(0051),
+      q(0),
+      ],
+   q(ancient north arabian) => [
+      q(0095),
+      q(2),
+      ],
+   q(arabic) => [
+      q(0003),
+      q(0),
+      ],
+   q(armenian) => [
+      q(0005),
+      q(0),
+      ],
+   q(avestan) => [
+      q(0006),
+      q(0),
+      ],
+   q(balinese) => [
+      q(0007),
+      q(0),
+      ],
+   q(bamum) => [
+      q(0008),
+      q(0),
+      ],
+   q(bassa vah) => [
+      q(0009),
+      q(0),
+      ],
+   q(batak) => [
+      q(0010),
+      q(0),
+      ],
+   q(baybayin) => [
+      q(0145),
+      q(2),
+      ],
+   q(bengali) => [
+      q(0011),
+      q(0),
+      ],
+   q(berber) => [
+      q(0144),
+      q(2),
+      ],
+   q(blissymbols) => [
+      q(0012),
+      q(0),
+      ],
+   q(book pahlavi) => [
+      q(0110),
+      q(0),
+      ],
+   q(bopomofo) => [
+      q(0013),
+      q(0),
+      ],
+   q(brahmi) => [
+      q(0014),
+      q(0),
+      ],
+   q(braille) => [
+      q(0015),
+      q(0),
+      ],
+   q(buginese) => [
+      q(0016),
+      q(0),
+      ],
+   q(buhid) => [
+      q(0017),
+      q(0),
+      ],
+   q(burmese) => [
+      q(0094),
+      q(2),
+      ],
+   q(carian) => [
+      q(0020),
+      q(0),
+      ],
+   q(caucasian albanian) => [
+      q(0002),
+      q(0),
+      ],
+   q(chakma) => [
+      q(0018),
+      q(0),
+      ],
+   q(cham) => [
+      q(0021),
+      q(0),
+      ],
+   q(cherokee) => [
+      q(0022),
+      q(0),
+      ],
+   q(cirth) => [
+      q(0023),
+      q(0),
+      ],
+   q(code for inherited script) => [
+      q(0158),
+      q(0),
+      ],
+   q(coptic) => [
+      q(0024),
+      q(0),
+      ],
+   q(cuneiform, sumero-akkadian) => [
+      q(0156),
+      q(0),
+      ],
+   q(cypriot) => [
+      q(0025),
+      q(0),
+      ],
+   q(cyrillic) => [
+      q(0026),
+      q(0),
+      ],
+   q(cyrillic (old church slavonic variant)) => [
+      q(0027),
+      q(0),
+      ],
+   q(deseret) => [
+      q(0029),
+      q(1),
+      ],
+   q(deseret (mormon)) => [
+      q(0029),
+      q(0),
+      ],
+   q(devanagari) => [
+      q(0028),
+      q(1),
+      ],
+   q(devanagari (nagari)) => [
+      q(0028),
+      q(0),
+      ],
+   q(duployan shorthand) => [
+      q(0030),
+      q(1),
+      ],
+   q(duployan shorthand, duployan stenography) => [
+      q(0030),
+      q(0),
+      ],
+   q(duployan stenography) => [
+      q(0030),
+      q(2),
+      ],
+   q(egyptian demotic) => [
+      q(0031),
+      q(0),
+      ],
+   q(egyptian hieratic) => [
+      q(0032),
+      q(0),
+      ],
+   q(egyptian hieroglyphs) => [
+      q(0033),
+      q(0),
+      ],
+   q(elbasan) => [
+      q(0034),
+      q(0),
+      ],
+   q(ethiopic) => [
+      q(0035),
+      q(1),
+      ],
+   q(ethiopic (geez)) => [
+      q(0035),
+      q(0),
+      ],
+   q(fraser) => [
+      q(0078),
+      q(2),
+      ],
+   q(ge'ez) => [
+      q(0035),
+      q(2),
+      ],
+   q(georgian (mkhedruli)) => [
+      q(0036),
+      q(0),
+      ],
+   q(glagolitic) => [
+      q(0038),
+      q(0),
+      ],
+   q(gothic) => [
+      q(0039),
+      q(0),
+      ],
+   q(grantha) => [
+      q(0040),
+      q(0),
+      ],
+   q(greek) => [
+      q(0041),
+      q(0),
+      ],
+   q(gujarati) => [
+      q(0042),
+      q(0),
+      ],
+   q(gurmukhi) => [
+      q(0043),
+      q(0),
+      ],
+   q(han) => [
+      q(0045),
+      q(1),
+      ],
+   q(han (hanzi, kanji, hanja)) => [
+      q(0045),
+      q(0),
+      ],
+   q(han (simplified variant)) => [
+      q(0047),
+      q(0),
+      ],
+   q(han (traditional variant)) => [
+      q(0048),
+      q(0),
+      ],
+   q(hangeul) => [
+      q(0044),
+      q(2),
+      ],
+   q(hangul) => [
+      q(0044),
+      q(1),
+      ],
+   q(hangul (hangul, hangeul)) => [
+      q(0044),
+      q(0),
+      ],
+   q(hanja) => [
+      q(0045),
+      q(4),
+      ],
+   q(hanunoo) => [
+      q(0046),
+      q(1),
+      ],
+   q(hanunoo (hanunoo)) => [
+      q(0046),
+      q(0),
+      ],
+   q(hanzi) => [
+      q(0045),
+      q(2),
+      ],
+   q(harappan) => [
+      q(0055),
+      q(2),
+      ],
+   q(hebrew) => [
+      q(0049),
+      q(0),
+      ],
+   q(hiragana) => [
+      q(0050),
+      q(0),
+      ],
+   q(hittite hieroglyphs) => [
+      q(0051),
+      q(3),
+      ],
+   q(hungarian runic) => [
+      q(0054),
+      q(2),
+      ],
+   q(imperial aramaic) => [
+      q(0004),
+      q(0),
+      ],
+   q(indus) => [
+      q(0055),
+      q(1),
+      ],
+   q(indus (harappan)) => [
+      q(0055),
+      q(0),
+      ],
+   q(inscriptional pahlavi) => [
+      q(0108),
+      q(0),
+      ],
+   q(inscriptional parthian) => [
+      q(0113),
+      q(0),
+      ],
+   q(japanese (alias for han + hiragana + katakana)) => [
+      q(0058),
+      q(0),
+      ],
+   q(japanese syllabaries (alias for hiragana + katakana)) => [
+      q(0053),
+      q(0),
+      ],
+   q(javanese) => [
+      q(0057),
+      q(0),
+      ],
+   q(jurchen) => [
+      q(0059),
+      q(0),
+      ],
+   q(kaganga) => [
+      q(0116),
+      q(3),
+      ],
+   q(kaithi) => [
+      q(0068),
+      q(0),
+      ],
+   q(kanji) => [
+      q(0045),
+      q(3),
+      ],
+   q(kannada) => [
+      q(0065),
+      q(0),
+      ],
+   q(katakana) => [
+      q(0061),
+      q(0),
+      ],
+   q(kayah li) => [
+      q(0060),
+      q(0),
+      ],
+   q(kharoshthi) => [
+      q(0062),
+      q(0),
+      ],
+   q(khmer) => [
+      q(0063),
+      q(0),
+      ],
+   q(khojki) => [
+      q(0064),
+      q(0),
+      ],
+   q(khudawadi) => [
+      q(0126),
+      q(1),
+      ],
+   q(khudawadi, sindhi) => [
+      q(0126),
+      q(0),
+      ],
+   q(khutsuri (asomtavruli and nuskhuri)) => [
+      q(0037),
+      q(0),
+      ],
+   q(korean (alias for hangul + han)) => [
+      q(0066),
+      q(0),
+      ],
+   q(kpelle) => [
+      q(0067),
+      q(0),
+      ],
+   q(lanna) => [
+      q(0069),
+      q(2),
+      ],
+   q(lao) => [
+      q(0070),
+      q(0),
+      ],
+   q(latin) => [
+      q(0073),
+      q(0),
+      ],
+   q(latin (fraktur variant)) => [
+      q(0071),
+      q(0),
+      ],
+   q(latin (gaelic variant)) => [
+      q(0072),
+      q(0),
+      ],
+   q(lepcha) => [
+      q(0074),
+      q(1),
+      ],
+   q(lepcha (rong)) => [
+      q(0074),
+      q(0),
+      ],
+   q(limbu) => [
+      q(0075),
+      q(0),
+      ],
+   q(linear a) => [
+      q(0076),
+      q(0),
+      ],
+   q(linear b) => [
+      q(0077),
+      q(0),
+      ],
+   q(lisu) => [
+      q(0078),
+      q(1),
+      ],
+   q(lisu (fraser)) => [
+      q(0078),
+      q(0),
+      ],
+   q(loma) => [
+      q(0079),
+      q(0),
+      ],
+   q(luwian hieroglyphs) => [
+      q(0051),
+      q(2),
+      ],
+   q(lycian) => [
+      q(0080),
+      q(0),
+      ],
+   q(lydian) => [
+      q(0081),
+      q(0),
+      ],
+   q(mahajani) => [
+      q(0082),
+      q(0),
+      ],
+   q(malayalam) => [
+      q(0089),
+      q(0),
+      ],
+   q(mandaean) => [
+      q(0083),
+      q(2),
+      ],
+   q(mandaic) => [
+      q(0083),
+      q(1),
+      ],
+   q(mandaic, mandaean) => [
+      q(0083),
+      q(0),
+      ],
+   q(manichaean) => [
+      q(0084),
+      q(0),
+      ],
+   q(mathematical notation) => [
+      q(0159),
+      q(0),
+      ],
+   q(mayan hieroglyphs) => [
+      q(0085),
+      q(0),
+      ],
+   q(meetei) => [
+      q(0093),
+      q(3),
+      ],
+   q(meitei mayek) => [
+      q(0093),
+      q(1),
+      ],
+   q(meitei mayek (meithei, meetei)) => [
+      q(0093),
+      q(0),
+      ],
+   q(meithei) => [
+      q(0093),
+      q(2),
+      ],
+   q(mende) => [
+      q(0086),
+      q(0),
+      ],
+   q(meroitic cursive) => [
+      q(0087),
+      q(0),
+      ],
+   q(meroitic hieroglyphs) => [
+      q(0088),
+      q(0),
+      ],
+   q(miao) => [
+      q(0112),
+      q(1),
+      ],
+   q(miao (pollard)) => [
+      q(0112),
+      q(0),
+      ],
+   q(mongolian) => [
+      q(0091),
+      q(0),
+      ],
+   q(moon) => [
+      q(0090),
+      q(1),
+      ],
+   q(moon (moon code, moon script, moon type)) => [
+      q(0090),
+      q(0),
+      ],
+   q(moon code) => [
+      q(0090),
+      q(2),
+      ],
+   q(moon script) => [
+      q(0090),
+      q(3),
+      ],
+   q(moon type) => [
+      q(0090),
+      q(4),
+      ],
+   q(mormon) => [
+      q(0029),
+      q(2),
+      ],
+   q(mro) => [
+      q(0092),
+      q(1),
+      ],
+   q(mro, mru) => [
+      q(0092),
+      q(0),
+      ],
+   q(mru) => [
+      q(0092),
+      q(2),
+      ],
+   q(myanmar) => [
+      q(0094),
+      q(1),
+      ],
+   q(myanmar (burmese)) => [
+      q(0094),
+      q(0),
+      ],
+   q(n'ko) => [
+      q(0098),
+      q(0),
+      ],
+   q(nabataean) => [
+      q(0096),
+      q(0),
+      ],
+   q(nagari) => [
+      q(0028),
+      q(2),
+      ],
+   q(nakhi geba) => [
+      q(0097),
+      q(1),
+      ],
+   q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [
+      q(0097),
+      q(0),
+      ],
+   q(naxi geba) => [
+      q(0097),
+      q(3),
+      ],
+   q(new tai lue) => [
+      q(0138),
+      q(0),
+      ],
+   q(nushu) => [
+      q(0099),
+      q(0),
+      ],
+   q(ogham) => [
+      q(0100),
+      q(0),
+      ],
+   q(ol) => [
+      q(0101),
+      q(3),
+      ],
+   q(ol cemet') => [
+      q(0101),
+      q(2),
+      ],
+   q(ol chiki) => [
+      q(0101),
+      q(1),
+      ],
+   q(ol chiki (ol cemet, ol, santali)) => [
+      q(0101),
+      q(0),
+      ],
+   q(old hungarian) => [
+      q(0054),
+      q(1),
+      ],
+   q(old hungarian (hungarian runic)) => [
+      q(0054),
+      q(0),
+      ],
+   q(old italic (etruscan, oscan, etc.)) => [
+      q(0056),
+      q(0),
+      ],
+   q(old north arabian) => [
+      q(0095),
+      q(1),
+      ],
+   q(old north arabian (ancient north arabian)) => [
+      q(0095),
+      q(0),
+      ],
+   q(old permic) => [
+      q(0106),
+      q(0),
+      ],
+   q(old persian) => [
+      q(0155),
+      q(0),
+      ],
+   q(old south arabian) => [
+      q(0121),
+      q(0),
+      ],
+   q(old turkic) => [
+      q(0102),
+      q(1),
+      ],
+   q(old turkic, orkhon runic) => [
+      q(0102),
+      q(0),
+      ],
+   q(oriya) => [
+      q(0103),
+      q(0),
+      ],
+   q(orkhon runic) => [
+      q(0102),
+      q(2),
+      ],
+   q(osmanya) => [
+      q(0104),
+      q(0),
+      ],
+   q(pahawh hmong) => [
+      q(0052),
+      q(0),
+      ],
+   q(palmyrene) => [
+      q(0105),
+      q(0),
+      ],
+   q(phags-pa) => [
+      q(0107),
+      q(0),
+      ],
+   q(phoenician) => [
+      q(0111),
+      q(0),
+      ],
+   q(pollard) => [
+      q(0112),
+      q(2),
+      ],
+   q(psalter pahlavi) => [
+      q(0109),
+      q(0),
+      ],
+   q(redjang) => [
+      q(0116),
+      q(2),
+      ],
+   q(rejang) => [
+      q(0116),
+      q(1),
+      ],
+   q(rejang (redjang, kaganga)) => [
+      q(0116),
+      q(0),
+      ],
+   q(reserved for private use (end)) => [
+      q(0115),
+      q(0),
+      ],
+   q(reserved for private use (start)) => [
+      q(0114),
+      q(0),
+      ],
+   q(rong) => [
+      q(0074),
+      q(2),
+      ],
+   q(rongorongo) => [
+      q(0117),
+      q(0),
+      ],
+   q(runic) => [
+      q(0118),
+      q(0),
+      ],
+   q(samaritan) => [
+      q(0119),
+      q(0),
+      ],
+   q(santali) => [
+      q(0101),
+      q(4),
+      ],
+   q(sarada) => [
+      q(0125),
+      q(2),
+      ],
+   q(sarati) => [
+      q(0120),
+      q(0),
+      ],
+   q(saurashtra) => [
+      q(0122),
+      q(0),
+      ],
+   q(sharada) => [
+      q(0125),
+      q(1),
+      ],
+   q(sharada, sarada) => [
+      q(0125),
+      q(0),
+      ],
+   q(shavian) => [
+      q(0124),
+      q(1),
+      ],
+   q(shavian (shaw)) => [
+      q(0124),
+      q(0),
+      ],
+   q(shaw) => [
+      q(0124),
+      q(2),
+      ],
+   q(signwriting) => [
+      q(0123),
+      q(0),
+      ],
+   q(sindhi) => [
+      q(0126),
+      q(2),
+      ],
+   q(sinhala) => [
+      q(0127),
+      q(0),
+      ],
+   q(sora sompeng) => [
+      q(0128),
+      q(0),
+      ],
+   q(sumero-akkadian cuneiform) => [
+      q(0156),
+      q(1),
+      ],
+   q(sundanese) => [
+      q(0129),
+      q(0),
+      ],
+   q(syloti nagri) => [
+      q(0130),
+      q(0),
+      ],
+   q(symbols) => [
+      q(0160),
+      q(0),
+      ],
+   q(syriac) => [
+      q(0131),
+      q(0),
+      ],
+   q(syriac (eastern variant)) => [
+      q(0134),
+      q(0),
+      ],
+   q(syriac (estrangelo variant)) => [
+      q(0132),
+      q(0),
+      ],
+   q(syriac (western variant)) => [
+      q(0133),
+      q(0),
+      ],
+   q(tagalog) => [
+      q(0145),
+      q(1),
+      ],
+   q(tagalog (baybayin, alibata)) => [
+      q(0145),
+      q(0),
+      ],
+   q(tagbanwa) => [
+      q(0135),
+      q(0),
+      ],
+   q(tai le) => [
+      q(0137),
+      q(0),
+      ],
+   q(tai tham) => [
+      q(0069),
+      q(1),
+      ],
+   q(tai tham (lanna)) => [
+      q(0069),
+      q(0),
+      ],
+   q(tai viet) => [
+      q(0141),
+      q(0),
+      ],
+   q(takri) => [
+      q(0136),
+      q(1),
+      ],
+   q(takri, takri, tankri) => [
+      q(0136),
+      q(0),
+      ],
+   q(tamil) => [
+      q(0139),
+      q(0),
+      ],
+   q(tangut) => [
+      q(0140),
+      q(0),
+      ],
+   q(tankri) => [
+      q(0136),
+      q(2),
+      ],
+   q(telugu) => [
+      q(0142),
+      q(0),
+      ],
+   q(tengwar) => [
+      q(0143),
+      q(0),
+      ],
+   q(thaana) => [
+      q(0146),
+      q(0),
+      ],
+   q(thai) => [
+      q(0147),
+      q(0),
+      ],
+   q(tibetan) => [
+      q(0148),
+      q(0),
+      ],
+   q(tifinagh) => [
+      q(0144),
+      q(1),
+      ],
+   q(tifinagh (berber)) => [
+      q(0144),
+      q(0),
+      ],
+   q(tirhuta) => [
+      q(0149),
+      q(0),
+      ],
+   q(ugaritic) => [
+      q(0150),
+      q(0),
+      ],
+   q(unified canadian aboriginal syllabics) => [
+      q(0019),
+      q(0),
+      ],
+   q(vai) => [
+      q(0151),
+      q(0),
+      ],
+   q(varang kshiti) => [
+      q(0153),
+      q(2),
+      ],
+   q(visible speech) => [
+      q(0152),
+      q(0),
+      ],
+   q(warang citi) => [
+      q(0153),
+      q(1),
+      ],
+   q(warang citi (varang kshiti)) => [
+      q(0153),
+      q(0),
+      ],
+   q(woleai) => [
+      q(0154),
+      q(0),
+      ],
+   q(yi) => [
+      q(0157),
+      q(0),
+      ],
+};
+
+$Locale::Codes::Data{'script'}{'code2id'} = {
+   q(alpha) => {
+      q(Afak) => [
+         q(0001),
+         q(0),
+         ],
+      q(Aghb) => [
+         q(0002),
+         q(0),
+         ],
+      q(Arab) => [
+         q(0003),
+         q(0),
+         ],
+      q(Armi) => [
+         q(0004),
+         q(0),
+         ],
+      q(Armn) => [
+         q(0005),
+         q(0),
+         ],
+      q(Avst) => [
+         q(0006),
+         q(0),
+         ],
+      q(Bali) => [
+         q(0007),
+         q(0),
+         ],
+      q(Bamu) => [
+         q(0008),
+         q(0),
+         ],
+      q(Bass) => [
+         q(0009),
+         q(0),
+         ],
+      q(Batk) => [
+         q(0010),
+         q(0),
+         ],
+      q(Beng) => [
+         q(0011),
+         q(0),
+         ],
+      q(Blis) => [
+         q(0012),
+         q(0),
+         ],
+      q(Bopo) => [
+         q(0013),
+         q(0),
+         ],
+      q(Brah) => [
+         q(0014),
+         q(0),
+         ],
+      q(Brai) => [
+         q(0015),
+         q(0),
+         ],
+      q(Bugi) => [
+         q(0016),
+         q(0),
+         ],
+      q(Buhd) => [
+         q(0017),
+         q(0),
+         ],
+      q(Cakm) => [
+         q(0018),
+         q(0),
+         ],
+      q(Cans) => [
+         q(0019),
+         q(0),
+         ],
+      q(Cari) => [
+         q(0020),
+         q(0),
+         ],
+      q(Cham) => [
+         q(0021),
+         q(0),
+         ],
+      q(Cher) => [
+         q(0022),
+         q(0),
+         ],
+      q(Cirt) => [
+         q(0023),
+         q(0),
+         ],
+      q(Copt) => [
+         q(0024),
+         q(0),
+         ],
+      q(Cprt) => [
+         q(0025),
+         q(0),
+         ],
+      q(Cyrl) => [
+         q(0026),
+         q(0),
+         ],
+      q(Cyrs) => [
+         q(0027),
+         q(0),
+         ],
+      q(Deva) => [
+         q(0028),
+         q(1),
+         ],
+      q(Dsrt) => [
+         q(0029),
+         q(1),
+         ],
+      q(Dupl) => [
+         q(0030),
+         q(1),
+         ],
+      q(Egyd) => [
+         q(0031),
+         q(0),
+         ],
+      q(Egyh) => [
+         q(0032),
+         q(0),
+         ],
+      q(Egyp) => [
+         q(0033),
+         q(0),
+         ],
+      q(Elba) => [
+         q(0034),
+         q(0),
+         ],
+      q(Ethi) => [
+         q(0035),
+         q(1),
+         ],
+      q(Geok) => [
+         q(0037),
+         q(0),
+         ],
+      q(Geor) => [
+         q(0036),
+         q(0),
+         ],
+      q(Glag) => [
+         q(0038),
+         q(0),
+         ],
+      q(Goth) => [
+         q(0039),
+         q(0),
+         ],
+      q(Gran) => [
+         q(0040),
+         q(0),
+         ],
+      q(Grek) => [
+         q(0041),
+         q(0),
+         ],
+      q(Gujr) => [
+         q(0042),
+         q(0),
+         ],
+      q(Guru) => [
+         q(0043),
+         q(0),
+         ],
+      q(Hang) => [
+         q(0044),
+         q(1),
+         ],
+      q(Hani) => [
+         q(0045),
+         q(1),
+         ],
+      q(Hano) => [
+         q(0046),
+         q(1),
+         ],
+      q(Hans) => [
+         q(0047),
+         q(0),
+         ],
+      q(Hant) => [
+         q(0048),
+         q(0),
+         ],
+      q(Hebr) => [
+         q(0049),
+         q(0),
+         ],
+      q(Hira) => [
+         q(0050),
+         q(0),
+         ],
+      q(Hluw) => [
+         q(0051),
+         q(1),
+         ],
+      q(Hmng) => [
+         q(0052),
+         q(0),
+         ],
+      q(Hrkt) => [
+         q(0053),
+         q(0),
+         ],
+      q(Hung) => [
+         q(0054),
+         q(1),
+         ],
+      q(Inds) => [
+         q(0055),
+         q(1),
+         ],
+      q(Ital) => [
+         q(0056),
+         q(0),
+         ],
+      q(Java) => [
+         q(0057),
+         q(0),
+         ],
+      q(Jpan) => [
+         q(0058),
+         q(0),
+         ],
+      q(Jurc) => [
+         q(0059),
+         q(0),
+         ],
+      q(Kali) => [
+         q(0060),
+         q(0),
+         ],
+      q(Kana) => [
+         q(0061),
+         q(0),
+         ],
+      q(Khar) => [
+         q(0062),
+         q(0),
+         ],
+      q(Khmr) => [
+         q(0063),
+         q(0),
+         ],
+      q(Khoj) => [
+         q(0064),
+         q(0),
+         ],
+      q(Knda) => [
+         q(0065),
+         q(0),
+         ],
+      q(Kore) => [
+         q(0066),
+         q(0),
+         ],
+      q(Kpel) => [
+         q(0067),
+         q(0),
+         ],
+      q(Kthi) => [
+         q(0068),
+         q(0),
+         ],
+      q(Lana) => [
+         q(0069),
+         q(1),
+         ],
+      q(Laoo) => [
+         q(0070),
+         q(0),
+         ],
+      q(Latf) => [
+         q(0071),
+         q(0),
+         ],
+      q(Latg) => [
+         q(0072),
+         q(0),
+         ],
+      q(Latn) => [
+         q(0073),
+         q(0),
+         ],
+      q(Lepc) => [
+         q(0074),
+         q(1),
+         ],
+      q(Limb) => [
+         q(0075),
+         q(0),
+         ],
+      q(Lina) => [
+         q(0076),
+         q(0),
+         ],
+      q(Linb) => [
+         q(0077),
+         q(0),
+         ],
+      q(Lisu) => [
+         q(0078),
+         q(1),
+         ],
+      q(Loma) => [
+         q(0079),
+         q(0),
+         ],
+      q(Lyci) => [
+         q(0080),
+         q(0),
+         ],
+      q(Lydi) => [
+         q(0081),
+         q(0),
+         ],
+      q(Mahj) => [
+         q(0082),
+         q(0),
+         ],
+      q(Mand) => [
+         q(0083),
+         q(1),
+         ],
+      q(Mani) => [
+         q(0084),
+         q(0),
+         ],
+      q(Maya) => [
+         q(0085),
+         q(0),
+         ],
+      q(Mend) => [
+         q(0086),
+         q(0),
+         ],
+      q(Merc) => [
+         q(0087),
+         q(0),
+         ],
+      q(Mero) => [
+         q(0088),
+         q(0),
+         ],
+      q(Mlym) => [
+         q(0089),
+         q(0),
+         ],
+      q(Mong) => [
+         q(0091),
+         q(0),
+         ],
+      q(Moon) => [
+         q(0090),
+         q(1),
+         ],
+      q(Mroo) => [
+         q(0092),
+         q(1),
+         ],
+      q(Mtei) => [
+         q(0093),
+         q(1),
+         ],
+      q(Mymr) => [
+         q(0094),
+         q(1),
+         ],
+      q(Narb) => [
+         q(0095),
+         q(1),
+         ],
+      q(Nbat) => [
+         q(0096),
+         q(0),
+         ],
+      q(Nkgb) => [
+         q(0097),
+         q(1),
+         ],
+      q(Nkoo) => [
+         q(0098),
+         q(0),
+         ],
+      q(Nshu) => [
+         q(0099),
+         q(0),
+         ],
+      q(Ogam) => [
+         q(0100),
+         q(0),
+         ],
+      q(Olck) => [
+         q(0101),
+         q(1),
+         ],
+      q(Orkh) => [
+         q(0102),
+         q(1),
+         ],
+      q(Orya) => [
+         q(0103),
+         q(0),
+         ],
+      q(Osma) => [
+         q(0104),
+         q(0),
+         ],
+      q(Palm) => [
+         q(0105),
+         q(0),
+         ],
+      q(Perm) => [
+         q(0106),
+         q(0),
+         ],
+      q(Phag) => [
+         q(0107),
+         q(0),
+         ],
+      q(Phli) => [
+         q(0108),
+         q(0),
+         ],
+      q(Phlp) => [
+         q(0109),
+         q(0),
+         ],
+      q(Phlv) => [
+         q(0110),
+         q(0),
+         ],
+      q(Phnx) => [
+         q(0111),
+         q(0),
+         ],
+      q(Plrd) => [
+         q(0112),
+         q(1),
+         ],
+      q(Prti) => [
+         q(0113),
+         q(0),
+         ],
+      q(Qaaa) => [
+         q(0114),
+         q(0),
+         ],
+      q(Qabx) => [
+         q(0115),
+         q(0),
+         ],
+      q(Rjng) => [
+         q(0116),
+         q(1),
+         ],
+      q(Roro) => [
+         q(0117),
+         q(0),
+         ],
+      q(Runr) => [
+         q(0118),
+         q(0),
+         ],
+      q(Samr) => [
+         q(0119),
+         q(0),
+         ],
+      q(Sara) => [
+         q(0120),
+         q(0),
+         ],
+      q(Sarb) => [
+         q(0121),
+         q(0),
+         ],
+      q(Saur) => [
+         q(0122),
+         q(0),
+         ],
+      q(Sgnw) => [
+         q(0123),
+         q(0),
+         ],
+      q(Shaw) => [
+         q(0124),
+         q(1),
+         ],
+      q(Shrd) => [
+         q(0125),
+         q(1),
+         ],
+      q(Sind) => [
+         q(0126),
+         q(1),
+         ],
+      q(Sinh) => [
+         q(0127),
+         q(0),
+         ],
+      q(Sora) => [
+         q(0128),
+         q(0),
+         ],
+      q(Sund) => [
+         q(0129),
+         q(0),
+         ],
+      q(Sylo) => [
+         q(0130),
+         q(0),
+         ],
+      q(Syrc) => [
+         q(0131),
+         q(0),
+         ],
+      q(Syre) => [
+         q(0132),
+         q(0),
+         ],
+      q(Syrj) => [
+         q(0133),
+         q(0),
+         ],
+      q(Syrn) => [
+         q(0134),
+         q(0),
+         ],
+      q(Tagb) => [
+         q(0135),
+         q(0),
+         ],
+      q(Takr) => [
+         q(0136),
+         q(1),
+         ],
+      q(Tale) => [
+         q(0137),
+         q(0),
+         ],
+      q(Talu) => [
+         q(0138),
+         q(0),
+         ],
+      q(Taml) => [
+         q(0139),
+         q(0),
+         ],
+      q(Tang) => [
+         q(0140),
+         q(0),
+         ],
+      q(Tavt) => [
+         q(0141),
+         q(0),
+         ],
+      q(Telu) => [
+         q(0142),
+         q(0),
+         ],
+      q(Teng) => [
+         q(0143),
+         q(0),
+         ],
+      q(Tfng) => [
+         q(0144),
+         q(1),
+         ],
+      q(Tglg) => [
+         q(0145),
+         q(1),
+         ],
+      q(Thaa) => [
+         q(0146),
+         q(0),
+         ],
+      q(Thai) => [
+         q(0147),
+         q(0),
+         ],
+      q(Tibt) => [
+         q(0148),
+         q(0),
+         ],
+      q(Tirh) => [
+         q(0149),
+         q(0),
+         ],
+      q(Ugar) => [
+         q(0150),
+         q(0),
+         ],
+      q(Vaii) => [
+         q(0151),
+         q(0),
+         ],
+      q(Visp) => [
+         q(0152),
+         q(0),
+         ],
+      q(Wara) => [
+         q(0153),
+         q(1),
+         ],
+      q(Wole) => [
+         q(0154),
+         q(0),
+         ],
+      q(Xpeo) => [
+         q(0155),
+         q(0),
+         ],
+      q(Xsux) => [
+         q(0156),
+         q(1),
+         ],
+      q(Yiii) => [
+         q(0157),
+         q(0),
+         ],
+      q(Zinh) => [
+         q(0158),
+         q(0),
+         ],
+      q(Zmth) => [
+         q(0159),
+         q(0),
+         ],
+      q(Zsym) => [
+         q(0160),
+         q(0),
+         ],
+      },
+   q(num) => {
+      q(020) => [
+         q(0156),
+         q(0),
+         ],
+      q(030) => [
+         q(0155),
+         q(0),
+         ],
+      q(040) => [
+         q(0150),
+         q(0),
+         ],
+      q(050) => [
+         q(0033),
+         q(0),
+         ],
+      q(060) => [
+         q(0032),
+         q(0),
+         ],
+      q(070) => [
+         q(0031),
+         q(0),
+         ],
+      q(080) => [
+         q(0051),
+         q(0),
+         ],
+      q(090) => [
+         q(0085),
+         q(0),
+         ],
+      q(095) => [
+         q(0123),
+         q(0),
+         ],
+      q(100) => [
+         q(0088),
+         q(0),
+         ],
+      q(101) => [
+         q(0087),
+         q(0),
+         ],
+      q(105) => [
+         q(0121),
+         q(0),
+         ],
+      q(106) => [
+         q(0095),
+         q(0),
+         ],
+      q(115) => [
+         q(0111),
+         q(0),
+         ],
+      q(116) => [
+         q(0081),
+         q(0),
+         ],
+      q(120) => [
+         q(0144),
+         q(0),
+         ],
+      q(123) => [
+         q(0119),
+         q(0),
+         ],
+      q(124) => [
+         q(0004),
+         q(0),
+         ],
+      q(125) => [
+         q(0049),
+         q(0),
+         ],
+      q(126) => [
+         q(0105),
+         q(0),
+         ],
+      q(130) => [
+         q(0113),
+         q(0),
+         ],
+      q(131) => [
+         q(0108),
+         q(0),
+         ],
+      q(132) => [
+         q(0109),
+         q(0),
+         ],
+      q(133) => [
+         q(0110),
+         q(0),
+         ],
+      q(134) => [
+         q(0006),
+         q(0),
+         ],
+      q(135) => [
+         q(0131),
+         q(0),
+         ],
+      q(136) => [
+         q(0134),
+         q(0),
+         ],
+      q(137) => [
+         q(0133),
+         q(0),
+         ],
+      q(138) => [
+         q(0132),
+         q(0),
+         ],
+      q(139) => [
+         q(0084),
+         q(0),
+         ],
+      q(140) => [
+         q(0083),
+         q(0),
+         ],
+      q(145) => [
+         q(0091),
+         q(0),
+         ],
+      q(159) => [
+         q(0096),
+         q(0),
+         ],
+      q(160) => [
+         q(0003),
+         q(0),
+         ],
+      q(165) => [
+         q(0098),
+         q(0),
+         ],
+      q(170) => [
+         q(0146),
+         q(0),
+         ],
+      q(175) => [
+         q(0102),
+         q(0),
+         ],
+      q(176) => [
+         q(0054),
+         q(0),
+         ],
+      q(199) => [
+         q(0092),
+         q(0),
+         ],
+      q(200) => [
+         q(0041),
+         q(0),
+         ],
+      q(201) => [
+         q(0020),
+         q(0),
+         ],
+      q(202) => [
+         q(0080),
+         q(0),
+         ],
+      q(204) => [
+         q(0024),
+         q(0),
+         ],
+      q(206) => [
+         q(0039),
+         q(0),
+         ],
+      q(210) => [
+         q(0056),
+         q(0),
+         ],
+      q(211) => [
+         q(0118),
+         q(0),
+         ],
+      q(212) => [
+         q(0100),
+         q(0),
+         ],
+      q(215) => [
+         q(0073),
+         q(0),
+         ],
+      q(216) => [
+         q(0072),
+         q(0),
+         ],
+      q(217) => [
+         q(0071),
+         q(0),
+         ],
+      q(218) => [
+         q(0090),
+         q(0),
+         ],
+      q(220) => [
+         q(0026),
+         q(0),
+         ],
+      q(221) => [
+         q(0027),
+         q(0),
+         ],
+      q(225) => [
+         q(0038),
+         q(0),
+         ],
+      q(226) => [
+         q(0034),
+         q(0),
+         ],
+      q(227) => [
+         q(0106),
+         q(0),
+         ],
+      q(230) => [
+         q(0005),
+         q(0),
+         ],
+      q(239) => [
+         q(0002),
+         q(0),
+         ],
+      q(240) => [
+         q(0036),
+         q(0),
+         ],
+      q(241) => [
+         q(0037),
+         q(0),
+         ],
+      q(250) => [
+         q(0029),
+         q(0),
+         ],
+      q(259) => [
+         q(0009),
+         q(0),
+         ],
+      q(260) => [
+         q(0104),
+         q(0),
+         ],
+      q(261) => [
+         q(0101),
+         q(0),
+         ],
+      q(262) => [
+         q(0153),
+         q(0),
+         ],
+      q(280) => [
+         q(0152),
+         q(0),
+         ],
+      q(281) => [
+         q(0124),
+         q(0),
+         ],
+      q(282) => [
+         q(0112),
+         q(0),
+         ],
+      q(285) => [
+         q(0013),
+         q(0),
+         ],
+      q(286) => [
+         q(0044),
+         q(0),
+         ],
+      q(287) => [
+         q(0066),
+         q(0),
+         ],
+      q(290) => [
+         q(0143),
+         q(0),
+         ],
+      q(291) => [
+         q(0023),
+         q(0),
+         ],
+      q(292) => [
+         q(0120),
+         q(0),
+         ],
+      q(300) => [
+         q(0014),
+         q(0),
+         ],
+      q(305) => [
+         q(0062),
+         q(0),
+         ],
+      q(310) => [
+         q(0043),
+         q(0),
+         ],
+      q(314) => [
+         q(0082),
+         q(0),
+         ],
+      q(315) => [
+         q(0028),
+         q(0),
+         ],
+      q(316) => [
+         q(0130),
+         q(0),
+         ],
+      q(317) => [
+         q(0068),
+         q(0),
+         ],
+      q(318) => [
+         q(0126),
+         q(0),
+         ],
+      q(319) => [
+         q(0125),
+         q(0),
+         ],
+      q(320) => [
+         q(0042),
+         q(0),
+         ],
+      q(321) => [
+         q(0136),
+         q(0),
+         ],
+      q(322) => [
+         q(0064),
+         q(0),
+         ],
+      q(325) => [
+         q(0011),
+         q(0),
+         ],
+      q(326) => [
+         q(0149),
+         q(0),
+         ],
+      q(327) => [
+         q(0103),
+         q(0),
+         ],
+      q(330) => [
+         q(0148),
+         q(0),
+         ],
+      q(331) => [
+         q(0107),
+         q(0),
+         ],
+      q(335) => [
+         q(0074),
+         q(0),
+         ],
+      q(336) => [
+         q(0075),
+         q(0),
+         ],
+      q(337) => [
+         q(0093),
+         q(0),
+         ],
+      q(340) => [
+         q(0142),
+         q(0),
+         ],
+      q(343) => [
+         q(0040),
+         q(0),
+         ],
+      q(344) => [
+         q(0122),
+         q(0),
+         ],
+      q(345) => [
+         q(0065),
+         q(0),
+         ],
+      q(346) => [
+         q(0139),
+         q(0),
+         ],
+      q(347) => [
+         q(0089),
+         q(0),
+         ],
+      q(348) => [
+         q(0127),
+         q(0),
+         ],
+      q(349) => [
+         q(0018),
+         q(0),
+         ],
+      q(350) => [
+         q(0094),
+         q(0),
+         ],
+      q(351) => [
+         q(0069),
+         q(0),
+         ],
+      q(352) => [
+         q(0147),
+         q(0),
+         ],
+      q(353) => [
+         q(0137),
+         q(0),
+         ],
+      q(354) => [
+         q(0138),
+         q(0),
+         ],
+      q(355) => [
+         q(0063),
+         q(0),
+         ],
+      q(356) => [
+         q(0070),
+         q(0),
+         ],
+      q(357) => [
+         q(0060),
+         q(0),
+         ],
+      q(358) => [
+         q(0021),
+         q(0),
+         ],
+      q(359) => [
+         q(0141),
+         q(0),
+         ],
+      q(360) => [
+         q(0007),
+         q(0),
+         ],
+      q(361) => [
+         q(0057),
+         q(0),
+         ],
+      q(362) => [
+         q(0129),
+         q(0),
+         ],
+      q(363) => [
+         q(0116),
+         q(0),
+         ],
+      q(365) => [
+         q(0010),
+         q(0),
+         ],
+      q(367) => [
+         q(0016),
+         q(0),
+         ],
+      q(370) => [
+         q(0145),
+         q(0),
+         ],
+      q(371) => [
+         q(0046),
+         q(0),
+         ],
+      q(372) => [
+         q(0017),
+         q(0),
+         ],
+      q(373) => [
+         q(0135),
+         q(0),
+         ],
+      q(398) => [
+         q(0128),
+         q(0),
+         ],
+      q(399) => [
+         q(0078),
+         q(0),
+         ],
+      q(400) => [
+         q(0076),
+         q(0),
+         ],
+      q(401) => [
+         q(0077),
+         q(0),
+         ],
+      q(403) => [
+         q(0025),
+         q(0),
+         ],
+      q(410) => [
+         q(0050),
+         q(0),
+         ],
+      q(411) => [
+         q(0061),
+         q(0),
+         ],
+      q(412) => [
+         q(0053),
+         q(0),
+         ],
+      q(413) => [
+         q(0058),
+         q(0),
+         ],
+      q(420) => [
+         q(0097),
+         q(0),
+         ],
+      q(430) => [
+         q(0035),
+         q(0),
+         ],
+      q(435) => [
+         q(0008),
+         q(0),
+         ],
+      q(436) => [
+         q(0067),
+         q(0),
+         ],
+      q(437) => [
+         q(0079),
+         q(0),
+         ],
+      q(438) => [
+         q(0086),
+         q(0),
+         ],
+      q(439) => [
+         q(0001),
+         q(0),
+         ],
+      q(440) => [
+         q(0019),
+         q(0),
+         ],
+      q(445) => [
+         q(0022),
+         q(0),
+         ],
+      q(450) => [
+         q(0052),
+         q(0),
+         ],
+      q(460) => [
+         q(0157),
+         q(0),
+         ],
+      q(470) => [
+         q(0151),
+         q(0),
+         ],
+      q(480) => [
+         q(0154),
+         q(0),
+         ],
+      q(499) => [
+         q(0099),
+         q(0),
+         ],
+      q(500) => [
+         q(0045),
+         q(0),
+         ],
+      q(501) => [
+         q(0047),
+         q(0),
+         ],
+      q(502) => [
+         q(0048),
+         q(0),
+         ],
+      q(510) => [
+         q(0059),
+         q(0),
+         ],
+      q(520) => [
+         q(0140),
+         q(0),
+         ],
+      q(550) => [
+         q(0012),
+         q(0),
+         ],
+      q(570) => [
+         q(0015),
+         q(0),
+         ],
+      q(610) => [
+         q(0055),
+         q(0),
+         ],
+      q(620) => [
+         q(0117),
+         q(0),
+         ],
+      q(755) => [
+         q(0030),
+         q(0),
+         ],
+      q(900) => [
+         q(0114),
+         q(0),
+         ],
+      q(949) => [
+         q(0115),
+         q(0),
+         ],
+      q(994) => [
+         q(0158),
+         q(0),
+         ],
+      q(995) => [
+         q(0159),
+         q(0),
+         ],
+      q(996) => [
+         q(0160),
+         q(0),
+         ],
+      },
+};
+
+$Locale::Codes::Data{'script'}{'id2code'} = {
+   q(alpha) => {
+      q(0001) => q(Afak),
+      q(0002) => q(Aghb),
+      q(0003) => q(Arab),
+      q(0004) => q(Armi),
+      q(0005) => q(Armn),
+      q(0006) => q(Avst),
+      q(0007) => q(Bali),
+      q(0008) => q(Bamu),
+      q(0009) => q(Bass),
+      q(0010) => q(Batk),
+      q(0011) => q(Beng),
+      q(0012) => q(Blis),
+      q(0013) => q(Bopo),
+      q(0014) => q(Brah),
+      q(0015) => q(Brai),
+      q(0016) => q(Bugi),
+      q(0017) => q(Buhd),
+      q(0018) => q(Cakm),
+      q(0019) => q(Cans),
+      q(0020) => q(Cari),
+      q(0021) => q(Cham),
+      q(0022) => q(Cher),
+      q(0023) => q(Cirt),
+      q(0024) => q(Copt),
+      q(0025) => q(Cprt),
+      q(0026) => q(Cyrl),
+      q(0027) => q(Cyrs),
+      q(0028) => q(Deva),
+      q(0029) => q(Dsrt),
+      q(0030) => q(Dupl),
+      q(0031) => q(Egyd),
+      q(0032) => q(Egyh),
+      q(0033) => q(Egyp),
+      q(0034) => q(Elba),
+      q(0035) => q(Ethi),
+      q(0036) => q(Geor),
+      q(0037) => q(Geok),
+      q(0038) => q(Glag),
+      q(0039) => q(Goth),
+      q(0040) => q(Gran),
+      q(0041) => q(Grek),
+      q(0042) => q(Gujr),
+      q(0043) => q(Guru),
+      q(0044) => q(Hang),
+      q(0045) => q(Hani),
+      q(0046) => q(Hano),
+      q(0047) => q(Hans),
+      q(0048) => q(Hant),
+      q(0049) => q(Hebr),
+      q(0050) => q(Hira),
+      q(0051) => q(Hluw),
+      q(0052) => q(Hmng),
+      q(0053) => q(Hrkt),
+      q(0054) => q(Hung),
+      q(0055) => q(Inds),
+      q(0056) => q(Ital),
+      q(0057) => q(Java),
+      q(0058) => q(Jpan),
+      q(0059) => q(Jurc),
+      q(0060) => q(Kali),
+      q(0061) => q(Kana),
+      q(0062) => q(Khar),
+      q(0063) => q(Khmr),
+      q(0064) => q(Khoj),
+      q(0065) => q(Knda),
+      q(0066) => q(Kore),
+      q(0067) => q(Kpel),
+      q(0068) => q(Kthi),
+      q(0069) => q(Lana),
+      q(0070) => q(Laoo),
+      q(0071) => q(Latf),
+      q(0072) => q(Latg),
+      q(0073) => q(Latn),
+      q(0074) => q(Lepc),
+      q(0075) => q(Limb),
+      q(0076) => q(Lina),
+      q(0077) => q(Linb),
+      q(0078) => q(Lisu),
+      q(0079) => q(Loma),
+      q(0080) => q(Lyci),
+      q(0081) => q(Lydi),
+      q(0082) => q(Mahj),
+      q(0083) => q(Mand),
+      q(0084) => q(Mani),
+      q(0085) => q(Maya),
+      q(0086) => q(Mend),
+      q(0087) => q(Merc),
+      q(0088) => q(Mero),
+      q(0089) => q(Mlym),
+      q(0090) => q(Moon),
+      q(0091) => q(Mong),
+      q(0092) => q(Mroo),
+      q(0093) => q(Mtei),
+      q(0094) => q(Mymr),
+      q(0095) => q(Narb),
+      q(0096) => q(Nbat),
+      q(0097) => q(Nkgb),
+      q(0098) => q(Nkoo),
+      q(0099) => q(Nshu),
+      q(0100) => q(Ogam),
+      q(0101) => q(Olck),
+      q(0102) => q(Orkh),
+      q(0103) => q(Orya),
+      q(0104) => q(Osma),
+      q(0105) => q(Palm),
+      q(0106) => q(Perm),
+      q(0107) => q(Phag),
+      q(0108) => q(Phli),
+      q(0109) => q(Phlp),
+      q(0110) => q(Phlv),
+      q(0111) => q(Phnx),
+      q(0112) => q(Plrd),
+      q(0113) => q(Prti),
+      q(0114) => q(Qaaa),
+      q(0115) => q(Qabx),
+      q(0116) => q(Rjng),
+      q(0117) => q(Roro),
+      q(0118) => q(Runr),
+      q(0119) => q(Samr),
+      q(0120) => q(Sara),
+      q(0121) => q(Sarb),
+      q(0122) => q(Saur),
+      q(0123) => q(Sgnw),
+      q(0124) => q(Shaw),
+      q(0125) => q(Shrd),
+      q(0126) => q(Sind),
+      q(0127) => q(Sinh),
+      q(0128) => q(Sora),
+      q(0129) => q(Sund),
+      q(0130) => q(Sylo),
+      q(0131) => q(Syrc),
+      q(0132) => q(Syre),
+      q(0133) => q(Syrj),
+      q(0134) => q(Syrn),
+      q(0135) => q(Tagb),
+      q(0136) => q(Takr),
+      q(0137) => q(Tale),
+      q(0138) => q(Talu),
+      q(0139) => q(Taml),
+      q(0140) => q(Tang),
+      q(0141) => q(Tavt),
+      q(0142) => q(Telu),
+      q(0143) => q(Teng),
+      q(0144) => q(Tfng),
+      q(0145) => q(Tglg),
+      q(0146) => q(Thaa),
+      q(0147) => q(Thai),
+      q(0148) => q(Tibt),
+      q(0149) => q(Tirh),
+      q(0150) => q(Ugar),
+      q(0151) => q(Vaii),
+      q(0152) => q(Visp),
+      q(0153) => q(Wara),
+      q(0154) => q(Wole),
+      q(0155) => q(Xpeo),
+      q(0156) => q(Xsux),
+      q(0157) => q(Yiii),
+      q(0158) => q(Zinh),
+      q(0159) => q(Zmth),
+      q(0160) => q(Zsym),
+      },
+   q(num) => {
+      q(0001) => q(439),
+      q(0002) => q(239),
+      q(0003) => q(160),
+      q(0004) => q(124),
+      q(0005) => q(230),
+      q(0006) => q(134),
+      q(0007) => q(360),
+      q(0008) => q(435),
+      q(0009) => q(259),
+      q(0010) => q(365),
+      q(0011) => q(325),
+      q(0012) => q(550),
+      q(0013) => q(285),
+      q(0014) => q(300),
+      q(0015) => q(570),
+      q(0016) => q(367),
+      q(0017) => q(372),
+      q(0018) => q(349),
+      q(0019) => q(440),
+      q(0020) => q(201),
+      q(0021) => q(358),
+      q(0022) => q(445),
+      q(0023) => q(291),
+      q(0024) => q(204),
+      q(0025) => q(403),
+      q(0026) => q(220),
+      q(0027) => q(221),
+      q(0028) => q(315),
+      q(0029) => q(250),
+      q(0030) => q(755),
+      q(0031) => q(070),
+      q(0032) => q(060),
+      q(0033) => q(050),
+      q(0034) => q(226),
+      q(0035) => q(430),
+      q(0036) => q(240),
+      q(0037) => q(241),
+      q(0038) => q(225),
+      q(0039) => q(206),
+      q(0040) => q(343),
+      q(0041) => q(200),
+      q(0042) => q(320),
+      q(0043) => q(310),
+      q(0044) => q(286),
+      q(0045) => q(500),
+      q(0046) => q(371),
+      q(0047) => q(501),
+      q(0048) => q(502),
+      q(0049) => q(125),
+      q(0050) => q(410),
+      q(0051) => q(080),
+      q(0052) => q(450),
+      q(0053) => q(412),
+      q(0054) => q(176),
+      q(0055) => q(610),
+      q(0056) => q(210),
+      q(0057) => q(361),
+      q(0058) => q(413),
+      q(0059) => q(510),
+      q(0060) => q(357),
+      q(0061) => q(411),
+      q(0062) => q(305),
+      q(0063) => q(355),
+      q(0064) => q(322),
+      q(0065) => q(345),
+      q(0066) => q(287),
+      q(0067) => q(436),
+      q(0068) => q(317),
+      q(0069) => q(351),
+      q(0070) => q(356),
+      q(0071) => q(217),
+      q(0072) => q(216),
+      q(0073) => q(215),
+      q(0074) => q(335),
+      q(0075) => q(336),
+      q(0076) => q(400),
+      q(0077) => q(401),
+      q(0078) => q(399),
+      q(0079) => q(437),
+      q(0080) => q(202),
+      q(0081) => q(116),
+      q(0082) => q(314),
+      q(0083) => q(140),
+      q(0084) => q(139),
+      q(0085) => q(090),
+      q(0086) => q(438),
+      q(0087) => q(101),
+      q(0088) => q(100),
+      q(0089) => q(347),
+      q(0090) => q(218),
+      q(0091) => q(145),
+      q(0092) => q(199),
+      q(0093) => q(337),
+      q(0094) => q(350),
+      q(0095) => q(106),
+      q(0096) => q(159),
+      q(0097) => q(420),
+      q(0098) => q(165),
+      q(0099) => q(499),
+      q(0100) => q(212),
+      q(0101) => q(261),
+      q(0102) => q(175),
+      q(0103) => q(327),
+      q(0104) => q(260),
+      q(0105) => q(126),
+      q(0106) => q(227),
+      q(0107) => q(331),
+      q(0108) => q(131),
+      q(0109) => q(132),
+      q(0110) => q(133),
+      q(0111) => q(115),
+      q(0112) => q(282),
+      q(0113) => q(130),
+      q(0114) => q(900),
+      q(0115) => q(949),
+      q(0116) => q(363),
+      q(0117) => q(620),
+      q(0118) => q(211),
+      q(0119) => q(123),
+      q(0120) => q(292),
+      q(0121) => q(105),
+      q(0122) => q(344),
+      q(0123) => q(095),
+      q(0124) => q(281),
+      q(0125) => q(319),
+      q(0126) => q(318),
+      q(0127) => q(348),
+      q(0128) => q(398),
+      q(0129) => q(362),
+      q(0130) => q(316),
+      q(0131) => q(135),
+      q(0132) => q(138),
+      q(0133) => q(137),
+      q(0134) => q(136),
+      q(0135) => q(373),
+      q(0136) => q(321),
+      q(0137) => q(353),
+      q(0138) => q(354),
+      q(0139) => q(346),
+      q(0140) => q(520),
+      q(0141) => q(359),
+      q(0142) => q(340),
+      q(0143) => q(290),
+      q(0144) => q(120),
+      q(0145) => q(370),
+      q(0146) => q(170),
+      q(0147) => q(352),
+      q(0148) => q(330),
+      q(0149) => q(326),
+      q(0150) => q(040),
+      q(0151) => q(470),
+      q(0152) => q(280),
+      q(0153) => q(262),
+      q(0154) => q(480),
+      q(0155) => q(030),
+      q(0156) => q(020),
+      q(0157) => q(460),
+      q(0158) => q(994),
+      q(0159) => q(995),
+      q(0160) => q(996),
+      },
+};
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/lib/Locale/Codes/Script_Retired.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,91 @@
+package Locale::Codes::Script_Retired;
+
+# This file was automatically generated.  Any changes to this file will
+# be lost the next time 'deprecate_codes' is run.
+#    Generated on: Wed Feb 27 10:06:46 EST 2013
+
+=pod
+
+=head1 NAME
+
+Locale::Codes::Script_Retired - retired script codes for the Locale::Codes::Script module
+
+=head1 SYNOPSIS
+
+This module contains data used by the Locale::Codes::Script module. It is
+not intended to be used directly, and contains no calleable routines.
+
+=head1 AUTHOR
+
+See Locale::Codes for full author history.
+
+Currently maintained by Sullivan Beck (sbeck at cpan.org).
+
+=head1 COPYRIGHT
+
+   Copyright (c) 1997-2001 Canon Research Centre Europe (CRE).
+   Copyright (c) 2001-2010 Neil Bowers
+   Copyright (c) 2010-2013 Sullivan Beck
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+use strict;
+require 5.006;
+use warnings;
+use utf8;
+
+our($VERSION);
+$VERSION='3.25';
+
+$Locale::Codes::Retired{'script'}{'alpha'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'script'}{'num'}{'code'} = {
+};
+
+$Locale::Codes::Retired{'script'}{'alpha'}{'name'} = {
+   q((alias for hiragana + katakana)) => [ q(Hrkt), q((alias for Hiragana + Katakana)) ],
+   q(cuneiform, sumero-akkadian) => [ q(Xsux), q(Cuneiform, Sumero-Akkadian) ],
+   q(deseret (mormon)) => [ q(Dsrt), q(Deseret (Mormon)) ],
+   q(devanagari (nagari)) => [ q(Deva), q(Devanagari (Nagari)) ],
+   q(duployan shorthand, duployan stenography) => [ q(Dupl), q(Duployan shorthand, Duployan stenography) ],
+   q(ethiopic (geez)) => [ q(Ethi), q(Ethiopic (Geez)) ],
+   q(han (hanzi, kanji, hanja)) => [ q(Hani), q(Han (Hanzi, Kanji, Hanja)) ],
+   q(hangul (hangul, hangeul)) => [ q(Hang), q(Hangul (Hangul, Hangeul)) ],
+   q(hanunoo (hanunoo)) => [ q(Hano), q(Hanunoo (Hanunoo)) ],
+   q(indus (harappan)) => [ q(Inds), q(Indus (Harappan)) ],
+   q(khudawadi, sindhi) => [ q(Sind), q(Khudawadi, Sindhi) ],
+   q(lepcha (rong)) => [ q(Lepc), q(Lepcha (Rong)) ],
+   q(lisu (fraser)) => [ q(Lisu), q(Lisu (Fraser)) ],
+   q(mandaic, mandaean) => [ q(Mand), q(Mandaic, Mandaean) ],
+   q(meitei mayek (meithei, meetei)) => [ q(Mtei), q(Meitei Mayek (Meithei, Meetei)) ],
+   q(miao (pollard)) => [ q(Plrd), q(Miao (Pollard)) ],
+   q(moon (moon code, moon script, moon type)) => [ q(Moon), q(Moon (Moon code, Moon script, Moon type)) ],
+   q(mro, mru) => [ q(Mroo), q(Mro, Mru) ],
+   q(myanmar (burmese)) => [ q(Mymr), q(Myanmar (Burmese)) ],
+   q(nakhi geba ('na-'khi ggo-baw, naxi geba)) => [ q(Nkgb), q(Nakhi Geba ('Na-'Khi Ggo-baw, Naxi Geba)) ],
+   q(ol chiki (ol cemet, ol, santali)) => [ q(Olck), q(Ol Chiki (Ol Cemet, Ol, Santali)) ],
+   q(old north arabian (ancient north arabian)) => [ q(Narb), q(Old North Arabian (Ancient North Arabian)) ],
+   q(old turkic, orkhon runic) => [ q(Orkh), q(Old Turkic, Orkhon Runic) ],
+   q(rejang (redjang, kaganga)) => [ q(Rjng), q(Rejang (Redjang, Kaganga)) ],
+   q(sharada, sarada) => [ q(Shrd), q(Sharada, Sarada) ],
+   q(shavian (shaw)) => [ q(Shaw), q(Shavian (Shaw)) ],
+   q(sindhi) => [ q(Sind), q(Sindhi) ],
+   q(tagalog (baybayin, alibata)) => [ q(Tglg), q(Tagalog (Baybayin, Alibata)) ],
+   q(tai tham (lanna)) => [ q(Lana), q(Tai Tham (Lanna)) ],
+   q(takri, takri, tankri) => [ q(Takr), q(Takri, Takri, Tankri) ],
+   q(tifinagh (berber)) => [ q(Tfng), q(Tifinagh (Berber)) ],
+   q(tiruta) => [ q(Tirh), q(Tiruta) ],
+   q(warang citi (varang kshiti)) => [ q(Wara), q(Warang Citi (Varang Kshiti)) ],
+};
+
+$Locale::Codes::Retired{'script'}{'num'}{'name'} = {
+   q(old hungarian) => [ q(176), q(Old Hungarian) ],
+   q(tiruta) => [ q(326), q(Tiruta) ],
+};
+
+
+1;

Added: vendor/perl/dist/cpan/Locale-Codes/t/alias_code_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/alias_code_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/alias_code_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if ($test[0] eq "alias_code") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::alias_code(@test,"nowarn");
+
+   } elsif ($test[0] eq "country2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return country2code(@test);
+
+   } else {
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2country(@test);
+   }
+}
+
+$tests = "
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   _undef_
+
+country2code
+United Kingdom
+   ~
+   gb
+
+alias_code uk gb LOCALE_CODE_FOO ~ 0
+
+alias_code uk x1 ~ 0
+
+alias_code us gb ~ 0
+
+alias_code uk gb LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   _undef_
+
+country2code
+United Kingdom
+   ~
+   gb
+
+alias_code uk gb ~ uk
+
+gb
+   ~
+   United Kingdom
+
+uk
+   ~
+   United Kingdom
+
+country2code
+United Kingdom
+   ~
+   uk
+
+";
+
+print "alias_code (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/code2country_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/code2country_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/code2country_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,144 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2country(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+zz ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_NUMERIC ~ _undef_
+
+ja ~ _undef_
+
+uk ~ _undef_
+
+BO
+   ~
+   Bolivia, Plurinational State of
+
+BO
+LOCALE_CODE_ALPHA_2
+   ~
+   Bolivia, Plurinational State of
+
+bol
+LOCALE_CODE_ALPHA_3
+   ~
+   Bolivia (Plurinational State of)
+
+pk ~ Pakistan
+
+sn ~ Senegal
+
+us
+   ~
+   United States
+
+ad ~ Andorra
+
+ad LOCALE_CODE_ALPHA_2 ~ Andorra
+
+and LOCALE_CODE_ALPHA_3 ~ Andorra
+
+020 LOCALE_CODE_NUMERIC ~ Andorra
+
+48 LOCALE_CODE_NUMERIC ~ Bahrain
+
+zw ~ Zimbabwe
+
+gb
+   ~
+   United Kingdom
+
+kz ~ Kazakhstan
+
+mo ~ Macao
+
+tl LOCALE_CODE_ALPHA_2 ~ Timor-Leste
+
+tls LOCALE_CODE_ALPHA_3 ~ Timor-Leste
+
+626 LOCALE_CODE_NUMERIC ~ Timor-Leste
+
+BO LOCALE_CODE_ALPHA_3 ~ _undef_
+
+BO LOCALE_CODE_NUMERIC ~ _undef_
+
+ax
+   ~
+   Aland Islands
+
+ala
+LOCALE_CODE_ALPHA_3
+   ~
+   Aland Islands
+
+248
+LOCALE_CODE_NUMERIC
+   ~
+   Aland Islands
+
+scg
+LOCALE_CODE_ALPHA_3
+   ~
+   _undef_
+
+891
+LOCALE_CODE_NUMERIC
+   ~
+   _undef_
+
+rou LOCALE_CODE_ALPHA_3 ~ Romania
+
+";
+
+print "code2country (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+

Added: vendor/perl/dist/cpan/Locale-Codes/t/code2langext.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/code2langext.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/code2langext.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangExt;
+
+%type = ( "LOCALE_LANGEXT_ALPHA"    => LOCALE_LANGEXT_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2langext(@test);
+}
+
+$tests = "
+
+zzz ~ _undef_
+
+acm
+   ~
+   Mesopotamian Arabic
+
+";
+
+print "code2langext...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/code2langfam.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/code2langfam.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/code2langfam.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangFam;
+
+%type = ( "LOCALE_LANGFAM_ALPHA"    => LOCALE_LANGFAM_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2langfam(@test);
+}
+
+$tests = "
+
+zzz ~ _undef_
+
+apa
+   ~
+   Apache languages
+
+";
+
+print "code2langfam...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/code2langvar.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/code2langvar.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/code2langvar.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangVar;
+
+%type = ( "LOCALE_LANGVAR_ALPHA"    => LOCALE_LANGVAR_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return code2langvar(@test);
+}
+
+$tests = "
+
+zzz ~ _undef_
+
+arevela
+   ~
+   Eastern Armenian
+
+";
+
+print "code2langvar...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/country2code_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/country2code_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/country2code_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,183 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}   if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return country2code(@test);
+}
+
+$tests = "
+
+kazakhstan
+   ~
+   kz
+
+kazakstan
+   ~
+   kz
+
+macao
+   ~
+   mo
+
+macau
+   ~
+   mo
+
+
+~ _undef_
+
+_undef_
+   ~
+   _undef_
+
+Banana
+   ~
+   _undef_
+
+japan
+   ~
+   jp
+
+Japan
+   ~
+   jp
+
+United States
+   ~
+   us
+
+United Kingdom
+   ~
+   gb
+
+Andorra
+   ~
+   ad
+
+Zimbabwe
+   ~
+   zw
+
+Iran
+   ~
+   ir
+
+North Korea
+   ~
+   kp
+
+South Korea
+   ~
+   kr
+
+Libya
+   ~
+   ly
+
+Syrian Arab Republic
+   ~
+   sy
+
+Svalbard
+   ~
+   _undef_
+
+Jan Mayen
+   ~
+   _undef_
+
+USA
+   ~
+   us
+
+United States of America
+   ~
+   us
+
+Great Britain
+   ~
+   gb
+
+Burma
+   ~
+   mm
+
+French Southern and Antarctic Lands
+   ~
+   tf
+
+Aland Islands
+   ~
+   ax
+
+Yugoslavia
+   ~
+   _undef_
+
+Serbia and Montenegro
+   ~
+   _undef_
+
+East Timor
+   ~
+   tl
+
+Zaire
+   ~
+   _undef_
+
+Congo, The Democratic Republic of the
+   ~
+   cd
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_ALPHA_3
+   ~
+   cod
+
+Congo, The Democratic Republic of the
+LOCALE_CODE_NUMERIC
+   ~
+   180
+
+";
+
+print "country2code (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:
+

Added: vendor/perl/dist/cpan/Locale-Codes/t/country_code2code_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/country_code2code_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/country_code2code_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,78 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+use Locale::Codes::Constants;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+        );
+
+sub test {
+   my($code,$type_in,$type_out) = @_;
+   $type_in  = $type{$type_in}   if ($type_in   &&  exists $type{$type_in});
+   $type_out = $type{$type_out}  if ($type_out  &&  exists $type{$type_out});
+
+   return country_code2code($code,$type_in,$type_out);
+}
+
+$tests = "
+
+bo LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_2 ~ bo
+
+bo LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_3 ~ _undef_
+
+zz LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+bo LOCALE_CODE_ALPHA_2 0 ~ _undef_
+
+_blank_ 0 0 ~ _undef_
+
+BO  LOCALE_CODE_ALPHA_2 LOCALE_CODE_ALPHA_3 ~ bol
+
+bol LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ bo
+
+zwe LOCALE_CODE_ALPHA_3 LOCALE_CODE_ALPHA_2 ~ zw
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+858 LOCALE_CODE_NUMERIC LOCALE_CODE_ALPHA_3 ~ ury
+
+tr  LOCALE_CODE_ALPHA_2 LOCALE_CODE_NUMERIC ~ 792
+
+";
+
+print "country_code2code (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/country_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/country_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/country_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,247 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Country;
+
+%type = ( "LOCALE_CODE_ALPHA_2" => LOCALE_CODE_ALPHA_2,
+          "LOCALE_CODE_ALPHA_3" => LOCALE_CODE_ALPHA_3,
+          "LOCALE_CODE_NUMERIC" => LOCALE_CODE_NUMERIC,
+          "LOCALE_CODE_FIPS"    => LOCALE_CODE_FIPS,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if      ($test[0] eq "rename_country") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::rename_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::add_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Country::delete_country(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country_alias") {
+      shift(@test);
+      return Locale::Country::add_country_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country_alias") {
+      shift(@test);
+      return Locale::Country::delete_country_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "rename_country_code") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::rename_country_code(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_country_code_alias") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Country::add_country_code_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_country_code_alias") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Country::delete_country_code_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "country2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return country2code(@test);
+
+   } else {
+      shift(@test)  if ($test[0] eq "code2country");
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2country(@test);
+   }
+}
+
+$tests = "
+
+###################################
+# Test rename_country
+
+gb
+   ~
+   United Kingdom
+
+rename_country x1 NewName ~ 0
+
+rename_country gb NewName LOCALE_CODE_FOO ~ 0
+
+rename_country gb Macao ~ 0
+
+rename_country gb NewName LOCALE_CODE_ALPHA_3 ~ 0
+
+gb
+   ~
+   United Kingdom
+
+rename_country gb NewName ~ 1
+
+gb
+   ~
+   NewName
+
+###################################
+# Test add_country
+
+xx ~ _undef_
+
+add_country xx Bolivia ~ 0
+
+add_country fi Xxxxx ~ 0
+
+add_country xx Xxxxx ~ 1
+
+xx ~ Xxxxx
+
+###################################
+# Test add_country_alias
+
+add_country_alias FooBar NewName ~ 0
+
+add_country_alias Australia Angola ~ 0
+
+country2code Australia ~ au
+
+country2code DownUnder ~ _undef_
+
+add_country_alias Australia DownUnder ~ 1
+
+country2code DownUnder ~ au
+
+###################################
+# Test delete_country_alias
+
+country2code uk ~ gb
+
+delete_country_alias Foobar ~ 0
+
+delete_country_alias UK ~ 1
+
+country2code uk ~ _undef_
+
+delete_country_alias Angola ~ 0
+
+###################################
+# Test delete_country
+
+country2code Angola                     ~ ao
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+delete_country ao                       ~ 1
+
+country2code Angola                     ~ _undef_
+
+country2code Angola LOCALE_CODE_ALPHA_3 ~ ago
+
+###################################
+# Test rename_country_code
+
+code2country zz           ~ _undef_
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ ar
+
+rename_country_code ar us ~ 0
+
+rename_country_code ar zz ~ 1
+
+rename_country_code us ar ~ 0
+
+code2country zz           ~ Argentina
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ zz
+
+rename_country_code zz ar ~ 1
+
+code2country zz           ~ Argentina
+
+code2country ar           ~ Argentina
+
+country2code Argentina    ~ ar
+
+###################################
+# Test add_country_code_alias and
+# delete_country_code_alias
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ _undef_
+
+country2code Bermuda         ~ bm
+
+add_country_code_alias bm us ~ 0
+
+add_country_code_alias bm zz ~ 0
+
+add_country_code_alias bm yy ~ 1
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ Bermuda
+
+country2code Bermuda         ~ bm
+
+delete_country_code_alias us ~ 0
+
+delete_country_code_alias ww ~ 0
+
+delete_country_code_alias yy ~ 1
+
+code2country bm              ~ Bermuda
+
+code2country yy              ~ _undef_
+
+country2code Bermuda         ~ bm
+
+";
+
+print "country (old; semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/currency2code_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/currency2code_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/currency2code_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,78 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Currency;
+
+%type = ( "LOCALE_CURR_ALPHA"    => LOCALE_CURR_ALPHA,
+          "LOCALE_CURR_NUMERIC"  => LOCALE_CURR_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return currency2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Banana ~ _undef_
+
+~ _undef_
+
+_undef_ ~ _undef_
+
+
+Canadian Dollar
+   ~
+   CAD
+
+Belize Dollar
+   ~
+   BZD
+
+PULA
+   ~
+   BWP
+
+Riel
+   ~
+   KHR
+
+Zimbabwe Dollar
+   ~
+   ZWL
+
+";
+
+print "currency2code (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/langext2code.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/langext2code.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/langext2code.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangExt;
+
+%type = ( "LOCALE_LANGEXT_ALPHA"    => LOCALE_LANGEXT_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return langext2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Mesopotamian Arabic
+   ~
+   acm
+
+";
+
+print "langext2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/langfam2code.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/langfam2code.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/langfam2code.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangFam;
+
+%type = ( "LOCALE_LANGFAM_ALPHA"    => LOCALE_LANGFAM_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return langfam2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Apache languages
+   ~
+   apa
+
+";
+
+print "langfam2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/language_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/language_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/language_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,99 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Language;
+
+%type = ( "LOCALE_LANG_ALPHA_2" => LOCALE_LANG_ALPHA_2,
+          "LOCALE_LANG_ALPHA_3" => LOCALE_LANG_ALPHA_3,
+          "LOCALE_LANG_TERM"    => LOCALE_LANG_TERM,
+        );
+
+sub test {
+   my(@test) = @_;
+
+   if      ($test[0] eq "rename_language") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Language::rename_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_language") {
+      shift(@test);
+      $test[2]  = $type{$test[2]}
+        if (@test == 3  &&  $test[2]  &&  exists $type{$test[2]});
+      return Locale::Language::add_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_language") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return Locale::Language::delete_language(@test,"nowarn");
+
+   } elsif ($test[0] eq "add_language_alias") {
+      shift(@test);
+      return Locale::Language::add_language_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "delete_language_alias") {
+      shift(@test);
+      return Locale::Language::delete_language_alias(@test,"nowarn");
+
+   } elsif ($test[0] eq "language2code") {
+      shift(@test);
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return language2code(@test);
+
+   } else {
+      $test[1]  = $type{$test[1]}
+        if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+      return code2language(@test);
+   }
+}
+
+$tests = "
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_FOO ~ 0
+
+rename_language zu English LOCALE_LANG_ALPHA_2 ~ 0
+
+rename_language zu NewName LOCALE_LANG_ALPHA_3 ~ 0
+
+zu ~ Zulu
+
+rename_language zu NewName LOCALE_LANG_ALPHA_2 ~ 1
+
+zu ~ NewName
+
+";
+
+print "language (old; semi-private)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/langvar2code.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/langvar2code.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/langvar2code.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Codes::LangVar;
+
+%type = ( "LOCALE_LANGVAR_ALPHA"    => LOCALE_LANGVAR_ALPHA,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return langvar2code(@test);
+}
+
+$tests = "
+
+_blank_ ~ _undef_
+
+Eastern Armenian
+   ~
+   arevela
+
+";
+
+print "langvar2code...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Locale-Codes/t/script2code_old.t
===================================================================
--- vendor/perl/dist/cpan/Locale-Codes/t/script2code_old.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Locale-Codes/t/script2code_old.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,55 @@
+#!/usr/bin/perl -w
+
+require 5.002;
+
+$runtests=shift(@ARGV);
+if ( -f "t/testfunc.pl" ) {
+  require "t/testfunc.pl";
+  $dir="./lib";
+  $tdir="t";
+} elsif ( -f "testfunc.pl" ) {
+  require "testfunc.pl";
+  $dir="../lib";
+  $tdir=".";
+} else {
+  die "ERROR: cannot find testfunc.pl\n";
+}
+
+unshift(@INC,$dir);
+use Locale::Script;
+
+%type = ( "LOCALE_SCRIPT_ALPHA"   => LOCALE_SCRIPT_ALPHA,
+          "LOCALE_SCRIPT_NUMERIC" => LOCALE_SCRIPT_NUMERIC,
+        );
+
+sub test {
+   my(@test) = @_;
+   $test[1]  = $type{$test[1]}
+     if (@test == 2  &&  $test[1]  &&  exists $type{$test[1]});
+   return script2code(@test);
+}
+
+$tests = "
+
+~ _undef_
+
+Phoenician ~ Phnx
+
+Phoenician LOCALE_SCRIPT_NUMERIC ~ 115
+
+";
+
+print "script2code (old)...\n";
+test_Func(\&test,$tests,$runtests);
+
+1;
+# Local Variables:
+# mode: cperl
+# indent-tabs-mode: nil
+# cperl-indent-level: 3
+# cperl-continued-statement-offset: 2
+# cperl-continued-brace-offset: 0
+# cperl-brace-offset: 0
+# cperl-brace-imaginary-offset: 0
+# cperl-label-offset: -2
+# End:

Added: vendor/perl/dist/cpan/Math-Complex/ChangeLog
===================================================================
--- vendor/perl/dist/cpan/Math-Complex/ChangeLog	                        (rev 0)
+++ vendor/perl/dist/cpan/Math-Complex/ChangeLog	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,521 @@
+2012-02-01  Zefram  <zefram at fysh.org>
+
+	* Don't declare "tan" operator overloading on Math::Complex
+	  objects, because there is no such overloading type [rt.cpan.org
+	  #74288].
+
+	* Remove execute bit from test scripts in CPAN tarball.
+
+	* Release Math::Complex 1.59 + Math::Trig 1.23.
+
+2011-06-21  Zefram  <zefram at fysh.org>
+
+	* Declare package variables with "our" rather than "use vars".
+
+	* Corresponding to "our" usage, check for minimum Perl version
+	  5.006.
+
+	* Remove $ENV{PERL_CORE} logic from test suite, which is no
+	  longer desired in the core.
+
+	* In test suite, remove obsolete and now-incomplete handling of
+	  unavailability of Test::More.
+
+	* Declare module dependencies.
+
+	* Release Math::Complex 1.58 + Math::Trig 1.22.
+
+2011-05-03  Zefram  <zefram at fysh.org>
+
+	* Add copy constructor and arrange for it to be called
+	  appropriately, problem found by David Madore and Alexandr
+	  Ciornii.
+
+	* Correctly format polarwise when a numeric format specifier is
+	  given, problem found by TomC.
+
+	* More stable great_circle_direction algorithm, problem found
+	  by Daniel Burr.
+
+	* Release Math::Complex 1.57 + Math::Trig 1.21.
+
+2009-02-08  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Fix qw(abs cos exp log sin sqrt) without argument, problem
+	  found by Steffen Mueller, 5.10-aware (lexical $_) fix by Abigail.
+	
+	* Release Math::Complex 1.56 + Math::Trig 1.20.
+	
+2008-12-27  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Resolve rt.cpan.org report: 
+	  "#39045: great_circle_direction gives wrong answer if 5th argument is supplied"
+	  by calling great_circle_distance() with an explicit argument
+	  list in great_circle_direction().
+	
+	* Release Math::Complex 1.55 + Math::Trig 1.19.
+	
+2008-04-04  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* The SIGFPE catcher in Complex.pm and Trig.t was { }, not sub { }.
+
+	* Shuffle the Inf-guessing guesses a bit to try infinities first,
+	  and also 2**99999 before exp(99999), seems to be more reliable
+	  for generating the infinity for some odd reason (the ** is
+	  implemented via exp() anyway?)
+	
+	* In cosh() and sinh() more robustly produce Inf() when needed,
+	  even when exp() seems to "stick" into DBL_MAX and not go to Inf.
+	
+	* Release Math::Complex 1.54 + Math::Trig 1.18.
+	
+2008-04-01  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Resolved rt.cpan.org report:
+	  "#34605: Math::Trig(3pm) man page feedback"
+	  (Trig.pm talked of "arcus hyperbolic sine", which is wrong,
+	   it is either "area hyperbolic sine" or "inverse hyperbolic sine")
+
+	* Tweaked also the code comments a bit to speak consistently of
+	  "area/inverse hyperbolic ..."
+
+	* Resolved rt.cpan.org report:
+	  "#34269: Math::Trig::great_circle_destination"
+	  (One cannot combine the results great_circle_distance(A, B) and
+	   great_circle_direction(A, B) to get great_circle_destination(A, ...)
+	   to return B, because the bearing keeps changing in the general case)
+	
+	* Release Math::Complex 1.53 + Math::Trig 1.17.
+	
+2008-02-11  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Duh. Forgot 128-bit option from the %DBL_MAX table.
+
+	* Release Math::Complex 1.52 + Math::Trig 1.16.
+	
+2008-02-10  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Make the nv max detection to work also with
+	  long doubles, reported by Nicholas Clark
+	  [core perl change #33268]
+
+	* Release Math::Complex 1.51 + Math::Trig 1.15.
+	  (1.50 skipped because of "1.5" idiocy.)
+	
+2008-04-04  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* The debugging output in Complex.pm BEGIN was not nice:
+	  remove that, resolving rt.cpan.org #32919.
+
+	* Make the detecting of Infinity even more relaxed:
+	  just be happy with defined() and "big enough".
+	  (Switch the '1e999' as last resort, though.)
+	
+	* Release Math::Complex 1.49 + Math::Trig 1.14.
+	
+2008-01-29  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* In HP-UX the infinity is stringified as "++" and
+	  the negative infinity as "--", fix from H. Merijn Brand.
+	
+	* Release Math::Complex 1.48 + Math::Trig 1.13.
+	
+2008-01-16  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* The great circle tests with small angles didn't work
+	  with long doubles in Mac OS X, reported by conrad.
+	  Oh, the joy of floating point.  Fudged the test hopefully enough.
+	  Could special case going from point A to point A,
+	  but that would be cheating.  (For really small movements
+	  could also just do Pythagorean plane distance.)
+	
+	* Release Math::Complex 1.47 + Math::Trig 1.12.
+	
+2008-01-16  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Fix a typo in the asin_real/acos_real documentation
+	  noticed by Alexej Sveshnikov.
+	
+	* Release Math::Complex 1.46 + Math::Trig 1.11.
+	
+2008-01-15  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Address [rt.cpan.org #32291] Wrong (Math::Complex) results in great_circle family of functions
+	  Fix gratefully received from the reporter of the bug,
+	  Alexej Sveshnikov.
+
+	* Added the two new interfaces added by the fix for the
+	  rt.cpan.org #32291, asin_real() and acos_real(), also
+	  to the public interface.
+	
+	* Release Math::Complex 1.45 + Math::Trig 1.10.
+	
+2008-01-11  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Address rt.cpan.org #27186: Shadowed By the Core Version
+	  by adding INSTALLDIRS => 'perl' to Makefile.PL.
+	
+	* Ignore SIGFPE in Trig.t when doing arithmetics with
+	  infinities (avoids a coredump in netbsd-alpha, found
+	  by David Cantrell).  Document this fun.
+
+	* Make Math::Complex and Math::Trig documentations to
+	  refer to each other.
+	
+	* Release Math::Complex 1.44 + Math::Trig 1.09.
+	
+2008-01-09  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* sinh(1e4) was not enough to go to infinity in AMD64
+	  with long doubles (sinh(1e5) was), and test.pl:is()
+	  didn't work for infinities (subtle overloading issue.)
+	  Fix from Nicholas Clark.
+	
+	* Release Math::Complex 1.43 + Math::Trig 1.08.
+	
+2008-01-07  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* The infinity detection was wrong for Microsoft libc,
+	  there infinity is '1.#INF'.  Now made the detection
+	  hopefully much more robust.
+	
+	* Release Math::Complex 1.42 + Math::Trig 1.07.
+	
+2008-01-06  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* PAUSE upload had some issues which messed up 1.39 upload,
+	  reissue after reviewing (and fixing) the diffs.
+	
+	* Release Math::Complex 1.41 (1.40 skipped because
+	  of silly "1.4.tar.gz" feature) + Math::Trig 1.07.
+	  [deleted from CPAN because broken in Win32]
+	
+2008-01-06  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Add the standard "same terms as Perl itself" license
+	  to both Complex.pm and Trig.pm.
+
+	* Add Inf() as an exportable sub, it returns the infinity
+	  (or the best floating double imitation of it).
+
+	* Make the BEGIN block of Complex.pm croak if it cannot
+	  find an infinity.  This may be deadly on some platforms
+	  but then again, Complex.pm has returned infinities for
+	  quite some time now.
+	
+	* tanh(a big enough number) was returning NaN in Unix and 1+NaN
+	  in Windows when the right answer is 1 (for IEEE doubles
+	  the limit seemed to be 709 vs 710).  Added tests for
+	  sinh/cosh/tanh/sech/csch for 100/-100, and for sinh/cosh
+	  with 1e4 returning Inf().  Reported by Roberto Congiu.
+
+	* Added sanity check tests to Trig.t for all the trigonometric
+	  and hyperbolic functions (staying in real axis, not going to
+	  complex plane).
+	
+	* Release Math::Complex 1.39 + Math::Trig 1.06.
+	  [deleted from CPAN because of PAUSE upload problems]
+	
+2007-12-30  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* The example for great_circle_waypoint() had latitude and
+	  longitude switched; reported by Chris Heys.
+	
+	* Cosmetic changes in test files.
+	
+	* Release Math::Complex 1.38 + Math::Trig 1.05.
+	
+2007-01-21  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* great_circle_waypoint() was broken (the latitudes
+	  were garbage); report and fix by Uwe Girlich.
+	
+	* local()ize $! in the BEGIN block when looking for Inf.
+	
+	* Release Math::Complex 1.37.
+	
+2006-07-04  Jarkko Hietaniemi  <jhi at iki.fi>
+
+	* Move the pi-constants from Math::Trig to Math::Complex.
+
+	* Hide some of the internal-use-only functions/methods
+	  by prepending an underscore to the names.
+
+	* Update Dan Lewart's email address.
+	
+	* Introduce pod.t and pod-coverage.t; make the tests
+	  to be correctly skipped if Test::More or Test::Pod::Coverage
+	  are not available.
+
+	* Tiny doc tweaks.
+
+	* Add a TODO file.
+	
+	* Grab the Math::Complex and Math::Trig changes from
+	  the Perl 5 Perforce repository (see below).
+	
+	* CPAN release Math::Complex 1.36 + Math::Trig 1.04. 
+	
+Changes below this are changes of the Perl 5 Perforce repository
+that somehow touched Math::Complex, Math::Trig, and/or their tests.	
+They brought Math::Complex to 1.35 and Math::Trig to 1.03,
+after which Math::Complex and Math::Trig were CPANized as 1.36 and 1.04.
+	
+	[26219] on 2005/11/28 by stevep at stevep-mccoy
+
+	Subject: [PATCH] Math::Trig: blead and maint (doc patch only): s/Bay/Gulf/ and do away with bad quotes
+	From: jhi at cc.hut.fi (Jarkko Hietaniemi)
+	Date: Sun, 27 Nov 2005 23:04:31 +0200 (EET)
+	Message-Id: <20051127210431.F1D2C6CF55 at ugli.hut.fi>
+	
+	[25414] on 2005/09/14 by rgs at bloom
+
+	Subject: [PATCH] Math::Complex and Math::Trig updates (Re: [perl #37117] Math::Complex atan2 bug)
+	From: Jarkko Hietaniemi <jhietaniemi at gmail.com>
+	Date: Wed, 14 Sep 2005 09:26:11 +0300
+	Message-ID: <4327C283.80706 at gmail.com>
+	
+	[19376] on 2003/05/02 by jhi at kosh
+
+	great_circle_direction() was broken,
+	reported by Alexander Becher.
+	
+	[18412] on 2003/01/03 by hv at hv-crypt.org
+
+	Integrate from maint-5.8 #18348:
+	Make Math::Trig a little bit more better behaved module citizen.
+	
+	[17197] on 2002/06/12 by jhi at alpha
+
+	Test relying on undefined behaviour of atan2(0, 0)
+	(valiantly debugged by Mark Lutz).
+	
+	[14508] on 2002/01/31 by jhi at alpha
+
+	Daniel S. Lewart adopts the Math::Complex.
+	
+	[14507] on 2002/01/31 by jhi at alpha
+
+	More Complex DWIMmery.
+	
+	[12954] on 2001/11/12 by jhi at alpha
+
+	Subject: [PATCH] a few typo fixes 
+	From: Jeffrey Friedl <jfriedl at yahoo.com>
+	Date: Sun, 11 Nov 2001 21:15:18 -0800 (PST)
+	Message-Id: <200111120515.fAC5FIc74795 at ventrue.corp.yahoo.com>
+	
+	Patching README.foo instead of pod/perlfoo.pod,
+	not patching Math::BigInt (Tels will take care of that),
+	dropping broken hv.c and sv.h patches, patching libnetcfg.PL
+	and perldoc.PL instead of libnetcfg and perldoc, patching
+	ext/Digest/MD5/t/files.t since MD5.pm was changed.
+	
+	[12113] on 2001/09/21 by ams at ams-lustre
+
+	Subject: [PATCH] avoid v-strings with require/use
+	From: Ronald J Kimball <rjk at linguist.Thayer.dartmouth.edu>
+	Date: Fri, 21 Sep 2001 12:34:40 -0400
+	Message-Id: <20010921123440.A148500 at linguist.thayer.dartmouth.edu>
+	
+	[12041] on 2001/09/16 by jhi at alpha
+
+	Change use|require 5.005_64 to use|require 5.6.1.
+	
+	[11016] on 2001/06/29 by jhi at alpha
+
+	Bump up the VERSIONs of modules that have changed since 5.6.0,
+	the modules found using a script written by Larry Schatzer Jr.
+	
+	[10676] on 2001/06/18 by jhi at alpha
+
+	The Grand Trek: move the *.t files from t/ to lib/ and ext/.
+	No doubt I made some mistakes like missed some files or
+	misnamed some files.  The naming rules were more or less:
+	(1) if the module is from CPAN, follows its ways, be it
+	    t/*.t or test.pl.
+	(2) otherwise if there are multiple tests for a module
+	    put them in a t/
+	(3) otherwise if there's only one test put it in Module.t
+	(4) helper files go to module/ (locale, strict, warnings)
+	(5) use longer filenames now that we can (but e.g. the
+	    compat-0.6.t and the Text::Balanced test files still
+	    were renamed to be more civil against the 8.3 people)
+	installperl was updated appropriately not to install the
+	*.t files or the help files from under lib.
+	
+	TODO: some helper files still remain under t/ that could
+	follow their 'masters'.	 UPDATE: On second thoughts, why
+	should they.  They can continue to live under t/lib, and
+	in fact the locale/strict/warnings helpers that were moved
+	could be moved back.  This way the amount of non-installable
+	stuff under lib/ stays smaller.
+	
+	[9504] on 2001/04/01 by jhi at alpha
+
+	Add great_circle_direction().
+	
+	[9007] on 2001/03/03 by jhi at alpha
+
+	Integrate change #9006 from maintperl to mainline,
+	more robust quest for the infinite.
+	
+	[8722] on 2001/02/09 by jhi at alpha
+
+	The Im() function wasn't returning zero for non-Math::Complex
+	arguments.  The bug reported by John Gamble.
+	
+	[7561] on 2000/11/05 by jhi at alpha
+
+	Add =pod to be tidy.
+	
+	[6857] on 2000/08/28 by jhi at alpha
+
+	display_format used as a class method without arguments was broken,
+	reported in
+	
+	Subject: Math::Complex->display_format() sets style to 'Math::Complex'
+	From: Yasushi Nakajima <sey at san.p.kyoto.jkc.co.jp>
+	Date: Mon, 28 Aug 2000 16:38:08 +0900 (JST)
+	Message-Id: <200008280738.QAA00215 at san.p.kyoto.jkc.co.jp>
+	
+	[6750] on 2000/08/21 by jhi at alpha
+
+	Unicos/mk requires elaborate paranoia.
+	
+	[6689] on 2000/08/18 by jhi at alpha
+
+	Fix the lib/complex failure of
+	
+	       From: abigail at foad.org
+	       Subject: [ID 20000814.005] Not OK: perl v5.6.0 on i686-linux-64int 2.2.13       
+	       Date: 15 Aug 2000 04:06:38 -0000
+	       Message-Id: <20000815040638.8524.qmail at foad.org> 
+	
+	Linux long double accuracy issue: something that
+	when printed with %g looks like "2" but int() of it is 1.
+	
+	[6827] on 2000/08/25 by jhi at alpha
+
+	Support preserving extremely big/small angles.
+	
+	[6076] on 2000/05/06 by gsar at auger
+
+	integrate cfgperl contents into mainline
+	
+	[5974] on 2000/04/27 by gsar at auger
+
+	change#4197 somehow missed initializing PL_errors, meaning
+	sytax error queueing wasn't working outside eval"" at all;
+	also fixed eval"" to localize PL_error_count, so that compile-time
+	eval's don't clobber the error state of the outer context
+	
+	[5954] on 2000/04/26 by gsar at auger
+
+	integrate cfgperl contents into mainline
+	
+	[5641] on 2000/03/11 by gsar at auger
+
+	integrate cfgperl contents into mainline
+	
+	[5611] on 2000/03/08 by gsar at auger
+
+	integrate cfgperl changes into mainline
+	
+	[5507] on 2000/03/04 by gsar at auger
+
+	more whitespace removal (from Michael G Schwern)
+	
+	[4874] on 2000/01/24 by gsar at auger
+
+	fix typos; avoid use constant for lowercase constants (produces
+	warnings now)
+	
+	[4860] on 2000/01/23 by gsar at auger
+
+	s/use vars/our/g modules that aren't independently maintained on CPAN
+	
+	[4604] on 1999/12/01 by gsar at auger
+
+	email address changes
+	
+	[4008] on 1999/08/20 by gsar at auger
+
+	integrate cfgperl contents into mainline
+	
+	[2830] on 1999/02/08 by gsar at sparc26
+
+	integrate cfgperl changes into mainline
+
+	
+	[2620] on 1999/01/17 by gsar at aatma
+
+	integrate cfgperl changes into mainline, fix conflicts
+	
+	[2219] on 1998/11/08 by gsar at aatma
+
+	integrate cfgperl changes into mainline
+	
+	[1760] on 1998/08/08 by gsar at aatma
+
+	integrate maint-5.005 changes into mainline
+	
+	[1357] on 1998/07/07 by gsar at aatma
+
+	doc tweaks suggested by Abigail, M.J.T. Guy, and Larry Wall
+	
+	[1267] on 1998/06/30 by gsar at aatma
+
+	add patch to integrate Math::Trig::Radial into Math::Trig
+		From: Jarkko Hietaniemi <jhi at iki.fi>
+		Date: Mon, 29 Jun 1998 16:28:53 +0300 (EET DST)
+		Message-Id: <199806291328.QAA16916 at alpha.hut.fi>
+		Subject: [PATCH] 5.004_68 (or 5.004_04): radial trig
+	
+	[1235] on 1998/06/28 by gsar at aatma
+
+	Complex.pm update
+		From: Jarkko Hietaniemi <jhi at iki.fi>
+		Date: Wed, 24 Jun 1998 15:19:05 +0300 (EET DST)
+		Message-Id: <199806241219.PAA04061 at alpha.hut.fi>
+		Subject: [PATCH] 5.004_68: Complex.pm, complex.t
+	
+	[476] on 1998/02/06 by mbeattie at localhost
+
+	From: Jarkko Hietaniemi <jhi at iki.fi>
+	Subject: [PATCH] almost OK: perl 5.00457 on i386-freebsd-thread 3.0
+	Date: Wed, 4 Feb 1998 12:59:47 +0200 (EET)
+	Subject: Re: [PATCH] 5.004_04 and 5.004_57: Complex.pm and complex.t 
+	Date: Thu, 5 Feb 1998 18:08:20 +0200 (EET)
+	
+	[439] on 1998/01/27 by mbeattie at localhost
+
+	Integrate ansi branch into mainline (resolve -ay).
+	
+	[296] on 1997/11/25 by mbeattie at localhost
+
+	Integrate from ansi branch to mainline.
+	
+	[137] on 1997/10/16 by mbeattie at localhost
+
+	Merge maint-5.004 branch (5.004_04) with mainline.
+	
+	[114] on 1997/10/08 by mbeattie at localhost
+
+	Merge maint-5.004 branch (5.004_03) with mainline.
+	MANIFEST is out of sync.
+	
+	[77] on 1997/09/29 by mbeattie at localhost
+
+	Start merge with maint-5.004 branch by creating an ancestral
+	branch point via a fake resolution with the maint-merge branch.
+	See Perforce Tech Note 9 for details.
+	
+	[18] on 1997/05/25 by mbeattie at localhost
+
+	First stab at 5.003 -> 5.004 integration.
+	
+	[1] on 1997/03/28 by mbeattie at localhost
+
+	Perl 5.003 check-in
+

Added: vendor/perl/dist/cpan/Math-Complex/Makefile.PL
===================================================================
--- vendor/perl/dist/cpan/Math-Complex/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/cpan/Math-Complex/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+{ use 5.006; }
+
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+	      NAME            => 'Math::Complex',
+	      VERSION_FROM    => 'lib/Math/Complex.pm',
+	      INSTALLDIRS     => 'perl',
+	      PREREQ_PM	      =>
+	      	{
+		    'Config'		=> 0,
+		    'Exporter'		=> 0,
+		    'ExtUtils::MakeMaker' => 0,
+		    'Scalar::Util'	=> '1.11',
+		    'Test::More'	=> 0,
+		    'overload'		=> 0,
+		    'strict'		=> 0,
+		    'warnings'		=> 0,
+		},
+              ($ExtUtils::MakeMaker::VERSION >= 6.3002 ?
+	       ('LICENSE'=> 'perl', ) : ()),
+	     );

Added: vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/a/X.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/a/X.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/a/X.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+package X;
+
+our $VERSION = '0.01';
+
+1;

Added: vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/b/X.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/b/X.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Load-Conditional/t/test_lib/b/X.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+package X;
+
+our $VERSION = '0.02';
+
+1;

Added: vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotMain.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotMain.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotMain.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+$VERSION = 1.23;
+
+1;

Added: vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotX.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotX.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Load-Conditional/t/to_load/NotX.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+$VERSION = 1;
+
+package Y;
+
+$VERSION = 2;
+
+package NotX;
+
+$VERSION = 3;
+
+package X;
+
+$VERSION = 4;
+
+1;

Added: vendor/perl/dist/cpan/Module-Metadata/t/encoding.t
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/encoding.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Metadata/t/encoding.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,30 @@
+#!perl
+
+use strict;
+use File::Spec;
+use Test::More;
+
+use Module::Metadata;
+
+if ("$]" < 5.008_003) {
+  plan skip_all => 'Encoding test needs at least perl 5.8.3';
+}
+
+my %versions = (
+ UTF8    => 3,
+ UTF16BE => 4,
+ UTF16LE => 5,
+);
+
+plan tests => 4 * scalar(keys %versions);
+
+for my $enc (sort keys %versions) {
+  my $pkg  = "BOMTest::$enc";
+  my $vers = $versions{$enc};
+  my $pm   = File::Spec->catfile(qw<t lib BOMTest> => "$enc.pm");
+  my $info = Module::Metadata->new_from_file($pm);
+  is( $info->name, $pkg, "$enc: default package was found" );
+  is( $info->version, $vers, "$enc: version for default package" );
+  is( $info->version('Heart'), '1', 'version for ASCII package' );
+  is( $info->version("C\x{153}ur"), '2', 'version for Unicode package' );
+}

Added: vendor/perl/dist/cpan/Module-Metadata/t/lib/0_1/Foo.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/lib/0_1/Foo.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Metadata/t/lib/0_1/Foo.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+package Foo;
+$Foo::VERSION = '0.1';
+1;

Added: vendor/perl/dist/cpan/Module-Metadata/t/lib/0_2/Foo.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/lib/0_2/Foo.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Metadata/t/lib/0_2/Foo.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+package Foo;
+$Foo::VERSION = '0.2';
+1;

Added: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16BE.pm
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
===================================================================
(Binary files differ)

Index: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF16LE.pm
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Metadata/t/lib/BOMTest/UTF8.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+package Heart;
+
+our $VERSION = 1;
+
+package BOMTest::UTF8;
+
+our $VERSION = 3;
+
+package Cœur;
+
+our $VERSION = 2;
+
+1;

Added: vendor/perl/dist/cpan/Module-Metadata/t/version.t
===================================================================
--- vendor/perl/dist/cpan/Module-Metadata/t/version.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Metadata/t/version.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use strict;
+use Test::More;
+use Module::Metadata;
+use lib "t/lib/0_2";
+
+plan tests => 4;
+
+require Foo;
+is $Foo::VERSION, 0.2;
+
+my $meta = Module::Metadata->new_from_module("Foo", inc => [ "t/lib/0_1" ] );
+is $meta->version, 0.1;
+
+is $Foo::VERSION, 0.2;
+
+ok eval "use Foo 0.2; 1";
+
+
+
+
+
+

Added: vendor/perl/dist/cpan/Module-Pluggable/t/22trigger.t
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/22trigger.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/22trigger.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use lib (($FindBin::Bin."/lib")=~/^(.*)$/);
+use Test::More tests => 7;
+
+my $foo;
+my @plugins;
+my @errors;
+ok($foo = TriggerTest->new(), "Created new TriggerTest");
+ok(@plugins = $foo->plugins,  "Ran plugins");
+ok(@errors  = $foo->errors,   "Got errors");
+is_deeply([sort @plugins], ['TriggerTest::Plugin::After', 'TriggerTest::Plugin::CallbackAllow'], "Got the correct plugins");
+is_deeply([@errors], ['TriggerTest::Plugin::Error'], "Got the correct errors");
+ok(_is_loaded('TriggerTest::Plugin::CallbackDeny'), "CallbackDeny has been required");
+ok(!_is_loaded('TriggerTest::Plugin::Deny'), "Deny has not been required");
+
+
+# Stolen from Module::Loaded by Chris Williams (bingOs)
+sub _is_loaded {
+    my $pm      = shift;
+    my $file    = __PACKAGE__->_pm_to_file( $pm ) or return;
+    return $INC{$file} if exists $INC{$file};
+    return;
+}
+
+sub _pm_to_file {
+    my $pkg = shift;
+    my $pm  = shift or return;
+    my $file = join '/', split '::', $pm;
+    $file .= '.pm';
+    return $file;
+}
+
+package TriggerTest;
+
+our @ERRORS;
+use strict;
+use Module::Pluggable require          => 1,
+                      on_require_error => sub { my $p = shift; push @ERRORS, $p; return 0 },
+                      before_require   => sub { my $p = shift; return !($p eq "TriggerTest::Plugin::Deny") },
+                      after_require    => sub { my $p = shift; return !($p->can('exclude') && $p->exclude) };
+
+sub new {
+    my $class = shift;
+    return bless {}, $class;
+}
+
+sub errors {
+    @ERRORS;
+}
+1;
+

Added: vendor/perl/dist/cpan/Module-Pluggable/t/23depth.t
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/23depth.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/23depth.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use lib (($FindBin::Bin."/lib")=~/^(.*)$/);
+use Test::More tests => 2;
+
+
+my $min = MinTest->new();
+my $max = MaxTest->new();
+is_deeply([sort qw(MyOtherTest::Plugin::Bar MyOtherTest::Plugin::Foo  MyOtherTest::Plugin::Quux)], [sort $max->plugins], "min depth");
+is_deeply([qw(MyOtherTest::Plugin::Quux::Foo)], [sort $min->plugins], "max depth");
+
+
+package MinTest;
+use File::Spec::Functions qw(catdir);
+use strict;
+use File::Spec::Functions qw(catdir);
+use Module::Pluggable search_path => "MyOtherTest::Plugin", min_depth => 4;
+
+
+sub new {
+    my $class = shift;
+    return bless {}, $class;
+}
+
+package MaxTest;
+use File::Spec::Functions qw(catdir);
+use strict;
+use File::Spec::Functions qw(catdir);
+use Module::Pluggable search_path => "MyOtherTest::Plugin", max_depth => 3;
+
+
+sub new {
+    my $class = shift;
+    return bless {}, $class;
+}
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_object.t
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_object.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_object.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use Test::More tests => 2;
+
+my $inc  = IncTest->new();
+my ($ta) = grep { ref($_) eq 'Text::Abbrev'} eval { local ($^W) = 0; $inc->plugins };
+ok($ta);
+is($ta->MPCHECK, "HELLO");
+
+package IncTest;
+use Module::Pluggable search_path => "Text", 
+                      search_dirs => "t/lib", 
+                      instantiate => 'module_pluggable', 
+                      on_require_error     => sub { },
+                      on_instantiate_error => sub { };
+
+sub new {
+    my $class = shift;
+    return bless {}, $class;
+}
+1;

Added: vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_package.t
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_package.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/24local_inc_package.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+#!perl -w
+
+use strict;
+use FindBin;
+use Test::More tests => 1;
+
+IncTest->new()->plugins;
+is(Text::Abbrev->MPCHECK, "HELLO");
+
+package IncTest;
+use Module::Pluggable search_path => "Text", search_dirs => "t/lib", require => 1;
+
+sub new {
+    my $class = shift;
+    return bless {}, $class;
+}
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/Text/Abbrev.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+package Text::Abbrev;
+use strict;
+
+sub module_pluggable {
+    return bless {}, shift;
+}
+
+sub MPCHECK { "HELLO" }
+
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/After.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+package TriggerTest::Plugin::After;
+
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackAllow.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+package TriggerTest::Plugin::CallbackAllow;
+
+sub exclude {
+    return 0;
+}
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/CallbackDeny.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+package TriggerTest::Plugin::CallbackDeny;
+
+sub exclude {
+    return 1;
+}
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Deny.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+package TriggerTest::Plugin::Deny;
+
+1;
\ No newline at end of file

Added: vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm
===================================================================
--- vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Module-Pluggable/t/lib/TriggerTest/Plugin/Error.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+package TriggerTest::Plugin::Error;
+

Added: vendor/perl/dist/cpan/Pod-Checker/lib/Pod/Checker.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/lib/Pod/Checker.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/lib/Pod/Checker.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1330 @@
+#############################################################################
+# Pod/Checker.pm -- check pod documents for syntax errors
+#
+# Copyright (C) 1994-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Checker;
+use strict;
+
+use vars qw($VERSION @ISA @EXPORT %VALID_COMMANDS %VALID_SEQUENCES);
+$VERSION = '1.60';  ## Current version of this package
+require  5.005;    ## requires this Perl version or later
+
+use Pod::ParseUtils; ## for hyperlinks and lists
+
+=head1 NAME
+
+Pod::Checker, podchecker() - check pod documents for syntax errors
+
+=head1 SYNOPSIS
+
+  use Pod::Checker;
+
+  $num_errors = podchecker($filepath, $outputpath, %options);
+
+  my $checker = new Pod::Checker %options;
+  $checker->parse_from_file($filepath, \*STDERR);
+
+=head1 OPTIONS/ARGUMENTS
+
+C<$filepath> is the input POD to read and C<$outputpath> is
+where to write POD syntax error messages. Either argument may be a scalar
+indicating a file-path, or else a reference to an open filehandle.
+If unspecified, the input-file it defaults to C<\*STDIN>, and
+the output-file defaults to C<\*STDERR>.
+
+=head2 podchecker()
+
+This function can take a hash of options:
+
+=over 4
+
+=item B<-warnings> =E<gt> I<val>
+
+Turn warnings on/off. I<val> is usually 1 for on, but higher values
+trigger additional warnings. See L<"Warnings">.
+
+=back
+
+=head1 DESCRIPTION
+
+B<podchecker> will perform syntax checking of Perl5 POD format documentation.
+
+Curious/ambitious users are welcome to propose additional features they wish
+to see in B<Pod::Checker> and B<podchecker> and verify that the checks are
+consistent with L<perlpod>.
+
+The following checks are currently performed:
+
+=over 4
+
+=item *
+
+Unknown '=xxxx' commands, unknown 'XE<lt>...E<gt>' interior-sequences,
+and unterminated interior sequences.
+
+=item *
+
+Check for proper balancing of C<=begin> and C<=end>. The contents of such
+a block are generally ignored, i.e. no syntax checks are performed.
+
+=item *
+
+Check for proper nesting and balancing of C<=over>, C<=item> and C<=back>.
+
+=item *
+
+Check for same nested interior-sequences (e.g.
+C<LE<lt>...LE<lt>...E<gt>...E<gt>>).
+
+=item *
+
+Check for malformed or non-existing entities C<EE<lt>...E<gt>>.
+
+=item *
+
+Check for correct syntax of hyperlinks C<LE<lt>...E<gt>>. See L<perlpod>
+for details.
+
+=item *
+
+Check for unresolved document-internal links. This check may also reveal
+misspelled links that seem to be internal links but should be links
+to something else.
+
+=back
+
+=head1 DIAGNOSTICS
+
+=head2 Errors
+
+=over 4
+
+=item * empty =headn
+
+A heading (C<=head1> or C<=head2>) without any text? That ain't no
+heading!
+
+=item * =over on line I<N> without closing =back
+
+The C<=over> command does not have a corresponding C<=back> before the
+next heading (C<=head1> or C<=head2>) or the end of the file.
+
+=item * =item without previous =over
+
+=item * =back without previous =over
+
+An C<=item> or C<=back> command has been found outside a
+C<=over>/C<=back> block.
+
+=item * No argument for =begin
+
+A C<=begin> command was found that is not followed by the formatter
+specification.
+
+=item * =end without =begin
+
+A standalone C<=end> command was found.
+
+=item * Nested =begin's
+
+There were at least two consecutive C<=begin> commands without
+the corresponding C<=end>. Only one C<=begin> may be active at
+a time.
+
+=item * =for without formatter specification
+
+There is no specification of the formatter after the C<=for> command.
+
+=item * Apparent command =foo not preceded by blank line
+
+A command which has ended up in the middle of a paragraph or other command,
+such as
+
+  =item one
+  =item two <-- bad
+
+=item * unresolved internal link I<NAME>
+
+The given link to I<NAME> does not have a matching node in the current
+POD. This also happened when a single word node name is not enclosed in
+C<"">.
+
+=item * Unknown command "I<CMD>"
+
+An invalid POD command has been found. Valid are C<=head1>, C<=head2>,
+C<=head3>, C<=head4>, C<=over>, C<=item>, C<=back>, C<=begin>, C<=end>,
+C<=for>, C<=pod>, C<=cut>
+
+=item * Unknown interior-sequence "I<SEQ>"
+
+An invalid markup command has been encountered. Valid are:
+C<BE<lt>E<gt>>, C<CE<lt>E<gt>>, C<EE<lt>E<gt>>, C<FE<lt>E<gt>>,
+C<IE<lt>E<gt>>, C<LE<lt>E<gt>>, C<SE<lt>E<gt>>, C<XE<lt>E<gt>>,
+C<ZE<lt>E<gt>>
+
+=item * nested commands I<CMD>E<lt>...I<CMD>E<lt>...E<gt>...E<gt>
+
+Two nested identical markup commands have been found. Generally this
+does not make sense.
+
+=item * garbled entity I<STRING>
+
+The I<STRING> found cannot be interpreted as a character entity.
+
+=item * Entity number out of range
+
+An entity specified by number (dec, hex, oct) is out of range (1-255).
+
+=item * malformed link LE<lt>E<gt>
+
+The link found cannot be parsed because it does not conform to the
+syntax described in L<perlpod>.
+
+=item * nonempty ZE<lt>E<gt>
+
+The C<ZE<lt>E<gt>> sequence is supposed to be empty.
+
+=item * empty XE<lt>E<gt>
+
+The index entry specified contains nothing but whitespace.
+
+=item * Spurious text after =pod / =cut
+
+The commands C<=pod> and C<=cut> do not take any arguments.
+
+=item * Spurious =cut command
+
+A C<=cut> command was found without a preceding POD paragraph.
+
+=item * Spurious =pod command
+
+A C<=pod> command was found after a preceding POD paragraph.
+
+=item * Spurious character(s) after =back
+
+The C<=back> command does not take any arguments.
+
+=back
+
+=head2 Warnings
+
+These may not necessarily cause trouble, but indicate mediocre style.
+
+=over 4
+
+=item * multiple occurrence of link target I<name>
+
+The POD file has some C<=item> and/or C<=head> commands that have
+the same text. Potential hyperlinks to such a text cannot be unique then.
+This warning is printed only with warning level greater than one.
+
+=item * line containing nothing but whitespace in paragraph
+
+There is some whitespace on a seemingly empty line. POD is very sensitive
+to such things, so this is flagged. B<vi> users switch on the B<list>
+option to avoid this problem.
+
+=begin _disabled_
+
+=item * file does not start with =head
+
+The file starts with a different POD directive than head.
+This is most probably something you do not want.
+
+=end _disabled_
+
+=item * previous =item has no contents
+
+There is a list C<=item> right above the flagged line that has no
+text contents. You probably want to delete empty items.
+
+=item * preceding non-item paragraph(s)
+
+A list introduced by C<=over> starts with a text or verbatim paragraph,
+but continues with C<=item>s. Move the non-item paragraph out of the
+C<=over>/C<=back> block.
+
+=item * =item type mismatch (I<one> vs. I<two>)
+
+A list started with e.g. a bullet-like C<=item> and continued with a
+numbered one. This is obviously inconsistent. For most translators the
+type of the I<first> C<=item> determines the type of the list.
+
+=item * I<N> unescaped C<E<lt>E<gt>> in paragraph
+
+Angle brackets not written as C<E<lt>ltE<gt>> and C<E<lt>gtE<gt>>
+can potentially cause errors as they could be misinterpreted as
+markup commands. This is only printed when the -warnings level is
+greater than 1.
+
+=item * Unknown entity
+
+A character entity was found that does not belong to the standard
+ISO set or the POD specials C<verbar> and C<sol>.
+
+=item * No items in =over
+
+The list opened with C<=over> does not contain any items.
+
+=item * No argument for =item
+
+C<=item> without any parameters is deprecated. It should either be followed
+by C<*> to indicate an unordered list, by a number (optionally followed
+by a dot) to indicate an ordered (numbered) list or simple text for a
+definition list.
+
+=item * empty section in previous paragraph
+
+The previous section (introduced by a C<=head> command) does not contain
+any text. This usually indicates that something is missing. Note: A
+C<=head1> followed immediately by C<=head2> does not trigger this warning.
+
+=item * Verbatim paragraph in NAME section
+
+The NAME section (C<=head1 NAME>) should consist of a single paragraph
+with the script/module name, followed by a dash `-' and a very short
+description of what the thing is good for.
+
+=item * =headI<n> without preceding higher level
+
+For example if there is a C<=head2> in the POD file prior to a
+C<=head1>.
+
+=back
+
+=head2 Hyperlinks
+
+There are some warnings with respect to malformed hyperlinks:
+
+=over 4
+
+=item * ignoring leading/trailing whitespace in link
+
+There is whitespace at the beginning or the end of the contents of
+LE<lt>...E<gt>.
+
+=item * (section) in '$page' deprecated
+
+There is a section detected in the page name of LE<lt>...E<gt>, e.g.
+C<LE<lt>passwd(2)E<gt>>. POD hyperlinks may point to POD documents only.
+Please write C<CE<lt>passwd(2)E<gt>> instead. Some formatters are able
+to expand this to appropriate code. For links to (builtin) functions,
+please say C<LE<lt>perlfunc/mkdirE<gt>>, without ().
+
+=item * alternative text/node '%s' contains non-escaped | or /
+
+The characters C<|> and C</> are special in the LE<lt>...E<gt> context.
+Although the hyperlink parser does its best to determine which "/" is
+text and which is a delimiter in case of doubt, one ought to escape
+these literal characters like this:
+
+  /     E<sol>
+  |     E<verbar>
+
+=back
+
+=head1 RETURN VALUE
+
+B<podchecker> returns the number of POD syntax errors found or -1 if
+there were no POD commands at all found in the file.
+
+=head1 EXAMPLES
+
+See L</SYNOPSIS>
+
+=head1 INTERFACE
+
+While checking, this module collects document properties, e.g. the nodes
+for hyperlinks (C<=headX>, C<=item>) and index entries (C<XE<lt>E<gt>>).
+POD translators can use this feature to syntax-check and get the nodes in
+a first pass before actually starting to convert. This is expensive in terms
+of execution time, but allows for very robust conversions.
+
+Since PodParser-1.24 the B<Pod::Checker> module uses only the B<poderror>
+method to print errors and warnings. The summary output (e.g.
+"Pod syntax OK") has been dropped from the module and has been included in
+B<podchecker> (the script). This allows users of B<Pod::Checker> to
+control completely the output behavior. Users of B<podchecker> (the script)
+get the well-known behavior.
+
+=cut
+
+#############################################################################
+
+#use diagnostics;
+use Carp qw(croak);
+use Exporter;
+use Pod::Parser;
+
+ at ISA = qw(Pod::Parser);
+ at EXPORT = qw(&podchecker);
+
+my %VALID_COMMANDS = (
+    'pod'    =>  1,
+    'cut'    =>  1,
+    'head1'  =>  1,
+    'head2'  =>  1,
+    'head3'  =>  1,
+    'head4'  =>  1,
+    'over'   =>  1,
+    'back'   =>  1,
+    'item'   =>  1,
+    'for'    =>  1,
+    'begin'  =>  1,
+    'end'    =>  1,
+    'encoding' =>  1,
+);
+
+my %VALID_SEQUENCES = (
+    'I'  =>  1,
+    'B'  =>  1,
+    'S'  =>  1,
+    'C'  =>  1,
+    'L'  =>  1,
+    'F'  =>  1,
+    'X'  =>  1,
+    'Z'  =>  1,
+    'E'  =>  1,
+);
+
+# stolen from HTML::Entities
+my %ENTITIES = (
+ # Some normal chars that have special meaning in SGML context
+ amp    => '&',  # ampersand
+'gt'    => '>',  # greater than
+'lt'    => '<',  # less than
+ quot   => '"',  # double quote
+
+ # PUBLIC ISO 8879-1986//ENTITIES Added Latin 1//EN//HTML
+ AElig  => '\xC6',  # capital AE diphthong (ligature)
+ Aacute => '\xC1',  # capital A, acute accent
+ Acirc  => '\xC2',  # capital A, circumflex accent
+ Agrave => '\xC0',  # capital A, grave accent
+ Aring  => '\xC5',  # capital A, ring
+ Atilde => '\xC3',  # capital A, tilde
+ Auml   => '\xC4',  # capital A, dieresis or umlaut mark
+ Ccedil => '\xC7',  # capital C, cedilla
+ ETH    => '\xD0',  # capital Eth, Icelandic
+ Eacute => '\xC9',  # capital E, acute accent
+ Ecirc  => '\xCA',  # capital E, circumflex accent
+ Egrave => '\xC8',  # capital E, grave accent
+ Euml   => '\xCB',  # capital E, dieresis or umlaut mark
+ Iacute => '\xCD',  # capital I, acute accent
+ Icirc  => '\xCE',  # capital I, circumflex accent
+ Igrave => '\xCC',  # capital I, grave accent
+ Iuml   => '\xCF',  # capital I, dieresis or umlaut mark
+ Ntilde => '\xD1',  # capital N, tilde
+ Oacute => '\xD3',  # capital O, acute accent
+ Ocirc  => '\xD4',  # capital O, circumflex accent
+ Ograve => '\xD2',  # capital O, grave accent
+ Oslash => '\xD8',  # capital O, slash
+ Otilde => '\xD5',  # capital O, tilde
+ Ouml   => '\xD6',  # capital O, dieresis or umlaut mark
+ THORN  => '\xDE',  # capital THORN, Icelandic
+ Uacute => '\xDA',  # capital U, acute accent
+ Ucirc  => '\xDB',  # capital U, circumflex accent
+ Ugrave => '\xD9',  # capital U, grave accent
+ Uuml   => '\xDC',  # capital U, dieresis or umlaut mark
+ Yacute => '\xDD',  # capital Y, acute accent
+ aacute => '\xE1',  # small a, acute accent
+ acirc  => '\xE2',  # small a, circumflex accent
+ aelig  => '\xE6',  # small ae diphthong (ligature)
+ agrave => '\xE0',  # small a, grave accent
+ aring  => '\xE5',  # small a, ring
+ atilde => '\xE3',  # small a, tilde
+ auml   => '\xE4',  # small a, dieresis or umlaut mark
+ ccedil => '\xE7',  # small c, cedilla
+ eacute => '\xE9',  # small e, acute accent
+ ecirc  => '\xEA',  # small e, circumflex accent
+ egrave => '\xE8',  # small e, grave accent
+ eth    => '\xF0',  # small eth, Icelandic
+ euml   => '\xEB',  # small e, dieresis or umlaut mark
+ iacute => '\xED',  # small i, acute accent
+ icirc  => '\xEE',  # small i, circumflex accent
+ igrave => '\xEC',  # small i, grave accent
+ iuml   => '\xEF',  # small i, dieresis or umlaut mark
+ ntilde => '\xF1',  # small n, tilde
+ oacute => '\xF3',  # small o, acute accent
+ ocirc  => '\xF4',  # small o, circumflex accent
+ ograve => '\xF2',  # small o, grave accent
+ oslash => '\xF8',  # small o, slash
+ otilde => '\xF5',  # small o, tilde
+ ouml   => '\xF6',  # small o, dieresis or umlaut mark
+ szlig  => '\xDF',  # small sharp s, German (sz ligature)
+ thorn  => '\xFE',  # small thorn, Icelandic
+ uacute => '\xFA',  # small u, acute accent
+ ucirc  => '\xFB',  # small u, circumflex accent
+ ugrave => '\xF9',  # small u, grave accent
+ uuml   => '\xFC',  # small u, dieresis or umlaut mark
+ yacute => '\xFD',  # small y, acute accent
+ yuml   => '\xFF',  # small y, dieresis or umlaut mark
+
+ # Some extra Latin 1 chars that are listed in the HTML3.2 draft (21-May-96)
+ copy   => '\xA9',  # copyright sign
+ reg    => '\xAE',  # registered sign
+ nbsp   => "\240", # non breaking space
+
+ # Additional ISO-8859/1 entities listed in rfc1866 (section 14)
+ iexcl  => '\xA1',
+ cent   => '\xA2',
+ pound  => '\xA3',
+ curren => '\xA4',
+ yen    => '\xA5',
+ brvbar => '\xA6',
+ sect   => '\xA7',
+ uml    => '\xA8',
+ ordf   => '\xAA',
+ laquo  => '\xAB',
+'not'   => '\xAC',    # not is a keyword in perl
+ shy    => '\xAD',
+ macr   => '\xAF',
+ deg    => '\xB0',
+ plusmn => '\xB1',
+ sup1   => '\xB9',
+ sup2   => '\xB2',
+ sup3   => '\xB3',
+ acute  => '\xB4',
+ micro  => '\xB5',
+ para   => '\xB6',
+ middot => '\xB7',
+ cedil  => '\xB8',
+ ordm   => '\xBA',
+ raquo  => '\xBB',
+ frac14 => '\xBC',
+ frac12 => '\xBD',
+ frac34 => '\xBE',
+ iquest => '\xBF',
+'times' => '\xD7',    # times is a keyword in perl
+ divide => '\xF7',
+
+# some POD special entities
+ verbar => '|',
+ sol => '/'
+);
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub podchecker {
+    my ($infile, $outfile, %options) = @_;
+    local $_;
+
+    ## Set defaults
+    $infile  ||= \*STDIN;
+    $outfile ||= \*STDERR;
+
+    ## Now create a pod checker
+    my $checker = new Pod::Checker(%options);
+
+    ## Now check the pod document for errors
+    $checker->parse_from_file($infile, $outfile);
+
+    ## Return the number of errors found
+    return $checker->num_errors();
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+##################################
+
+=over 4
+
+=item C<Pod::Checker-E<gt>new( %options )>
+
+Return a reference to a new Pod::Checker object that inherits from
+Pod::Parser and is used for calling the required methods later. The
+following options are recognized:
+
+C<-warnings =E<gt> num>
+  Print warnings if C<num> is true. The higher the value of C<num>,
+the more warnings are printed. Currently there are only levels 1 and 2.
+
+C<-quiet =E<gt> num>
+  If C<num> is true, do not print any errors/warnings. This is useful
+when Pod::Checker is used to munge POD code into plain text from within
+POD formatters.
+
+=cut
+
+## sub new {
+##     my $this = shift;
+##     my $class = ref($this) || $this;
+##     my %params = @_;
+##     my $self = {%params};
+##     bless $self, $class;
+##     $self->initialize();
+##     return $self;
+## }
+
+sub initialize {
+    my $self = shift;
+    ## Initialize number of errors, and setup an error function to
+    ## increment this number and then print to the designated output.
+    $self->{_NUM_ERRORS} = 0;
+    $self->{_NUM_WARNINGS} = 0;
+    $self->{-quiet} ||= 0;
+    # set the error handling subroutine
+    $self->errorsub($self->{-quiet} ? sub { 1; } : 'poderror');
+    $self->{_commands} = 0; # total number of POD commands encountered
+    $self->{_list_stack} = []; # stack for nested lists
+    $self->{_have_begin} = ''; # stores =begin
+    $self->{_links} = []; # stack for internal hyperlinks
+    $self->{_nodes} = []; # stack for =head/=item nodes
+    $self->{_index} = []; # text in X<>
+    # print warnings?
+    $self->{-warnings} = 1 unless(defined $self->{-warnings});
+    $self->{_current_head1} = ''; # the current =head1 block
+    $self->parseopts(-process_cut_cmd => 1, -warnings => $self->{-warnings});
+}
+
+##################################
+
+=item C<$checker-E<gt>poderror( @args )>
+
+=item C<$checker-E<gt>poderror( {%opts}, @args )>
+
+Internal method for printing errors and warnings. If no options are
+given, simply prints "@_". The following options are recognized and used
+to form the output:
+
+  -msg
+
+A message to print prior to C<@args>.
+
+  -line
+
+The line number the error occurred in.
+
+  -file
+
+The file (name) the error occurred in.
+
+  -severity
+
+The error level, should be 'WARNING' or 'ERROR'.
+
+=cut
+
+# Invoked as $self->poderror( @args ), or $self->poderror( {%opts}, @args )
+sub poderror {
+    my $self = shift;
+    my %opts = (ref $_[0]) ? %{shift()} : ();
+
+    ## Retrieve options
+    chomp( my $msg  = ($opts{-msg} || '')."@_" );
+    my $line = (exists $opts{-line}) ? " at line $opts{-line}" : '';
+    my $file = (exists $opts{-file}) ? " in file $opts{-file}" : '';
+    unless (exists $opts{-severity}) {
+       ## See if can find severity in message prefix
+       $opts{-severity} = $1  if ( $msg =~ s/^\**\s*([A-Z]{3,}):\s+// );
+    }
+    my $severity = (exists $opts{-severity}) ? "*** $opts{-severity}: " : '';
+
+    ## Increment error count and print message "
+    ++($self->{_NUM_ERRORS})
+        if(!%opts || ($opts{-severity} && $opts{-severity} eq 'ERROR'));
+    ++($self->{_NUM_WARNINGS})
+        if(!%opts || ($opts{-severity} && $opts{-severity} eq 'WARNING'));
+    unless($self->{-quiet}) {
+      my $out_fh = $self->output_handle() || \*STDERR;
+      print $out_fh ($severity, $msg, $line, $file, "\n")
+        if($self->{-warnings} || !%opts || $opts{-severity} ne 'WARNING');
+    }
+}
+
+##################################
+
+=item C<$checker-E<gt>num_errors()>
+
+Set (if argument specified) and retrieve the number of errors found.
+
+=cut
+
+sub num_errors {
+   return (@_ > 1) ? ($_[0]->{_NUM_ERRORS} = $_[1]) : $_[0]->{_NUM_ERRORS};
+}
+
+##################################
+
+=item C<$checker-E<gt>num_warnings()>
+
+Set (if argument specified) and retrieve the number of warnings found.
+
+=cut
+
+sub num_warnings {
+   return (@_ > 1) ? ($_[0]->{_NUM_WARNINGS} = $_[1]) : $_[0]->{_NUM_WARNINGS};
+}
+
+##################################
+
+=item C<$checker-E<gt>name()>
+
+Set (if argument specified) and retrieve the canonical name of POD as
+found in the C<=head1 NAME> section.
+
+=cut
+
+sub name {
+    return (@_ > 1 && $_[1]) ?
+        ($_[0]->{-name} = $_[1]) : $_[0]->{-name};
+}
+
+##################################
+
+=item C<$checker-E<gt>node()>
+
+Add (if argument specified) and retrieve the nodes (as defined by C<=headX>
+and C<=item>) of the current POD. The nodes are returned in the order of
+their occurrence. They consist of plain text, each piece of whitespace is
+collapsed to a single blank.
+
+=cut
+
+sub node {
+    my ($self,$text) = @_;
+    if(defined $text) {
+        $text =~ s/\s+$//s; # strip trailing whitespace
+        $text =~ s/\s+/ /gs; # collapse whitespace
+        # add node, order important!
+        push(@{$self->{_nodes}}, $text);
+        # keep also a uniqueness counter
+        $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+        return $text;
+    }
+    @{$self->{_nodes}};
+}
+
+##################################
+
+=item C<$checker-E<gt>idx()>
+
+Add (if argument specified) and retrieve the index entries (as defined by
+C<XE<lt>E<gt>>) of the current POD. They consist of plain text, each piece
+of whitespace is collapsed to a single blank.
+
+=cut
+
+# set/return index entries of current POD
+sub idx {
+    my ($self,$text) = @_;
+    if(defined $text) {
+        $text =~ s/\s+$//s; # strip trailing whitespace
+        $text =~ s/\s+/ /gs; # collapse whitespace
+        # add node, order important!
+        push(@{$self->{_index}}, $text);
+        # keep also a uniqueness counter
+        $self->{_unique_nodes}->{$text}++ if($text !~ /^\s*$/s);
+        return $text;
+    }
+    @{$self->{_index}};
+}
+
+##################################
+
+=item C<$checker-E<gt>hyperlink()>
+
+Add (if argument specified) and retrieve the hyperlinks (as defined by
+C<LE<lt>E<gt>>) of the current POD. They consist of a 2-item array: line
+number and C<Pod::Hyperlink> object.
+
+=back
+
+=cut
+
+# set/return hyperlinks of the current POD
+sub hyperlink {
+    my $self = shift;
+    if($_[0]) {
+        push(@{$self->{_links}}, $_[0]);
+        return $_[0];
+    }
+    @{$self->{_links}};
+}
+
+## overrides for Pod::Parser
+
+sub end_pod {
+    ## Do some final checks and
+    ## print the number of errors found
+    my $self   = shift;
+    my $infile = $self->input_file();
+
+    if(@{$self->{_list_stack}}) {
+        my $list;
+        while(($list = $self->_close_list('EOF',$infile)) &&
+          $list->indent() ne 'auto') {
+            $self->poderror({ -line => 'EOF', -file => $infile,
+                -severity => 'ERROR', -msg => '=over on line ' .
+                $list->start() . ' without closing =back' });
+        }
+    }
+
+    # check validity of document internal hyperlinks
+    # first build the node names from the paragraph text
+    my %nodes;
+    foreach($self->node()) {
+        $nodes{$_} = 1;
+        if(/^(\S+)\s+\S/) {
+            # we have more than one word. Use the first as a node, too.
+            # This is used heavily in perlfunc.pod
+            $nodes{$1} ||= 2; # derived node
+        }
+    }
+    foreach($self->idx()) {
+        $nodes{$_} = 3; # index node
+    }
+    foreach($self->hyperlink()) {
+        my ($line,$link) = @$_;
+        # _TODO_ what if there is a link to the page itself by the name,
+        # e.g. in Tk::Pod : L<Tk::Pod/"DESCRIPTION">
+        if($link->node() && !$link->page() && $link->type() ne 'hyperlink') {
+            my $node = $self->_check_ptree($self->parse_text($link->node(),
+                $line), $line, $infile, 'L');
+            if($node && !$nodes{$node}) {
+                $self->poderror({ -line => $line || '', -file => $infile,
+                    -severity => 'ERROR',
+                    -msg => "unresolved internal link '$node'"});
+            }
+        }
+    }
+
+    # check the internal nodes for uniqueness. This pertains to
+    # =headX, =item and X<...>
+    if($self->{-warnings} && $self->{-warnings}>1) {
+      foreach(grep($self->{_unique_nodes}->{$_} > 1,
+        keys %{$self->{_unique_nodes}})) {
+          $self->poderror({ -line => '-', -file => $infile,
+            -severity => 'WARNING',
+            -msg => "multiple occurrence of link target '$_'"});
+      }
+    }
+
+    # no POD found here
+    $self->num_errors(-1) if($self->{_commands} == 0);
+}
+
+# check a POD command directive
+sub command {
+    my ($self, $cmd, $paragraph, $line_num, $pod_para) = @_;
+    my ($file, $line) = $pod_para->file_line;
+    ## Check the command syntax
+    my $arg; # this will hold the command argument
+    if (! $VALID_COMMANDS{$cmd}) {
+       $self->poderror({ -line => $line, -file => $file, -severity => 'ERROR',
+                         -msg => "Unknown command '$cmd'" });
+    }
+    else { # found a valid command
+        $self->{_commands}++; # delete this line if below is enabled again
+
+	$self->_commands_in_paragraphs($paragraph, $pod_para);
+
+        ##### following check disabled due to strong request
+        #if(!$self->{_commands}++ && $cmd !~ /^head/) {
+        #    $self->poderror({ -line => $line, -file => $file,
+        #         -severity => 'WARNING',
+        #         -msg => "file does not start with =head" });
+        #}
+
+        # check syntax of particular command
+        if($cmd eq 'over') {
+            # check for argument
+            $arg = $self->interpolate_and_check($paragraph, $line,$file);
+            my $indent = 4; # default
+            if($arg && $arg =~ /^\s*(\d+)\s*$/) {
+                $indent = $1;
+            }
+            # start a new list
+            $self->_open_list($indent,$line,$file);
+        }
+        elsif($cmd eq 'item') {
+            # are we in a list?
+            unless(@{$self->{_list_stack}}) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'ERROR',
+                     -msg => '=item without previous =over' });
+                # auto-open in case we encounter many more
+                $self->_open_list('auto',$line,$file);
+            }
+            my $list = $self->{_list_stack}->[0];
+            # check whether the previous item had some contents
+            if(defined $self->{_list_item_contents} &&
+              $self->{_list_item_contents} == 0) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'WARNING',
+                     -msg => 'previous =item has no contents' });
+            }
+            if($list->{_has_par}) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'WARNING',
+                     -msg => 'preceding non-item paragraph(s)' });
+                delete $list->{_has_par};
+            }
+            # check for argument
+            $arg = $self->interpolate_and_check($paragraph, $line, $file);
+            if($arg && $arg =~ /(\S+)/) {
+                $arg =~ s/[\s\n]+$//;
+                my $type;
+                if($arg =~ /^[*]\s*(\S*.*)/) {
+                  $type = 'bullet';
+                  $self->{_list_item_contents} = $1 ? 1 : 0;
+                  $arg = $1;
+                }
+                elsif($arg =~ /^\d+\.?\s+(\S*)/) {
+                  $type = 'number';
+                  $self->{_list_item_contents} = $1 ? 1 : 0;
+                  $arg = $1;
+                }
+                else {
+                  $type = 'definition';
+                  $self->{_list_item_contents} = 1;
+                }
+                my $first = $list->type();
+                if($first && $first ne $type) {
+                    $self->poderror({ -line => $line, -file => $file,
+                       -severity => 'WARNING',
+                       -msg => "=item type mismatch ('$first' vs. '$type')"});
+                }
+                else { # first item
+                    $list->type($type);
+                }
+            }
+            else {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'WARNING',
+                     -msg => 'No argument for =item' });
+                $arg = ' '; # empty
+                $self->{_list_item_contents} = 0;
+            }
+            # add this item
+            $list->item($arg);
+            # remember this node
+            $self->node($arg);
+        }
+        elsif($cmd eq 'back') {
+            # check if we have an open list
+            unless(@{$self->{_list_stack}}) {
+                $self->poderror({ -line => $line, -file => $file,
+                         -severity => 'ERROR',
+                         -msg => '=back without previous =over' });
+            }
+            else {
+                # check for spurious characters
+                $arg = $self->interpolate_and_check($paragraph, $line,$file);
+                if($arg && $arg =~ /\S/) {
+                    $self->poderror({ -line => $line, -file => $file,
+                         -severity => 'ERROR',
+                         -msg => 'Spurious character(s) after =back' });
+                }
+                # close list
+                my $list = $self->_close_list($line,$file);
+                # check for empty lists
+                if(!$list->item() && $self->{-warnings}) {
+                    $self->poderror({ -line => $line, -file => $file,
+                         -severity => 'WARNING',
+                         -msg => 'No items in =over (at line ' .
+                         $list->start() . ') / =back list'});
+                }
+            }
+        }
+        elsif($cmd =~ /^head(\d+)/) {
+            my $hnum = $1;
+            $self->{"_have_head_$hnum"}++; # count head types
+            if($hnum > 1 && !$self->{'_have_head_'.($hnum -1)}) {
+              $self->poderror({ -line => $line, -file => $file,
+                   -severity => 'WARNING',
+                   -msg => "=head$hnum without preceding higher level"});
+            }
+            # check whether the previous =head section had some contents
+            if(defined $self->{_commands_in_head} &&
+              $self->{_commands_in_head} == 0 &&
+              defined $self->{_last_head} &&
+              $self->{_last_head} >= $hnum) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'WARNING',
+                     -msg => 'empty section in previous paragraph'});
+            }
+            $self->{_commands_in_head} = -1;
+            $self->{_last_head} = $hnum;
+            # check if there is an open list
+            if(@{$self->{_list_stack}}) {
+                my $list;
+                while(($list = $self->_close_list($line,$file)) &&
+                  $list->indent() ne 'auto') {
+                    $self->poderror({ -line => $line, -file => $file,
+                         -severity => 'ERROR',
+                         -msg => '=over on line '. $list->start() .
+                         " without closing =back (at $cmd)" });
+                }
+            }
+            # remember this node
+            $arg = $self->interpolate_and_check($paragraph, $line,$file);
+            $arg =~ s/[\s\n]+$//s;
+            $self->node($arg);
+            unless(length($arg)) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'ERROR',
+                     -msg => "empty =$cmd"});
+            }
+            if($cmd eq 'head1') {
+                $self->{_current_head1} = $arg;
+            } else {
+                $self->{_current_head1} = '';
+            }
+        }
+        elsif($cmd eq 'begin') {
+            if($self->{_have_begin}) {
+                # already have a begin
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'ERROR',
+                     -msg => q{Nested =begin's (first at line } .
+                     $self->{_have_begin} . ')'});
+            }
+            else {
+                # check for argument
+                $arg = $self->interpolate_and_check($paragraph, $line,$file);
+                unless($arg && $arg =~ /(\S+)/) {
+                    $self->poderror({ -line => $line, -file => $file,
+                         -severity => 'ERROR',
+                         -msg => 'No argument for =begin'});
+                }
+                # remember the =begin
+                $self->{_have_begin} = "$line:$1";
+            }
+        }
+        elsif($cmd eq 'end') {
+            if($self->{_have_begin}) {
+                # close the existing =begin
+                $self->{_have_begin} = '';
+                # check for spurious characters
+                $arg = $self->interpolate_and_check($paragraph, $line,$file);
+                # the closing argument is optional
+                #if($arg && $arg =~ /\S/) {
+                #    $self->poderror({ -line => $line, -file => $file,
+                #         -severity => 'WARNING',
+                #         -msg => "Spurious character(s) after =end" });
+                #}
+            }
+            else {
+                # don't have a matching =begin
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'ERROR',
+                     -msg => '=end without =begin' });
+            }
+        }
+        elsif($cmd eq 'for') {
+            unless($paragraph =~ /\s*(\S+)\s*/) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'ERROR',
+                     -msg => '=for without formatter specification' });
+            }
+            $arg = ''; # do not expand paragraph below
+        }
+        elsif($cmd =~ /^(pod|cut)$/) {
+            # check for argument
+            $arg = $self->interpolate_and_check($paragraph, $line,$file);
+            if($arg && $arg =~ /(\S+)/) {
+                $self->poderror({ -line => $line, -file => $file,
+                      -severity => 'ERROR',
+                      -msg => "Spurious text after =$cmd"});
+            }
+	    if($cmd eq 'cut' && (!$self->{_PREVIOUS} || $self->{_PREVIOUS} eq 'cut')) {
+                $self->poderror({ -line => $line, -file => $file,
+                      -severity => 'ERROR',
+                      -msg => "Spurious =cut command"});
+	    }
+	    if($cmd eq 'pod' && $self->{_PREVIOUS} && $self->{_PREVIOUS} ne 'cut') {
+                $self->poderror({ -line => $line, -file => $file,
+                      -severity => 'ERROR',
+                      -msg => "Spurious =pod command"});
+	    }
+        }
+    $self->{_commands_in_head}++;
+    ## Check the interior sequences in the command-text
+    $self->interpolate_and_check($paragraph, $line,$file)
+        unless(defined $arg);
+    }
+}
+
+sub _open_list
+{
+    my ($self,$indent,$line,$file) = @_;
+    my $list = Pod::List->new(
+           -indent => $indent,
+           -start => $line,
+           -file => $file);
+    unshift(@{$self->{_list_stack}}, $list);
+    undef $self->{_list_item_contents};
+    $list;
+}
+
+sub _close_list
+{
+    my ($self,$line,$file) = @_;
+    my $list = shift(@{$self->{_list_stack}});
+    if(defined $self->{_list_item_contents} &&
+      $self->{_list_item_contents} == 0) {
+        $self->poderror({ -line => $line, -file => $file,
+            -severity => 'WARNING',
+            -msg => 'previous =item has no contents' });
+    }
+    undef $self->{_list_item_contents};
+    $list;
+}
+
+# process a block of some text
+sub interpolate_and_check {
+    my ($self, $paragraph, $line, $file) = @_;
+    ## Check the interior sequences in the command-text
+    # and return the text
+    $self->_check_ptree(
+        $self->parse_text($paragraph,$line), $line, $file, '');
+}
+
+sub _check_ptree {
+    my ($self,$ptree,$line,$file,$nestlist) = @_;
+    local($_);
+    my $text = '';
+    # process each node in the parse tree
+    foreach(@$ptree) {
+        # regular text chunk
+        unless(ref) {
+            # count the unescaped angle brackets
+            # complain only when warning level is greater than 1
+            if($self->{-warnings} && $self->{-warnings}>1) {
+              my $count;
+              if($count = tr/<>/<>/) {
+                $self->poderror({ -line => $line, -file => $file,
+                     -severity => 'WARNING',
+                     -msg => "$count unescaped <> in paragraph" });
+                }
+            }
+            $text .= $_;
+            next;
+        }
+        # have an interior sequence
+        my $cmd = $_->cmd_name();
+        my $contents = $_->parse_tree();
+        ($file,$line) = $_->file_line();
+        # check for valid tag
+        if (! $VALID_SEQUENCES{$cmd}) {
+            $self->poderror({ -line => $line, -file => $file,
+                 -severity => 'ERROR',
+                 -msg => qq(Unknown interior-sequence '$cmd')});
+            # expand it anyway
+            $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+            next;
+        }
+        if(index($nestlist, $cmd) != -1) {
+            $self->poderror({ -line => $line, -file => $file,
+                 -severity => 'WARNING',
+                 -msg => "nested commands $cmd<...$cmd<...>...>"});
+            # _TODO_ should we add the contents anyway?
+            # expand it anyway, see below
+        }
+        if($cmd eq 'E') {
+            # preserve entities
+            if(@$contents > 1 || ref $$contents[0] || $$contents[0] !~ /^\w+$/) {
+                $self->poderror({ -line => $line, -file => $file,
+                    -severity => 'ERROR',
+                    -msg => 'garbled entity ' . $_->raw_text()});
+                next;
+            }
+            my $ent = $$contents[0];
+            my $val;
+            if($ent =~ /^0x[0-9a-f]+$/i) {
+                # hexadec entity
+                $val = hex($ent);
+            }
+            elsif($ent =~ /^0\d+$/) {
+                # octal
+                $val = oct($ent);
+            }
+            elsif($ent =~ /^\d+$/) {
+                # numeric entity
+                $val = $ent;
+            }
+            if(defined $val) {
+                if($val>0 && $val<256) {
+                    $text .= chr($val);
+                }
+                else {
+                    $self->poderror({ -line => $line, -file => $file,
+                        -severity => 'ERROR',
+                        -msg => 'Entity number out of range ' . $_->raw_text()});
+                }
+            }
+            elsif($ENTITIES{$ent}) {
+                # known ISO entity
+                $text .= $ENTITIES{$ent};
+            }
+            else {
+                $self->poderror({ -line => $line, -file => $file,
+                    -severity => 'WARNING',
+                    -msg => 'Unknown entity ' . $_->raw_text()});
+                $text .= "E<$ent>";
+            }
+        }
+        elsif($cmd eq 'L') {
+            # try to parse the hyperlink
+            my $link = Pod::Hyperlink->new($contents->raw_text());
+            unless(defined $link) {
+                $self->poderror({ -line => $line, -file => $file,
+                    -severity => 'ERROR',
+                    -msg => 'malformed link ' . $_->raw_text() ." : $@"});
+                next;
+            }
+            $link->line($line); # remember line
+            if($self->{-warnings}) {
+                foreach my $w ($link->warning()) {
+                    $self->poderror({ -line => $line, -file => $file,
+                        -severity => 'WARNING',
+                        -msg => $w });
+                }
+            }
+            # check the link text
+            $text .= $self->_check_ptree($self->parse_text($link->text(),
+                $line), $line, $file, "$nestlist$cmd");
+            # remember link
+            $self->hyperlink([$line,$link]);
+        }
+        elsif($cmd =~ /[BCFIS]/) {
+            # add the guts
+            $text .= $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+        }
+        elsif($cmd eq 'Z') {
+            if(length($contents->raw_text())) {
+                $self->poderror({ -line => $line, -file => $file,
+                    -severity => 'ERROR',
+                    -msg => 'Nonempty Z<>'});
+            }
+        }
+        elsif($cmd eq 'X') {
+            my $idx = $self->_check_ptree($contents, $line, $file, "$nestlist$cmd");
+            if($idx =~ /^\s*$/s) {
+                $self->poderror({ -line => $line, -file => $file,
+                    -severity => 'ERROR',
+                    -msg => 'Empty X<>'});
+            }
+            else {
+                # remember this node
+                $self->idx($idx);
+            }
+        }
+        else {
+            # not reached
+            croak 'internal error';
+        }
+    }
+    $text;
+}
+
+# process a block of verbatim text
+sub verbatim {
+    ## Nothing particular to check
+    my ($self, $paragraph, $line_num, $pod_para) = @_;
+
+    $self->_preproc_par($paragraph);
+    $self->_commands_in_paragraphs($paragraph, $pod_para);
+
+    if($self->{_current_head1} eq 'NAME') {
+        my ($file, $line) = $pod_para->file_line;
+        $self->poderror({ -line => $line, -file => $file,
+            -severity => 'WARNING',
+            -msg => 'Verbatim paragraph in NAME section' });
+    }
+}
+
+# process a block of regular text
+sub textblock {
+    my ($self, $paragraph, $line_num, $pod_para) = @_;
+    my ($file, $line) = $pod_para->file_line;
+
+    $self->_preproc_par($paragraph);
+    $self->_commands_in_paragraphs($paragraph, $pod_para);
+
+    # skip this paragraph if in a =begin block
+    unless($self->{_have_begin}) {
+        my $block = $self->interpolate_and_check($paragraph, $line,$file);
+        if($self->{_current_head1} eq 'NAME') {
+            if($block =~ /^\s*(\S+?)\s*[,-]/) {
+                # this is the canonical name
+                $self->{-name} = $1 unless(defined $self->{-name});
+            }
+        }
+    }
+}
+
+sub _preproc_par
+{
+    my $self = shift;
+    $_[0] =~ s/[\s\n]+$//;
+    if($_[0]) {
+        $self->{_commands_in_head}++;
+        $self->{_list_item_contents}++ if(defined $self->{_list_item_contents});
+        if(@{$self->{_list_stack}} && !$self->{_list_stack}->[0]->item()) {
+            $self->{_list_stack}->[0]->{_has_par} = 1;
+        }
+    }
+}
+
+# look for =foo commands at the start of a line within a paragraph, as for
+# instance the following which prints as "* one =item two".
+#
+#     =item one
+#     =item two
+#
+# Examples of =foo written in docs are expected to be indented in a verbatim
+# or marked up C<=foo> so won't be caught.  A double-angle C<< =foo >> could
+# have the =foo at the start of a line, but that should be unlikely and is
+# easily enough dealt with by not putting a newline after the C<<.
+#
+sub _commands_in_paragraphs {
+  my ($self, $str, $pod_para) = @_;
+  while ($str =~ /[^\n]\n=([a-z][a-z0-9]+)/sg) {
+    my $cmd = $1;
+    my $pos = pos($str);
+    if ($VALID_COMMANDS{$cmd}) {
+      my ($file, $line) = $pod_para->file_line;
+      my $part = substr($str, 0, $pos);
+      $line += ($part =~ tr/\n//);  # count of newlines
+
+      $self->poderror
+        ({ -line => $line, -file => $file,
+           -severity => 'ERROR',
+           -msg => "Apparent command =$cmd not preceded by blank line"});
+    }
+  }
+}
+
+1;
+
+__END__
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp at enteract.comE<gt> (initial version),
+Marek Rouchal E<lt>marekr at cpan.orgE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist at mox.perl.comE<gt>
+
+B<Pod::Checker> is part of the Pod-Checker distribution, and is based on
+L<Pod::Parser>.
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Checker/scripts/podchecker.PL
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/scripts/podchecker.PL	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/scripts/podchecker.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,186 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate.  Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries.  Thus you write
+#  $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+$origdir = cwd;
+chdir(dirname($0));
+($file = basename($0)) =~ s/\.PL$//;
+$file =~ s/\.pl$//
+        if ($^O eq 'VMS' or $^O eq 'os2' or $^O eq 'dos');  # "case-forgiving"
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'}
+    eval 'exec perl -S \$0 "\$@"'
+        if 0;
+!GROK!THIS!
+
+# In the following, perl variables are not expanded during extraction.
+
+print OUT <<'!NO!SUBS!';
+#############################################################################
+# podchecker -- command to invoke the podchecker function in Pod::Checker
+#
+# Copyright (c) 1998-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+use strict;
+#use diagnostics;
+
+=head1 NAME
+
+podchecker - check the syntax of POD format documentation files
+
+=head1 SYNOPSIS
+
+B<podchecker> [B<-help>] [B<-man>] [B<-(no)warnings>] [I<file>S< >...]
+
+=head1 OPTIONS AND ARGUMENTS
+
+=over 8
+
+=item B<-help>
+
+Print a brief help message and exit.
+
+=item B<-man>
+
+Print the manual page and exit.
+
+=item B<-warnings> B<-nowarnings>
+
+Turn on/off printing of warnings. Repeating B<-warnings> increases the
+warning level, i.e. more warnings are printed. Currently increasing to
+level two causes flagging of unescaped "E<lt>,E<gt>" characters.
+
+=item I<file>
+
+The pathname of a POD file to syntax-check (defaults to standard input).
+
+=back
+
+=head1 DESCRIPTION
+
+B<podchecker> will read the given input files looking for POD
+syntax errors in the POD documentation and will print any errors
+it find to STDERR. At the end, it will print a status message
+indicating the number of errors found.
+
+Directories are ignored, an appropriate warning message is printed.
+
+B<podchecker> invokes the B<podchecker()> function exported by B<Pod::Checker>
+Please see L<Pod::Checker/podchecker()> for more details.
+
+=head1 RETURN VALUE
+
+B<podchecker> returns a 0 (zero) exit status if all specified
+POD files are ok.
+
+=head1 ERRORS
+
+B<podchecker> returns the exit status 1 if at least one of
+the given POD files has syntax errors.
+
+The status 2 indicates that at least one of the specified 
+files does not contain I<any> POD commands.
+
+Status 1 overrides status 2. If you want unambiguous
+results, call B<podchecker> with one single argument only.
+
+=head1 SEE ALSO
+
+L<Pod::Parser> and L<Pod::Checker>
+
+=head1 AUTHORS
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp at enteract.comE<gt>,
+Marek Rouchal E<lt>marekr at cpan.orgE<gt>
+
+Based on code for B<Pod::Text::pod2text(1)> written by
+Tom Christiansen E<lt>tchrist at mox.perl.comE<gt>
+
+=cut
+
+
+use Pod::Checker;
+use Pod::Usage;
+use Getopt::Long;
+
+## Define options
+my %options;
+
+## Parse options
+GetOptions(\%options, qw(help man warnings+ nowarnings))  ||  pod2usage(2);
+pod2usage(1)  if ($options{help});
+pod2usage(-verbose => 2)  if ($options{man});
+
+if($options{nowarnings}) {
+  $options{warnings} = 0;
+}
+elsif(!defined $options{warnings}) {
+  $options{warnings} = 1; # default is warnings on
+}
+
+## Dont default to STDIN if connected to a terminal
+pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
+
+## Invoke podchecker()
+my $status = 0;
+ at ARGV = qw(-) unless(@ARGV);
+for my $podfile (@ARGV) {
+    if($podfile eq '-') {
+      $podfile = '<&STDIN';
+    }
+    elsif(-d $podfile) {
+      warn "podchecker: Warning: Ignoring directory '$podfile'\n";
+      next;
+    }
+    my $errors =
+      podchecker($podfile, undef, '-warnings' => $options{warnings});
+    if($errors > 0) {
+        # errors occurred
+        $status = 1;
+        printf STDERR ("%s has %d pod syntax %s.\n",
+          $podfile, $errors,
+          ($errors == 1) ? 'error' : 'errors');
+    }
+    elsif($errors < 0) {
+        # no pod found
+        $status = 2 unless($status);
+        print STDERR "$podfile does not contain any pod commands.\n";
+    }
+    else {
+        print STDERR "$podfile pod syntax OK.\n";
+    }
+}
+exit $status;
+
+!NO!SUBS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/contains_bad_pod.xr
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/contains_bad_pod.xr	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/contains_bad_pod.xr	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+=head foo
+
+bar baz.
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/empty.xr
===================================================================
Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl
+BEGIN {
+   use File::Basename;
+   my $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   require "testpchk.pl";
+   import TestPodChecker;
+}
+
+# this tests Pod::Checker accepts =encoding directive
+
+my %options = map { $_ => 1 } @ARGV;  ## convert cmdline to options-hash
+my $passed  = testpodchecker \%options, $0;
+exit( ($passed == 1) ? 0 : -1 )  unless $ENV{HARNESS_ACTIVE};
+
+__END__
+
+=encoding utf8
+
+=encode utf8
+
+dummy error
+
+=head1 An example.
+
+'Twas brillig, and the slithy toves did gyre and gimble in the wabe.
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.xr
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.xr	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/podchkenc.xr	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+*** ERROR: Unknown command 'encode' at line 20 in file t/pod/podchkenc.t

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,241 @@
+BEGIN {
+   use File::Basename;
+   my $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   require "testpchk.pl";
+   import TestPodChecker;
+}
+
+my %options = map { $_ => 1 } @ARGV;  ## convert cmdline to options-hash
+my $passed  = testpodchecker \%options, $0;
+exit( ($passed == 1) ? 0 : -1 )  unless $ENV{HARNESS_ACTIVE};
+
+### Deliberately throw in some blank but non-empty lines
+                                        
+### The above line should contain spaces
+
+
+__END__
+
+=head2 This should cause a warning
+
+=head1 NAME
+
+poderrors.t - test Pod::Checker on some pod syntax errors
+
+=unknown1 this is an unknown command with two N<unknownA>
+and D<unknownB> interior sequences.
+
+This is some paragraph text with some unknown interior sequences,
+such as Q<unknown2>,
+A<unknown3>,
+and Y<unknown4 V<unknown5>>.
+
+Now try some unterminated sequences like
+I<hello mudda!
+B<hello fadda!
+
+Here I am at C<camp granada!
+
+Camps is very,
+entertaining.
+And they say we'll have some fun if it stops raining!
+
+Okay, now use a non-empty blank line to terminate a paragraph and make
+sure we get a warning.
+	                                     	
+The above blank line contains tabs and spaces only
+
+=head1 Additional tests
+
+=head2 item without over
+
+=item oops
+
+=head2 back without over
+
+=back
+
+=head2 over without back
+
+=over 4
+
+=item aaps
+
+=head2 end without begin
+
+=end
+
+=head2 begin and begin
+
+=begin html
+
+=begin text
+
+=end
+
+=end
+
+second one results in end w/o begin
+
+=head2 begin w/o formatter
+
+=begin
+
+=end
+
+=head2 for w/o formatter
+
+=for
+
+something...
+
+=head2 Nested sequences of the same type
+
+C<code I<italic C<code again!>>>
+
+=head2 Garbled entities
+
+E<alea iacta est>
+E<C<auml>>
+E<abcI<bla>>
+E<0x100>
+E<07777>
+E<300>
+
+=head2 Unresolved internal links
+
+L</"begin or begin">
+L<"end with begin">
+L</OoPs>
+
+=head2 Some links with problems
+
+L<abc
+def>
+L<>
+L<   aha>
+L<oho   >
+L<"Warnings"> this one is ok
+L</unescaped> ok too, this POD has an X of the same name
+L<http://www.perl.org> this is OK
+L<The Perl Home Page|http://www.perl.org> this is also OK
+
+=head2 Warnings
+
+L<passwd(5)>
+L<some text with / in it|perlvar/$|> should give warnings as hell
+
+=over 4
+
+=item bla
+
+=back 200
+
+the 200 is evil
+
+=begin html
+
+What?
+
+=end xml
+
+X<unescaped>see these unescaped < and > in the text?
+
+=head2 Misc
+
+Z<ddd> should be empty
+
+X<> should not be empty
+
+=over four
+
+This paragrapgh is misplaced - it ought to be an item.
+
+=item four should be numeric!
+
+=item
+
+=item blah
+
+=item previous is all empty!!!
+
+=back
+
+All empty over/back:
+
+=over 4
+
+=back
+
+item w/o name
+
+=cut
+
+=pod bla
+
+bla is evil
+
+=cut blub
+
+blub is evil
+
+=head2 reoccurence
+
+=over 4
+
+=item Misc
+
+we already have a head Misc
+
+=back
+
+=head2 some heading
+
+=head2 another one
+
+=head2 the next line should be empty
+=head2 ... but there is a command instead
+
+And here is some text
+=head2 again followed by a command
+
+  verbatim
+=item line missing
+
+previous section is empty!
+
+=head1 LINK TESTS
+
+Due to bug reported by Rafael Garcia-Suarez "rgarciasuarez at free.fr":
+
+The following hyperlinks :
+L<"I/O Operators">
+L<perlop/"I/O Operators">
+trigger a podchecker warning (using bleadperl) :
+    node 'I/O Operators' contains non-escaped | or /
+
+=cut
+
+=pod
+
+=head1 ON-OFF tests
+
+The above =pod is OK. The following =cut is ok, the one after not.
+
+=cut
+
+# some comment or code here, not POD
+
+=cut
+
+# more code
+
+=head2 This opens POD
+
+=pod
+
+And the =pod above is too much.
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.xr
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.xr	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/poderrs.xr	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+*** WARNING: =head2 without preceding higher level at line 20 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 22 in file t/pod/poderrs.t
+*** ERROR: Unknown command 'unknown1' at line 26 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'Q' at line 30 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'A' at line 31 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'Y' at line 32 in file t/pod/poderrs.t
+*** ERROR: Unknown interior-sequence 'V' at line 32 in file t/pod/poderrs.t
+*** ERROR: unterminated B<...> at line 36 in file t/pod/poderrs.t
+*** ERROR: unterminated I<...> at line 35 in file t/pod/poderrs.t
+*** ERROR: unterminated C<...> at line 38 in file t/pod/poderrs.t
+*** WARNING: line containing nothing but whitespace in paragraph at line 46 in file t/pod/poderrs.t
+*** ERROR: =item without previous =over at line 53 in file t/pod/poderrs.t
+*** ERROR: =back without previous =over at line 57 in file t/pod/poderrs.t
+*** ERROR: =over on line 61 without closing =back (at head2) at line 65 in file t/pod/poderrs.t
+*** ERROR: =end without =begin at line 67 in file t/pod/poderrs.t
+*** ERROR: Nested =begin's (first at line 71:html) at line 73 in file t/pod/poderrs.t
+*** ERROR: =end without =begin at line 77 in file t/pod/poderrs.t
+*** ERROR: No argument for =begin at line 83 in file t/pod/poderrs.t
+*** ERROR: =for without formatter specification at line 89 in file t/pod/poderrs.t
+*** WARNING: nested commands C<...C<...>...> at line 95 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<alea iacta est> at line 99 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<C<auml>> at line 100 in file t/pod/poderrs.t
+*** ERROR: garbled entity E<abcI<bla>> at line 101 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<0x100> at line 102 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<07777> at line 103 in file t/pod/poderrs.t
+*** ERROR: Entity number out of range E<300> at line 104 in file t/pod/poderrs.t
+*** ERROR: malformed link L<> : empty link at line 116 in file t/pod/poderrs.t
+*** WARNING: ignoring leading whitespace in link at line 117 in file t/pod/poderrs.t
+*** WARNING: ignoring trailing whitespace in link at line 118 in file t/pod/poderrs.t
+*** WARNING: (section) in 'passwd(5)' deprecated at line 126 in file t/pod/poderrs.t
+*** WARNING: node '$|' contains non-escaped | or / at line 127 in file t/pod/poderrs.t
+*** WARNING: alternative text '$|' contains non-escaped | or / at line 127 in file t/pod/poderrs.t
+*** ERROR: Spurious character(s) after =back at line 133 in file t/pod/poderrs.t
+*** ERROR: Nonempty Z<> at line 147 in file t/pod/poderrs.t
+*** ERROR: Empty X<> at line 149 in file t/pod/poderrs.t
+*** WARNING: preceding non-item paragraph(s) at line 155 in file t/pod/poderrs.t
+*** WARNING: No argument for =item at line 157 in file t/pod/poderrs.t
+*** WARNING: previous =item has no contents at line 159 in file t/pod/poderrs.t
+*** WARNING: No items in =over (at line 167) / =back list at line 169 in file t/pod/poderrs.t
+*** ERROR: Spurious text after =pod at line 175 in file t/pod/poderrs.t
+*** ERROR: Spurious text after =cut at line 179 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 195 in file t/pod/poderrs.t
+*** ERROR: Apparent command =head2 not preceded by blank line at line 198 in file t/pod/poderrs.t
+*** WARNING: empty section in previous paragraph at line 197 in file t/pod/poderrs.t
+*** ERROR: Apparent command =head2 not preceded by blank line at line 201 in file t/pod/poderrs.t
+*** ERROR: Apparent command =item not preceded by blank line at line 204 in file t/pod/poderrs.t
+*** ERROR: Spurious =cut command at line 230 in file t/pod/poderrs.t
+*** ERROR: Spurious =pod command at line 236 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'begin or begin' at line 108 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'end with begin' at line 109 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'OoPs' at line 110 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'abc def' at line 114 in file t/pod/poderrs.t
+*** ERROR: unresolved internal link 'I/O Operators' at line 213 in file t/pod/poderrs.t

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/selfcheck.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/selfcheck.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/selfcheck.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+use File::Basename;
+use File::Spec;
+use strict;
+my $THISDIR;
+BEGIN {
+   $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   require "testpchk.pl";
+   import TestPodChecker qw(testpodcheck);
+}
+
+# test that our POD is correct!
+my $path = File::Spec->catfile($THISDIR,(File::Spec->updir()) x 2, 'lib', 'Pod', '*.pm');
+print "THISDIR=$THISDIR PATH=$path\n";
+my @pods = glob($path);
+print "PODS=@pods\n";
+
+print "1..",scalar(@pods),"\n";
+
+my $errs = 0;
+my $testnum = 1;
+foreach my $pod (@pods) {
+  my $out = File::Spec->catfile($THISDIR, basename($pod));
+  $out =~ s{\.pm}{.OUT};
+  my %options = ( -Out => $out );
+  my $failmsg = testpodcheck(-In => $pod, -Out => $out, -Cmp => "$THISDIR/empty.xr");
+  if($failmsg) {
+    if(open(IN, "<$out")) {
+      while(<IN>) {
+        warn "podchecker: $_";
+      }
+      close(IN);
+    } else {
+      warn "Error: Cannot read output file $out: $!\n";
+    }
+    print "not ok $testnum\n";
+    $errs++;
+  } else {
+    print "ok $testnum\n";
+  }
+  $testnum++;
+}
+exit( ($errs == 0) ? 0 : -1 )  unless $ENV{HARNESS_ACTIVE};
+

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/testcmp.pl
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/testcmp.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/testcmp.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,94 @@
+package TestCompare;
+
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Basename;
+use File::Spec;
+use FileHandle;
+
+ at ISA = qw(Exporter);
+ at EXPORT = qw(&testcmp);
+$MYPKG = eval { (caller)[0] };
+
+##--------------------------------------------------------------------------
+
+=head1 NAME
+
+testcmp -- compare two files line-by-line
+
+=head1 SYNOPSIS
+
+    $is_diff = testcmp($file1, $file2);
+
+or
+
+    $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
+
+=head2 DESCRIPTION
+
+Compare two text files line-by-line and return 0 if they are the
+same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
+or a filehandles (in which case it must already be open for reading).
+
+If the first argument is a hashref, then the B<-cmplines> key in the
+hash may have a subroutine reference as its corresponding value.
+The referenced user-defined subroutine should be a line-comparator
+function that takes two pre-chomped text-lines as its arguments
+(the first is from $file1 and the second is from $file2). It should
+return 0 if it considers the two lines equivalent, and non-zero
+otherwise.
+
+=cut
+
+##--------------------------------------------------------------------------
+
+sub testcmp( $ $ ; $) {
+   my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
+   my ($file1, $file2) = @_;
+   my ($fh1, $fh2) = ($file1, $file2);
+   unless (ref $fh1) {
+      $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
+   }
+   unless (ref $fh2) {
+      $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
+   }
+  
+   my $cmplines = $opts{'-cmplines'} || undef;
+   my ($f1text, $f2text) = ("", "");
+   my ($line, $diffs)    = (0, 0);
+  
+   while ( defined($f1text) and defined($f2text) ) {
+      defined($f1text = <$fh1>)  and  chomp($f1text);
+      defined($f2text = <$fh2>)  and  chomp($f2text);
+      ++$line;
+      last unless ( defined($f1text) and defined($f2text) );
+      # kill any extra line endings
+      $f1text =~ s/[\r\n]+$//s;
+      $f2text =~ s/[\r\n]+$//s;
+      $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
+                               : ($f1text ne $f2text);
+      last if $diffs;
+   }
+   close($fh1) unless (ref $file1);
+   close($fh2) unless (ref $file2);
+  
+   $diffs = 1  if (defined($f1text) or defined($f2text));
+   if ( defined($f1text) and defined($f2text) ) {
+      ## these two lines must be different
+      warn "$file1 and $file2 differ at line $line\n";
+   }
+   elsif (defined($f1text)  and  (! defined($f1text))) {
+      ## file1 must be shorter
+      warn "$file1 is shorter than $file2\n";
+   }
+   elsif (defined $f2text) {
+      ## file2 must be longer
+      warn "$file1 is shorter than $file2\n";
+   }
+   return $diffs;
+}
+
+1;

Added: vendor/perl/dist/cpan/Pod-Checker/t/pod/testpchk.pl
===================================================================
--- vendor/perl/dist/cpan/Pod-Checker/t/pod/testpchk.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Checker/t/pod/testpchk.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,130 @@
+package TestPodChecker;
+
+BEGIN {
+   use File::Basename;
+   use File::Spec;
+   push @INC, '..';
+   my $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   require "testcmp.pl";
+   import TestCompare;
+   my $PARENTDIR = dirname $THISDIR;
+   push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+   require VMS::Filespec if $^O eq 'VMS';
+}
+
+use Pod::Checker;
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+
+ at ISA = qw(Exporter);
+ at EXPORT = qw(&testpodchecker);
+ at EXPORT_OK = qw(&testpodcheck);
+$MYPKG = eval { (caller)[0] };
+
+sub stripname( $ ) {
+   local $_ = shift;
+   return /(\w[.\w]*)\s*$/ ? $1 : $_;
+}
+
+sub msgcmp( $ $ ) {
+   ## filter out platform-dependent aspects of error messages
+   my ($line1, $line2) = @_;
+   for ($line1, $line2) {
+      ## remove filenames from error messages to avoid any
+      ## filepath naming differences between OS platforms
+      s/(at line \S+ in file) .*\W(\w+\.[tT])\s*$/$1 \L$2\E/;
+      s/.*\W(\w+\.[tT]) (has \d+ pod syntax error)/\L$1\E $2/;
+   }
+   return ($line1 ne $line2);
+}
+
+sub testpodcheck( @ ) {
+   my %args = @_;
+   my $infile  = $args{'-In'}  || croak "No input file given!";
+   my $outfile = $args{'-Out'} || croak "No output file given!";
+   my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+   my $different = '';
+   my $testname = basename $infile, '.t', '.xr';
+
+   unless (-e $cmpfile) {
+      my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+      warn  "$msg\n";
+      return  $msg;
+   }
+
+   print "# Running podchecker for '$testname'...\n";
+   ## Compare the output against the expected result
+   if ($^O eq 'VMS') {
+      for ($infile, $outfile, $cmpfile) {
+         $_ = VMS::Filespec::unixify($_)  unless  ref;
+      }
+   }
+   podchecker($infile, $outfile);
+   if ( testcmp({'-cmplines' => \&msgcmp}, $outfile, $cmpfile) ) {
+       $different = "$outfile is different from $cmpfile";
+   }
+   else {
+       unlink($outfile);
+   }
+   return  $different;
+}
+
+sub testpodchecker( @ ) {
+   my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+   my @testpods = @_;
+   my ($testname, $testdir) = ("", "");
+   my ($podfile, $cmpfile) = ("", "");
+   my ($outfile, $errfile) = ("", "");
+   my $passes = 0;
+   my $failed = 0;
+   local $_;
+
+   print "1..", scalar @testpods, "\n"  unless ($opts{'-xrgen'});
+
+   for $podfile (@testpods) {
+      ($testname, $_) = fileparse($podfile);
+      $testdir ||=  $_;
+      $testname  =~ s/\.t$//;
+      $cmpfile   =  $testdir . $testname . '.xr';
+      $outfile   =  $testdir . $testname . '.OUT';
+
+      if ($opts{'-xrgen'}) {
+          if ($opts{'-force'} or ! -e $cmpfile) {
+             ## Create the comparison file
+             print "# Creating expected result for \"$testname\"" .
+                   " podchecker test ...\n";
+             podchecker($podfile, $cmpfile);
+          }
+          else {
+             print "# File $cmpfile already exists" .
+                   " (use '-force' to regenerate it).\n";
+          }
+          next;
+      }
+
+      my $failmsg = testpodcheck
+                        -In  => $podfile,
+                        -Out => $outfile,
+                        -Cmp => $cmpfile;
+      if ($failmsg) {
+          ++$failed;
+          print "#\tFAILED. ($failmsg)\n";
+	  print "not ok ", $failed+$passes, "\n";
+      }
+      else {
+          ++$passes;
+          unlink($outfile);
+          print "#\tPASSED.\n";
+	  print "ok ", $failed+$passes, "\n";
+      }
+   }
+   return  $passes;
+}
+
+1;

Added: vendor/perl/dist/cpan/Pod-Parser/t/pod/empty.xr
===================================================================
Added: vendor/perl/dist/cpan/Pod-Parser/t/pod/selfcheck.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Parser/t/pod/selfcheck.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Parser/t/pod/selfcheck.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+use Test::More;
+use File::Basename;
+use File::Spec;
+use strict;
+my $THISDIR;
+BEGIN {
+   $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   eval {
+     require "testpchk.pl";
+     import TestPodChecker qw(testpodcheck);
+   };
+   warn $@ if $@;
+};
+
+my @pods;
+unless($Pod::Checker::VERSION && $Pod::Checker::VERSION > 1.40) {
+  plan skip_all => "we do not have a good Pod::Checker around";
+} else {
+  my $path = File::Spec->catfile($THISDIR,(File::Spec->updir()) x 2, 'lib', 'Pod', '*.pm');
+  print "THISDIR=$THISDIR PATH=$path\n";
+  @pods = glob($path);
+  print "PODS=@pods\n";
+  plan tests => scalar(@pods);
+}
+
+# test that our POD is correct!
+my $errs = 0;
+
+foreach my $pod (@pods) {
+  my $out = File::Spec->catfile($THISDIR, basename($pod));
+  $out =~ s{\.pm}{.OUT};
+  my %options = ( -Out => $out );
+  my $failmsg = testpodcheck(-In => $pod, -Out => $out, -Cmp => "$THISDIR/empty.xr");
+  if($failmsg) {
+    if(open(IN, "<$out")) {
+      while(<IN>) {
+        warn "podchecker: $_";
+      }
+      close(IN);
+    } else {
+      warn "Error: Cannot read output file $out: $!\n";
+    }
+    ok(0, $pod);
+    $errs++;
+  } else {
+    ok(1, $pod);
+  }
+}
+
+exit( ($errs == 0) ? 0 : -1 )  unless $ENV{HARNESS_ACTIVE};
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/corpus/no-head.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/corpus/no-head.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/corpus/no-head.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+=pod
+
+This is a line of text
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/corpus/perlfunc.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/corpus/perlfunc.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/corpus/perlfunc.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8298 @@
+=head1 NAME
+X<function>
+
+perlfunc - Perl builtin functions
+
+=head1 DESCRIPTION
+
+The functions in this section can serve as terms in an expression.
+They fall into two major categories: list operators and named unary
+operators.  These differ in their precedence relationship with a
+following comma.  (See the precedence table in L<perlop>.)  List
+operators take more than one argument, while unary operators can never
+take more than one argument.  Thus, a comma terminates the argument of
+a unary operator, but merely separates the arguments of a list
+operator.  A unary operator generally provides scalar context to its
+argument, while a list operator may provide either scalar or list
+contexts for its arguments.  If it does both, scalar arguments 
+come first and list argument follow, and there can only ever
+be one such list argument.  For instance, splice() has three scalar
+arguments followed by a list, whereas gethostbyname() has four scalar
+arguments.
+
+In the syntax descriptions that follow, list operators that expect a
+list (and provide list context for elements of the list) are shown
+with LIST as an argument.  Such a list may consist of any combination
+of scalar arguments or list values; the list values will be included
+in the list as if each individual element were interpolated at that
+point in the list, forming a longer single-dimensional list value.
+Commas should separate literal elements of the LIST.
+
+Any function in the list below may be used either with or without
+parentheses around its arguments.  (The syntax descriptions omit the
+parentheses.)  If you use parentheses, the simple but occasionally 
+surprising rule is this: It I<looks> like a function, therefore it I<is> a
+function, and precedence doesn't matter.  Otherwise it's a list
+operator or unary operator, and precedence does matter.  Whitespace
+between the function and left parenthesis doesn't count, so sometimes
+you need to be careful:
+
+    print 1+2+4;      # Prints 7.
+    print(1+2) + 4;   # Prints 3.
+    print (1+2)+4;    # Also prints 3!
+    print +(1+2)+4;   # Prints 7.
+    print ((1+2)+4);  # Prints 7.
+
+If you run Perl with the B<-w> switch it can warn you about this.  For
+example, the third line above produces:
+
+    print (...) interpreted as function at - line 1.
+    Useless use of integer addition in void context at - line 1.
+
+A few functions take no arguments at all, and therefore work as neither
+unary nor list operators.  These include such functions as C<time>
+and C<endpwent>.  For example, C<time+86_400> always means
+C<time() + 86_400>.
+
+For functions that can be used in either a scalar or list context,
+nonabortive failure is generally indicated in scalar context by
+returning the undefined value, and in list context by returning the
+empty list.
+
+Remember the following important rule: There is B<no rule> that relates
+the behavior of an expression in list context to its behavior in scalar
+context, or vice versa.  It might do two totally different things.
+Each operator and function decides which sort of value would be most
+appropriate to return in scalar context.  Some operators return the
+length of the list that would have been returned in list context.  Some
+operators return the first value in the list.  Some operators return the
+last value in the list.  Some operators return a count of successful
+operations.  In general, they do what you want, unless you want
+consistency.
+X<context>
+
+A named array in scalar context is quite different from what would at
+first glance appear to be a list in scalar context.  You can't get a list
+like C<(1,2,3)> into being in scalar context, because the compiler knows
+the context at compile time.  It would generate the scalar comma operator
+there, not the list construction version of the comma.  That means it
+was never a list to start with.
+
+In general, functions in Perl that serve as wrappers for system calls ("syscalls")
+of the same name (like chown(2), fork(2), closedir(2), etc.) return
+true when they succeed and C<undef> otherwise, as is usually mentioned
+in the descriptions below.  This is different from the C interfaces,
+which return C<-1> on failure.  Exceptions to this rule include C<wait>,
+C<waitpid>, and C<syscall>.  System calls also set the special C<$!>
+variable on failure.  Other functions do not, except accidentally.
+
+Extension modules can also hook into the Perl parser to define new
+kinds of keyword-headed expression.  These may look like functions, but
+may also look completely different.  The syntax following the keyword
+is defined entirely by the extension.  If you are an implementor, see
+L<perlapi/PL_keyword_plugin> for the mechanism.  If you are using such
+a module, see the module's documentation for details of the syntax that
+it defines.
+
+=head2 Perl Functions by Category
+X<function>
+
+Here are Perl's functions (including things that look like
+functions, like some keywords and named operators)
+arranged by category.  Some functions appear in more
+than one place.
+
+=over 4
+
+=item Functions for SCALARs or strings
+X<scalar> X<string> X<character>
+
+C<chomp>, C<chop>, C<chr>, C<crypt>, C<hex>, C<index>, C<lc>, C<lcfirst>,
+C<length>, C<oct>, C<ord>, C<pack>, C<q//>, C<qq//>, C<reverse>,
+C<rindex>, C<sprintf>, C<substr>, C<tr///>, C<uc>, C<ucfirst>, C<y///>
+
+=item Regular expressions and pattern matching
+X<regular expression> X<regex> X<regexp>
+
+C<m//>, C<pos>, C<quotemeta>, C<s///>, C<split>, C<study>, C<qr//>
+
+=item Numeric functions
+X<numeric> X<number> X<trigonometric> X<trigonometry>
+
+C<abs>, C<atan2>, C<cos>, C<exp>, C<hex>, C<int>, C<log>, C<oct>, C<rand>,
+C<sin>, C<sqrt>, C<srand>
+
+=item Functions for real @ARRAYs
+X<array>
+
+C<each>, C<keys>, C<pop>, C<push>, C<shift>, C<splice>, C<unshift>, C<values>
+
+=item Functions for list data
+X<list>
+
+C<grep>, C<join>, C<map>, C<qw//>, C<reverse>, C<sort>, C<unpack>
+
+=item Functions for real %HASHes
+X<hash>
+
+C<delete>, C<each>, C<exists>, C<keys>, C<values>
+
+=item Input and output functions
+X<I/O> X<input> X<output> X<dbm>
+
+C<binmode>, C<close>, C<closedir>, C<dbmclose>, C<dbmopen>, C<die>, C<eof>,
+C<fileno>, C<flock>, C<format>, C<getc>, C<print>, C<printf>, C<read>,
+C<readdir>, C<rewinddir>, C<say>, C<seek>, C<seekdir>, C<select>, C<syscall>,
+C<sysread>, C<sysseek>, C<syswrite>, C<tell>, C<telldir>, C<truncate>,
+C<warn>, C<write>
+
+=item Functions for fixed-length data or records
+
+C<pack>, C<read>, C<syscall>, C<sysread>, C<syswrite>, C<unpack>, C<vec>
+
+=item Functions for filehandles, files, or directories
+X<file> X<filehandle> X<directory> X<pipe> X<link> X<symlink>
+
+C<-I<X>>, C<chdir>, C<chmod>, C<chown>, C<chroot>, C<fcntl>, C<glob>,
+C<ioctl>, C<link>, C<lstat>, C<mkdir>, C<open>, C<opendir>,
+C<readlink>, C<rename>, C<rmdir>, C<stat>, C<symlink>, C<sysopen>,
+C<umask>, C<unlink>, C<utime>
+
+=item Keywords related to the control flow of your Perl program
+X<control flow>
+
+C<caller>, C<continue>, C<die>, C<do>,
+C<dump>, C<eval>, C<evalbytes> C<exit>,
+C<__FILE__>, C<goto>, C<last>, C<__LINE__>, C<next>, C<__PACKAGE__>,
+C<redo>, C<return>, C<sub>, C<__SUB__>, C<wantarray>
+
+C<__SUB__> is only available with a C<use v5.16> (or higher) declaration or
+with the C<"current_sub"> feature (see L<feature>).
+
+=item Keywords related to the switch feature
+
+C<break>, C<continue>, C<default>, C<given>, C<when>
+
+Except for C<continue>, these are available only if you enable the
+C<"switch"> feature or use the C<CORE::> prefix.
+See L<feature> and L<perlsyn/"Switch statements">.  
+Alternately, include a C<use v5.10> or later to the current scope.  In Perl
+5.14 and earlier, C<continue> required the C<"switch"> feature, like the
+other keywords.
+
+=item Keywords related to scoping
+
+C<caller>, C<import>, C<local>, C<my>, C<our>, C<package>, C<state>, C<use>
+
+C<state> is available only if the C<"state"> feature
+is enabled or if it is prefixed with C<CORE::>. See
+L<feature>.  Alternately, include a C<use v5.10> or later to the current scope.
+
+=item Miscellaneous functions
+
+C<defined>, C<dump>, C<eval>, C<evalbytes>,
+C<formline>, C<local>, C<my>, C<our>,
+C<reset>, C<scalar>, C<state>, C<undef>, C<wantarray>
+
+=item Functions for processes and process groups
+X<process> X<pid> X<process id>
+
+C<alarm>, C<exec>, C<fork>, C<getpgrp>, C<getppid>, C<getpriority>, C<kill>,
+C<pipe>, C<qx//>, C<readpipe>, C<setpgrp>,
+C<setpriority>, C<sleep>, C<system>,
+C<times>, C<wait>, C<waitpid>
+
+=item Keywords related to Perl modules
+X<module>
+
+C<do>, C<import>, C<no>, C<package>, C<require>, C<use>
+
+=item Keywords related to classes and object-orientation
+X<object> X<class> X<package>
+
+C<bless>, C<dbmclose>, C<dbmopen>, C<package>, C<ref>, C<tie>, C<tied>,
+C<untie>, C<use>
+
+=item Low-level socket functions
+X<socket> X<sock>
+
+C<accept>, C<bind>, C<connect>, C<getpeername>, C<getsockname>,
+C<getsockopt>, C<listen>, C<recv>, C<send>, C<setsockopt>, C<shutdown>,
+C<socket>, C<socketpair>
+
+=item System V interprocess communication functions
+X<IPC> X<System V> X<semaphore> X<shared memory> X<memory> X<message>
+
+C<msgctl>, C<msgget>, C<msgrcv>, C<msgsnd>, C<semctl>, C<semget>, C<semop>,
+C<shmctl>, C<shmget>, C<shmread>, C<shmwrite>
+
+=item Fetching user and group info
+X<user> X<group> X<password> X<uid> X<gid>  X<passwd> X</etc/passwd>
+
+C<endgrent>, C<endhostent>, C<endnetent>, C<endpwent>, C<getgrent>,
+C<getgrgid>, C<getgrnam>, C<getlogin>, C<getpwent>, C<getpwnam>,
+C<getpwuid>, C<setgrent>, C<setpwent>
+
+=item Fetching network info
+X<network> X<protocol> X<host> X<hostname> X<IP> X<address> X<service>
+
+C<endprotoent>, C<endservent>, C<gethostbyaddr>, C<gethostbyname>,
+C<gethostent>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
+C<getprotobyname>, C<getprotobynumber>, C<getprotoent>,
+C<getservbyname>, C<getservbyport>, C<getservent>, C<sethostent>,
+C<setnetent>, C<setprotoent>, C<setservent>
+
+=item Time-related functions
+X<time> X<date>
+
+C<gmtime>, C<localtime>, C<time>, C<times>
+
+=item Functions new in perl5
+X<perl5>
+
+C<abs>, C<bless>, C<break>, C<chomp>, C<chr>, C<continue>, C<default>, 
+C<exists>, C<formline>, C<given>, C<glob>, C<import>, C<lc>, C<lcfirst>,
+C<lock>, C<map>, C<my>, C<no>, C<our>, C<prototype>, C<qr//>, C<qw//>, C<qx//>,
+C<readline>, C<readpipe>, C<ref>, C<sub>*, C<sysopen>, C<tie>, C<tied>, C<uc>,
+C<ucfirst>, C<untie>, C<use>, C<when>
+
+* C<sub> was a keyword in Perl 4, but in Perl 5 it is an
+operator, which can be used in expressions.
+
+=item Functions obsoleted in perl5
+
+C<dbmclose>, C<dbmopen>
+
+=back
+
+=head2 Portability
+X<portability> X<Unix> X<portable>
+
+Perl was born in Unix and can therefore access all common Unix
+system calls.  In non-Unix environments, the functionality of some
+Unix system calls may not be available or details of the available
+functionality may differ slightly.  The Perl functions affected
+by this are:
+
+C<-X>, C<binmode>, C<chmod>, C<chown>, C<chroot>, C<crypt>,
+C<dbmclose>, C<dbmopen>, C<dump>, C<endgrent>, C<endhostent>,
+C<endnetent>, C<endprotoent>, C<endpwent>, C<endservent>, C<exec>,
+C<fcntl>, C<flock>, C<fork>, C<getgrent>, C<getgrgid>, C<gethostbyname>,
+C<gethostent>, C<getlogin>, C<getnetbyaddr>, C<getnetbyname>, C<getnetent>,
+C<getppid>, C<getpgrp>, C<getpriority>, C<getprotobynumber>,
+C<getprotoent>, C<getpwent>, C<getpwnam>, C<getpwuid>,
+C<getservbyport>, C<getservent>, C<getsockopt>, C<glob>, C<ioctl>,
+C<kill>, C<link>, C<lstat>, C<msgctl>, C<msgget>, C<msgrcv>,
+C<msgsnd>, C<open>, C<pipe>, C<readlink>, C<rename>, C<select>, C<semctl>,
+C<semget>, C<semop>, C<setgrent>, C<sethostent>, C<setnetent>,
+C<setpgrp>, C<setpriority>, C<setprotoent>, C<setpwent>,
+C<setservent>, C<setsockopt>, C<shmctl>, C<shmget>, C<shmread>,
+C<shmwrite>, C<socket>, C<socketpair>,
+C<stat>, C<symlink>, C<syscall>, C<sysopen>, C<system>,
+C<times>, C<truncate>, C<umask>, C<unlink>,
+C<utime>, C<wait>, C<waitpid>
+
+For more information about the portability of these functions, see
+L<perlport> and other available platform-specific documentation.
+
+=head2 Alphabetical Listing of Perl Functions
+
+=over 
+
+=item -X FILEHANDLE
+X<-r>X<-w>X<-x>X<-o>X<-R>X<-W>X<-X>X<-O>X<-e>X<-z>X<-s>X<-f>X<-d>X<-l>X<-p>
+X<-S>X<-b>X<-c>X<-t>X<-u>X<-g>X<-k>X<-T>X<-B>X<-M>X<-A>X<-C>
+
+=item -X EXPR
+
+=item -X DIRHANDLE
+
+=item -X
+
+A file test, where X is one of the letters listed below.  This unary
+operator takes one argument, either a filename, a filehandle, or a dirhandle, 
+and tests the associated file to see if something is true about it.  If the
+argument is omitted, tests C<$_>, except for C<-t>, which tests STDIN.
+Unless otherwise documented, it returns C<1> for true and C<''> for false, or
+the undefined value if the file doesn't exist.  Despite the funny
+names, precedence is the same as any other named unary operator.  The
+operator may be any of:
+
+    -r  File is readable by effective uid/gid.
+    -w  File is writable by effective uid/gid.
+    -x  File is executable by effective uid/gid.
+    -o  File is owned by effective uid.
+
+    -R  File is readable by real uid/gid.
+    -W  File is writable by real uid/gid.
+    -X  File is executable by real uid/gid.
+    -O  File is owned by real uid.
+
+    -e  File exists.
+    -z  File has zero size (is empty).
+    -s  File has nonzero size (returns size in bytes).
+
+    -f  File is a plain file.
+    -d  File is a directory.
+    -l  File is a symbolic link.
+    -p  File is a named pipe (FIFO), or Filehandle is a pipe.
+    -S  File is a socket.
+    -b  File is a block special file.
+    -c  File is a character special file.
+    -t  Filehandle is opened to a tty.
+
+    -u  File has setuid bit set.
+    -g  File has setgid bit set.
+    -k  File has sticky bit set.
+
+    -T  File is an ASCII text file (heuristic guess).
+    -B  File is a "binary" file (opposite of -T).
+
+    -M  Script start time minus file modification time, in days.
+    -A  Same for access time.
+    -C  Same for inode change time (Unix, may differ for other platforms)
+
+Example:
+
+    while (<>) {
+        chomp;
+        next unless -f $_;  # ignore specials
+        #...
+    }
+
+Note that C<-s/a/b/> does not do a negated substitution.  Saying
+C<-exp($foo)> still works as expected, however: only single letters
+following a minus are interpreted as file tests.
+
+These operators are exempt from the "looks like a function rule" described
+above.  That is, an opening parenthesis after the operator does not affect
+how much of the following code constitutes the argument.  Put the opening
+parentheses before the operator to separate it from code that follows (this
+applies only to operators with higher precedence than unary operators, of
+course):
+
+    -s($file) + 1024   # probably wrong; same as -s($file + 1024)
+    (-s $file) + 1024  # correct
+
+The interpretation of the file permission operators C<-r>, C<-R>,
+C<-w>, C<-W>, C<-x>, and C<-X> is by default based solely on the mode
+of the file and the uids and gids of the user.  There may be other
+reasons you can't actually read, write, or execute the file: for
+example network filesystem access controls, ACLs (access control lists),
+read-only filesystems, and unrecognized executable formats.  Note
+that the use of these six specific operators to verify if some operation
+is possible is usually a mistake, because it may be open to race
+conditions.
+
+Also note that, for the superuser on the local filesystems, the C<-r>,
+C<-R>, C<-w>, and C<-W> tests always return 1, and C<-x> and C<-X> return 1
+if any execute bit is set in the mode.  Scripts run by the superuser
+may thus need to do a stat() to determine the actual mode of the file,
+or temporarily set their effective uid to something else.
+
+If you are using ACLs, there is a pragma called C<filetest> that may
+produce more accurate results than the bare stat() mode bits.
+When under C<use filetest 'access'> the above-mentioned filetests
+test whether the permission can(not) be granted using the
+access(2) family of system calls.  Also note that the C<-x> and C<-X> may
+under this pragma return true even if there are no execute permission
+bits set (nor any extra execute permission ACLs).  This strangeness is
+due to the underlying system calls' definitions. Note also that, due to
+the implementation of C<use filetest 'access'>, the C<_> special
+filehandle won't cache the results of the file tests when this pragma is
+in effect.  Read the documentation for the C<filetest> pragma for more
+information.
+
+The C<-T> and C<-B> switches work as follows.  The first block or so of the
+file is examined for odd characters such as strange control codes or
+characters with the high bit set.  If too many strange characters (>30%)
+are found, it's a C<-B> file; otherwise it's a C<-T> file.  Also, any file
+containing a zero byte in the first block is considered a binary file.  If C<-T>
+or C<-B> is used on a filehandle, the current IO buffer is examined
+rather than the first block.  Both C<-T> and C<-B> return true on an empty
+file, or a file at EOF when testing a filehandle.  Because you have to
+read a file to do the C<-T> test, on most occasions you want to use a C<-f>
+against the file first, as in C<next unless -f $file && -T $file>.
+
+If any of the file tests (or either the C<stat> or C<lstat> operator) is given
+the special filehandle consisting of a solitary underline, then the stat
+structure of the previous file test (or stat operator) is used, saving
+a system call.  (This doesn't work with C<-t>, and you need to remember
+that lstat() and C<-l> leave values in the stat structure for the
+symbolic link, not the real file.)  (Also, if the stat buffer was filled by
+an C<lstat> call, C<-T> and C<-B> will reset it with the results of C<stat _>).
+Example:
+
+    print "Can do.\n" if -r $a || -w _ || -x _;
+
+    stat($filename);
+    print "Readable\n" if -r _;
+    print "Writable\n" if -w _;
+    print "Executable\n" if -x _;
+    print "Setuid\n" if -u _;
+    print "Setgid\n" if -g _;
+    print "Sticky\n" if -k _;
+    print "Text\n" if -T _;
+    print "Binary\n" if -B _;
+
+As of Perl 5.9.1, as a form of purely syntactic sugar, you can stack file
+test operators, in a way that C<-f -w -x $file> is equivalent to
+C<-x $file && -w _ && -f _>. (This is only fancy fancy: if you use
+the return value of C<-f $file> as an argument to another filetest
+operator, no special magic will happen.)
+
+Portability issues: L<perlport/-X>.
+
+=item abs VALUE
+X<abs> X<absolute>
+
+=item abs
+
+Returns the absolute value of its argument.
+If VALUE is omitted, uses C<$_>.
+
+=item accept NEWSOCKET,GENERICSOCKET
+X<accept>
+
+Accepts an incoming socket connect, just as accept(2) 
+does.  Returns the packed address if it succeeded, false otherwise.
+See the example in L<perlipc/"Sockets: Client/Server Communication">.
+
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See L<perlvar/$^F>.
+
+=item alarm SECONDS
+X<alarm>
+X<SIGALRM>
+X<timer>
+
+=item alarm
+
+Arranges to have a SIGALRM delivered to this process after the
+specified number of wallclock seconds has elapsed.  If SECONDS is not
+specified, the value stored in C<$_> is used. (On some machines,
+unfortunately, the elapsed time may be up to one second less or more
+than you specified because of how seconds are counted, and process
+scheduling may delay the delivery of the signal even further.)
+
+Only one timer may be counting at once.  Each call disables the
+previous timer, and an argument of C<0> may be supplied to cancel the
+previous timer without starting a new one.  The returned value is the
+amount of time remaining on the previous timer.
+
+For delays of finer granularity than one second, the Time::HiRes module
+(from CPAN, and starting from Perl 5.8 part of the standard
+distribution) provides ualarm().  You may also use Perl's four-argument
+version of select() leaving the first three arguments undefined, or you
+might be able to use the C<syscall> interface to access setitimer(2) if
+your system supports it. See L<perlfaq8> for details.
+
+It is usually a mistake to intermix C<alarm> and C<sleep> calls, because
+C<sleep> may be internally implemented on your system with C<alarm>.
+
+If you want to use C<alarm> to time out a system call you need to use an
+C<eval>/C<die> pair.  You can't rely on the alarm causing the system call to
+fail with C<$!> set to C<EINTR> because Perl sets up signal handlers to
+restart system calls on some systems.  Using C<eval>/C<die> always works,
+modulo the caveats given in L<perlipc/"Signals">.
+
+    eval {
+        local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
+        alarm $timeout;
+        $nread = sysread SOCKET, $buffer, $size;
+        alarm 0;
+    };
+    if ($@) {
+        die unless $@ eq "alarm\n";   # propagate unexpected errors
+        # timed out
+    }
+    else {
+        # didn't
+    }
+
+For more information see L<perlipc>.
+
+Portability issues: L<perlport/alarm>.
+
+=item atan2 Y,X
+X<atan2> X<arctangent> X<tan> X<tangent>
+
+Returns the arctangent of Y/X in the range -PI to PI.
+
+For the tangent operation, you may use the C<Math::Trig::tan>
+function, or use the familiar relation:
+
+    sub tan { sin($_[0]) / cos($_[0])  }
+
+The return value for C<atan2(0,0)> is implementation-defined; consult
+your atan2(3) manpage for more information.
+
+Portability issues: L<perlport/atan2>.
+
+=item bind SOCKET,NAME
+X<bind>
+
+Binds a network address to a socket, just as bind(2)
+does.  Returns true if it succeeded, false otherwise.  NAME should be a
+packed address of the appropriate type for the socket.  See the examples in
+L<perlipc/"Sockets: Client/Server Communication">.
+
+=item binmode FILEHANDLE, LAYER
+X<binmode> X<binary> X<text> X<DOS> X<Windows>
+
+=item binmode FILEHANDLE
+
+Arranges for FILEHANDLE to be read or written in "binary" or "text"
+mode on systems where the run-time libraries distinguish between
+binary and text files.  If FILEHANDLE is an expression, the value is
+taken as the name of the filehandle.  Returns true on success,
+otherwise it returns C<undef> and sets C<$!> (errno).
+
+On some systems (in general, DOS- and Windows-based systems) binmode()
+is necessary when you're not working with a text file.  For the sake
+of portability it is a good idea always to use it when appropriate,
+and never to use it when it isn't appropriate.  Also, people can
+set their I/O to be by default UTF8-encoded Unicode, not bytes.
+
+In other words: regardless of platform, use binmode() on binary data,
+like images, for example.
+
+If LAYER is present it is a single string, but may contain multiple
+directives. The directives alter the behaviour of the filehandle.
+When LAYER is present, using binmode on a text file makes sense.
+
+If LAYER is omitted or specified as C<:raw> the filehandle is made
+suitable for passing binary data. This includes turning off possible CRLF
+translation and marking it as bytes (as opposed to Unicode characters).
+Note that, despite what may be implied in I<"Programming Perl"> (the
+Camel, 3rd edition) or elsewhere, C<:raw> is I<not> simply the inverse of C<:crlf>.
+Other layers that would affect the binary nature of the stream are
+I<also> disabled. See L<PerlIO>, L<perlrun>, and the discussion about the
+PERLIO environment variable.
+
+The C<:bytes>, C<:crlf>, C<:utf8>, and any other directives of the
+form C<:...>, are called I/O I<layers>.  The C<open> pragma can be used to
+establish default I/O layers.  See L<open>.
+
+I<The LAYER parameter of the binmode() function is described as "DISCIPLINE"
+in "Programming Perl, 3rd Edition".  However, since the publishing of this
+book, by many known as "Camel III", the consensus of the naming of this
+functionality has moved from "discipline" to "layer".  All documentation
+of this version of Perl therefore refers to "layers" rather than to
+"disciplines".  Now back to the regularly scheduled documentation...>
+
+To mark FILEHANDLE as UTF-8, use C<:utf8> or C<:encoding(UTF-8)>.
+C<:utf8> just marks the data as UTF-8 without further checking,
+while C<:encoding(UTF-8)> checks the data for actually being valid
+UTF-8. More details can be found in L<PerlIO::encoding>.
+
+In general, binmode() should be called after open() but before any I/O
+is done on the filehandle.  Calling binmode() normally flushes any
+pending buffered output data (and perhaps pending input data) on the
+handle.  An exception to this is the C<:encoding> layer that
+changes the default character encoding of the handle; see L</open>.
+The C<:encoding> layer sometimes needs to be called in
+mid-stream, and it doesn't flush the stream.  The C<:encoding>
+also implicitly pushes on top of itself the C<:utf8> layer because
+internally Perl operates on UTF8-encoded Unicode characters.
+
+The operating system, device drivers, C libraries, and Perl run-time
+system all conspire to let the programmer treat a single
+character (C<\n>) as the line terminator, irrespective of external
+representation.  On many operating systems, the native text file
+representation matches the internal representation, but on some
+platforms the external representation of C<\n> is made up of more than
+one character.
+
+All variants of Unix, Mac OS (old and new), and Stream_LF files on VMS use
+a single character to end each line in the external representation of text
+(even though that single character is CARRIAGE RETURN on old, pre-Darwin
+flavors of Mac OS, and is LINE FEED on Unix and most VMS files). In other
+systems like OS/2, DOS, and the various flavors of MS-Windows, your program
+sees a C<\n> as a simple C<\cJ>, but what's stored in text files are the
+two characters C<\cM\cJ>.  That means that if you don't use binmode() on
+these systems, C<\cM\cJ> sequences on disk will be converted to C<\n> on
+input, and any C<\n> in your program will be converted back to C<\cM\cJ> on
+output.  This is what you want for text files, but it can be disastrous for
+binary files.
+
+Another consequence of using binmode() (on some systems) is that
+special end-of-file markers will be seen as part of the data stream.
+For systems from the Microsoft family this means that, if your binary
+data contain C<\cZ>, the I/O subsystem will regard it as the end of
+the file, unless you use binmode().
+
+binmode() is important not only for readline() and print() operations,
+but also when using read(), seek(), sysread(), syswrite() and tell()
+(see L<perlport> for more details).  See the C<$/> and C<$\> variables
+in L<perlvar> for how to manually set your input and output
+line-termination sequences.
+
+Portability issues: L<perlport/binmode>.
+
+=item bless REF,CLASSNAME
+X<bless>
+
+=item bless REF
+
+This function tells the thingy referenced by REF that it is now an object
+in the CLASSNAME package.  If CLASSNAME is omitted, the current package
+is used.  Because a C<bless> is often the last thing in a constructor,
+it returns the reference for convenience.  Always use the two-argument
+version if a derived class might inherit the function doing the blessing.
+SeeL<perlobj> for more about the blessing (and blessings) of objects.
+
+Consider always blessing objects in CLASSNAMEs that are mixed case.
+Namespaces with all lowercase names are considered reserved for
+Perl pragmata.  Builtin types have all uppercase names. To prevent
+confusion, you may wish to avoid such package names as well.  Make sure
+that CLASSNAME is a true value.
+
+See L<perlmod/"Perl Modules">.
+
+=item break
+
+Break out of a C<given()> block.
+
+This keyword is enabled by the C<"switch"> feature: see
+L<feature> for more information.  You can also access it by
+prefixing it with C<CORE::>.  Alternately, include a C<use
+v5.10> or later to the current scope.
+
+=item caller EXPR
+X<caller> X<call stack> X<stack> X<stack trace>
+
+=item caller
+
+Returns the context of the current subroutine call.  In scalar context,
+returns the caller's package name if there I<is> a caller (that is, if
+we're in a subroutine or C<eval> or C<require>) and the undefined value
+otherwise.  In list context, returns
+
+    # 0         1          2
+    ($package, $filename, $line) = caller;
+
+With EXPR, it returns some extra information that the debugger uses to
+print a stack trace.  The value of EXPR indicates how many call frames
+to go back before the current one.
+
+    #  0         1          2      3            4
+    ($package, $filename, $line, $subroutine, $hasargs,
+
+    #  5          6          7            8       9         10
+    $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
+     = caller($i);
+
+Here $subroutine may be C<(eval)> if the frame is not a subroutine
+call, but an C<eval>.  In such a case additional elements $evaltext and
+C<$is_require> are set: C<$is_require> is true if the frame is created by a
+C<require> or C<use> statement, $evaltext contains the text of the
+C<eval EXPR> statement.  In particular, for an C<eval BLOCK> statement,
+$subroutine is C<(eval)>, but $evaltext is undefined.  (Note also that
+each C<use> statement creates a C<require> frame inside an C<eval EXPR>
+frame.)  $subroutine may also be C<(unknown)> if this particular
+subroutine happens to have been deleted from the symbol table.
+C<$hasargs> is true if a new instance of C<@_> was set up for the frame.
+C<$hints> and C<$bitmask> contain pragmatic hints that the caller was
+compiled with.  The C<$hints> and C<$bitmask> values are subject to change
+between versions of Perl, and are not meant for external use.
+
+C<$hinthash> is a reference to a hash containing the value of C<%^H> when the
+caller was compiled, or C<undef> if C<%^H> was empty. Do not modify the values
+of this hash, as they are the actual values stored in the optree.
+
+Furthermore, when called from within the DB package, caller returns more
+detailed information: it sets the list variable C<@DB::args> to be the
+arguments with which the subroutine was invoked.
+
+Be aware that the optimizer might have optimized call frames away before
+C<caller> had a chance to get the information.  That means that C<caller(N)>
+might not return information about the call frame you expect it to, for
+C<< N > 1 >>.  In particular, C<@DB::args> might have information from the
+previous time C<caller> was called.
+
+Be aware that setting C<@DB::args> is I<best effort>, intended for
+debugging or generating backtraces, and should not be relied upon. In
+particular, as C<@_> contains aliases to the caller's arguments, Perl does
+not take a copy of C<@_>, so C<@DB::args> will contain modifications the
+subroutine makes to C<@_> or its contents, not the original values at call
+time. C<@DB::args>, like C<@_>, does not hold explicit references to its
+elements, so under certain cases its elements may have become freed and
+reallocated for other variables or temporary values. Finally, a side effect
+of the current implementation is that the effects of C<shift @_> can
+I<normally> be undone (but not C<pop @_> or other splicing, I<and> not if a
+reference to C<@_> has been taken, I<and> subject to the caveat about reallocated
+elements), so C<@DB::args> is actually a hybrid of the current state and
+initial state of C<@_>. Buyer beware.
+
+=item chdir EXPR
+X<chdir>
+X<cd>
+X<directory, change>
+
+=item chdir FILEHANDLE
+
+=item chdir DIRHANDLE
+
+=item chdir
+
+Changes the working directory to EXPR, if possible. If EXPR is omitted,
+changes to the directory specified by C<$ENV{HOME}>, if set; if not,
+changes to the directory specified by C<$ENV{LOGDIR}>. (Under VMS, the
+variable C<$ENV{SYS$LOGIN}> is also checked, and used if it is set.) If
+neither is set, C<chdir> does nothing. It returns true on success,
+false otherwise. See the example under C<die>.
+
+On systems that support fchdir(2), you may pass a filehandle or
+directory handle as the argument.  On systems that don't support fchdir(2),
+passing handles raises an exception.
+
+=item chmod LIST
+X<chmod> X<permission> X<mode>
+
+Changes the permissions of a list of files.  The first element of the
+list must be the numeric mode, which should probably be an octal
+number, and which definitely should I<not> be a string of octal digits:
+C<0644> is okay, but C<"0644"> is not.  Returns the number of files
+successfully changed.  See also L</oct> if all you have is a string.
+
+    $cnt = chmod 0755, "foo", "bar";
+    chmod 0755, @executables;
+    $mode = "0644"; chmod $mode, "foo";      # !!! sets mode to
+                                             # --w----r-T
+    $mode = "0644"; chmod oct($mode), "foo"; # this is better
+    $mode = 0644;   chmod $mode, "foo";      # this is best
+
+On systems that support fchmod(2), you may pass filehandles among the
+files.  On systems that don't support fchmod(2), passing filehandles raises
+an exception.  Filehandles must be passed as globs or glob references to be
+recognized; barewords are considered filenames.
+
+    open(my $fh, "<", "foo");
+    my $perm = (stat $fh)[2] & 07777;
+    chmod($perm | 0600, $fh);
+
+You can also import the symbolic C<S_I*> constants from the C<Fcntl>
+module:
+
+    use Fcntl qw( :mode );
+    chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
+    # Identical to the chmod 0755 of the example above.
+
+Portability issues: L<perlport/chmod>.
+
+=item chomp VARIABLE
+X<chomp> X<INPUT_RECORD_SEPARATOR> X<$/> X<newline> X<eol>
+
+=item chomp( LIST )
+
+=item chomp
+
+This safer version of L</chop> removes any trailing string
+that corresponds to the current value of C<$/> (also known as
+$INPUT_RECORD_SEPARATOR in the C<English> module).  It returns the total
+number of characters removed from all its arguments.  It's often used to
+remove the newline from the end of an input record when you're worried
+that the final record may be missing its newline.  When in paragraph
+mode (C<$/ = "">), it removes all trailing newlines from the string.
+When in slurp mode (C<$/ = undef>) or fixed-length record mode (C<$/> is
+a reference to an integer or the like; see L<perlvar>) chomp() won't
+remove anything.
+If VARIABLE is omitted, it chomps C<$_>.  Example:
+
+    while (<>) {
+        chomp;  # avoid \n on last field
+        @array = split(/:/);
+        # ...
+    }
+
+If VARIABLE is a hash, it chomps the hash's values, but not its keys.
+
+You can actually chomp anything that's an lvalue, including an assignment:
+
+    chomp($cwd = `pwd`);
+    chomp($answer = <STDIN>);
+
+If you chomp a list, each element is chomped, and the total number of
+characters removed is returned.
+
+Note that parentheses are necessary when you're chomping anything
+that is not a simple variable.  This is because C<chomp $cwd = `pwd`;>
+is interpreted as C<(chomp $cwd) = `pwd`;>, rather than as
+C<chomp( $cwd = `pwd` )> which you might expect.  Similarly,
+C<chomp $a, $b> is interpreted as C<chomp($a), $b> rather than
+as C<chomp($a, $b)>.
+
+=item chop VARIABLE
+X<chop>
+
+=item chop( LIST )
+
+=item chop
+
+Chops off the last character of a string and returns the character
+chopped.  It is much more efficient than C<s/.$//s> because it neither
+scans nor copies the string.  If VARIABLE is omitted, chops C<$_>.
+If VARIABLE is a hash, it chops the hash's values, but not its keys.
+
+You can actually chop anything that's an lvalue, including an assignment.
+
+If you chop a list, each element is chopped.  Only the value of the
+last C<chop> is returned.
+
+Note that C<chop> returns the last character.  To return all but the last
+character, use C<substr($string, 0, -1)>.
+
+See also L</chomp>.
+
+=item chown LIST
+X<chown> X<owner> X<user> X<group>
+
+Changes the owner (and group) of a list of files.  The first two
+elements of the list must be the I<numeric> uid and gid, in that
+order.  A value of -1 in either position is interpreted by most
+systems to leave that value unchanged.  Returns the number of files
+successfully changed.
+
+    $cnt = chown $uid, $gid, 'foo', 'bar';
+    chown $uid, $gid, @filenames;
+
+On systems that support fchown(2), you may pass filehandles among the
+files.  On systems that don't support fchown(2), passing filehandles raises
+an exception.  Filehandles must be passed as globs or glob references to be
+recognized; barewords are considered filenames.
+
+Here's an example that looks up nonnumeric uids in the passwd file:
+
+    print "User: ";
+    chomp($user = <STDIN>);
+    print "Files: ";
+    chomp($pattern = <STDIN>);
+
+    ($login,$pass,$uid,$gid) = getpwnam($user)
+        or die "$user not in passwd file";
+
+    @ary = glob($pattern);  # expand filenames
+    chown $uid, $gid, @ary;
+
+On most systems, you are not allowed to change the ownership of the
+file unless you're the superuser, although you should be able to change
+the group to any of your secondary groups.  On insecure systems, these
+restrictions may be relaxed, but this is not a portable assumption.
+On POSIX systems, you can detect this condition this way:
+
+    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
+    $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
+
+Portability issues: L<perlport/chmod>.
+
+=item chr NUMBER
+X<chr> X<character> X<ASCII> X<Unicode>
+
+=item chr
+
+Returns the character represented by that NUMBER in the character set.
+For example, C<chr(65)> is C<"A"> in either ASCII or Unicode, and
+chr(0x263a) is a Unicode smiley face.  
+
+Negative values give the Unicode replacement character (chr(0xfffd)),
+except under the L<bytes> pragma, where the low eight bits of the value
+(truncated to an integer) are used.
+
+If NUMBER is omitted, uses C<$_>.
+
+For the reverse, use L</ord>.
+
+Note that characters from 128 to 255 (inclusive) are by default
+internally not encoded as UTF-8 for backward compatibility reasons.
+
+See L<perlunicode> for more about Unicode.
+
+=item chroot FILENAME
+X<chroot> X<root>
+
+=item chroot
+
+This function works like the system call by the same name: it makes the
+named directory the new root directory for all further pathnames that
+begin with a C</> by your process and all its children.  (It doesn't
+change your current working directory, which is unaffected.)  For security
+reasons, this call is restricted to the superuser.  If FILENAME is
+omitted, does a C<chroot> to C<$_>.
+
+Portability issues: L<perlport/chroot>.
+
+=item close FILEHANDLE
+X<close>
+
+=item close
+
+Closes the file or pipe associated with the filehandle, flushes the IO
+buffers, and closes the system file descriptor.  Returns true if those
+operations succeed and if no error was reported by any PerlIO
+layer.  Closes the currently selected filehandle if the argument is
+omitted.
+
+You don't have to close FILEHANDLE if you are immediately going to do
+another C<open> on it, because C<open> closes it for you.  (See
+L<open|/open FILEHANDLE>.)  However, an explicit C<close> on an input file resets the line
+counter (C<$.>), while the implicit close done by C<open> does not.
+
+If the filehandle came from a piped open, C<close> returns false if one of
+the other syscalls involved fails or if its program exits with non-zero
+status.  If the only problem was that the program exited non-zero, C<$!>
+will be set to C<0>.  Closing a pipe also waits for the process executing
+on the pipe to exit--in case you wish to look at the output of the pipe
+afterwards--and implicitly puts the exit status value of that command into
+C<$?> and C<${^CHILD_ERROR_NATIVE}>.
+
+If there are multiple threads running, C<close> on a filehandle from a
+piped open returns true without waiting for the child process to terminate,
+if the filehandle is still open in another thread.
+
+Closing the read end of a pipe before the process writing to it at the
+other end is done writing results in the writer receiving a SIGPIPE.  If
+the other end can't handle that, be sure to read all the data before
+closing the pipe.
+
+Example:
+
+    open(OUTPUT, '|sort >foo')  # pipe to sort
+        or die "Can't start sort: $!";
+    #...                        # print stuff to output
+    close OUTPUT                # wait for sort to finish
+        or warn $! ? "Error closing sort pipe: $!"
+                   : "Exit status $? from sort";
+    open(INPUT, 'foo')          # get sort's results
+        or die "Can't open 'foo' for input: $!";
+
+FILEHANDLE may be an expression whose value can be used as an indirect
+filehandle, usually the real filehandle name or an autovivified handle.
+
+=item closedir DIRHANDLE
+X<closedir>
+
+Closes a directory opened by C<opendir> and returns the success of that
+system call.
+
+=item connect SOCKET,NAME
+X<connect>
+
+Attempts to connect to a remote socket, just like connect(2).
+Returns true if it succeeded, false otherwise.  NAME should be a
+packed address of the appropriate type for the socket.  See the examples in
+L<perlipc/"Sockets: Client/Server Communication">.
+
+=item continue BLOCK
+X<continue>
+
+=item continue
+
+When followed by a BLOCK, C<continue> is actually a
+flow control statement rather than a function.  If
+there is a C<continue> BLOCK attached to a BLOCK (typically in a C<while> or
+C<foreach>), it is always executed just before the conditional is about to
+be evaluated again, just like the third part of a C<for> loop in C.  Thus
+it can be used to increment a loop variable, even when the loop has been
+continued via the C<next> statement (which is similar to the C C<continue>
+statement).
+
+C<last>, C<next>, or C<redo> may appear within a C<continue>
+block; C<last> and C<redo> behave as if they had been executed within
+the main block.  So will C<next>, but since it will execute a C<continue>
+block, it may be more entertaining.
+
+    while (EXPR) {
+        ### redo always comes here
+        do_something;
+    } continue {
+        ### next always comes here
+        do_something_else;
+        # then back the top to re-check EXPR
+    }
+    ### last always comes here
+
+Omitting the C<continue> section is equivalent to using an
+empty one, logically enough, so C<next> goes directly back
+to check the condition at the top of the loop.
+
+When there is no BLOCK, C<continue> is a function that
+falls through the current C<when> or C<default> block instead of iterating
+a dynamically enclosing C<foreach> or exiting a lexically enclosing C<given>.
+In Perl 5.14 and earlier, this form of C<continue> was
+only available when the C<"switch"> feature was enabled.
+See L<feature> and L<perlsyn/"Switch statements"> for more
+information.
+
+=item cos EXPR
+X<cos> X<cosine> X<acos> X<arccosine>
+
+=item cos
+
+Returns the cosine of EXPR (expressed in radians).  If EXPR is omitted,
+takes the cosine of C<$_>.
+
+For the inverse cosine operation, you may use the C<Math::Trig::acos()>
+function, or use this relation:
+
+    sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
+
+=item crypt PLAINTEXT,SALT
+X<crypt> X<digest> X<hash> X<salt> X<plaintext> X<password>
+X<decrypt> X<cryptography> X<passwd> X<encrypt>
+
+Creates a digest string exactly like the crypt(3) function in the C
+library (assuming that you actually have a version there that has not
+been extirpated as a potential munition).
+
+crypt() is a one-way hash function.  The PLAINTEXT and SALT are turned
+into a short string, called a digest, which is returned.  The same
+PLAINTEXT and SALT will always return the same string, but there is no
+(known) way to get the original PLAINTEXT from the hash.  Small
+changes in the PLAINTEXT or SALT will result in large changes in the
+digest.
+
+There is no decrypt function.  This function isn't all that useful for
+cryptography (for that, look for F<Crypt> modules on your nearby CPAN
+mirror) and the name "crypt" is a bit of a misnomer.  Instead it is
+primarily used to check if two pieces of text are the same without
+having to transmit or store the text itself.  An example is checking
+if a correct password is given.  The digest of the password is stored,
+not the password itself.  The user types in a password that is
+crypt()'d with the same salt as the stored digest.  If the two digests
+match, the password is correct.
+
+When verifying an existing digest string you should use the digest as
+the salt (like C<crypt($plain, $digest) eq $digest>).  The SALT used
+to create the digest is visible as part of the digest.  This ensures
+crypt() will hash the new string with the same salt as the digest.
+This allows your code to work with the standard L<crypt|/crypt> and
+with more exotic implementations.  In other words, assume
+nothing about the returned string itself nor about how many bytes 
+of SALT may matter.
+
+Traditionally the result is a string of 13 bytes: two first bytes of
+the salt, followed by 11 bytes from the set C<[./0-9A-Za-z]>, and only
+the first eight bytes of PLAINTEXT mattered. But alternative
+hashing schemes (like MD5), higher level security schemes (like C2),
+and implementations on non-Unix platforms may produce different
+strings.
+
+When choosing a new salt create a random two character string whose
+characters come from the set C<[./0-9A-Za-z]> (like C<join '', ('.',
+'/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]>).  This set of
+characters is just a recommendation; the characters allowed in
+the salt depend solely on your system's crypt library, and Perl can't
+restrict what salts C<crypt()> accepts.
+
+Here's an example that makes sure that whoever runs this program knows
+their password:
+
+    $pwd = (getpwuid($<))[1];
+
+    system "stty -echo";
+    print "Password: ";
+    chomp($word = <STDIN>);
+    print "\n";
+    system "stty echo";
+
+    if (crypt($word, $pwd) ne $pwd) {
+        die "Sorry...\n";
+    } else {
+        print "ok\n";
+    }
+
+Of course, typing in your own password to whoever asks you
+for it is unwise.
+
+The L<crypt|/crypt> function is unsuitable for hashing large quantities
+of data, not least of all because you can't get the information
+back.  Look at the L<Digest> module for more robust algorithms.
+
+If using crypt() on a Unicode string (which I<potentially> has
+characters with codepoints above 255), Perl tries to make sense
+of the situation by trying to downgrade (a copy of)
+the string back to an eight-bit byte string before calling crypt()
+(on that copy).  If that works, good.  If not, crypt() dies with
+C<Wide character in crypt>.
+
+Portability issues: L<perlport/crypt>.
+
+=item dbmclose HASH
+X<dbmclose>
+
+[This function has been largely superseded by the C<untie> function.]
+
+Breaks the binding between a DBM file and a hash.
+
+Portability issues: L<perlport/dbmclose>.
+
+=item dbmopen HASH,DBNAME,MASK
+X<dbmopen> X<dbm> X<ndbm> X<sdbm> X<gdbm>
+
+[This function has been largely superseded by the
+L<tie|/tie VARIABLE,CLASSNAME,LIST> function.]
+
+This binds a dbm(3), ndbm(3), sdbm(3), gdbm(3), or Berkeley DB file to a
+hash.  HASH is the name of the hash.  (Unlike normal C<open>, the first
+argument is I<not> a filehandle, even though it looks like one).  DBNAME
+is the name of the database (without the F<.dir> or F<.pag> extension if
+any).  If the database does not exist, it is created with protection
+specified by MASK (as modified by the C<umask>).  If your system supports
+only the older DBM functions, you may make only one C<dbmopen> call in your
+program.  In older versions of Perl, if your system had neither DBM nor
+ndbm, calling C<dbmopen> produced a fatal error; it now falls back to
+sdbm(3).
+
+If you don't have write access to the DBM file, you can only read hash
+variables, not set them.  If you want to test whether you can write,
+either use file tests or try setting a dummy hash entry inside an C<eval> 
+to trap the error.
+
+Note that functions such as C<keys> and C<values> may return huge lists
+when used on large DBM files.  You may prefer to use the C<each>
+function to iterate over large DBM files.  Example:
+
+    # print out history file offsets
+    dbmopen(%HIST,'/usr/lib/news/history',0666);
+    while (($key,$val) = each %HIST) {
+        print $key, ' = ', unpack('L',$val), "\n";
+    }
+    dbmclose(%HIST);
+
+See also L<AnyDBM_File> for a more general description of the pros and
+cons of the various dbm approaches, as well as L<DB_File> for a particularly
+rich implementation.
+
+You can control which DBM library you use by loading that library
+before you call dbmopen():
+
+    use DB_File;
+    dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
+        or die "Can't open netscape history file: $!";
+
+Portability issues: L<perlport/dbmopen>.
+
+=item default BLOCK
+
+Within a C<foreach> or a C<given>, a C<default> BLOCK acts like a C<when>
+that's always true.  Only available after Perl 5.10, and only if the
+C<switch> feature has been requested or if the keyword is prefixed with
+C<CORE::>.  See L</when>.
+
+=item defined EXPR
+X<defined> X<undef> X<undefined>
+
+=item defined
+
+Returns a Boolean value telling whether EXPR has a value other than
+the undefined value C<undef>.  If EXPR is not present, C<$_> is
+checked.
+
+Many operations return C<undef> to indicate failure, end of file,
+system error, uninitialized variable, and other exceptional
+conditions.  This function allows you to distinguish C<undef> from
+other values.  (A simple Boolean test will not distinguish among
+C<undef>, zero, the empty string, and C<"0">, which are all equally
+false.)  Note that since C<undef> is a valid scalar, its presence
+doesn't I<necessarily> indicate an exceptional condition: C<pop>
+returns C<undef> when its argument is an empty array, I<or> when the
+element to return happens to be C<undef>.
+
+You may also use C<defined(&func)> to check whether subroutine C<&func>
+has ever been defined.  The return value is unaffected by any forward
+declarations of C<&func>.  A subroutine that is not defined
+may still be callable: its package may have an C<AUTOLOAD> method that
+makes it spring into existence the first time that it is called; see
+L<perlsub>.
+
+Use of C<defined> on aggregates (hashes and arrays) is deprecated.  It
+used to report whether memory for that aggregate had ever been
+allocated.  This behavior may disappear in future versions of Perl.
+You should instead use a simple test for size:
+
+    if (@an_array) { print "has array elements\n" }
+    if (%a_hash)   { print "has hash members\n"   }
+
+When used on a hash element, it tells you whether the value is defined,
+not whether the key exists in the hash.  Use L</exists> for the latter
+purpose.
+
+Examples:
+
+    print if defined $switch{D};
+    print "$val\n" while defined($val = pop(@ary));
+    die "Can't readlink $sym: $!"
+        unless defined($value = readlink $sym);
+    sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
+    $debugging = 0 unless defined $debugging;
+
+Note:  Many folks tend to overuse C<defined> and are then surprised to
+discover that the number C<0> and C<""> (the zero-length string) are, in fact,
+defined values.  For example, if you say
+
+    "ab" =~ /a(.*)b/;
+
+The pattern match succeeds and C<$1> is defined, although it
+matched "nothing".  It didn't really fail to match anything.  Rather, it
+matched something that happened to be zero characters long.  This is all
+very above-board and honest.  When a function returns an undefined value,
+it's an admission that it couldn't give you an honest answer.  So you
+should use C<defined> only when questioning the integrity of what
+you're trying to do.  At other times, a simple comparison to C<0> or C<""> is
+what you want.
+
+See also L</undef>, L</exists>, L</ref>.
+
+=item delete EXPR
+X<delete>
+
+Given an expression that specifies an element or slice of a hash, C<delete>
+deletes the specified elements from that hash so that exists() on that element
+no longer returns true.  Setting a hash element to the undefined value does
+not remove its key, but deleting it does; see L</exists>.
+
+In list context, returns the value or values deleted, or the last such
+element in scalar context.  The return list's length always matches that of
+the argument list: deleting non-existent elements returns the undefined value
+in their corresponding positions.
+
+delete() may also be used on arrays and array slices, but its behavior is less
+straightforward.  Although exists() will return false for deleted entries,
+deleting array elements never changes indices of existing values; use shift()
+or splice() for that.  However, if all deleted elements fall at the end of an
+array, the array's size shrinks to the position of the highest element that
+still tests true for exists(), or to 0 if none do.
+
+B<WARNING:> Calling delete on array values is deprecated and likely to
+be removed in a future version of Perl.
+
+Deleting from C<%ENV> modifies the environment.  Deleting from a hash tied to
+a DBM file deletes the entry from the DBM file.  Deleting from a C<tied> hash
+or array may not necessarily return anything; it depends on the implementation
+of the C<tied> package's DELETE method, which may do whatever it pleases.
+
+The C<delete local EXPR> construct localizes the deletion to the current
+block at run time.  Until the block exits, elements locally deleted
+temporarily no longer exist.  See L<perlsub/"Localized deletion of elements
+of composite types">.
+
+    %hash = (foo => 11, bar => 22, baz => 33);
+    $scalar = delete $hash{foo};             # $scalar is 11
+    $scalar = delete @hash{qw(foo bar)};     # $scalar is 22
+    @array  = delete @hash{qw(foo bar baz)}; # @array  is (undef,undef,33)
+
+The following (inefficiently) deletes all the values of %HASH and @ARRAY:
+
+    foreach $key (keys %HASH) {
+        delete $HASH{$key};
+    }
+
+    foreach $index (0 .. $#ARRAY) {
+        delete $ARRAY[$index];
+    }
+
+And so do these:
+
+    delete @HASH{keys %HASH};
+
+    delete @ARRAY[0 .. $#ARRAY];
+
+But both are slower than assigning the empty list
+or undefining %HASH or @ARRAY, which is the customary 
+way to empty out an aggregate:
+
+    %HASH = ();     # completely empty %HASH
+    undef %HASH;    # forget %HASH ever existed
+
+    @ARRAY = ();    # completely empty @ARRAY
+    undef @ARRAY;   # forget @ARRAY ever existed
+
+The EXPR can be arbitrarily complicated provided its
+final operation is an element or slice of an aggregate:
+
+    delete $ref->[$x][$y]{$key};
+    delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
+
+    delete $ref->[$x][$y][$index];
+    delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
+
+=item die LIST
+X<die> X<throw> X<exception> X<raise> X<$@> X<abort>
+
+C<die> raises an exception. Inside an C<eval> the error message is stuffed
+into C<$@> and the C<eval> is terminated with the undefined value.
+If the exception is outside of all enclosing C<eval>s, then the uncaught
+exception prints LIST to C<STDERR> and exits with a non-zero value. If you
+need to exit the process with a specific exit code, see L</exit>.
+
+Equivalent examples:
+
+    die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
+    chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
+
+If the last element of LIST does not end in a newline, the current
+script line number and input line number (if any) are also printed,
+and a newline is supplied.  Note that the "input line number" (also
+known as "chunk") is subject to whatever notion of "line" happens to
+be currently in effect, and is also available as the special variable
+C<$.>.  See L<perlvar/"$/"> and L<perlvar/"$.">.
+
+Hint: sometimes appending C<", stopped"> to your message will cause it
+to make better sense when the string C<"at foo line 123"> is appended.
+Suppose you are running script "canasta".
+
+    die "/etc/games is no good";
+    die "/etc/games is no good, stopped";
+
+produce, respectively
+
+    /etc/games is no good at canasta line 123.
+    /etc/games is no good, stopped at canasta line 123.
+
+If the output is empty and C<$@> already contains a value (typically from a
+previous eval) that value is reused after appending C<"\t...propagated">.
+This is useful for propagating exceptions:
+
+    eval { ... };
+    die unless $@ =~ /Expected exception/;
+
+If the output is empty and C<$@> contains an object reference that has a
+C<PROPAGATE> method, that method will be called with additional file
+and line number parameters.  The return value replaces the value in
+C<$@>;  i.e., as if C<< $@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; >>
+were called.
+
+If C<$@> is empty then the string C<"Died"> is used.
+
+If an uncaught exception results in interpreter exit, the exit code is
+determined from the values of C<$!> and C<$?> with this pseudocode:
+
+    exit $! if $!;              # errno
+    exit $? >> 8 if $? >> 8;    # child exit status
+    exit 255;                   # last resort
+
+The intent is to squeeze as much possible information about the likely cause
+into the limited space of the system exit code. However, as C<$!> is the value
+of C's C<errno>, which can be set by any system call, this means that the value
+of the exit code used by C<die> can be non-predictable, so should not be relied
+upon, other than to be non-zero.
+
+You can also call C<die> with a reference argument, and if this is trapped
+within an C<eval>, C<$@> contains that reference.  This permits more
+elaborate exception handling using objects that maintain arbitrary state
+about the exception.  Such a scheme is sometimes preferable to matching
+particular string values of C<$@> with regular expressions.  Because C<$@> 
+is a global variable and C<eval> may be used within object implementations,
+be careful that analyzing the error object doesn't replace the reference in
+the global variable.  It's easiest to make a local copy of the reference
+before any manipulations.  Here's an example:
+
+    use Scalar::Util "blessed";
+
+    eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
+    if (my $ev_err = $@) {
+        if (blessed($ev_err) && $ev_err->isa("Some::Module::Exception")) {
+            # handle Some::Module::Exception
+        }
+        else {
+            # handle all other possible exceptions
+        }
+    }
+
+Because Perl stringifies uncaught exception messages before display,
+you'll probably want to overload stringification operations on
+exception objects.  See L<overload> for details about that.
+
+You can arrange for a callback to be run just before the C<die>
+does its deed, by setting the C<$SIG{__DIE__}> hook.  The associated
+handler is called with the error text and can change the error
+message, if it sees fit, by calling C<die> again.  See
+L<perlvar/%SIG> for details on setting C<%SIG> entries, and
+L<"eval BLOCK"> for some examples.  Although this feature was 
+to be run only right before your program was to exit, this is not
+currently so: the C<$SIG{__DIE__}> hook is currently called
+even inside eval()ed blocks/strings!  If one wants the hook to do
+nothing in such situations, put
+
+    die @_ if $^S;
+
+as the first line of the handler (see L<perlvar/$^S>).  Because
+this promotes strange action at a distance, this counterintuitive
+behavior may be fixed in a future release.
+
+See also exit(), warn(), and the Carp module.
+
+=item do BLOCK
+X<do> X<block>
+
+Not really a function.  Returns the value of the last command in the
+sequence of commands indicated by BLOCK.  When modified by the C<while> or
+C<until> loop modifier, executes the BLOCK once before testing the loop
+condition. (On other statements the loop modifiers test the conditional
+first.)
+
+C<do BLOCK> does I<not> count as a loop, so the loop control statements
+C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
+See L<perlsyn> for alternative strategies.
+
+=item do SUBROUTINE(LIST)
+X<do>
+
+This form of subroutine call is deprecated.  SUBROUTINE can be a bareword,
+a scalar variable or a subroutine beginning with C<&>.
+
+=item do EXPR
+X<do>
+
+Uses the value of EXPR as a filename and executes the contents of the
+file as a Perl script.
+
+    do 'stat.pl';
+
+is just like
+
+    eval `cat stat.pl`;
+
+except that it's more efficient and concise, keeps track of the current
+filename for error messages, searches the C<@INC> directories, and updates
+C<%INC> if the file is found.  See L<perlvar/@INC> and L<perlvar/%INC> for
+these variables.  It also differs in that code evaluated with C<do FILENAME>
+cannot see lexicals in the enclosing scope; C<eval STRING> does.  It's the
+same, however, in that it does reparse the file every time you call it,
+so you probably don't want to do this inside a loop.
+
+If C<do> can read the file but cannot compile it, it returns C<undef> and sets
+an error message in C<$@>.  If C<do> cannot read the file, it returns undef
+and sets C<$!> to the error.  Always check C<$@> first, as compilation
+could fail in a way that also sets C<$!>.  If the file is successfully
+compiled, C<do> returns the value of the last expression evaluated.
+
+Inclusion of library modules is better done with the
+C<use> and C<require> operators, which also do automatic error checking
+and raise an exception if there's a problem.
+
+You might like to use C<do> to read in a program configuration
+file.  Manual error checking can be done this way:
+
+    # read in config files: system first, then user
+    for $file ("/share/prog/defaults.rc",
+               "$ENV{HOME}/.someprogrc")
+    {
+        unless ($return = do $file) {
+            warn "couldn't parse $file: $@" if $@;
+            warn "couldn't do $file: $!"    unless defined $return;
+            warn "couldn't run $file"       unless $return;
+        }
+    }
+
+=item dump LABEL
+X<dump> X<core> X<undump>
+
+=item dump
+
+This function causes an immediate core dump.  See also the B<-u>
+command-line switch in L<perlrun>, which does the same thing.
+Primarily this is so that you can use the B<undump> program (not
+supplied) to turn your core dump into an executable binary after
+having initialized all your variables at the beginning of the
+program.  When the new binary is executed it will begin by executing
+a C<goto LABEL> (with all the restrictions that C<goto> suffers).
+Think of it as a goto with an intervening core dump and reincarnation.
+If C<LABEL> is omitted, restarts the program from the top.
+
+B<WARNING>: Any files opened at the time of the dump will I<not>
+be open any more when the program is reincarnated, with possible
+resulting confusion by Perl.
+
+This function is now largely obsolete, mostly because it's very hard to
+convert a core file into an executable. That's why you should now invoke
+it as C<CORE::dump()>, if you don't want to be warned against a possible
+typo.
+
+Portability issues: L<perlport/dump>.
+
+=item each HASH
+X<each> X<hash, iterator>
+
+=item each ARRAY
+X<array, iterator>
+
+=item each EXPR
+
+When called in list context, returns a 2-element list consisting of the key
+and value for the next element of a hash, or the index and value for the
+next element of an array, so that you can iterate over it.  When called in
+scalar context, returns only the key (not the value) in a hash, or the index
+in an array.
+
+Hash entries are returned in an apparently random order.  The actual random
+order is subject to change in future versions of Perl, but it is
+guaranteed to be in the same order as either the C<keys> or C<values>
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.2 the ordering can be different even between different runs of Perl
+for security reasons (see L<perlsec/"Algorithmic Complexity Attacks">).
+
+After C<each> has returned all entries from the hash or array, the next
+call to C<each> returns the empty list in list context and C<undef> in
+scalar context.  The next call following that one restarts iteration.  Each
+hash or array has its own internal iterator, accessed by C<each>, C<keys>,
+and C<values>.  The iterator is implicitly reset when C<each> has reached
+the end as just described; it can be explicitly reset by calling C<keys> or
+C<values> on the hash or array.  If you add or delete a hash's elements
+while iterating over it, entries may be skipped or duplicated--so don't do
+that.  Exception: It is always safe to delete the item most recently
+returned by C<each()>, so the following code works properly:
+
+        while (($key, $value) = each %hash) {
+          print $key, "\n";
+          delete $hash{$key};   # This is safe
+        }
+
+This prints out your environment like the printenv(1) program,
+but in a different order:
+
+    while (($key,$value) = each %ENV) {
+        print "$key=$value\n";
+    }
+
+Starting with Perl 5.14, C<each> can take a scalar EXPR, which must hold
+reference to an unblessed hash or array.  The argument will be dereferenced
+automatically.  This aspect of C<each> is considered highly experimental.
+The exact behaviour may change in a future version of Perl.
+
+    while (($key,$value) = each $hashref) { ... }
+
+See also C<keys>, C<values>, and C<sort>.
+
+=item eof FILEHANDLE
+X<eof>
+X<end of file>
+X<end-of-file>
+
+=item eof ()
+
+=item eof
+
+Returns 1 if the next read on FILEHANDLE will return end of file I<or> if
+FILEHANDLE is not open.  FILEHANDLE may be an expression whose value
+gives the real filehandle.  (Note that this function actually
+reads a character and then C<ungetc>s it, so isn't useful in an
+interactive context.)  Do not read from a terminal file (or call
+C<eof(FILEHANDLE)> on it) after end-of-file is reached.  File types such
+as terminals may lose the end-of-file condition if you do.
+
+An C<eof> without an argument uses the last file read.  Using C<eof()>
+with empty parentheses is different.  It refers to the pseudo file
+formed from the files listed on the command line and accessed via the
+C<< <> >> operator.  Since C<< <> >> isn't explicitly opened,
+as a normal filehandle is, an C<eof()> before C<< <> >> has been
+used will cause C<@ARGV> to be examined to determine if input is
+available.   Similarly, an C<eof()> after C<< <> >> has returned
+end-of-file will assume you are processing another C<@ARGV> list,
+and if you haven't set C<@ARGV>, will read input from C<STDIN>;
+see L<perlop/"I/O Operators">.
+
+In a C<< while (<>) >> loop, C<eof> or C<eof(ARGV)> can be used to
+detect the end of each file, whereas C<eof()> will detect the end 
+of the very last file only.  Examples:
+
+    # reset line numbering on each input file
+    while (<>) {
+        next if /^\s*#/;  # skip comments
+        print "$.\t$_";
+    } continue {
+        close ARGV if eof;  # Not eof()!
+    }
+
+    # insert dashes just before last line of last file
+    while (<>) {
+        if (eof()) {  # check for end of last file
+            print "--------------\n";
+        }
+        print;
+        last if eof();      # needed if we're reading from a terminal
+    }
+
+Practical hint: you almost never need to use C<eof> in Perl, because the
+input operators typically return C<undef> when they run out of data or 
+encounter an error.
+
+=item eval EXPR
+X<eval> X<try> X<catch> X<evaluate> X<parse> X<execute>
+X<error, handling> X<exception, handling>
+
+=item eval BLOCK
+
+=item eval
+
+In the first form, the return value of EXPR is parsed and executed as if it
+were a little Perl program.  The value of the expression (which is itself
+determined within scalar context) is first parsed, and if there were no
+errors, executed as a block within the lexical context of the current Perl
+program.  This means, that in particular, any outer lexical variables are
+visible to it, and any package variable settings or subroutine and format
+definitions remain afterwards.
+
+Note that the value is parsed every time the C<eval> executes.
+If EXPR is omitted, evaluates C<$_>.  This form is typically used to
+delay parsing and subsequent execution of the text of EXPR until run time.
+
+If the C<unicode_eval> feature is enabled (which is the default under a
+C<use 5.16> or higher declaration), EXPR or C<$_> is treated as a string of
+characters, so C<use utf8> declarations have no effect, and source filters
+are forbidden.  In the absence of the C<unicode_eval> feature, the string
+will sometimes be treated as characters and sometimes as bytes, depending
+on the internal encoding, and source filters activated within the C<eval>
+exhibit the erratic, but historical, behaviour of affecting some outer file
+scope that is still compiling.  See also the L</evalbytes> keyword, which
+always treats its input as a byte stream and works properly with source
+filters, and the L<feature> pragma.
+
+In the second form, the code within the BLOCK is parsed only once--at the
+same time the code surrounding the C<eval> itself was parsed--and executed
+within the context of the current Perl program.  This form is typically
+used to trap exceptions more efficiently than the first (see below), while
+also providing the benefit of checking the code within BLOCK at compile
+time.
+
+The final semicolon, if any, may be omitted from the value of EXPR or within
+the BLOCK.
+
+In both forms, the value returned is the value of the last expression
+evaluated inside the mini-program; a return statement may be also used, just
+as with subroutines.  The expression providing the return value is evaluated
+in void, scalar, or list context, depending on the context of the C<eval> 
+itself.  See L</wantarray> for more on how the evaluation context can be 
+determined.
+
+If there is a syntax error or runtime error, or a C<die> statement is
+executed, C<eval> returns C<undef> in scalar context
+or an empty list--or, for syntax errors, a list containing a single
+undefined value--in list context, and C<$@> is set to the error
+message.  The discrepancy in the return values in list context is
+considered a bug by some, and will probably be fixed in a future
+release.  If there was no error, C<$@> is set to the empty string.  A
+control flow operator like C<last> or C<goto> can bypass the setting of
+C<$@>.  Beware that using C<eval> neither silences Perl from printing
+warnings to STDERR, nor does it stuff the text of warning messages into C<$@>.
+To do either of those, you have to use the C<$SIG{__WARN__}> facility, or
+turn off warnings inside the BLOCK or EXPR using S<C<no warnings 'all'>>.
+See L</warn>, L<perlvar>, L<warnings> and L<perllexwarn>.
+
+Note that, because C<eval> traps otherwise-fatal errors, it is useful for
+determining whether a particular feature (such as C<socket> or C<symlink>)
+is implemented.  It is also Perl's exception-trapping mechanism, where
+the die operator is used to raise exceptions.
+
+If you want to trap errors when loading an XS module, some problems with
+the binary interface (such as Perl version skew) may be fatal even with
+C<eval> unless C<$ENV{PERL_DL_NONLAZY}> is set.  See L<perlrun>.
+
+If the code to be executed doesn't vary, you may use the eval-BLOCK
+form to trap run-time errors without incurring the penalty of
+recompiling each time.  The error, if any, is still returned in C<$@>.
+Examples:
+
+    # make divide-by-zero nonfatal
+    eval { $answer = $a / $b; }; warn $@ if $@;
+
+    # same thing, but less efficient
+    eval '$answer = $a / $b'; warn $@ if $@;
+
+    # a compile-time error
+    eval { $answer = }; # WRONG
+
+    # a run-time error
+    eval '$answer =';   # sets $@
+
+Using the C<eval{}> form as an exception trap in libraries does have some
+issues.  Due to the current arguably broken state of C<__DIE__> hooks, you
+may wish not to trigger any C<__DIE__> hooks that user code may have installed.
+You can use the C<local $SIG{__DIE__}> construct for this purpose,
+as this example shows:
+
+    # a private exception trap for divide-by-zero
+    eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
+    warn $@ if $@;
+
+This is especially significant, given that C<__DIE__> hooks can call
+C<die> again, which has the effect of changing their error messages:
+
+    # __DIE__ hooks may modify error messages
+    {
+       local $SIG{'__DIE__'} =
+              sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
+       eval { die "foo lives here" };
+       print $@ if $@;                # prints "bar lives here"
+    }
+
+Because this promotes action at a distance, this counterintuitive behavior
+may be fixed in a future release.
+
+With an C<eval>, you should be especially careful to remember what's
+being looked at when:
+
+    eval $x;        # CASE 1
+    eval "$x";      # CASE 2
+
+    eval '$x';      # CASE 3
+    eval { $x };    # CASE 4
+
+    eval "\$$x++";  # CASE 5
+    $$x++;          # CASE 6
+
+Cases 1 and 2 above behave identically: they run the code contained in
+the variable $x.  (Although case 2 has misleading double quotes making
+the reader wonder what else might be happening (nothing is).)  Cases 3
+and 4 likewise behave in the same way: they run the code C<'$x'>, which
+does nothing but return the value of $x.  (Case 4 is preferred for
+purely visual reasons, but it also has the advantage of compiling at
+compile-time instead of at run-time.)  Case 5 is a place where
+normally you I<would> like to use double quotes, except that in this
+particular situation, you can just use symbolic references instead, as
+in case 6.
+
+Before Perl 5.14, the assignment to C<$@> occurred before restoration 
+of localised variables, which means that for your code to run on older
+versions, a temporary is required if you want to mask some but not all
+errors:
+
+    # alter $@ on nefarious repugnancy only
+    {
+       my $e;
+       {
+          local $@; # protect existing $@
+          eval { test_repugnancy() };
+          # $@ =~ /nefarious/ and die $@; # Perl 5.14 and higher only
+          $@ =~ /nefarious/ and $e = $@;
+       }
+       die $e if defined $e
+    }
+
+C<eval BLOCK> does I<not> count as a loop, so the loop control statements
+C<next>, C<last>, or C<redo> cannot be used to leave or restart the block.
+
+An C<eval ''> executed within the C<DB> package doesn't see the usual
+surrounding lexical scope, but rather the scope of the first non-DB piece
+of code that called it.  You don't normally need to worry about this unless
+you are writing a Perl debugger.
+
+=item evalbytes EXPR
+X<evalbytes>
+
+=item evalbytes
+
+This function is like L</eval> with a string argument, except it always
+parses its argument, or C<$_> if EXPR is omitted, as a string of bytes.  A
+string containing characters whose ordinal value exceeds 255 results in an
+error.  Source filters activated within the evaluated code apply to the
+code itself.
+
+This function is only available under the C<evalbytes> feature, a
+C<use v5.16> (or higher) declaration, or with a C<CORE::> prefix.  See
+L<feature> for more information.
+
+=item exec LIST
+X<exec> X<execute>
+
+=item exec PROGRAM LIST
+
+The C<exec> function executes a system command I<and never returns>;
+use C<system> instead of C<exec> if you want it to return.  It fails and
+returns false only if the command does not exist I<and> it is executed
+directly instead of via your system's command shell (see below).
+
+Since it's a common mistake to use C<exec> instead of C<system>, Perl
+warns you if there is a following statement that isn't C<die>, C<warn>,
+or C<exit> (if C<-w> is set--but you always do that, right?).   If you
+I<really> want to follow an C<exec> with some other statement, you
+can use one of these styles to avoid the warning:
+
+    exec ('foo')   or print STDERR "couldn't exec foo: $!";
+    { exec ('foo') }; print STDERR "couldn't exec foo: $!";
+
+If there is more than one argument in LIST, or if LIST is an array
+with more than one value, calls execvp(3) with the arguments in LIST.
+If there is only one scalar argument or an array with one element in it,
+the argument is checked for shell metacharacters, and if there are any,
+the entire argument is passed to the system's command shell for parsing
+(this is C</bin/sh -c> on Unix platforms, but varies on other platforms).
+If there are no shell metacharacters in the argument, it is split into
+words and passed directly to C<execvp>, which is more efficient.
+Examples:
+
+    exec '/bin/echo', 'Your arguments are: ', @ARGV;
+    exec "sort $outfile | uniq";
+
+If you don't really want to execute the first argument, but want to lie
+to the program you are executing about its own name, you can specify
+the program you actually want to run as an "indirect object" (without a
+comma) in front of the LIST.  (This always forces interpretation of the
+LIST as a multivalued list, even if there is only a single scalar in
+the list.)  Example:
+
+    $shell = '/bin/csh';
+    exec $shell '-sh';    # pretend it's a login shell
+
+or, more directly,
+
+    exec {'/bin/csh'} '-sh';  # pretend it's a login shell
+
+When the arguments get executed via the system shell, results are
+subject to its quirks and capabilities.  See L<perlop/"`STRING`">
+for details.
+
+Using an indirect object with C<exec> or C<system> is also more
+secure.  This usage (which also works fine with system()) forces
+interpretation of the arguments as a multivalued list, even if the
+list had just one argument.  That way you're safe from the shell
+expanding wildcards or splitting up words with whitespace in them.
+
+    @args = ( "echo surprise" );
+
+    exec @args;               # subject to shell escapes
+                                # if @args == 1
+    exec { $args[0] } @args;  # safe even with one-arg list
+
+The first version, the one without the indirect object, ran the I<echo>
+program, passing it C<"surprise"> an argument.  The second version didn't;
+it tried to run a program named I<"echo surprise">, didn't find it, and set
+C<$?> to a non-zero value indicating failure.
+
+Beginning with v5.6.0, Perl attempts to flush all files opened for
+output before the exec, but this may not be supported on some platforms
+(see L<perlport>).  To be safe, you may need to set C<$|> ($AUTOFLUSH
+in English) or call the C<autoflush()> method of C<IO::Handle> on any
+open handles to avoid lost output.
+
+Note that C<exec> will not call your C<END> blocks, nor will it invoke
+C<DESTROY> methods on your objects.
+
+Portability issues: L<perlport/exec>.
+
+=item exists EXPR
+X<exists> X<autovivification>
+
+Given an expression that specifies an element of a hash, returns true if the
+specified element in the hash has ever been initialized, even if the
+corresponding value is undefined.
+
+    print "Exists\n"    if exists $hash{$key};
+    print "Defined\n"   if defined $hash{$key};
+    print "True\n"      if $hash{$key};
+
+exists may also be called on array elements, but its behavior is much less
+obvious and is strongly tied to the use of L</delete> on arrays.  B<Be aware>
+that calling exists on array values is deprecated and likely to be removed in
+a future version of Perl.
+
+    print "Exists\n"    if exists $array[$index];
+    print "Defined\n"   if defined $array[$index];
+    print "True\n"      if $array[$index];
+
+A hash or array element can be true only if it's defined and defined only if
+it exists, but the reverse doesn't necessarily hold true.
+
+Given an expression that specifies the name of a subroutine,
+returns true if the specified subroutine has ever been declared, even
+if it is undefined.  Mentioning a subroutine name for exists or defined
+does not count as declaring it.  Note that a subroutine that does not
+exist may still be callable: its package may have an C<AUTOLOAD>
+method that makes it spring into existence the first time that it is
+called; see L<perlsub>.
+
+    print "Exists\n"  if exists &subroutine;
+    print "Defined\n" if defined &subroutine;
+
+Note that the EXPR can be arbitrarily complicated as long as the final
+operation is a hash or array key lookup or subroutine name:
+
+    if (exists $ref->{A}->{B}->{$key})  { }
+    if (exists $hash{A}{B}{$key})       { }
+
+    if (exists $ref->{A}->{B}->[$ix])   { }
+    if (exists $hash{A}{B}[$ix])        { }
+
+    if (exists &{$ref->{A}{B}{$key}})   { }
+
+Although the mostly deeply nested array or hash will not spring into
+existence just because its existence was tested, any intervening ones will.
+Thus C<< $ref->{"A"} >> and C<< $ref->{"A"}->{"B"} >> will spring
+into existence due to the existence test for the $key element above.
+This happens anywhere the arrow operator is used, including even here:
+
+    undef $ref;
+    if (exists $ref->{"Some key"})    { }
+    print $ref;  # prints HASH(0x80d3d5c)
+
+This surprising autovivification in what does not at first--or even
+second--glance appear to be an lvalue context may be fixed in a future
+release.
+
+Use of a subroutine call, rather than a subroutine name, as an argument
+to exists() is an error.
+
+    exists ⊂    # OK
+    exists &sub();  # Error
+
+=item exit EXPR
+X<exit> X<terminate> X<abort>
+
+=item exit
+
+Evaluates EXPR and exits immediately with that value.    Example:
+
+    $ans = <STDIN>;
+    exit 0 if $ans =~ /^[Xx]/;
+
+See also C<die>.  If EXPR is omitted, exits with C<0> status.  The only
+universally recognized values for EXPR are C<0> for success and C<1>
+for error; other values are subject to interpretation depending on the
+environment in which the Perl program is running.  For example, exiting
+69 (EX_UNAVAILABLE) from a I<sendmail> incoming-mail filter will cause
+the mailer to return the item undelivered, but that's not true everywhere.
+
+Don't use C<exit> to abort a subroutine if there's any chance that
+someone might want to trap whatever error happened.  Use C<die> instead,
+which can be trapped by an C<eval>.
+
+The exit() function does not always exit immediately.  It calls any
+defined C<END> routines first, but these C<END> routines may not
+themselves abort the exit.  Likewise any object destructors that need to
+be called are called before the real exit.  C<END> routines and destructors
+can change the exit status by modifying C<$?>. If this is a problem, you
+can call C<POSIX:_exit($status)> to avoid END and destructor processing.
+See L<perlmod> for details.
+
+Portability issues: L<perlport/exit>.
+
+=item exp EXPR
+X<exp> X<exponential> X<antilog> X<antilogarithm> X<e>
+
+=item exp
+
+Returns I<e> (the natural logarithm base) to the power of EXPR.
+If EXPR is omitted, gives C<exp($_)>.
+
+=item fcntl FILEHANDLE,FUNCTION,SCALAR
+X<fcntl>
+
+Implements the fcntl(2) function.  You'll probably have to say
+
+    use Fcntl;
+
+first to get the correct constant definitions.  Argument processing and
+value returned work just like C<ioctl> below.
+For example:
+
+    use Fcntl;
+    fcntl($filehandle, F_GETFL, $packed_return_buffer)
+        or die "can't fcntl F_GETFL: $!";
+
+You don't have to check for C<defined> on the return from C<fcntl>.
+Like C<ioctl>, it maps a C<0> return from the system call into
+C<"0 but true"> in Perl.  This string is true in boolean context and C<0>
+in numeric context.  It is also exempt from the normal B<-w> warnings
+on improper numeric conversions.
+
+Note that C<fcntl> raises an exception if used on a machine that
+doesn't implement fcntl(2).  See the Fcntl module or your fcntl(2)
+manpage to learn what functions are available on your system.
+
+Here's an example of setting a filehandle named C<REMOTE> to be
+non-blocking at the system level.  You'll have to negotiate C<$|>
+on your own, though.
+
+    use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
+
+    $flags = fcntl(REMOTE, F_GETFL, 0)
+                or die "Can't get flags for the socket: $!\n";
+
+    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
+                or die "Can't set flags for the socket: $!\n";
+
+Portability issues: L<perlport/fcntl>.
+
+=item __FILE__
+X<__FILE__>
+
+A special token that returns the name of the file in which it occurs.
+
+=item fileno FILEHANDLE
+X<fileno>
+
+Returns the file descriptor for a filehandle, or undefined if the
+filehandle is not open.  If there is no real file descriptor at the OS
+level, as can happen with filehandles connected to memory objects via
+C<open> with a reference for the third argument, -1 is returned.
+
+This is mainly useful for constructing
+bitmaps for C<select> and low-level POSIX tty-handling operations.
+If FILEHANDLE is an expression, the value is taken as an indirect
+filehandle, generally its name.
+
+You can use this to find out whether two handles refer to the
+same underlying descriptor:
+
+    if (fileno(THIS) == fileno(THAT)) {
+        print "THIS and THAT are dups\n";
+    }
+
+=item flock FILEHANDLE,OPERATION
+X<flock> X<lock> X<locking>
+
+Calls flock(2), or an emulation of it, on FILEHANDLE.  Returns true
+for success, false on failure.  Produces a fatal error if used on a
+machine that doesn't implement flock(2), fcntl(2) locking, or lockf(3).
+C<flock> is Perl's portable file-locking interface, although it locks
+entire files only, not records.
+
+Two potentially non-obvious but traditional C<flock> semantics are
+that it waits indefinitely until the lock is granted, and that its locks
+are B<merely advisory>.  Such discretionary locks are more flexible, but
+offer fewer guarantees.  This means that programs that do not also use
+C<flock> may modify files locked with C<flock>.  See L<perlport>, 
+your port's specific documentation, and your system-specific local manpages
+for details.  It's best to assume traditional behavior if you're writing
+portable programs.  (But if you're not, you should as always feel perfectly
+free to write for your own system's idiosyncrasies (sometimes called
+"features").  Slavish adherence to portability concerns shouldn't get
+in the way of your getting your job done.)
+
+OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly combined with
+LOCK_NB.  These constants are traditionally valued 1, 2, 8 and 4, but
+you can use the symbolic names if you import them from the L<Fcntl> module,
+either individually, or as a group using the C<:flock> tag.  LOCK_SH
+requests a shared lock, LOCK_EX requests an exclusive lock, and LOCK_UN
+releases a previously requested lock.  If LOCK_NB is bitwise-or'ed with
+LOCK_SH or LOCK_EX, then C<flock> returns immediately rather than blocking
+waiting for the lock; check the return status to see if you got it.
+
+To avoid the possibility of miscoordination, Perl now flushes FILEHANDLE
+before locking or unlocking it.
+
+Note that the emulation built with lockf(3) doesn't provide shared
+locks, and it requires that FILEHANDLE be open with write intent.  These
+are the semantics that lockf(3) implements.  Most if not all systems
+implement lockf(3) in terms of fcntl(2) locking, though, so the
+differing semantics shouldn't bite too many people.
+
+Note that the fcntl(2) emulation of flock(3) requires that FILEHANDLE
+be open with read intent to use LOCK_SH and requires that it be open
+with write intent to use LOCK_EX.
+
+Note also that some versions of C<flock> cannot lock things over the
+network; you would need to use the more system-specific C<fcntl> for
+that.  If you like you can force Perl to ignore your system's flock(2)
+function, and so provide its own fcntl(2)-based emulation, by passing
+the switch C<-Ud_flock> to the F<Configure> program when you configure
+and build a new Perl.
+
+Here's a mailbox appender for BSD systems.
+
+    use Fcntl qw(:flock SEEK_END); # import LOCK_* and SEEK_END constants
+
+    sub lock {
+        my ($fh) = @_;
+        flock($fh, LOCK_EX) or die "Cannot lock mailbox - $!\n";
+
+        # and, in case someone appended while we were waiting...
+        seek($fh, 0, SEEK_END) or die "Cannot seek - $!\n";
+    }
+
+    sub unlock {
+        my ($fh) = @_;
+        flock($fh, LOCK_UN) or die "Cannot unlock mailbox - $!\n";
+    }
+
+    open(my $mbox, ">>", "/usr/spool/mail/$ENV{'USER'}")
+        or die "Can't open mailbox: $!";
+
+    lock($mbox);
+    print $mbox $msg,"\n\n";
+    unlock($mbox);
+
+On systems that support a real flock(2), locks are inherited across fork()
+calls, whereas those that must resort to the more capricious fcntl(2)
+function lose their locks, making it seriously harder to write servers.
+
+See also L<DB_File> for other flock() examples.
+
+Portability issues: L<perlport/flock>.
+
+=item fork
+X<fork> X<child> X<parent>
+
+Does a fork(2) system call to create a new process running the
+same program at the same point.  It returns the child pid to the
+parent process, C<0> to the child process, or C<undef> if the fork is
+unsuccessful.  File descriptors (and sometimes locks on those descriptors)
+are shared, while everything else is copied.  On most systems supporting
+fork(), great care has gone into making it extremely efficient (for
+example, using copy-on-write technology on data pages), making it the
+dominant paradigm for multitasking over the last few decades.
+
+Beginning with v5.6.0, Perl attempts to flush all files opened for
+output before forking the child process, but this may not be supported
+on some platforms (see L<perlport>).  To be safe, you may need to set
+C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method of
+C<IO::Handle> on any open handles to avoid duplicate output.
+
+If you C<fork> without ever waiting on your children, you will
+accumulate zombies.  On some systems, you can avoid this by setting
+C<$SIG{CHLD}> to C<"IGNORE">.  See also L<perlipc> for more examples of
+forking and reaping moribund children.
+
+Note that if your forked child inherits system file descriptors like
+STDIN and STDOUT that are actually connected by a pipe or socket, even
+if you exit, then the remote server (such as, say, a CGI script or a
+backgrounded job launched from a remote shell) won't think you're done.
+You should reopen those to F</dev/null> if it's any issue.
+
+On some platforms such as Windows, where the fork() system call is not available,
+Perl can be built to emulate fork() in the Perl interpreter. The emulation is designed to,
+at the level of the Perl program, be as compatible as possible with the "Unix" fork().
+However it has limitations that have to be considered in code intended to be portable.
+See L<perlfork> for more details.
+
+Portability issues: L<perlport/fork>.
+
+=item format
+X<format>
+
+Declare a picture format for use by the C<write> function.  For
+example:
+
+    format Something =
+        Test: @<<<<<<<< @||||| @>>>>>
+              $str,     $%,    '$' . int($num)
+    .
+
+    $str = "widget";
+    $num = $cost/$quantity;
+    $~ = 'Something';
+    write;
+
+See L<perlform> for many details and examples.
+
+=item formline PICTURE,LIST
+X<formline>
+
+This is an internal function used by C<format>s, though you may call it,
+too.  It formats (see L<perlform>) a list of values according to the
+contents of PICTURE, placing the output into the format output
+accumulator, C<$^A> (or C<$ACCUMULATOR> in English).
+Eventually, when a C<write> is done, the contents of
+C<$^A> are written to some filehandle.  You could also read C<$^A>
+and then set C<$^A> back to C<"">.  Note that a format typically
+does one C<formline> per line of form, but the C<formline> function itself
+doesn't care how many newlines are embedded in the PICTURE.  This means
+that the C<~> and C<~~> tokens treat the entire PICTURE as a single line.
+You may therefore need to use multiple formlines to implement a single
+record format, just like the C<format> compiler.
+
+Be careful if you put double quotes around the picture, because an C<@>
+character may be taken to mean the beginning of an array name.
+C<formline> always returns true.  See L<perlform> for other examples.
+
+If you are trying to use this instead of C<write> to capture the output,
+you may find it easier to open a filehandle to a scalar
+(C<< open $fh, ">", \$output >>) and write to that instead.
+
+=item getc FILEHANDLE
+X<getc> X<getchar> X<character> X<file, read>
+
+=item getc
+
+Returns the next character from the input file attached to FILEHANDLE,
+or the undefined value at end of file or if there was an error (in
+the latter case C<$!> is set).  If FILEHANDLE is omitted, reads from
+STDIN.  This is not particularly efficient.  However, it cannot be
+used by itself to fetch single characters without waiting for the user
+to hit enter.  For that, try something more like:
+
+    if ($BSD_STYLE) {
+        system "stty cbreak </dev/tty >/dev/tty 2>&1";
+    }
+    else {
+        system "stty", '-icanon', 'eol', "\001";
+    }
+
+    $key = getc(STDIN);
+
+    if ($BSD_STYLE) {
+        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+    }
+    else {
+        system 'stty', 'icanon', 'eol', '^@'; # ASCII NUL
+    }
+    print "\n";
+
+Determination of whether $BSD_STYLE should be set
+is left as an exercise to the reader.
+
+The C<POSIX::getattr> function can do this more portably on
+systems purporting POSIX compliance.  See also the C<Term::ReadKey>
+module from your nearest CPAN site; details on CPAN can be found under
+L<perlmodlib/CPAN>.
+
+=item getlogin
+X<getlogin> X<login>
+
+This implements the C library function of the same name, which on most
+systems returns the current login from F</etc/utmp>, if any.  If it
+returns the empty string, use C<getpwuid>.
+
+    $login = getlogin || getpwuid($<) || "Kilroy";
+
+Do not consider C<getlogin> for authentication: it is not as
+secure as C<getpwuid>.
+
+Portability issues: L<perlport/getlogin>.
+
+=item getpeername SOCKET
+X<getpeername> X<peer>
+
+Returns the packed sockaddr address of the other end of the SOCKET
+connection.
+
+    use Socket;
+    $hersockaddr    = getpeername(SOCK);
+    ($port, $iaddr) = sockaddr_in($hersockaddr);
+    $herhostname    = gethostbyaddr($iaddr, AF_INET);
+    $herstraddr     = inet_ntoa($iaddr);
+
+=item getpgrp PID
+X<getpgrp> X<group>
+
+Returns the current process group for the specified PID.  Use
+a PID of C<0> to get the current process group for the
+current process.  Will raise an exception if used on a machine that
+doesn't implement getpgrp(2).  If PID is omitted, returns the process
+group of the current process.  Note that the POSIX version of C<getpgrp>
+does not accept a PID argument, so only C<PID==0> is truly portable.
+
+Portability issues: L<perlport/getpgrp>.
+
+=item getppid
+X<getppid> X<parent> X<pid>
+
+Returns the process id of the parent process.
+
+Note for Linux users: on Linux, the C functions C<getpid()> and
+C<getppid()> return different values from different threads. In order to
+be portable, this behavior is not reflected by the Perl-level function
+C<getppid()>, that returns a consistent value across threads. If you want
+to call the underlying C<getppid()>, you may use the CPAN module
+C<Linux::Pid>.
+
+Portability issues: L<perlport/getppid>.
+
+=item getpriority WHICH,WHO
+X<getpriority> X<priority> X<nice>
+
+Returns the current priority for a process, a process group, or a user.
+(See L<getpriority(2)>.)  Will raise a fatal exception if used on a
+machine that doesn't implement getpriority(2).
+
+Portability issues: L<perlport/getpriority>.
+
+=item getpwnam NAME
+X<getpwnam> X<getgrnam> X<gethostbyname> X<getnetbyname> X<getprotobyname>
+X<getpwuid> X<getgrgid> X<getservbyname> X<gethostbyaddr> X<getnetbyaddr>
+X<getprotobynumber> X<getservbyport> X<getpwent> X<getgrent> X<gethostent>
+X<getnetent> X<getprotoent> X<getservent> X<setpwent> X<setgrent> X<sethostent>
+X<setnetent> X<setprotoent> X<setservent> X<endpwent> X<endgrent> X<endhostent>
+X<endnetent> X<endprotoent> X<endservent> 
+
+=item getgrnam NAME
+
+=item gethostbyname NAME
+
+=item getnetbyname NAME
+
+=item getprotobyname NAME
+
+=item getpwuid UID
+
+=item getgrgid GID
+
+=item getservbyname NAME,PROTO
+
+=item gethostbyaddr ADDR,ADDRTYPE
+
+=item getnetbyaddr ADDR,ADDRTYPE
+
+=item getprotobynumber NUMBER
+
+=item getservbyport PORT,PROTO
+
+=item getpwent
+
+=item getgrent
+
+=item gethostent
+
+=item getnetent
+
+=item getprotoent
+
+=item getservent
+
+=item setpwent
+
+=item setgrent
+
+=item sethostent STAYOPEN
+
+=item setnetent STAYOPEN
+
+=item setprotoent STAYOPEN
+
+=item setservent STAYOPEN
+
+=item endpwent
+
+=item endgrent
+
+=item endhostent
+
+=item endnetent
+
+=item endprotoent
+
+=item endservent
+
+These routines are the same as their counterparts in the
+system C library.  In list context, the return values from the
+various get routines are as follows:
+
+    ($name,$passwd,$uid,$gid,
+       $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
+    ($name,$passwd,$gid,$members) = getgr*
+    ($name,$aliases,$addrtype,$length, at addrs) = gethost*
+    ($name,$aliases,$addrtype,$net) = getnet*
+    ($name,$aliases,$proto) = getproto*
+    ($name,$aliases,$port,$proto) = getserv*
+
+(If the entry doesn't exist you get an empty list.)
+
+The exact meaning of the $gcos field varies but it usually contains
+the real name of the user (as opposed to the login name) and other
+information pertaining to the user.  Beware, however, that in many
+system users are able to change this information and therefore it
+cannot be trusted and therefore the $gcos is tainted (see
+L<perlsec>).  The $passwd and $shell, user's encrypted password and
+login shell, are also tainted, for the same reason.
+
+In scalar context, you get the name, unless the function was a
+lookup by name, in which case you get the other thing, whatever it is.
+(If the entry doesn't exist you get the undefined value.)  For example:
+
+    $uid   = getpwnam($name);
+    $name  = getpwuid($num);
+    $name  = getpwent();
+    $gid   = getgrnam($name);
+    $name  = getgrgid($num);
+    $name  = getgrent();
+    #etc.
+
+In I<getpw*()> the fields $quota, $comment, and $expire are special
+in that they are unsupported on many systems.  If the
+$quota is unsupported, it is an empty scalar.  If it is supported, it
+usually encodes the disk quota.  If the $comment field is unsupported,
+it is an empty scalar.  If it is supported it usually encodes some
+administrative comment about the user.  In some systems the $quota
+field may be $change or $age, fields that have to do with password
+aging.  In some systems the $comment field may be $class.  The $expire
+field, if present, encodes the expiration period of the account or the
+password.  For the availability and the exact meaning of these fields
+in your system, please consult getpwnam(3) and your system's 
+F<pwd.h> file.  You can also find out from within Perl what your
+$quota and $comment fields mean and whether you have the $expire field
+by using the C<Config> module and the values C<d_pwquota>, C<d_pwage>,
+C<d_pwchange>, C<d_pwcomment>, and C<d_pwexpire>.  Shadow password
+files are supported only if your vendor has implemented them in the
+intuitive fashion that calling the regular C library routines gets the
+shadow versions if you're running under privilege or if there exists
+the shadow(3) functions as found in System V (this includes Solaris
+and Linux).  Those systems that implement a proprietary shadow password
+facility are unlikely to be supported.
+
+The $members value returned by I<getgr*()> is a space-separated list of
+the login names of the members of the group.
+
+For the I<gethost*()> functions, if the C<h_errno> variable is supported in
+C, it will be returned to you via C<$?> if the function call fails.  The
+C<@addrs> value returned by a successful call is a list of raw
+addresses returned by the corresponding library call.  In the
+Internet domain, each address is four bytes long; you can unpack it
+by saying something like:
+
+    ($a,$b,$c,$d) = unpack('W4',$addr[0]);
+
+The Socket library makes this slightly easier:
+
+    use Socket;
+    $iaddr = inet_aton("127.1"); # or whatever address
+    $name  = gethostbyaddr($iaddr, AF_INET);
+
+    # or going the other way
+    $straddr = inet_ntoa($iaddr);
+
+In the opposite way, to resolve a hostname to the IP address
+you can write this:
+
+    use Socket;
+    $packed_ip = gethostbyname("www.perl.org");
+    if (defined $packed_ip) {
+        $ip_address = inet_ntoa($packed_ip);
+    }
+
+Make sure C<gethostbyname()> is called in SCALAR context and that
+its return value is checked for definedness.
+
+The C<getprotobynumber> function, even though it only takes one argument,
+has the precedence of a list operator, so beware:
+
+    getprotobynumber $number eq 'icmp'   # WRONG
+    getprotobynumber($number eq 'icmp')  # actually means this
+    getprotobynumber($number) eq 'icmp'  # better this way
+
+If you get tired of remembering which element of the return list
+contains which return value, by-name interfaces are provided
+in standard modules: C<File::stat>, C<Net::hostent>, C<Net::netent>,
+C<Net::protoent>, C<Net::servent>, C<Time::gmtime>, C<Time::localtime>,
+and C<User::grent>.  These override the normal built-ins, supplying
+versions that return objects with the appropriate names
+for each field.  For example:
+
+   use File::stat;
+   use User::pwent;
+   $is_his = (stat($filename)->uid == pwent($whoever)->uid);
+
+Even though it looks as though they're the same method calls (uid),
+they aren't, because a C<File::stat> object is different from
+a C<User::pwent> object.
+
+Portability issues: L<perlport/getpwnam> to L<perlport/endservent>.
+
+=item getsockname SOCKET
+X<getsockname>
+
+Returns the packed sockaddr address of this end of the SOCKET connection,
+in case you don't know the address because you have several different
+IPs that the connection might have come in on.
+
+    use Socket;
+    $mysockaddr = getsockname(SOCK);
+    ($port, $myaddr) = sockaddr_in($mysockaddr);
+    printf "Connect to %s [%s]\n",
+       scalar gethostbyaddr($myaddr, AF_INET),
+       inet_ntoa($myaddr);
+
+=item getsockopt SOCKET,LEVEL,OPTNAME
+X<getsockopt>
+
+Queries the option named OPTNAME associated with SOCKET at a given LEVEL.
+Options may exist at multiple protocol levels depending on the socket
+type, but at least the uppermost socket level SOL_SOCKET (defined in the
+C<Socket> module) will exist. To query options at another level the
+protocol number of the appropriate protocol controlling the option
+should be supplied. For example, to indicate that an option is to be
+interpreted by the TCP protocol, LEVEL should be set to the protocol
+number of TCP, which you can get using C<getprotobyname>.
+
+The function returns a packed string representing the requested socket
+option, or C<undef> on error, with the reason for the error placed in
+C<$!>. Just what is in the packed string depends on LEVEL and OPTNAME;
+consult getsockopt(2) for details.  A common case is that the option is an
+integer, in which case the result is a packed integer, which you can decode
+using C<unpack> with the C<i> (or C<I>) format.
+
+Here's an example to test whether Nagle's algorithm is enabled on a socket:
+
+    use Socket qw(:all);
+
+    defined(my $tcp = getprotobyname("tcp"))
+        or die "Could not determine the protocol number for tcp";
+    # my $tcp = IPPROTO_TCP; # Alternative
+    my $packed = getsockopt($socket, $tcp, TCP_NODELAY)
+        or die "getsockopt TCP_NODELAY: $!";
+    my $nodelay = unpack("I", $packed);
+    print "Nagle's algorithm is turned ", $nodelay ? "off\n" : "on\n";
+
+Portability issues: L<perlport/getsockopt>.
+
+=item given EXPR BLOCK
+X<given>
+
+=item given BLOCK
+
+C<given> is analogous to the C<switch> keyword in other languages. C<given>
+and C<when> are used in Perl to implement C<switch>/C<case> like statements.
+Only available after Perl 5.10.  For example:
+
+    use v5.10;
+    given ($fruit) {
+        when (/apples?/) {
+            print "I like apples."
+        }
+        when (/oranges?/) {
+            print "I don't like oranges."
+        }
+        default {
+            print "I don't like anything"
+        }
+    }
+
+See L<perlsyn/"Switch statements"> for detailed information.
+
+=item glob EXPR
+X<glob> X<wildcard> X<filename, expansion> X<expand>
+
+=item glob
+
+In list context, returns a (possibly empty) list of filename expansions on
+the value of EXPR such as the standard Unix shell F</bin/csh> would do. In
+scalar context, glob iterates through such filename expansions, returning
+undef when the list is exhausted. This is the internal function
+implementing the C<< <*.c> >> operator, but you can use it directly. If
+EXPR is omitted, C<$_> is used.  The C<< <*.c> >> operator is discussed in
+more detail in L<perlop/"I/O Operators">.
+
+Note that C<glob> splits its arguments on whitespace and treats
+each segment as separate pattern.  As such, C<glob("*.c *.h")> 
+matches all files with a F<.c> or F<.h> extension.  The expression
+C<glob(".* *")> matches all files in the current working directory.
+If you want to glob filenames that might contain whitespace, you'll
+have to use extra quotes around the spacey filename to protect it.
+For example, to glob filenames that have an C<e> followed by a space
+followed by an C<f>, use either of:
+
+    @spacies = <"*e f*">;
+    @spacies = glob '"*e f*"';
+    @spacies = glob q("*e f*");
+
+If you had to get a variable through, you could do this:
+
+    @spacies = glob "'*${var}e f*'";
+    @spacies = glob qq("*${var}e f*");
+
+If non-empty braces are the only wildcard characters used in the
+C<glob>, no filenames are matched, but potentially many strings
+are returned.  For example, this produces nine strings, one for
+each pairing of fruits and colors:
+
+    @many =  glob "{apple,tomato,cherry}={green,yellow,red}";
+
+Beginning with v5.6.0, this operator is implemented using the standard
+C<File::Glob> extension.  See L<File::Glob> for details, including
+C<bsd_glob> which does not treat whitespace as a pattern separator.
+
+Portability issues: L<perlport/glob>.
+
+=item gmtime EXPR
+X<gmtime> X<UTC> X<Greenwich>
+
+=item gmtime
+
+Works just like L</localtime> but the returned values are
+localized for the standard Greenwich time zone.
+
+Note: When called in list context, $isdst, the last value
+returned by gmtime, is always C<0>.  There is no
+Daylight Saving Time in GMT.
+
+Portability issues: L<perlport/gmtime>.
+
+=item goto LABEL
+X<goto> X<jump> X<jmp>
+
+=item goto EXPR
+
+=item goto &NAME
+
+The C<goto-LABEL> form finds the statement labeled with LABEL and
+resumes execution there. It can't be used to get out of a block or
+subroutine given to C<sort>.  It can be used to go almost anywhere
+else within the dynamic scope, including out of subroutines, but it's
+usually better to use some other construct such as C<last> or C<die>.
+The author of Perl has never felt the need to use this form of C<goto>
+(in Perl, that is; C is another matter).  (The difference is that C
+does not offer named loops combined with loop control.  Perl does, and
+this replaces most structured uses of C<goto> in other languages.)
+
+The C<goto-EXPR> form expects a label name, whose scope will be resolved
+dynamically.  This allows for computed C<goto>s per FORTRAN, but isn't
+necessarily recommended if you're optimizing for maintainability:
+
+    goto ("FOO", "BAR", "GLARCH")[$i];
+
+As shown in this example, C<goto-EXPR> is exempt from the "looks like a
+function" rule. A pair of parentheses following it does not (necessarily)
+delimit its argument. C<goto("NE")."XT"> is equivalent to C<goto NEXT>.
+
+Use of C<goto-LABEL> or C<goto-EXPR> to jump into a construct is
+deprecated and will issue a warning.  Even then, it may not be used to
+go into any construct that requires initialization, such as a
+subroutine or a C<foreach> loop.  It also can't be used to go into a
+construct that is optimized away.
+
+The C<goto-&NAME> form is quite different from the other forms of
+C<goto>.  In fact, it isn't a goto in the normal sense at all, and
+doesn't have the stigma associated with other gotos.  Instead, it
+exits the current subroutine (losing any changes set by local()) and
+immediately calls in its place the named subroutine using the current
+value of @_.  This is used by C<AUTOLOAD> subroutines that wish to
+load another subroutine and then pretend that the other subroutine had
+been called in the first place (except that any modifications to C<@_>
+in the current subroutine are propagated to the other subroutine.)
+After the C<goto>, not even C<caller> will be able to tell that this
+routine was called first.
+
+NAME needn't be the name of a subroutine; it can be a scalar variable
+containing a code reference or a block that evaluates to a code
+reference.
+
+=item grep BLOCK LIST
+X<grep>
+
+=item grep EXPR,LIST
+
+This is similar in spirit to, but not the same as, grep(1) and its
+relatives.  In particular, it is not limited to using regular expressions.
+
+Evaluates the BLOCK or EXPR for each element of LIST (locally setting
+C<$_> to each element) and returns the list value consisting of those
+elements for which the expression evaluated to true.  In scalar
+context, returns the number of times the expression was true.
+
+    @foo = grep(!/^#/, @bar);    # weed out comments
+
+or equivalently,
+
+    @foo = grep {!/^#/} @bar;    # weed out comments
+
+Note that C<$_> is an alias to the list value, so it can be used to
+modify the elements of the LIST.  While this is useful and supported,
+it can cause bizarre results if the elements of LIST are not variables.
+Similarly, grep returns aliases into the original list, much as a for
+loop's index variable aliases the list elements.  That is, modifying an
+element of a list returned by grep (for example, in a C<foreach>, C<map>
+or another C<grep>) actually modifies the element in the original list.
+This is usually something to be avoided when writing clear code.
+
+If C<$_> is lexical in the scope where the C<grep> appears (because it has
+been declared with C<my $_>) then, in addition to being locally aliased to
+the list elements, C<$_> keeps being lexical inside the block; i.e., it
+can't be seen from the outside, avoiding any potential side-effects.
+
+See also L</map> for a list composed of the results of the BLOCK or EXPR.
+
+=item hex EXPR
+X<hex> X<hexadecimal>
+
+=item hex
+
+Interprets EXPR as a hex string and returns the corresponding value.
+(To convert strings that might start with either C<0>, C<0x>, or C<0b>, see
+L</oct>.)  If EXPR is omitted, uses C<$_>.
+
+    print hex '0xAf'; # prints '175'
+    print hex 'aF';   # same
+
+Hex strings may only represent integers.  Strings that would cause
+integer overflow trigger a warning.  Leading whitespace is not stripped,
+unlike oct(). To present something as hex, look into L</printf>,
+L</sprintf>, and L</unpack>.
+
+=item import LIST
+X<import>
+
+There is no builtin C<import> function.  It is just an ordinary
+method (subroutine) defined (or inherited) by modules that wish to export
+names to another module.  The C<use> function calls the C<import> method
+for the package used.  See also L</use>, L<perlmod>, and L<Exporter>.
+
+=item index STR,SUBSTR,POSITION
+X<index> X<indexOf> X<InStr>
+
+=item index STR,SUBSTR
+
+The index function searches for one string within another, but without
+the wildcard-like behavior of a full regular-expression pattern match.
+It returns the position of the first occurrence of SUBSTR in STR at
+or after POSITION.  If POSITION is omitted, starts searching from the
+beginning of the string.  POSITION before the beginning of the string
+or after its end is treated as if it were the beginning or the end,
+respectively.  POSITION and the return value are based at zero.
+If the substring is not found, C<index> returns -1.
+
+=item int EXPR
+X<int> X<integer> X<truncate> X<trunc> X<floor>
+
+=item int
+
+Returns the integer portion of EXPR.  If EXPR is omitted, uses C<$_>.
+You should not use this function for rounding: one because it truncates
+towards C<0>, and two because machine representations of floating-point
+numbers can sometimes produce counterintuitive results.  For example,
+C<int(-6.725/0.025)> produces -268 rather than the correct -269; that's
+because it's really more like -268.99999999999994315658 instead.  Usually,
+the C<sprintf>, C<printf>, or the C<POSIX::floor> and C<POSIX::ceil>
+functions will serve you better than will int().
+
+=item ioctl FILEHANDLE,FUNCTION,SCALAR
+X<ioctl>
+
+Implements the ioctl(2) function.  You'll probably first have to say
+
+    require "sys/ioctl.ph";  # probably in $Config{archlib}/sys/ioctl.ph
+
+to get the correct function definitions.  If F<sys/ioctl.ph> doesn't
+exist or doesn't have the correct definitions you'll have to roll your
+own, based on your C header files such as F<< <sys/ioctl.h> >>.
+(There is a Perl script called B<h2ph> that comes with the Perl kit that
+may help you in this, but it's nontrivial.)  SCALAR will be read and/or
+written depending on the FUNCTION; a C pointer to the string value of SCALAR
+will be passed as the third argument of the actual C<ioctl> call.  (If SCALAR
+has no string value but does have a numeric value, that value will be
+passed rather than a pointer to the string value.  To guarantee this to be
+true, add a C<0> to the scalar before using it.)  The C<pack> and C<unpack>
+functions may be needed to manipulate the values of structures used by
+C<ioctl>.
+
+The return value of C<ioctl> (and C<fcntl>) is as follows:
+
+    if OS returns:      then Perl returns:
+        -1               undefined value
+         0              string "0 but true"
+    anything else           that number
+
+Thus Perl returns true on success and false on failure, yet you can
+still easily determine the actual value returned by the operating
+system:
+
+    $retval = ioctl(...) || -1;
+    printf "System returned %d\n", $retval;
+
+The special string C<"0 but true"> is exempt from B<-w> complaints
+about improper numeric conversions.
+
+Portability issues: L<perlport/ioctl>.
+
+=item join EXPR,LIST
+X<join>
+
+Joins the separate strings of LIST into a single string with fields
+separated by the value of EXPR, and returns that new string.  Example:
+
+    $rec = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
+
+Beware that unlike C<split>, C<join> doesn't take a pattern as its
+first argument.  Compare L</split>.
+
+=item keys HASH
+X<keys> X<key>
+
+=item keys ARRAY
+
+=item keys EXPR
+
+Returns a list consisting of all the keys of the named hash, or the indices
+of an array. (In scalar context, returns the number of keys or indices.)
+
+The keys of a hash are returned in an apparently random order.  The actual
+random order is subject to change in future versions of Perl, but it
+is guaranteed to be the same order as either the C<values> or C<each>
+function produces (given that the hash has not been modified).  Since
+Perl 5.8.1 the ordering can be different even between different runs of
+Perl for security reasons (see L<perlsec/"Algorithmic Complexity
+Attacks">).
+
+As a side effect, calling keys() resets the internal interator of the HASH or ARRAY
+(see L</each>).  In particular, calling keys() in void context resets
+the iterator with no other overhead.
+
+Here is yet another way to print your environment:
+
+    @keys = keys %ENV;
+    @values = values %ENV;
+    while (@keys) {
+        print pop(@keys), '=', pop(@values), "\n";
+    }
+
+or how about sorted by key:
+
+    foreach $key (sort(keys %ENV)) {
+        print $key, '=', $ENV{$key}, "\n";
+    }
+
+The returned values are copies of the original keys in the hash, so
+modifying them will not affect the original hash.  Compare L</values>.
+
+To sort a hash by value, you'll need to use a C<sort> function.
+Here's a descending numeric sort of a hash by its values:
+
+    foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash) {
+        printf "%4d %s\n", $hash{$key}, $key;
+    }
+
+Used as an lvalue, C<keys> allows you to increase the number of hash buckets
+allocated for the given hash.  This can gain you a measure of efficiency if
+you know the hash is going to get big.  (This is similar to pre-extending
+an array by assigning a larger number to $#array.)  If you say
+
+    keys %hash = 200;
+
+then C<%hash> will have at least 200 buckets allocated for it--256 of them,
+in fact, since it rounds up to the next power of two.  These
+buckets will be retained even if you do C<%hash = ()>, use C<undef
+%hash> if you want to free the storage while C<%hash> is still in scope.
+You can't shrink the number of buckets allocated for the hash using
+C<keys> in this way (but you needn't worry about doing this by accident,
+as trying has no effect). C<keys @array> in an lvalue context is a syntax
+error.
+
+Starting with Perl 5.14, C<keys> can take a scalar EXPR, which must contain
+a reference to an unblessed hash or array.  The argument will be
+dereferenced automatically.  This aspect of C<keys> is considered highly
+experimental.  The exact behaviour may change in a future version of Perl.
+
+    for (keys $hashref) { ... }
+    for (keys $obj->get_arrayref) { ... }
+
+See also C<each>, C<values>, and C<sort>.
+
+=item kill SIGNAL, LIST
+X<kill> X<signal>
+
+Sends a signal to a list of processes.  Returns the number of
+processes successfully signaled (which is not necessarily the
+same as the number actually killed).
+
+    $cnt = kill 1, $child1, $child2;
+    kill 9, @goners;
+
+If SIGNAL is zero, no signal is sent to the process, but C<kill>
+checks whether it's I<possible> to send a signal to it (that
+means, to be brief, that the process is owned by the same user, or we are
+the super-user).  This is useful to check that a child process is still
+alive (even if only as a zombie) and hasn't changed its UID.  See
+L<perlport> for notes on the portability of this construct.
+
+Unlike in the shell, if SIGNAL is negative, it kills process groups instead
+of processes. That means you usually want to use positive not negative signals.
+You may also use a signal name in quotes.
+
+The behavior of kill when a I<PROCESS> number is zero or negative depends on
+the operating system.  For example, on POSIX-conforming systems, zero will
+signal the current process group and -1 will signal all processes.
+
+See L<perlipc/"Signals"> for more details.
+
+On some platforms such as Windows where the fork() system call is not available.
+Perl can be built to emulate fork() at the interpreter level.
+This emulation has limitations related to kill that have to be considered,
+for code running on Windows and in code intended to be portable.
+
+See L<perlfork> for more details.
+
+Portability issues: L<perlport/kill>.
+
+=item last LABEL
+X<last> X<break>
+
+=item last
+
+The C<last> command is like the C<break> statement in C (as used in
+loops); it immediately exits the loop in question.  If the LABEL is
+omitted, the command refers to the innermost enclosing loop.  The
+C<continue> block, if any, is not executed:
+
+    LINE: while (<STDIN>) {
+        last LINE if /^$/;  # exit when done with header
+        #...
+    }
+
+C<last> cannot be used to exit a block that returns a value such as
+C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
+a grep() or map() operation.
+
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus C<last> can be used to effect an early
+exit out of such a block.
+
+See also L</continue> for an illustration of how C<last>, C<next>, and
+C<redo> work.
+
+=item lc EXPR
+X<lc> X<lowercase>
+
+=item lc
+
+Returns a lowercased version of EXPR.  This is the internal function
+implementing the C<\L> escape in double-quoted strings.
+
+If EXPR is omitted, uses C<$_>.
+
+What gets returned depends on several factors:
+
+=over
+
+=item If C<use bytes> is in effect:
+
+=over
+
+=item On EBCDIC platforms
+
+The results are what the C language system call C<tolower()> returns.
+
+=item On ASCII platforms
+
+The results follow ASCII semantics.  Only characters C<A-Z> change, to C<a-z>
+respectively.
+
+=back
+
+=item Otherwise, If EXPR has the UTF8 flag set
+
+Unicode semantics are used for the case change.
+
+=item Otherwise, if C<use locale> is in effect
+
+Respects current LC_CTYPE locale.  See L<perllocale>.
+
+=item Otherwise, if C<use feature 'unicode_strings'> is in effect:
+
+Unicode semantics are used for the case change.
+
+=item Otherwise:
+
+=over
+
+=item On EBCDIC platforms
+
+The results are what the C language system call C<tolower()> returns.
+
+=item On ASCII platforms
+
+ASCII semantics are used for the case change.  The lowercase of any character
+outside the ASCII range is the character itself.
+
+=back
+
+=back
+
+=item lcfirst EXPR
+X<lcfirst> X<lowercase>
+
+=item lcfirst
+
+Returns the value of EXPR with the first character lowercased.  This
+is the internal function implementing the C<\l> escape in
+double-quoted strings.
+
+If EXPR is omitted, uses C<$_>.
+
+This function behaves the same way under various pragmata, such as in a locale,
+as L</lc> does.
+
+=item length EXPR
+X<length> X<size>
+
+=item length
+
+Returns the length in I<characters> of the value of EXPR.  If EXPR is
+omitted, returns the length of C<$_>.  If EXPR is undefined, returns
+C<undef>.
+
+This function cannot be used on an entire array or hash to find out how
+many elements these have.  For that, use C<scalar @array> and C<scalar keys
+%hash>, respectively.
+
+Like all Perl character operations, length() normally deals in logical
+characters, not physical bytes.  For how many bytes a string encoded as
+UTF-8 would take up, use C<length(Encode::encode_utf8(EXPR))> (you'll have
+to C<use Encode> first).  See L<Encode> and L<perlunicode>.
+
+=item __LINE__
+X<__LINE__>
+
+A special token that compiles to the current line number.
+
+=item link OLDFILE,NEWFILE
+X<link>
+
+Creates a new filename linked to the old filename.  Returns true for
+success, false otherwise.
+
+Portability issues: L<perlport/link>.
+
+=item listen SOCKET,QUEUESIZE
+X<listen>
+
+Does the same thing that the listen(2) system call does.  Returns true if
+it succeeded, false otherwise.  See the example in
+L<perlipc/"Sockets: Client/Server Communication">.
+
+=item local EXPR
+X<local>
+
+You really probably want to be using C<my> instead, because C<local> isn't
+what most people think of as "local".  See
+L<perlsub/"Private Variables via my()"> for details.
+
+A local modifies the listed variables to be local to the enclosing
+block, file, or eval.  If more than one value is listed, the list must
+be placed in parentheses.  See L<perlsub/"Temporary Values via local()">
+for details, including issues with tied arrays and hashes.
+
+The C<delete local EXPR> construct can also be used to localize the deletion
+of array/hash elements to the current block.
+See L<perlsub/"Localized deletion of elements of composite types">.
+
+=item localtime EXPR
+X<localtime> X<ctime>
+
+=item localtime
+
+Converts a time as returned by the time function to a 9-element list
+with the time analyzed for the local time zone.  Typically used as
+follows:
+
+    #  0    1    2     3     4    5     6     7     8
+    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
+                                                localtime(time);
+
+All list elements are numeric and come straight out of the C `struct
+tm'.  C<$sec>, C<$min>, and C<$hour> are the seconds, minutes, and hours
+of the specified time.
+
+C<$mday> is the day of the month and C<$mon> the month in
+the range C<0..11>, with 0 indicating January and 11 indicating December.
+This makes it easy to get a month name from a list:
+
+    my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
+    print "$abbr[$mon] $mday";
+    # $mon=9, $mday=18 gives "Oct 18"
+
+C<$year> is the number of years since 1900, B<not> just the last two digits
+of the year.  That is, C<$year> is C<123> in year 2023.  The proper way
+to get a 4-digit year is simply:
+
+    $year += 1900;
+
+Otherwise you create non-Y2K-compliant programs--and you wouldn't want
+to do that, would you?
+
+To get the last two digits of the year (e.g., "01" in 2001) do:
+
+    $year = sprintf("%02d", $year % 100);
+
+C<$wday> is the day of the week, with 0 indicating Sunday and 3 indicating
+Wednesday.  C<$yday> is the day of the year, in the range C<0..364>
+(or C<0..365> in leap years.)
+
+C<$isdst> is true if the specified time occurs during Daylight Saving
+Time, false otherwise.
+
+If EXPR is omitted, C<localtime()> uses the current time (as returned
+by time(3)).
+
+In scalar context, C<localtime()> returns the ctime(3) value:
+
+    $now_string = localtime;  # e.g., "Thu Oct 13 04:54:34 1994"
+
+This scalar value is B<not> locale-dependent but is a Perl builtin. For GMT
+instead of local time use the L</gmtime> builtin. See also the
+C<Time::Local> module (for converting seconds, minutes, hours, and such back to
+the integer value returned by time()), and the L<POSIX> module's strftime(3)
+and mktime(3) functions.
+
+To get somewhat similar but locale-dependent date strings, set up your
+locale environment variables appropriately (please see L<perllocale>) and
+try for example:
+
+    use POSIX qw(strftime);
+    $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
+    # or for GMT formatted appropriately for your locale:
+    $now_string = strftime "%a %b %e %H:%M:%S %Y", gmtime;
+
+Note that the C<%a> and C<%b>, the short forms of the day of the week
+and the month of the year, may not necessarily be three characters wide.
+
+The L<Time::gmtime> and L<Time::localtime> modules provide a convenient,
+by-name access mechanism to the gmtime() and localtime() functions,
+respectively.
+
+For a comprehensive date and time representation look at the
+L<DateTime> module on CPAN.
+
+Portability issues: L<perlport/localtime>.
+
+=item lock THING
+X<lock>
+
+This function places an advisory lock on a shared variable or referenced
+object contained in I<THING> until the lock goes out of scope.
+
+The value returned is the scalar itself, if the argument is a scalar, or a
+reference, if the argument is a hash, array or subroutine.
+
+lock() is a "weak keyword" : this means that if you've defined a function
+by this name (before any calls to it), that function will be called
+instead.  If you are not under C<use threads::shared> this does nothing.
+See L<threads::shared>.
+
+=item log EXPR
+X<log> X<logarithm> X<e> X<ln> X<base>
+
+=item log
+
+Returns the natural logarithm (base I<e>) of EXPR.  If EXPR is omitted,
+returns the log of C<$_>.  To get the
+log of another base, use basic algebra:
+The base-N log of a number is equal to the natural log of that number
+divided by the natural log of N.  For example:
+
+    sub log10 {
+        my $n = shift;
+        return log($n)/log(10);
+    }
+
+See also L</exp> for the inverse operation.
+
+=item lstat FILEHANDLE
+X<lstat>
+
+=item lstat EXPR
+
+=item lstat DIRHANDLE
+
+=item lstat
+
+Does the same thing as the C<stat> function (including setting the
+special C<_> filehandle) but stats a symbolic link instead of the file
+the symbolic link points to.  If symbolic links are unimplemented on
+your system, a normal C<stat> is done.  For much more detailed
+information, please see the documentation for C<stat>.
+
+If EXPR is omitted, stats C<$_>.
+
+Portability issues: L<perlport/lstat>.
+
+=item m//
+
+The match operator.  See L<perlop/"Regexp Quote-Like Operators">.
+
+=item map BLOCK LIST
+X<map>
+
+=item map EXPR,LIST
+
+Evaluates the BLOCK or EXPR for each element of LIST (locally setting
+C<$_> to each element) and returns the list value composed of the
+results of each such evaluation.  In scalar context, returns the
+total number of elements so generated.  Evaluates BLOCK or EXPR in
+list context, so each element of LIST may produce zero, one, or
+more elements in the returned value.
+
+    @chars = map(chr, @numbers);
+
+translates a list of numbers to the corresponding characters.
+
+    my @squares = map { $_ * $_ } @numbers;
+
+translates a list of numbers to their squared values.
+
+    my @squares = map { $_ > 5 ? ($_ * $_) : () } @numbers;
+
+shows that number of returned elements can differ from the number of
+input elements. To omit an element, return an empty list ().
+This could also be achieved by writing
+
+    my @squares = map { $_ * $_ } grep { $_ > 5 } @numbers;
+
+which makes the intention more clear.
+
+Map always returns a list, which can be
+assigned to a hash such that the elements
+become key/value pairs. See L<perldata> for more details.
+
+    %hash = map { get_a_key_for($_) => $_ } @array;
+
+is just a funny way to write
+
+    %hash = ();
+    foreach (@array) {
+        $hash{get_a_key_for($_)} = $_;
+    }
+
+Note that C<$_> is an alias to the list value, so it can be used to
+modify the elements of the LIST.  While this is useful and supported,
+it can cause bizarre results if the elements of LIST are not variables.
+Using a regular C<foreach> loop for this purpose would be clearer in
+most cases.  See also L</grep> for an array composed of those items of
+the original list for which the BLOCK or EXPR evaluates to true.
+
+If C<$_> is lexical in the scope where the C<map> appears (because it has
+been declared with C<my $_>), then, in addition to being locally aliased to
+the list elements, C<$_> keeps being lexical inside the block; that is, it
+can't be seen from the outside, avoiding any potential side-effects.
+
+C<{> starts both hash references and blocks, so C<map { ...> could be either
+the start of map BLOCK LIST or map EXPR, LIST. Because Perl doesn't look
+ahead for the closing C<}> it has to take a guess at which it's dealing with
+based on what it finds just after the C<{>. Usually it gets it right, but if it
+doesn't it won't realize something is wrong until it gets to the C<}> and
+encounters the missing (or unexpected) comma. The syntax error will be
+reported close to the C<}>, but you'll need to change something near the C<{>
+such as using a unary C<+> to give Perl some help:
+
+    %hash = map {  "\L$_" => 1  } @array  # perl guesses EXPR.  wrong
+    %hash = map { +"\L$_" => 1  } @array  # perl guesses BLOCK. right
+    %hash = map { ("\L$_" => 1) } @array  # this also works
+    %hash = map {  lc($_) => 1  } @array  # as does this.
+    %hash = map +( lc($_) => 1 ), @array  # this is EXPR and works!
+
+    %hash = map  ( lc($_), 1 ),   @array  # evaluates to (1, @array)
+
+or to force an anon hash constructor use C<+{>:
+
+   @hashes = map +{ lc($_) => 1 }, @array # EXPR, so needs comma at end
+
+to get a list of anonymous hashes each with only one entry apiece.
+
+=item mkdir FILENAME,MASK
+X<mkdir> X<md> X<directory, create>
+
+=item mkdir FILENAME
+
+=item mkdir
+
+Creates the directory specified by FILENAME, with permissions
+specified by MASK (as modified by C<umask>).  If it succeeds it
+returns true; otherwise it returns false and sets C<$!> (errno).
+MASK defaults to 0777 if omitted, and FILENAME defaults
+to C<$_> if omitted.
+
+In general, it is better to create directories with a permissive MASK
+and let the user modify that with their C<umask> than it is to supply
+a restrictive MASK and give the user no way to be more permissive.
+The exceptions to this rule are when the file or directory should be
+kept private (mail files, for instance).  The perlfunc(1) entry on
+C<umask> discusses the choice of MASK in more detail.
+
+Note that according to the POSIX 1003.1-1996 the FILENAME may have any
+number of trailing slashes.  Some operating and filesystems do not get
+this right, so Perl automatically removes all trailing slashes to keep
+everyone happy.
+
+To recursively create a directory structure, look at
+the C<mkpath> function of the L<File::Path> module.
+
+=item msgctl ID,CMD,ARG
+X<msgctl>
+
+Calls the System V IPC function msgctl(2).  You'll probably have to say
+
+    use IPC::SysV;
+
+first to get the correct constant definitions.  If CMD is C<IPC_STAT>,
+then ARG must be a variable that will hold the returned C<msqid_ds>
+structure.  Returns like C<ioctl>: the undefined value for error,
+C<"0 but true"> for zero, or the actual return value otherwise.  See also
+L<perlipc/"SysV IPC"> and the documentation for C<IPC::SysV> and
+C<IPC::Semaphore>.
+
+Portability issues: L<perlport/msgctl>.
+
+=item msgget KEY,FLAGS
+X<msgget>
+
+Calls the System V IPC function msgget(2).  Returns the message queue
+id, or C<undef> on error.  See also
+L<perlipc/"SysV IPC"> and the documentation for C<IPC::SysV> and
+C<IPC::Msg>.
+
+Portability issues: L<perlport/msgget>.
+
+=item msgrcv ID,VAR,SIZE,TYPE,FLAGS
+X<msgrcv>
+
+Calls the System V IPC function msgrcv to receive a message from
+message queue ID into variable VAR with a maximum message size of
+SIZE.  Note that when a message is received, the message type as a
+native long integer will be the first thing in VAR, followed by the
+actual message.  This packing may be opened with C<unpack("l! a*")>.
+Taints the variable.  Returns true if successful, false 
+on error.  See also L<perlipc/"SysV IPC"> and the documentation for
+C<IPC::SysV> and C<IPC::SysV::Msg>.
+
+Portability issues: L<perlport/msgrcv>.
+
+=item msgsnd ID,MSG,FLAGS
+X<msgsnd>
+
+Calls the System V IPC function msgsnd to send the message MSG to the
+message queue ID.  MSG must begin with the native long integer message
+type, be followed by the length of the actual message, and then finally
+the message itself.  This kind of packing can be achieved with
+C<pack("l! a*", $type, $message)>.  Returns true if successful,
+false on error.  See also the C<IPC::SysV>
+and C<IPC::SysV::Msg> documentation.
+
+Portability issues: L<perlport/msgsnd>.
+
+=item my EXPR
+X<my>
+
+=item my TYPE EXPR
+
+=item my EXPR : ATTRS
+
+=item my TYPE EXPR : ATTRS
+
+A C<my> declares the listed variables to be local (lexically) to the
+enclosing block, file, or C<eval>.  If more than one value is listed,
+the list must be placed in parentheses.
+
+The exact semantics and interface of TYPE and ATTRS are still
+evolving.  TYPE is currently bound to the use of the C<fields> pragma,
+and attributes are handled using the C<attributes> pragma, or starting
+from Perl 5.8.0 also via the C<Attribute::Handlers> module.  See
+L<perlsub/"Private Variables via my()"> for details, and L<fields>,
+L<attributes>, and L<Attribute::Handlers>.
+
+=item next LABEL
+X<next> X<continue>
+
+=item next
+
+The C<next> command is like the C<continue> statement in C; it starts
+the next iteration of the loop:
+
+    LINE: while (<STDIN>) {
+        next LINE if /^#/;  # discard comments
+        #...
+    }
+
+Note that if there were a C<continue> block on the above, it would get
+executed even on discarded lines.  If LABEL is omitted, the command
+refers to the innermost enclosing loop.
+
+C<next> cannot be used to exit a block which returns a value such as
+C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
+a grep() or map() operation.
+
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus C<next> will exit such a block early.
+
+See also L</continue> for an illustration of how C<last>, C<next>, and
+C<redo> work.
+
+=item no MODULE VERSION LIST
+X<no declarations>
+X<unimporting>
+
+=item no MODULE VERSION
+
+=item no MODULE LIST
+
+=item no MODULE
+
+=item no VERSION
+
+See the C<use> function, of which C<no> is the opposite.
+
+=item oct EXPR
+X<oct> X<octal> X<hex> X<hexadecimal> X<binary> X<bin>
+
+=item oct
+
+Interprets EXPR as an octal string and returns the corresponding
+value.  (If EXPR happens to start off with C<0x>, interprets it as a
+hex string.  If EXPR starts off with C<0b>, it is interpreted as a
+binary string.  Leading whitespace is ignored in all three cases.)
+The following will handle decimal, binary, octal, and hex in standard
+Perl notation:
+
+    $val = oct($val) if $val =~ /^0/;
+
+If EXPR is omitted, uses C<$_>.   To go the other way (produce a number
+in octal), use sprintf() or printf():
+
+    $dec_perms = (stat("filename"))[2] & 07777;
+    $oct_perm_str = sprintf "%o", $perms;
+
+The oct() function is commonly used when a string such as C<644> needs
+to be converted into a file mode, for example.  Although Perl 
+automatically converts strings into numbers as needed, this automatic
+conversion assumes base 10.
+
+Leading white space is ignored without warning, as too are any trailing 
+non-digits, such as a decimal point (C<oct> only handles non-negative
+integers, not negative integers or floating point).
+
+=item open FILEHANDLE,EXPR
+X<open> X<pipe> X<file, open> X<fopen>
+
+=item open FILEHANDLE,MODE,EXPR
+
+=item open FILEHANDLE,MODE,EXPR,LIST
+
+=item open FILEHANDLE,MODE,REFERENCE
+
+=item open FILEHANDLE
+
+Opens the file whose filename is given by EXPR, and associates it with
+FILEHANDLE.
+
+Simple examples to open a file for reading:
+
+    open(my $fh, "<", "input.txt") 
+	or die "cannot open < input.txt: $!";
+
+and for writing:
+
+    open(my $fh, ">", "output.txt") 
+	or die "cannot open > output.txt: $!";
+
+(The following is a comprehensive reference to open(): for a gentler
+introduction you may consider L<perlopentut>.)
+
+If FILEHANDLE is an undefined scalar variable (or array or hash element), a
+new filehandle is autovivified, meaning that the variable is assigned a
+reference to a newly allocated anonymous filehandle.  Otherwise if
+FILEHANDLE is an expression, its value is the real filehandle.  (This is
+considered a symbolic reference, so C<use strict "refs"> should I<not> be
+in effect.)
+
+If EXPR is omitted, the global (package) scalar variable of the same
+name as the FILEHANDLE contains the filename.  (Note that lexical 
+variables--those declared with C<my> or C<state>--will not work for this
+purpose; so if you're using C<my> or C<state>, specify EXPR in your
+call to open.)
+
+If three (or more) arguments are specified, the open mode (including
+optional encoding) in the second argument are distinct from the filename in
+the third.  If MODE is C<< < >> or nothing, the file is opened for input.
+If MODE is C<< > >>, the file is opened for output, with existing files
+first being truncated ("clobbered") and nonexisting files newly created.
+If MODE is C<<< >> >>>, the file is opened for appending, again being
+created if necessary.
+
+You can put a C<+> in front of the C<< > >> or C<< < >> to
+indicate that you want both read and write access to the file; thus
+C<< +< >> is almost always preferred for read/write updates--the 
+C<< +> >> mode would clobber the file first.  You cant usually use
+either read-write mode for updating textfiles, since they have
+variable-length records.  See the B<-i> switch in L<perlrun> for a
+better approach.  The file is created with permissions of C<0666>
+modified by the process's C<umask> value.
+
+These various prefixes correspond to the fopen(3) modes of C<r>,
+C<r+>, C<w>, C<w+>, C<a>, and C<a+>.
+
+In the one- and two-argument forms of the call, the mode and filename
+should be concatenated (in that order), preferably separated by white
+space.  You can--but shouldn't--omit the mode in these forms when that mode
+is C<< < >>.  It is always safe to use the two-argument form of C<open> if
+the filename argument is a known literal.
+
+For three or more arguments if MODE is C<|->, the filename is
+interpreted as a command to which output is to be piped, and if MODE
+is C<-|>, the filename is interpreted as a command that pipes
+output to us.  In the two-argument (and one-argument) form, one should
+replace dash (C<->) with the command.
+See L<perlipc/"Using open() for IPC"> for more examples of this.
+(You are not allowed to C<open> to a command that pipes both in I<and>
+out, but see L<IPC::Open2>, L<IPC::Open3>, and
+L<perlipc/"Bidirectional Communication with Another Process"> for
+alternatives.)
+
+In the form of pipe opens taking three or more arguments, if LIST is specified
+(extra arguments after the command name) then LIST becomes arguments
+to the command invoked if the platform supports it.  The meaning of
+C<open> with more than three arguments for non-pipe modes is not yet
+defined, but experimental "layers" may give extra LIST arguments
+meaning.
+
+In the two-argument (and one-argument) form, opening C<< <- >> 
+or C<-> opens STDIN and opening C<< >- >> opens STDOUT.
+
+You may (and usually should) use the three-argument form of open to specify
+I/O layers (sometimes referred to as "disciplines") to apply to the handle
+that affect how the input and output are processed (see L<open> and
+L<PerlIO> for more details). For example:
+
+  open(my $fh, "<:encoding(UTF-8)", "filename")
+    || die "can't open UTF-8 encoded filename: $!";
+
+opens the UTF8-encoded file containing Unicode characters;
+see L<perluniintro>. Note that if layers are specified in the
+three-argument form, then default layers stored in ${^OPEN} (see L<perlvar>;
+usually set by the B<open> pragma or the switch B<-CioD>) are ignored.
+Those layers will also be ignored if you specifying a colon with no name
+following it.  In that case the default layer for the operating system
+(:raw on Unix, :crlf on Windows) is used.
+
+Open returns nonzero on success, the undefined value otherwise.  If
+the C<open> involved a pipe, the return value happens to be the pid of
+the subprocess.
+
+If you're running Perl on a system that distinguishes between text
+files and binary files, then you should check out L</binmode> for tips
+for dealing with this.  The key distinction between systems that need
+C<binmode> and those that don't is their text file formats.  Systems
+like Unix, Mac OS, and Plan 9, that end lines with a single
+character and encode that character in C as C<"\n"> do not
+need C<binmode>.  The rest need it.
+
+When opening a file, it's seldom a good idea to continue 
+if the request failed, so C<open> is frequently used with
+C<die>.  Even if C<die> won't do what you want (say, in a CGI script,
+where you want to format a suitable error message (but there are
+modules that can help with that problem)) always check
+the return value from opening a file.  
+
+As a special case the three-argument form with a read/write mode and the third
+argument being C<undef>:
+
+    open(my $tmp, "+>", undef) or die ...
+
+opens a filehandle to an anonymous temporary file.  Also using C<< +< >>
+works for symmetry, but you really should consider writing something
+to the temporary file first.  You will need to seek() to do the
+reading.
+
+Since v5.8.0, Perl has built using PerlIO by default.  Unless you've
+changed this (such as building Perl with C<Configure -Uuseperlio>), you can
+open filehandles directly to Perl scalars via:
+
+    open($fh, ">", \$variable) || ..
+
+To (re)open C<STDOUT> or C<STDERR> as an in-memory file, close it first:
+
+    close STDOUT;
+    open(STDOUT, ">", \$variable)
+	or die "Can't open STDOUT: $!";
+
+General examples:
+
+    $ARTICLE = 100;
+    open(ARTICLE) or die "Can't find article $ARTICLE: $!\n";
+    while (<ARTICLE>) {...
+
+    open(LOG, ">>/usr/spool/news/twitlog");  # (log is reserved)
+    # if the open fails, output is discarded
+
+    open(my $dbase, "+<", "dbase.mine")      # open for update
+        or die "Can't open 'dbase.mine' for update: $!";
+
+    open(my $dbase, "+<dbase.mine")          # ditto
+        or die "Can't open 'dbase.mine' for update: $!";
+
+    open(ARTICLE, "-|", "caesar <$article")  # decrypt article
+        or die "Can't start caesar: $!";
+
+    open(ARTICLE, "caesar <$article |")      # ditto
+        or die "Can't start caesar: $!";
+
+    open(EXTRACT, "|sort >Tmp$$")            # $$ is our process id
+        or die "Can't start sort: $!";
+
+    # in-memory files
+    open(MEMORY, ">", \$var)
+        or die "Can't open memory file: $!";
+    print MEMORY "foo!\n";                   # output will appear in $var
+
+    # process argument list of files along with any includes
+
+    foreach $file (@ARGV) {
+        process($file, "fh00");
+    }
+
+    sub process {
+        my($filename, $input) = @_;
+        $input++;    # this is a string increment
+        unless (open($input, "<", $filename)) {
+            print STDERR "Can't open $filename: $!\n";
+            return;
+        }
+
+        local $_;
+        while (<$input>) {    # note use of indirection
+            if (/^#include "(.*)"/) {
+                process($1, $input);
+                next;
+            }
+            #...          # whatever
+        }
+    }
+
+See L<perliol> for detailed info on PerlIO.
+
+You may also, in the Bourne shell tradition, specify an EXPR beginning
+with C<< >& >>, in which case the rest of the string is interpreted
+as the name of a filehandle (or file descriptor, if numeric) to be
+duped (as C<dup(2)>) and opened.  You may use C<&> after C<< > >>,
+C<<< >> >>>, C<< < >>, C<< +> >>, C<<< +>> >>>, and C<< +< >>.
+The mode you specify should match the mode of the original filehandle.
+(Duping a filehandle does not take into account any existing contents
+of IO buffers.) If you use the three-argument form, then you can pass either a
+number, the name of a filehandle, or the normal "reference to a glob".
+
+Here is a script that saves, redirects, and restores C<STDOUT> and
+C<STDERR> using various methods:
+
+    #!/usr/bin/perl
+    open(my $oldout, ">&STDOUT")     or die "Can't dup STDOUT: $!";
+    open(OLDERR,     ">&", \*STDERR) or die "Can't dup STDERR: $!";
+
+    open(STDOUT, '>', "foo.out") or die "Can't redirect STDOUT: $!";
+    open(STDERR, ">&STDOUT")     or die "Can't dup STDOUT: $!";
+
+    select STDERR; $| = 1;  # make unbuffered
+    select STDOUT; $| = 1;  # make unbuffered
+
+    print STDOUT "stdout 1\n";  # this works for
+    print STDERR "stderr 1\n";  # subprocesses too
+
+    open(STDOUT, ">&", $oldout) or die "Can't dup \$oldout: $!";
+    open(STDERR, ">&OLDERR")    or die "Can't dup OLDERR: $!";
+
+    print STDOUT "stdout 2\n";
+    print STDERR "stderr 2\n";
+
+If you specify C<< '<&=X' >>, where C<X> is a file descriptor number
+or a filehandle, then Perl will do an equivalent of C's C<fdopen> of
+that file descriptor (and not call C<dup(2)>); this is more
+parsimonious of file descriptors.  For example:
+
+    # open for input, reusing the fileno of $fd
+    open(FILEHANDLE, "<&=$fd")
+
+or
+
+    open(FILEHANDLE, "<&=", $fd)
+
+or
+
+    # open for append, using the fileno of OLDFH
+    open(FH, ">>&=", OLDFH)
+
+or
+
+    open(FH, ">>&=OLDFH")
+
+Being parsimonious on filehandles is also useful (besides being
+parsimonious) for example when something is dependent on file
+descriptors, like for example locking using flock().  If you do just
+C<< open(A, ">>&B") >>, the filehandle A will not have the same file
+descriptor as B, and therefore flock(A) will not flock(B) nor vice
+versa.  But with C<< open(A, ">>&=B") >>, the filehandles will share
+the same underlying system file descriptor.
+
+Note that under Perls older than 5.8.0, Perl uses the standard C library's'
+fdopen() to implement the C<=> functionality.  On many Unix systems,
+fdopen() fails when file descriptors exceed a certain value, typically 255.
+For Perls 5.8.0 and later, PerlIO is (most often) the default.
+
+You can see whether your Perl was built with PerlIO by running C<perl -V>
+and looking for the C<useperlio=> line.  If C<useperlio> is C<define>, you
+have PerlIO; otherwise you don't.
+
+If you open a pipe on the command C<-> (that is, specify either C<|-> or C<-|>
+with the one- or two-argument forms of C<open>), 
+an implicit C<fork> is done, so C<open> returns twice: in the parent
+process it returns the pid
+of the child process, and in the child process it returns (a defined) C<0>.
+Use C<defined($pid)> or C<//> to determine whether the open was successful.
+
+For example, use either
+
+    $child_pid = open(FROM_KID, "-|") 	// die "can't fork: $!";
+
+or
+    $child_pid = open(TO_KID,   "|-") 	// die "can't fork: $!";
+
+followed by 
+
+    if ($child_pid) {
+	# am the parent:
+	# either write TO_KID or else read FROM_KID
+	...
+	wait $child_pid;
+    } else {
+	# am the child; use STDIN/STDOUT normally
+	...
+	exit;
+    } 
+
+The filehandle behaves normally for the parent, but I/O to that
+filehandle is piped from/to the STDOUT/STDIN of the child process.
+In the child process, the filehandle isn't opened--I/O happens from/to
+the new STDOUT/STDIN.  Typically this is used like the normal
+piped open when you want to exercise more control over just how the
+pipe command gets executed, such as when running setuid and
+you don't want to have to scan shell commands for metacharacters.
+
+The following blocks are more or less equivalent:
+
+    open(FOO, "|tr '[a-z]' '[A-Z]'");
+    open(FOO, "|-", "tr '[a-z]' '[A-Z]'");
+    open(FOO, "|-") || exec 'tr', '[a-z]', '[A-Z]';
+    open(FOO, "|-", "tr", '[a-z]', '[A-Z]');
+
+    open(FOO, "cat -n '$file'|");
+    open(FOO, "-|", "cat -n '$file'");
+    open(FOO, "-|") || exec "cat", "-n", $file;
+    open(FOO, "-|", "cat", "-n", $file);
+
+The last two examples in each block show the pipe as "list form", which is
+not yet supported on all platforms.  A good rule of thumb is that if
+your platform has a real C<fork()> (in other words, if your platform is
+Unix, including Linux and MacOS X), you can use the list form.  You would 
+want to use the list form of the pipe so you can pass literal arguments
+to the command without risk of the shell interpreting any shell metacharacters
+in them.  However, this also bars you from opening pipes to commands
+that intentionally contain shell metacharacters, such as:
+
+    open(FOO, "|cat -n | expand -4 | lpr")
+	// die "Can't open pipeline to lpr: $!";
+
+See L<perlipc/"Safe Pipe Opens"> for more examples of this.
+
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see L<perlport>).  To be safe, you may need
+to set C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method
+of C<IO::Handle> on any open handles.
+
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor as determined by the value
+of C<$^F>.  See L<perlvar/$^F>.
+
+Closing any piped filehandle causes the parent process to wait for the
+child to finish, then returns the status value in C<$?> and
+C<${^CHILD_ERROR_NATIVE}>.
+
+The filename passed to the one- and two-argument forms of open() will
+have leading and trailing whitespace deleted and normal
+redirection characters honored.  This property, known as "magic open",
+can often be used to good effect.  A user could specify a filename of
+F<"rsh cat file |">, or you could change certain filenames as needed:
+
+    $filename =~ s/(.*\.gz)\s*$/gzip -dc < $1|/;
+    open(FH, $filename) or die "Can't open $filename: $!";
+
+Use the three-argument form to open a file with arbitrary weird characters in it,
+
+    open(FOO, "<", $file)
+	|| die "can't open < $file: $!";
+
+otherwise it's necessary to protect any leading and trailing whitespace:
+
+    $file =~ s#^(\s)#./$1#;
+    open(FOO, "< $file\0")
+	|| die "open failed: $!";
+
+(this may not work on some bizarre filesystems).  One should
+conscientiously choose between the I<magic> and I<three-argument> form
+of open():
+
+    open(IN, $ARGV[0]) || die "can't open $ARGV[0]: $!";
+
+will allow the user to specify an argument of the form C<"rsh cat file |">,
+but will not work on a filename that happens to have a trailing space, while
+
+    open(IN, "<", $ARGV[0])
+	|| die "can't open < $ARGV[0]: $!";
+
+will have exactly the opposite restrictions.
+
+If you want a "real" C C<open> (see L<open(2)> on your system), then you
+should use the C<sysopen> function, which involves no such magic (but may
+use subtly different filemodes than Perl open(), which is mapped to C
+fopen()).  This is another way to protect your filenames from
+interpretation.  For example:
+
+    use IO::Handle;
+    sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL)
+        or die "sysopen $path: $!";
+    $oldfh = select(HANDLE); $| = 1; select($oldfh);
+    print HANDLE "stuff $$\n";
+    seek(HANDLE, 0, 0);
+    print "File contains: ", <HANDLE>;
+
+Using the constructor from the C<IO::Handle> package (or one of its
+subclasses, such as C<IO::File> or C<IO::Socket>), you can generate anonymous
+filehandles that have the scope of the variables used to hold them, then
+automatically (but silently) close once their reference counts become
+zero, typically at scope exit:
+
+    use IO::File;
+    #...
+    sub read_myfile_munged {
+        my $ALL = shift;
+	# or just leave it undef to autoviv
+        my $handle = IO::File->new;
+        open($handle, "<", "myfile") or die "myfile: $!";
+        $first = <$handle>
+            or return ();     # Automatically closed here.
+        mung($first) or die "mung failed";  # Or here.
+        return (first, <$handle>) if $ALL;  # Or here.
+        return $first;                      # Or here.
+    }
+
+B<WARNING:> The previous example has a bug because the automatic
+close that happens when the refcount on C<handle> does not
+properly detect and report failures.  I<Always> close the handle
+yourself and inspect the return value.
+
+    close($handle) 
+	|| warn "close failed: $!";
+
+See L</seek> for some details about mixing reading and writing.
+
+Portability issues: L<perlport/open>.
+
+=item opendir DIRHANDLE,EXPR
+X<opendir>
+
+Opens a directory named EXPR for processing by C<readdir>, C<telldir>,
+C<seekdir>, C<rewinddir>, and C<closedir>.  Returns true if successful.
+DIRHANDLE may be an expression whose value can be used as an indirect
+dirhandle, usually the real dirhandle name.  If DIRHANDLE is an undefined
+scalar variable (or array or hash element), the variable is assigned a
+reference to a new anonymous dirhandle; that is, it's autovivified.
+DIRHANDLEs have their own namespace separate from FILEHANDLEs.
+
+See the example at C<readdir>.
+
+=item ord EXPR
+X<ord> X<encoding>
+
+=item ord
+
+Returns the numeric value of the first character of EXPR.
+If EXPR is an empty string, returns 0.  If EXPR is omitted, uses C<$_>.
+(Note I<character>, not byte.)
+
+For the reverse, see L</chr>.
+See L<perlunicode> for more about Unicode.
+
+=item our EXPR
+X<our> X<global>
+
+=item our TYPE EXPR
+
+=item our EXPR : ATTRS
+
+=item our TYPE EXPR : ATTRS
+
+C<our> associates a simple name with a package variable in the current
+package for use within the current scope.  When C<use strict 'vars'> is in
+effect, C<our> lets you use declared global variables without qualifying
+them with package names, within the lexical scope of the C<our> declaration.
+In this way C<our> differs from C<use vars>, which is package-scoped.
+
+Unlike C<my> or C<state>, which allocates storage for a variable and
+associates a simple name with that storage for use within the current
+scope, C<our> associates a simple name with a package (read: global)
+variable in the current package, for use within the current lexical scope.
+In other words, C<our> has the same scoping rules as C<my> or C<state>, but
+does not necessarily create a variable.
+
+If more than one value is listed, the list must be placed
+in parentheses.
+
+    our $foo;
+    our($bar, $baz);
+
+An C<our> declaration declares a global variable that will be visible
+across its entire lexical scope, even across package boundaries.  The
+package in which the variable is entered is determined at the point
+of the declaration, not at the point of use.  This means the following
+behavior holds:
+
+    package Foo;
+    our $bar;      # declares $Foo::bar for rest of lexical scope
+    $bar = 20;
+
+    package Bar;
+    print $bar;    # prints 20, as it refers to $Foo::bar
+
+Multiple C<our> declarations with the same name in the same lexical
+scope are allowed if they are in different packages.  If they happen
+to be in the same package, Perl will emit warnings if you have asked
+for them, just like multiple C<my> declarations.  Unlike a second
+C<my> declaration, which will bind the name to a fresh variable, a
+second C<our> declaration in the same package, in the same scope, is
+merely redundant.
+
+    use warnings;
+    package Foo;
+    our $bar;      # declares $Foo::bar for rest of lexical scope
+    $bar = 20;
+
+    package Bar;
+    our $bar = 30; # declares $Bar::bar for rest of lexical scope
+    print $bar;    # prints 30
+
+    our $bar;      # emits warning but has no other effect
+    print $bar;    # still prints 30
+
+An C<our> declaration may also have a list of attributes associated
+with it.
+
+The exact semantics and interface of TYPE and ATTRS are still
+evolving.  TYPE is currently bound to the use of C<fields> pragma,
+and attributes are handled using the C<attributes> pragma, or starting
+from Perl 5.8.0 also via the C<Attribute::Handlers> module.  See
+L<perlsub/"Private Variables via my()"> for details, and L<fields>,
+L<attributes>, and L<Attribute::Handlers>.
+
+=item pack TEMPLATE,LIST
+X<pack>
+
+Takes a LIST of values and converts it into a string using the rules
+given by the TEMPLATE.  The resulting string is the concatenation of
+the converted values.  Typically, each converted value looks
+like its machine-level representation.  For example, on 32-bit machines
+an integer may be represented by a sequence of 4 bytes, which  will in
+Perl be presented as a string that's 4 characters long. 
+
+See L<perlpacktut> for an introduction to this function.
+
+The TEMPLATE is a sequence of characters that give the order and type
+of values, as follows:
+
+    a  A string with arbitrary binary data, will be null padded.
+    A  A text (ASCII) string, will be space padded.
+    Z  A null-terminated (ASCIZ) string, will be null padded.
+
+    b  A bit string (ascending bit order inside each byte,
+       like vec()).
+    B  A bit string (descending bit order inside each byte).
+    h  A hex string (low nybble first).
+    H  A hex string (high nybble first).
+
+    c  A signed char (8-bit) value.
+    C  An unsigned char (octet) value.
+    W  An unsigned char value (can be greater than 255).
+
+    s  A signed short (16-bit) value.
+    S  An unsigned short value.
+
+    l  A signed long (32-bit) value.
+    L  An unsigned long value.
+
+    q  A signed quad (64-bit) value.
+    Q  An unsigned quad value.
+         (Quads are available only if your system supports 64-bit
+          integer values _and_ if Perl has been compiled to support
+          those.  Raises an exception otherwise.)
+
+    i  A signed integer value.
+    I  A unsigned integer value.
+         (This 'integer' is _at_least_ 32 bits wide.  Its exact
+          size depends on what a local C compiler calls 'int'.)
+
+    n  An unsigned short (16-bit) in "network" (big-endian) order.
+    N  An unsigned long (32-bit) in "network" (big-endian) order.
+    v  An unsigned short (16-bit) in "VAX" (little-endian) order.
+    V  An unsigned long (32-bit) in "VAX" (little-endian) order.
+
+    j  A Perl internal signed integer value (IV).
+    J  A Perl internal unsigned integer value (UV).
+
+    f  A single-precision float in native format.
+    d  A double-precision float in native format.
+
+    F  A Perl internal floating-point value (NV) in native format
+    D  A float of long-double precision in native format.
+         (Long doubles are available only if your system supports
+          long double values _and_ if Perl has been compiled to
+          support those.  Raises an exception otherwise.)
+
+    p  A pointer to a null-terminated string.
+    P  A pointer to a structure (fixed-length string).
+
+    u  A uuencoded string.
+    U  A Unicode character number.  Encodes to a character in char-
+       acter mode and UTF-8 (or UTF-EBCDIC in EBCDIC platforms) in
+       byte mode.
+
+    w  A BER compressed integer (not an ASN.1 BER, see perlpacktut
+       for details).  Its bytes represent an unsigned integer in
+       base 128, most significant digit first, with as few digits
+       as possible.  Bit eight (the high bit) is set on each byte
+       except the last.
+
+    x  A null byte (a.k.a ASCII NUL, "\000", chr(0))
+    X  Back up a byte.
+    @  Null-fill or truncate to absolute position, counted from the
+       start of the innermost ()-group.
+    .  Null-fill or truncate to absolute position specified by
+       the value.
+    (  Start of a ()-group.
+
+One or more modifiers below may optionally follow certain letters in the
+TEMPLATE (the second column lists letters for which the modifier is valid):
+
+    !   sSlLiI     Forces native (short, long, int) sizes instead
+                   of fixed (16-/32-bit) sizes.
+
+        xX         Make x and X act as alignment commands.
+
+        nNvV       Treat integers as signed instead of unsigned.
+
+        @.         Specify position as byte offset in the internal
+                   representation of the packed string. Efficient but
+                   dangerous.
+
+    >   sSiIlLqQ   Force big-endian byte-order on the type.
+        jJfFdDpP   (The "big end" touches the construct.)
+
+    <   sSiIlLqQ   Force little-endian byte-order on the type.
+        jJfFdDpP   (The "little end" touches the construct.)
+
+The C<< > >> and C<< < >> modifiers can also be used on C<()> groups 
+to force a particular byte-order on all components in that group, 
+including all its subgroups.
+
+The following rules apply:
+
+=over 
+
+=item *
+
+Each letter may optionally be followed by a number indicating the repeat
+count.  A numeric repeat count may optionally be enclosed in brackets, as
+in C<pack("C[80]", @arr)>.  The repeat count gobbles that many values from
+the LIST when used with all format types other than C<a>, C<A>, C<Z>, C<b>,
+C<B>, C<h>, C<H>, C<@>, C<.>, C<x>, C<X>, and C<P>, where it means
+something else, described below.  Supplying a C<*> for the repeat count
+instead of a number means to use however many items are left, except for:
+
+=over 
+
+=item * 
+
+C<@>, C<x>, and C<X>, where it is equivalent to C<0>.
+
+=item * 
+
+<.>, where it means relative to the start of the string.
+
+=item * 
+
+C<u>, where it is equivalent to 1 (or 45, which here is equivalent).
+
+=back 
+
+One can replace a numeric repeat count with a template letter enclosed in
+brackets to use the packed byte length of the bracketed template for the
+repeat count.
+
+For example, the template C<x[L]> skips as many bytes as in a packed long,
+and the template C<"$t X[$t] $t"> unpacks twice whatever $t (when
+variable-expanded) unpacks.  If the template in brackets contains alignment
+commands (such as C<x![d]>), its packed length is calculated as if the
+start of the template had the maximal possible alignment.
+
+When used with C<Z>, a C<*> as the repeat count is guaranteed to add a
+trailing null byte, so the resulting string is always one byte longer than
+the byte length of the item itself.
+
+When used with C<@>, the repeat count represents an offset from the start
+of the innermost C<()> group.
+
+When used with C<.>, the repeat count determines the starting position to
+calculate the value offset as follows:
+
+=over 
+
+=item *
+
+If the repeat count is C<0>, it's relative to the current position.
+
+=item *
+
+If the repeat count is C<*>, the offset is relative to the start of the
+packed string.
+
+=item *
+
+And if it's an integer I<n>, the offset is relative to the start of the
+I<n>th innermost C<( )> group, or to the start of the string if I<n> is
+bigger then the group level.
+
+=back
+
+The repeat count for C<u> is interpreted as the maximal number of bytes
+to encode per line of output, with 0, 1 and 2 replaced by 45. The repeat 
+count should not be more than 65.
+
+=item *
+
+The C<a>, C<A>, and C<Z> types gobble just one value, but pack it as a
+string of length count, padding with nulls or spaces as needed.  When
+unpacking, C<A> strips trailing whitespace and nulls, C<Z> strips everything
+after the first null, and C<a> returns data with no stripping at all.
+
+If the value to pack is too long, the result is truncated.  If it's too
+long and an explicit count is provided, C<Z> packs only C<$count-1> bytes,
+followed by a null byte.  Thus C<Z> always packs a trailing null, except
+when the count is 0.
+
+=item *
+
+Likewise, the C<b> and C<B> formats pack a string that's that many bits long.
+Each such format generates 1 bit of the result.  These are typically followed
+by a repeat count like C<B8> or C<B64>.
+
+Each result bit is based on the least-significant bit of the corresponding
+input character, i.e., on C<ord($char)%2>.  In particular, characters C<"0">
+and C<"1"> generate bits 0 and 1, as do characters C<"\000"> and C<"\001">.
+
+Starting from the beginning of the input string, each 8-tuple
+of characters is converted to 1 character of output.  With format C<b>,
+the first character of the 8-tuple determines the least-significant bit of a
+character; with format C<B>, it determines the most-significant bit of
+a character.
+
+If the length of the input string is not evenly divisible by 8, the
+remainder is packed as if the input string were padded by null characters
+at the end.  Similarly during unpacking, "extra" bits are ignored.
+
+If the input string is longer than needed, remaining characters are ignored.
+
+A C<*> for the repeat count uses all characters of the input field.  
+On unpacking, bits are converted to a string of C<0>s and C<1>s.
+
+=item *
+
+The C<h> and C<H> formats pack a string that many nybbles (4-bit groups,
+representable as hexadecimal digits, C<"0".."9"> C<"a".."f">) long.
+
+For each such format, pack() generates 4 bits of result.
+With non-alphabetical characters, the result is based on the 4 least-significant
+bits of the input character, i.e., on C<ord($char)%16>.  In particular,
+characters C<"0"> and C<"1"> generate nybbles 0 and 1, as do bytes
+C<"\000"> and C<"\001">.  For characters C<"a".."f"> and C<"A".."F">, the result
+is compatible with the usual hexadecimal digits, so that C<"a"> and
+C<"A"> both generate the nybble C<0xA==10>.  Use only these specific hex 
+characters with this format.
+
+Starting from the beginning of the template to pack(), each pair
+of characters is converted to 1 character of output.  With format C<h>, the
+first character of the pair determines the least-significant nybble of the
+output character; with format C<H>, it determines the most-significant
+nybble.
+
+If the length of the input string is not even, it behaves as if padded by
+a null character at the end.  Similarly, "extra" nybbles are ignored during
+unpacking.
+
+If the input string is longer than needed, extra characters are ignored.
+
+A C<*> for the repeat count uses all characters of the input field.  For
+unpack(), nybbles are converted to a string of hexadecimal digits.
+
+=item *
+
+The C<p> format packs a pointer to a null-terminated string.  You are
+responsible for ensuring that the string is not a temporary value, as that
+could potentially get deallocated before you got around to using the packed
+result.  The C<P> format packs a pointer to a structure of the size indicated
+by the length.  A null pointer is created if the corresponding value for
+C<p> or C<P> is C<undef>; similarly with unpack(), where a null pointer
+unpacks into C<undef>.
+
+If your system has a strange pointer size--meaning a pointer is neither as
+big as an int nor as big as a long--it may not be possible to pack or
+unpack pointers in big- or little-endian byte order.  Attempting to do
+so raises an exception.
+
+=item *
+
+The C</> template character allows packing and unpacking of a sequence of
+items where the packed structure contains a packed item count followed by
+the packed items themselves.  This is useful when the structure you're
+unpacking has encoded the sizes or repeat counts for some of its fields
+within the structure itself as separate fields.
+
+For C<pack>, you write I<length-item>C</>I<sequence-item>, and the
+I<length-item> describes how the length value is packed. Formats likely
+to be of most use are integer-packing ones like C<n> for Java strings,
+C<w> for ASN.1 or SNMP, and C<N> for Sun XDR.
+
+For C<pack>, I<sequence-item> may have a repeat count, in which case
+the minimum of that and the number of available items is used as the argument
+for I<length-item>. If it has no repeat count or uses a '*', the number
+of available items is used.
+
+For C<unpack>, an internal stack of integer arguments unpacked so far is
+used. You write C</>I<sequence-item> and the repeat count is obtained by
+popping off the last element from the stack. The I<sequence-item> must not
+have a repeat count.
+
+If I<sequence-item> refers to a string type (C<"A">, C<"a">, or C<"Z">),
+the I<length-item> is the string length, not the number of strings.  With
+an explicit repeat count for pack, the packed string is adjusted to that
+length.  For example:
+
+ This code:                              gives this result:
+ 
+  unpack("W/a", "\004Gurusamy")          ("Guru")
+  unpack("a3/A A*", "007 Bond  J ")      (" Bond", "J")
+  unpack("a3 x2 /A A*", "007: Bond, J.") ("Bond, J", ".")
+
+  pack("n/a* w/a","hello,","world")     "\000\006hello,\005world"
+  pack("a/W2", ord("a") .. ord("z"))    "2ab"
+
+The I<length-item> is not returned explicitly from C<unpack>.
+
+Supplying a count to the I<length-item> format letter is only useful with
+C<A>, C<a>, or C<Z>.  Packing with a I<length-item> of C<a> or C<Z> may
+introduce C<"\000"> characters, which Perl does not regard as legal in
+numeric strings.
+
+=item *
+
+The integer types C<s>, C<S>, C<l>, and C<L> may be
+followed by a C<!> modifier to specify native shorts or
+longs.  As shown in the example above, a bare C<l> means
+exactly 32 bits, although the native C<long> as seen by the local C compiler
+may be larger.  This is mainly an issue on 64-bit platforms.  You can
+see whether using C<!> makes any difference this way:
+
+    printf "format s is %d, s! is %d\n", 
+	length pack("s"), length pack("s!");
+
+    printf "format l is %d, l! is %d\n", 
+	length pack("l"), length pack("l!");
+
+
+C<i!> and C<I!> are also allowed, but only for completeness' sake:
+they are identical to C<i> and C<I>.
+
+The actual sizes (in bytes) of native shorts, ints, longs, and long
+longs on the platform where Perl was built are also available from
+the command line:
+
+    $ perl -V:{short,int,long{,long}}size
+    shortsize='2';
+    intsize='4';
+    longsize='4';
+    longlongsize='8';
+
+or programmatically via the C<Config> module:
+
+       use Config;
+       print $Config{shortsize},    "\n";
+       print $Config{intsize},      "\n";
+       print $Config{longsize},     "\n";
+       print $Config{longlongsize}, "\n";
+
+C<$Config{longlongsize}> is undefined on systems without 
+long long support.
+
+=item *
+
+The integer formats C<s>, C<S>, C<i>, C<I>, C<l>, C<L>, C<j>, and C<J> are
+inherently non-portable between processors and operating systems because
+they obey native byteorder and endianness.  For example, a 4-byte integer
+0x12345678 (305419896 decimal) would be ordered natively (arranged in and
+handled by the CPU registers) into bytes as
+
+    0x12 0x34 0x56 0x78  # big-endian
+    0x78 0x56 0x34 0x12  # little-endian
+
+Basically, Intel and VAX CPUs are little-endian, while everybody else,
+including Motorola m68k/88k, PPC, Sparc, HP PA, Power, and Cray, are
+big-endian.  Alpha and MIPS can be either: Digital/Compaq uses (well, used) 
+them in little-endian mode, but SGI/Cray uses them in big-endian mode.
+
+The names I<big-endian> and I<little-endian> are comic references to the
+egg-eating habits of the little-endian Lilliputians and the big-endian
+Blefuscudians from the classic Jonathan Swift satire, I<Gulliver's Travels>.
+This entered computer lingo via the paper "On Holy Wars and a Plea for
+Peace" by Danny Cohen, USC/ISI IEN 137, April 1, 1980.
+
+Some systems may have even weirder byte orders such as
+
+   0x56 0x78 0x12 0x34
+   0x34 0x12 0x78 0x56
+
+You can determine your system endianness with this incantation:
+
+   printf("%#02x ", $_) for unpack("W*", pack L=>0x12345678); 
+
+The byteorder on the platform where Perl was built is also available
+via L<Config>:
+
+    use Config;
+    print "$Config{byteorder}\n";
+
+or from the command line:
+
+    $ perl -V:byteorder
+
+Byteorders C<"1234"> and C<"12345678"> are little-endian; C<"4321">
+and C<"87654321"> are big-endian.
+
+For portably packed integers, either use the formats C<n>, C<N>, C<v>, 
+and C<V> or else use the C<< > >> and C<< < >> modifiers described
+immediately below.  See also L<perlport>.
+
+=item *
+
+Starting with Perl 5.9.2, integer and floating-point formats, along with
+the C<p> and C<P> formats and C<()> groups, may all be followed by the 
+C<< > >> or C<< < >> endianness modifiers to respectively enforce big-
+or little-endian byte-order.  These modifiers are especially useful 
+given how C<n>, C<N>, C<v>, and C<V> don't cover signed integers, 
+64-bit integers, or floating-point values.
+
+Here are some concerns to keep in mind when using an endianness modifier:
+
+=over
+
+=item * 
+
+Exchanging signed integers between different platforms works only 
+when all platforms store them in the same format.  Most platforms store
+signed integers in two's-complement notation, so usually this is not an issue.
+
+=item * 
+
+The C<< > >> or C<< < >> modifiers can only be used on floating-point
+formats on big- or little-endian machines.  Otherwise, attempting to
+use them raises an exception.
+
+=item * 
+
+Forcing big- or little-endian byte-order on floating-point values for
+data exchange can work only if all platforms use the same
+binary representation such as IEEE floating-point.  Even if all
+platforms are using IEEE, there may still be subtle differences.  Being able
+to use C<< > >> or C<< < >> on floating-point values can be useful,
+but also dangerous if you don't know exactly what you're doing.
+It is not a general way to portably store floating-point values.
+
+=item * 
+
+When using C<< > >> or C<< < >> on a C<()> group, this affects
+all types inside the group that accept byte-order modifiers,
+including all subgroups.  It is silently ignored for all other
+types.  You are not allowed to override the byte-order within a group
+that already has a byte-order modifier suffix.
+
+=back
+
+=item *
+
+Real numbers (floats and doubles) are in native machine format only.
+Due to the multiplicity of floating-point formats and the lack of a
+standard "network" representation for them, no facility for interchange has been
+made.  This means that packed floating-point data written on one machine
+may not be readable on another, even if both use IEEE floating-point
+arithmetic (because the endianness of the memory representation is not part
+of the IEEE spec).  See also L<perlport>.
+
+If you know I<exactly> what you're doing, you can use the C<< > >> or C<< < >>
+modifiers to force big- or little-endian byte-order on floating-point values.
+
+Because Perl uses doubles (or long doubles, if configured) internally for
+all numeric calculation, converting from double into float and thence 
+to double again loses precision, so C<unpack("f", pack("f", $foo)>)
+will not in general equal $foo.
+
+=item *
+
+Pack and unpack can operate in two modes: character mode (C<C0> mode) where
+the packed string is processed per character, and UTF-8 mode (C<U0> mode)
+where the packed string is processed in its UTF-8-encoded Unicode form on
+a byte-by-byte basis. Character mode is the default unless the format string 
+starts with C<U>. You can always switch mode mid-format with an explicit 
+C<C0> or C<U0> in the format.  This mode remains in effect until the next 
+mode change, or until the end of the C<()> group it (directly) applies to.
+
+Using C<C0> to get Unicode characters while using C<U0> to get I<non>-Unicode 
+bytes is not necessarily obvious.   Probably only the first of these
+is what you want:
+
+    $ perl -CS -E 'say "\x{3B1}\x{3C9}"' | 
+      perl -CS -ne 'printf "%v04X\n", $_ for unpack("C0A*", $_)'
+    03B1.03C9
+    $ perl -CS -E 'say "\x{3B1}\x{3C9}"' | 
+      perl -CS -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
+    CE.B1.CF.89
+    $ perl -CS -E 'say "\x{3B1}\x{3C9}"' | 
+      perl -C0 -ne 'printf "%v02X\n", $_ for unpack("C0A*", $_)'
+    CE.B1.CF.89
+    $ perl -CS -E 'say "\x{3B1}\x{3C9}"' | 
+      perl -C0 -ne 'printf "%v02X\n", $_ for unpack("U0A*", $_)'
+    C3.8E.C2.B1.C3.8F.C2.89
+
+Those examples also illustrate that you should not try to use
+C<pack>/C<unpack> as a substitute for the L<Encode> module.
+
+=item *
+
+You must yourself do any alignment or padding by inserting, for example,
+enough C<"x">es while packing.  There is no way for pack() and unpack()
+to know where characters are going to or coming from, so they 
+handle their output and input as flat sequences of characters.
+
+=item *
+
+A C<()> group is a sub-TEMPLATE enclosed in parentheses.  A group may
+take a repeat count either as postfix, or for unpack(), also via the C</>
+template character.  Within each repetition of a group, positioning with
+C<@> starts over at 0. Therefore, the result of
+
+    pack("@1A((@2A)@3A)", qw[X Y Z])
+
+is the string C<"\0X\0\0YZ">.
+
+=item *
+
+C<x> and C<X> accept the C<!> modifier to act as alignment commands: they
+jump forward or back to the closest position aligned at a multiple of C<count>
+characters. For example, to pack() or unpack() a C structure like
+
+    struct {
+	char   c;    /* one signed, 8-bit character */
+	double d; 
+	char   cc[2];
+    }
+
+one may need to use the template C<c x![d] d c[2]>.  This assumes that
+doubles must be aligned to the size of double.
+
+For alignment commands, a C<count> of 0 is equivalent to a C<count> of 1;
+both are no-ops.
+
+=item *
+
+C<n>, C<N>, C<v> and C<V> accept the C<!> modifier to
+represent signed 16-/32-bit integers in big-/little-endian order.
+This is portable only when all platforms sharing packed data use the
+same binary representation for signed integers; for example, when all
+platforms use two's-complement representation.
+
+=item *
+
+Comments can be embedded in a TEMPLATE using C<#> through the end of line.
+White space can separate pack codes from each other, but modifiers and
+repeat counts must follow immediately.  Breaking complex templates into
+individual line-by-line components, suitably annotated, can do as much to
+improve legibility and maintainability of pack/unpack formats as C</x> can
+for complicated pattern matches.
+
+=item *
+
+If TEMPLATE requires more arguments than pack() is given, pack()
+assumes additional C<""> arguments.  If TEMPLATE requires fewer arguments
+than given, extra arguments are ignored.
+
+=back
+
+Examples:
+
+    $foo = pack("WWWW",65,66,67,68);
+    # foo eq "ABCD"
+    $foo = pack("W4",65,66,67,68);
+    # same thing
+    $foo = pack("W4",0x24b6,0x24b7,0x24b8,0x24b9);
+    # same thing with Unicode circled letters.
+    $foo = pack("U4",0x24b6,0x24b7,0x24b8,0x24b9);
+    # same thing with Unicode circled letters. You don't get the
+    # UTF-8 bytes because the U at the start of the format caused
+    # a switch to U0-mode, so the UTF-8 bytes get joined into
+    # characters
+    $foo = pack("C0U4",0x24b6,0x24b7,0x24b8,0x24b9);
+    # foo eq "\xe2\x92\xb6\xe2\x92\xb7\xe2\x92\xb8\xe2\x92\xb9"
+    # This is the UTF-8 encoding of the string in the
+    # previous example
+
+    $foo = pack("ccxxcc",65,66,67,68);
+    # foo eq "AB\0\0CD"
+
+    # NOTE: The examples above featuring "W" and "c" are true
+    # only on ASCII and ASCII-derived systems such as ISO Latin 1
+    # and UTF-8.  On EBCDIC systems, the first example would be
+    #      $foo = pack("WWWW",193,194,195,196);
+
+    $foo = pack("s2",1,2);
+    # "\001\000\002\000" on little-endian
+    # "\000\001\000\002" on big-endian
+
+    $foo = pack("a4","abcd","x","y","z");
+    # "abcd"
+
+    $foo = pack("aaaa","abcd","x","y","z");
+    # "axyz"
+
+    $foo = pack("a14","abcdefg");
+    # "abcdefg\0\0\0\0\0\0\0"
+
+    $foo = pack("i9pl", gmtime);
+    # a real struct tm (on my system anyway)
+
+    $utmp_template = "Z8 Z8 Z16 L";
+    $utmp = pack($utmp_template, @utmp1);
+    # a struct utmp (BSDish)
+
+    @utmp2 = unpack($utmp_template, $utmp);
+    # "@utmp1" eq "@utmp2"
+
+    sub bintodec {
+        unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
+    }
+
+    $foo = pack('sx2l', 12, 34);
+    # short 12, two zero bytes padding, long 34
+    $bar = pack('s at 4l', 12, 34);
+    # short 12, zero fill to position 4, long 34
+    # $foo eq $bar
+    $baz = pack('s.l', 12, 4, 34);
+    # short 12, zero fill to position 4, long 34
+
+    $foo = pack('nN', 42, 4711);
+    # pack big-endian 16- and 32-bit unsigned integers
+    $foo = pack('S>L>', 42, 4711);
+    # exactly the same
+    $foo = pack('s<l<', -42, 4711);
+    # pack little-endian 16- and 32-bit signed integers
+    $foo = pack('(sl)<', -42, 4711);
+    # exactly the same
+
+The same template may generally also be used in unpack().
+
+=item package NAMESPACE
+
+=item package NAMESPACE VERSION
+X<package> X<module> X<namespace> X<version>
+
+=item package NAMESPACE BLOCK
+
+=item package NAMESPACE VERSION BLOCK
+X<package> X<module> X<namespace> X<version>
+
+Declares the BLOCK or the rest of the compilation unit as being in the
+given namespace.  The scope of the package declaration is either the
+supplied code BLOCK or, in the absence of a BLOCK, from the declaration
+itself through the end of current scope (the enclosing block, file, or
+C<eval>).  That is, the forms without a BLOCK are operative through the end
+of the current scope, just like the C<my>, C<state>, and C<our> operators.
+All unqualified dynamic identifiers in this scope will be in the given
+namespace, except where overridden by another C<package> declaration or
+when they're one of the special identifiers that qualify into C<main::>,
+like C<STDOUT>, C<ARGV>, C<ENV>, and the punctuation variables.
+
+A package statement affects dynamic variables only, including those
+you've used C<local> on, but I<not> lexical variables, which are created
+with C<my>, C<state>, or C<our>.  Typically it would be the first 
+declaration in a file included by C<require> or C<use>.  You can switch into a
+package in more than one place, since this only determines which default 
+symbol table the compiler uses for the rest of that block.  You can refer to
+identifiers in other packages than the current one by prefixing the identifier
+with the package name and a double colon, as in C<$SomePack::var>
+or C<ThatPack::INPUT_HANDLE>.  If package name is omitted, the C<main>
+package as assumed.  That is, C<$::sail> is equivalent to
+C<$main::sail> (as well as to C<$main'sail>, still seen in ancient
+code, mostly from Perl 4).
+
+If VERSION is provided, C<package> sets the C<$VERSION> variable in the given
+namespace to a L<version> object with the VERSION provided.  VERSION must be a
+"strict" style version number as defined by the L<version> module: a positive
+decimal number (integer or decimal-fraction) without exponentiation or else a
+dotted-decimal v-string with a leading 'v' character and at least three
+components.  You should set C<$VERSION> only once per package.
+
+See L<perlmod/"Packages"> for more information about packages, modules,
+and classes.  See L<perlsub> for other scoping issues.
+
+=item pipe READHANDLE,WRITEHANDLE
+X<pipe>
+
+Opens a pair of connected pipes like the corresponding system call.
+Note that if you set up a loop of piped processes, deadlock can occur
+unless you are very careful.  In addition, note that Perl's pipes use
+IO buffering, so you may need to set C<$|> to flush your WRITEHANDLE
+after each command, depending on the application.
+
+See L<IPC::Open2>, L<IPC::Open3>, and
+L<perlipc/"Bidirectional Communication with Another Process">
+for examples of such things.
+
+On systems that support a close-on-exec flag on files, that flag is set
+on all newly opened file descriptors whose C<fileno>s are I<higher> than 
+the current value of $^F (by default 2 for C<STDERR>).  See L<perlvar/$^F>.
+
+=item __PACKAGE__
+X<__PACKAGE__>
+
+A special token that returns the name of the package in which it occurs.
+
+=item pop ARRAY
+X<pop> X<stack>
+
+=item pop EXPR
+
+=item pop
+
+Pops and returns the last value of the array, shortening the array by
+one element.
+
+Returns the undefined value if the array is empty, although this may also
+happen at other times.  If ARRAY is omitted, pops the C<@ARGV> array in the
+main program, but the C<@_> array in subroutines, just like C<shift>.
+
+Starting with Perl 5.14, C<pop> can take a scalar EXPR, which must hold a
+reference to an unblessed array.  The argument will be dereferenced
+automatically.  This aspect of C<pop> is considered highly experimental.
+The exact behaviour may change in a future version of Perl.
+
+=item pos SCALAR
+X<pos> X<match, position>
+
+=item pos
+
+Returns the offset of where the last C<m//g> search left off for the
+variable in question (C<$_> is used when the variable is not
+specified). Note that 0 is a valid match offset. C<undef> indicates
+that the search position is reset (usually due to match failure, but
+can also be because no match has yet been run on the scalar).
+
+C<pos> directly accesses the location used by the regexp engine to
+store the offset, so assigning to C<pos> will change that offset, and
+so will also influence the C<\G> zero-width assertion in regular
+expressions. Both of these effects take place for the next match, so
+you can't affect the position with C<pos> during the current match,
+such as in C<(?{pos() = 5})> or C<s//pos() = 5/e>.
+
+Setting C<pos> also resets the I<matched with zero-length> flag, described
+under L<perlre/"Repeated Patterns Matching a Zero-length Substring">.
+
+Because a failed C<m//gc> match doesn't reset the offset, the return
+from C<pos> won't change either in this case.  See L<perlre> and
+L<perlop>.
+
+=item print FILEHANDLE LIST
+X<print>
+
+=item print FILEHANDLE
+
+=item print LIST
+
+=item print
+
+Prints a string or a list of strings.  Returns true if successful.
+FILEHANDLE may be a scalar variable containing the name of or a reference
+to the filehandle, thus introducing one level of indirection.  (NOTE: If
+FILEHANDLE is a variable and the next token is a term, it may be
+misinterpreted as an operator unless you interpose a C<+> or put
+parentheses around the arguments.) If FILEHANDLE is omitted, prints to the
+last selected (see L</select>) output handle.  If LIST is omitted, prints
+C<$_> to the currently selected output handle.  To use FILEHANDLE alone to
+print the content of C<$_> to it, you must use a real filehandle like
+C<FH>, not an indirect one like C<$fh>.  To set the default output handle
+to something other than STDOUT, use the select operation.
+
+The current value of C<$,> (if any) is printed between each LIST item.  The
+current value of C<$\> (if any) is printed after the entire LIST has been
+printed.  Because print takes a LIST, anything in the LIST is evaluated in
+list context, including any subroutines whose return lists you pass to
+C<print>.  Be careful not to follow the print keyword with a left
+parenthesis unless you want the corresponding right parenthesis to
+terminate the arguments to the print; put parentheses around all arguments
+(or interpose a C<+>, but that doesn't look as good).
+
+If you're storing handles in an array or hash, or in general whenever
+you're using any expression more complex than a bareword handle or a plain,
+unsubscripted scalar variable to retrieve it, you will have to use a block
+returning the filehandle value instead, in which case the LIST may not be
+omitted:
+
+    print { $files[$i] } "stuff\n";
+    print { $OK ? STDOUT : STDERR } "stuff\n";
+
+Printing to a closed pipe or socket will generate a SIGPIPE signal.  See
+L<perlipc> for more on signal handling.
+
+=item printf FILEHANDLE FORMAT, LIST
+X<printf>
+
+=item printf FILEHANDLE
+
+=item printf FORMAT, LIST
+
+=item printf
+
+Equivalent to C<print FILEHANDLE sprintf(FORMAT, LIST)>, except that C<$\>
+(the output record separator) is not appended.  The first argument of the
+list will be interpreted as the C<printf> format. See
+L<sprintf|/sprintf FORMAT, LIST> for an
+explanation of the format argument.    If you omit the LIST, C<$_> is used;
+to use FILEHANDLE without a LIST, you must use a real filehandle like
+C<FH>, not an indirect one like C<$fh>.  If C<use locale> is in effect and
+POSIX::setlocale() has been called, the character used for the decimal
+separator in formatted floating-point numbers is affected by the LC_NUMERIC
+locale setting.  See L<perllocale> and L<POSIX>.
+
+Don't fall into the trap of using a C<printf> when a simple
+C<print> would do.  The C<print> is more efficient and less
+error prone.
+
+=item prototype FUNCTION
+X<prototype>
+
+Returns the prototype of a function as a string (or C<undef> if the
+function has no prototype).  FUNCTION is a reference to, or the name of,
+the function whose prototype you want to retrieve.
+
+If FUNCTION is a string starting with C<CORE::>, the rest is taken as a
+name for a Perl builtin.  If the builtin is not I<overridable> (such as
+C<qw//>) or if its arguments cannot be adequately expressed by a prototype
+(such as C<system>), prototype() returns C<undef>, because the builtin
+does not really behave like a Perl function.  Otherwise, the string
+describing the equivalent prototype is returned.
+
+=item push ARRAY,LIST
+X<push> X<stack>
+
+=item push EXPR,LIST
+
+Treats ARRAY as a stack by appending the values of LIST to the end of
+ARRAY.  The length of ARRAY increases by the length of LIST.  Has the same
+effect as
+
+    for $value (LIST) {
+        $ARRAY[++$#ARRAY] = $value;
+    }
+
+but is more efficient.  Returns the number of elements in the array following
+the completed C<push>.
+
+Starting with Perl 5.14, C<push> can take a scalar EXPR, which must hold a
+reference to an unblessed array.  The argument will be dereferenced
+automatically.  This aspect of C<push> is considered highly experimental.
+The exact behaviour may change in a future version of Perl.
+
+=item q/STRING/
+
+=item qq/STRING/
+
+=item qx/STRING/
+
+=item qw/STRING/
+
+Generalized quotes.  See L<perlop/"Quote-Like Operators">.
+
+=item qr/STRING/
+
+Regexp-like quote.  See L<perlop/"Regexp Quote-Like Operators">.
+
+=item quotemeta EXPR
+X<quotemeta> X<metacharacter>
+
+=item quotemeta
+
+Returns the value of EXPR with all non-"word"
+characters backslashed.  (That is, all characters not matching
+C</[A-Za-z_0-9]/> will be preceded by a backslash in the
+returned string, regardless of any locale settings.)
+This is the internal function implementing
+the C<\Q> escape in double-quoted strings.
+
+If EXPR is omitted, uses C<$_>.
+
+quotemeta (and C<\Q> ... C<\E>) are useful when interpolating strings into
+regular expressions, because by default an interpolated variable will be
+considered a mini-regular expression. For example:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    $sentence =~ s{$substring}{big bad wolf};
+
+Will cause C<$sentence> to become C<'The big bad wolf jumped over...'>.
+
+On the other hand:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    $sentence =~ s{\Q$substring\E}{big bad wolf};
+
+Or:
+
+    my $sentence = 'The quick brown fox jumped over the lazy dog';
+    my $substring = 'quick.*?fox';
+    my $quoted_substring = quotemeta($substring);
+    $sentence =~ s{$quoted_substring}{big bad wolf};
+
+Will both leave the sentence as is. Normally, when accepting literal string
+input from the user, quotemeta() or C<\Q> must be used.
+
+In Perl 5.14, all characters whose code points are above 127 are not
+quoted in UTF8-encoded strings, but all are quoted in UTF-8 strings.
+It is planned to change this behavior in 5.16, but the exact rules
+haven't been determined yet.
+
+=item rand EXPR
+X<rand> X<random>
+
+=item rand
+
+Returns a random fractional number greater than or equal to C<0> and less
+than the value of EXPR.  (EXPR should be positive.)  If EXPR is
+omitted, the value C<1> is used.  Currently EXPR with the value C<0> is
+also special-cased as C<1> (this was undocumented before Perl 5.8.0
+and is subject to change in future versions of Perl).  Automatically calls
+C<srand> unless C<srand> has already been called.  See also C<srand>.
+
+Apply C<int()> to the value returned by C<rand()> if you want random
+integers instead of random fractional numbers.  For example,
+
+    int(rand(10))
+
+returns a random integer between C<0> and C<9>, inclusive.
+
+(Note: If your rand function consistently returns numbers that are too
+large or too small, then your version of Perl was probably compiled
+with the wrong number of RANDBITS.)
+
+B<C<rand()> is not cryptographically secure.  You should not rely
+on it in security-sensitive situations.>  As of this writing, a
+number of third-party CPAN modules offer random number generators
+intended by their authors to be cryptographically secure,
+including: L<Data::Entropy>, L<Crypt::Random>, L<Math::Random::Secure>,
+and L<Math::TrulyRandom>.
+
+=item read FILEHANDLE,SCALAR,LENGTH,OFFSET
+X<read> X<file, read>
+
+=item read FILEHANDLE,SCALAR,LENGTH
+
+Attempts to read LENGTH I<characters> of data into variable SCALAR
+from the specified FILEHANDLE.  Returns the number of characters
+actually read, C<0> at end of file, or undef if there was an error (in
+the latter case C<$!> is also set).  SCALAR will be grown or shrunk 
+so that the last character actually read is the last character of the
+scalar after the read.
+
+An OFFSET may be specified to place the read data at some place in the
+string other than the beginning.  A negative OFFSET specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive OFFSET greater than the length of SCALAR
+results in the string being padded to the required size with C<"\0">
+bytes before the result of the read is appended.
+
+The call is implemented in terms of either Perl's or your system's native
+fread(3) library function.  To get a true read(2) system call, see
+L<sysread|/sysread FILEHANDLE,SCALAR,LENGTH,OFFSET>.
+
+Note the I<characters>: depending on the status of the filehandle,
+either (8-bit) bytes or characters are read.  By default, all
+filehandles operate on bytes, but for example if the filehandle has
+been opened with the C<:utf8> I/O layer (see L</open>, and the C<open>
+pragma, L<open>), the I/O will operate on UTF8-encoded Unicode
+characters, not bytes.  Similarly for the C<:encoding> pragma:
+in that case pretty much any characters can be read.
+
+=item readdir DIRHANDLE
+X<readdir>
+
+Returns the next directory entry for a directory opened by C<opendir>.
+If used in list context, returns all the rest of the entries in the
+directory.  If there are no more entries, returns the undefined value in
+scalar context and the empty list in list context.
+
+If you're planning to filetest the return values out of a C<readdir>, you'd
+better prepend the directory in question.  Otherwise, because we didn't
+C<chdir> there, it would have been testing the wrong file.
+
+    opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!";
+    @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh);
+    closedir $dh;
+
+As of Perl 5.11.2 you can use a bare C<readdir> in a C<while> loop,
+which will set C<$_> on every iteration.
+
+    opendir(my $dh, $some_dir) || die;
+    while(readdir $dh) {
+        print "$some_dir/$_\n";
+    }
+    closedir $dh;
+
+=item readline EXPR
+
+=item readline
+X<readline> X<gets> X<fgets>
+
+Reads from the filehandle whose typeglob is contained in EXPR (or from
+C<*ARGV> if EXPR is not provided).  In scalar context, each call reads and
+returns the next line until end-of-file is reached, whereupon the
+subsequent call returns C<undef>.  In list context, reads until end-of-file
+is reached and returns a list of lines.  Note that the notion of "line"
+used here is whatever you may have defined with C<$/> or
+C<$INPUT_RECORD_SEPARATOR>).  See L<perlvar/"$/">.
+
+When C<$/> is set to C<undef>, when C<readline> is in scalar
+context (i.e., file slurp mode), and when an empty file is read, it
+returns C<''> the first time, followed by C<undef> subsequently.
+
+This is the internal function implementing the C<< <EXPR> >>
+operator, but you can use it directly.  The C<< <EXPR> >>
+operator is discussed in more detail in L<perlop/"I/O Operators">.
+
+    $line = <STDIN>;
+    $line = readline(*STDIN);    # same thing
+
+If C<readline> encounters an operating system error, C<$!> will be set
+with the corresponding error message.  It can be helpful to check
+C<$!> when you are reading from filehandles you don't trust, such as a
+tty or a socket.  The following example uses the operator form of
+C<readline> and dies if the result is not defined.
+
+    while ( ! eof($fh) ) {
+        defined( $_ = <$fh> ) or die "readline failed: $!";
+        ...
+    }
+
+Note that you have can't handle C<readline> errors that way with the
+C<ARGV> filehandle. In that case, you have to open each element of
+C<@ARGV> yourself since C<eof> handles C<ARGV> differently.
+
+    foreach my $arg (@ARGV) {
+        open(my $fh, $arg) or warn "Can't open $arg: $!";
+
+        while ( ! eof($fh) ) {
+            defined( $_ = <$fh> )
+                or die "readline failed for $arg: $!";
+            ...
+        }
+    }
+
+=item readlink EXPR
+X<readlink>
+
+=item readlink
+
+Returns the value of a symbolic link, if symbolic links are
+implemented.  If not, raises an exception.  If there is a system
+error, returns the undefined value and sets C<$!> (errno).  If EXPR is
+omitted, uses C<$_>.
+
+Portability issues: L<perlport/readlink>.
+
+=item readpipe EXPR
+
+=item readpipe
+X<readpipe>
+
+EXPR is executed as a system command.
+The collected standard output of the command is returned.
+In scalar context, it comes back as a single (potentially
+multi-line) string.  In list context, returns a list of lines
+(however you've defined lines with C<$/> or C<$INPUT_RECORD_SEPARATOR>).
+This is the internal function implementing the C<qx/EXPR/>
+operator, but you can use it directly.  The C<qx/EXPR/>
+operator is discussed in more detail in L<perlop/"I/O Operators">.
+If EXPR is omitted, uses C<$_>.
+
+=item recv SOCKET,SCALAR,LENGTH,FLAGS
+X<recv>
+
+Receives a message on a socket.  Attempts to receive LENGTH characters
+of data into variable SCALAR from the specified SOCKET filehandle.
+SCALAR will be grown or shrunk to the length actually read.  Takes the
+same flags as the system call of the same name.  Returns the address
+of the sender if SOCKET's protocol supports this; returns an empty
+string otherwise.  If there's an error, returns the undefined value.
+This call is actually implemented in terms of recvfrom(2) system call.
+See L<perlipc/"UDP: Message Passing"> for examples.
+
+Note the I<characters>: depending on the status of the socket, either
+(8-bit) bytes or characters are received.  By default all sockets
+operate on bytes, but for example if the socket has been changed using
+binmode() to operate with the C<:encoding(utf8)> I/O layer (see the
+C<open> pragma, L<open>), the I/O will operate on UTF8-encoded Unicode
+characters, not bytes.  Similarly for the C<:encoding> pragma: in that
+case pretty much any characters can be read.
+
+=item redo LABEL
+X<redo>
+
+=item redo
+
+The C<redo> command restarts the loop block without evaluating the
+conditional again.  The C<continue> block, if any, is not executed.  If
+the LABEL is omitted, the command refers to the innermost enclosing
+loop.  Programs that want to lie to themselves about what was just input 
+normally use this command:
+
+    # a simpleminded Pascal comment stripper
+    # (warning: assumes no { or } in strings)
+    LINE: while (<STDIN>) {
+        while (s|({.*}.*){.*}|$1 |) {}
+        s|{.*}| |;
+        if (s|{.*| |) {
+            $front = $_;
+            while (<STDIN>) {
+                if (/}/) {  # end of comment?
+                    s|^|$front\{|;
+                    redo LINE;
+                }
+            }
+        }
+        print;
+    }
+
+C<redo> cannot be used to retry a block that returns a value such as
+C<eval {}>, C<sub {}>, or C<do {}>, and should not be used to exit
+a grep() or map() operation.
+
+Note that a block by itself is semantically identical to a loop
+that executes once.  Thus C<redo> inside such a block will effectively
+turn it into a looping construct.
+
+See also L</continue> for an illustration of how C<last>, C<next>, and
+C<redo> work.
+
+=item ref EXPR
+X<ref> X<reference>
+
+=item ref
+
+Returns a non-empty string if EXPR is a reference, the empty
+string otherwise. If EXPR
+is not specified, C<$_> will be used.  The value returned depends on the
+type of thing the reference is a reference to.
+Builtin types include:
+
+    SCALAR
+    ARRAY
+    HASH
+    CODE
+    REF
+    GLOB
+    LVALUE
+    FORMAT
+    IO
+    VSTRING
+    Regexp
+
+If the referenced object has been blessed into a package, then that package
+name is returned instead.  You can think of C<ref> as a C<typeof> operator.
+
+    if (ref($r) eq "HASH") {
+        print "r is a reference to a hash.\n";
+    }
+    unless (ref($r)) {
+        print "r is not a reference at all.\n";
+    }
+
+The return value C<LVALUE> indicates a reference to an lvalue that is not
+a variable. You get this from taking the reference of function calls like
+C<pos()> or C<substr()>. C<VSTRING> is returned if the reference points
+to a L<version string|perldata/"Version Strings">.
+
+The result C<Regexp> indicates that the argument is a regular expression
+resulting from C<qr//>.
+
+See also L<perlref>.
+
+=item rename OLDNAME,NEWNAME
+X<rename> X<move> X<mv> X<ren>
+
+Changes the name of a file; an existing file NEWNAME will be
+clobbered.  Returns true for success, false otherwise.
+
+Behavior of this function varies wildly depending on your system
+implementation.  For example, it will usually not work across file system
+boundaries, even though the system I<mv> command sometimes compensates
+for this.  Other restrictions include whether it works on directories,
+open files, or pre-existing files.  Check L<perlport> and either the
+rename(2) manpage or equivalent system documentation for details.
+
+For a platform independent C<move> function look at the L<File::Copy>
+module.
+
+Portability issues: L<perlport/rename>.
+
+=item require VERSION
+X<require>
+
+=item require EXPR
+
+=item require
+
+Demands a version of Perl specified by VERSION, or demands some semantics
+specified by EXPR or by C<$_> if EXPR is not supplied.
+
+VERSION may be either a numeric argument such as 5.006, which will be
+compared to C<$]>, or a literal of the form v5.6.1, which will be compared
+to C<$^V> (aka $PERL_VERSION).  An exception is raised if
+VERSION is greater than the version of the current Perl interpreter.
+Compare with L</use>, which can do a similar check at compile time.
+
+Specifying VERSION as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl that do not support this syntax.  The equivalent numeric
+version should be used instead.
+
+    require v5.6.1;     # run time version check
+    require 5.6.1;      # ditto
+    require 5.006_001;  # ditto; preferred for backwards compatibility
+
+Otherwise, C<require> demands that a library file be included if it
+hasn't already been included.  The file is included via the do-FILE
+mechanism, which is essentially just a variety of C<eval> with the
+caveat that lexical variables in the invoking script will be invisible
+to the included code.  Has semantics similar to the following subroutine:
+
+    sub require {
+       my ($filename) = @_;
+       if (exists $INC{$filename}) {
+           return 1 if $INC{$filename};
+           die "Compilation failed in require";
+       }
+       my ($realfilename,$result);
+       ITER: {
+           foreach $prefix (@INC) {
+               $realfilename = "$prefix/$filename";
+               if (-f $realfilename) {
+                   $INC{$filename} = $realfilename;
+                   $result = do $realfilename;
+                   last ITER;
+               }
+           }
+           die "Can't find $filename in \@INC";
+       }
+       if ($@) {
+           $INC{$filename} = undef;
+           die $@;
+       } elsif (!$result) {
+           delete $INC{$filename};
+           die "$filename did not return true value";
+       } else {
+           return $result;
+       }
+    }
+
+Note that the file will not be included twice under the same specified
+name.
+
+The file must return true as the last statement to indicate
+successful execution of any initialization code, so it's customary to
+end such a file with C<1;> unless you're sure it'll return true
+otherwise.  But it's better just to put the C<1;>, in case you add more
+statements.
+
+If EXPR is a bareword, the require assumes a "F<.pm>" extension and
+replaces "F<::>" with "F</>" in the filename for you,
+to make it easy to load standard modules.  This form of loading of
+modules does not risk altering your namespace.
+
+In other words, if you try this:
+
+        require Foo::Bar;     # a splendid bareword
+
+The require function will actually look for the "F<Foo/Bar.pm>" file in the
+directories specified in the C<@INC> array.
+
+But if you try this:
+
+        $class = 'Foo::Bar';
+        require $class;       # $class is not a bareword
+    #or
+        require "Foo::Bar";   # not a bareword because of the ""
+
+The require function will look for the "F<Foo::Bar>" file in the @INC array and
+will complain about not finding "F<Foo::Bar>" there.  In this case you can do:
+
+        eval "require $class";
+
+Now that you understand how C<require> looks for files with a
+bareword argument, there is a little extra functionality going on behind
+the scenes.  Before C<require> looks for a "F<.pm>" extension, it will
+first look for a similar filename with a "F<.pmc>" extension. If this file
+is found, it will be loaded in place of any file ending in a "F<.pm>"
+extension.
+
+You can also insert hooks into the import facility by putting Perl code
+directly into the @INC array.  There are three forms of hooks: subroutine
+references, array references, and blessed objects.
+
+Subroutine references are the simplest case.  When the inclusion system
+walks through @INC and encounters a subroutine, this subroutine gets
+called with two parameters, the first a reference to itself, and the
+second the name of the file to be included (e.g., "F<Foo/Bar.pm>").  The
+subroutine should return either nothing or else a list of up to three 
+values in the following order:
+
+=over
+
+=item 1
+
+A filehandle, from which the file will be read.  
+
+=item 2
+
+A reference to a subroutine. If there is no filehandle (previous item),
+then this subroutine is expected to generate one line of source code per
+call, writing the line into C<$_> and returning 1, then finally at end of
+file returning 0.  If there is a filehandle, then the subroutine will be
+called to act as a simple source filter, with the line as read in C<$_>.
+Again, return 1 for each valid line, and 0 after all lines have been
+returned.
+
+=item 3
+
+Optional state for the subroutine. The state is passed in as C<$_[1]>. A
+reference to the subroutine itself is passed in as C<$_[0]>.
+
+=back
+
+If an empty list, C<undef>, or nothing that matches the first 3 values above
+is returned, then C<require> looks at the remaining elements of @INC.
+Note that this filehandle must be a real filehandle (strictly a typeglob
+or reference to a typeglob, whether blessed or unblessed); tied filehandles 
+will be ignored and processing will stop there.
+
+If the hook is an array reference, its first element must be a subroutine
+reference.  This subroutine is called as above, but the first parameter is
+the array reference.  This lets you indirectly pass arguments to
+the subroutine.
+
+In other words, you can write:
+
+    push @INC, \&my_sub;
+    sub my_sub {
+        my ($coderef, $filename) = @_;  # $coderef is \&my_sub
+        ...
+    }
+
+or:
+
+    push @INC, [ \&my_sub, $x, $y, ... ];
+    sub my_sub {
+        my ($arrayref, $filename) = @_;
+        # Retrieve $x, $y, ...
+        my @parameters = @$arrayref[1..$#$arrayref];
+        ...
+    }
+
+If the hook is an object, it must provide an INC method that will be
+called as above, the first parameter being the object itself.  (Note that
+you must fully qualify the sub's name, as unqualified C<INC> is always forced
+into package C<main>.)  Here is a typical code layout:
+
+    # In Foo.pm
+    package Foo;
+    sub new { ... }
+    sub Foo::INC {
+        my ($self, $filename) = @_;
+        ...
+    }
+
+    # In the main program
+    push @INC, Foo->new(...);
+
+These hooks are also permitted to set the %INC entry
+corresponding to the files they have loaded. See L<perlvar/%INC>.
+
+For a yet-more-powerful import facility, see L</use> and L<perlmod>.
+
+=item reset EXPR
+X<reset>
+
+=item reset
+
+Generally used in a C<continue> block at the end of a loop to clear
+variables and reset C<??> searches so that they work again.  The
+expression is interpreted as a list of single characters (hyphens
+allowed for ranges).  All variables and arrays beginning with one of
+those letters are reset to their pristine state.  If the expression is
+omitted, one-match searches (C<?pattern?>) are reset to match again.  
+Only resets variables or searches in the current package.  Always returns
+1.  Examples:
+
+    reset 'X';      # reset all X variables
+    reset 'a-z';    # reset lower case variables
+    reset;          # just reset ?one-time? searches
+
+Resetting C<"A-Z"> is not recommended because you'll wipe out your
+C<@ARGV> and C<@INC> arrays and your C<%ENV> hash.  Resets only package
+variables; lexical variables are unaffected, but they clean themselves
+up on scope exit anyway, so you'll probably want to use them instead.
+See L</my>.
+
+=item return EXPR
+X<return>
+
+=item return
+
+Returns from a subroutine, C<eval>, or C<do FILE> with the value
+given in EXPR.  Evaluation of EXPR may be in list, scalar, or void
+context, depending on how the return value will be used, and the context
+may vary from one execution to the next (see L</wantarray>).  If no EXPR
+is given, returns an empty list in list context, the undefined value in
+scalar context, and (of course) nothing at all in void context.
+
+(In the absence of an explicit C<return>, a subroutine, eval,
+or do FILE automatically returns the value of the last expression
+evaluated.)
+
+=item reverse LIST
+X<reverse> X<rev> X<invert>
+
+In list context, returns a list value consisting of the elements
+of LIST in the opposite order.  In scalar context, concatenates the
+elements of LIST and returns a string value with all characters
+in the opposite order.
+
+    print join(", ", reverse "world", "Hello"); # Hello, world
+
+    print scalar reverse "dlrow ,", "olleH";    # Hello, world
+
+Used without arguments in scalar context, reverse() reverses C<$_>.
+
+    $_ = "dlrow ,olleH";
+    print reverse;                              # No output, list context
+    print scalar reverse;                       # Hello, world
+
+Note that reversing an array to itself (as in C<@a = reverse @a>) will
+preserve non-existent elements whenever possible, i.e., for non magical
+arrays or tied arrays with C<EXISTS> and C<DELETE> methods.
+
+This operator is also handy for inverting a hash, although there are some
+caveats.  If a value is duplicated in the original hash, only one of those
+can be represented as a key in the inverted hash.  Also, this has to
+unwind one hash and build a whole new one, which may take some time
+on a large hash, such as from a DBM file.
+
+    %by_name = reverse %by_address;  # Invert the hash
+
+=item rewinddir DIRHANDLE
+X<rewinddir>
+
+Sets the current position to the beginning of the directory for the
+C<readdir> routine on DIRHANDLE.
+
+Portability issues: L<perlport/rewinddir>.
+
+=item rindex STR,SUBSTR,POSITION
+X<rindex>
+
+=item rindex STR,SUBSTR
+
+Works just like index() except that it returns the position of the I<last>
+occurrence of SUBSTR in STR.  If POSITION is specified, returns the
+last occurrence beginning at or before that position.
+
+=item rmdir FILENAME
+X<rmdir> X<rd> X<directory, remove>
+
+=item rmdir
+
+Deletes the directory specified by FILENAME if that directory is
+empty.  If it succeeds it returns true; otherwise it returns false and
+sets C<$!> (errno).  If FILENAME is omitted, uses C<$_>.
+
+To remove a directory tree recursively (C<rm -rf> on Unix) look at
+the C<rmtree> function of the L<File::Path> module.
+
+=item s///
+
+The substitution operator.  See L<perlop/"Regexp Quote-Like Operators">.
+
+=item say FILEHANDLE LIST
+X<say>
+
+=item say FILEHANDLE
+
+=item say LIST
+
+=item say
+
+Just like C<print>, but implicitly appends a newline.  C<say LIST> is
+simply an abbreviation for C<{ local $\ = "\n"; print LIST }>.  To use
+FILEHANDLE without a LIST to print the contents of C<$_> to it, you must
+use a real filehandle like C<FH>, not an indirect one like C<$fh>.
+
+This keyword is available only when the C<"say"> feature
+is enabled, or when prefixed with C<CORE::>; see
+L<feature>.  Alternately, include a C<use v5.10> or later to the current
+scope.
+
+=item scalar EXPR
+X<scalar> X<context>
+
+Forces EXPR to be interpreted in scalar context and returns the value
+of EXPR.
+
+    @counts = ( scalar @a, scalar @b, scalar @c );
+
+There is no equivalent operator to force an expression to
+be interpolated in list context because in practice, this is never
+needed.  If you really wanted to do so, however, you could use
+the construction C<@{[ (some expression) ]}>, but usually a simple
+C<(some expression)> suffices.
+
+Because C<scalar> is a unary operator, if you accidentally use a
+parenthesized list for the EXPR, this behaves as a scalar comma expression,
+evaluating all but the last element in void context and returning the final
+element evaluated in scalar context.  This is seldom what you want.
+
+The following single statement:
+
+    print uc(scalar(&foo,$bar)),$baz;
+
+is the moral equivalent of these two:
+
+    &foo;
+    print(uc($bar),$baz);
+
+See L<perlop> for more details on unary operators and the comma operator.
+
+=item seek FILEHANDLE,POSITION,WHENCE
+X<seek> X<fseek> X<filehandle, position>
+
+Sets FILEHANDLE's position, just like the C<fseek> call of C<stdio>.
+FILEHANDLE may be an expression whose value gives the name of the
+filehandle.  The values for WHENCE are C<0> to set the new position
+I<in bytes> to POSITION; C<1> to set it to the current position plus
+POSITION; and C<2> to set it to EOF plus POSITION, typically
+negative.  For WHENCE you may use the constants C<SEEK_SET>,
+C<SEEK_CUR>, and C<SEEK_END> (start of the file, current position, end
+of the file) from the L<Fcntl> module.  Returns C<1> on success, false
+otherwise.
+
+Note the I<in bytes>: even if the filehandle has been set to
+operate on characters (for example by using the C<:encoding(utf8)> open
+layer), tell() will return byte offsets, not character offsets
+(because implementing that would render seek() and tell() rather slow).
+
+If you want to position the file for C<sysread> or C<syswrite>, don't use
+C<seek>, because buffering makes its effect on the file's read-write position
+unpredictable and non-portable.  Use C<sysseek> instead.
+
+Due to the rules and rigors of ANSI C, on some systems you have to do a
+seek whenever you switch between reading and writing.  Amongst other
+things, this may have the effect of calling stdio's clearerr(3).
+A WHENCE of C<1> (C<SEEK_CUR>) is useful for not moving the file position:
+
+    seek(TEST,0,1);
+
+This is also useful for applications emulating C<tail -f>.  Once you hit
+EOF on your read and then sleep for a while, you (probably) have to stick in a
+dummy seek() to reset things.  The C<seek> doesn't change the position,
+but it I<does> clear the end-of-file condition on the handle, so that the
+next C<< <FILE> >> makes Perl try again to read something.  (We hope.)
+
+If that doesn't work (some I/O implementations are particularly
+cantankerous), you might need something like this:
+
+    for (;;) {
+        for ($curpos = tell(FILE); $_ = <FILE>;
+             $curpos = tell(FILE)) {
+            # search for some stuff and put it into files
+        }
+        sleep($for_a_while);
+        seek(FILE, $curpos, 0);
+    }
+
+=item seekdir DIRHANDLE,POS
+X<seekdir>
+
+Sets the current position for the C<readdir> routine on DIRHANDLE.  POS
+must be a value returned by C<telldir>.  C<seekdir> also has the same caveats
+about possible directory compaction as the corresponding system library
+routine.
+
+=item select FILEHANDLE
+X<select> X<filehandle, default>
+
+=item select
+
+Returns the currently selected filehandle.  If FILEHANDLE is supplied,
+sets the new current default filehandle for output.  This has two
+effects: first, a C<write> or a C<print> without a filehandle 
+default to this FILEHANDLE.  Second, references to variables related to
+output will refer to this output channel.  
+
+For example, to set the top-of-form format for more than one
+output channel, you might do the following:
+
+    select(REPORT1);
+    $^ = 'report1_top';
+    select(REPORT2);
+    $^ = 'report2_top';
+
+FILEHANDLE may be an expression whose value gives the name of the
+actual filehandle.  Thus:
+
+    $oldfh = select(STDERR); $| = 1; select($oldfh);
+
+Some programmers may prefer to think of filehandles as objects with
+methods, preferring to write the last example as:
+
+    use IO::Handle;
+    STDERR->autoflush(1);
+
+Portability issues: L<perlport/select>.
+
+=item select RBITS,WBITS,EBITS,TIMEOUT
+X<select>
+
+This calls the select(2) syscall with the bit masks specified, which
+can be constructed using C<fileno> and C<vec>, along these lines:
+
+    $rin = $win = $ein = '';
+    vec($rin, fileno(STDIN),  1) = 1;
+    vec($win, fileno(STDOUT), 1) = 1;
+    $ein = $rin | $win;
+
+If you want to select on many filehandles, you may wish to write a
+subroutine like this:
+
+    sub fhbits {
+        my @fhlist = @_;
+        my $bits = "";
+        for my $fh (@fhlist) {
+            vec($bits, fileno($fh), 1) = 1;
+        }
+        return $bits;
+    }
+    $rin = fhbits(*STDIN, *TTY, *MYSOCK);
+
+The usual idiom is:
+
+    ($nfound,$timeleft) =
+      select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
+
+or to block until something becomes ready just do this
+
+    $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
+
+Most systems do not bother to return anything useful in $timeleft, so
+calling select() in scalar context just returns $nfound.
+
+Any of the bit masks can also be undef.  The timeout, if specified, is
+in seconds, which may be fractional.  Note: not all implementations are
+capable of returning the $timeleft.  If not, they always return
+$timeleft equal to the supplied $timeout.
+
+You can effect a sleep of 250 milliseconds this way:
+
+    select(undef, undef, undef, 0.25);
+
+Note that whether C<select> gets restarted after signals (say, SIGALRM)
+is implementation-dependent.  See also L<perlport> for notes on the
+portability of C<select>.
+
+On error, C<select> behaves just like select(2): it returns
+-1 and sets C<$!>.
+
+On some Unixes, select(2) may report a socket file descriptor as "ready for
+reading" even when no data is available, and thus any subsequent C<read>
+would block. This can be avoided if you always use O_NONBLOCK on the
+socket. See select(2) and fcntl(2) for further details.
+
+The standard C<IO::Select> module provides a user-friendlier interface
+to C<select>, mostly because it does all the bit-mask work for you.
+
+B<WARNING>: One should not attempt to mix buffered I/O (like C<read>
+or <FH>) with C<select>, except as permitted by POSIX, and even
+then only on POSIX systems.  You have to use C<sysread> instead.
+
+Portability issues: L<perlport/select>.
+
+=item semctl ID,SEMNUM,CMD,ARG
+X<semctl>
+
+Calls the System V IPC function semctl(2).  You'll probably have to say
+
+    use IPC::SysV;
+
+first to get the correct constant definitions.  If CMD is IPC_STAT or
+GETALL, then ARG must be a variable that will hold the returned
+semid_ds structure or semaphore value array.  Returns like C<ioctl>:
+the undefined value for error, "C<0 but true>" for zero, or the actual
+return value otherwise.  The ARG must consist of a vector of native
+short integers, which may be created with C<pack("s!",(0)x$nsem)>.
+See also L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::Semaphore>
+documentation.
+
+Portability issues: L<perlport/semctl>.
+
+=item semget KEY,NSEMS,FLAGS
+X<semget>
+
+Calls the System V IPC function semget(2).  Returns the semaphore id, or
+the undefined value on error.  See also
+L<perlipc/"SysV IPC">, C<IPC::SysV>, C<IPC::SysV::Semaphore>
+documentation.
+
+Portability issues: L<perlport/semget>.
+
+=item semop KEY,OPSTRING
+X<semop>
+
+Calls the System V IPC function semop(2) for semaphore operations
+such as signalling and waiting.  OPSTRING must be a packed array of
+semop structures.  Each semop structure can be generated with
+C<pack("s!3", $semnum, $semop, $semflag)>.  The length of OPSTRING 
+implies the number of semaphore operations.  Returns true if
+successful, false on error.  As an example, the
+following code waits on semaphore $semnum of semaphore id $semid:
+
+    $semop = pack("s!3", $semnum, -1, 0);
+    die "Semaphore trouble: $!\n" unless semop($semid, $semop);
+
+To signal the semaphore, replace C<-1> with C<1>.  See also
+L<perlipc/"SysV IPC">, C<IPC::SysV>, and C<IPC::SysV::Semaphore>
+documentation.
+
+Portability issues: L<perlport/semop>.
+
+=item send SOCKET,MSG,FLAGS,TO
+X<send>
+
+=item send SOCKET,MSG,FLAGS
+
+Sends a message on a socket.  Attempts to send the scalar MSG to the SOCKET
+filehandle.  Takes the same flags as the system call of the same name.  On
+unconnected sockets, you must specify a destination to I<send to>, in which
+case it does a sendto(2) syscall.  Returns the number of characters sent,
+or the undefined value on error.  The sendmsg(2) syscall is currently
+unimplemented.  See L<perlipc/"UDP: Message Passing"> for examples.
+
+Note the I<characters>: depending on the status of the socket, either
+(8-bit) bytes or characters are sent.  By default all sockets operate
+on bytes, but for example if the socket has been changed using
+binmode() to operate with the C<:encoding(utf8)> I/O layer (see
+L</open>, or the C<open> pragma, L<open>), the I/O will operate on UTF-8
+encoded Unicode characters, not bytes.  Similarly for the C<:encoding>
+pragma: in that case pretty much any characters can be sent.
+
+=item setpgrp PID,PGRP
+X<setpgrp> X<group>
+
+Sets the current process group for the specified PID, C<0> for the current
+process.  Raises an exception when used on a machine that doesn't
+implement POSIX setpgid(2) or BSD setpgrp(2).  If the arguments are omitted,
+it defaults to C<0,0>.  Note that the BSD 4.2 version of C<setpgrp> does not
+accept any arguments, so only C<setpgrp(0,0)> is portable.  See also
+C<POSIX::setsid()>.
+
+Portability issues: L<perlport/setpgrp>.
+
+=item setpriority WHICH,WHO,PRIORITY
+X<setpriority> X<priority> X<nice> X<renice>
+
+Sets the current priority for a process, a process group, or a user.
+(See setpriority(2).)  Raises an exception when used on a machine
+that doesn't implement setpriority(2).
+
+Portability issues: L<perlport/setpriority>.
+
+=item setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
+X<setsockopt>
+
+Sets the socket option requested.  Returns C<undef> on error.
+Use integer constants provided by the C<Socket> module for
+LEVEL and OPNAME.  Values for LEVEL can also be obtained from
+getprotobyname.  OPTVAL might either be a packed string or an integer.
+An integer OPTVAL is shorthand for pack("i", OPTVAL).
+
+An example disabling Nagle's algorithm on a socket:
+
+    use Socket qw(IPPROTO_TCP TCP_NODELAY);
+    setsockopt($socket, IPPROTO_TCP, TCP_NODELAY, 1);
+
+Portability issues: L<perlport/setsockopt>.
+
+=item shift ARRAY
+X<shift>
+
+=item shift EXPR
+
+=item shift
+
+Shifts the first value of the array off and returns it, shortening the
+array by 1 and moving everything down.  If there are no elements in the
+array, returns the undefined value.  If ARRAY is omitted, shifts the
+C<@_> array within the lexical scope of subroutines and formats, and the
+C<@ARGV> array outside a subroutine and also within the lexical scopes
+established by the C<eval STRING>, C<BEGIN {}>, C<INIT {}>, C<CHECK {}>,
+C<UNITCHECK {}>, and C<END {}> constructs.
+
+Starting with Perl 5.14, C<shift> can take a scalar EXPR, which must hold a
+reference to an unblessed array.  The argument will be dereferenced
+automatically.  This aspect of C<shift> is considered highly experimental.
+The exact behaviour may change in a future version of Perl.
+
+See also C<unshift>, C<push>, and C<pop>.  C<shift> and C<unshift> do the
+same thing to the left end of an array that C<pop> and C<push> do to the
+right end.
+
+=item shmctl ID,CMD,ARG
+X<shmctl>
+
+Calls the System V IPC function shmctl.  You'll probably have to say
+
+    use IPC::SysV;
+
+first to get the correct constant definitions.  If CMD is C<IPC_STAT>,
+then ARG must be a variable that will hold the returned C<shmid_ds>
+structure.  Returns like ioctl: C<undef> for error; "C<0> but
+true" for zero; and the actual return value otherwise.
+See also L<perlipc/"SysV IPC"> and C<IPC::SysV> documentation.
+
+Portability issues: L<perlport/shmctl>.
+
+=item shmget KEY,SIZE,FLAGS
+X<shmget>
+
+Calls the System V IPC function shmget.  Returns the shared memory
+segment id, or C<undef> on error.
+See also L<perlipc/"SysV IPC"> and C<IPC::SysV> documentation.
+
+Portability issues: L<perlport/shmget>.
+
+=item shmread ID,VAR,POS,SIZE
+X<shmread>
+X<shmwrite>
+
+=item shmwrite ID,STRING,POS,SIZE
+
+Reads or writes the System V shared memory segment ID starting at
+position POS for size SIZE by attaching to it, copying in/out, and
+detaching from it.  When reading, VAR must be a variable that will
+hold the data read.  When writing, if STRING is too long, only SIZE
+bytes are used; if STRING is too short, nulls are written to fill out
+SIZE bytes.  Return true if successful, false on error.
+shmread() taints the variable. See also L<perlipc/"SysV IPC">,
+C<IPC::SysV>, and the C<IPC::Shareable> module from CPAN.
+
+Portability issues: L<perlport/shmread> and L<perlport/shmwrite>.
+
+=item shutdown SOCKET,HOW
+X<shutdown>
+
+Shuts down a socket connection in the manner indicated by HOW, which
+has the same interpretation as in the syscall of the same name.
+
+    shutdown(SOCKET, 0);    # I/we have stopped reading data
+    shutdown(SOCKET, 1);    # I/we have stopped writing data
+    shutdown(SOCKET, 2);    # I/we have stopped using this socket
+
+This is useful with sockets when you want to tell the other
+side you're done writing but not done reading, or vice versa.
+It's also a more insistent form of close because it also
+disables the file descriptor in any forked copies in other
+processes.
+
+Returns C<1> for success; on error, returns C<undef> if
+the first argument is not a valid filehandle, or returns C<0> and sets
+C<$!> for any other failure.
+
+=item sin EXPR
+X<sin> X<sine> X<asin> X<arcsine>
+
+=item sin
+
+Returns the sine of EXPR (expressed in radians).  If EXPR is omitted,
+returns sine of C<$_>.
+
+For the inverse sine operation, you may use the C<Math::Trig::asin>
+function, or use this relation:
+
+    sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
+
+=item sleep EXPR
+X<sleep> X<pause>
+
+=item sleep
+
+Causes the script to sleep for (integer) EXPR seconds, or forever if no 
+argument is given.  Returns the integer number of seconds actually slept.  
+
+May be interrupted if the process receives a signal such as C<SIGALRM>.
+
+    eval {
+        local $SIG{ALARM} = sub { die "Alarm!\n" };
+        sleep;
+    };
+    die $@ unless $@ eq "Alarm!\n";
+
+You probably cannot mix C<alarm> and C<sleep> calls, because C<sleep>
+is often implemented using C<alarm>.
+
+On some older systems, it may sleep up to a full second less than what
+you requested, depending on how it counts seconds.  Most modern systems
+always sleep the full amount.  They may appear to sleep longer than that,
+however, because your process might not be scheduled right away in a
+busy multitasking system.
+
+For delays of finer granularity than one second, the Time::HiRes module
+(from CPAN, and starting from Perl 5.8 part of the standard
+distribution) provides usleep().  You may also use Perl's four-argument
+version of select() leaving the first three arguments undefined, or you
+might be able to use the C<syscall> interface to access setitimer(2) if
+your system supports it. See L<perlfaq8> for details.
+
+See also the POSIX module's C<pause> function.
+
+=item socket SOCKET,DOMAIN,TYPE,PROTOCOL
+X<socket>
+
+Opens a socket of the specified kind and attaches it to filehandle
+SOCKET.  DOMAIN, TYPE, and PROTOCOL are specified the same as for
+the syscall of the same name.  You should C<use Socket> first
+to get the proper definitions imported.  See the examples in
+L<perlipc/"Sockets: Client/Server Communication">.
+
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptor, as determined by the
+value of $^F.  See L<perlvar/$^F>.
+
+=item socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
+X<socketpair>
+
+Creates an unnamed pair of sockets in the specified domain, of the
+specified type.  DOMAIN, TYPE, and PROTOCOL are specified the same as
+for the syscall of the same name.  If unimplemented, raises an exception.
+Returns true if successful.
+
+On systems that support a close-on-exec flag on files, the flag will
+be set for the newly opened file descriptors, as determined by the value
+of $^F.  See L<perlvar/$^F>.
+
+Some systems defined C<pipe> in terms of C<socketpair>, in which a call
+to C<pipe(Rdr, Wtr)> is essentially:
+
+    use Socket;
+    socketpair(Rdr, Wtr, AF_UNIX, SOCK_STREAM, PF_UNSPEC);
+    shutdown(Rdr, 1);        # no more writing for reader
+    shutdown(Wtr, 0);        # no more reading for writer
+
+See L<perlipc> for an example of socketpair use.  Perl 5.8 and later will
+emulate socketpair using IP sockets to localhost if your system implements
+sockets but not socketpair.
+
+Portability issues: L<perlport/socketpair>.
+
+=item sort SUBNAME LIST
+X<sort> X<qsort> X<quicksort> X<mergesort>
+
+=item sort BLOCK LIST
+
+=item sort LIST
+
+In list context, this sorts the LIST and returns the sorted list value.
+In scalar context, the behaviour of C<sort()> is undefined.
+
+If SUBNAME or BLOCK is omitted, C<sort>s in standard string comparison
+order.  If SUBNAME is specified, it gives the name of a subroutine
+that returns an integer less than, equal to, or greater than C<0>,
+depending on how the elements of the list are to be ordered.  (The 
+C<< <=> >> and C<cmp> operators are extremely useful in such routines.)
+SUBNAME may be a scalar variable name (unsubscripted), in which case
+the value provides the name of (or a reference to) the actual
+subroutine to use.  In place of a SUBNAME, you can provide a BLOCK as
+an anonymous, in-line sort subroutine.
+
+If the subroutine's prototype is C<($$)>, the elements to be compared are
+passed by reference in C<@_>, as for a normal subroutine.  This is slower
+than unprototyped subroutines, where the elements to be compared are passed
+into the subroutine as the package global variables $a and $b (see example
+below).  Note that in the latter case, it is usually highly counter-productive
+to declare $a and $b as lexicals.
+
+If the subroutine is an XSUB, the elements to be compared are pushed on to
+the stack, the way arguments are usually passed to XSUBs.  $a and $b are
+not set.
+
+The values to be compared are always passed by reference and should not
+be modified.
+
+You also cannot exit out of the sort block or subroutine using any of the
+loop control operators described in L<perlsyn> or with C<goto>.
+
+When C<use locale> is in effect, C<sort LIST> sorts LIST according to the
+current collation locale.  See L<perllocale>.
+
+sort() returns aliases into the original list, much as a for loop's index
+variable aliases the list elements.  That is, modifying an element of a
+list returned by sort() (for example, in a C<foreach>, C<map> or C<grep>)
+actually modifies the element in the original list.  This is usually
+something to be avoided when writing clear code.
+
+Perl 5.6 and earlier used a quicksort algorithm to implement sort.
+That algorithm was not stable, so I<could> go quadratic.  (A I<stable> sort
+preserves the input order of elements that compare equal.  Although
+quicksort's run time is O(NlogN) when averaged over all arrays of
+length N, the time can be O(N**2), I<quadratic> behavior, for some
+inputs.)  In 5.7, the quicksort implementation was replaced with
+a stable mergesort algorithm whose worst-case behavior is O(NlogN).
+But benchmarks indicated that for some inputs, on some platforms,
+the original quicksort was faster.  5.8 has a sort pragma for
+limited control of the sort.  Its rather blunt control of the
+underlying algorithm may not persist into future Perls, but the
+ability to characterize the input or output in implementation
+independent ways quite probably will.  See L<the sort pragma|sort>.
+
+Examples:
+
+    # sort lexically
+    @articles = sort @files;
+    
+    # same thing, but with explicit sort routine
+    @articles = sort {$a cmp $b} @files;
+    
+    # now case-insensitively
+    @articles = sort {uc($a) cmp uc($b)} @files;
+    
+    # same thing in reversed order
+    @articles = sort {$b cmp $a} @files;
+    
+    # sort numerically ascending
+    @articles = sort {$a <=> $b} @files;
+    
+    # sort numerically descending
+    @articles = sort {$b <=> $a} @files;
+    
+    # this sorts the %age hash by value instead of key
+    # using an in-line function
+    @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
+    
+    # sort using explicit subroutine name
+    sub byage {
+        $age{$a} <=> $age{$b};  # presuming numeric
+    }
+    @sortedclass = sort byage @class;
+    
+    sub backwards { $b cmp $a }
+    @harry  = qw(dog cat x Cain Abel);
+    @george = qw(gone chased yz Punished Axed);
+    print sort @harry;
+        # prints AbelCaincatdogx
+    print sort backwards @harry;
+        # prints xdogcatCainAbel
+    print sort @george, 'to', @harry;
+        # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
+
+    # inefficiently sort by descending numeric compare using
+    # the first integer after the first = sign, or the
+    # whole record case-insensitively otherwise
+
+    my @new = sort {
+        ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
+                            ||
+                    uc($a)  cmp  uc($b)
+    } @old;
+
+    # same thing, but much more efficiently;
+    # we'll build auxiliary indices instead
+    # for speed
+    my @nums = @caps = ();
+    for (@old) {
+        push @nums, ( /=(\d+)/ ? $1 : undef );
+        push @caps, uc($_);
+    }
+
+    my @new = @old[ sort {
+                           $nums[$b] <=> $nums[$a]
+                                    ||
+                           $caps[$a] cmp $caps[$b]
+                         } 0..$#old
+                  ];
+
+    # same thing, but without any temps
+    @new = map { $_->[0] }
+           sort { $b->[1] <=> $a->[1]
+                           ||
+                  $a->[2] cmp $b->[2]
+           } map { [$_, /=(\d+)/, uc($_)] } @old;
+
+    # using a prototype allows you to use any comparison subroutine
+    # as a sort subroutine (including other package's subroutines)
+    package other;
+    sub backwards ($$) { $_[1] cmp $_[0]; }  # $a and $b are not set here
+    
+    package main;
+    @new = sort other::backwards @old;
+    
+    # guarantee stability, regardless of algorithm
+    use sort 'stable';
+    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+    
+    # force use of mergesort (not portable outside Perl 5.8)
+    use sort '_mergesort';  # note discouraging _
+    @new = sort { substr($a, 3, 5) cmp substr($b, 3, 5) } @old;
+
+Warning: syntactical care is required when sorting the list returned from
+a function. If you want to sort the list returned by the function call
+C<find_records(@key)>, you can use:
+
+    @contact = sort { $a cmp $b } find_records @key;
+    @contact = sort +find_records(@key);
+    @contact = sort &find_records(@key);
+    @contact = sort(find_records(@key));
+
+If instead you want to sort the array @key with the comparison routine
+C<find_records()> then you can use:
+
+    @contact = sort { find_records() } @key;
+    @contact = sort find_records(@key);
+    @contact = sort(find_records @key);
+    @contact = sort(find_records (@key));
+
+If you're using strict, you I<must not> declare $a
+and $b as lexicals.  They are package globals.  That means
+that if you're in the C<main> package and type
+
+    @articles = sort {$b <=> $a} @files;
+
+then C<$a> and C<$b> are C<$main::a> and C<$main::b> (or C<$::a> and C<$::b>),
+but if you're in the C<FooPack> package, it's the same as typing
+
+    @articles = sort {$FooPack::b <=> $FooPack::a} @files;
+
+The comparison function is required to behave.  If it returns
+inconsistent results (sometimes saying C<$x[1]> is less than C<$x[2]> and
+sometimes saying the opposite, for example) the results are not
+well-defined.
+
+Because C<< <=> >> returns C<undef> when either operand is C<NaN>
+(not-a-number), be careful when sorting with a
+comparison function like C<< $a <=> $b >> any lists that might contain a
+C<NaN>.  The following example takes advantage that C<NaN != NaN> to
+eliminate any C<NaN>s from the input list.
+
+    @result = sort { $a <=> $b } grep { $_ == $_ } @input;
+
+=item splice ARRAY or EXPR,OFFSET,LENGTH,LIST
+X<splice>
+
+=item splice ARRAY or EXPR,OFFSET,LENGTH
+
+=item splice ARRAY or EXPR,OFFSET
+
+=item splice ARRAY or EXPR
+
+Removes the elements designated by OFFSET and LENGTH from an array, and
+replaces them with the elements of LIST, if any.  In list context,
+returns the elements removed from the array.  In scalar context,
+returns the last element removed, or C<undef> if no elements are
+removed.  The array grows or shrinks as necessary.
+If OFFSET is negative then it starts that far from the end of the array.
+If LENGTH is omitted, removes everything from OFFSET onward.
+If LENGTH is negative, removes the elements from OFFSET onward
+except for -LENGTH elements at the end of the array.
+If both OFFSET and LENGTH are omitted, removes everything. If OFFSET is
+past the end of the array, Perl issues a warning, and splices at the
+end of the array.
+
+The following equivalences hold (assuming C<< $#a >= $i >> )
+
+    push(@a,$x,$y)      splice(@a, at a,0,$x,$y)
+    pop(@a)             splice(@a,-1)
+    shift(@a)           splice(@a,0,1)
+    unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
+    $a[$i] = $y         splice(@a,$i,1,$y)
+
+Example, assuming array lengths are passed before arrays:
+
+    sub aeq {  # compare two list values
+        my(@a) = splice(@_,0,shift);
+        my(@b) = splice(@_,0,shift);
+        return 0 unless @a == @b;  # same len?
+        while (@a) {
+            return 0 if pop(@a) ne pop(@b);
+        }
+        return 1;
+    }
+    if (&aeq($len, at foo[1..$len],0+ at bar, at bar)) { ... }
+
+Starting with Perl 5.14, C<splice> can take scalar EXPR, which must hold a
+reference to an unblessed array.  The argument will be dereferenced
+automatically.  This aspect of C<splice> is considered highly experimental.
+The exact behaviour may change in a future version of Perl.
+
+=item split /PATTERN/,EXPR,LIMIT
+X<split>
+
+=item split /PATTERN/,EXPR
+
+=item split /PATTERN/
+
+=item split
+
+Splits the string EXPR into a list of strings and returns that list.  By
+default, empty leading fields are preserved, and empty trailing ones are
+deleted.  (If all fields are empty, they are considered to be trailing.)
+
+In scalar context, returns the number of fields found.
+
+If EXPR is omitted, splits the C<$_> string.  If PATTERN is also omitted,
+splits on whitespace (after skipping any leading whitespace).  Anything
+matching PATTERN is taken to be a delimiter separating the fields.  (Note
+that the delimiter may be longer than one character.)
+
+If LIMIT is specified and positive, it represents the maximum number
+of fields the EXPR will be split into, though the actual number of
+fields returned depends on the number of times PATTERN matches within
+EXPR.  If LIMIT is unspecified or zero, trailing null fields are
+stripped (which potential users of C<pop> would do well to remember).
+If LIMIT is negative, it is treated as if an arbitrarily large LIMIT
+had been specified.  Note that splitting an EXPR that evaluates to the
+empty string always returns the empty list, regardless of the LIMIT
+specified.
+
+A pattern matching the empty string (not to be confused with
+an empty pattern C<//>, which is just one member of the set of patterns
+matching the empty string), splits EXPR into individual
+characters.  For example:
+
+    print join(':', split(/ */, 'hi there')), "\n";
+
+produces the output 'h:i:t:h:e:r:e'.
+
+As a special case for C<split>, the empty pattern C<//> specifically
+matches the empty string; this is not be confused with the normal use
+of an empty pattern to mean the last successful match.  So to split
+a string into individual characters, the following:
+
+    print join(':', split(//, 'hi there')), "\n";
+
+produces the output 'h:i: :t:h:e:r:e'.
+
+Empty leading fields are produced when there are positive-width matches at
+the beginning of the string; a zero-width match at the beginning of
+the string does not produce an empty field. For example:
+
+   print join(':', split(/(?=\w)/, 'hi there!'));
+
+produces the output 'h:i :t:h:e:r:e!'. Empty trailing fields, on the other
+hand, are produced when there is a match at the end of the string (and
+when LIMIT is given and is not 0), regardless of the length of the match.
+For example:
+
+   print join(':', split(//,   'hi there!', -1)), "\n";
+   print join(':', split(/\W/, 'hi there!', -1)), "\n";
+
+produce the output 'h:i: :t:h:e:r:e:!:' and 'hi:there:', respectively,
+both with an empty trailing field.
+
+The LIMIT parameter can be used to split a line partially
+
+    ($login, $passwd, $remainder) = split(/:/, $_, 3);
+
+When assigning to a list, if LIMIT is omitted, or zero, Perl supplies
+a LIMIT one larger than the number of variables in the list, to avoid
+unnecessary work.  For the list above LIMIT would have been 4 by
+default.  In time critical applications it behooves you not to split
+into more fields than you really need.
+
+If the PATTERN contains parentheses, additional list elements are
+created from each matching substring in the delimiter.
+
+    split(/([,-])/, "1-10,20", 3);
+
+produces the list value
+
+    (1, '-', 10, ',', 20)
+
+If you had the entire header of a normal Unix email message in $header,
+you could split it up into fields and their values this way:
+
+    $header =~ s/\n(?=\s)//g;  # fix continuation lines
+    %hdrs   =  (UNIX_FROM => split /^(\S*?):\s*/m, $header);
+
+The pattern C</PATTERN/> may be replaced with an expression to specify
+patterns that vary at runtime.  (To do runtime compilation only once,
+use C</$variable/o>.)
+
+As a special case, specifying a PATTERN of space (S<C<' '>>) will split on
+white space just as C<split> with no arguments does.  Thus, S<C<split(' ')>> can
+be used to emulate B<awk>'s default behavior, whereas S<C<split(/ /)>>
+will give you as many initial null fields (empty string) as there are leading spaces.
+A C<split> on C</\s+/> is like a S<C<split(' ')>> except that any leading
+whitespace produces a null first field.  A C<split> with no arguments
+really does a S<C<split(' ', $_)>> internally.
+
+A PATTERN of C</^/> is treated as if it were C</^/m>, since it isn't
+much use otherwise.
+
+Example:
+
+    open(PASSWD, '/etc/passwd');
+    while (<PASSWD>) {
+        chomp;
+        ($login, $passwd, $uid, $gid,
+         $gcos, $home, $shell) = split(/:/);
+        #...
+    }
+
+As with regular pattern matching, any capturing parentheses that are not
+matched in a C<split()> will be set to C<undef> when returned:
+
+    @fields = split /(A)|B/, "1A2B3";
+    # @fields is (1, 'A', 2, undef, 3)
+
+=item sprintf FORMAT, LIST
+X<sprintf>
+
+Returns a string formatted by the usual C<printf> conventions of the C
+library function C<sprintf>.  See below for more details
+and see L<sprintf(3)> or L<printf(3)> on your system for an explanation of
+the general principles.
+
+For example:
+
+        # Format number with up to 8 leading zeroes
+        $result = sprintf("%08d", $number);
+
+        # Round number to 3 digits after decimal point
+        $rounded = sprintf("%.3f", $number);
+
+Perl does its own C<sprintf> formatting: it emulates the C
+function sprintf(3), but doesn't use it except for floating-point
+numbers, and even then only standard modifiers are allowed.  
+Non-standard extensions in your local sprintf(3) are 
+therefore unavailable from Perl.
+
+Unlike C<printf>, C<sprintf> does not do what you probably mean when you
+pass it an array as your first argument. The array is given scalar context,
+and instead of using the 0th element of the array as the format, Perl will
+use the count of elements in the array as the format, which is almost never
+useful.
+
+Perl's C<sprintf> permits the following universally-known conversions:
+
+   %%    a percent sign
+   %c    a character with the given number
+   %s    a string
+   %d    a signed integer, in decimal
+   %u    an unsigned integer, in decimal
+   %o    an unsigned integer, in octal
+   %x    an unsigned integer, in hexadecimal
+   %e    a floating-point number, in scientific notation
+   %f    a floating-point number, in fixed decimal notation
+   %g    a floating-point number, in %e or %f notation
+
+In addition, Perl permits the following widely-supported conversions:
+
+   %X    like %x, but using upper-case letters
+   %E    like %e, but using an upper-case "E"
+   %G    like %g, but with an upper-case "E" (if applicable)
+   %b    an unsigned integer, in binary
+   %B    like %b, but using an upper-case "B" with the # flag
+   %p    a pointer (outputs the Perl value's address in hexadecimal)
+   %n    special: *stores* the number of characters output so far
+         into the next variable in the parameter list
+
+Finally, for backward (and we do mean "backward") compatibility, Perl
+permits these unnecessary but widely-supported conversions:
+
+   %i    a synonym for %d
+   %D    a synonym for %ld
+   %U    a synonym for %lu
+   %O    a synonym for %lo
+   %F    a synonym for %f
+
+Note that the number of exponent digits in the scientific notation produced
+by C<%e>, C<%E>, C<%g> and C<%G> for numbers with the modulus of the
+exponent less than 100 is system-dependent: it may be three or less
+(zero-padded as necessary).  In other words, 1.23 times ten to the
+99th may be either "1.23e99" or "1.23e099".
+
+Between the C<%> and the format letter, you may specify several
+additional attributes controlling the interpretation of the format.
+In order, these are:
+
+=over 4
+
+=item format parameter index
+
+An explicit format parameter index, such as C<2$>. By default sprintf
+will format the next unused argument in the list, but this allows you
+to take the arguments out of order:
+
+  printf '%2$d %1$d', 12, 34;      # prints "34 12"
+  printf '%3$d %d %1$d', 1, 2, 3;  # prints "3 1 1"
+
+=item flags
+
+one or more of:
+
+   space   prefix non-negative number with a space
+   +       prefix non-negative number with a plus sign
+   -       left-justify within the field
+   0       use zeros, not spaces, to right-justify
+   #       ensure the leading "0" for any octal,
+           prefix non-zero hexadecimal with "0x" or "0X",
+           prefix non-zero binary with "0b" or "0B"
+
+For example:
+
+  printf '<% d>',  12;   # prints "< 12>"
+  printf '<%+d>',  12;   # prints "<+12>"
+  printf '<%6s>',  12;   # prints "<    12>"
+  printf '<%-6s>', 12;   # prints "<12    >"
+  printf '<%06s>', 12;   # prints "<000012>"
+  printf '<%#o>',  12;   # prints "<014>"
+  printf '<%#x>',  12;   # prints "<0xc>"
+  printf '<%#X>',  12;   # prints "<0XC>"
+  printf '<%#b>',  12;   # prints "<0b1100>"
+  printf '<%#B>',  12;   # prints "<0B1100>"
+
+When a space and a plus sign are given as the flags at once,
+a plus sign is used to prefix a positive number.
+
+  printf '<%+ d>', 12;   # prints "<+12>"
+  printf '<% +d>', 12;   # prints "<+12>"
+
+When the # flag and a precision are given in the %o conversion,
+the precision is incremented if it's necessary for the leading "0".
+
+  printf '<%#.5o>', 012;      # prints "<00012>"
+  printf '<%#.5o>', 012345;   # prints "<012345>"
+  printf '<%#.0o>', 0;        # prints "<0>"
+
+=item vector flag
+
+This flag tells Perl to interpret the supplied string as a vector of
+integers, one for each character in the string. Perl applies the format to
+each integer in turn, then joins the resulting strings with a separator (a
+dot C<.> by default). This can be useful for displaying ordinal values of
+characters in arbitrary strings:
+
+  printf "%vd", "AB\x{100}";           # prints "65.66.256"
+  printf "version is v%vd\n", $^V;     # Perl's version
+
+Put an asterisk C<*> before the C<v> to override the string to
+use to separate the numbers:
+
+  printf "address is %*vX\n", ":", $addr;   # IPv6 address
+  printf "bits are %0*v8b\n", " ", $bits;   # random bitstring
+
+You can also explicitly specify the argument number to use for
+the join string using something like C<*2$v>; for example:
+
+  printf '%*4$vX %*4$vX %*4$vX', @addr[1..3], ":";   # 3 IPv6 addresses
+
+=item (minimum) width
+
+Arguments are usually formatted to be only as wide as required to
+display the given value. You can override the width by putting
+a number here, or get the width from the next argument (with C<*>)
+or from a specified argument (e.g., with C<*2$>):
+
+  printf "<%s>", "a";       # prints "<a>"
+  printf "<%6s>", "a";      # prints "<     a>"
+  printf "<%*s>", 6, "a";   # prints "<     a>"
+  printf "<%*2$s>", "a", 6; # prints "<     a>"
+  printf "<%2s>", "long";   # prints "<long>" (does not truncate)
+
+If a field width obtained through C<*> is negative, it has the same
+effect as the C<-> flag: left-justification.
+
+=item precision, or maximum width
+X<precision>
+
+You can specify a precision (for numeric conversions) or a maximum
+width (for string conversions) by specifying a C<.> followed by a number.
+For floating-point formats except C<g> and C<G>, this specifies
+how many places right of the decimal point to show (the default being 6).
+For example:
+
+  # these examples are subject to system-specific variation
+  printf '<%f>', 1;    # prints "<1.000000>"
+  printf '<%.1f>', 1;  # prints "<1.0>"
+  printf '<%.0f>', 1;  # prints "<1>"
+  printf '<%e>', 10;   # prints "<1.000000e+01>"
+  printf '<%.1e>', 10; # prints "<1.0e+01>"
+
+For "g" and "G", this specifies the maximum number of digits to show,
+including those prior to the decimal point and those after it; for 
+example:
+
+  # These examples are subject to system-specific variation.
+  printf '<%g>', 1;        # prints "<1>"
+  printf '<%.10g>', 1;     # prints "<1>"
+  printf '<%g>', 100;      # prints "<100>"
+  printf '<%.1g>', 100;    # prints "<1e+02>"
+  printf '<%.2g>', 100.01; # prints "<1e+02>"
+  printf '<%.5g>', 100.01; # prints "<100.01>"
+  printf '<%.4g>', 100.01; # prints "<100>"
+
+For integer conversions, specifying a precision implies that the
+output of the number itself should be zero-padded to this width,
+where the 0 flag is ignored:
+
+  printf '<%.6d>', 1;      # prints "<000001>"
+  printf '<%+.6d>', 1;     # prints "<+000001>"
+  printf '<%-10.6d>', 1;   # prints "<000001    >"
+  printf '<%10.6d>', 1;    # prints "<    000001>"
+  printf '<%010.6d>', 1;   # prints "<    000001>"
+  printf '<%+10.6d>', 1;   # prints "<   +000001>"
+
+  printf '<%.6x>', 1;      # prints "<000001>"
+  printf '<%#.6x>', 1;     # prints "<0x000001>"
+  printf '<%-10.6x>', 1;   # prints "<000001    >"
+  printf '<%10.6x>', 1;    # prints "<    000001>"
+  printf '<%010.6x>', 1;   # prints "<    000001>"
+  printf '<%#10.6x>', 1;   # prints "<  0x000001>"
+
+For string conversions, specifying a precision truncates the string
+to fit the specified width:
+
+  printf '<%.5s>', "truncated";   # prints "<trunc>"
+  printf '<%10.5s>', "truncated"; # prints "<     trunc>"
+
+You can also get the precision from the next argument using C<.*>:
+
+  printf '<%.6x>', 1;       # prints "<000001>"
+  printf '<%.*x>', 6, 1;    # prints "<000001>"
+
+If a precision obtained through C<*> is negative, it counts
+as having no precision at all.
+
+  printf '<%.*s>',  7, "string";   # prints "<string>"
+  printf '<%.*s>',  3, "string";   # prints "<str>"
+  printf '<%.*s>',  0, "string";   # prints "<>"
+  printf '<%.*s>', -1, "string";   # prints "<string>"
+
+  printf '<%.*d>',  1, 0;   # prints "<0>"
+  printf '<%.*d>',  0, 0;   # prints "<>"
+  printf '<%.*d>', -1, 0;   # prints "<0>"
+
+You cannot currently get the precision from a specified number,
+but it is intended that this will be possible in the future, for
+example using C<.*2$>:
+
+  printf "<%.*2$x>", 1, 6;   # INVALID, but in future will print "<000001>"
+
+=item size
+
+For numeric conversions, you can specify the size to interpret the
+number as using C<l>, C<h>, C<V>, C<q>, C<L>, or C<ll>. For integer
+conversions (C<d u o x X b i D U O>), numbers are usually assumed to be
+whatever the default integer size is on your platform (usually 32 or 64
+bits), but you can override this to use instead one of the standard C types,
+as supported by the compiler used to build Perl:
+
+   hh          interpret integer as C type "char" or "unsigned char"
+	       on Perl 5.14 or later
+   h           interpret integer as C type "short" or "unsigned short"
+   j	       interpret integer as C type "intmax_t" on Perl 5.14 
+	       or later, and only with a C99 compiler (unportable)
+   l           interpret integer as C type "long" or "unsigned long"
+   q, L, or ll interpret integer as C type "long long", "unsigned long long",
+               or "quad" (typically 64-bit integers)
+   t	       interpret integer as C type "ptrdiff_t" on Perl 5.14 or later
+   z	       interpret integer as C type "size_t" on Perl 5.14 or later
+
+As of 5.14, none of these raises an exception if they are not supported on
+your platform.  However, if warnings are enabled, a warning of the
+C<printf> warning class is issued on an unsupported conversion flag.  
+Should you instead prefer an exception, do this:
+
+    use warnings FATAL => "printf";
+
+If you would like to know about a version dependency before you
+start running the program, put something like this at its top:
+
+    use 5.014;  # for hh/j/t/z/ printf modifiers
+
+You can find out whether your Perl supports quads via L<Config>:
+
+    use Config;
+    if ($Config{use64bitint} eq "define" || $Config{longsize} >= 8) {
+        print "Nice quads!\n";
+    }
+
+For floating-point conversions (C<e f g E F G>), numbers are usually assumed
+to be the default floating-point size on your platform (double or long double),
+but you can force "long double" with C<q>, C<L>, or C<ll> if your
+platform supports them. You can find out whether your Perl supports long
+doubles via L<Config>:
+
+    use Config;
+    print "long doubles\n" if $Config{d_longdbl} eq "define";
+
+You can find out whether Perl considers "long double" to be the default
+floating-point size to use on your platform via L<Config>:
+
+    use Config;
+    if ($Config{uselongdouble} eq "define") {
+	print "long doubles by default\n";
+    }
+
+It can also be that long doubles and doubles are the same thing:
+
+        use Config;
+        ($Config{doublesize} == $Config{longdblsize}) &&
+                print "doubles are long doubles\n";
+
+The size specifier C<V> has no effect for Perl code, but is supported for
+compatibility with XS code.  It means "use the standard size for a Perl
+integer or floating-point number", which is the default.
+
+=item order of arguments
+
+Normally, sprintf() takes the next unused argument as the value to
+format for each format specification. If the format specification
+uses C<*> to require additional arguments, these are consumed from
+the argument list in the order they appear in the format
+specification I<before> the value to format.  Where an argument is
+specified by an explicit index, this does not affect the normal
+order for the arguments, even when the explicitly specified index
+would have been the next argument.
+
+So:
+
+    printf "<%*.*s>", $a, $b, $c;
+
+uses C<$a> for the width, C<$b> for the precision, and C<$c>
+as the value to format; while:
+
+  printf "<%*1$.*s>", $a, $b;
+
+would use C<$a> for the width and precision, and C<$b> as the
+value to format.
+
+Here are some more examples; be aware that when using an explicit
+index, the C<$> may need escaping:
+
+  printf "%2\$d %d\n",    12, 34;        # will print "34 12\n"
+  printf "%2\$d %d %d\n", 12, 34;        # will print "34 12 34\n"
+  printf "%3\$d %d %d\n", 12, 34, 56;    # will print "56 12 34\n"
+  printf "%2\$*3\$d %d\n", 12, 34, 3;    # will print " 34 12\n"
+
+=back
+
+If C<use locale> is in effect and POSIX::setlocale() has been called,
+the character used for the decimal separator in formatted floating-point
+numbers is affected by the LC_NUMERIC locale.  See L<perllocale>
+and L<POSIX>.
+
+=item sqrt EXPR
+X<sqrt> X<root> X<square root>
+
+=item sqrt
+
+Return the positive square root of EXPR.  If EXPR is omitted, uses
+C<$_>.  Works only for non-negative operands unless you've
+loaded the C<Math::Complex> module.
+
+    use Math::Complex;
+    print sqrt(-4);    # prints 2i
+
+=item srand EXPR
+X<srand> X<seed> X<randseed>
+
+=item srand
+
+Sets and returns the random number seed for the C<rand> operator.
+
+The point of the function is to "seed" the C<rand> function so that
+C<rand> can produce a different sequence each time you run your
+program.  When called with a parameter, C<srand> uses that for the seed;
+otherwise it (semi-)randomly chooses a seed.  In either case, starting with
+Perl 5.14, it returns the seed.
+
+If C<srand()> is not called explicitly, it is called implicitly without a
+parameter at the first use of the C<rand> operator.  However, this was not true
+of versions of Perl before 5.004, so if your script will run under older
+Perl versions, it should call C<srand>; otherwise most programs won't call
+C<srand()> at all.
+
+But there are a few situations in recent Perls where programs are likely to
+want to call C<srand>.  One is for generating predictable results generally for
+testing or debugging.  There, you use C<srand($seed)>, with the same C<$seed>
+each time.  Another case is that you may want to call C<srand()>
+after a C<fork()> to avoid child processes sharing the same seed value as the
+parent (and consequently each other).
+
+Do B<not> call C<srand()> (i.e., without an argument) more than once per
+process.  The internal state of the random number generator should
+contain more entropy than can be provided by any seed, so calling
+C<srand()> again actually I<loses> randomness.
+
+Most implementations of C<srand> take an integer and will silently
+truncate decimal numbers.  This means C<srand(42)> will usually
+produce the same results as C<srand(42.1)>.  To be safe, always pass
+C<srand> an integer.
+
+In versions of Perl prior to 5.004 the default seed was just the
+current C<time>.  This isn't a particularly good seed, so many old
+programs supply their own seed value (often C<time ^ $$> or C<time ^
+($$ + ($$ << 15))>), but that isn't necessary any more.
+
+Frequently called programs (like CGI scripts) that simply use
+
+    time ^ $$
+
+for a seed can fall prey to the mathematical property that
+
+    a^b == (a+1)^(b+1)
+
+one-third of the time.  So don't do that.
+
+A typical use of the returned seed is for a test program which has too many
+combinations to test comprehensively in the time available to it each run.  It
+can test a random subset each time, and should there be a failure, log the seed
+used for that run so that it can later be used to reproduce the same results.
+
+B<C<rand()> is not cryptographically secure.  You should not rely
+on it in security-sensitive situations.>  As of this writing, a
+number of third-party CPAN modules offer random number generators
+intended by their authors to be cryptographically secure,
+including: L<Data::Entropy>, L<Crypt::Random>, L<Math::Random::Secure>,
+and L<Math::TrulyRandom>.
+
+=item stat FILEHANDLE
+X<stat> X<file, status> X<ctime>
+
+=item stat EXPR
+
+=item stat DIRHANDLE
+
+=item stat
+
+Returns a 13-element list giving the status info for a file, either
+the file opened via FILEHANDLE or DIRHANDLE, or named by EXPR.  If EXPR is 
+omitted, it stats C<$_> (not C<_>!).  Returns the empty list if C<stat> fails.  Typically
+used as follows:
+
+    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
+       $atime,$mtime,$ctime,$blksize,$blocks)
+           = stat($filename);
+
+Not all fields are supported on all filesystem types.  Here are the
+meanings of the fields:
+
+  0 dev      device number of filesystem
+  1 ino      inode number
+  2 mode     file mode  (type and permissions)
+  3 nlink    number of (hard) links to the file
+  4 uid      numeric user ID of file's owner
+  5 gid      numeric group ID of file's owner
+  6 rdev     the device identifier (special files only)
+  7 size     total size of file, in bytes
+  8 atime    last access time in seconds since the epoch
+  9 mtime    last modify time in seconds since the epoch
+ 10 ctime    inode change time in seconds since the epoch (*)
+ 11 blksize  preferred block size for file system I/O
+ 12 blocks   actual number of blocks allocated
+
+(The epoch was at 00:00 January 1, 1970 GMT.)
+
+(*) Not all fields are supported on all filesystem types. Notably, the
+ctime field is non-portable.  In particular, you cannot expect it to be a
+"creation time"; see L<perlport/"Files and Filesystems"> for details.
+
+If C<stat> is passed the special filehandle consisting of an underline, no
+stat is done, but the current contents of the stat structure from the
+last C<stat>, C<lstat>, or filetest are returned.  Example:
+
+    if (-x $file && (($d) = stat(_)) && $d < 0) {
+        print "$file is executable NFS file\n";
+    }
+
+(This works on machines only for which the device number is negative
+under NFS.)
+
+Because the mode contains both the file type and its permissions, you
+should mask off the file type portion and (s)printf using a C<"%o">
+if you want to see the real permissions.
+
+    $mode = (stat($filename))[2];
+    printf "Permissions are %04o\n", $mode & 07777;
+
+In scalar context, C<stat> returns a boolean value indicating success
+or failure, and, if successful, sets the information associated with
+the special filehandle C<_>.
+
+The L<File::stat> module provides a convenient, by-name access mechanism:
+
+    use File::stat;
+    $sb = stat($filename);
+    printf "File is %s, size is %s, perm %04o, mtime %s\n",
+           $filename, $sb->size, $sb->mode & 07777,
+           scalar localtime $sb->mtime;
+
+You can import symbolic mode constants (C<S_IF*>) and functions
+(C<S_IS*>) from the Fcntl module:
+
+    use Fcntl ':mode';
+
+    $mode = (stat($filename))[2];
+
+    $user_rwx      = ($mode & S_IRWXU) >> 6;
+    $group_read    = ($mode & S_IRGRP) >> 3;
+    $other_execute =  $mode & S_IXOTH;
+
+    printf "Permissions are %04o\n", S_IMODE($mode), "\n";
+
+    $is_setuid     =  $mode & S_ISUID;
+    $is_directory  =  S_ISDIR($mode);
+
+You could write the last two using the C<-u> and C<-d> operators.
+Commonly available C<S_IF*> constants are:
+
+    # Permissions: read, write, execute, for user, group, others.
+
+    S_IRWXU S_IRUSR S_IWUSR S_IXUSR
+    S_IRWXG S_IRGRP S_IWGRP S_IXGRP
+    S_IRWXO S_IROTH S_IWOTH S_IXOTH
+
+    # Setuid/Setgid/Stickiness/SaveText.
+    # Note that the exact meaning of these is system-dependent.
+
+    S_ISUID S_ISGID S_ISVTX S_ISTXT
+
+    # File types.  Not all are necessarily available on
+    # your system.
+
+    S_IFREG S_IFDIR S_IFLNK S_IFBLK S_IFCHR
+    S_IFIFO S_IFSOCK S_IFWHT S_ENFMT
+
+    # The following are compatibility aliases for S_IRUSR,
+    # S_IWUSR, and S_IXUSR.
+
+    S_IREAD S_IWRITE S_IEXEC
+
+and the C<S_IF*> functions are
+
+    S_IMODE($mode)    the part of $mode containing the permission
+                      bits and the setuid/setgid/sticky bits
+
+    S_IFMT($mode)     the part of $mode containing the file type
+                      which can be bit-anded with (for example)
+                      S_IFREG or with the following functions
+
+    # The operators -f, -d, -l, -b, -c, -p, and -S.
+
+    S_ISREG($mode) S_ISDIR($mode) S_ISLNK($mode)
+    S_ISBLK($mode) S_ISCHR($mode) S_ISFIFO($mode) S_ISSOCK($mode)
+
+    # No direct -X operator counterpart, but for the first one
+    # the -g operator is often equivalent.  The ENFMT stands for
+    # record flocking enforcement, a platform-dependent feature.
+
+    S_ISENFMT($mode) S_ISWHT($mode)
+
+See your native chmod(2) and stat(2) documentation for more details
+about the C<S_*> constants.  To get status info for a symbolic link
+instead of the target file behind the link, use the C<lstat> function.
+
+Portability issues: L<perlport/stat>.
+
+=item state EXPR
+X<state>
+
+=item state TYPE EXPR
+
+=item state EXPR : ATTRS
+
+=item state TYPE EXPR : ATTRS
+
+C<state> declares a lexically scoped variable, just like C<my>.
+However, those variables will never be reinitialized, contrary to
+lexical variables that are reinitialized each time their enclosing block
+is entered.
+See L<perlsub/"Persistent Private Variables"> for details.
+
+C<state> variables are enabled only when the C<use feature "state"> pragma 
+is in effect, unless the keyword is written as C<CORE::state>.
+See also L<feature>.
+
+=item study SCALAR
+X<study>
+
+=item study
+
+Takes extra time to study SCALAR (C<$_> if unspecified) in anticipation of
+doing many pattern matches on the string before it is next modified.
+This may or may not save time, depending on the nature and number of
+patterns you are searching and the distribution of character
+frequencies in the string to be searched; you probably want to compare
+run times with and without it to see which is faster.  Those loops
+that scan for many short constant strings (including the constant
+parts of more complex patterns) will benefit most.
+(The way C<study> works is this: a linked list of every
+character in the string to be searched is made, so we know, for
+example, where all the C<'k'> characters are.  From each search string,
+the rarest character is selected, based on some static frequency tables
+constructed from some C programs and English text.  Only those places
+that contain this "rarest" character are examined.)
+
+For example, here is a loop that inserts index producing entries
+before any line containing a certain pattern:
+
+    while (<>) {
+        study;
+        print ".IX foo\n"    if /\bfoo\b/;
+        print ".IX bar\n"    if /\bbar\b/;
+        print ".IX blurfl\n" if /\bblurfl\b/;
+        # ...
+        print;
+    }
+
+In searching for C</\bfoo\b/>, only locations in C<$_> that contain C<f>
+will be looked at, because C<f> is rarer than C<o>.  In general, this is
+a big win except in pathological cases.  The only question is whether
+it saves you more time than it took to build the linked list in the
+first place.
+
+Note that if you have to look for strings that you don't know till
+runtime, you can build an entire loop as a string and C<eval> that to
+avoid recompiling all your patterns all the time.  Together with
+undefining C<$/> to input entire files as one record, this can be quite
+fast, often faster than specialized programs like fgrep(1).  The following
+scans a list of files (C<@files>) for a list of words (C<@words>), and prints
+out the names of those files that contain a match:
+
+    $search = 'while (<>) { study;';
+    foreach $word (@words) {
+        $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
+    }
+    $search .= "}";
+    @ARGV = @files;
+    undef $/;
+    eval $search;        # this screams
+    $/ = "\n";        # put back to normal input delimiter
+    foreach $file (sort keys(%seen)) {
+        print $file, "\n";
+    }
+
+=item sub NAME BLOCK
+X<sub>
+
+=item sub NAME (PROTO) BLOCK
+
+=item sub NAME : ATTRS BLOCK
+
+=item sub NAME (PROTO) : ATTRS BLOCK
+
+This is subroutine definition, not a real function I<per se>.  Without a
+BLOCK it's just a forward declaration.  Without a NAME, it's an anonymous
+function declaration, so does return a value: the CODE ref of the closure
+just created.
+
+See L<perlsub> and L<perlref> for details about subroutines and
+references; see L<attributes> and L<Attribute::Handlers> for more
+information about attributes.
+
+=item __SUB__
+X<__SUB__>
+
+A special token that returns the a reference to the current subroutine, or
+C<undef> outside of a subroutine.
+
+This token is only available under C<use v5.16> or the "current_sub"
+feature.  See L<feature>.
+
+=item substr EXPR,OFFSET,LENGTH,REPLACEMENT
+X<substr> X<substring> X<mid> X<left> X<right>
+
+=item substr EXPR,OFFSET,LENGTH
+
+=item substr EXPR,OFFSET
+
+Extracts a substring out of EXPR and returns it.  First character is at
+offset zero.  If OFFSET is negative, starts
+that far back from the end of the string.  If LENGTH is omitted, returns
+everything through the end of the string.  If LENGTH is negative, leaves that
+many characters off the end of the string.
+
+    my $s = "The black cat climbed the green tree";
+    my $color  = substr $s, 4, 5;      # black
+    my $middle = substr $s, 4, -11;    # black cat climbed the
+    my $end    = substr $s, 14;        # climbed the green tree
+    my $tail   = substr $s, -4;        # tree
+    my $z      = substr $s, -4, 2;     # tr
+
+You can use the substr() function as an lvalue, in which case EXPR
+must itself be an lvalue.  If you assign something shorter than LENGTH,
+the string will shrink, and if you assign something longer than LENGTH,
+the string will grow to accommodate it.  To keep the string the same
+length, you may need to pad or chop your value using C<sprintf>.
+
+If OFFSET and LENGTH specify a substring that is partly outside the
+string, only the part within the string is returned.  If the substring
+is beyond either end of the string, substr() returns the undefined
+value and produces a warning.  When used as an lvalue, specifying a
+substring that is entirely outside the string raises an exception.
+Here's an example showing the behavior for boundary cases:
+
+    my $name = 'fred';
+    substr($name, 4) = 'dy';         # $name is now 'freddy'
+    my $null = substr $name, 6, 2;   # returns "" (no warning)
+    my $oops = substr $name, 7;      # returns undef, with warning
+    substr($name, 7) = 'gap';        # raises an exception
+
+An alternative to using substr() as an lvalue is to specify the
+replacement string as the 4th argument.  This allows you to replace
+parts of the EXPR and return what was there before in one operation,
+just as you can with splice().
+
+    my $s = "The black cat climbed the green tree";
+    my $z = substr $s, 14, 7, "jumped from";    # climbed
+    # $s is now "The black cat jumped from the green tree"
+
+Note that the lvalue returned by the three-argument version of substr() acts as
+a 'magic bullet'; each time it is assigned to, it remembers which part
+of the original string is being modified; for example:
+
+    $x = '1234';
+    for (substr($x,1,2)) {
+        $_ = 'a';   print $x,"\n";    # prints 1a4
+        $_ = 'xyz'; print $x,"\n";    # prints 1xyz4
+        $x = '56789';
+        $_ = 'pq';  print $x,"\n";    # prints 5pq9
+    }
+
+Prior to Perl version 5.9.1, the result of using an lvalue multiple times was
+unspecified.
+
+=item symlink OLDFILE,NEWFILE
+X<symlink> X<link> X<symbolic link> X<link, symbolic>
+
+Creates a new filename symbolically linked to the old filename.
+Returns C<1> for success, C<0> otherwise.  On systems that don't support
+symbolic links, raises an exception.  To check for that,
+use eval:
+
+    $symlink_exists = eval { symlink("",""); 1 };
+
+Portability issues: L<perlport/symlink>.
+
+=item syscall NUMBER, LIST
+X<syscall> X<system call>
+
+Calls the system call specified as the first element of the list,
+passing the remaining elements as arguments to the system call.  If
+unimplemented, raises an exception.  The arguments are interpreted
+as follows: if a given argument is numeric, the argument is passed as
+an int.  If not, the pointer to the string value is passed.  You are
+responsible to make sure a string is pre-extended long enough to
+receive any result that might be written into a string.  You can't use a
+string literal (or other read-only string) as an argument to C<syscall>
+because Perl has to assume that any string pointer might be written
+through.  If your
+integer arguments are not literals and have never been interpreted in a
+numeric context, you may need to add C<0> to them to force them to look
+like numbers.  This emulates the C<syswrite> function (or vice versa):
+
+    require 'syscall.ph';        # may need to run h2ph
+    $s = "hi there\n";
+    syscall(&SYS_write, fileno(STDOUT), $s, length $s);
+
+Note that Perl supports passing of up to only 14 arguments to your syscall,
+which in practice should (usually) suffice.
+
+Syscall returns whatever value returned by the system call it calls.
+If the system call fails, C<syscall> returns C<-1> and sets C<$!> (errno).
+Note that some system calls I<can> legitimately return C<-1>.  The proper
+way to handle such calls is to assign C<$!=0> before the call, then
+check the value of C<$!> if C<syscall> returns C<-1>.
+
+There's a problem with C<syscall(&SYS_pipe)>: it returns the file
+number of the read end of the pipe it creates, but there is no way
+to retrieve the file number of the other end.  You can avoid this
+problem by using C<pipe> instead.
+
+Portability issues: L<perlport/syscall>.
+
+=item sysopen FILEHANDLE,FILENAME,MODE
+X<sysopen>
+
+=item sysopen FILEHANDLE,FILENAME,MODE,PERMS
+
+Opens the file whose filename is given by FILENAME, and associates it with
+FILEHANDLE.  If FILEHANDLE is an expression, its value is used as the real
+filehandle wanted; an undefined scalar will be suitably autovivified. This
+function calls the underlying operating system's I<open>(2) function with the
+parameters FILENAME, MODE, and PERMS.
+
+The possible values and flag bits of the MODE parameter are
+system-dependent; they are available via the standard module C<Fcntl>.  See
+the documentation of your operating system's I<open>(2) syscall to see
+which values and flag bits are available.  You may combine several flags
+using the C<|>-operator.
+
+Some of the most common values are C<O_RDONLY> for opening the file in
+read-only mode, C<O_WRONLY> for opening the file in write-only mode,
+and C<O_RDWR> for opening the file in read-write mode.
+X<O_RDONLY> X<O_RDWR> X<O_WRONLY>
+
+For historical reasons, some values work on almost every system
+supported by Perl: 0 means read-only, 1 means write-only, and 2
+means read/write.  We know that these values do I<not> work under
+OS/390 & VM/ESA Unix and on the Macintosh; you probably don't want to
+use them in new code.
+
+If the file named by FILENAME does not exist and the C<open> call creates
+it (typically because MODE includes the C<O_CREAT> flag), then the value of
+PERMS specifies the permissions of the newly created file.  If you omit
+the PERMS argument to C<sysopen>, Perl uses the octal value C<0666>.
+These permission values need to be in octal, and are modified by your
+process's current C<umask>.
+X<O_CREAT>
+
+In many systems the C<O_EXCL> flag is available for opening files in
+exclusive mode.  This is B<not> locking: exclusiveness means here that
+if the file already exists, sysopen() fails.  C<O_EXCL> may not work
+on network filesystems, and has no effect unless the C<O_CREAT> flag
+is set as well.  Setting C<O_CREAT|O_EXCL> prevents the file from
+being opened if it is a symbolic link.  It does not protect against
+symbolic links in the file's path.
+X<O_EXCL>
+
+Sometimes you may want to truncate an already-existing file.  This
+can be done using the C<O_TRUNC> flag.  The behavior of
+C<O_TRUNC> with C<O_RDONLY> is undefined.
+X<O_TRUNC>
+
+You should seldom if ever use C<0644> as argument to C<sysopen>, because
+that takes away the user's option to have a more permissive umask.
+Better to omit it.  See the perlfunc(1) entry on C<umask> for more
+on this.
+
+Note that C<sysopen> depends on the fdopen() C library function.
+On many Unix systems, fdopen() is known to fail when file descriptors
+exceed a certain value, typically 255. If you need more file
+descriptors than that, consider rebuilding Perl to use the C<sfio>
+library, or perhaps using the POSIX::open() function.
+
+See L<perlopentut> for a kinder, gentler explanation of opening files.
+
+Portability issues: L<perlport/sysopen>.
+
+=item sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
+X<sysread>
+
+=item sysread FILEHANDLE,SCALAR,LENGTH
+
+Attempts to read LENGTH bytes of data into variable SCALAR from the
+specified FILEHANDLE, using the read(2).  It bypasses
+buffered IO, so mixing this with other kinds of reads, C<print>,
+C<write>, C<seek>, C<tell>, or C<eof> can cause confusion because the
+perlio or stdio layers usually buffers data.  Returns the number of
+bytes actually read, C<0> at end of file, or undef if there was an
+error (in the latter case C<$!> is also set).  SCALAR will be grown or
+shrunk so that the last byte actually read is the last byte of the
+scalar after the read.
+
+An OFFSET may be specified to place the read data at some place in the
+string other than the beginning.  A negative OFFSET specifies
+placement at that many characters counting backwards from the end of
+the string.  A positive OFFSET greater than the length of SCALAR
+results in the string being padded to the required size with C<"\0">
+bytes before the result of the read is appended.
+
+There is no syseof() function, which is ok, since eof() doesn't work
+well on device files (like ttys) anyway.  Use sysread() and check
+for a return value for 0 to decide whether you're done.
+
+Note that if the filehandle has been marked as C<:utf8> Unicode
+characters are read instead of bytes (the LENGTH, OFFSET, and the
+return value of sysread() are in Unicode characters).
+The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer.
+See L</binmode>, L</open>, and the C<open> pragma, L<open>.
+
+=item sysseek FILEHANDLE,POSITION,WHENCE
+X<sysseek> X<lseek>
+
+Sets FILEHANDLE's system position in bytes using lseek(2).  FILEHANDLE may
+be an expression whose value gives the name of the filehandle.  The values
+for WHENCE are C<0> to set the new position to POSITION; C<1> to set the it
+to the current position plus POSITION; and C<2> to set it to EOF plus
+POSITION, typically negative.
+
+Note the I<in bytes>: even if the filehandle has been set to operate
+on characters (for example by using the C<:encoding(utf8)> I/O layer),
+tell() will return byte offsets, not character offsets (because
+implementing that would render sysseek() unacceptably slow).
+
+sysseek() bypasses normal buffered IO, so mixing it with reads other
+than C<sysread> (for example C<< <> >> or read()) C<print>, C<write>,
+C<seek>, C<tell>, or C<eof> may cause confusion.
+
+For WHENCE, you may also use the constants C<SEEK_SET>, C<SEEK_CUR>,
+and C<SEEK_END> (start of the file, current position, end of the file)
+from the Fcntl module.  Use of the constants is also more portable
+than relying on 0, 1, and 2.  For example to define a "systell" function:
+
+    use Fcntl 'SEEK_CUR';
+    sub systell { sysseek($_[0], 0, SEEK_CUR) }
+
+Returns the new position, or the undefined value on failure.  A position
+of zero is returned as the string C<"0 but true">; thus C<sysseek> returns
+true on success and false on failure, yet you can still easily determine
+the new position.
+
+=item system LIST
+X<system> X<shell>
+
+=item system PROGRAM LIST
+
+Does exactly the same thing as C<exec LIST>, except that a fork is
+done first and the parent process waits for the child process to
+exit.  Note that argument processing varies depending on the
+number of arguments.  If there is more than one argument in LIST,
+or if LIST is an array with more than one value, starts the program
+given by the first element of the list with arguments given by the
+rest of the list.  If there is only one scalar argument, the argument
+is checked for shell metacharacters, and if there are any, the
+entire argument is passed to the system's command shell for parsing
+(this is C</bin/sh -c> on Unix platforms, but varies on other
+platforms).  If there are no shell metacharacters in the argument,
+it is split into words and passed directly to C<execvp>, which is
+more efficient.
+
+Beginning with v5.6.0, Perl will attempt to flush all files opened for
+output before any operation that may do a fork, but this may not be
+supported on some platforms (see L<perlport>).  To be safe, you may need
+to set C<$|> ($AUTOFLUSH in English) or call the C<autoflush()> method
+of C<IO::Handle> on any open handles.
+
+The return value is the exit status of the program as returned by the
+C<wait> call.  To get the actual exit value, shift right by eight (see
+below). See also L</exec>.  This is I<not> what you want to use to capture
+the output from a command; for that you should use merely backticks or
+C<qx//>, as described in L<perlop/"`STRING`">.  Return value of -1
+indicates a failure to start the program or an error of the wait(2) system
+call (inspect $! for the reason).
+
+If you'd like to make C<system> (and many other bits of Perl) die on error,
+have a look at the L<autodie> pragma.
+
+Like C<exec>, C<system> allows you to lie to a program about its name if
+you use the C<system PROGRAM LIST> syntax.  Again, see L</exec>.
+
+Since C<SIGINT> and C<SIGQUIT> are ignored during the execution of
+C<system>, if you expect your program to terminate on receipt of these
+signals you will need to arrange to do so yourself based on the return
+value.
+
+    @args = ("command", "arg1", "arg2");
+    system(@args) == 0
+        or die "system @args failed: $?"
+
+If you'd like to manually inspect C<system>'s failure, you can check all
+possible failure modes by inspecting C<$?> like this:
+
+    if ($? == -1) {
+        print "failed to execute: $!\n";
+    }
+    elsif ($? & 127) {
+        printf "child died with signal %d, %s coredump\n",
+            ($? & 127),  ($? & 128) ? 'with' : 'without';
+    }
+    else {
+        printf "child exited with value %d\n", $? >> 8;
+    }
+
+Alternatively, you may inspect the value of C<${^CHILD_ERROR_NATIVE}>
+with the C<W*()> calls from the POSIX module.
+
+When C<system>'s arguments are executed indirectly by the shell, 
+results and return codes are subject to its quirks.
+See L<perlop/"`STRING`"> and L</exec> for details.
+
+Since C<system> does a C<fork> and C<wait> it may affect a C<SIGCHLD>
+handler. See L<perlipc> for details.
+
+Portability issues: L<perlport/system>.
+
+=item syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
+X<syswrite>
+
+=item syswrite FILEHANDLE,SCALAR,LENGTH
+
+=item syswrite FILEHANDLE,SCALAR
+
+Attempts to write LENGTH bytes of data from variable SCALAR to the
+specified FILEHANDLE, using write(2).  If LENGTH is
+not specified, writes whole SCALAR.  It bypasses buffered IO, so
+mixing this with reads (other than C<sysread())>, C<print>, C<write>,
+C<seek>, C<tell>, or C<eof> may cause confusion because the perlio and
+stdio layers usually buffer data.  Returns the number of bytes
+actually written, or C<undef> if there was an error (in this case the
+errno variable C<$!> is also set).  If the LENGTH is greater than the
+data available in the SCALAR after the OFFSET, only as much data as is
+available will be written.
+
+An OFFSET may be specified to write the data from some part of the
+string other than the beginning.  A negative OFFSET specifies writing
+that many characters counting backwards from the end of the string.
+If SCALAR is of length zero, you can only use an OFFSET of 0.
+
+B<WARNING>: If the filehandle is marked C<:utf8>, Unicode characters
+encoded in UTF-8 are written instead of bytes, and the LENGTH, OFFSET, and
+return value of syswrite() are in (UTF8-encoded Unicode) characters.
+The C<:encoding(...)> layer implicitly introduces the C<:utf8> layer.
+Alternately, if the handle is not marked with an encoding but you
+attempt to write characters with code points over 255, raises an exception.
+See L</binmode>, L</open>, and the C<open> pragma, L<open>.
+
+=item tell FILEHANDLE
+X<tell>
+
+=item tell
+
+Returns the current position I<in bytes> for FILEHANDLE, or -1 on
+error.  FILEHANDLE may be an expression whose value gives the name of
+the actual filehandle.  If FILEHANDLE is omitted, assumes the file
+last read.
+
+Note the I<in bytes>: even if the filehandle has been set to
+operate on characters (for example by using the C<:encoding(utf8)> open
+layer), tell() will return byte offsets, not character offsets (because
+that would render seek() and tell() rather slow).
+
+The return value of tell() for the standard streams like the STDIN
+depends on the operating system: it may return -1 or something else.
+tell() on pipes, fifos, and sockets usually returns -1.
+
+There is no C<systell> function.  Use C<sysseek(FH, 0, 1)> for that.
+
+Do not use tell() (or other buffered I/O operations) on a filehandle
+that has been manipulated by sysread(), syswrite(), or sysseek().
+Those functions ignore the buffering, while tell() does not.
+
+=item telldir DIRHANDLE
+X<telldir>
+
+Returns the current position of the C<readdir> routines on DIRHANDLE.
+Value may be given to C<seekdir> to access a particular location in a
+directory.  C<telldir> has the same caveats about possible directory
+compaction as the corresponding system library routine.
+
+=item tie VARIABLE,CLASSNAME,LIST
+X<tie>
+
+This function binds a variable to a package class that will provide the
+implementation for the variable.  VARIABLE is the name of the variable
+to be enchanted.  CLASSNAME is the name of a class implementing objects
+of correct type.  Any additional arguments are passed to the C<new>
+method of the class (meaning C<TIESCALAR>, C<TIEHANDLE>, C<TIEARRAY>,
+or C<TIEHASH>).  Typically these are arguments such as might be passed
+to the C<dbm_open()> function of C.  The object returned by the C<new>
+method is also returned by the C<tie> function, which would be useful
+if you want to access other methods in CLASSNAME.
+
+Note that functions such as C<keys> and C<values> may return huge lists
+when used on large objects, like DBM files.  You may prefer to use the
+C<each> function to iterate over such.  Example:
+
+    # print out history file offsets
+    use NDBM_File;
+    tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
+    while (($key,$val) = each %HIST) {
+        print $key, ' = ', unpack('L',$val), "\n";
+    }
+    untie(%HIST);
+
+A class implementing a hash should have the following methods:
+
+    TIEHASH classname, LIST
+    FETCH this, key
+    STORE this, key, value
+    DELETE this, key
+    CLEAR this
+    EXISTS this, key
+    FIRSTKEY this
+    NEXTKEY this, lastkey
+    SCALAR this
+    DESTROY this
+    UNTIE this
+
+A class implementing an ordinary array should have the following methods:
+
+    TIEARRAY classname, LIST
+    FETCH this, key
+    STORE this, key, value
+    FETCHSIZE this
+    STORESIZE this, count
+    CLEAR this
+    PUSH this, LIST
+    POP this
+    SHIFT this
+    UNSHIFT this, LIST
+    SPLICE this, offset, length, LIST
+    EXTEND this, count
+    DESTROY this
+    UNTIE this
+
+A class implementing a filehandle should have the following methods:
+
+    TIEHANDLE classname, LIST
+    READ this, scalar, length, offset
+    READLINE this
+    GETC this
+    WRITE this, scalar, length, offset
+    PRINT this, LIST
+    PRINTF this, format, LIST
+    BINMODE this
+    EOF this
+    FILENO this
+    SEEK this, position, whence
+    TELL this
+    OPEN this, mode, LIST
+    CLOSE this
+    DESTROY this
+    UNTIE this
+
+A class implementing a scalar should have the following methods:
+
+    TIESCALAR classname, LIST
+    FETCH this,
+    STORE this, value
+    DESTROY this
+    UNTIE this
+
+Not all methods indicated above need be implemented.  See L<perltie>,
+L<Tie::Hash>, L<Tie::Array>, L<Tie::Scalar>, and L<Tie::Handle>.
+
+Unlike C<dbmopen>, the C<tie> function will not C<use> or C<require> a module
+for you; you need to do that explicitly yourself.  See L<DB_File>
+or the F<Config> module for interesting C<tie> implementations.
+
+For further details see L<perltie>, L<"tied VARIABLE">.
+
+=item tied VARIABLE
+X<tied>
+
+Returns a reference to the object underlying VARIABLE (the same value
+that was originally returned by the C<tie> call that bound the variable
+to a package.)  Returns the undefined value if VARIABLE isn't tied to a
+package.
+
+=item time
+X<time> X<epoch>
+
+Returns the number of non-leap seconds since whatever time the system
+considers to be the epoch, suitable for feeding to C<gmtime> and
+C<localtime>. On most systems the epoch is 00:00:00 UTC, January 1, 1970;
+a prominent exception being Mac OS Classic which uses 00:00:00, January 1,
+1904 in the current local time zone for its epoch.
+
+For measuring time in better granularity than one second, use the
+L<Time::HiRes> module from Perl 5.8 onwards (or from CPAN before then), or,
+if you have gettimeofday(2), you may be able to use the C<syscall>
+interface of Perl.  See L<perlfaq8> for details.
+
+For date and time processing look at the many related modules on CPAN.
+For a comprehensive date and time representation look at the
+L<DateTime> module.
+
+=item times
+X<times>
+
+Returns a four-element list giving the user and system times in
+seconds for this process and any exited children of this process.
+
+    ($user,$system,$cuser,$csystem) = times;
+
+In scalar context, C<times> returns C<$user>.
+
+Children's times are only included for terminated children.
+
+Portability issues: L<perlport/times>.
+
+=item tr///
+
+The transliteration operator.  Same as C<y///>.  See
+L<perlop/"Quote and Quote-like Operators">.
+
+=item truncate FILEHANDLE,LENGTH
+X<truncate>
+
+=item truncate EXPR,LENGTH
+
+Truncates the file opened on FILEHANDLE, or named by EXPR, to the
+specified length.  Raises an exception if truncate isn't implemented
+on your system.  Returns true if successful, C<undef> on error.
+
+The behavior is undefined if LENGTH is greater than the length of the
+file.
+
+The position in the file of FILEHANDLE is left unchanged.  You may want to
+call L<seek|/"seek FILEHANDLE,POSITION,WHENCE"> before writing to the file.
+
+Portability issues: L<perlport/truncate>.
+
+=item uc EXPR
+X<uc> X<uppercase> X<toupper>
+
+=item uc
+
+Returns an uppercased version of EXPR.  This is the internal function
+implementing the C<\U> escape in double-quoted strings.
+It does not attempt to do titlecase mapping on initial letters.  See
+L</ucfirst> for that.
+
+If EXPR is omitted, uses C<$_>.
+
+This function behaves the same way under various pragma, such as in a locale,
+as L</lc> does.
+
+=item ucfirst EXPR
+X<ucfirst> X<uppercase>
+
+=item ucfirst
+
+Returns the value of EXPR with the first character in uppercase
+(titlecase in Unicode).  This is the internal function implementing
+the C<\u> escape in double-quoted strings.
+
+If EXPR is omitted, uses C<$_>.
+
+This function behaves the same way under various pragma, such as in a locale,
+as L</lc> does.
+
+=item umask EXPR
+X<umask>
+
+=item umask
+
+Sets the umask for the process to EXPR and returns the previous value.
+If EXPR is omitted, merely returns the current umask.
+
+The Unix permission C<rwxr-x---> is represented as three sets of three
+bits, or three octal digits: C<0750> (the leading 0 indicates octal
+and isn't one of the digits).  The C<umask> value is such a number
+representing disabled permissions bits.  The permission (or "mode")
+values you pass C<mkdir> or C<sysopen> are modified by your umask, so
+even if you tell C<sysopen> to create a file with permissions C<0777>,
+if your umask is C<0022>, then the file will actually be created with
+permissions C<0755>.  If your C<umask> were C<0027> (group can't
+write; others can't read, write, or execute), then passing
+C<sysopen> C<0666> would create a file with mode C<0640> (because 
+C<0666 &~ 027> is C<0640>).
+
+Here's some advice: supply a creation mode of C<0666> for regular
+files (in C<sysopen>) and one of C<0777> for directories (in
+C<mkdir>) and executable files.  This gives users the freedom of
+choice: if they want protected files, they might choose process umasks
+of C<022>, C<027>, or even the particularly antisocial mask of C<077>.
+Programs should rarely if ever make policy decisions better left to
+the user.  The exception to this is when writing files that should be
+kept private: mail files, web browser cookies, I<.rhosts> files, and
+so on.
+
+If umask(2) is not implemented on your system and you are trying to
+restrict access for I<yourself> (i.e., C<< (EXPR & 0700) > 0 >>), 
+raises an exception.  If umask(2) is not implemented and you are
+not trying to restrict access for yourself, returns C<undef>.
+
+Remember that a umask is a number, usually given in octal; it is I<not> a
+string of octal digits.  See also L</oct>, if all you have is a string.
+
+Portability issues: L<perlport/umask>.
+
+=item undef EXPR
+X<undef> X<undefine>
+
+=item undef
+
+Undefines the value of EXPR, which must be an lvalue.  Use only on a
+scalar value, an array (using C<@>), a hash (using C<%>), a subroutine
+(using C<&>), or a typeglob (using C<*>).  Saying C<undef $hash{$key}>
+will probably not do what you expect on most predefined variables or
+DBM list values, so don't do that; see L</delete>.  Always returns the
+undefined value.  You can omit the EXPR, in which case nothing is
+undefined, but you still get an undefined value that you could, for
+instance, return from a subroutine, assign to a variable, or pass as a
+parameter.  Examples:
+
+    undef $foo;
+    undef $bar{'blurfl'};      # Compare to: delete $bar{'blurfl'};
+    undef @ary;
+    undef %hash;
+    undef &mysub;
+    undef *xyz;       # destroys $xyz, @xyz, %xyz, &xyz, etc.
+    return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
+    select undef, undef, undef, 0.25;
+    ($a, $b, undef, $c) = &foo;       # Ignore third value returned
+
+Note that this is a unary operator, not a list operator.
+
+=item unlink LIST
+X<unlink> X<delete> X<remove> X<rm> X<del>
+
+=item unlink
+
+Deletes a list of files. On success, it returns the number of files
+it successfully deleted. On failure, it returns false and sets C<$!>
+(errno):
+
+    my $unlinked = unlink 'a', 'b', 'c';
+    unlink @goners;
+    unlink glob "*.bak";
+
+On error, C<unlink> will not tell you which files it could not remove.
+If you want to know which files you could not remove, try them one
+at a time:
+
+     foreach my $file ( @goners ) {
+         unlink $file or warn "Could not unlink $file: $!";
+     }
+
+Note: C<unlink> will not attempt to delete directories unless you are
+superuser and the B<-U> flag is supplied to Perl. Even if these
+conditions are met, be warned that unlinking a directory can inflict
+damage on your filesystem.  Finally, using C<unlink> on directories is
+not supported on many operating systems.  Use C<rmdir> instead.
+
+If LIST is omitted, C<unlink> uses C<$_>.
+
+=item unpack TEMPLATE,EXPR
+X<unpack>
+
+=item unpack TEMPLATE
+
+C<unpack> does the reverse of C<pack>: it takes a string
+and expands it out into a list of values.
+(In scalar context, it returns merely the first value produced.)
+
+If EXPR is omitted, unpacks the C<$_> string.
+See L<perlpacktut> for an introduction to this function.
+
+The string is broken into chunks described by the TEMPLATE.  Each chunk
+is converted separately to a value.  Typically, either the string is a result
+of C<pack>, or the characters of the string represent a C structure of some
+kind.
+
+The TEMPLATE has the same format as in the C<pack> function.
+Here's a subroutine that does substring:
+
+    sub substr {
+        my($what,$where,$howmuch) = @_;
+        unpack("x$where a$howmuch", $what);
+    }
+
+and then there's
+
+    sub ordinal { unpack("W",$_[0]); } # same as ord()
+
+In addition to fields allowed in pack(), you may prefix a field with
+a %<number> to indicate that
+you want a <number>-bit checksum of the items instead of the items
+themselves.  Default is a 16-bit checksum.  Checksum is calculated by
+summing numeric values of expanded values (for string fields the sum of
+C<ord($char)> is taken; for bit fields the sum of zeroes and ones).
+
+For example, the following
+computes the same number as the System V sum program:
+
+    $checksum = do {
+        local $/;  # slurp!
+        unpack("%32W*",<>) % 65535;
+    };
+
+The following efficiently counts the number of set bits in a bit vector:
+
+    $setbits = unpack("%32b*", $selectmask);
+
+The C<p> and C<P> formats should be used with care.  Since Perl
+has no way of checking whether the value passed to C<unpack()>
+corresponds to a valid memory location, passing a pointer value that's
+not known to be valid is likely to have disastrous consequences.
+
+If there are more pack codes or if the repeat count of a field or a group
+is larger than what the remainder of the input string allows, the result
+is not well defined: the repeat count may be decreased, or
+C<unpack()> may produce empty strings or zeros, or it may raise an exception.
+If the input string is longer than one described by the TEMPLATE,
+the remainder of that input string is ignored.
+
+See L</pack> for more examples and notes.
+
+=item untie VARIABLE
+X<untie>
+
+Breaks the binding between a variable and a package.
+(See L<tie|/tie VARIABLE,CLASSNAME,LIST>.)
+Has no effect if the variable is not tied.
+
+=item unshift ARRAY,LIST
+X<unshift>
+
+=item unshift EXPR,LIST
+
+Does the opposite of a C<shift>.  Or the opposite of a C<push>,
+depending on how you look at it.  Prepends list to the front of the
+array and returns the new number of elements in the array.
+
+    unshift(@ARGV, '-e') unless $ARGV[0] =~ /^-/;
+
+Note the LIST is prepended whole, not one element at a time, so the
+prepended elements stay in the same order.  Use C<reverse> to do the
+reverse.
+
+Starting with Perl 5.14, C<unshift> can take a scalar EXPR, which must hold
+a reference to an unblessed array.  The argument will be dereferenced
+automatically.  This aspect of C<unshift> is considered highly
+experimental.  The exact behaviour may change in a future version of Perl.
+
+=item use Module VERSION LIST
+X<use> X<module> X<import>
+
+=item use Module VERSION
+
+=item use Module LIST
+
+=item use Module
+
+=item use VERSION
+
+Imports some semantics into the current package from the named module,
+generally by aliasing certain subroutine or variable names into your
+package.  It is exactly equivalent to
+
+    BEGIN { require Module; Module->import( LIST ); }
+
+except that Module I<must> be a bareword.
+The importation can be made conditional; see L<if>.
+
+In the peculiar C<use VERSION> form, VERSION may be either a positive
+decimal fraction such as 5.006, which will be compared to C<$]>, or a v-string
+of the form v5.6.1, which will be compared to C<$^V> (aka $PERL_VERSION).  An
+exception is raised if VERSION is greater than the version of the
+current Perl interpreter; Perl will not attempt to parse the rest of the
+file.  Compare with L</require>, which can do a similar check at run time.
+Symmetrically, C<no VERSION> allows you to specify that you want a version
+of Perl older than the specified one.
+
+Specifying VERSION as a literal of the form v5.6.1 should generally be
+avoided, because it leads to misleading error messages under earlier
+versions of Perl (that is, prior to 5.6.0) that do not support this
+syntax.  The equivalent numeric version should be used instead.
+
+    use v5.6.1;     # compile time version check
+    use 5.6.1;      # ditto
+    use 5.006_001;  # ditto; preferred for backwards compatibility
+
+This is often useful if you need to check the current Perl version before
+C<use>ing library modules that won't work with older versions of Perl.
+(We try not to do this more than we have to.)
+
+Also, if the specified Perl version is greater than or equal to 5.9.5,
+C<use VERSION> will also load the C<feature> pragma and enable all
+features available in the requested version.  See L<feature>.
+Similarly, if the specified Perl version is greater than or equal to
+5.11.0, strictures are enabled lexically as with C<use strict> (except
+that the F<strict.pm> file is not actually loaded).
+
+The C<BEGIN> forces the C<require> and C<import> to happen at compile time.  The
+C<require> makes sure the module is loaded into memory if it hasn't been
+yet.  The C<import> is not a builtin; it's just an ordinary static method
+call into the C<Module> package to tell the module to import the list of
+features back into the current package.  The module can implement its
+C<import> method any way it likes, though most modules just choose to
+derive their C<import> method via inheritance from the C<Exporter> class that
+is defined in the C<Exporter> module.  See L<Exporter>.  If no C<import>
+method can be found then the call is skipped, even if there is an AUTOLOAD
+method.
+
+If you do not want to call the package's C<import> method (for instance,
+to stop your namespace from being altered), explicitly supply the empty list:
+
+    use Module ();
+
+That is exactly equivalent to
+
+    BEGIN { require Module }
+
+If the VERSION argument is present between Module and LIST, then the
+C<use> will call the VERSION method in class Module with the given
+version as an argument.  The default VERSION method, inherited from
+the UNIVERSAL class, croaks if the given version is larger than the
+value of the variable C<$Module::VERSION>.
+
+Again, there is a distinction between omitting LIST (C<import> called
+with no arguments) and an explicit empty LIST C<()> (C<import> not
+called).  Note that there is no comma after VERSION!
+
+Because this is a wide-open interface, pragmas (compiler directives)
+are also implemented this way.  Currently implemented pragmas are:
+
+    use constant;
+    use diagnostics;
+    use integer;
+    use sigtrap  qw(SEGV BUS);
+    use strict   qw(subs vars refs);
+    use subs     qw(afunc blurfl);
+    use warnings qw(all);
+    use sort     qw(stable _quicksort _mergesort);
+
+Some of these pseudo-modules import semantics into the current
+block scope (like C<strict> or C<integer>, unlike ordinary modules,
+which import symbols into the current package (which are effective
+through the end of the file).
+
+Because C<use> takes effect at compile time, it doesn't respect the
+ordinary flow control of the code being compiled.  In particular, putting
+a C<use> inside the false branch of a conditional doesn't prevent it
+from being processed.  If a module or pragma only needs to be loaded 
+conditionally, this can be done using the L<if> pragma:
+
+    use if $] < 5.008, "utf8";
+    use if WANT_WARNINGS, warnings => qw(all);
+
+There's a corresponding C<no> declaration that unimports meanings imported
+by C<use>, i.e., it calls C<unimport Module LIST> instead of C<import>.
+It behaves just as C<import> does with VERSION, an omitted or empty LIST, 
+or no unimport method being found.
+
+    no integer;
+    no strict 'refs';
+    no warnings;
+
+Care should be taken when using the C<no VERSION> form of C<no>.  It is
+I<only> meant to be used to assert that the running Perl is of a earlier
+version than its argument and I<not> to undo the feature-enabling side effects
+of C<use VERSION>.
+
+See L<perlmodlib> for a list of standard modules and pragmas.  See L<perlrun>
+for the C<-M> and C<-m> command-line options to Perl that give C<use>
+functionality from the command-line.
+
+=item utime LIST
+X<utime>
+
+Changes the access and modification times on each file of a list of
+files.  The first two elements of the list must be the NUMERIC access
+and modification times, in that order.  Returns the number of files
+successfully changed.  The inode change time of each file is set
+to the current time.  For example, this code has the same effect as the
+Unix touch(1) command when the files I<already exist> and belong to
+the user running the program:
+
+    #!/usr/bin/perl
+    $atime = $mtime = time;
+    utime $atime, $mtime, @ARGV;
+
+Since Perl 5.7.2, if the first two elements of the list are C<undef>, 
+the utime(2) syscall from your C library is called with a null second
+argument. On most systems, this will set the file's access and
+modification times to the current time (i.e., equivalent to the example
+above) and will work even on files you don't own provided you have write
+permission:
+
+    for $file (@ARGV) {
+	utime(undef, undef, $file) 
+	    || warn "couldn't touch $file: $!";
+    } 
+
+Under NFS this will use the time of the NFS server, not the time of
+the local machine.  If there is a time synchronization problem, the
+NFS server and local machine will have different times.  The Unix
+touch(1) command will in fact normally use this form instead of the
+one shown in the first example.
+
+Passing only one of the first two elements as C<undef> is
+equivalent to passing a 0 and will not have the effect 
+described when both are C<undef>.  This also triggers an
+uninitialized warning.
+
+On systems that support futimes(2), you may pass filehandles among the
+files.  On systems that don't support futimes(2), passing filehandles raises
+an exception.  Filehandles must be passed as globs or glob references to be
+recognized; barewords are considered filenames.
+
+Portability issues: L<perlport/utime>.
+
+=item values HASH
+X<values>
+
+=item values ARRAY
+
+=item values EXPR
+
+Returns a list consisting of all the values of the named hash, or the values
+of an array. (In scalar context, returns the number of values.)
+
+The values are returned in an apparently random order.  The actual
+random order is subject to change in future versions of Perl, but it
+is guaranteed to be the same order as either the C<keys> or C<each>
+function would produce on the same (unmodified) hash.  Since Perl
+5.8.1 the ordering is different even between different runs of Perl
+for security reasons (see L<perlsec/"Algorithmic Complexity Attacks">).
+
+As a side effect, calling values() resets the HASH or ARRAY's internal
+iterator;
+see L</each>. (In particular, calling values() in void context resets
+the iterator with no other overhead. Apart from resetting the iterator,
+C<values @array> in list context is the same as plain C<@array>.
+We recommend that you use void context C<keys @array> for this, but reasoned
+that it taking C<values @array> out would require more documentation than
+leaving it in.)
+
+Note that the values are not copied, which means modifying them will
+modify the contents of the hash:
+
+    for (values %hash)      { s/foo/bar/g }   # modifies %hash values
+    for (@hash{keys %hash}) { s/foo/bar/g }   # same
+
+Starting with Perl 5.14, C<values> can take a scalar EXPR, which must hold
+a reference to an unblessed hash or array.  The argument will be
+dereferenced automatically.  This aspect of C<values> is considered highly
+experimental.  The exact behaviour may change in a future version of Perl.
+
+    for (values $hashref) { ... }
+    for (values $obj->get_arrayref) { ... }
+
+See also C<keys>, C<each>, and C<sort>.
+
+=item vec EXPR,OFFSET,BITS
+X<vec> X<bit> X<bit vector>
+
+Treats the string in EXPR as a bit vector made up of elements of
+width BITS and returns the value of the element specified by OFFSET
+as an unsigned integer.  BITS therefore specifies the number of bits
+that are reserved for each element in the bit vector.  This must
+be a power of two from 1 to 32 (or 64, if your platform supports
+that).
+
+If BITS is 8, "elements" coincide with bytes of the input string.
+
+If BITS is 16 or more, bytes of the input string are grouped into chunks
+of size BITS/8, and each group is converted to a number as with
+pack()/unpack() with big-endian formats C<n>/C<N> (and analogously
+for BITS==64).  See L<"pack"> for details.
+
+If bits is 4 or less, the string is broken into bytes, then the bits
+of each byte are broken into 8/BITS groups.  Bits of a byte are
+numbered in a little-endian-ish way, as in C<0x01>, C<0x02>,
+C<0x04>, C<0x08>, C<0x10>, C<0x20>, C<0x40>, C<0x80>.  For example,
+breaking the single input byte C<chr(0x36)> into two groups gives a list
+C<(0x6, 0x3)>; breaking it into 4 groups gives C<(0x2, 0x1, 0x3, 0x0)>.
+
+C<vec> may also be assigned to, in which case parentheses are needed
+to give the expression the correct precedence as in
+
+    vec($image, $max_x * $x + $y, 8) = 3;
+
+If the selected element is outside the string, the value 0 is returned.
+If an element off the end of the string is written to, Perl will first
+extend the string with sufficiently many zero bytes.   It is an error
+to try to write off the beginning of the string (i.e., negative OFFSET).
+
+If the string happens to be encoded as UTF-8 internally (and thus has
+the UTF8 flag set), this is ignored by C<vec>, and it operates on the
+internal byte string, not the conceptual character string, even if you
+only have characters with values less than 256. 
+
+Strings created with C<vec> can also be manipulated with the logical
+operators C<|>, C<&>, C<^>, and C<~>.  These operators will assume a bit
+vector operation is desired when both operands are strings.
+See L<perlop/"Bitwise String Operators">.
+
+The following code will build up an ASCII string saying C<'PerlPerlPerl'>.
+The comments show the string after each step.  Note that this code works
+in the same way on big-endian or little-endian machines.
+
+    my $foo = '';
+    vec($foo,  0, 32) = 0x5065726C; # 'Perl'
+
+    # $foo eq "Perl" eq "\x50\x65\x72\x6C", 32 bits
+    print vec($foo, 0, 8);  # prints 80 == 0x50 == ord('P')
+
+    vec($foo,  2, 16) = 0x5065; # 'PerlPe'
+    vec($foo,  3, 16) = 0x726C; # 'PerlPerl'
+    vec($foo,  8,  8) = 0x50;   # 'PerlPerlP'
+    vec($foo,  9,  8) = 0x65;   # 'PerlPerlPe'
+    vec($foo, 20,  4) = 2;      # 'PerlPerlPe'   . "\x02"
+    vec($foo, 21,  4) = 7;      # 'PerlPerlPer'
+                                   # 'r' is "\x72"
+    vec($foo, 45,  2) = 3;      # 'PerlPerlPer'  . "\x0c"
+    vec($foo, 93,  1) = 1;      # 'PerlPerlPer'  . "\x2c"
+    vec($foo, 94,  1) = 1;      # 'PerlPerlPerl'
+                                   # 'l' is "\x6c"
+
+To transform a bit vector into a string or list of 0's and 1's, use these:
+
+    $bits = unpack("b*", $vector);
+    @bits = split(//, unpack("b*", $vector));
+
+If you know the exact length in bits, it can be used in place of the C<*>.
+
+Here is an example to illustrate how the bits actually fall in place:
+
+    #!/usr/bin/perl -wl
+
+    print <<'EOT';
+                                      0         1         2         3
+                       unpack("V",$_) 01234567890123456789012345678901
+    ------------------------------------------------------------------
+    EOT
+
+    for $w (0..3) {
+        $width = 2**$w;
+        for ($shift=0; $shift < $width; ++$shift) {
+            for ($off=0; $off < 32/$width; ++$off) {
+                $str = pack("B*", "0"x32);
+                $bits = (1<<$shift);
+                vec($str, $off, $width) = $bits;
+                $res = unpack("b*",$str);
+                $val = unpack("V", $str);
+                write;
+            }
+        }
+    }
+
+    format STDOUT =
+    vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
+    $off, $width, $bits, $val, $res
+    .
+    __END__
+
+Regardless of the machine architecture on which it runs, the 
+example above should print the following table:
+
+                                      0         1         2         3
+                       unpack("V",$_) 01234567890123456789012345678901
+    ------------------------------------------------------------------
+    vec($_, 0, 1) = 1   ==          1 10000000000000000000000000000000
+    vec($_, 1, 1) = 1   ==          2 01000000000000000000000000000000
+    vec($_, 2, 1) = 1   ==          4 00100000000000000000000000000000
+    vec($_, 3, 1) = 1   ==          8 00010000000000000000000000000000
+    vec($_, 4, 1) = 1   ==         16 00001000000000000000000000000000
+    vec($_, 5, 1) = 1   ==         32 00000100000000000000000000000000
+    vec($_, 6, 1) = 1   ==         64 00000010000000000000000000000000
+    vec($_, 7, 1) = 1   ==        128 00000001000000000000000000000000
+    vec($_, 8, 1) = 1   ==        256 00000000100000000000000000000000
+    vec($_, 9, 1) = 1   ==        512 00000000010000000000000000000000
+    vec($_,10, 1) = 1   ==       1024 00000000001000000000000000000000
+    vec($_,11, 1) = 1   ==       2048 00000000000100000000000000000000
+    vec($_,12, 1) = 1   ==       4096 00000000000010000000000000000000
+    vec($_,13, 1) = 1   ==       8192 00000000000001000000000000000000
+    vec($_,14, 1) = 1   ==      16384 00000000000000100000000000000000
+    vec($_,15, 1) = 1   ==      32768 00000000000000010000000000000000
+    vec($_,16, 1) = 1   ==      65536 00000000000000001000000000000000
+    vec($_,17, 1) = 1   ==     131072 00000000000000000100000000000000
+    vec($_,18, 1) = 1   ==     262144 00000000000000000010000000000000
+    vec($_,19, 1) = 1   ==     524288 00000000000000000001000000000000
+    vec($_,20, 1) = 1   ==    1048576 00000000000000000000100000000000
+    vec($_,21, 1) = 1   ==    2097152 00000000000000000000010000000000
+    vec($_,22, 1) = 1   ==    4194304 00000000000000000000001000000000
+    vec($_,23, 1) = 1   ==    8388608 00000000000000000000000100000000
+    vec($_,24, 1) = 1   ==   16777216 00000000000000000000000010000000
+    vec($_,25, 1) = 1   ==   33554432 00000000000000000000000001000000
+    vec($_,26, 1) = 1   ==   67108864 00000000000000000000000000100000
+    vec($_,27, 1) = 1   ==  134217728 00000000000000000000000000010000
+    vec($_,28, 1) = 1   ==  268435456 00000000000000000000000000001000
+    vec($_,29, 1) = 1   ==  536870912 00000000000000000000000000000100
+    vec($_,30, 1) = 1   == 1073741824 00000000000000000000000000000010
+    vec($_,31, 1) = 1   == 2147483648 00000000000000000000000000000001
+    vec($_, 0, 2) = 1   ==          1 10000000000000000000000000000000
+    vec($_, 1, 2) = 1   ==          4 00100000000000000000000000000000
+    vec($_, 2, 2) = 1   ==         16 00001000000000000000000000000000
+    vec($_, 3, 2) = 1   ==         64 00000010000000000000000000000000
+    vec($_, 4, 2) = 1   ==        256 00000000100000000000000000000000
+    vec($_, 5, 2) = 1   ==       1024 00000000001000000000000000000000
+    vec($_, 6, 2) = 1   ==       4096 00000000000010000000000000000000
+    vec($_, 7, 2) = 1   ==      16384 00000000000000100000000000000000
+    vec($_, 8, 2) = 1   ==      65536 00000000000000001000000000000000
+    vec($_, 9, 2) = 1   ==     262144 00000000000000000010000000000000
+    vec($_,10, 2) = 1   ==    1048576 00000000000000000000100000000000
+    vec($_,11, 2) = 1   ==    4194304 00000000000000000000001000000000
+    vec($_,12, 2) = 1   ==   16777216 00000000000000000000000010000000
+    vec($_,13, 2) = 1   ==   67108864 00000000000000000000000000100000
+    vec($_,14, 2) = 1   ==  268435456 00000000000000000000000000001000
+    vec($_,15, 2) = 1   == 1073741824 00000000000000000000000000000010
+    vec($_, 0, 2) = 2   ==          2 01000000000000000000000000000000
+    vec($_, 1, 2) = 2   ==          8 00010000000000000000000000000000
+    vec($_, 2, 2) = 2   ==         32 00000100000000000000000000000000
+    vec($_, 3, 2) = 2   ==        128 00000001000000000000000000000000
+    vec($_, 4, 2) = 2   ==        512 00000000010000000000000000000000
+    vec($_, 5, 2) = 2   ==       2048 00000000000100000000000000000000
+    vec($_, 6, 2) = 2   ==       8192 00000000000001000000000000000000
+    vec($_, 7, 2) = 2   ==      32768 00000000000000010000000000000000
+    vec($_, 8, 2) = 2   ==     131072 00000000000000000100000000000000
+    vec($_, 9, 2) = 2   ==     524288 00000000000000000001000000000000
+    vec($_,10, 2) = 2   ==    2097152 00000000000000000000010000000000
+    vec($_,11, 2) = 2   ==    8388608 00000000000000000000000100000000
+    vec($_,12, 2) = 2   ==   33554432 00000000000000000000000001000000
+    vec($_,13, 2) = 2   ==  134217728 00000000000000000000000000010000
+    vec($_,14, 2) = 2   ==  536870912 00000000000000000000000000000100
+    vec($_,15, 2) = 2   == 2147483648 00000000000000000000000000000001
+    vec($_, 0, 4) = 1   ==          1 10000000000000000000000000000000
+    vec($_, 1, 4) = 1   ==         16 00001000000000000000000000000000
+    vec($_, 2, 4) = 1   ==        256 00000000100000000000000000000000
+    vec($_, 3, 4) = 1   ==       4096 00000000000010000000000000000000
+    vec($_, 4, 4) = 1   ==      65536 00000000000000001000000000000000
+    vec($_, 5, 4) = 1   ==    1048576 00000000000000000000100000000000
+    vec($_, 6, 4) = 1   ==   16777216 00000000000000000000000010000000
+    vec($_, 7, 4) = 1   ==  268435456 00000000000000000000000000001000
+    vec($_, 0, 4) = 2   ==          2 01000000000000000000000000000000
+    vec($_, 1, 4) = 2   ==         32 00000100000000000000000000000000
+    vec($_, 2, 4) = 2   ==        512 00000000010000000000000000000000
+    vec($_, 3, 4) = 2   ==       8192 00000000000001000000000000000000
+    vec($_, 4, 4) = 2   ==     131072 00000000000000000100000000000000
+    vec($_, 5, 4) = 2   ==    2097152 00000000000000000000010000000000
+    vec($_, 6, 4) = 2   ==   33554432 00000000000000000000000001000000
+    vec($_, 7, 4) = 2   ==  536870912 00000000000000000000000000000100
+    vec($_, 0, 4) = 4   ==          4 00100000000000000000000000000000
+    vec($_, 1, 4) = 4   ==         64 00000010000000000000000000000000
+    vec($_, 2, 4) = 4   ==       1024 00000000001000000000000000000000
+    vec($_, 3, 4) = 4   ==      16384 00000000000000100000000000000000
+    vec($_, 4, 4) = 4   ==     262144 00000000000000000010000000000000
+    vec($_, 5, 4) = 4   ==    4194304 00000000000000000000001000000000
+    vec($_, 6, 4) = 4   ==   67108864 00000000000000000000000000100000
+    vec($_, 7, 4) = 4   == 1073741824 00000000000000000000000000000010
+    vec($_, 0, 4) = 8   ==          8 00010000000000000000000000000000
+    vec($_, 1, 4) = 8   ==        128 00000001000000000000000000000000
+    vec($_, 2, 4) = 8   ==       2048 00000000000100000000000000000000
+    vec($_, 3, 4) = 8   ==      32768 00000000000000010000000000000000
+    vec($_, 4, 4) = 8   ==     524288 00000000000000000001000000000000
+    vec($_, 5, 4) = 8   ==    8388608 00000000000000000000000100000000
+    vec($_, 6, 4) = 8   ==  134217728 00000000000000000000000000010000
+    vec($_, 7, 4) = 8   == 2147483648 00000000000000000000000000000001
+    vec($_, 0, 8) = 1   ==          1 10000000000000000000000000000000
+    vec($_, 1, 8) = 1   ==        256 00000000100000000000000000000000
+    vec($_, 2, 8) = 1   ==      65536 00000000000000001000000000000000
+    vec($_, 3, 8) = 1   ==   16777216 00000000000000000000000010000000
+    vec($_, 0, 8) = 2   ==          2 01000000000000000000000000000000
+    vec($_, 1, 8) = 2   ==        512 00000000010000000000000000000000
+    vec($_, 2, 8) = 2   ==     131072 00000000000000000100000000000000
+    vec($_, 3, 8) = 2   ==   33554432 00000000000000000000000001000000
+    vec($_, 0, 8) = 4   ==          4 00100000000000000000000000000000
+    vec($_, 1, 8) = 4   ==       1024 00000000001000000000000000000000
+    vec($_, 2, 8) = 4   ==     262144 00000000000000000010000000000000
+    vec($_, 3, 8) = 4   ==   67108864 00000000000000000000000000100000
+    vec($_, 0, 8) = 8   ==          8 00010000000000000000000000000000
+    vec($_, 1, 8) = 8   ==       2048 00000000000100000000000000000000
+    vec($_, 2, 8) = 8   ==     524288 00000000000000000001000000000000
+    vec($_, 3, 8) = 8   ==  134217728 00000000000000000000000000010000
+    vec($_, 0, 8) = 16  ==         16 00001000000000000000000000000000
+    vec($_, 1, 8) = 16  ==       4096 00000000000010000000000000000000
+    vec($_, 2, 8) = 16  ==    1048576 00000000000000000000100000000000
+    vec($_, 3, 8) = 16  ==  268435456 00000000000000000000000000001000
+    vec($_, 0, 8) = 32  ==         32 00000100000000000000000000000000
+    vec($_, 1, 8) = 32  ==       8192 00000000000001000000000000000000
+    vec($_, 2, 8) = 32  ==    2097152 00000000000000000000010000000000
+    vec($_, 3, 8) = 32  ==  536870912 00000000000000000000000000000100
+    vec($_, 0, 8) = 64  ==         64 00000010000000000000000000000000
+    vec($_, 1, 8) = 64  ==      16384 00000000000000100000000000000000
+    vec($_, 2, 8) = 64  ==    4194304 00000000000000000000001000000000
+    vec($_, 3, 8) = 64  == 1073741824 00000000000000000000000000000010
+    vec($_, 0, 8) = 128 ==        128 00000001000000000000000000000000
+    vec($_, 1, 8) = 128 ==      32768 00000000000000010000000000000000
+    vec($_, 2, 8) = 128 ==    8388608 00000000000000000000000100000000
+    vec($_, 3, 8) = 128 == 2147483648 00000000000000000000000000000001
+
+=item wait
+X<wait>
+
+Behaves like wait(2) on your system: it waits for a child
+process to terminate and returns the pid of the deceased process, or
+C<-1> if there are no child processes.  The status is returned in C<$?>
+and C<${^CHILD_ERROR_NATIVE}>.
+Note that a return value of C<-1> could mean that child processes are
+being automatically reaped, as described in L<perlipc>.
+
+If you use wait in your handler for $SIG{CHLD} it may accidentally for the
+child created by qx() or system(). See L<perlipc> for details.
+
+Portability issues: L<perlport/wait>.
+
+=item waitpid PID,FLAGS
+X<waitpid>
+
+Waits for a particular child process to terminate and returns the pid of
+the deceased process, or C<-1> if there is no such child process.  On some
+systems, a value of 0 indicates that there are processes still running.
+The status is returned in C<$?> and C<${^CHILD_ERROR_NATIVE}>.  If you say
+
+    use POSIX ":sys_wait_h";
+    #...
+    do {
+        $kid = waitpid(-1, WNOHANG);
+    } while $kid > 0;
+
+then you can do a non-blocking wait for all pending zombie processes.
+Non-blocking wait is available on machines supporting either the
+waitpid(2) or wait4(2) syscalls.  However, waiting for a particular
+pid with FLAGS of C<0> is implemented everywhere.  (Perl emulates the
+system call by remembering the status values of processes that have
+exited but have not been harvested by the Perl script yet.)
+
+Note that on some systems, a return value of C<-1> could mean that child
+processes are being automatically reaped.  See L<perlipc> for details,
+and for other examples.
+
+Portability issues: L<perlport/waitpid>.
+
+=item wantarray
+X<wantarray> X<context>
+
+Returns true if the context of the currently executing subroutine or
+C<eval> is looking for a list value.  Returns false if the context is
+looking for a scalar.  Returns the undefined value if the context is
+looking for no value (void context).
+
+    return unless defined wantarray; # don't bother doing more
+    my @a = complex_calculation();
+    return wantarray ? @a : "@a";
+
+C<wantarray()>'s result is unspecified in the top level of a file,
+in a C<BEGIN>, C<UNITCHECK>, C<CHECK>, C<INIT> or C<END> block, or
+in a C<DESTROY> method.
+
+This function should have been named wantlist() instead.
+
+=item warn LIST
+X<warn> X<warning> X<STDERR>
+
+Prints the value of LIST to STDERR.  If the last element of LIST does
+not end in a newline, it appends the same file/line number text as C<die>
+does.
+
+If the output is empty and C<$@> already contains a value (typically from a
+previous eval) that value is used after appending C<"\t...caught">
+to C<$@>.  This is useful for staying almost, but not entirely similar to
+C<die>.
+
+If C<$@> is empty then the string C<"Warning: Something's wrong"> is used.
+
+No message is printed if there is a C<$SIG{__WARN__}> handler
+installed.  It is the handler's responsibility to deal with the message
+as it sees fit (like, for instance, converting it into a C<die>).  Most
+handlers must therefore arrange to actually display the
+warnings that they are not prepared to deal with, by calling C<warn>
+again in the handler.  Note that this is quite safe and will not
+produce an endless loop, since C<__WARN__> hooks are not called from
+inside one.
+
+You will find this behavior is slightly different from that of
+C<$SIG{__DIE__}> handlers (which don't suppress the error text, but can
+instead call C<die> again to change it).
+
+Using a C<__WARN__> handler provides a powerful way to silence all
+warnings (even the so-called mandatory ones).  An example:
+
+    # wipe out *all* compile-time warnings
+    BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
+    my $foo = 10;
+    my $foo = 20;          # no warning about duplicate my $foo,
+                           # but hey, you asked for it!
+    # no compile-time or run-time warnings before here
+    $DOWARN = 1;
+
+    # run-time warnings enabled after here
+    warn "\$foo is alive and $foo!";     # does show up
+
+See L<perlvar> for details on setting C<%SIG> entries and for more
+examples.  See the Carp module for other kinds of warnings using its
+carp() and cluck() functions.
+
+=item when EXPR BLOCK
+X<when>
+
+=item when BLOCK
+
+C<when> is analogous to the C<case> keyword in other languages. Used with a
+C<foreach> loop or the experimental C<given> block, C<when> can be used in
+Perl to implement C<switch>/C<case> like statements.  Available as a
+statement after Perl 5.10 and as a statement modifier after 5.14.  
+Here are three examples:
+
+    use v5.10;
+    foreach (@fruits) {
+        when (/apples?/) {
+            say "I like apples."
+        }
+        when (/oranges?/) {
+            say "I don't like oranges."
+        }
+        default {
+            say "I don't like anything"
+        }
+    }
+
+    # require 5.14 for when as statement modifier
+    use v5.14;
+    foreach (@fruits) {
+	say "I like apples." 	    when /apples?/; 
+	say "I don't like oranges." when /oranges?;
+        default { say "I don't like anything" }
+    }
+
+    use v5.10;
+    given ($fruit) {
+        when (/apples?/) {
+            say "I like apples."
+        }
+        when (/oranges?/) {
+            say "I don't like oranges."
+        }
+        default {
+            say "I don't like anything"
+        }
+    }
+
+See L<perlsyn/"Switch statements"> for detailed information.
+
+=item write FILEHANDLE
+X<write>
+
+=item write EXPR
+
+=item write
+
+Writes a formatted record (possibly multi-line) to the specified FILEHANDLE,
+using the format associated with that file.  By default the format for
+a file is the one having the same name as the filehandle, but the
+format for the current output channel (see the C<select> function) may be set
+explicitly by assigning the name of the format to the C<$~> variable.
+
+Top of form processing is handled automatically:  if there is insufficient
+room on the current page for the formatted record, the page is advanced by
+writing a form feed, a special top-of-page format is used to format the new
+page header before the record is written.  By default, the top-of-page
+format is the name of the filehandle with "_TOP" appended. This would be a
+problem with autovivified filehandles, but it may be dynamically set to the
+format of your choice by assigning the name to the C<$^> variable while
+that filehandle is selected.  The number of lines remaining on the current
+page is in variable C<$->, which can be set to C<0> to force a new page.
+
+If FILEHANDLE is unspecified, output goes to the current default output
+channel, which starts out as STDOUT but may be changed by the
+C<select> operator.  If the FILEHANDLE is an EXPR, then the expression
+is evaluated and the resulting string is used to look up the name of
+the FILEHANDLE at run time.  For more on formats, see L<perlform>.
+
+Note that write is I<not> the opposite of C<read>.  Unfortunately.
+
+=item y///
+
+The transliteration operator.  Same as C<tr///>.  See
+L<perlop/"Quote and Quote-like Operators">.
+
+=back
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/corpus/utf8.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/corpus/utf8.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/corpus/utf8.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+=encoding utf8
+
+=head1 NAME
+
+Büster is my cat
+
+=head1 DESCRIPTION
+
+Ingy döt Net is a Perl programmer
+
+The Roman number for 5 is Ⅴ
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/BaseTo.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,152 @@
+package Pod::Perldoc::BaseTo;
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+use Carp                  qw(croak carp);
+use Config                qw(%Config);
+use File::Spec::Functions qw(catfile);
+
+sub is_pageable        { '' }
+sub write_with_binmode {  1 }
+
+sub output_extension   { 'txt' }  # override in subclass!
+
+# sub new { my $self = shift; ...  }
+# sub parse_from_file( my($class, $in, $out) = ...; ... }
+
+#sub new { return bless {}, ref($_[0]) || $_[0] }
+
+# this is also in Perldoc.pm, but why look there when you're a
+# subclass of this?
+sub TRUE  () {1}
+sub FALSE () {return}
+
+BEGIN {
+ *is_vms     = $^O eq 'VMS'      ? \&TRUE : \&FALSE unless defined &is_vms;
+ *is_mswin32 = $^O eq 'MSWin32'  ? \&TRUE : \&FALSE unless defined &is_mswin32;
+ *is_dos     = $^O eq 'dos'      ? \&TRUE : \&FALSE unless defined &is_dos;
+ *is_os2     = $^O eq 'os2'      ? \&TRUE : \&FALSE unless defined &is_os2;
+ *is_cygwin  = $^O eq 'cygwin'   ? \&TRUE : \&FALSE unless defined &is_cygwin;
+ *is_linux   = $^O eq 'linux'    ? \&TRUE : \&FALSE unless defined &is_linux;
+ *is_hpux    = $^O =~ m/hpux/    ? \&TRUE : \&FALSE unless defined &is_hpux;
+ *is_openbsd = $^O =~ m/openbsd/ ? \&TRUE : \&FALSE unless defined &is_openbsd;
+}
+
+sub _perldoc_elem {
+  my($self, $name) = splice @_,0,2;
+  if(@_) {
+    $self->{$name} = $_[0];
+  } else {
+    $self->{$name};
+  }
+}
+
+sub debugging {
+	my( $self, @messages ) = @_;
+
+    ( defined(&Pod::Perldoc::DEBUG) and &Pod::Perldoc::DEBUG() )
+	}
+
+sub debug {
+	my( $self, @messages ) = @_;
+	return unless $self->debugging;
+	print STDERR map { "DEBUG $_" } @messages;
+	}
+
+sub warn {
+	my( $self, @messages ) = @_;
+	carp join "\n", @messages, '';
+	}
+
+sub die {
+	my( $self, @messages ) = @_;
+	croak join "\n", @messages, '';
+	}
+
+sub _get_path_components {
+	my( $self ) = @_;
+
+	my @paths = split /\Q$Config{path_sep}/, $ENV{PATH};
+
+	return @paths;
+	}
+
+sub _find_executable_in_path {
+	my( $self, $program ) = @_;
+
+	my @found = ();
+	foreach my $dir ( $self->_get_path_components ) {
+		my $binary = catfile( $dir, $program );
+		$self->debug( "Looking for $binary\n" );
+		next unless -e $binary;
+		unless( -x $binary ) {
+			$self->warn( "Found $binary but it's not executable. Skipping.\n" );
+			next;
+			}
+		$self->debug( "Found $binary\n" );
+		push @found, $binary;
+		}
+
+	return @found;
+	}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::BaseTo - Base for Pod::Perldoc formatters
+
+=head1 SYNOPSIS
+
+    package Pod::Perldoc::ToMyFormat;
+
+    use base qw( Pod::Perldoc::BaseTo );
+    ...
+
+=head1 DESCRIPTION
+
+This package is meant as a base of Pod::Perldoc formatters,
+like L<Pod::Perldoc::ToText>, L<Pod::Perldoc::ToMan>, etc.
+
+It provides default implementations for the methods
+
+    is_pageable
+    write_with_binmode
+    output_extension
+    _perldoc_elem
+
+The concrete formatter must implement
+
+    new
+    parse_from_file
+
+=head1 SEE ALSO
+
+L<perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002-2007 Sean M. Burke.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/GetOptsOO.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,161 @@
+package Pod::Perldoc::GetOptsOO;
+use strict;
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+BEGIN { # Make a DEBUG constant ASAP
+  *DEBUG = defined( &Pod::Perldoc::DEBUG )
+   ? \&Pod::Perldoc::DEBUG
+   : sub(){10};
+}
+
+
+sub getopts {
+  my($target, $args, $truth) = @_;
+
+  $args ||= \@ARGV;
+
+  $target->aside(
+    "Starting switch processing.  Scanning arguments [@$args]\n"
+  ) if $target->can('aside');
+
+  return unless @$args;
+
+  $truth = 1 unless @_ > 2;
+
+  DEBUG > 3 and print "   Truth is $truth\n";
+
+
+  my $error_count = 0;
+
+  while( @$args  and  ($_ = $args->[0]) =~ m/^-(.)(.*)/s ) {
+    my($first,$rest) = ($1,$2);
+    if ($_ eq '--') {	# early exit if "--"
+      shift @$args;
+      last;
+    }
+    if ($first eq '-' and $rest) {      # GNU style long param names
+      ($first, $rest) = split '=', $rest, 2;
+    }
+    my $method = "opt_${first}_with";
+    if( $target->can($method) ) {  # it's argumental
+      if($rest eq '') {   # like -f bar
+        shift @$args;
+        $target->warn( "Option $first needs a following argument!\n" ) unless @$args;
+        $rest = shift @$args;
+      } else {            # like -fbar  (== -f bar)
+        shift @$args;
+      }
+
+      DEBUG > 3 and print " $method => $rest\n";
+      $target->$method( $rest );
+
+    # Otherwise, it's not argumental...
+    } else {
+
+      if( $target->can( $method = "opt_$first" ) ) {
+        DEBUG > 3 and print " $method is true ($truth)\n";
+        $target->$method( $truth );
+
+      # Otherwise it's an unknown option...
+
+      } elsif( $target->can('handle_unknown_option') ) {
+        DEBUG > 3
+         and print " calling handle_unknown_option('$first')\n";
+
+        $error_count += (
+          $target->handle_unknown_option( $first ) || 0
+        );
+
+      } else {
+        ++$error_count;
+        $target->warn( "Unknown option: $first\n" );
+      }
+
+      if($rest eq '') {   # like -f
+        shift @$args
+      } else {            # like -fbar  (== -f -bar )
+        DEBUG > 2 and print "   Setting args->[0] to \"-$rest\"\n";
+        $args->[0] = "-$rest";
+      }
+    }
+  }
+
+
+  $target->aside(
+    "Ending switch processing.  Args are [@$args] with $error_count errors.\n"
+  ) if $target->can('aside');
+
+  $error_count == 0;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::GetOptsOO - Customized option parser for Pod::Perldoc
+
+=head1 SYNOPSIS
+
+    use Pod::Perldoc::GetOptsOO ();
+
+    Pod::Perldoc::GetOptsOO::getopts( $obj, \@args, $truth )
+       or die "wrong usage";
+
+
+=head1 DESCRIPTION
+
+Implements a customized option parser used for
+L<Pod::Perldoc>.
+
+Rather like Getopt::Std's getopts:
+
+=over
+
+=item Call Pod::Perldoc::GetOptsOO::getopts($object, \@ARGV, $truth)
+
+=item Given -n, if there's a opt_n_with, it'll call $object->opt_n_with( ARGUMENT )
+   (e.g., "-n foo" => $object->opt_n_with('foo').  Ditto "-nfoo")
+
+=item Otherwise (given -n) if there's an opt_n, we'll call it $object->opt_n($truth)
+   (Truth defaults to 1)
+
+=item Otherwise we try calling $object->handle_unknown_option('n')
+   (and we increment the error count by the return value of it)
+
+=item If there's no handle_unknown_option, then we just warn, and then increment
+   the error counter
+
+=back
+
+The return value of Pod::Perldoc::GetOptsOO::getopts is true if no errors,
+otherwise it's false.
+
+=head1 SEE ALSO
+
+L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002-2007 Sean M. Burke.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToANSI.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,96 @@
+package Pod::Perldoc::ToANSI;
+use strict;
+use warnings;
+use parent qw(Pod::Perldoc::BaseTo);
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' }
+
+use Pod::Text::Color ();
+
+sub alt       { shift->_perldoc_elem('alt'     , @_) }
+sub indent    { shift->_perldoc_elem('indent'  , @_) }
+sub loose     { shift->_perldoc_elem('loose'   , @_) }
+sub quotes    { shift->_perldoc_elem('quotes'  , @_) }
+sub sentence  { shift->_perldoc_elem('sentence', @_) }
+sub width     { shift->_perldoc_elem('width'   , @_) }
+
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+sub parse_from_file {
+  my $self = shift;
+
+  my @options =
+    map {; $_, $self->{$_} }
+      grep !m/^_/s,
+        keys %$self
+  ;
+
+  defined(&Pod::Perldoc::DEBUG)
+   and Pod::Perldoc::DEBUG()
+   and print "About to call new Pod::Text::Color ",
+    $Pod::Text::VERSION ? "(v$Pod::Text::VERSION) " : '',
+    "with options: ",
+    @options ? "[@options]" : "(nil)", "\n";
+  ;
+
+  Pod::Text::Color->new(@options)->parse_from_file(@_);
+}
+
+1;
+
+=head1 NAME
+
+Pod::Perldoc::ToANSI - render Pod with ANSI color escapes 
+
+=head1 SYNOPSIS
+
+  perldoc -o ansi Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Text as a formatter class.
+
+It supports the following options, which are explained in
+L<Pod::Text>: alt, indent, loose, quotes, sentence, width
+
+For example:
+
+  perldoc -o term -w indent:5 Some::Modulename
+
+=head1 CAVEAT
+
+This module may change to use a different text formatter class in the
+future, and this may change what options are supported.
+
+=head1 SEE ALSO
+
+L<Pod::Text>, L<Pod::Text::Color>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2011 Mark Allen.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToChecker.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,78 @@
+package Pod::Perldoc::ToChecker;
+use strict;
+use warnings;
+use vars qw(@ISA);
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+# Pick our superclass...
+#
+eval 'require Pod::Simple::Checker';
+if($@) {
+  require Pod::Checker;
+  @ISA = ('Pod::Checker');
+} else {
+  @ISA = ('Pod::Simple::Checker');
+}
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' }
+
+sub if_zero_length {
+  my( $self, $file, $tmp, $tmpfd ) = @_;
+  print "No Pod errors in $file\n";
+}
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToChecker - let Perldoc check Pod for errors
+
+=head1 SYNOPSIS
+
+  % perldoc -o checker SomeFile.pod
+  No Pod errors in SomeFile.pod
+  (or an error report)
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Simple::Checker as a "formatter" class (or if that is
+not available, then Pod::Checker), to check for errors in a given
+Pod file.
+
+This is actually a Pod::Simple::Checker (or Pod::Checker) subclass, and
+inherits all its options.
+
+=head1 SEE ALSO
+
+L<Pod::Simple::Checker>, L<Pod::Simple>, L<Pod::Checker>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToMan.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,582 @@
+require 5.006;
+package Pod::Perldoc::ToMan;
+use strict;
+use warnings;
+use parent qw(Pod::Perldoc::BaseTo);
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+use File::Spec::Functions qw(catfile);
+use Pod::Man 2.18;
+# This class is unlike ToText.pm et al, because we're NOT paging thru
+# the output in our particular format -- we make the output and
+# then we run nroff (or whatever) on it, and then page thru the
+# (plaintext) output of THAT!
+
+sub SUCCESS () { 1 }
+sub FAILED  () { 0 }
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' }
+
+sub __filter_nroff  { shift->_perldoc_elem('__filter_nroff'  , @_) }
+sub __nroffer       { shift->_perldoc_elem('__nroffer'       , @_) }
+sub __bindir        { shift->_perldoc_elem('__bindir'        , @_) }
+sub __pod2man       { shift->_perldoc_elem('__pod2man'       , @_) }
+sub __output_file   { shift->_perldoc_elem('__output_file'   , @_) }
+
+sub center          { shift->_perldoc_elem('center'         , @_) }
+sub date            { shift->_perldoc_elem('date'           , @_) }
+sub fixed           { shift->_perldoc_elem('fixed'          , @_) }
+sub fixedbold       { shift->_perldoc_elem('fixedbold'      , @_) }
+sub fixeditalic     { shift->_perldoc_elem('fixeditalic'    , @_) }
+sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) }
+sub name            { shift->_perldoc_elem('name'           , @_) }
+sub quotes          { shift->_perldoc_elem('quotes'         , @_) }
+sub release         { shift->_perldoc_elem('release'        , @_) }
+sub section         { shift->_perldoc_elem('section'        , @_) }
+
+sub new {
+	my( $either ) = shift;
+	my $self = bless {}, ref($either) || $either;
+	$self->init( @_ );
+	return $self;
+	}
+
+sub init {
+	my( $self, @args ) = @_;
+
+	unless( $self->__nroffer ) {
+		my $roffer = $self->_find_roffer( $self->_roffer_candidates );
+		$self->debug( "Using $roffer\n" );
+		$self->__nroffer( $roffer );
+		}
+    else {
+	    $self->debug( "__nroffer is " . $self->__nroffer() . "\n" );
+        }
+
+	$self->_check_nroffer;
+	}
+
+sub _roffer_candidates {
+	my( $self ) = @_;
+
+	if( $self->is_openbsd ) { qw( mandoc groff nroff ) }
+	else                    { qw( groff nroff mandoc ) }
+	}
+
+sub _find_roffer {
+	my( $self, @candidates ) = @_;
+
+	my @found = ();
+	foreach my $candidate ( @candidates ) {
+		push @found, $self->_find_executable_in_path( $candidate );
+		}
+
+	return wantarray ? @found : $found[0];
+	}
+
+sub _check_nroffer {
+	return 1;
+	# where is it in the PATH?
+
+	# is it executable?
+
+	# what is its real name?
+
+	# what is its version?
+
+	# does it support the flags we need?
+
+	# is it good enough for us?
+	}
+
+sub _get_stty { `stty -a` }
+
+sub _get_columns_from_stty {
+	my $output = $_[0]->_get_stty;
+
+	if(    $output =~ /\bcolumns\s+(\d+)/ )    { return $1 }
+	elsif( $output =~ /;\s*(\d+)\s+columns;/ ) { return $1 }
+	else                                       { return  0 }
+	}
+
+sub _get_columns_from_manwidth {
+	my( $self ) = @_;
+
+	return 0 unless defined $ENV{MANWIDTH};
+
+	unless( $ENV{MANWIDTH} =~ m/\A\d+\z/ ) {
+		$self->warn( "Ignoring non-numeric MANWIDTH ($ENV{MANWIDTH})\n" );
+		return 0;
+		}
+
+	if( $ENV{MANWIDTH} == 0 ) {
+		$self->warn( "Ignoring MANWIDTH of 0. Really? Why even run the program? :)\n" );
+		return 0;
+		}
+
+	if( $ENV{MANWIDTH} =~ m/\A(\d+)\z/ ) { return $1 }
+
+	return 0;
+	}
+
+sub _get_default_width {
+	73
+	}
+
+sub _get_columns {
+	$_[0]->_get_columns_from_manwidth ||
+	$_[0]->_get_columns_from_stty     ||
+	$_[0]->_get_default_width;
+	}
+
+sub _get_podman_switches {
+	my( $self ) = @_;
+
+	my @switches = grep !m/^_/s, keys %$self;
+
+    # There needs to be a cleaner way to handle setting
+    # the UTF-8 flag, but for now, comment out this
+    # line because it often does the wrong thing.
+    #
+    # See RT #77465
+    #
+    #push @switches, 'utf8' => 1;
+
+	$self->debug( "Pod::Man switches are [@switches]\n" );
+
+	return @switches;
+	}
+
+sub _parse_with_pod_man {
+	my( $self, $file ) = @_;
+
+	#->output_fh and ->output_string from Pod::Simple aren't
+	# working, apparently, so there's this ugly hack:
+	local *STDOUT;
+	open STDOUT, '>', $self->{_text_ref};
+	my $parser = Pod::Man->new( $self->_get_podman_switches );
+	$self->debug( "Parsing $file\n" );
+	$parser->parse_from_file( $file );
+	$self->debug( "Done parsing $file\n" );
+	close STDOUT;
+
+	$self->die( "No output from Pod::Man!\n" )
+		unless length $self->{_text_ref};
+
+	$self->_save_pod_man_output if $self->debugging;
+
+	return SUCCESS;
+	}
+
+sub _save_pod_man_output {
+	my( $self, $fh ) = @_;
+
+	$fh = do {
+		my $file = "podman.out.$$.txt";
+		$self->debug( "Writing $file with Pod::Man output\n" );
+		open my $fh2, '>', $file;
+		$fh2;
+		} unless $fh;
+
+	print { $fh } ${ $self->{_text_ref} };
+	}
+
+sub _have_groff_with_utf8 {
+	my( $self ) = @_;
+
+	return 0 unless $self->_is_groff;
+	my $roffer = $self->__nroffer;
+
+	my $minimum_groff_version = '1.20.1';
+
+	my $version_string = `$roffer -v`;
+	my( $version ) = $version_string =~ /\(?groff\)? version (\d+\.\d+(?:\.\d+)?)/;
+	$self->debug( "Found groff $version\n" );
+
+	# is a string comparison good enough?
+	if( $version lt $minimum_groff_version ) {
+		$self->warn(
+			"You have an old groff." .
+			" Update to version $minimum_groff_version for good Unicode support.\n" .
+			"If you don't upgrade, wide characters may come out oddly.\n"
+			 );
+		}
+
+	$version ge $minimum_groff_version;
+	}
+
+sub _have_mandoc_with_utf8 {
+	my( $self ) = @_;
+
+	return 0 unless $self->_is_mandoc;
+	my $roffer = $self->__nroffer;
+
+	my $minimum_mandoc_version = '1.11';
+
+	my $version_string = `$roffer -V`;
+	my( $version ) = $version_string =~ /mandoc ((\d+)\.(\d+))/;
+	$self->debug( "Found mandoc $version\n" );
+
+	# is a string comparison good enough?
+	if( $version lt $minimum_mandoc_version ) {
+		$self->warn(
+			"You have an older mandoc." .
+			" Update to version $minimum_mandoc_version for better Unicode support.\n" .
+			"If you don't upgrade, wide characters may come out oddly.\n" .
+			"Your results still might be odd. If you have groff, that's even better.\n"
+			 );
+		}
+
+	$version ge $minimum_mandoc_version;
+	}
+
+sub _collect_nroff_switches {
+	my( $self ) = shift;
+
+	my @render_switches = $self->_is_mandoc ? qw(-mandoc) : qw(-man);
+
+	push @render_switches, $self->_get_device_switches;
+
+	# Thanks to Brendan O'Dea for contributing the following block
+	if( $self->_is_roff and $self->is_linux and -t STDOUT and my ($cols) = $self->_get_columns ) {
+		my $c = $cols * 39 / 40;
+		$cols = $c > $cols - 2 ? $c : $cols -2;
+		push @render_switches, '-rLL=' . (int $c) . 'n' if $cols > 80;
+		}
+
+	# I hear persistent reports that adding a -c switch to $render
+	# solves many people's problems.  But I also hear that some mans
+	# don't have a -c switch, so that unconditionally adding it here
+	# would presumably be a Bad Thing   -- sburke at cpan.org
+    push @render_switches, '-c' if( $self->_is_roff and $self->is_cygwin );
+
+	return @render_switches;
+	}
+
+sub _get_device_switches {
+	my( $self ) = @_;
+
+	   if( $self->_is_nroff  )             { qw()              }
+	elsif( $self->_have_groff_with_utf8 )  { qw(-Kutf8 -Tutf8) }
+	elsif( $self->_is_ebcdic )             { qw(-Tcp1047)      }
+	elsif( $self->_have_mandoc_with_utf8 ) { qw(-Tutf8)        }
+	elsif( $self->_is_mandoc )             { qw()              }
+	else                                   { qw(-Tlatin1)      }
+	}
+
+sub _is_roff {
+	my( $self ) = @_;
+
+	$self->_is_nroff or $self->_is_groff;
+	}
+
+sub _is_nroff {
+	my( $self ) = @_;
+
+	$self->__nroffer =~ /\bnroff\b/;
+	}
+
+sub _is_groff {
+	my( $self ) = @_;
+
+	$self->__nroffer =~ /\bgroff\b/;
+	}
+
+sub _is_mandoc {
+	my ( $self ) = @_;
+
+	$self->__nroffer =~ /\bmandoc\b/;
+	}
+
+sub _is_ebcdic {
+	my( $self ) = @_;
+
+	return 0;
+	}
+	
+sub _filter_through_nroff {
+	my( $self ) = shift;
+	$self->debug( "Filtering through " . $self->__nroffer() . "\n" );
+
+    # Maybe someone set rendering switches as part of the opt_n value
+    # Deal with that here.
+
+    my ($render, $switches) = $self->__nroffer() =~ /\A([\/a-zA-Z0-9_\.-]+)\b(.+)?\z/;
+
+    $self->die("no nroffer!?") unless $render;
+    my @render_switches = $self->_collect_nroff_switches;
+
+    if ( $switches ) {
+        # Eliminate whitespace 
+        $switches =~ s/\s//g;
+
+        # Then seperate the switches with a zero-width positive 
+        # lookahead on the dash.
+        #
+        # See:
+        # http://www.effectiveperlprogramming.com/blog/1411
+        # for a good discussion of this technique
+
+        push @render_switches, split(/(?=-)/, $switches);
+        }
+
+	$self->debug( "render is $render\n" );
+	$self->debug( "render options are @render_switches\n" );
+
+	require Symbol;
+	require IPC::Open3;
+	require IO::Handle;
+
+	my $pid = IPC::Open3::open3(
+		my $writer,
+		my $reader,
+		my $err = Symbol::gensym(),
+		$render,
+		@render_switches
+		);
+
+	$reader->autoflush(1);
+
+	use IO::Select;
+	my $selector = IO::Select->new( $reader );
+
+	$self->debug( "Writing to pipe to $render\n" );
+
+	my $offset = 0;
+	my $chunk_size = 4096;
+	my $length = length( ${ $self->{_text_ref} } );
+	my $chunks = $length / $chunk_size;
+	my $done;
+	my $buffer;
+	while( $offset <= $length ) {
+		$self->debug( "Writing chunk $chunks\n" ); $chunks++;
+		syswrite $writer, ${ $self->{_text_ref} }, $chunk_size, $offset
+			or $self->die( $! );
+		$offset += $chunk_size;
+		$self->debug( "Checking read\n" );
+		READ: {
+			last READ unless $selector->can_read( 0.01 );
+			$self->debug( "Reading\n" );
+			my $bytes = sysread $reader, $buffer, 4096;
+			$self->debug( "Read $bytes bytes\n" );
+			$done .= $buffer;
+			$self->debug( sprintf "Output is %d bytes\n",
+				length $done
+				);
+			next READ;
+			}
+		}
+	close $writer;
+	$self->debug( "Done writing\n" );
+
+	# read any leftovers
+	$done .= do { local $/; <$reader> };
+	$self->debug( sprintf "Done reading. Output is %d bytes\n",
+		length $done
+		);
+
+	if( $? ) {
+		$self->warn( "Error from pipe to $render!\n" );
+		$self->debug( 'Error: ' . do { local $/; <$err> } );
+		}
+
+
+	close $reader;
+	if( my $err = $? ) {
+		$self->debug(
+			"Nonzero exit ($?) while running `$render @render_switches`.\n" .
+			"Falling back to Pod::Perldoc::ToPod\n"
+			);
+		return $self->_fallback_to_pod( @_ );
+		}
+
+	$self->debug( "Output:\n----\n$done\n----\n" );
+
+	${ $self->{_text_ref} } = $done;
+
+	return length ${ $self->{_text_ref} } ? SUCCESS : FAILED;
+	}
+
+sub parse_from_file {
+	my( $self, $file, $outfh) = @_;
+
+	# We have a pipeline of filters each affecting the reference
+	# in $self->{_text_ref}
+	$self->{_text_ref} = \my $output;
+
+	$self->_parse_with_pod_man( $file );
+	# so far, nroff is an external command so we ensure it worked
+	my $result = $self->_filter_through_nroff;
+	return $self->_fallback_to_pod( @_ ) unless $result == SUCCESS;
+
+	$self->_post_nroff_processing;
+
+	print { $outfh } $output or
+		$self->die( "Can't print to $$self{__output_file}: $!" );
+
+	return;
+	}
+
+sub _fallback_to_pod {
+	my( $self, @args ) = @_;
+	$self->warn( "Falling back to Pod because there was a problem!\n" );
+	require Pod::Perldoc::ToPod;
+	return  Pod::Perldoc::ToPod->new->parse_from_file(@_);
+	}
+
+# maybe there's a user setting we should check?
+sub _get_tab_width { 4 }
+
+sub _expand_tabs {
+	my( $self ) = @_;
+
+	my $tab_width = ' ' x $self->_get_tab_width;
+
+	${ $self->{_text_ref} } =~ s/\t/$tab_width/g;
+	}
+
+sub _post_nroff_processing {
+	my( $self ) = @_;
+
+	if( $self->is_hpux ) {
+	    $self->debug( "On HP-UX, I'm going to expand tabs for you\n" );
+		# this used to be a pipe to `col -x` for HP-UX
+		$self->_expand_tabs;
+		}
+
+	if( $self->{'__filter_nroff'} ) {
+		$self->debug( "filter_nroff is set, so filtering\n" );
+		$self->_remove_nroff_header;
+		$self->_remove_nroff_footer;
+		}
+	else {
+		$self->debug( "filter_nroff is not set, so not filtering\n" );
+		}
+
+	$self->_handle_unicode;
+
+	return 1;
+	}
+
+# I don't think this does anything since there aren't two consecutive
+# newlines in the Pod::Man output
+sub _remove_nroff_header {
+	my( $self ) = @_;
+	$self->debug( "_remove_nroff_header is still a stub!\n" );
+	return 1;
+
+#  my @data = split /\n{2,}/, shift;
+#  shift @data while @data and $data[0] !~ /\S/; # Go to header
+#  shift @data if @data and $data[0] =~ /Contributed\s+Perl/; # Skip header
+	}
+
+# I don't think this does anything since there aren't two consecutive
+# newlines in the Pod::Man output
+sub _remove_nroff_footer {
+	my( $self ) = @_;
+	$self->debug( "_remove_nroff_footer is still a stub!\n" );
+	return 1;
+	${ $self->{_text_ref} } =~ s/\n\n+.*\w.*\Z//m;
+
+#  my @data = split /\n{2,}/, shift;
+#  pop @data if @data and $data[-1] =~ /^\w/; # Skip footer, like
+        # 28/Jan/99 perl 5.005, patch 53 1
+	}
+
+sub _unicode_already_handled {
+	my( $self ) = @_;
+
+	$self->_have_groff_with_utf8 ||
+	1  # so, we don't have a case that needs _handle_unicode
+	;
+	}
+
+sub _handle_unicode {
+# this is the job of preconv
+# we don't need this with groff 1.20 and later.
+	my( $self ) = @_;
+
+	return 1 if $self->_unicode_already_handled;
+
+	require Encode;
+
+	# it's UTF-8 here, but we need character data
+	my $text = Encode::decode( 'UTF-8', ${ $self->{_text_ref} } ) ;
+
+# http://www.mail-archive.com/groff@gnu.org/msg01378.html
+# http://linux.die.net/man/7/groff_char
+# http://www.gnu.org/software/groff/manual/html_node/Using-Symbols.html
+# http://lists.gnu.org/archive/html/groff/2011-05/msg00007.html
+# http://www.simplicidade.org/notes/archives/2009/05/fixing_the_pod.html
+# http://lists.freebsd.org/pipermail/freebsd-questions/2011-July/232239.html
+	$text =~ s/(\P{ASCII})/
+		sprintf '\\[u%04X]', ord $1
+	     /eg;
+
+	# should we encode?
+	${ $self->{_text_ref} } = $text;
+	}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToMan - let Perldoc render Pod as man pages
+
+=head1 SYNOPSIS
+
+  perldoc -o man Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Man and C<groff> for reading Pod pages.
+
+The following options are supported:  center, date, fixed, fixedbold,
+fixeditalic, fixedbolditalic, quotes, release, section
+
+(Those options are explained in L<Pod::Man>.)
+
+For example:
+
+  perldoc -o man -w center:Pod Some::Modulename
+
+=head1 CAVEAT
+
+This module may change to use a different pod-to-nroff formatter class
+in the future, and this may change what options are supported.
+
+=head1 SEE ALSO
+
+L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToNroff>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2011 brian d foy. All rights reserved.
+
+Copyright (c) 2002,3,4 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToNroff.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,105 @@
+package Pod::Perldoc::ToNroff;
+use strict;
+use warnings;
+use parent qw(Pod::Perldoc::BaseTo);
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+# This is unlike ToMan.pm in that it emits the raw nroff source!
+
+sub is_pageable        { 1 }  # well, if you ask for it...
+sub write_with_binmode { 0 }
+sub output_extension   { 'man' }
+
+use Pod::Man ();
+
+sub center          { shift->_perldoc_elem('center'         , @_) }
+sub date            { shift->_perldoc_elem('date'           , @_) }
+sub fixed           { shift->_perldoc_elem('fixed'          , @_) }
+sub fixedbold       { shift->_perldoc_elem('fixedbold'      , @_) }
+sub fixeditalic     { shift->_perldoc_elem('fixeditalic'    , @_) }
+sub fixedbolditalic { shift->_perldoc_elem('fixedbolditalic', @_) }
+sub quotes          { shift->_perldoc_elem('quotes'         , @_) }
+sub release         { shift->_perldoc_elem('release'        , @_) }
+sub section         { shift->_perldoc_elem('section'        , @_) }
+
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+sub parse_from_file {
+  my $self = shift;
+  my $file = $_[0];
+
+  my @options =
+    map {; $_, $self->{$_} }
+      grep !m/^_/s,
+        keys %$self
+  ;
+
+  defined(&Pod::Perldoc::DEBUG)
+   and Pod::Perldoc::DEBUG()
+   and print "About to call new Pod::Man ",
+    $Pod::Man::VERSION ? "(v$Pod::Man::VERSION) " : '',
+    "with options: ",
+    @options ? "[@options]" : "(nil)", "\n";
+  ;
+
+  Pod::Man->new(@options)->parse_from_file(@_);
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToNroff - let Perldoc convert Pod to nroff
+
+=head1 SYNOPSIS
+
+  perldoc -o nroff -d something.3 Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Man as a formatter class.
+
+The following options are supported:  center, date, fixed, fixedbold,
+fixeditalic, fixedbolditalic, quotes, release, section
+
+Those options are explained in L<Pod::Man>.
+
+For example:
+
+  perldoc -o nroff -w center:Pod -d something.3 Some::Modulename
+
+=head1 CAVEAT
+
+This module may change to use a different pod-to-nroff formatter class
+in the future, and this may change what options are supported.
+
+=head1 SEE ALSO
+
+L<Pod::Man>, L<Pod::Perldoc>, L<Pod::Perldoc::ToMan>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToPod.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,88 @@
+package Pod::Perldoc::ToPod;
+use strict;
+use warnings;
+use parent qw(Pod::Perldoc::BaseTo);
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'pod' }
+
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+sub parse_from_file {
+  my( $self, $in, $outfh ) = @_;
+
+  open(IN, "<", $in) or $self->die( "Can't read-open $in: $!\nAborting" );
+
+  my $cut_mode = 1;
+
+  # A hack for finding things between =foo and =cut, inclusive
+  local $_;
+  while (<IN>) {
+    if(  m/^=(\w+)/s ) {
+      if($cut_mode = ($1 eq 'cut')) {
+        print $outfh "\n=cut\n\n";
+         # Pass thru the =cut line with some harmless
+         #  (and occasionally helpful) padding
+      }
+    }
+    next if $cut_mode;
+    print $outfh $_ or $self->die( "Can't print to $outfh: $!" );
+  }
+
+  close IN or $self->die( "Can't close $in: $!" );
+  return;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToPod - let Perldoc render Pod as ... Pod!
+
+=head1 SYNOPSIS
+
+  perldoc -opod Some::Modulename
+
+(That's currently the same as the following:)
+
+  perldoc -u Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to display Pod source as
+itself!  Pretty Zen, huh?
+
+Currently this class works by just filtering out the non-Pod stuff from
+a given input file.
+
+=head1 SEE ALSO
+
+L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallencpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToRtf.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,83 @@
+package Pod::Perldoc::ToRtf;
+use strict;
+use warnings;
+use parent qw( Pod::Simple::RTF );
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+sub is_pageable        { 0 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'rtf' }
+
+sub page_for_perldoc {
+  my($self, $tempfile, $perldoc) = @_;
+  return unless $perldoc->IS_MSWin32;
+
+  my $rtf_pager = $ENV{'RTFREADER'} || 'write.exe';
+
+  $perldoc->aside( "About to launch <\"$rtf_pager\" \"$tempfile\">\n" );
+
+  return 1 if system( qq{"$rtf_pager"}, qq{"$tempfile"} ) == 0;
+  return 0;
+}
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToRtf - let Perldoc render Pod as RTF
+
+=head1 SYNOPSIS
+
+  perldoc -o rtf Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Simple::RTF as a formatter class.
+
+This is actually a Pod::Simple::RTF subclass, and inherits
+all its options.
+
+You have to have Pod::Simple::RTF installed (from the Pod::Simple dist),
+or this module won't work.
+
+If Perldoc is running under MSWin and uses this class as a formatter,
+the output will be opened with F<write.exe> or whatever program is
+specified in the environment variable C<RTFREADER>. For example, to
+specify that RTF files should be opened the same as they are when you
+double-click them, you would do C<set RTFREADER=start.exe> in your
+F<autoexec.bat>.
+
+Handy tip: put C<set PERLDOC=-ortf> in your F<autoexec.bat>
+and that will set this class as the default formatter to run when
+you do C<perldoc whatever>.
+
+=head1 SEE ALSO
+
+L<Pod::Simple::RTF>, L<Pod::Simple>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTerm.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,90 @@
+package Pod::Perldoc::ToTerm;
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+use parent qw(Pod::Perldoc::BaseTo);
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' }
+
+use Pod::Text::Termcap ();
+
+sub alt       { shift->_perldoc_elem('alt'     , @_) }
+sub indent    { shift->_perldoc_elem('indent'  , @_) }
+sub loose     { shift->_perldoc_elem('loose'   , @_) }
+sub quotes    { shift->_perldoc_elem('quotes'  , @_) }
+sub sentence  { shift->_perldoc_elem('sentence', @_) }
+sub width     { shift->_perldoc_elem('width'   , @_) }
+
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+sub parse_from_file {
+  my $self = shift;
+
+  my @options =
+    map {; $_, $self->{$_} }
+      grep !m/^_/s,
+        keys %$self
+  ;
+
+  defined(&Pod::Perldoc::DEBUG)
+   and Pod::Perldoc::DEBUG()
+   and print "About to call new Pod::Text::Termcap ",
+    $Pod::Text::VERSION ? "(v$Pod::Text::VERSION) " : '',
+    "with options: ",
+    @options ? "[@options]" : "(nil)", "\n";
+  ;
+
+  Pod::Text::Termcap->new(@options)->parse_from_file(@_);
+}
+
+1;
+
+=head1 NAME
+
+Pod::Perldoc::ToTerm - render Pod with terminal escapes 
+
+=head1 SYNOPSIS
+
+  perldoc -o term Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Text as a formatter class.
+
+It supports the following options, which are explained in
+L<Pod::Text>: alt, indent, loose, quotes, sentence, width
+
+For example:
+
+  perldoc -o term -w indent:5 Some::Modulename
+
+=head1 CAVEAT
+
+This module may change to use a different text formatter class in the
+future, and this may change what options are supported.
+
+=head1 SEE ALSO
+
+L<Pod::Text>, L<Pod::Text::Termcap>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2011 Mark Allen.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See http://dev.perl.org/licenses/ for more information.
+
+=head1 AUTHOR
+
+Mark Allen C<< <mallen at cpan.org> >>
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToText.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,98 @@
+package Pod::Perldoc::ToText;
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+use parent qw(Pod::Perldoc::BaseTo);
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' }
+
+use Pod::Text ();
+
+sub alt       { shift->_perldoc_elem('alt'     , @_) }
+sub indent    { shift->_perldoc_elem('indent'  , @_) }
+sub loose     { shift->_perldoc_elem('loose'   , @_) }
+sub quotes    { shift->_perldoc_elem('quotes'  , @_) }
+sub sentence  { shift->_perldoc_elem('sentence', @_) }
+sub width     { shift->_perldoc_elem('width'   , @_) }
+
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+sub parse_from_file {
+  my $self = shift;
+
+  my @options =
+    map {; $_, $self->{$_} }
+      grep !m/^_/s,
+        keys %$self
+  ;
+
+  defined(&Pod::Perldoc::DEBUG)
+   and Pod::Perldoc::DEBUG()
+   and print "About to call new Pod::Text ",
+    $Pod::Text::VERSION ? "(v$Pod::Text::VERSION) " : '',
+    "with options: ",
+    @options ? "[@options]" : "(nil)", "\n";
+  ;
+
+  Pod::Text->new(@options)->parse_from_file(@_);
+}
+
+1;
+
+=head1 NAME
+
+Pod::Perldoc::ToText - let Perldoc render Pod as plaintext
+
+=head1 SYNOPSIS
+
+  perldoc -o text Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Text as a formatter class.
+
+It supports the following options, which are explained in
+L<Pod::Text>: alt, indent, loose, quotes, sentence, width
+
+For example:
+
+  perldoc -o text -w indent:5 Some::Modulename
+
+=head1 CAVEAT
+
+This module may change to use a different text formatter class in the
+future, and this may change what options are supported.
+
+=head1 SEE ALSO
+
+L<Pod::Text>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToTk.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,154 @@
+package Pod::Perldoc::ToTk;
+use strict;
+use warnings;
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+use parent qw(Pod::Perldoc::BaseTo);
+
+sub is_pageable        { 1 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'txt' } # doesn't matter
+sub if_zero_length { }  # because it will be 0-length!
+sub new { return bless {}, ref($_[0]) || $_[0] }
+
+# TODO: document these and their meanings...
+sub tree      { shift->_perldoc_elem('tree'    , @_) }
+sub tk_opt    { shift->_perldoc_elem('tk_opt'  , @_) }
+sub forky     { shift->_perldoc_elem('forky'   , @_) }
+
+use Pod::Perldoc ();
+use File::Spec::Functions qw(catfile);
+
+BEGIN{ # Tk is not core, but this is
+  eval { require Tk } ||
+  __PACKAGE__->die( <<"HERE" );
+You must have the Tk module to use Pod::Perldoc::ToTk.
+If you have it installed, ensure it's in your Perl library
+path.
+HERE
+
+  __PACKAGE__->die(
+    __PACKAGE__,
+    " doesn't work nice with Tk.pm version $Tk::VERSION"
+    ) if $Tk::VERSION eq '800.003';
+  }
+
+
+BEGIN { eval { require Tk::FcyEntry; }; };
+BEGIN{ # Tk::Pod is not core, but this is
+  eval { require Tk::Pod } ||
+  __PACKAGE__->die( <<"HERE" );
+You must have the Tk::Pod module to use Pod::Perldoc::ToTk.
+If you have it installed, ensure it's in your Perl library
+path.
+HERE
+  }
+
+# The following was adapted from "tkpod" in the Tk-Pod dist.
+
+sub parse_from_file {
+
+    my($self, $Input_File) = @_;
+    if($self->{'forky'}) {
+      return if fork;  # i.e., parent process returns
+    }
+
+    $Input_File =~ s{\\}{/}g
+     if $self->is_mswin32 or $self->is_dos
+     # and maybe OS/2
+    ;
+
+    my($tk_opt, $tree);
+    $tree   = $self->{'tree'  };
+    $tk_opt = $self->{'tk_opt'};
+
+    #require Tk::ErrorDialog;
+
+    # Add 'Tk' subdirectories to search path so, e.g.,
+    # 'Scrolled' will find doc in 'Tk/Scrolled'
+
+    if( $tk_opt ) {
+      push @INC, grep -d $_, map catfile($_,'Tk'), @INC;
+    }
+
+    my $mw = MainWindow->new();
+    #eval 'use blib "/home/e/eserte/src/perl/Tk-App";require Tk::App::Debug';
+    $mw->withdraw;
+
+    # CDE use Font Settings if available
+    my $ufont = $mw->optionGet('userFont','UserFont');     # fixed width
+    my $sfont = $mw->optionGet('systemFont','SystemFont'); # proportional
+    if (defined($ufont) and defined($sfont)) {
+        foreach ($ufont, $sfont) { s/:$//; };
+        $mw->optionAdd('*Font',       $sfont);
+        $mw->optionAdd('*Entry.Font', $ufont);
+        $mw->optionAdd('*Text.Font',  $ufont);
+    }
+
+    $mw->optionAdd('*Menu.tearOff', $Tk::platform ne 'MSWin32' ? 1 : 0);
+
+    $mw->Pod(
+      '-file' => $Input_File,
+      (($Tk::Pod::VERSION >= 4) ? ('-tree' => $tree) : ())
+    )->focusNext;
+
+    # xxx dirty but it works. A simple $mw->destroy if $mw->children
+    # does not work because Tk::ErrorDialogs could be created.
+    # (they are withdrawn after Ok instead of destory'ed I guess)
+
+    if ($mw->children) {
+        $mw->repeat(1000, sub {
+                    # ErrorDialog is withdrawn not deleted :-(
+                    foreach ($mw->children) {
+                            return if "$_" =~ /^Tk::Pod/  # ->isa('Tk::Pod')
+                    }
+                    $mw->destroy;
+                });
+    } else {
+        $mw->destroy;
+    }
+    #$mw->WidgetDump;
+    MainLoop();
+
+    exit if $self->{'forky'}; # we were the child!  so exit now!
+    return;
+}
+
+1;
+__END__
+
+
+=head1 NAME
+
+Pod::Perldoc::ToTk - let Perldoc use Tk::Pod to render Pod
+
+=head1 SYNOPSIS
+
+  perldoc -o tk Some::Modulename &
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Tk::Pod as a formatter class.
+
+You have to have installed Tk::Pod first, or this class won't load.
+
+=head1 SEE ALSO
+
+L<Tk::Pod>, L<Pod::Perldoc>
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>;
+Sean M. Burke C<< <sburke at cpan.org> >>;
+significant portions copied from
+F<tkpod> in the Tk::Pod dist, by Nick Ing-Simmons, Slaven Rezic, et al.
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc/ToXml.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+package Pod::Perldoc::ToXml;
+use strict;
+use warnings;
+use vars qw($VERSION);
+
+use parent qw( Pod::Simple::XMLOutStream );
+
+use vars qw($VERSION);
+$VERSION = '3.19';
+
+sub is_pageable        { 0 }
+sub write_with_binmode { 0 }
+sub output_extension   { 'xml' }
+
+1;
+__END__
+
+=head1 NAME
+
+Pod::Perldoc::ToXml - let Perldoc render Pod as XML
+
+=head1 SYNOPSIS
+
+  perldoc -o xml -d out.xml Some::Modulename
+
+=head1 DESCRIPTION
+
+This is a "plug-in" class that allows Perldoc to use
+Pod::Simple::XMLOutStream as a formatter class.
+
+This is actually a Pod::Simple::XMLOutStream subclass, and inherits
+all its options.
+
+You have to have installed Pod::Simple::XMLOutStream (from the Pod::Simple
+dist), or this class won't work.
+
+
+=head1 SEE ALSO
+
+L<Pod::Simple::XMLOutStream>, L<Pod::Simple>, L<Pod::Perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002 Sean M. Burke.  All rights reserved.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/Pod/Perldoc.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1960 @@
+use 5.006;  # we use some open(X, "<", $y) syntax
+
+package Pod::Perldoc;
+use strict;
+use warnings;
+use Config '%Config';
+
+use Fcntl;    # for sysopen
+use File::Basename qw(basename);
+use File::Spec::Functions qw(catfile catdir splitdir);
+
+use vars qw($VERSION @Pagers $Bindir $Pod2man
+  $Temp_Files_Created $Temp_File_Lifetime
+);
+$VERSION = '3.19';
+
+#..........................................................................
+
+BEGIN {  # Make a DEBUG constant very first thing...
+  unless(defined &DEBUG) {
+    if(($ENV{'PERLDOCDEBUG'} || '') =~ m/^(\d+)/) { # untaint
+      eval("sub DEBUG () {$1}");
+      die "WHAT? Couldn't eval-up a DEBUG constant!? $@" if $@;
+    } else {
+      *DEBUG = sub () {0};
+    }
+  }
+}
+
+use Pod::Perldoc::GetOptsOO; # uses the DEBUG.
+use Carp qw(croak carp);
+
+# these are also in BaseTo, which I don't want to inherit
+sub debugging {
+	my $self = shift;
+
+    ( defined(&Pod::Perldoc::DEBUG) and &Pod::Perldoc::DEBUG() )
+	}
+
+sub debug {
+	my( $self, @messages ) = @_;
+	return unless $self->debugging;
+	print STDERR map { "DEBUG : $_" } @messages;
+	}
+
+sub warn {
+  my( $self, @messages ) = @_;
+
+  carp( join "\n", @messages, '' );
+  }
+
+sub die {
+  my( $self, @messages ) = @_;
+
+  croak( join "\n", @messages, '' );
+  }
+
+#..........................................................................
+
+sub TRUE  () {1}
+sub FALSE () {return}
+sub BE_LENIENT () {1}
+
+BEGIN {
+ *is_vms     = $^O eq 'VMS'     ? \&TRUE : \&FALSE unless defined &is_vms;
+ *is_mswin32 = $^O eq 'MSWin32' ? \&TRUE : \&FALSE unless defined &is_mswin32;
+ *is_dos     = $^O eq 'dos'     ? \&TRUE : \&FALSE unless defined &is_dos;
+ *is_os2     = $^O eq 'os2'     ? \&TRUE : \&FALSE unless defined &is_os2;
+ *is_cygwin  = $^O eq 'cygwin'  ? \&TRUE : \&FALSE unless defined &is_cygwin;
+ *is_linux   = $^O eq 'linux'   ? \&TRUE : \&FALSE unless defined &is_linux;
+ *is_hpux    = $^O =~ m/hpux/   ? \&TRUE : \&FALSE unless defined &is_hpux;
+}
+
+$Temp_File_Lifetime ||= 60 * 60 * 24 * 5;
+  # If it's older than five days, it's quite unlikely
+  #  that anyone's still looking at it!!
+  # (Currently used only by the MSWin cleanup routine)
+
+
+#..........................................................................
+{ my $pager = $Config{'pager'};
+  push @Pagers, $pager if -x (split /\s+/, $pager)[0] or __PACKAGE__->is_vms;
+}
+$Bindir  = $Config{'scriptdirexp'};
+$Pod2man = "pod2man" . ( $Config{'versiononly'} ? $Config{'version'} : '' );
+
+# End of class-init stuff
+#
+###########################################################################
+#
+# Option accessors...
+
+foreach my $subname (map "opt_$_", split '', q{mhlDriFfXqnTdULv}) {
+  no strict 'refs';
+  *$subname = do{ use strict 'refs';  sub () { shift->_elem($subname, @_) } };
+}
+
+# And these are so that GetOptsOO knows they take options:
+sub opt_f_with { shift->_elem('opt_f', @_) }
+sub opt_q_with { shift->_elem('opt_q', @_) }
+sub opt_d_with { shift->_elem('opt_d', @_) }
+sub opt_L_with { shift->_elem('opt_L', @_) }
+sub opt_v_with { shift->_elem('opt_v', @_) }
+
+sub opt_w_with { # Specify an option for the formatter subclass
+  my($self, $value) = @_;
+  if($value =~ m/^([-_a-zA-Z][-_a-zA-Z0-9]*)(?:[=\:](.*?))?$/s) {
+    my $option = $1;
+    my $option_value = defined($2) ? $2 : "TRUE";
+    $option =~ tr/\-/_/s;  # tolerate "foo-bar" for "foo_bar"
+    $self->add_formatter_option( $option, $option_value );
+  } else {
+    $self->warn( qq("$value" isn't a good formatter option name.  I'm ignoring it!\n ) );
+  }
+  return;
+}
+
+sub opt_M_with { # specify formatter class name(s)
+  my($self, $classes) = @_;
+  return unless defined $classes and length $classes;
+  DEBUG > 4 and print "Considering new formatter classes -M$classes\n";
+  my @classes_to_add;
+  foreach my $classname (split m/[,;]+/s, $classes) {
+    next unless $classname =~ m/\S/;
+    if( $classname =~ m/^(\w+(::\w+)+)$/s ) {
+      # A mildly restrictive concept of what modulenames are valid.
+      push @classes_to_add, $1; # untaint
+    } else {
+      $self->warn(  qq("$classname" isn't a valid classname.  Ignoring.\n) );
+    }
+  }
+
+  unshift @{ $self->{'formatter_classes'} }, @classes_to_add;
+
+  DEBUG > 3 and print(
+    "Adding @classes_to_add to the list of formatter classes, "
+    . "making them @{ $self->{'formatter_classes'} }.\n"
+  );
+
+  return;
+}
+
+sub opt_V { # report version and exit
+  print join '',
+    "Perldoc v$VERSION, under perl v$] for $^O",
+
+    (defined(&Win32::BuildNumber) and defined &Win32::BuildNumber())
+     ? (" (win32 build ", &Win32::BuildNumber(), ")") : (),
+
+    (chr(65) eq 'A') ? () : " (non-ASCII)",
+
+    "\n",
+  ;
+  exit;
+}
+
+sub opt_t { # choose plaintext as output format
+  my $self = shift;
+  $self->opt_o_with('text')  if @_ and $_[0];
+  return $self->_elem('opt_t', @_);
+}
+
+sub opt_u { # choose raw pod as output format
+  my $self = shift;
+  $self->opt_o_with('pod')  if @_ and $_[0];
+  return $self->_elem('opt_u', @_);
+}
+
+sub opt_n_with {
+  # choose man as the output format, and specify the proggy to run
+  my $self = shift;
+  $self->opt_o_with('man')  if @_ and $_[0];
+  $self->_elem('opt_n', @_);
+}
+
+sub opt_o_with { # "o" for output format
+  my($self, $rest) = @_;
+  return unless defined $rest and length $rest;
+  if($rest =~ m/^(\w+)$/s) {
+    $rest = $1; #untaint
+  } else {
+    $self->warn( qq("$rest" isn't a valid output format.  Skipping.\n") );
+    return;
+  }
+
+  $self->aside("Noting \"$rest\" as desired output format...\n");
+
+  # Figure out what class(es) that could actually mean...
+
+  my @classes;
+  foreach my $prefix ("Pod::Perldoc::To", "Pod::Simple::", "Pod::") {
+    # Messy but smart:
+    foreach my $stem (
+      $rest,  # Yes, try it first with the given capitalization
+      "\L$rest", "\L\u$rest", "\U$rest" # And then try variations
+
+    ) {
+      $self->aside("Considering $prefix$stem\n");
+      push @classes, $prefix . $stem;
+    }
+
+    # Tidier, but misses too much:
+    #push @classes, $prefix . ucfirst(lc($rest));
+  }
+  $self->opt_M_with( join ";", @classes );
+  return;
+}
+
+###########################################################################
+# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+
+sub run {  # to be called by the "perldoc" executable
+  my $class = shift;
+  if(DEBUG > 3) {
+    print "Parameters to $class\->run:\n";
+    my @x = @_;
+    while(@x) {
+      $x[1] = '<undef>'  unless defined $x[1];
+      $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY';
+      print "  [$x[0]] => [$x[1]]\n";
+      splice @x,0,2;
+    }
+    print "\n";
+  }
+  return $class -> new(@_) -> process() || 0;
+}
+
+# % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
+###########################################################################
+
+sub new {  # yeah, nothing fancy
+  my $class = shift;
+  my $new = bless {@_}, (ref($class) || $class);
+  DEBUG > 1 and print "New $class object $new\n";
+  $new->init();
+  $new;
+}
+
+#..........................................................................
+
+sub aside {  # If we're in -D or DEBUG mode, say this.
+  my $self = shift;
+  if( DEBUG or $self->opt_D ) {
+    my $out = join( '',
+      DEBUG ? do {
+        my $callsub = (caller(1))[3];
+        my $package = quotemeta(__PACKAGE__ . '::');
+        $callsub =~ s/^$package/'/os;
+         # the o is justified, as $package really won't change.
+        $callsub . ": ";
+      } : '',
+      @_,
+    );
+    if(DEBUG) { print $out } else { print STDERR $out }
+  }
+  return;
+}
+
+#..........................................................................
+
+sub usage {
+  my $self = shift;
+  $self->warn( "@_\n" ) if @_;
+
+  # Erase evidence of previous errors (if any), so exit status is simple.
+  $! = 0;
+
+  CORE::die( <<EOF );
+perldoc [options] PageName|ModuleName|ProgramName|URL...
+perldoc [options] -f BuiltinFunction
+perldoc [options] -q FAQRegex
+perldoc [options] -v PerlVariable
+
+Options:
+    -h   Display this help message
+    -V   Report version
+    -r   Recursive search (slow)
+    -i   Ignore case
+    -t   Display pod using pod2text instead of Pod::Man and groff
+             (-t is the default on win32 unless -n is specified)
+    -u   Display unformatted pod text
+    -m   Display module's file in its entirety
+    -n   Specify replacement for groff
+    -l   Display the module's file name
+    -F   Arguments are file names, not modules
+    -D   Verbosely describe what's going on
+    -T   Send output to STDOUT without any pager
+    -d output_filename_to_send_to
+    -o output_format_name
+    -M FormatterModuleNameToUse
+    -w formatter_option:option_value
+    -L translation_code   Choose doc translation (if any)
+    -X   Use index if present (looks for pod.idx at $Config{archlib})
+    -q   Search the text of questions (not answers) in perlfaq[1-9]
+    -f   Search Perl built-in functions
+    -v   Search predefined Perl variables
+
+PageName|ModuleName|ProgramName|URL...
+         is the name of a piece of documentation that you want to look at. You
+         may either give a descriptive name of the page (as in the case of
+         `perlfunc') the name of a module, either like `Term::Info' or like
+         `Term/Info', or the name of a program, like `perldoc', or a URL
+         starting with http(s).
+
+BuiltinFunction
+         is the name of a perl function.  Will extract documentation from
+         `perlfunc' or `perlop'.
+
+FAQRegex
+         is a regex. Will search perlfaq[1-9] for and extract any
+         questions that match.
+
+Any switches in the PERLDOC environment variable will be used before the
+command line arguments.  The optional pod index file contains a list of
+filenames, one per line.
+                                                       [Perldoc v$VERSION]
+EOF
+
+}
+
+#..........................................................................
+
+sub program_name {
+  my( $self ) = @_;
+
+  if( my $link = readlink( $0 ) ) {
+    $self->debug( "The value in $0 is a symbolic link to $link\n" );
+    }
+
+  my $basename = basename( $0 );
+
+  $self->debug( "\$0 is [$0]\nbasename is [$basename]\n" );
+  # possible name forms
+  #   perldoc
+  #   perldoc-v5.14
+  #   perldoc-5.14
+  #   perldoc-5.14.2
+  #   perlvar         # an alias mentioned in Camel 3
+  {
+  my( $untainted ) = $basename =~ m/(
+    \A
+    perl
+      (?: doc | func | faq | help | op | toc | var # Camel 3
+      ) 
+    (?: -? v? \d+ \. \d+ (?:\. \d+)? )? # possible version
+    (?: \. (?: bat | exe | com ) )?    # possible extension
+    \z
+    )
+    /x;
+
+  $self->debug($untainted);
+  return $untainted if $untainted;
+  }
+
+  $self->warn(<<"HERE");
+You called the perldoc command with a name that I didn't recognize.
+This might mean that someone is tricking you into running a
+program you don't intend to use, but it also might mean that you
+created your own link to perldoc. I think your program name is
+[$basename].
+
+I'll allow this if the filename only has [a-zA-Z0-9._-].
+HERE
+
+  {
+  my( $untainted ) = $basename =~ m/(
+    \A [a-zA-Z0-9._-]+ \z
+    )/x;
+
+  $self->debug($untainted);
+  return $untainted if $untainted;
+  }
+
+  $self->die(<<"HERE");
+I think that your name for perldoc is potentially unsafe, so I'm
+going to disallow it. I'd rather you be safe than sorry. If you
+intended to use the name I'm disallowing, please tell the maintainers
+about it. Write to:
+
+    Pod-Perldoc\@rt.cpan.org
+
+HERE
+}
+
+#..........................................................................
+
+sub usage_brief {
+  my $self = shift;
+  my $program_name = $self->program_name;
+
+  CORE::die( <<"EOUSAGE" );
+Usage: $program_name [-hVriDtumFXlT] [-n nroffer_program]
+    [-d output_filename] [-o output_format] [-M FormatterModule]
+    [-w formatter_option:option_value] [-L translation_code]
+    PageName|ModuleName|ProgramName
+
+Examples:
+
+    $program_name -f PerlFunc
+    $program_name -q FAQKeywords
+    $program_name -v PerlVar
+
+The -h option prints more help.  Also try "$program_name perldoc" to get
+acquainted with the system.                        [Perldoc v$VERSION]
+EOUSAGE
+
+}
+
+#..........................................................................
+
+sub pagers { @{ shift->{'pagers'} } }
+
+#..........................................................................
+
+sub _elem {  # handy scalar meta-accessor: shift->_elem("foo", @_)
+  if(@_ > 2) { return  $_[0]{ $_[1] } = $_[2]  }
+  else       { return  $_[0]{ $_[1] }          }
+}
+#..........................................................................
+###########################################################################
+#
+# Init formatter switches, and start it off with __bindir and all that
+# other stuff that ToMan.pm needs.
+#
+
+sub init {
+  my $self = shift;
+
+  # Make sure creat()s are neither too much nor too little
+  eval { umask(0077) };   # doubtless someone has no mask
+
+  $self->{'args'}              ||= \@ARGV;
+  $self->{'found'}             ||= [];
+  $self->{'temp_file_list'}    ||= [];
+
+
+  $self->{'target'} = undef;
+
+  $self->init_formatter_class_list;
+
+  $self->{'pagers' } = [@Pagers] unless exists $self->{'pagers'};
+  $self->{'bindir' } = $Bindir   unless exists $self->{'bindir'};
+  $self->{'pod2man'} = $Pod2man  unless exists $self->{'pod2man'};
+
+  push @{ $self->{'formatter_switches'} = [] }, (
+   # Yeah, we could use a hashref, but maybe there's some class where options
+   # have to be ordered; so we'll use an arrayref.
+
+     [ '__bindir'  => $self->{'bindir' } ],
+     [ '__pod2man' => $self->{'pod2man'} ],
+  );
+
+  DEBUG > 3 and printf "Formatter switches now: [%s]\n",
+   join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
+
+  $self->{'translators'} = [];
+  $self->{'extra_search_dirs'} = [];
+
+  return;
+}
+
+#..........................................................................
+
+sub init_formatter_class_list {
+  my $self = shift;
+  $self->{'formatter_classes'} ||= [];
+
+  # Remember, no switches have been read yet, when
+  # we've started this routine.
+
+  $self->opt_M_with('Pod::Perldoc::ToPod');   # the always-there fallthru
+  $self->opt_o_with('text');
+  $self->opt_o_with('man') unless $self->is_mswin32 || $self->is_dos
+       || !($ENV{TERM} && (
+              ($ENV{TERM} || '') !~ /dumb|emacs|none|unknown/i
+           ));
+
+  return;
+}
+
+#..........................................................................
+
+sub process {
+    # if this ever returns, its retval will be used for exit(RETVAL)
+
+    my $self = shift;
+    DEBUG > 1 and print "  Beginning process.\n";
+    DEBUG > 1 and print "  Args: @{$self->{'args'}}\n\n";
+    if(DEBUG > 3) {
+        print "Object contents:\n";
+        my @x = %$self;
+        while(@x) {
+            $x[1] = '<undef>'  unless defined $x[1];
+            $x[1] = "@{$x[1]}" if ref( $x[1] ) eq 'ARRAY';
+            print "  [$x[0]] => [$x[1]]\n";
+            splice @x,0,2;
+        }
+        print "\n";
+    }
+
+    # TODO: make it deal with being invoked as various different things
+    #  such as perlfaq".
+
+    return $self->usage_brief  unless  @{ $self->{'args'} };
+    $self->pagers_guessing;
+    $self->options_reading;
+    $self->aside(sprintf "$0 => %s v%s\n", ref($self), $self->VERSION);
+    $self->drop_privs_maybe;
+    $self->options_processing;
+
+    # Hm, we have @pages and @found, but we only really act on one
+    # file per call, with the exception of the opt_q hack, and with
+    # -l things
+
+    $self->aside("\n");
+
+    my @pages;
+    $self->{'pages'} = \@pages;
+    if(    $self->opt_f) { @pages = qw(perlfunc perlop)        }
+    elsif( $self->opt_q) { @pages = ("perlfaq1" .. "perlfaq9") }
+    elsif( $self->opt_v) { @pages = ("perlvar")                }
+    else                 { @pages = @{$self->{'args'}};
+                           # @pages = __FILE__
+                           #  if @pages == 1 and $pages[0] eq 'perldoc';
+                         }
+
+    return $self->usage_brief  unless  @pages;
+
+    $self->find_good_formatter_class();
+    $self->formatter_sanity_check();
+
+    $self->maybe_diddle_INC();
+      # for when we're apparently in a module or extension directory
+
+    my @found = $self->grand_search_init(\@pages);
+    exit ($self->is_vms ? 98962 : 1) unless @found;
+
+    if ($self->opt_l and not $self->opt_q ) {
+        DEBUG and print "We're in -l mode, so byebye after this:\n";
+        print join("\n", @found), "\n";
+        return;
+    }
+
+    $self->tweak_found_pathnames(\@found);
+    $self->assert_closing_stdout;
+    return $self->page_module_file(@found)  if  $self->opt_m;
+    DEBUG > 2 and print "Found: [@found]\n";
+
+    return $self->render_and_page(\@found);
+}
+
+#..........................................................................
+{
+
+my( %class_seen, %class_loaded );
+sub find_good_formatter_class {
+  my $self = $_[0];
+  my @class_list = @{ $self->{'formatter_classes'} || [] };
+  $self->die( "WHAT?  Nothing in the formatter class list!?" ) unless @class_list;
+
+  my $good_class_found;
+  foreach my $c (@class_list) {
+    DEBUG > 4 and print "Trying to load $c...\n";
+    if($class_loaded{$c}) {
+      DEBUG > 4 and print "OK, the already-loaded $c it is!\n";
+      $good_class_found = $c;
+      last;
+    }
+
+    if($class_seen{$c}) {
+      DEBUG > 4 and print
+       "I've tried $c before, and it's no good.  Skipping.\n";
+      next;
+    }
+
+    $class_seen{$c} = 1;
+
+    if( $c->can('parse_from_file') ) {
+      DEBUG > 4 and print
+       "Interesting, the formatter class $c is already loaded!\n";
+
+    } elsif(
+      ( $self->is_os2 or $self->is_mswin32 or $self->is_dos or $self->is_os2)
+       # the always case-insensitive filesystems
+      and $class_seen{lc("~$c")}++
+    ) {
+      DEBUG > 4 and print
+       "We already used something quite like \"\L$c\E\", so no point using $c\n";
+      # This avoids redefining the package.
+    } else {
+      DEBUG > 4 and print "Trying to eval 'require $c'...\n";
+
+      local $^W = $^W;
+      if(DEBUG() or $self->opt_D) {
+        # feh, let 'em see it
+      } else {
+        $^W = 0;
+        # The average user just has no reason to be seeing
+        #  $^W-suppressible warnings from the the require!
+      }
+
+      eval "require $c";
+      if($@) {
+        DEBUG > 4 and print "Couldn't load $c: $!\n";
+        next;
+      }
+    }
+
+    if( $c->can('parse_from_file') ) {
+      DEBUG > 4 and print "Settling on $c\n";
+      my $v = $c->VERSION;
+      $v = ( defined $v and length $v ) ? " version $v" : '';
+      $self->aside("Formatter class $c$v successfully loaded!\n");
+      $good_class_found = $c;
+      last;
+    } else {
+      DEBUG > 4 and print "Class $c isn't a formatter?!  Skipping.\n";
+    }
+  }
+
+  $self->die( "Can't find any loadable formatter class in @class_list?!\nAborting" )
+    unless $good_class_found;
+
+  $self->{'formatter_class'} = $good_class_found;
+  $self->aside("Will format with the class $good_class_found\n");
+
+  return;
+}
+
+}
+#..........................................................................
+
+sub formatter_sanity_check {
+  my $self = shift;
+  my $formatter_class = $self->{'formatter_class'}
+   || $self->die( "NO FORMATTER CLASS YET!?" );
+
+  if(!$self->opt_T # so -T can FORCE sending to STDOUT
+    and $formatter_class->can('is_pageable')
+    and !$formatter_class->is_pageable
+    and !$formatter_class->can('page_for_perldoc')
+  ) {
+    my $ext =
+     ($formatter_class->can('output_extension')
+       && $formatter_class->output_extension
+     ) || '';
+    $ext = ".$ext" if length $ext;
+
+    my $me = $self->program_name;
+    $self->die(
+       "When using Perldoc to format with $formatter_class, you have to\n"
+     . "specify -T or -dsomefile$ext\n"
+     . "See `$me perldoc' for more information on those switches.\n" )
+    ;
+  }
+}
+
+#..........................................................................
+
+sub render_and_page {
+    my($self, $found_list) = @_;
+
+    $self->maybe_generate_dynamic_pod($found_list);
+
+    my($out, $formatter) = $self->render_findings($found_list);
+
+    if($self->opt_d) {
+      printf "Perldoc (%s) output saved to %s\n",
+        $self->{'formatter_class'} || ref($self),
+        $out;
+      print "But notice that it's 0 bytes long!\n" unless -s $out;
+
+
+    } elsif(  # Allow the formatter to "page" itself, if it wants.
+      $formatter->can('page_for_perldoc')
+      and do {
+        $self->aside("Going to call $formatter\->page_for_perldoc(\"$out\")\n");
+        if( $formatter->page_for_perldoc($out, $self) ) {
+          $self->aside("page_for_perldoc returned true, so NOT paging with $self.\n");
+          1;
+        } else {
+          $self->aside("page_for_perldoc returned false, so paging with $self instead.\n");
+          '';
+        }
+      }
+    ) {
+      # Do nothing, since the formatter has "paged" it for itself.
+
+    } else {
+      # Page it normally (internally)
+
+      if( -s $out ) {  # Usual case:
+        $self->page($out, $self->{'output_to_stdout'}, $self->pagers);
+
+      } else {
+        # Odd case:
+        $self->aside("Skipping $out (from $$found_list[0] "
+         . "via $$self{'formatter_class'}) as it is 0-length.\n");
+
+        push @{ $self->{'temp_file_list'} }, $out;
+        $self->unlink_if_temp_file($out);
+      }
+    }
+
+    $self->after_rendering();  # any extra cleanup or whatever
+
+    return;
+}
+
+#..........................................................................
+
+sub options_reading {
+    my $self = shift;
+
+    if( defined $ENV{"PERLDOC"} and length $ENV{"PERLDOC"} ) {
+      require Text::ParseWords;
+      $self->aside("Noting env PERLDOC setting of $ENV{'PERLDOC'}\n");
+      # Yes, appends to the beginning
+      unshift @{ $self->{'args'} },
+        Text::ParseWords::shellwords( $ENV{"PERLDOC"} )
+      ;
+      DEBUG > 1 and print "  Args now: @{$self->{'args'}}\n\n";
+    } else {
+      DEBUG > 1 and print "  Okay, no PERLDOC setting in ENV.\n";
+    }
+
+    DEBUG > 1
+     and print "  Args right before switch processing: @{$self->{'args'}}\n";
+
+    Pod::Perldoc::GetOptsOO::getopts( $self, $self->{'args'}, 'YES' )
+     or return $self->usage;
+
+    DEBUG > 1
+     and print "  Args after switch processing: @{$self->{'args'}}\n";
+
+    return $self->usage if $self->opt_h;
+
+    return;
+}
+
+#..........................................................................
+
+sub options_processing {
+    my $self = shift;
+
+    if ($self->opt_X) {
+        my $podidx = "$Config{'archlib'}/pod.idx";
+        $podidx = "" unless -f $podidx && -r _ && -M _ <= 7;
+        $self->{'podidx'} = $podidx;
+    }
+
+    $self->{'output_to_stdout'} = 1  if  $self->opt_T or ! -t STDOUT;
+
+    $self->options_sanity;
+
+    # This used to set a default, but that's now moved into any
+    # formatter that cares to have a default.
+    if( $self->opt_n ) {
+        $self->add_formatter_option( '__nroffer' => $self->opt_n );
+    }
+
+    # Get language from PERLDOC_POD2 environment variable
+    if ( ! $self->opt_L && $ENV{PERLDOC_POD2} ) {
+        if ( $ENV{PERLDOC_POD2} eq '1' ) {
+          $self->_elem('opt_L',(split(/\_/, $ENV{LC_ALL} || $ENV{LC_LANG} || $ENV{LANG}))[0] );
+        }
+        else {
+          $self->_elem('opt_L', $ENV{PERLDOC_POD2});
+        }
+    };
+
+    # Adjust for using translation packages
+    $self->add_translator(split(/\s+/,$self->opt_L)) if $self->opt_L;
+
+    return;
+}
+
+#..........................................................................
+
+sub options_sanity {
+    my $self = shift;
+
+    # The opts-counting stuff interacts quite badly with
+    # the $ENV{"PERLDOC"} stuff.  I.e., if I have $ENV{"PERLDOC"}
+    # set to -t, and I specify -u on the command line, I don't want
+    # to be hectored at that -u and -t don't make sense together.
+
+    #my $opts = grep $_ && 1, # yes, the count of the set ones
+    #  $self->opt_t, $self->opt_u, $self->opt_m, $self->opt_l
+    #;
+    #
+    #$self->usage("only one of -t, -u, -m or -l") if $opts > 1;
+
+
+    # Any sanity-checking need doing here?
+
+    # But does not make sense to set either -f or -q in $ENV{"PERLDOC"}
+    if( $self->opt_f or $self->opt_q ) {
+    $self->usage("Only one of -f -or -q") if $self->opt_f and $self->opt_q;
+    $self->warn(
+        "Perldoc is meant for reading one file at a time.\n",
+        "So these parameters are being ignored: ",
+        join(' ', @{$self->{'args'}}),
+        "\n" )
+        if @{$self->{'args'}}
+    }
+    return;
+}
+
+#..........................................................................
+
+sub grand_search_init {
+    my($self, $pages, @found) = @_;
+
+    foreach (@$pages) {
+        if (/^http(s)?:\/\//) {
+            require HTTP::Tiny;
+            require File::Temp;
+            my $response = HTTP::Tiny->new->get($_);
+            if ($response->{success}) {
+                my ($fh, $filename) = File::Temp::tempfile(UNLINK => 1);
+                $fh->print($response->{content});
+                push @found, $filename;
+                ($self->{podnames}{$filename} =
+                  m{.*/([^/#?]+)} ? uc $1 : "UNKNOWN")
+                   =~ s/\.P(?:[ML]|OD)\z//;
+            }
+            else {
+                print STDERR "No " .
+                    ($self->opt_m ? "module" : "documentation") . " found for \"$_\".\n";
+            }
+            next;
+        }
+        if ($self->{'podidx'} && open(PODIDX, $self->{'podidx'})) {
+            my $searchfor = catfile split '::', $_;
+            $self->aside( "Searching for '$searchfor' in $self->{'podidx'}\n" );
+            local $_;
+            while (<PODIDX>) {
+                chomp;
+                push(@found, $_) if m,/$searchfor(?:\.(?:pod|pm))?\z,i;
+            }
+            close(PODIDX)            or $self->die( "Can't close $$self{'podidx'}: $!" );
+            next;
+        }
+
+        $self->aside( "Searching for $_\n" );
+
+        if ($self->opt_F) {
+            next unless -r;
+            push @found, $_ if $self->opt_l or $self->opt_m or $self->containspod($_);
+            next;
+        }
+
+        my @searchdirs;
+
+        # prepend extra search directories (including language specific)
+        push @searchdirs, @{ $self->{'extra_search_dirs'} };
+
+        # We must look both in @INC for library modules and in $bindir
+        # for executables, like h2xs or perldoc itself.
+        push @searchdirs, ($self->{'bindir'}, @INC);
+        unless ($self->opt_m) {
+            if ($self->is_vms) {
+                my($i,$trn);
+                for ($i = 0; $trn = $ENV{'DCL$PATH;'.$i}; $i++) {
+                    push(@searchdirs,$trn);
+                }
+                push(@searchdirs,'perl_root:[lib.pods]')  # installed pods
+            }
+            else {
+                push(@searchdirs, grep(-d, split($Config{path_sep},
+                                                 $ENV{'PATH'})));
+            }
+        }
+        my @files = $self->searchfor(0,$_, at searchdirs);
+        if (@files) {
+            $self->aside( "Found as @files\n" );
+        }
+        # add "perl" prefix, so "perldoc foo" may find perlfoo.pod
+    elsif (BE_LENIENT and !/\W/ and  @files = $self->searchfor(0, "perl$_", @searchdirs)) {
+            $self->aside( "Loosely found as @files\n" );
+        }
+        else {
+            # no match, try recursive search
+            @searchdirs = grep(!/^\.\z/s, at INC);
+            @files= $self->searchfor(1,$_, at searchdirs) if $self->opt_r;
+            if (@files) {
+                $self->aside( "Loosely found as @files\n" );
+            }
+            else {
+                print STDERR "No " .
+                    ($self->opt_m ? "module" : "documentation") . " found for \"$_\".\n";
+                if ( @{ $self->{'found'} } ) {
+                    print STDERR "However, try\n";
+                    my $me = $self->program_name;
+                    for my $dir (@{ $self->{'found'} }) {
+                        opendir(DIR, $dir) or $self->die( "opendir $dir: $!" );
+                        while (my $file = readdir(DIR)) {
+                            next if ($file =~ /^\./s);
+                            $file =~ s/\.(pm|pod)\z//;  # XXX: badfs
+                            print STDERR "\t$me $_\::$file\n";
+                        }
+                        closedir(DIR)    or $self->die( "closedir $dir: $!" );
+                    }
+                }
+            }
+        }
+        push(@found, at files);
+    }
+    return @found;
+}
+
+#..........................................................................
+
+sub maybe_generate_dynamic_pod {
+    my($self, $found_things) = @_;
+    my @dynamic_pod;
+
+    $self->search_perlfunc($found_things, \@dynamic_pod)  if  $self->opt_f;
+
+    $self->search_perlvar($found_things, \@dynamic_pod)   if  $self->opt_v;
+
+    $self->search_perlfaqs($found_things, \@dynamic_pod)  if  $self->opt_q;
+
+    if( ! $self->opt_f and ! $self->opt_q and ! $self->opt_v ) {
+        DEBUG > 4 and print "That's a non-dynamic pod search.\n";
+    } elsif ( @dynamic_pod ) {
+        $self->aside("Hm, I found some Pod from that search!\n");
+        my ($buffd, $buffer) = $self->new_tempfile('pod', 'dyn');
+
+        push @{ $self->{'temp_file_list'} }, $buffer;
+         # I.e., it MIGHT be deleted at the end.
+
+        my $in_list = !$self->not_dynamic && $self->opt_f || $self->opt_v;
+
+        print $buffd "=over 8\n\n" if $in_list;
+        print $buffd @dynamic_pod  or $self->die( "Can't print $buffer: $!" );
+        print $buffd "=back\n"     if $in_list;
+
+        close $buffd        or $self->die( "Can't close $buffer: $!" );
+
+        @$found_things = $buffer;
+          # Yes, so found_things never has more than one thing in
+          #  it, by time we leave here
+
+        $self->add_formatter_option('__filter_nroff' => 1);
+
+    } else {
+        @$found_things = ();
+        $self->aside("I found no Pod from that search!\n");
+    }
+
+    return;
+}
+
+#..........................................................................
+
+sub not_dynamic {
+  my ($self,$value) = @_;
+  $self->{__not_dynamic} = $value if @_ == 2;
+  return $self->{__not_dynamic};
+}
+
+#..........................................................................
+
+sub add_formatter_option { # $self->add_formatter_option('key' => 'value');
+  my $self = shift;
+  push @{ $self->{'formatter_switches'} }, [ @_ ] if @_;
+
+  DEBUG > 3 and printf "Formatter switches now: [%s]\n",
+   join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
+
+  return;
+}
+
+#.........................................................................
+
+sub new_translator { # $tr = $self->new_translator($lang);
+    my $self = shift;
+    my $lang = shift;
+
+    my $pack = 'POD2::' . uc($lang);
+    eval "require $pack";
+    if ( !$@ && $pack->can('new') ) {
+    return $pack->new();
+    }
+
+    eval { require POD2::Base };
+    return if $@;
+
+    return POD2::Base->new({ lang => $lang });
+}
+
+#.........................................................................
+
+sub add_translator { # $self->add_translator($lang);
+    my $self = shift;
+    for my $lang (@_) {
+        my $tr = $self->new_translator($lang);
+        if ( defined $tr ) {
+            push @{ $self->{'translators'} }, $tr;
+            push @{ $self->{'extra_search_dirs'} }, $tr->pod_dirs;
+
+            $self->aside( "translator for '$lang' loaded\n" );
+        } else {
+            # non-installed or bad translator package
+            $self->warn( "Perldoc cannot load translator package for '$lang': ignored\n" );
+        }
+
+    }
+    return;
+}
+
+#..........................................................................
+
+sub search_perlvar {
+    my($self, $found_things, $pod) = @_;
+
+    my $opt = $self->opt_v;
+
+    if ( $opt !~ /^ (?: [\@\%\$]\S+ | [A-Z]\w* ) $/x ) {
+        CORE::die( "'$opt' does not look like a Perl variable\n" );
+    }
+
+    DEBUG > 2 and print "Search: @$found_things\n";
+
+    my $perlvar = shift @$found_things;
+    open(PVAR, "<", $perlvar)               # "Funk is its own reward"
+        or $self->die("Can't open $perlvar: $!");
+
+    if ( $opt ne '$0' && $opt =~ /^\$\d+$/ ) { # handle $1, $2, ...
+      $opt = '$<I<digits>>';
+    }
+    my $search_re = quotemeta($opt);
+
+    DEBUG > 2 and
+     print "Going to perlvar-scan for $search_re in $perlvar\n";
+
+    # Skip introduction
+    local $_;
+    while (<PVAR>) {
+        last if /^=over 8/;
+    }
+
+    # Look for our variable
+    my $found = 0;
+    my $inheader = 1;
+    my $inlist = 0;
+    while (<PVAR>) {  # "The Mothership Connection is here!"
+        last if /^=head2 Error Indicators/;
+        # \b at the end of $` and friends borks things!
+        if ( m/^=item\s+$search_re\s/ )  {
+            $found = 1;
+        }
+        elsif (/^=item/) {
+            last if $found && !$inheader && !$inlist;
+        }
+        elsif (!/^\s+$/) { # not a blank line
+            if ( $found ) {
+                $inheader = 0; # don't accept more =item (unless inlist)
+        }
+            else {
+                @$pod = (); # reset
+                $inheader = 1; # start over
+                next;
+            }
+    }
+
+        if (/^=over/) {
+            ++$inlist;
+        }
+        elsif (/^=back/) {
+            last if $found && !$inheader && !$inlist;
+            --$inlist;
+        }
+        push @$pod, $_;
+#        ++$found if /^\w/;        # found descriptive text
+    }
+    @$pod = () unless $found;
+    if (!@$pod) {
+        CORE::die( "No documentation for perl variable '$opt' found\n" );
+    }
+    close PVAR                or $self->die( "Can't open $perlvar: $!" );
+
+    return;
+}
+
+#..........................................................................
+
+sub search_perlop {
+  my ($self,$found_things,$pod) = @_;
+
+  $self->not_dynamic( 1 );
+
+  my $perlop = shift @$found_things;
+  open( PERLOP, '<', $perlop ) or $self->die( "Can't open $perlop: $!" );
+
+  my $paragraph = "";
+  my $has_text_seen = 0;
+  my $thing = $self->opt_f;
+  my $list = 0;
+
+  while( my $line = <PERLOP> ){
+    if( $paragraph and $line =~ m!^=(?:head|item)! and $paragraph =~ m!X<+\s*\Q$thing\E\s*>+! ){
+      if( $list ){
+        $paragraph =~ s!=back.*?\z!!s;
+      }
+
+      if( $paragraph =~ m!^=item! ){
+        $paragraph = "=over 8\n\n" . $paragraph . "=back\n";
+      }
+
+      push @$pod, $paragraph;
+      $paragraph = "";
+      $has_text_seen = 0;
+      $list = 0;
+    }
+
+    if( $line =~ m!^=over! ){
+      $list++;
+    }
+    elsif( $line =~ m!^=back! ){
+      $list--;
+    }
+
+    if( $line =~ m!^=(?:head|item)! and $has_text_seen ){
+      $paragraph = "";
+    }
+    elsif( $line !~ m!^=(?:head|item)! and $line !~ m!^\s*$! and $line !~ m!^\s*X<! ){
+      $has_text_seen = 1;
+    }
+
+    $paragraph .= $line;
+    }
+
+  close PERLOP;
+
+  return;
+}
+
+#..........................................................................
+
+sub search_perlfunc {
+    my($self, $found_things, $pod) = @_;
+
+    DEBUG > 2 and print "Search: @$found_things\n";
+
+    my $perlfunc = shift @$found_things;
+    open(PFUNC, "<", $perlfunc)               # "Funk is its own reward"
+        or $self->die("Can't open $perlfunc: $!");
+
+    # Functions like -r, -e, etc. are listed under `-X'.
+    my $search_re = ($self->opt_f =~ /^-[rwxoRWXOeszfdlpSbctugkTBMAC]$/)
+                        ? '(?:I<)?-X' : quotemeta($self->opt_f) ;
+
+    DEBUG > 2 and
+     print "Going to perlfunc-scan for $search_re in $perlfunc\n";
+
+    my $re = 'Alphabetical Listing of Perl Functions';
+
+    # Check available translator or backup to default (english)
+    if ( $self->opt_L && defined $self->{'translators'}->[0] ) {
+        my $tr = $self->{'translators'}->[0];
+        $re =  $tr->search_perlfunc_re if $tr->can('search_perlfunc_re');
+    }
+
+    # Skip introduction
+    local $_;
+    while (<PFUNC>) {
+        last if /^=head2 $re/;
+    }
+
+    # Look for our function
+    my $found = 0;
+    my $inlist = 0;
+
+    my @perlops = qw(m q qq qr qx qw s tr y);
+
+    my @related;
+    my $related_re;
+    while (<PFUNC>) {  # "The Mothership Connection is here!"
+        last if( grep{ $self->opt_f eq $_ }@perlops );
+        if ( m/^=item\s+$search_re\b/ )  {
+            $found = 1;
+        }
+        elsif (@related > 1 and /^=item/) {
+            $related_re ||= join "|", @related;
+            if (m/^=item\s+(?:$related_re)\b/) {
+                $found = 1;
+            }
+            else {
+                last;
+            }
+        }
+        elsif (/^=item/) {
+            last if $found > 1 and not $inlist;
+        }
+        elsif ($found and /^X<[^>]+>/) {
+            push @related, m/X<([^>]+)>/g;
+        }
+        next unless $found;
+        if (/^=over/) {
+            ++$inlist;
+        }
+        elsif (/^=back/) {
+            last if $found > 1 and not $inlist;
+            --$inlist;
+        }
+        push @$pod, $_;
+        ++$found if /^\w/;        # found descriptive text
+    }
+
+    if( !@$pod ){
+        $self->search_perlop( $found_things, $pod );
+    }
+
+    if (!@$pod) {
+        CORE::die( sprintf
+          "No documentation for perl function '%s' found\n",
+          $self->opt_f )
+        ;
+    }
+    close PFUNC                or $self->die( "Can't open $perlfunc: $!" );
+
+    return;
+}
+
+#..........................................................................
+
+sub search_perlfaqs {
+    my( $self, $found_things, $pod) = @_;
+
+    my $found = 0;
+    my %found_in;
+    my $search_key = $self->opt_q;
+
+    my $rx = eval { qr/$search_key/ }
+     or $self->die( <<EOD );
+Invalid regular expression '$search_key' given as -q pattern:
+$@
+Did you mean \\Q$search_key ?
+
+EOD
+
+    local $_;
+    foreach my $file (@$found_things) {
+        $self->die( "invalid file spec: $!" ) if $file =~ /[<>|]/;
+        open(INFAQ, "<", $file)  # XXX 5.6ism
+         or $self->die( "Can't read-open $file: $!\nAborting" );
+        while (<INFAQ>) {
+            if ( m/^=head2\s+.*(?:$search_key)/i ) {
+                $found = 1;
+                push @$pod, "=head1 Found in $file\n\n" unless $found_in{$file}++;
+            }
+            elsif (/^=head[12]/) {
+                $found = 0;
+            }
+            next unless $found;
+            push @$pod, $_;
+        }
+        close(INFAQ);
+    }
+    CORE::die("No documentation for perl FAQ keyword '$search_key' found\n")
+     unless @$pod;
+
+    if ( $self->opt_l ) {
+        CORE::die((join "\n", keys %found_in) . "\n");
+    }
+    return;
+}
+
+
+#..........................................................................
+
+sub render_findings {
+  # Return the filename to open
+
+  my($self, $found_things) = @_;
+
+  my $formatter_class = $self->{'formatter_class'}
+   || $self->die( "No formatter class set!?" );
+  my $formatter = $formatter_class->can('new')
+    ? $formatter_class->new
+    : $formatter_class
+  ;
+
+  if(! @$found_things) {
+    $self->die( "Nothing found?!" );
+    # should have been caught before here
+  } elsif(@$found_things > 1) {
+    $self->warn(
+     "Perldoc is only really meant for reading one document at a time.\n",
+     "So these parameters are being ignored: ",
+     join(' ', @$found_things[1 .. $#$found_things] ),
+     "\n" );
+  }
+
+  my $file = $found_things->[0];
+
+  DEBUG > 3 and printf "Formatter switches now: [%s]\n",
+   join ' ', map "[@$_]", @{ $self->{'formatter_switches'} };
+
+  # Set formatter options:
+  if( ref $formatter ) {
+    foreach my $f (@{ $self->{'formatter_switches'} || [] }) {
+      my($switch, $value, $silent_fail) = @$f;
+      if( $formatter->can($switch) ) {
+        eval { $formatter->$switch( defined($value) ? $value : () ) };
+        $self->warn( "Got an error when setting $formatter_class\->$switch:\n$@\n" )
+         if $@;
+      } else {
+        if( $silent_fail or $switch =~ m/^__/s ) {
+          DEBUG > 2 and print "Formatter $formatter_class doesn't support $switch\n";
+        } else {
+          $self->warn( "$formatter_class doesn't recognize the $switch switch.\n" );
+        }
+      }
+    }
+  }
+
+  $self->{'output_is_binary'} =
+    $formatter->can('write_with_binmode') && $formatter->write_with_binmode;
+
+  if( $self->{podnames} and exists $self->{podnames}{$file} and
+      $formatter->can('name') ) {
+    $formatter->name($self->{podnames}{$file});
+  }
+
+  my ($out_fh, $out) = $self->new_output_file(
+    ( $formatter->can('output_extension') && $formatter->output_extension )
+     || undef,
+    $self->useful_filename_bit,
+  );
+
+  # Now, finally, do the formatting!
+  {
+    local $^W = $^W;
+    if(DEBUG() or $self->opt_D) {
+      # feh, let 'em see it
+    } else {
+      $^W = 0;
+      # The average user just has no reason to be seeing
+      #  $^W-suppressible warnings from the formatting!
+    }
+
+    eval {  $formatter->parse_from_file( $file, $out_fh )  };
+  }
+
+  $self->warn( "Error while formatting with $formatter_class:\n $@\n" ) if $@;
+  DEBUG > 2 and print "Back from formatting with $formatter_class\n";
+
+  close $out_fh
+   or $self->warn( "Can't close $out: $!\n(Did $formatter already close it?)" );
+  sleep 0; sleep 0; sleep 0;
+   # Give the system a few timeslices to meditate on the fact
+   # that the output file does in fact exist and is closed.
+
+  $self->unlink_if_temp_file($file);
+
+  unless( -s $out ) {
+    if( $formatter->can( 'if_zero_length' ) ) {
+      # Basically this is just a hook for Pod::Simple::Checker; since
+      # what other class could /happily/ format an input file with Pod
+      # as a 0-length output file?
+      $formatter->if_zero_length( $file, $out, $out_fh );
+    } else {
+      $self->warn( "Got a 0-length file from $$found_things[0] via $formatter_class!?\n" );
+    }
+  }
+
+  DEBUG and print "Finished writing to $out.\n";
+  return($out, $formatter) if wantarray;
+  return $out;
+}
+
+#..........................................................................
+
+sub unlink_if_temp_file {
+  # Unlink the specified file IFF it's in the list of temp files.
+  # Really only used in the case of -f / -q things when we can
+  #  throw away the dynamically generated source pod file once
+  #  we've formatted it.
+  #
+  my($self, $file) = @_;
+  return unless defined $file and length $file;
+
+  my $temp_file_list = $self->{'temp_file_list'} || return;
+  if(grep $_ eq $file, @$temp_file_list) {
+    $self->aside("Unlinking $file\n");
+    unlink($file) or $self->warn( "Odd, couldn't unlink $file: $!" );
+  } else {
+    DEBUG > 1 and print "$file isn't a temp file, so not unlinking.\n";
+  }
+  return;
+}
+
+#..........................................................................
+
+
+sub after_rendering {
+  my $self = $_[0];
+  $self->after_rendering_VMS     if $self->is_vms;
+  $self->after_rendering_MSWin32 if $self->is_mswin32;
+  $self->after_rendering_Dos     if $self->is_dos;
+  $self->after_rendering_OS2     if $self->is_os2;
+  return;
+}
+
+sub after_rendering_VMS      { return }
+sub after_rendering_Dos      { return }
+sub after_rendering_OS2      { return }
+sub after_rendering_MSWin32  { return }
+
+#..........................................................................
+#   :   :   :   :   :   :   :   :   :
+#..........................................................................
+
+sub minus_f_nocase {   # i.e., do like -f, but without regard to case
+
+     my($self, $dir, $file) = @_;
+     my $path = catfile($dir,$file);
+     return $path if -f $path and -r _;
+
+     if(!$self->opt_i
+        or $self->is_vms or $self->is_mswin32
+        or $self->is_dos or $self->is_os2
+     ) {
+        # On a case-forgiving file system, or if case is important,
+    #  that is it, all we can do.
+    $self->warn( "Ignored $path: unreadable\n" ) if -f _;
+    return '';
+     }
+
+     local *DIR;
+     my @p = ($dir);
+     my($p,$cip);
+     foreach $p (splitdir $file){
+    my $try = catfile @p, $p;
+        $self->aside("Scrutinizing $try...\n");
+    stat $try;
+    if (-d _) {
+        push @p, $p;
+        if ( $p eq $self->{'target'} ) {
+        my $tmp_path = catfile @p;
+        my $path_f = 0;
+        for (@{ $self->{'found'} }) {
+            $path_f = 1 if $_ eq $tmp_path;
+        }
+        push (@{ $self->{'found'} }, $tmp_path) unless $path_f;
+        $self->aside( "Found as $tmp_path but directory\n" );
+        }
+    }
+    elsif (-f _ && -r _ && lc($try) eq lc($path)) {
+        return $try;
+    }
+    elsif (-f _) {
+        $self->warn( "Ignored $try: unreadable or file/dir mismatch\n" );
+    }
+    elsif (-d catdir(@p)) {  # at least we see the containing directory!
+        my $found = 0;
+        my $lcp = lc $p;
+        my $p_dirspec = catdir(@p);
+        opendir DIR, $p_dirspec  or $self->die( "opendir $p_dirspec: $!" );
+        while(defined( $cip = readdir(DIR) )) {
+        if (lc $cip eq $lcp){
+            $found++;
+            last; # XXX stop at the first? what if there's others?
+        }
+        }
+        closedir DIR  or $self->die( "closedir $p_dirspec: $!" );
+        return "" unless $found;
+
+        push @p, $cip;
+        my $p_filespec = catfile(@p);
+        return $p_filespec if -f $p_filespec and -r _;
+        $self->warn( "Ignored $p_filespec: unreadable\n" ) if -f _;
+    }
+     }
+     return "";
+}
+
+#..........................................................................
+
+sub pagers_guessing {
+    my $self = shift;
+
+    my @pagers;
+    push @pagers, $self->pagers;
+    $self->{'pagers'} = \@pagers;
+
+    if ($self->is_mswin32) {
+        push @pagers, qw( more< less notepad );
+        unshift @pagers, $ENV{PAGER}  if $ENV{PAGER};
+    }
+    elsif ($self->is_vms) {
+        push @pagers, qw( most more less type/page );
+    }
+    elsif ($self->is_dos) {
+        push @pagers, qw( less.exe more.com< );
+        unshift @pagers, $ENV{PAGER}  if $ENV{PAGER};
+    }
+    else {
+        if ($self->is_os2) {
+          unshift @pagers, 'less', 'cmd /c more <';
+        }
+        push @pagers, qw( more less pg view cat );
+        unshift @pagers, "$ENV{PAGER} <"  if $ENV{PAGER};
+    }
+
+    if ($self->is_cygwin) {
+        if (($pagers[0] eq 'less') || ($pagers[0] eq '/usr/bin/less')) {
+            unshift @pagers, '/usr/bin/less -isrR';
+            unshift @pagers, $ENV{PAGER}  if $ENV{PAGER};
+       }
+    }
+
+    unshift @pagers, "$ENV{PERLDOC_PAGER} <" if $ENV{PERLDOC_PAGER};
+
+    return;
+}
+
+#..........................................................................
+
+sub page_module_file {
+    my($self, @found) = @_;
+
+    # Security note:
+    # Don't ever just pass this off to anything like MSWin's "start.exe",
+    # since we might be calling on a .pl file, and we wouldn't want that
+    # to actually /execute/ the file that we just want to page thru!
+    # Also a consideration if one were to use a web browser as a pager;
+    # doing so could trigger the browser's MIME mapping for whatever
+    # it thinks .pm/.pl/whatever is.  Probably just a (useless and
+    # annoying) "Save as..." dialog, but potentially executing the file
+    # in question -- particularly in the case of MSIE and it's, ahem,
+    # occasionally hazy distinction between OS-local extension
+    # associations, and browser-specific MIME mappings.
+
+    if(@found > 1) {
+        $self->warn(
+            "Perldoc is only really meant for reading one document at a time.\n" .
+            "So these files are being ignored: " .
+            join(' ', @found[1 .. $#found] ) .
+            "\n" )
+    }
+
+    return $self->page($found[0], $self->{'output_to_stdout'}, $self->pagers);
+
+}
+
+#..........................................................................
+
+sub check_file {
+    my($self, $dir, $file) = @_;
+
+    unless( ref $self ) {
+      # Should never get called:
+      $Carp::Verbose = 1;
+      require Carp;
+      Carp::croak( join '',
+        "Crazy ", __PACKAGE__, " error:\n",
+        "check_file must be an object_method!\n",
+        "Aborting"
+      );
+    }
+
+    if(length $dir and not -d $dir) {
+      DEBUG > 3 and print "  No dir $dir -- skipping.\n";
+      return "";
+    }
+
+    my $path = $self->minus_f_nocase($dir,$file);
+    if( length $path and ($self->opt_m ? $self->isprintable($path)
+                                      : $self->containspod($path)) ) {
+        DEBUG > 3 and print
+            "  The file $path indeed looks promising!\n";
+        return $path;
+    }
+    DEBUG > 3 and print "  No good: $file in $dir\n";
+
+    return "";
+}
+
+sub isprintable {
+	my($self, $file, $readit) = @_;
+	my $size= 1024;
+	my $maxunprintfrac= 0.2;   # tolerate some unprintables for UTF-8 comments etc.
+
+	return 1 if !$readit && $file =~ /\.(?:pl|pm|pod|cmd|com|bat)\z/i;
+
+	my $data;
+	local($_);
+	open(TEST,"<", $file)     or $self->die( "Can't open $file: $!" );
+	read TEST, $data, $size;
+	close TEST;
+	$size= length($data);
+	$data =~ tr/\x09-\x0D\x20-\x7E//d;
+	return length($data) <= $size*$maxunprintfrac;
+}
+
+#..........................................................................
+
+sub containspod {
+    my($self, $file, $readit) = @_;
+    return 1 if !$readit && $file =~ /\.pod\z/i;
+
+
+    #  Under cygwin the /usr/bin/perl is legal executable, but
+    #  you cannot open a file with that name. It must be spelled
+    #  out as "/usr/bin/perl.exe".
+    #
+    #  The following if-case under cygwin prevents error
+    #
+    #     $ perldoc perl
+    #     Cannot open /usr/bin/perl: no such file or directory
+    #
+    #  This would work though
+    #
+    #     $ perldoc perl.pod
+
+    if ( $self->is_cygwin  and  -x $file  and  -f "$file.exe" )
+    {
+        $self->warn( "Cygwin $file.exe search skipped\n" ) if DEBUG or $self->opt_D;
+        return 0;
+    }
+
+    local($_);
+    open(TEST,"<", $file)   or $self->die( "Can't open $file: $!" );   # XXX 5.6ism
+    while (<TEST>) {
+    if (/^=head/) {
+        close(TEST)     or $self->die( "Can't close $file: $!" );
+        return 1;
+    }
+    }
+    close(TEST)         or $self->die( "Can't close $file: $!" );
+    return 0;
+}
+
+#..........................................................................
+
+sub maybe_diddle_INC {
+  my $self = shift;
+
+  # Does this look like a module or extension directory?
+
+  if (-f "Makefile.PL" || -f "Build.PL") {
+
+    # Add "." and "lib" to @INC (if they exist)
+    eval q{ use lib qw(. lib); 1; } or $self->die;
+
+    # don't add if superuser
+    if ($< && $> && -d "blib") {   # don't be looking too hard now!
+      eval q{ use blib; 1 };
+      $self->warn( $@ ) if $@ && $self->opt_D;
+    }
+  }
+
+  return;
+}
+
+#..........................................................................
+
+sub new_output_file {
+  my $self = shift;
+  my $outspec = $self->opt_d;  # Yes, -d overrides all else!
+                               # So don't call this twice per format-job!
+
+  return $self->new_tempfile(@_) unless defined $outspec and length $outspec;
+
+  # Otherwise open a write-handle on opt_d!f
+
+  my $fh;
+  # If we are running before perl5.6.0, we can't autovivify
+  if ($^V < 5.006) {
+    require Symbol;
+    $fh = Symbol::gensym();
+  }
+  DEBUG > 3 and print "About to try writing to specified output file $outspec\n";
+  $self->die( "Can't write-open $outspec: $!" )
+   unless open($fh, ">", $outspec); # XXX 5.6ism
+
+  DEBUG > 3 and print "Successfully opened $outspec\n";
+  binmode($fh) if $self->{'output_is_binary'};
+  return($fh, $outspec);
+}
+
+#..........................................................................
+
+sub useful_filename_bit {
+  # This tries to provide a meaningful bit of text to do with the query,
+  # such as can be used in naming the file -- since if we're going to be
+  # opening windows on temp files (as a "pager" may well do!) then it's
+  # better if the temp file's name (which may well be used as the window
+  # title) isn't ALL just random garbage!
+  # In other words "perldoc_LWPSimple_2371981429" is a better temp file
+  # name than "perldoc_2371981429".  So this routine is what tries to
+  # provide the "LWPSimple" bit.
+  #
+  my $self = shift;
+  my $pages = $self->{'pages'} || return undef;
+  return undef unless @$pages;
+
+  my $chunk = $pages->[0];
+  return undef unless defined $chunk;
+  $chunk =~ s/:://g;
+  $chunk =~ s/\.\w+$//g; # strip any extension
+  if( $chunk =~ m/([^\#\\:\/\$]+)$/s ) { # get basename, if it's a file
+    $chunk = $1;
+  } else {
+    return undef;
+  }
+  $chunk =~ s/[^a-zA-Z0-9]+//g; # leave ONLY a-zA-Z0-9 things!
+  $chunk = substr($chunk, -10) if length($chunk) > 10;
+  return $chunk;
+}
+
+#..........................................................................
+
+sub new_tempfile {    # $self->new_tempfile( [$suffix, [$infix] ] )
+  my $self = shift;
+
+  ++$Temp_Files_Created;
+
+  require File::Temp;
+  return File::Temp::tempfile(UNLINK => 1);
+}
+
+#..........................................................................
+
+sub page {  # apply a pager to the output file
+    my ($self, $output, $output_to_stdout, @pagers) = @_;
+    if ($output_to_stdout) {
+        $self->aside("Sending unpaged output to STDOUT.\n");
+        open(TMP, "<", $output)  or  $self->die( "Can't open $output: $!" ); # XXX 5.6ism
+        local $_;
+        while (<TMP>) {
+            print or $self->die( "Can't print to stdout: $!" );
+        }
+        close TMP  or $self->die( "Can't close while $output: $!" );
+        $self->unlink_if_temp_file($output);
+    } else {
+        # On VMS, quoting prevents logical expansion, and temp files with no
+        # extension get the wrong default extension (such as .LIS for TYPE)
+
+        $output = VMS::Filespec::rmsexpand($output, '.') if $self->is_vms;
+
+        $output =~ s{/}{\\}g if $self->is_mswin32 || $self->is_dos;
+        # Altho "/" under MSWin is in theory good as a pathsep,
+        #  many many corners of the OS don't like it.  So we
+        #  have to force it to be "\" to make everyone happy.
+
+        foreach my $pager (@pagers) {
+            $self->aside("About to try calling $pager $output\n");
+            if ($self->is_vms) {
+                last if system("$pager $output") == 0;
+            } else {
+                last if system("$pager \"$output\"") == 0;
+            }
+        }
+    }
+    return;
+}
+
+#..........................................................................
+
+sub searchfor {
+    my($self, $recurse,$s, at dirs) = @_;
+    $s =~ s!::!/!g;
+    $s = VMS::Filespec::unixify($s) if $self->is_vms;
+    return $s if -f $s && $self->containspod($s);
+    $self->aside( "Looking for $s in @dirs\n" );
+    my $ret;
+    my $i;
+    my $dir;
+    $self->{'target'} = (splitdir $s)[-1];  # XXX: why not use File::Basename?
+    for ($i=0; $i<@dirs; $i++) {
+    $dir = $dirs[$i];
+    next unless -d $dir;
+    ($dir = VMS::Filespec::unixpath($dir)) =~ s!/\z!! if $self->is_vms;
+    if (       (! $self->opt_m && ( $ret = $self->check_file($dir,"$s.pod")))
+        or ( $ret = $self->check_file($dir,"$s.pm"))
+        or ( $ret = $self->check_file($dir,$s))
+        or ( $self->is_vms and
+             $ret = $self->check_file($dir,"$s.com"))
+        or ( $self->is_os2 and
+             $ret = $self->check_file($dir,"$s.cmd"))
+        or ( ($self->is_mswin32 or $self->is_dos or $self->is_os2) and
+             $ret = $self->check_file($dir,"$s.bat"))
+        or ( $ret = $self->check_file("$dir/pod","$s.pod"))
+        or ( $ret = $self->check_file("$dir/pod",$s))
+        or ( $ret = $self->check_file("$dir/pods","$s.pod"))
+        or ( $ret = $self->check_file("$dir/pods",$s))
+    ) {
+        DEBUG > 1 and print "  Found $ret\n";
+        return $ret;
+    }
+
+    if ($recurse) {
+        opendir(D,$dir) or $self->die( "Can't opendir $dir: $!" );
+        my @newdirs = map catfile($dir, $_), grep {
+        not /^\.\.?\z/s and
+        not /^auto\z/s  and   # save time! don't search auto dirs
+        -d  catfile($dir, $_)
+        } readdir D;
+        closedir(D)     or $self->die( "Can't closedir $dir: $!" );
+        next unless @newdirs;
+        # what a wicked map!
+        @newdirs = map((s/\.dir\z//,$_)[1], at newdirs) if $self->is_vms;
+        $self->aside( "Also looking in @newdirs\n" );
+        push(@dirs, at newdirs);
+    }
+    }
+    return ();
+}
+
+#..........................................................................
+{
+  my $already_asserted;
+  sub assert_closing_stdout {
+    my $self = shift;
+
+    return if $already_asserted;
+
+    eval  q~ END { close(STDOUT) || CORE::die "Can't close STDOUT: $!" } ~;
+     # What for? to let the pager know that nothing more will come?
+
+    $self->die( $@ ) if $@;
+    $already_asserted = 1;
+    return;
+  }
+}
+
+#..........................................................................
+
+sub tweak_found_pathnames {
+  my($self, $found) = @_;
+  if ($self->is_mswin32) {
+    foreach (@$found) { s,/,\\,g }
+  }
+  foreach (@$found) { s,',\\',g } # RT 37347
+  return;
+}
+
+#..........................................................................
+#   :   :   :   :   :   :   :   :   :
+#..........................................................................
+
+sub am_taint_checking {
+    my $self = shift;
+    $self->die( "NO ENVIRONMENT?!?!" ) unless keys %ENV; # reset iterator along the way
+    my($k,$v) = each %ENV;
+    return is_tainted($v);
+}
+
+#..........................................................................
+
+sub is_tainted { # just a function
+    my $arg  = shift;
+    my $nada = substr($arg, 0, 0);  # zero-length!
+    local $@;  # preserve the caller's version of $@
+    eval { eval "# $nada" };
+    return length($@) != 0;
+}
+
+#..........................................................................
+
+sub drop_privs_maybe {
+    my $self = shift;
+
+    # Attempt to drop privs if we should be tainting and aren't
+    if (!( $self->is_vms || $self->is_mswin32 || $self->is_dos
+          || $self->is_os2
+         )
+        && ($> == 0 || $< == 0)
+        && !$self->am_taint_checking()
+    ) {
+        my $id = eval { getpwnam("nobody") };
+        $id = eval { getpwnam("nouser") } unless defined $id;
+        $id = -2 unless defined $id;
+            #
+            # According to Stevens' APUE and various
+            # (BSD, Solaris, HP-UX) man pages, setting
+            # the real uid first and effective uid second
+            # is the way to go if one wants to drop privileges,
+            # because if one changes into an effective uid of
+            # non-zero, one cannot change the real uid any more.
+            #
+            # Actually, it gets even messier.  There is
+            # a third uid, called the saved uid, and as
+            # long as that is zero, one can get back to
+            # uid of zero.  Setting the real-effective *twice*
+            # helps in *most* systems (FreeBSD and Solaris)
+            # but apparently in HP-UX even this doesn't help:
+            # the saved uid stays zero (apparently the only way
+            # in HP-UX to change saved uid is to call setuid()
+            # when the effective uid is zero).
+            #
+        eval {
+            $< = $id; # real uid
+            $> = $id; # effective uid
+            $< = $id; # real uid
+            $> = $id; # effective uid
+        };
+        if( !$@ && $< && $> ) {
+          DEBUG and print "OK, I dropped privileges.\n";
+        } elsif( $self->opt_U ) {
+          DEBUG and print "Couldn't drop privileges, but in -U mode, so feh."
+        } else {
+          DEBUG and print "Hm, couldn't drop privileges.  Ah well.\n";
+          # We used to die here; but that seemed pointless.
+        }
+    }
+    return;
+}
+
+#..........................................................................
+
+1;
+
+__END__
+
+=head1 NAME
+
+Pod::Perldoc - Look up Perl documentation in Pod format.
+
+=head1 SYNOPSIS
+
+    use Pod::Perldoc ();
+
+    Pod::Perldoc->run();
+
+=head1 DESCRIPTION
+
+The guts of L<perldoc> utility.
+
+=head1 SEE ALSO
+
+L<perldoc>
+
+=head1 COPYRIGHT AND DISCLAIMERS
+
+Copyright (c) 2002-2007 Sean M. Burke.
+
+This library is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+This program is distributed in the hope that it will be useful, but
+without any warranty; without even the implied warranty of
+merchantability or fitness for a particular purpose.
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributions from:
+brian d foy C<< <bdfoy at cpan.org> >>
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/lib/perldoc.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/lib/perldoc.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/lib/perldoc.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,277 @@
+
+=head1 NAME
+
+perldoc - Look up Perl documentation in Pod format.
+
+=head1 SYNOPSIS
+
+    perldoc [-h] [-D] [-t] [-u] [-m] [-l] [-F]
+        [-i] [-V] [-T] [-r]
+        [-d destination_file]
+        [-o formatname]
+        [-M FormatterClassName]
+        [-w formatteroption:value]
+        [-n nroff-replacement]
+        [-X]
+        [-L language_code]
+        PageName|ModuleName|ProgramName|URL
+
+Examples:
+
+    perldoc -f BuiltinFunction
+
+    perldoc -L it -f BuiltinFunction
+
+    perldoc -q FAQ Keyword
+
+    perldoc -L fr -q FAQ Keyword
+
+    perldoc -v PerlVariable
+
+See below for more description of the switches.
+
+=head1 DESCRIPTION
+
+B<perldoc> looks up a piece of documentation in .pod format that is
+embedded in the perl installation tree or in a perl script, and displays
+it via C<groff -man | $PAGER>. (In addition, if running under HP-UX,
+C<col -x> will be used.) This is primarily used for the documentation for
+the perl library modules.
+
+Your system may also have man pages installed for those modules, in
+which case you can probably just use the man(1) command.
+
+If you are looking for a table of contents to the Perl library modules
+documentation, see the L<perltoc> page.
+
+=head1 OPTIONS
+
+=over 5
+
+=item B<-h>
+
+Prints out a brief B<h>elp message.
+
+=item B<-D>
+
+B<D>escribes search for the item in B<d>etail.
+
+=item B<-t>
+
+Display docs using plain B<t>ext converter, instead of nroff. This may be faster,
+but it probably won't look as nice.
+
+=item B<-u>
+
+Skip the real Pod formatting, and just show the raw Pod source (B<U>nformatted)
+
+=item B<-m> I<module>
+
+Display the entire module: both code and unformatted pod documentation.
+This may be useful if the docs don't explain a function in the detail
+you need, and you'd like to inspect the code directly; perldoc will find
+the file for you and simply hand it off for display.
+
+=item B<-l>
+
+Display onB<l>y the file name of the module found.
+
+=item B<-F>
+
+Consider arguments as file names; no search in directories will be performed.
+
+=item B<-f> I<perlfunc>
+
+The B<-f> option followed by the name of a perl built-in function will
+extract the documentation of this function from L<perlfunc>.
+
+Example:
+
+      perldoc -f sprintf
+
+
+=item B<-q> I<perlfaq-search-regexp>
+
+The B<-q> option takes a regular expression as an argument.  It will search
+the B<q>uestion headings in perlfaq[1-9] and print the entries matching
+the regular expression.
+
+Example:
+
+     perldoc -q shuffle
+
+
+=item B<-v> I<perlvar>
+
+The B<-v> option followed by the name of a Perl predefined variable will
+extract the documentation of this variable from L<perlvar>.
+
+Examples:
+
+     perldoc -v '$"'
+     perldoc -v @+
+     perldoc -v DATA
+
+
+=item B<-T>
+
+This specifies that the output is not to be sent to a pager, but is to
+be sent directly to STDOUT.
+
+=item B<-d> I<destination-filename>
+
+This specifies that the output is to be sent neither to a pager nor
+to STDOUT, but is to be saved to the specified filename.  Example:
+C<perldoc -oLaTeX -dtextwrapdocs.tex Text::Wrap>
+
+=item B<-o> I<output-formatname>
+
+This specifies that you want Perldoc to try using a Pod-formatting
+class for the output format that you specify.  For example:
+C<-oman>.  This is actually just a wrapper around the C<-M> switch;
+using C<-oI<formatname>> just looks for a loadable class by adding
+that format name (with different capitalizations) to the end of
+different classname prefixes.
+
+For example, C<-oLaTeX> currently tries all of the following classes:
+Pod::Perldoc::ToLaTeX Pod::Perldoc::Tolatex Pod::Perldoc::ToLatex
+Pod::Perldoc::ToLATEX Pod::Simple::LaTeX Pod::Simple::latex
+Pod::Simple::Latex Pod::Simple::LATEX Pod::LaTeX Pod::latex Pod::Latex
+Pod::LATEX.
+
+=item B<-M> I<module-name>
+
+This specifies the module that you want to try using for formatting the
+pod.  The class must at least provide a C<parse_from_file> method.
+For example: C<perldoc -MPod::Perldoc::ToChecker>.
+
+You can specify several classes to try by joining them with commas
+or semicolons, as in C<-MTk::SuperPod;Tk::Pod>.
+
+=item B<-w> I<option:value> or B<-w> I<option>
+
+This specifies an option to call the formatter B<w>ith.  For example,
+C<-w textsize:15> will call
+C<< $formatter->textsize(15) >> on the formatter object before it is
+used to format the object.  For this to be valid, the formatter class
+must provide such a method, and the value you pass should be valid.
+(So if C<textsize> expects an integer, and you do C<-w textsize:big>,
+expect trouble.)
+
+You can use C<-w optionname> (without a value) as shorthand for
+C<-w optionname:I<TRUE>>.  This is presumably useful in cases of on/off
+features like: C<-w page_numbering>.
+
+You can use an "=" instead of the ":", as in: C<-w textsize=15>.  This
+might be more (or less) convenient, depending on what shell you use.
+
+=item B<-X>
+
+Use an index if it is present. The B<-X> option looks for an entry
+whose basename matches the name given on the command line in the file
+C<$Config{archlib}/pod.idx>. The F<pod.idx> file should contain fully
+qualified filenames, one per line.
+
+=item B<-L> I<language_code>
+
+This allows one to specify the I<language code> for the desired language
+translation. If the C<POD2::E<lt>language_codeE<gt>> package isn't
+installed in your system, the switch is ignored.
+All available translation packages are to be found under the C<POD2::>
+namespace. See L<POD2::IT> (or L<POD2::FR>) to see how to create new
+localized C<POD2::*> documentation packages and integrate them into
+L<Pod::Perldoc>.
+
+=item B<PageName|ModuleName|ProgramName|URL>
+
+The item you want to look up.  Nested modules (such as C<File::Basename>)
+are specified either as C<File::Basename> or C<< File/Basename >>.  You may also
+give a descriptive name of a page, such as C<perlfunc>.  For URLs, HTTP and
+HTTPS are the only kind currently supported.
+
+For simple names like 'foo', when the normal search fails to find
+a matching page, a search with the "perl" prefix is tried as well.
+So "perldoc intro" is enough to find/render "perlintro.pod".
+
+=item B<-n> I<some-formatter>
+
+Specify replacement for groff
+
+=item B<-r>
+
+Recursive search.
+
+=item B<-i>
+
+Ignore case.
+
+=item B<-V>
+
+Displays the version of perldoc you're running.
+
+=back
+
+=head1 SECURITY
+
+Because B<perldoc> does not run properly tainted, and is known to
+have security issues, when run as the superuser it will attempt to
+drop privileges by setting the effective and real IDs to nobody's
+or nouser's account, or -2 if unavailable.  If it cannot relinquish
+its privileges, it will not run.
+
+=head1 ENVIRONMENT
+
+Any switches in the C<PERLDOC> environment variable will be used before the
+command line arguments.
+
+Useful values for C<PERLDOC> include C<-oterm>, C<-otext>, C<-ortf>,
+C<-oxml>, and so on, depending on what modules you have on hand; or
+the formatter class may be specified exactly with C<-MPod::Perldoc::ToTerm>
+or the like.
+
+C<perldoc> also searches directories
+specified by the C<PERL5LIB> (or C<PERLLIB> if C<PERL5LIB> is not
+defined) and C<PATH> environment variables.
+(The latter is so that embedded pods for executables, such as
+C<perldoc> itself, are available.)
+
+In directories where either C<Makefile.PL> or C<Build.PL> exist, C<perldoc>
+will add C<.> and C<lib> first to its search path, and as long as you're not
+the superuser will add C<blib> too.  This is really helpful if you're working
+inside of a build directory and want to read through the docs even if you
+have a version of a module previously installed.
+
+C<perldoc> will use, in order of preference, the pager defined in
+C<PERLDOC_PAGER>, C<MANPAGER>, or C<PAGER> before trying to find a pager
+on its own. (C<MANPAGER> is not used if C<perldoc> was told to display
+plain text or unformatted pod.)
+
+One useful value for C<PERLDOC_PAGER> is C<less -+C -E>.
+
+Having PERLDOCDEBUG set to a positive integer will make perldoc emit
+even more descriptive output than the C<-D> switch does; the higher the
+number, the more it emits.
+
+
+=head1 CHANGES
+
+Up to 3.14_05, the switch B<-v> was used to produce verbose
+messages of B<perldoc> operation, which is now enabled by B<-D>.
+
+=head1 SEE ALSO
+
+L<perlpod>, L<Pod::Perldoc>
+
+=head1 AUTHOR
+
+Current maintainer: Mark Allen C<< <mallen at cpan.org> >>
+
+Past contributors are:
+brian d foy C<< <bdfoy at cpan.org> >> 
+Adriano R. Ferreira C<< <ferreira at cpan.org> >>,
+Sean M. Burke C<< <sburke at cpan.org> >>,
+Kenneth Albanowski C<< <kjahds at kjahds.com> >>,
+Andy Dougherty  C<< <doughera at lafcol.lafayette.edu> >>,
+and many others.
+
+=cut

Added: vendor/perl/dist/cpan/Pod-Perldoc/t/load.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/t/load.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/t/load.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+my @classes = ('Pod::Perldoc', map { "Pod::Perldoc::$_" } qw(
+    BaseTo       ToChecker    ToNroff      ToRtf        
+    GetOptsOO    ToMan        ToPod        ToText       ToXml
+    ToANSI       ToTerm
+) );
+
+if( eval { require Tk; require Tk::Pod; 1 } ) { push @classes, 'Pod::Perldoc::ToTk' }
+else {
+	note "Skip testing Pod::Perldoc::ToTk because there's no Tk";
+	}
+
+plan tests => scalar @classes;
+
+foreach my $class ( @classes ) {
+	require_ok( $class );
+	my $version = do { no strict 'refs'; ${ '$' . $class . '::VERSION' } };
+	note( "$class $version" ) if defined $version
+	}

Added: vendor/perl/dist/cpan/Pod-Perldoc/t/man/_get_columns.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/t/man/_get_columns.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/t/man/_get_columns.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,68 @@
+use Test::More;
+use strict;
+use warnings;
+
+{
+package Local::ToMan;
+use base 'Pod::Perldoc::ToMan';
+use vars qw( $stty_text $is_linux $warning );
+no warnings 'redefine';
+no strict 'refs';
+sub _get_stty { $stty_text }
+sub is_linux { $is_linux }
+sub warn { shift; $warning = join '', @_ }
+}
+
+BEGIN {
+our @columns = qw( EXPECTED IS_LINUX MANWIDTH MANWIDTH_EXPECTED STTY STTY_EXPECTED );
+foreach my $i ( 0 .. $#columns ) {
+	no strict 'refs';
+	*{"$columns[$i]"} = sub () { $i };
+	}
+}
+
+my @tests = (
+    # for linux, choose between manwidth and stty
+	[ 62, 1, undef,  0, "; 62 columns;", 62 ],
+	[ 63, 1, undef,  0, "columns 63",    63 ],	
+	[ 57, 1, 57,    57, "columns 63",    63 ],
+	[ 73, 1, undef,  0, " ",              0 ],
+
+    # for not linux, the same
+	[ 62, 0, undef,  0, "; 62 columns;", 62 ],
+	[ 63, 0, undef,  0, "columns 63",    63 ],	
+	[ 57, 0, 57,    57, "columns 63",    63 ],
+	[ 73, 0, undef,  0, " ",              0 ],
+
+	# bad manwidths	
+	[ 62, 1, -1,     0, "; 62 columns;", 62 ],
+	[ 63, 1, 'abc',  0, "columns 63",    63 ],	
+	[ 64, 1, '',     0, "columns 64",    64 ],
+	[ 73, 1, undef,  0, " ",              0 ],
+	);
+
+plan tests => 3 * @tests;
+
+
+foreach my $test ( @tests ) {
+	local $ENV{MANWIDTH}               = $test->[MANWIDTH];
+	local $Local::ToMan::stty_text     = $test->[STTY];
+	local $Local::ToMan::is_linux      = $test->[IS_LINUX];
+
+	{
+	no warnings 'uninitialized';
+	diag( sprintf 
+		"MANWIDTH: %s STTY: %s LINUX: %s",
+		defined $ENV{MANWIDTH} ? $ENV{MANWIDTH} : "(undef)",
+		$Local::ToMan::stty_text,
+		$Local::ToMan::is_linux,
+		) if $ENV{PERLDOCDEBUG};
+	}
+
+	is( Local::ToMan->_get_columns_from_manwidth(), $test->[MANWIDTH_EXPECTED],
+		"_get_columns_from_manwidth returns the right number" );
+	is( Local::ToMan->_get_columns_from_stty(),     $test->[STTY_EXPECTED],
+	    "_get_columns_from_stty returns the right number" );
+	is( Local::ToMan->_get_columns,                 $test->[EXPECTED],
+	    "_get_columns returns the right number" );
+	}

Added: vendor/perl/dist/cpan/Pod-Perldoc/t/pod.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Perldoc/t/pod.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Perldoc/t/pod.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+use strict;
+use warnings;
+use Test::More;
+
+unless ( $ENV{RELEASE_TESTING} ) {
+    plan skip_all => 'Pod tests not required for installation.';
+}
+
+eval "use Test::Pod 1.22";
+plan skip_all => 'Test::Pod 1.22 or higher not installed.' if $@;
+all_pod_files_ok();

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.txt
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+
+=head1 NAME
+
+Encoding Warning 1 - implicitly Latin-1
+
+=head2 DESCRIPTION
+
+This line should warn that the word caf\xE9 contains a non-ASCII character.
+
+But ch\xE2teau should not generate a warning - once is enough.
+

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.xml
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.xml	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn01.xml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+<Document start_line="2">
+  <head1 start_line="2">
+    NAME
+  </head1>
+  <Para start_line="4">
+    Encoding Warning 1 - implicitly Latin-1
+  </Para>
+  <head2 start_line="6">
+    DESCRIPTION
+  </head2>
+  <Para start_line="8">
+    This line should warn that the word café contains a non-ASCII
+    character.
+  </Para>
+  <Para start_line="10">
+    But château should not generate a warning - once is enough.
+  </Para>
+  <head1 errata="1" start_line="-321">
+    POD ERRORS
+  </head1>
+  <Para errata="1" start_line="-321">
+    Hey! 
+    <B>
+      The above document had some coding errors, which are explained below:
+    </B>
+  </Para>
+  <over-text errata="1" indent="4" start_line="-321">
+    <item-text start_line="-321">
+      Around line 8:
+    </item-text>
+    <Para start_line="-321">
+      Non-ASCII character seen before =encoding in 'café'. Assuming
+      ISO8859-1
+    </Para>
+  </over-text>
+</Document>

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.txt
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+
+=head1 NAME
+
+Encoding Warning 1 - implicitly UTF-8
+
+=head2 DESCRIPTION
+
+This line should warn that the price €9.99 contains a non-ASCII character.
+
+But château should not generate a warning - once is enough.
+

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.xml
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.xml	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn02.xml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+<Document start_line="2">
+  <head1 start_line="2">
+    NAME
+  </head1>
+  <Para start_line="4">
+    Encoding Warning 1 - implicitly UTF-8
+  </Para>
+  <head2 start_line="6">
+    DESCRIPTION
+  </head2>
+  <Para start_line="8">
+    This line should warn that the price €9.99 contains a non-ASCII
+    character.
+  </Para>
+  <Para start_line="10">
+    But château should not generate a warning - once is enough.
+  </Para>
+  <head1 errata="1" start_line="-321">
+    POD ERRORS
+  </head1>
+  <Para errata="1" start_line="-321">
+    Hey! 
+    <B>
+      The above document had some coding errors, which are explained below:
+    </B>
+  </Para>
+  <over-text errata="1" indent="4" start_line="-321">
+    <item-text start_line="-321">
+      Around line 8:
+    </item-text>
+    <Para start_line="-321">
+      Non-ASCII character seen before =encoding in '€9.99'.
+      Assuming UTF-8
+    </Para>
+  </over-text>
+</Document>

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.txt
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
+package MyPackage;
+
+use strict;
+
+# Comment here contains āccénted characters but should not generate any
+# parse warning since they do not occur in a POD section
+
+sub main {
+    print "This file contains no POD\n";
+}
+
+1;

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.xml
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.xml	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn03.xml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+<Document contentless="1" start_line="12">
+</Document>

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.txt
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.txt	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.txt	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+package MyPackage;
+
+use strict;
+
+# Checking encoding warning is generated even on first line of POD
+
+sub main {
+    print "This file contains no POD\n";
+}
+
+1;
+
+=head1 TŨTORIAL
+
+The encoding warning should only fire when the parser is 'in_pod' but that
+should also be true on the first line of POD (above).
+

Added: vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.xml
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.xml	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/corpus/encwarn04.xml	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+<Document start_line="13">
+  <head1 start_line="13">
+    TŨTORIAL
+  </head1>
+  <Para start_line="15">
+    The encoding warning should only fire when the parser is 'in_pod'
+    but that should also be true on the first line of POD (above).
+  </Para>
+  <head1 errata="1" start_line="-321">
+    POD ERRORS
+  </head1>
+  <Para errata="1" start_line="-321">
+    Hey! 
+    <B>
+      The above document had some coding errors, which are explained below:
+    </B>
+  </Para>
+  <over-text errata="1" indent="4" start_line="-321">
+    <item-text start_line="-321">
+      Around line 13:
+    </item-text>
+    <Para start_line="-321">
+      Non-ASCII character seen before =encoding in 'TŨTORIAL'.
+      Assuming UTF-8
+    </Para>
+  </over-text>
+</Document>

Added: vendor/perl/dist/cpan/Pod-Simple/t/emptylists.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/emptylists.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/emptylists.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+BEGIN {
+    if($ENV{PERL_CORE}) {
+        chdir 't';
+        @INC = '../lib';
+    }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 5 };
+
+ok 1;
+
+use Pod::Simple::XMLOutStream;
+print "# Pod::Simple version $Pod::Simple::VERSION\n";
+
+my $x = 'Pod::Simple::XMLOutStream';
+$Pod::Simple::XMLOutStream::ATTR_PAD   = ' ';
+$Pod::Simple::XMLOutStream::SORT_ATTRS = 1; # for predictably testable output
+
+sub on {shift->parse_empty_lists(1)}
+sub off {shift->parse_empty_lists(0)}
+
+my $pod = <<POD;
+=over
+
+=over
+
+=over
+
+=over
+
+=back
+
+=over
+
+=back
+
+=back
+
+=back
+
+=back
+POD
+
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+print "# Testing default behavior (parse_empty_lists( FALSE )) ...\n";
+
+ok( $x->_out($pod),
+  '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"></over-block></over-block></over-block></Document>'
+);
+
+print "# Testing explicit parse_empty_lists( FALSE ) ...\n";
+
+ok( $x->_out(\&off, $pod),
+  '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"></over-block></over-block></over-block></Document>'
+);
+
+print "# Testing parse_empty_lists( TRUE ) ...\n";
+
+ok( $x->_out(\&on, $pod),
+  '<Document><over-block indent="4"><over-block indent="4"><over-block indent="4"><over-empty indent="4"></over-empty><over-empty indent="4"></over-empty></over-block></over-block></over-block></Document>'
+);
+
+print "# Wrapping up... one for the road...\n";
+ok 1;
+print "# --- Done with ", __FILE__, " --- \n";
+

Added: vendor/perl/dist/cpan/Pod-Simple/t/enc-chars.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/enc-chars.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/enc-chars.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,61 @@
+# tell parser the source POD has already been decoded from bytes to chars
+# =encoding line should be ignored
+# utf8 characters should come through unscathed
+
+BEGIN {
+    if($ENV{PERL_CORE}) {
+        chdir 't';
+        @INC = '../lib';
+    }
+
+    use Config;
+    if ($Config::Config{'extensions'} !~ /\bEncode\b/) {
+      print "1..0 # Skip: Encode was not built\n";
+      exit 0;
+    }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 3 };
+
+use Pod::Simple::DumpAsXML;
+use Pod::Simple::XMLOutStream;
+
+
+my $parser = Pod::Simple::XMLOutStream->new;
+$parser->parse_characters(1);
+my $output = '';
+$parser->output_string( \$output );
+$parser->parse_string_document(qq{
+
+=encoding bogocode
+
+=head1 DESCRIPTION
+
+Confirm that if we tell the parser to expect character data, it avoids all
+the code paths that might attempt to decode the source from bytes to chars.
+
+The r\x{101}in in \x{15E}pain \x{FB02}oods the plain
+
+});
+
+ok(1); # parsed without exception
+
+if($output =~ /POD ERRORS/) {
+  ok(0);
+}
+else {
+  ok(1); # no errors
+}
+
+$output =~ s{&#(\d+);}{chr($1)}eg;
+
+if($output =~ /The r\x{101}in in \x{15E}pain \x{FB02}oods the plain/) {
+  ok(1); # data was not messed up
+}
+else {
+  ok(0);
+}
+
+exit;

Added: vendor/perl/dist/cpan/Pod-Simple/t/encod04.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/encod04.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/encod04.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,143 @@
+# The encoding detection heuristic will choose UTF8 or Latin-1.  The current
+# implementation will usually treat CP1252 (aka "Win-Latin-1") as Latin-1 but
+# can be fooled into seeing it as UTF8.
+#
+# Note 1: Neither guess is 'correct' since even if we choose Latin-1, all the
+#         smart quote symbols will be rendered as control characters
+#
+# Note 2: the guess is only applied if the source POD omits =encoding, so
+#         CP1252 source will render correctly if properly declared
+#
+
+BEGIN {
+    if($ENV{PERL_CORE}) {
+        chdir 't';
+        @INC = '../lib';
+    }
+}
+
+use strict;
+use Test;
+BEGIN { plan tests => 5 };
+
+ok 1;
+
+use Pod::Simple::DumpAsXML;
+use Pod::Simple::XMLOutStream;
+
+
+# Initial, isolated, non-ASCII byte triggers Latin-1 guess and later
+# multi-byte sequence is not considered by heuristic.
+
+my @output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Em::Dash \x97 \x91CAF\xC9\x92
+
+=cut
+
+} );
+
+my($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+  if( $guess eq 'ISO8859-1' ) {
+    if( grep m{Dash (\x97|&#x97;|—)}, @output_lines ) {
+      ok 1;
+    } else {
+      ok 0;
+      print "# failed to find expected control character in output\n"
+    }
+  } else {
+    ok 0;
+    print "# parser guessed wrong encoding expected 'ISO8859-1' got '$guess'\n";
+  }
+} else {
+  ok 0;
+  print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# Initial smart-quote character triggers Latin-1 guess as expected
+
+ at output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Quote - \x91FUT\xC9\x92
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+  if( $guess eq 'ISO8859-1' ) {
+    ok 1;
+  } else {
+    ok 0;
+    print "# parser guessed wrong encoding expected 'ISO8859-1' got '$guess'\n";
+  }
+} else {
+  ok 0;
+  print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# Initial accented character followed by 'smart' apostrophe causes heuristic
+# to choose UTF8 (a rather contrived example)
+
+ at output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Apostrophe::Fail - L\xC9\x92STRANGE
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+  if( $guess eq 'UTF-8' ) {
+    ok 1;
+  } else {
+    ok 0;
+    print "# parser guessed wrong encoding expected 'UTF-8' got '$guess'\n";
+  }
+} else {
+  ok 0;
+  print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+# The previous example used a CP1252 byte sequence that also happened to be a
+# valid UTF8 byte sequence.  In this example the heuristic also guesses 'wrong'
+# despite the byte sequence not being valid UTF8 (it's too short).  This could
+# arguably be 'fixed' by using a less naive regex.
+
+ at output_lines = split m/[\cm\cj]+/, Pod::Simple::XMLOutStream->_out( qq{
+
+=head1 NAME
+
+Smart::Apostrophe::Fail - L\xE9\x92Strange
+
+=cut
+
+} );
+
+($guess) = "@output_lines" =~ m{Non-ASCII.*?Assuming ([\w-]+)};
+if( $guess ) {
+  if( $guess eq 'UTF-8' ) {
+    ok 1;
+  } else {
+    ok 0;
+    print "# parser guessed wrong encoding expected 'UTF-8' got '$guess'\n";
+  }
+} else {
+  ok 0;
+  print "# parser failed to detect non-ASCII bytes in input\n";
+}
+
+
+exit;

Added: vendor/perl/dist/cpan/Pod-Simple/t/eol.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/eol.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/eol.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,107 @@
+#!/usr/bin/perl
+
+# t/eol.t - check handling of \r, \n, and \r\n as line separators
+
+BEGIN {
+    chdir 't' if -d 't';
+}
+
+use warnings;
+use strict;
+use lib '../lib';
+use Test::More tests => 7;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+open(POD, ">$$.pod") or die "$$.pod: $!";
+print POD <<__EOF__;
+=pod
+
+=head1 NAME
+
+crlf
+
+=head1 DESCRIPTION
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+=cut
+__EOF__
+close(POD);
+
+# --- CR ---
+
+my $p1 = Pod::Simple::XHTML->new ();
+isa_ok ($p1, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN,  ">$$.in")  or die "$$.in: $!";
+while (<POD>) {
+  s/[\r\n]+/\r/g;
+  print IN $_;
+}
+close(POD);
+close(IN);
+
+$p1->output_string(\my $o1);
+$p1->parse_file("$$.in");
+
+# --- LF ---
+
+my $p2 = Pod::Simple::XHTML->new ();
+isa_ok ($p2, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN,  ">$$.in")  or die "$$.in: $!";
+while (<POD>) {
+  s/[\r\n]+/\n/g;
+  print IN $_;
+}
+close(POD);
+close(IN);
+
+$p2->output_string(\my $o2);
+$p2->parse_file("$$.in");
+
+# --- CRLF ---
+
+my $p3 = Pod::Simple::XHTML->new ();
+isa_ok ($p3, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+open(IN,  ">$$.in")  or die "$$.in: $!";
+while (<POD>) {
+  s/[\r\n]+/\r\n/g;
+  print IN $_;
+}
+close(POD);
+close(IN);
+
+$p3->output_string(\my $o3);
+$p3->parse_file("$$.in");
+
+# --- now test ---
+
+my $cksum1 = unpack("%32C*", $o1);
+my $cksum2 = unpack("%32C*", $o2);
+my $cksum3 = unpack("%32C*", $o3);
+
+ok($cksum1 == $cksum2, "CR vs LF");
+ok($cksum1 == $cksum3, "CR vs CRLF");
+ok($cksum2 == $cksum3, "LF vs CRLF");
+
+END {
+  1 while unlink("$$.pod", "$$.in");
+}

Added: vendor/perl/dist/cpan/Pod-Simple/t/eol2.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/eol2.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/eol2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,104 @@
+#!/usr/bin/perl
+
+# t/eol2.t - check handling of \r, \n, and \r\n as line separators (again)
+
+BEGIN {
+    chdir 't' if -d 't';
+}
+
+use warnings;
+use strict;
+use lib '../lib';
+use Test::More tests => 7;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+open(POD, ">$$.pod") or die "$$.pod: $!";
+print POD <<__EOF__;
+=pod
+
+=head1 NAME
+
+crlf
+
+=head1 DESCRIPTION
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+=cut
+__EOF__
+close(POD);
+
+# --- CR ---
+
+my $p1 = Pod::Simple::XHTML->new ();
+isa_ok ($p1, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i1 = '';
+while (<POD>) {
+  s/[\r\n]+/\r/g;
+  $i1 .= $_;
+}
+close(POD);
+
+$p1->output_string(\my $o1);
+$p1->parse_string_document($i1);
+
+# --- LF ---
+
+my $p2 = Pod::Simple::XHTML->new ();
+isa_ok ($p2, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i2 = '';
+while (<POD>) {
+  s/[\r\n]+/\n/g;
+  $i2 .= $_;
+}
+close(POD);
+
+$p2->output_string(\my $o2);
+$p2->parse_string_document($i2);
+
+# --- CRLF ---
+
+my $p3 = Pod::Simple::XHTML->new ();
+isa_ok ($p3, 'Pod::Simple::XHTML');
+
+open(POD, "<$$.pod") or die "$$.pod: $!";
+my $i3 = '';
+while (<POD>) {
+  s/[\r\n]+/\r\n/g;
+  $i3 .= $_;
+}
+close(POD);
+
+$p3->output_string(\my $o3);
+$p3->parse_string_document($i3);
+
+# --- now test ---
+
+my $cksum1 = unpack("%32C*", $o1);
+my $cksum2 = unpack("%32C*", $o2);
+my $cksum3 = unpack("%32C*", $o3);
+
+ok($cksum1 == $cksum2, "CR vs LF");
+ok($cksum1 == $cksum3, "CR vs CRLF");
+ok($cksum2 == $cksum3, "LF vs CRLF");
+
+END {
+  1 while unlink("$$.pod", "$$.in");
+}

Added: vendor/perl/dist/cpan/Pod-Simple/t/fake-closers.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/fake-closers.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/fake-closers.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,71 @@
+BEGIN {
+    if($ENV{PERL_CORE}) {
+        chdir 't';
+        @INC = '../lib';
+    }
+}
+
+use strict;
+use Test::More;
+use Data::Dumper;
+BEGIN { plan tests => 9 };
+
+ok 1;
+
+my $i = 0;
+
+print "# Real closers ...\n";
+
+for my $pod ( "=over\n\nblock\n\n=back",
+              "=over\n\nblock\n\n=cut\n\ncode\n\n=pod\n\n=back",
+              "=begin html\n\ntag\n\n=end html",
+              ) {
+    my $parser = Pod::Simple::Blurb->new();
+    $parser->parse_string_document($pod);
+    is($parser->{'closer-flag'}, -1, "real closer ". ++$i);
+}
+
+$i = 0;
+
+print "# Fake closers ...\n";
+
+for my $pod ("=begin html\n\ntag=cut",
+             "=begin html\n\ntag\n\n=begin xml tag =end xml",
+             "=over\n\nblock=cut",
+             "=over\n\nanother block",
+              ) {
+    my $parser = Pod::Simple::Blurb->new();
+    $parser->parse_string_document($pod);
+    is($parser->{'closer-flag'}, 1, "fake closer ". ++$i);
+}
+
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+print "# Wrapping up... one for the road...\n";
+ok 1;
+print "# --- Done with ", __FILE__, " --- \n";
+
+1;
+
+package Pod::Simple::Blurb;
+use warnings;
+use strict;
+use base qw/Pod::Simple::Methody/;
+
+sub new {
+    my $new = shift->SUPER::new(@_);
+    $new->output_string(\my $doesnotmatter);
+    $new->accept_targets('*');
+    return $new;
+}
+
+sub end_over_block {
+    shift->set(@_);
+}
+sub end_for {
+    shift->set(@_);
+}
+
+sub set {
+    $_[0]{'closer-flag'} = defined $_[1]{'fake-closer'} ? 1 : -1;
+}

Added: vendor/perl/dist/cpan/Pod-Simple/t/whine.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/whine.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/whine.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+use strict;
+use warnings;
+use Test::More tests => 4;
+
+{
+  package Pod::Simple::ErrorFinder;
+  use base 'Pod::Simple::DumpAsXML'; # arbitrary choice -- rjbs, 2013-04-16
+
+  my @errors;
+  sub whine {
+    my ($self, @rest) = @_;
+    push @errors, [ @rest ];
+    $self->SUPER::whine(@rest);
+  }
+
+  sub scream {
+    my ($self, @rest) = @_;
+    push @errors, [ @rest ];
+    $self->SUPER::scream(@rest);
+  }
+
+  sub errors_for_input {
+    my ($class, $input, $mutor) = @_;
+    @errors = ();
+
+    my $parser = $class->new;
+    my $output = '';
+    $parser->output_string( \$output );
+    $parser->parse_string_document( $input );
+
+    @errors = sort { $a->[0] <=> $b->[0]
+                  || $a->[1] cmp $b->[1] } @errors;
+
+    return @errors;
+  }
+}
+
+sub errors { Pod::Simple::ErrorFinder->errors_for_input(@_) }
+
+{
+  my @errors = errors("=over 4\n\n=item 1\n\nHey\n\n");
+  is_deeply(
+    \@errors,
+    [ [ 1, "=over without closing =back" ] ],
+    "no closing =back",
+  );
+}
+
+{
+  for my $l_code ('L< foo>', 'L< bar>') {
+    my $input = "=pod\n\nAmbiguous space: $l_code\n";
+    my @errors = errors("$input");
+    is_deeply(
+      \@errors,
+      [ [ 3, "L<> starts or ends with whitespace" ] ],
+      "warning for space in $l_code",
+    );
+  }
+}
+
+{
+  my $input = "=pod\n\nAmbiguous slash: L<I/O Operators|op/io>\n";
+  my @errors = errors("$input");
+  is_deeply(
+    \@errors,
+    [ [ 3, "alternative text 'I/O Operators' contains non-escaped | or /" ] ],
+    "warning for / in text part of L<>",
+  );
+}

Added: vendor/perl/dist/cpan/Pod-Simple/t/xhtml-bkb.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/xhtml-bkb.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/xhtml-bkb.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+
+# t/xhtml-bkb.t - https://rt.cpan.org/Public/Bug/Display.html?id=77686
+
+use strict;
+use warnings;
+use Test::More tests => 1;
+use Pod::Simple::XHTML;
+my $c = <<EOF;
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perldata>
+EOF
+my $d = Pod::Simple::XHTML->new ();
+$d->index (1);
+my $e;
+$d->output_string (\$e);
+$d->parse_string_document ($c);
+unlike ($e, qr!<a[^>]+><a[^>]+>!);

Added: vendor/perl/dist/cpan/Pod-Simple/t/xhtml15.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/xhtml15.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/xhtml15.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+
+# t/xhtml15.t - test compatibility between Pod::Simple::XHTML and
+# Pod::Simple::HtmlBatch
+
+use strict;
+use warnings;
+use Test::More tests => 4;
+
+use_ok('Pod::Simple::XHTML') or exit;
+
+my ($parser, $results);
+
+initialize();
+my $style = 'http://amazingpants.com/style.css';
+$parser->html_css($style);
+$parser->parse_string_document( '=head1 Foo' );
+like $results, qr/ href="$style" /, 'CSS is correct when link is passed in';
+
+initialize();
+my $link = qq{<link rel="stylesheet" href="$style" type="text/css">};
+$parser->html_css($link);
+$parser->parse_string_document( '=head1 Foo' );
+like $results, qr/ href="$style" /, 'CSS is correct when <link> is passed in';
+
+#note('These methods are called when XHTML is used by HtmlBatch');
+can_ok $parser, qw/batch_mode_page_object_init html_header_after_title/;
+
+sub initialize {
+    $parser = Pod::Simple::XHTML->new;
+    $parser->index(1);
+    $parser->output_string( \$results );
+    $results = '';
+}

Added: vendor/perl/dist/cpan/Pod-Simple/t/xhtml20.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Simple/t/xhtml20.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Simple/t/xhtml20.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+#!/usr/bin/perl -w
+
+# t/xhtml20.t - test subclassing of Pod::Simple::XHTML
+
+use strict;
+use warnings;
+use Test::More tests => 1;
+
+BEGIN {
+    package MyXHTML;
+    use base 'Pod::Simple::XHTML';
+
+    sub handle_code {
+	my($self, $code, $kind) = @_;
+	$code = $kind . "[$code]";
+	$self->SUPER::handle_code($code);
+    }
+
+    sub start_code {
+	my($self, $kind) = @_;
+	$self->{scratch} .= "<code class=\"$kind\">";
+    }
+
+    sub end_code {
+	my($self, $kind) = @_;
+	$self->{scratch} .= "</code><!-- $kind -->";
+    }
+}
+
+
+
+my ($parser, $results);
+
+initialize();
+$parser->parse_string_document(<<'EOT');
+=head1 Foo
+
+This is C<$code> and so is:
+
+  my $foo = 1;
+
+Code might even be C<<< nested( B<< C<1> >> ) >>>.
+EOT
+
+is($results, <<'EOT');
+<h1 id="Foo">Foo</h1>
+
+<p>This is <code class="C">C[$code]</code><!-- C --> and so is:</p>
+
+<pre><code class="Verbatim">Verbatim[  my $foo = 1;]</code><!-- Verbatim --></pre>
+
+<p>Code might even be <code class="C">C[nested( ]<b><code class="C">C[1]</code><!-- C --></b>C[ )]</code><!-- C -->.</p>
+
+EOT
+
+
+sub initialize {
+    $parser = MyXHTML->new;
+    $parser->html_header('');
+    $parser->html_footer('');
+    $parser->output_string( \$results );
+    $results = '';
+}

Added: vendor/perl/dist/cpan/Pod-Usage/lib/Pod/Usage.pm
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/lib/Pod/Usage.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/lib/Pod/Usage.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,767 @@
+#############################################################################
+# Pod/Usage.pm -- print usage messages for the running script.
+#
+# Copyright (C) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+package Pod::Usage;
+use strict;
+
+use vars qw($VERSION @ISA @EXPORT);
+$VERSION = '1.61';  ## Current version of this package
+require  5.005;    ## requires this Perl version or later
+
+#use diagnostics;
+use Carp;
+use Config;
+use Exporter;
+use File::Spec;
+
+ at EXPORT = qw(&pod2usage);
+BEGIN {
+    $Pod::Usage::Formatter ||=
+      ( $] >= 5.005_58 ? 'Pod::Text' : 'Pod::PlainText');
+    eval "require $Pod::Usage::Formatter";
+    die $@ if $@;
+    @ISA = ( $Pod::Usage::Formatter );
+}
+
+require Pod::Select;
+
+##---------------------------------------------------------------------------
+
+##---------------------------------
+## Function definitions begin here
+##---------------------------------
+
+sub pod2usage {
+    local($_) = shift;
+    my %opts;
+    ## Collect arguments
+    if (@_ > 0) {
+        ## Too many arguments - assume that this is a hash and
+        ## the user forgot to pass a reference to it.
+        %opts = ($_, @_);
+    }
+    elsif (!defined $_) {
+      $_ = '';
+    }
+    elsif (ref $_) {
+        ## User passed a ref to a hash
+        %opts = %{$_}  if (ref($_) eq 'HASH');
+    }
+    elsif (/^[-+]?\d+$/) {
+        ## User passed in the exit value to use
+        $opts{'-exitval'} =  $_;
+    }
+    else {
+        ## User passed in a message to print before issuing usage.
+        $_  and  $opts{'-message'} = $_;
+    }
+
+    ## Need this for backward compatibility since we formerly used
+    ## options that were all uppercase words rather than ones that
+    ## looked like Unix command-line options.
+    ## to be uppercase keywords)
+    %opts = map {
+        my ($key, $val) = ($_, $opts{$_});
+        $key =~ s/^(?=\w)/-/;
+        $key =~ /^-msg/i   and  $key = '-message';
+        $key =~ /^-exit/i  and  $key = '-exitval';
+        lc($key) => $val;
+    } (keys %opts);
+
+    ## Now determine default -exitval and -verbose values to use
+    if ((! defined $opts{'-exitval'}) && (! defined $opts{'-verbose'})) {
+        $opts{'-exitval'} = 2;
+        $opts{'-verbose'} = 0;
+    }
+    elsif (! defined $opts{'-exitval'}) {
+        $opts{'-exitval'} = ($opts{'-verbose'} > 0) ? 1 : 2;
+    }
+    elsif (! defined $opts{'-verbose'}) {
+        $opts{'-verbose'} = (lc($opts{'-exitval'}) eq 'noexit' ||
+                             $opts{'-exitval'} < 2);
+    }
+
+    ## Default the output file
+    $opts{'-output'} = (lc($opts{'-exitval'}) eq 'noexit' ||
+                        $opts{'-exitval'} < 2) ? \*STDOUT : \*STDERR
+            unless (defined $opts{'-output'});
+    ## Default the input file
+    $opts{'-input'} = $0  unless (defined $opts{'-input'});
+
+    ## Look up input file in path if it doesnt exist.
+    unless ((ref $opts{'-input'}) || (-e $opts{'-input'})) {
+        my $basename = $opts{'-input'};
+        my $pathsep = ($^O =~ /^(?:dos|os2|MSWin32)$/i) ? ';'
+                            : (($^O eq 'MacOS' || $^O eq 'VMS') ? ',' :  ':');
+        my $pathspec = $opts{'-pathlist'} || $ENV{PATH} || $ENV{PERL5LIB};
+
+        my @paths = (ref $pathspec) ? @$pathspec : split($pathsep, $pathspec);
+        for my $dirname (@paths) {
+            $_ = File::Spec->catfile($dirname, $basename)  if length;
+            last if (-e $_) && ($opts{'-input'} = $_);
+        }
+    }
+
+    ## Now create a pod reader and constrain it to the desired sections.
+    my $parser = new Pod::Usage(USAGE_OPTIONS => \%opts);
+    if ($opts{'-verbose'} == 0) {
+        $parser->select('(?:SYNOPSIS|USAGE)\s*');
+    }
+    elsif ($opts{'-verbose'} == 1) {
+        my $opt_re = '(?i)' .
+                     '(?:OPTIONS|ARGUMENTS)' .
+                     '(?:\s*(?:AND|\/)\s*(?:OPTIONS|ARGUMENTS))?';
+        $parser->select( '(?:SYNOPSIS|USAGE)\s*', $opt_re, "DESCRIPTION/$opt_re" );
+    }
+    elsif ($opts{'-verbose'} >= 2 && $opts{'-verbose'} != 99) {
+        $parser->select('.*');
+    }
+    elsif ($opts{'-verbose'} == 99) {
+        my $sections = $opts{'-sections'};
+        $parser->select( (ref $sections) ? @$sections : $sections );
+        $opts{'-verbose'} = 1;
+    }
+
+    ## Check for perldoc
+    my $progpath = File::Spec->catfile($Config{scriptdirexp} 
+	|| $Config{scriptdir}, 'perldoc');
+
+    my $version = sprintf("%vd",$^V);
+    if ($Config{versiononly} and $Config{startperl} =~ /\Q$version\E$/ ) {
+      $progpath .= $version;
+    }
+    $opts{'-noperldoc'} = 1 unless -e $progpath;
+
+    ## Now translate the pod document and then exit with the desired status
+    if (      !$opts{'-noperldoc'}
+         and  $opts{'-verbose'} >= 2
+         and  !ref($opts{'-input'})
+         and  $opts{'-output'} == \*STDOUT )
+    {
+       ## spit out the entire PODs. Might as well invoke perldoc
+       print { $opts{'-output'} } ($opts{'-message'}, "\n") if($opts{'-message'});
+       if(defined $opts{-input} && $opts{-input} =~ /^\s*(\S.*?)\s*$/) {
+         # the perldocs back to 5.005 should all have -F
+	 # without -F there are warnings in -T scripts
+         system($progpath, '-F', $1);
+         if($?) {
+           # RT16091: fall back to more if perldoc failed
+           system(($Config{pager} || $ENV{PAGER} || '/bin/more'), $1);
+         }
+       } else {
+         croak "Unspecified input file or insecure argument.\n";
+       }
+    }
+    else {
+       $parser->parse_from_file($opts{'-input'}, $opts{'-output'});
+    }
+
+    exit($opts{'-exitval'})  unless (lc($opts{'-exitval'}) eq 'noexit');
+}
+
+##---------------------------------------------------------------------------
+
+##-------------------------------
+## Method definitions begin here
+##-------------------------------
+
+sub new {
+    my $this = shift;
+    my $class = ref($this) || $this;
+    my %params = @_;
+    my $self = {%params};
+    bless $self, $class;
+    if ($self->can('initialize')) {
+        $self->initialize();
+    } else {
+        # pass through options to Pod::Text
+        my %opts;
+       	for (qw(alt code indent loose margin quotes sentence stderr utf8 width)) {
+            my $val = $params{USAGE_OPTIONS}{"-$_"};
+            $opts{$_} = $val if defined $val;
+        }
+        $self = $self->SUPER::new(%opts);
+        %$self = (%$self, %params);
+    }
+    return $self;
+}
+
+sub select {
+    my ($self, @sections) = @_;
+    if ($ISA[0]->can('select')) {
+        $self->SUPER::select(@sections);
+    } else {
+        # we're using Pod::Simple - need to mimic the behavior of Pod::Select
+        my $add = ($sections[0] eq '+') ? shift(@sections) : '';
+        ## Reset the set of sections to use
+        unless (@sections) {
+          delete $self->{USAGE_SELECT} unless ($add);
+          return;
+        }
+        $self->{USAGE_SELECT} = []
+          unless ($add && $self->{USAGE_SELECT});
+        my $sref = $self->{USAGE_SELECT};
+        ## Compile each spec
+        for my $spec (@sections) {
+          my $cs = Pod::Select::_compile_section_spec($spec);
+          if ( defined $cs ) {
+            ## Store them in our sections array
+            push(@$sref, $cs);
+          } else {
+            carp qq{Ignoring section spec "$spec"!\n};
+          }
+        }
+    }
+}
+
+# Override Pod::Text->seq_i to return just "arg", not "*arg*".
+sub seq_i { return $_[1] }
+
+# This overrides the Pod::Text method to do something very akin to what
+# Pod::Select did as well as the work done below by preprocess_paragraph.
+# Note that the below is very, very specific to Pod::Text.
+sub _handle_element_end {
+    my ($self, $element) = @_;
+    if ($element eq 'head1') {
+        $self->{USAGE_HEADINGS} = [ $$self{PENDING}[-1][1] ];
+        if ($self->{USAGE_OPTIONS}->{-verbose} < 2) {
+            $$self{PENDING}[-1][1] =~ s/^\s*SYNOPSIS\s*$/USAGE/;
+        }
+    } elsif ($element =~ /^head(\d+)$/ && $1) { # avoid 0
+        my $idx = $1 - 1;
+        $self->{USAGE_HEADINGS} = [] unless($self->{USAGE_HEADINGS});
+        $self->{USAGE_HEADINGS}->[$idx] = $$self{PENDING}[-1][1];
+    }
+    if ($element =~ /^head\d+$/) {
+        $$self{USAGE_SKIPPING} = 1;
+        if (!$$self{USAGE_SELECT} || !@{ $$self{USAGE_SELECT} }) {
+            $$self{USAGE_SKIPPING} = 0;
+        } else {
+            my @headings = @{$$self{USAGE_HEADINGS}};
+            for my $section_spec ( @{$$self{USAGE_SELECT}} ) {
+                my $match = 1;
+                for (my $i = 0; $i < $Pod::Select::MAX_HEADING_LEVEL; ++$i) {
+                    $headings[$i] = '' unless defined $headings[$i];
+                    my $regex   = $section_spec->[$i];
+                    my $negated = ($regex =~ s/^\!//);
+                    $match  &= ($negated ? ($headings[$i] !~ /${regex}/)
+                                         : ($headings[$i] =~ /${regex}/));
+                    last unless ($match);
+                } # end heading levels
+                if ($match) {
+                  $$self{USAGE_SKIPPING} = 0;
+                  last;
+                }
+            } # end sections
+        }
+
+        # Try to do some lowercasing instead of all-caps in headings, and use
+        # a colon to end all headings.
+        if($self->{USAGE_OPTIONS}->{-verbose} < 2) {
+            local $_ = $$self{PENDING}[-1][1];
+            s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
+            s/\s*$/:/  unless (/:\s*$/);
+            $_ .= "\n";
+            $$self{PENDING}[-1][1] = $_;
+        }
+    }
+    if ($$self{USAGE_SKIPPING} && $element !~ m/^over-/) {
+        pop @{ $$self{PENDING} };
+    } else {
+        $self->SUPER::_handle_element_end($element);
+    }
+}
+
+# required for Pod::Simple API
+sub start_document {
+    my $self = shift;
+    $self->SUPER::start_document();
+    my $msg = $self->{USAGE_OPTIONS}->{-message}  or  return 1;
+    my $out_fh = $self->output_fh();
+    print $out_fh "$msg\n";
+}
+
+# required for old Pod::Parser API
+sub begin_pod {
+    my $self = shift;
+    $self->SUPER::begin_pod();  ## Have to call superclass
+    my $msg = $self->{USAGE_OPTIONS}->{-message}  or  return 1;
+    my $out_fh = $self->output_handle();
+    print $out_fh "$msg\n";
+}
+
+sub preprocess_paragraph {
+    my $self = shift;
+    local $_ = shift;
+    my $line = shift;
+    ## See if this is a heading and we arent printing the entire manpage.
+    if (($self->{USAGE_OPTIONS}->{-verbose} < 2) && /^=head/) {
+        ## Change the title of the SYNOPSIS section to USAGE
+        s/^=head1\s+SYNOPSIS\s*$/=head1 USAGE/;
+        ## Try to do some lowercasing instead of all-caps in headings
+        s{([A-Z])([A-Z]+)}{((length($2) > 2) ? $1 : lc($1)) . lc($2)}ge;
+        ## Use a colon to end all headings
+        s/\s*$/:/  unless (/:\s*$/);
+        $_ .= "\n";
+    }
+    return  $self->SUPER::preprocess_paragraph($_);
+}
+
+1; # keep require happy
+
+__END__
+
+=head1 NAME
+
+Pod::Usage, pod2usage() - print a usage message from embedded pod documentation
+
+=head1 SYNOPSIS
+
+  use Pod::Usage
+
+  my $message_text  = "This text precedes the usage message.";
+  my $exit_status   = 2;          ## The exit status to use
+  my $verbose_level = 0;          ## The verbose level to use
+  my $filehandle    = \*STDERR;   ## The filehandle to write to
+
+  pod2usage($message_text);
+
+  pod2usage($exit_status);
+
+  pod2usage( { -message => $message_text ,
+               -exitval => $exit_status  ,  
+               -verbose => $verbose_level,  
+               -output  => $filehandle } );
+
+  pod2usage(   -msg     => $message_text ,
+               -exitval => $exit_status  ,  
+               -verbose => $verbose_level,  
+               -output  => $filehandle   );
+
+  pod2usage(   -verbose => 2,
+               -noperldoc => 1  )
+
+=head1 ARGUMENTS
+
+B<pod2usage> should be given either a single argument, or a list of
+arguments corresponding to an associative array (a "hash"). When a single
+argument is given, it should correspond to exactly one of the following:
+
+=over 4
+
+=item *
+
+A string containing the text of a message to print I<before> printing
+the usage message
+
+=item *
+
+A numeric value corresponding to the desired exit status
+
+=item *
+
+A reference to a hash
+
+=back
+
+If more than one argument is given then the entire argument list is
+assumed to be a hash.  If a hash is supplied (either as a reference or
+as a list) it should contain one or more elements with the following
+keys:
+
+=over 4
+
+=item C<-message>
+
+=item C<-msg>
+
+The text of a message to print immediately prior to printing the
+program's usage message. 
+
+=item C<-exitval>
+
+The desired exit status to pass to the B<exit()> function.
+This should be an integer, or else the string "NOEXIT" to
+indicate that control should simply be returned without
+terminating the invoking process.
+
+=item C<-verbose>
+
+The desired level of "verboseness" to use when printing the usage
+message. If the corresponding value is 0, then only the "SYNOPSIS"
+section of the pod documentation is printed. If the corresponding value
+is 1, then the "SYNOPSIS" section, along with any section entitled
+"OPTIONS", "ARGUMENTS", or "OPTIONS AND ARGUMENTS" is printed.  If the
+corresponding value is 2 or more then the entire manpage is printed.
+
+The special verbosity level 99 requires to also specify the -sections
+parameter; then these sections are extracted (see L<Pod::Select>)
+and printed.
+
+=item C<-sections>
+
+A string representing a selection list for sections to be printed
+when -verbose is set to 99, e.g. C<"NAME|SYNOPSIS|DESCRIPTION|VERSION">.
+
+Alternatively, an array reference of section specifications can be used:
+
+  pod2usage(-verbose => 99, 
+            -sections => [ qw(fred fred/subsection) ] );
+
+=item C<-output>
+
+A reference to a filehandle, or the pathname of a file to which the
+usage message should be written. The default is C<\*STDERR> unless the
+exit value is less than 2 (in which case the default is C<\*STDOUT>).
+
+=item C<-input>
+
+A reference to a filehandle, or the pathname of a file from which the
+invoking script's pod documentation should be read.  It defaults to the
+file indicated by C<$0> (C<$PROGRAM_NAME> for users of F<English.pm>).
+
+If you are calling B<pod2usage()> from a module and want to display
+that module's POD, you can use this:
+
+  use Pod::Find qw(pod_where);
+  pod2usage( -input => pod_where({-inc => 1}, __PACKAGE__) );
+
+=item C<-pathlist>
+
+A list of directory paths. If the input file does not exist, then it
+will be searched for in the given directory list (in the order the
+directories appear in the list). It defaults to the list of directories
+implied by C<$ENV{PATH}>. The list may be specified either by a reference
+to an array, or by a string of directory paths which use the same path
+separator as C<$ENV{PATH}> on your system (e.g., C<:> for Unix, C<;> for
+MSWin32 and DOS).
+
+=item C<-noperldoc>
+
+By default, Pod::Usage will call L<perldoc> when -verbose >= 2 is
+specified. This does not work well e.g. if the script was packed
+with L<PAR>. The -noperldoc option suppresses the external call to
+L<perldoc> and uses the simple text formatter (L<Pod::Text>) to 
+output the POD.
+
+=back
+
+=head2 Formatting base class
+
+The default text formatter depends on the Perl version (L<Pod::Text> or 
+L<Pod::PlainText> for Perl versions E<lt> 5.005_58). The base class for
+Pod::Usage can be defined by pre-setting C<$Pod::Usage::Formatter> I<before>
+loading Pod::Usage, e.g.:
+
+    BEGIN { $Pod::Usage::Formatter = 'Pod::Text::Termcap'; }
+    use Pod::Usage qw(pod2usage);
+
+=head2 Pass-through options
+
+The following options are passed through to the underlying text formatter.
+See the manual pages of these modules for more information.
+
+  alt code indent loose margin quotes sentence stderr utf8 width
+
+=head1 DESCRIPTION
+
+B<pod2usage> will print a usage message for the invoking script (using
+its embedded pod documentation) and then exit the script with the
+desired exit status. The usage message printed may have any one of three
+levels of "verboseness": If the verbose level is 0, then only a synopsis
+is printed. If the verbose level is 1, then the synopsis is printed
+along with a description (if present) of the command line options and
+arguments. If the verbose level is 2, then the entire manual page is
+printed.
+
+Unless they are explicitly specified, the default values for the exit
+status, verbose level, and output stream to use are determined as
+follows:
+
+=over 4
+
+=item *
+
+If neither the exit status nor the verbose level is specified, then the
+default is to use an exit status of 2 with a verbose level of 0.
+
+=item *
+
+If an exit status I<is> specified but the verbose level is I<not>, then the
+verbose level will default to 1 if the exit status is less than 2 and
+will default to 0 otherwise.
+
+=item *
+
+If an exit status is I<not> specified but verbose level I<is> given, then
+the exit status will default to 2 if the verbose level is 0 and will
+default to 1 otherwise.
+
+=item *
+
+If the exit status used is less than 2, then output is printed on
+C<STDOUT>.  Otherwise output is printed on C<STDERR>.
+
+=back
+
+Although the above may seem a bit confusing at first, it generally does
+"the right thing" in most situations.  This determination of the default
+values to use is based upon the following typical Unix conventions:
+
+=over 4
+
+=item *
+
+An exit status of 0 implies "success". For example, B<diff(1)> exits
+with a status of 0 if the two files have the same contents.
+
+=item *
+
+An exit status of 1 implies possibly abnormal, but non-defective, program
+termination.  For example, B<grep(1)> exits with a status of 1 if
+it did I<not> find a matching line for the given regular expression.
+
+=item *
+
+An exit status of 2 or more implies a fatal error. For example, B<ls(1)>
+exits with a status of 2 if you specify an illegal (unknown) option on
+the command line.
+
+=item *
+
+Usage messages issued as a result of bad command-line syntax should go
+to C<STDERR>.  However, usage messages issued due to an explicit request
+to print usage (like specifying B<-help> on the command line) should go
+to C<STDOUT>, just in case the user wants to pipe the output to a pager
+(such as B<more(1)>).
+
+=item *
+
+If program usage has been explicitly requested by the user, it is often
+desirable to exit with a status of 1 (as opposed to 0) after issuing
+the user-requested usage message.  It is also desirable to give a
+more verbose description of program usage in this case.
+
+=back
+
+B<pod2usage> doesn't force the above conventions upon you, but it will
+use them by default if you don't expressly tell it to do otherwise.  The
+ability of B<pod2usage()> to accept a single number or a string makes it
+convenient to use as an innocent looking error message handling function:
+
+    use Pod::Usage;
+    use Getopt::Long;
+
+    ## Parse options
+    GetOptions("help", "man", "flag1")  ||  pod2usage(2);
+    pod2usage(1)  if ($opt_help);
+    pod2usage(-verbose => 2)  if ($opt_man);
+
+    ## Check for too many filenames
+    pod2usage("$0: Too many files given.\n")  if (@ARGV > 1);
+
+Some user's however may feel that the above "economy of expression" is
+not particularly readable nor consistent and may instead choose to do
+something more like the following:
+
+    use Pod::Usage;
+    use Getopt::Long;
+
+    ## Parse options
+    GetOptions("help", "man", "flag1")  ||  pod2usage(-verbose => 0);
+    pod2usage(-verbose => 1)  if ($opt_help);
+    pod2usage(-verbose => 2)  if ($opt_man);
+
+    ## Check for too many filenames
+    pod2usage(-verbose => 2, -message => "$0: Too many files given.\n")
+        if (@ARGV > 1);
+
+As with all things in Perl, I<there's more than one way to do it>, and
+B<pod2usage()> adheres to this philosophy.  If you are interested in
+seeing a number of different ways to invoke B<pod2usage> (although by no
+means exhaustive), please refer to L<"EXAMPLES">.
+
+=head1 EXAMPLES
+
+Each of the following invocations of C<pod2usage()> will print just the
+"SYNOPSIS" section to C<STDERR> and will exit with a status of 2:
+
+    pod2usage();
+
+    pod2usage(2);
+
+    pod2usage(-verbose => 0);
+
+    pod2usage(-exitval => 2);
+
+    pod2usage({-exitval => 2, -output => \*STDERR});
+
+    pod2usage({-verbose => 0, -output  => \*STDERR});
+
+    pod2usage(-exitval => 2, -verbose => 0);
+
+    pod2usage(-exitval => 2, -verbose => 0, -output => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print a message
+of "Syntax error." (followed by a newline) to C<STDERR>, immediately
+followed by just the "SYNOPSIS" section (also printed to C<STDERR>) and
+will exit with a status of 2:
+
+    pod2usage("Syntax error.");
+
+    pod2usage(-message => "Syntax error.", -verbose => 0);
+
+    pod2usage(-msg  => "Syntax error.", -exitval => 2);
+
+    pod2usage({-msg => "Syntax error.", -exitval => 2, -output => \*STDERR});
+
+    pod2usage({-msg => "Syntax error.", -verbose => 0, -output => \*STDERR});
+
+    pod2usage(-msg  => "Syntax error.", -exitval => 2, -verbose => 0);
+
+    pod2usage(-message => "Syntax error.",
+              -exitval => 2,
+              -verbose => 0,
+              -output  => \*STDERR);
+
+Each of the following invocations of C<pod2usage()> will print the
+"SYNOPSIS" section and any "OPTIONS" and/or "ARGUMENTS" sections to
+C<STDOUT> and will exit with a status of 1:
+
+    pod2usage(1);
+
+    pod2usage(-verbose => 1);
+
+    pod2usage(-exitval => 1);
+
+    pod2usage({-exitval => 1, -output => \*STDOUT});
+
+    pod2usage({-verbose => 1, -output => \*STDOUT});
+
+    pod2usage(-exitval => 1, -verbose => 1);
+
+    pod2usage(-exitval => 1, -verbose => 1, -output => \*STDOUT});
+
+Each of the following invocations of C<pod2usage()> will print the
+entire manual page to C<STDOUT> and will exit with a status of 1:
+
+    pod2usage(-verbose  => 2);
+
+    pod2usage({-verbose => 2, -output => \*STDOUT});
+
+    pod2usage(-exitval  => 1, -verbose => 2);
+
+    pod2usage({-exitval => 1, -verbose => 2, -output => \*STDOUT});
+
+=head2 Recommended Use
+
+Most scripts should print some type of usage message to C<STDERR> when a
+command line syntax error is detected. They should also provide an
+option (usually C<-H> or C<-help>) to print a (possibly more verbose)
+usage message to C<STDOUT>. Some scripts may even wish to go so far as to
+provide a means of printing their complete documentation to C<STDOUT>
+(perhaps by allowing a C<-man> option). The following complete example
+uses B<Pod::Usage> in combination with B<Getopt::Long> to do all of these
+things:
+
+    use Getopt::Long;
+    use Pod::Usage;
+
+    my $man = 0;
+    my $help = 0;
+    ## Parse options and print usage if there is a syntax error,
+    ## or if usage was explicitly requested.
+    GetOptions('help|?' => \$help, man => \$man) or pod2usage(2);
+    pod2usage(1) if $help;
+    pod2usage(-verbose => 2) if $man;
+
+    ## If no arguments were given, then allow STDIN to be used only
+    ## if it's not connected to a terminal (otherwise print usage)
+    pod2usage("$0: No files given.")  if ((@ARGV == 0) && (-t STDIN));
+    __END__
+
+    =head1 NAME
+
+    sample - Using GetOpt::Long and Pod::Usage
+
+    =head1 SYNOPSIS
+
+    sample [options] [file ...]
+
+     Options:
+       -help            brief help message
+       -man             full documentation
+
+    =head1 OPTIONS
+
+    =over 8
+
+    =item B<-help>
+
+    Print a brief help message and exits.
+
+    =item B<-man>
+
+    Prints the manual page and exits.
+
+    =back
+
+    =head1 DESCRIPTION
+
+    B<This program> will read the given input file(s) and do something
+    useful with the contents thereof.
+
+    =cut
+
+=head1 CAVEATS
+
+By default, B<pod2usage()> will use C<$0> as the path to the pod input
+file.  Unfortunately, not all systems on which Perl runs will set C<$0>
+properly (although if C<$0> isn't found, B<pod2usage()> will search
+C<$ENV{PATH}> or else the list specified by the C<-pathlist> option).
+If this is the case for your system, you may need to explicitly specify
+the path to the pod docs for the invoking script using something
+similar to the following:
+
+    pod2usage(-exitval => 2, -input => "/path/to/your/pod/docs");
+
+In the pathological case that a script is called via a relative path
+I<and> the script itself changes the current working directory
+(see L<perlfunc/chdir>) I<before> calling pod2usage, Pod::Usage will
+fail even on robust platforms. Don't do that. Or use L<FindBin> to locate
+the script:
+
+    use FindBin;
+    pod2usage(-input => $FindBin::Bin . "/" . $FindBin::Script);
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Marek Rouchal E<lt>marekr at cpan.orgE<gt>
+
+Brad Appleton E<lt>bradapp at enteract.comE<gt>
+
+Based on code for B<Pod::Text::pod2text()> written by
+Tom Christiansen E<lt>tchrist at mox.perl.comE<gt>
+
+=head1 ACKNOWLEDGMENTS
+
+Steven McDougall E<lt>swmcd at world.std.comE<gt> for his help and patience
+with re-writing this manpage.
+
+=head1 SEE ALSO
+
+B<Pod::Usage> is now a standalone distribution.
+
+L<Pod::Parser>, L<Pod::Perldoc>, L<Getopt::Long>, L<Pod::Find>, L<FindBin>,
+L<Pod::Text>, L<Pod::PlainText>, L<Pod::Text::Termcap>
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Usage/scripts/pod2usage.PL
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/scripts/pod2usage.PL	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/scripts/pod2usage.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,190 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate.  Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries.  Thus you write
+#  $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+$origdir = cwd;
+chdir(dirname($0));
+$file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{'startperl'}
+    eval 'exec perl -S \$0 "\$@"'
+        if 0;
+!GROK!THIS!
+
+# In the following, perl variables are not expanded during extraction.
+
+print OUT <<'!NO!SUBS!';
+
+#############################################################################
+# pod2usage -- command to print usage messages from embedded pod docs
+#
+# Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved.
+# This file is part of "PodParser". PodParser is free software;
+# you can redistribute it and/or modify it under the same terms
+# as Perl itself.
+#############################################################################
+
+use strict;
+#use diagnostics;
+
+=head1 NAME
+
+pod2usage - print usage messages from embedded pod docs in files
+
+=head1 SYNOPSIS
+
+=over 12
+
+=item B<pod2usage>
+
+[B<-help>]
+[B<-man>]
+[B<-exit>S< >I<exitval>]
+[B<-output>S< >I<outfile>]
+[B<-verbose> I<level>]
+[B<-pathlist> I<dirlist>]
+[B<-formatter> I<module>]
+I<file>
+
+=back
+
+=head1 OPTIONS AND ARGUMENTS
+
+=over 8
+
+=item B<-help>
+
+Print a brief help message and exit.
+
+=item B<-man>
+
+Print this command's manual page and exit.
+
+=item B<-exit> I<exitval>
+
+The exit status value to return.
+
+=item B<-output> I<outfile>
+
+The output file to print to. If the special names "-" or ">&1" or ">&STDOUT"
+are used then standard output is used. If ">&2" or ">&STDERR" is used then
+standard error is used.
+
+=item B<-verbose> I<level>
+
+The desired level of verbosity to use:
+
+    1 : print SYNOPSIS only
+    2 : print SYNOPSIS sections and any OPTIONS/ARGUMENTS sections
+    3 : print the entire manpage (similar to running pod2text)
+
+=item B<-pathlist> I<dirlist>
+
+Specifies one or more directories to search for the input file if it
+was not supplied with an absolute path. Each directory path in the given
+list should be separated by a ':' on Unix (';' on MSWin32 and DOS).
+
+=item B<-formatter> I<module>
+
+Which text formatter to use. Default is L<Pod::Text>, or for very old
+Perl versions L<Pod::PlainText>. An alternative would be e.g. 
+L<Pod::Text::Termcap>.
+
+=item I<file>
+
+The pathname of a file containing pod documentation to be output in
+usage message format (defaults to standard input).
+
+=back
+
+=head1 DESCRIPTION
+
+B<pod2usage> will read the given input file looking for pod
+documentation and will print the corresponding usage message.
+If no input file is specified then standard input is read.
+
+B<pod2usage> invokes the B<pod2usage()> function in the B<Pod::Usage>
+module. Please see L<Pod::Usage/pod2usage()>.
+
+=head1 SEE ALSO
+
+L<Pod::Usage>, L<pod2text(1)>
+
+=head1 AUTHOR
+
+Please report bugs using L<http://rt.cpan.org>.
+
+Brad Appleton E<lt>bradapp at enteract.comE<gt>
+
+Based on code for B<pod2text(1)> written by
+Tom Christiansen E<lt>tchrist at mox.perl.comE<gt>
+
+=cut
+
+use Getopt::Long;
+
+## Define options
+my %options = ();
+my @opt_specs = (
+    'help',
+    'man',
+    'exit=i',
+    'output=s',
+    'pathlist=s',
+    'formatter=s',
+    'verbose=i',
+);
+
+## Parse options
+GetOptions(\%options, @opt_specs)  ||  pod2usage(2);
+$Pod::Usage::Formatter = $options{formatter} if $options{formatter};
+require Pod::Usage;
+Pod::Usage->import();
+pod2usage(1)  if ($options{help});
+pod2usage(VERBOSE => 2)  if ($options{man});
+
+## Dont default to STDIN if connected to a terminal
+pod2usage(2) if ((@ARGV == 0) && (-t STDIN));
+
+ at ARGV = ('-')  unless (@ARGV);
+if (@ARGV > 1) {
+    print STDERR "pod2usage: Too many filenames given\n\n";
+    pod2usage(2);
+}
+
+my %usage = ();
+$usage{-input}    = shift(@ARGV);
+$usage{-exitval}  = $options{'exit'}      if (defined $options{'exit'});
+$usage{-output}   = $options{'output'}    if (defined $options{'output'});
+$usage{-verbose}  = $options{'verbose'}   if (defined $options{'verbose'});
+$usage{-pathlist} = $options{'pathlist'}  if (defined $options{'pathlist'});
+
+pod2usage(\%usage);
+
+
+!NO!SUBS!
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/p2u_data.pl
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/p2u_data.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/p2u_data.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+use Pod::Usage;
+pod2usage(-verbose => 2, -exit => 17, -input => \*DATA);
+
+__DATA__
+=head1 NAME
+
+Test
+
+=head1 SYNOPSIS
+
+perl podusagetest.pl
+
+=head1 DESCRIPTION
+
+This is a test. 
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+BEGIN {
+   use File::Basename;
+   my $THISDIR = dirname $0;
+   unshift @INC, $THISDIR;
+   require "testp2pt.pl";
+   import TestPodIncPlainText;
+}
+
+my %options = map { $_ => 1 } @ARGV;  ## convert cmdline to options-hash
+my $passed  = testpodplaintext \%options, $0;
+exit( ($passed == 1) ? 0 : -1 )  unless $ENV{HARNESS_ACTIVE};
+
+
+__END__
+
+=include pod2usage.PL
+
+

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.xr
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.xr	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage.xr	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+###### begin =include pod2usage.PL #####
+NAME
+    pod2usage - print usage messages from embedded pod docs in files
+
+SYNOPSIS
+    pod2usage   [-help] [-man] [-exit *exitval*] [-output *outfile*]
+                [-verbose *level*] [-pathlist *dirlist*] [-formatter
+                *module*] *file*
+
+OPTIONS AND ARGUMENTS
+    -help   Print a brief help message and exit.
+
+    -man    Print this command's manual page and exit.
+
+    -exit *exitval*
+            The exit status value to return.
+
+    -output *outfile*
+            The output file to print to. If the special names "-" or ">&1"
+            or ">&STDOUT" are used then standard output is used. If ">&2" or
+            ">&STDERR" is used then standard error is used.
+
+    -verbose *level*
+            The desired level of verbosity to use:
+
+                1 : print SYNOPSIS only
+                2 : print SYNOPSIS sections and any OPTIONS/ARGUMENTS sections
+                3 : print the entire manpage (similar to running pod2text)
+
+    -pathlist *dirlist*
+            Specifies one or more directories to search for the input file
+            if it was not supplied with an absolute path. Each directory
+            path in the given list should be separated by a ':' on Unix (';'
+            on MSWin32 and DOS).
+
+    -formatter *module*
+            Which text formatter to use. Default is the Pod::Text manpage,
+            or for very old Perl versions the Pod::PlainText manpage. An
+            alternative would be e.g. the Pod::Text::Termcap manpage.
+
+    *file*  The pathname of a file containing pod documentation to be output
+            in usage message format (defaults to standard input).
+
+DESCRIPTION
+    pod2usage will read the given input file looking for pod documentation
+    and will print the corresponding usage message. If no input file is
+    specified then standard input is read.
+
+    pod2usage invokes the pod2usage() function in the Pod::Usage module.
+    Please see the pod2usage() entry in the Pod::Usage manpage.
+
+SEE ALSO
+    the Pod::Usage manpage, the pod2text(1) manpage
+
+AUTHOR
+    Please report bugs using http://rt.cpan.org.
+
+    Brad Appleton <bradapp at enteract.com>
+
+    Based on code for pod2text(1) written by Tom Christiansen
+    <tchrist at mox.perl.com>
+
+###### end =include pod2usage.PL #####

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage2.t
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage2.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/pod2usage2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,357 @@
+#!/usr/bin/perl -w
+
+use Test::More;
+use strict;
+
+BEGIN {
+  if ($^O eq 'MSWin32' || $^O eq 'VMS') {
+    plan skip_all => "Not portable on Win32 or VMS\n";
+  }
+  else {
+    plan tests => 34;
+  }
+  use_ok ("Pod::Usage");
+}
+
+sub getoutput
+{
+  my ($code) = @_;
+  my $pid = open(TEST_IN, "-|");
+  unless(defined $pid) {
+    die "Cannot fork: $!";
+  }
+  if($pid) {
+    # parent
+    my @out = <TEST_IN>;
+    close(TEST_IN);
+    my $exit = $?>>8;
+    s/^/#/ for @out;
+    local $" = "";
+    print "#EXIT=$exit OUTPUT=+++#@out#+++\n";
+    return($exit, join("", at out));
+  }
+  # child
+  open(STDERR, ">&STDOUT");
+  Test::More->builder->no_ending(1);
+  &$code;
+  print "--NORMAL-RETURN--\n";
+  exit 0;
+}
+
+sub compare
+{
+  my ($left,$right) = @_;
+  $left  =~ s/^#\s+/#/gm;
+  $right =~ s/^#\s+/#/gm;
+  $left  =~ s/\s+/ /gm;
+  $right =~ s/\s+/ /gm;
+  $left eq $right;
+}
+
+SKIP: {
+if('Pod::Usage'->isa('Pod::Text') && $Pod::Text::VERSION < 2.18) {
+  skip("Formatting with Pod::Text $Pod::Text::VERSION not reliable", 33);
+}
+
+my ($exit, $text) = getoutput( sub { pod2usage() } );
+is ($exit, 2,                 "Exit status pod2usage ()");
+ok (compare ($text, <<'EOT'), "Output test pod2usage ()");
+#Usage:
+#    frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(
+  -message => 'You naughty person, what did you say?',
+  -verbose => 1 ) });
+is ($exit, 1,                 "Exit status pod2usage (-message => '...', -verbose => 1)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-message => '...', -verbose => 1)") or diag("Got:\n$text\n");
+#You naughty person, what did you say?
+# Usage:
+#     frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+# 
+# Options:
+#     -r | --recursive
+#         Run recursively.
+# 
+#     -f | --force
+#         Just do it!
+# 
+#     -n number
+#         Specify number of frobs, default is 42.
+# 
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(
+  -verbose => 2, -exit => 42 ) } );
+is ($exit, 42,                "Exit status pod2usage (-verbose => 2, -exit => 42)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 2, -exit => 42)");
+#NAME
+#     frobnicate - do what I mean
+#
+# SYNOPSIS
+#     frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# DESCRIPTION
+#     frobnicate does foo and bar and what not.
+#
+# OPTIONS
+#     -r | --recursive
+#         Run recursively.
+#
+#     -f | --force
+#         Just do it!
+#
+#     -n number
+#         Specify number of frobs, default is 42.
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(0) } );
+is ($exit, 0,                 "Exit status pod2usage (0)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (0)");
+#Usage:
+#     frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# Options:
+#     -r | --recursive
+#         Run recursively.
+#
+#     -f | --force
+#         Just do it!
+#
+#     -n number
+#         Specify number of frobs, default is 42.
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(42) } );
+is ($exit, 42,                "Exit status pod2usage (42)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (42)");
+#Usage:
+#     frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(-verbose => 0, -exit => 'NOEXIT') } );
+is ($exit, 0,                 "Exit status pod2usage (-verbose => 0, -exit => 'NOEXIT')");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 0, -exit => 'NOEXIT')");
+#Usage:
+#     frobnicate [ -r | --recursive ] [ -f | --force ] file ...
+#
+# --NORMAL-RETURN--
+EOT
+
+($exit, $text) = getoutput( sub { pod2usage(-verbose => 99, -sections => 'DESCRIPTION') } );
+is ($exit, 1,                 "Exit status pod2usage (-verbose => 99, -sections => 'DESCRIPTION')");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 99, -sections => 'DESCRIPTION')");
+#Description:
+#     frobnicate does foo and bar and what not.
+#
+EOT
+
+# does the __DATA__ work ok as input
+my (@blib, $test_script, $pod_file1, , $pod_file2);
+if (!$ENV{PERL_CORE}) {
+  @blib = '-Mblib';
+}
+$test_script = File::Spec->catfile(qw(t pod p2u_data.pl));
+$pod_file1 = File::Spec->catfile(qw(t pod usage.pod));
+$pod_file2 = File::Spec->catfile(qw(t pod usage2.pod));
+
+
+($exit, $text) = getoutput( sub { system($^X, @blib, $test_script); exit($?  >> 8); } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 17,                 "Exit status pod2usage (-verbose => 2, -input => \*DATA)");
+ok (compare ($text, <<'EOT'), "Output test pod2usage (-verbose => 2, -input => \*DATA)") or diag "Got:\n$text\n";
+#NAME
+#    Test
+#
+#SYNOPSIS
+#    perl podusagetest.pl
+#
+#DESCRIPTION
+#    This is a test.
+#
+EOT
+
+# test that SYNOPSIS and USAGE are printed
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+                                            -exitval => 0, -verbose => 0); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with USAGE");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE") or diag "Got:\n$text\n";
+#Usage:
+#    This is a test for CPAN#33020
+#
+#Usage:
+#    And this will be also printed.
+#
+EOT
+
+# test that SYNOPSIS and USAGE are printed with options
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+                                            -exitval => 0, -verbose => 1); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with USAGE and verbose=1");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE and verbose=1") or diag "Got:\n$text\n";
+#Usage:
+#    This is a test for CPAN#33020
+#
+#Usage:
+#    And this will be also printed.
+#
+#Options:
+#    And this with verbose == 1
+#
+EOT
+
+# test that only USAGE is printed when requested
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file1,
+                                            -exitval => 0, -verbose => 99, -sections => 'USAGE'); });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with USAGE and verbose=99");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with USAGE and verbose=99") or diag "Got:\n$text\n";
+#Usage:
+#    This is a test for CPAN#33020
+# 
+EOT
+
+# test with pod_where
+use_ok('Pod::Find', qw(pod_where));
+
+($exit, $text) = getoutput( sub { pod2usage( -input => pod_where({-inc => 1}, 'Pod::Usage'),
+                                             -exitval => 0, -verbose => 0) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with Pod::Find");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with Pod::Find") or diag "Got:\n$text\n";
+#Usage:
+#      use Pod::Usage
+#
+#      my $message_text  = "This text precedes the usage message.";
+#      my $exit_status   = 2;          ## The exit status to use
+#      my $verbose_level = 0;          ## The verbose level to use
+#      my $filehandle    = \*STDERR;   ## The filehandle to write to
+#
+#      pod2usage($message_text);
+#
+#      pod2usage($exit_status);
+#
+#      pod2usage( { -message => $message_text ,
+#                   -exitval => $exit_status  ,  
+#                   -verbose => $verbose_level,  
+#                   -output  => $filehandle } );
+#
+#      pod2usage(   -msg     => $message_text ,
+#                   -exitval => $exit_status  ,  
+#                   -verbose => $verbose_level,  
+#                   -output  => $filehandle   );
+#
+#      pod2usage(   -verbose => 2,
+#                   -noperldoc => 1  )
+#
+EOT
+
+# verify that sections are correctly found after nested headings
+($exit, $text) = getoutput( sub { pod2usage(-input => $pod_file2,
+                                            -exitval => 0, -verbose => 99,
+                                            -sections => [qw(BugHeader BugHeader/.*')]) });
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with nested headings");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with nested headings") or diag "Got:\n$text\n";
+#BugHeader:
+#    Some text
+#
+#  BugHeader2:
+#    More
+#    Still More
+#
+EOT
+
+# Verify that =over =back work OK
+($exit, $text) = getoutput( sub {
+  pod2usage(-input => $pod_file2,
+            -exitval => 0, -verbose => 99, -sections => 'BugHeader/BugHeader2') } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with over/back");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with over/back") or diag "Got:\n$text\n";
+#  BugHeader2:
+#    More
+#    Still More
+#
+EOT
+
+# new array API for -sections
+($exit, $text) = getoutput( sub {
+  pod2usage(-input => $pod_file2,
+            -exitval => 0, -verbose => 99, -sections => [qw(Heading-1/!.+ Heading-2/.+)]) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+is ($exit, 0,                 "Exit status pod2usage with -sections => []");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with -sections => []") or diag "Got:\n$text\n";
+#Heading-1:
+#    One
+#    Two
+#
+#  Heading-2.2:
+#    More text.
+#
+EOT
+
+# allow subheadings in OPTIONS and ARGUMENTS
+($exit, $text) = getoutput( sub {
+  pod2usage(-input => $pod_file2,
+            -exitval => 0, -verbose => 1) } );
+$text =~ s{#Using.*/blib.*\n}{}; # older blib's emit something to STDERR
+$text =~ s{[*](destination|files)[*]}{$1}g; # strip * chars
+is ($exit, 0,                 "Exit status pod2usage with subheadings in OPTIONS");
+ok (compare ($text, <<'EOT'), "Output test pod2usage with subheadings in OPTIONS") or diag "Got:\n$text\n";
+#Options and Arguments:
+#  Arguments:
+#    The required arguments (which typically follow any options on the
+#    command line) are:
+#
+#    destination
+#    files
+#
+#  Options:
+#    Options may be abbreviated. Options which take values may be separated
+#    from the values by whitespace or the "=" character.
+#
+EOT
+} # end SKIP
+
+__END__
+
+=head1 NAME
+
+frobnicate - do what I mean
+
+=head1 SYNOPSIS
+
+B<frobnicate> S<[ B<-r> | B<--recursive> ]> S<[ B<-f> | B<--force> ]>
+  file ...
+
+=head1 DESCRIPTION
+
+B<frobnicate> does foo and bar and what not.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-r> | B<--recursive>
+
+Run recursively.
+
+=item B<-f> | B<--force>
+
+Just do it!
+
+=item B<-n> number
+
+Specify number of frobs, default is 42.
+
+=back
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/testcmp.pl
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/testcmp.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/testcmp.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,94 @@
+package TestCompare;
+
+use vars qw(@ISA @EXPORT $MYPKG);
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+use File::Basename;
+use File::Spec;
+use FileHandle;
+
+ at ISA = qw(Exporter);
+ at EXPORT = qw(&testcmp);
+$MYPKG = eval { (caller)[0] };
+
+##--------------------------------------------------------------------------
+
+=head1 NAME
+
+testcmp -- compare two files line-by-line
+
+=head1 SYNOPSIS
+
+    $is_diff = testcmp($file1, $file2);
+
+or
+
+    $is_diff = testcmp({-cmplines => \&mycmp}, $file1, $file2);
+
+=head2 DESCRIPTION
+
+Compare two text files line-by-line and return 0 if they are the
+same, 1 if they differ. Each of $file1 and $file2 may be a filenames,
+or a filehandles (in which case it must already be open for reading).
+
+If the first argument is a hashref, then the B<-cmplines> key in the
+hash may have a subroutine reference as its corresponding value.
+The referenced user-defined subroutine should be a line-comparator
+function that takes two pre-chomped text-lines as its arguments
+(the first is from $file1 and the second is from $file2). It should
+return 0 if it considers the two lines equivalent, and non-zero
+otherwise.
+
+=cut
+
+##--------------------------------------------------------------------------
+
+sub testcmp( $ $ ; $) {
+   my %opts = ref($_[0]) eq 'HASH' ? %{shift()} : ();
+   my ($file1, $file2) = @_;
+   my ($fh1, $fh2) = ($file1, $file2);
+   unless (ref $fh1) {
+      $fh1 = FileHandle->new($file1, "r") or die "Can't open $file1: $!";
+   }
+   unless (ref $fh2) {
+      $fh2 = FileHandle->new($file2, "r") or die "Can't open $file2: $!";
+   }
+  
+   my $cmplines = $opts{'-cmplines'} || undef;
+   my ($f1text, $f2text) = ("", "");
+   my ($line, $diffs)    = (0, 0);
+  
+   while ( defined($f1text) and defined($f2text) ) {
+      defined($f1text = <$fh1>)  and  chomp($f1text);
+      defined($f2text = <$fh2>)  and  chomp($f2text);
+      ++$line;
+      last unless ( defined($f1text) and defined($f2text) );
+      # kill any extra line endings
+      $f1text =~ s/[\r\n]+$//s;
+      $f2text =~ s/[\r\n]+$//s;
+      $diffs = (ref $cmplines) ? &$cmplines($f1text, $f2text)
+                               : ($f1text ne $f2text);
+      last if $diffs;
+   }
+   close($fh1) unless (ref $file1);
+   close($fh2) unless (ref $file2);
+  
+   $diffs = 1  if (defined($f1text) or defined($f2text));
+   if ( defined($f1text) and defined($f2text) ) {
+      ## these two lines must be different
+      warn "$file1 and $file2 differ at line $line\n";
+   }
+   elsif (defined($f1text)  and  (! defined($f1text))) {
+      ## file1 must be shorter
+      warn "$file1 is shorter than $file2\n";
+   }
+   elsif (defined $f2text) {
+      ## file2 must be longer
+      warn "$file1 is shorter than $file2\n";
+   }
+   return $diffs;
+}
+
+1;

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/testp2pt.pl
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/testp2pt.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/testp2pt.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,192 @@
+package TestPodIncPlainText;
+
+BEGIN {
+   use File::Basename;
+   use File::Spec;
+   use Cwd qw(abs_path);
+   push @INC, '..';
+   my $THISDIR = abs_path(dirname $0);
+   unshift @INC, $THISDIR;
+   require "testcmp.pl";
+   import TestCompare;
+   my $PARENTDIR = dirname $THISDIR;
+   push @INC, map { File::Spec->catfile($_, 'lib') } ($PARENTDIR, $THISDIR);
+}
+
+#use strict;
+#use diagnostics;
+use Carp;
+use Exporter;
+#use File::Compare;
+#use Cwd qw(abs_path);
+
+use vars qw($MYPKG @EXPORT @ISA);
+$MYPKG = eval { (caller)[0] };
+ at EXPORT = qw(&testpodplaintext);
+BEGIN {
+    require Pod::PlainText;
+    @ISA = qw( Pod::PlainText );
+    require VMS::Filespec if $^O eq 'VMS';
+}
+
+## Hardcode settings for TERMCAP and COLUMNS so we can try to get
+## reproducible results between environments
+ at ENV{qw(TERMCAP COLUMNS)} = ('co=76:do=^J', 76);
+
+sub catfile(@) { File::Spec->catfile(@_); }
+
+my $INSTDIR = abs_path(dirname $0);
+$INSTDIR = VMS::Filespec::unixpath($INSTDIR) if $^O eq 'VMS';
+$INSTDIR =~ s#/$## if $^O eq 'VMS';
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 'pod');
+$INSTDIR =~ s#:$## if $^O eq 'MacOS';
+$INSTDIR = (dirname $INSTDIR) if (basename($INSTDIR) eq 't');
+my @PODINCDIRS = ( catfile($INSTDIR, 'lib', 'Pod'),
+                   catfile($INSTDIR, 'scripts'),
+                   catfile($INSTDIR, 'pod'),
+                   catfile($INSTDIR, 't', 'pod')
+                 );
+
+# FIXME - we should make the core capable of finding utilities built in
+# locations in ext.
+push @PODINCDIRS, catfile((File::Spec->updir()) x 2, 'pod') if $ENV{PERL_CORE};
+
+## Find the path to the file to =include
+sub findinclude {
+    my $self    = shift;
+    my $incname = shift;
+
+    ## See if its already found w/out any "searching;
+    return  $incname if (-r $incname);
+
+    ## Need to search for it. Look in the following directories ...
+    ##   1. the directory containing this pod file
+    my $thispoddir = dirname $self->input_file;
+    ##   2. the parent directory of the above
+    my $parentdir  = dirname $thispoddir;
+    my @podincdirs = ($thispoddir, $parentdir, @PODINCDIRS);
+
+    for (@podincdirs) {
+       my $incfile = catfile($_, $incname);
+       return $incfile  if (-r $incfile);
+    }
+    warn("*** Can't find =include file $incname in @podincdirs\n");
+    return "";
+}
+
+sub command {
+    my $self = shift;
+    my ($cmd, $text, $line_num, $pod_para)  = @_;
+    $cmd     = ''  unless (defined $cmd);
+    local $_ = $text || '';
+    my $out_fh  = $self->output_handle;
+
+    ## Defer to the superclass for everything except '=include'
+    return  $self->SUPER::command(@_) unless ($cmd eq "include");
+
+    ## We have an '=include' command
+    my $incdebug = 1; ## debugging
+    my @incargs = split;
+    if (@incargs == 0) {
+        warn("*** No filename given for '=include'\n");
+        return;
+    }
+    my $incfile  = $self->findinclude(shift @incargs)  or  return;
+    my $incbase  = basename $incfile;
+    print $out_fh "###### begin =include $incbase #####\n"  if ($incdebug);
+    $self->parse_from_file( {-cutting => 1}, $incfile );
+    print $out_fh "###### end =include $incbase #####\n"    if ($incdebug);
+}
+
+sub begin_input {
+   $_[0]->{_INFILE} = VMS::Filespec::unixify($_[0]->{_INFILE}) if $^O eq 'VMS';
+}
+
+sub podinc2plaintext( $ $ ) {
+    my ($infile, $outfile) = @_;
+    local $_;
+    my $text_parser = $MYPKG->new;
+    $text_parser->parse_from_file($infile, $outfile);
+}
+
+sub testpodinc2plaintext( @ ) {
+   my %args = @_;
+   my $infile  = $args{'-In'}  || croak "No input file given!";
+   my $outfile = $args{'-Out'} || croak "No output file given!";
+   my $cmpfile = $args{'-Cmp'} || croak "No compare-result file given!";
+
+   my $different = '';
+   my $testname = basename $cmpfile, '.t', '.xr';
+
+   unless (-e $cmpfile) {
+      my $msg = "*** Can't find comparison file $cmpfile for testing $infile";
+      warn  "$msg\n";
+      return  $msg;
+   }
+
+   print "# Running testpodinc2plaintext for '$testname'...\n";
+   ## Compare the output against the expected result
+   podinc2plaintext($infile, $outfile);
+   if ( testcmp($outfile, $cmpfile) ) {
+       $different = "$outfile is different from $cmpfile";
+   }
+   else {
+       unlink($outfile);
+   }
+   return  $different;
+}
+
+sub testpodplaintext( @ ) {
+   my %opts = (ref $_[0] eq 'HASH') ? %{shift()} : ();
+   my @testpods = @_;
+   my ($testname, $testdir) = ("", "");
+   my ($podfile, $cmpfile) = ("", "");
+   my ($outfile, $errfile) = ("", "");
+   my $passes = 0;
+   my $failed = 0;
+   local $_;
+
+   print "1..", scalar @testpods, "\n"  unless ($opts{'-xrgen'});
+
+   for $podfile (@testpods) {
+      ($testname, $_) = fileparse($podfile);
+      $testdir ||=  $_;
+      $testname  =~ s/\.t$//;
+      $cmpfile   =  $testdir . $testname . '.xr';
+      $outfile   =  $testdir . $testname . '.OUT';
+
+      if ($opts{'-xrgen'}) {
+          if ($opts{'-force'} or ! -e $cmpfile) {
+             ## Create the comparison file
+             print "# Creating expected result for \"$testname\"" .
+                   " pod2plaintext test ...\n";
+             podinc2plaintext($podfile, $cmpfile);
+          }
+          else {
+             print "# File $cmpfile already exists" .
+                   " (use '-force' to regenerate it).\n";
+          }
+          next;
+      }
+
+      my $failmsg = testpodinc2plaintext
+                        -In  => $podfile,
+                        -Out => $outfile,
+                        -Cmp => $cmpfile;
+      if ($failmsg) {
+          ++$failed;
+          print "#\tFAILED. ($failmsg)\n";
+	  print "not ok ", $failed+$passes, "\n";
+      }
+      else {
+          ++$passes;
+          unlink($outfile);
+          print "#\tPASSED.\n";
+	  print "ok ", $failed+$passes, "\n";
+      }
+   }
+   return  $passes;
+}
+
+1;

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/usage.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/usage.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/usage.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+=head1 NAME
+
+usage.pod - example for testing USAGE and SYNOPSIS
+
+=head1 USAGE
+
+This is a test for CPAN#33020
+
+=head1 SYNOPSIS
+
+And this will be also printed.
+
+=head1 OPTIONS
+
+And this with verbose == 1
+
+=cut
+

Added: vendor/perl/dist/cpan/Pod-Usage/t/pod/usage2.pod
===================================================================
--- vendor/perl/dist/cpan/Pod-Usage/t/pod/usage2.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/Pod-Usage/t/pod/usage2.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,56 @@
+=head1 Heading-1
+
+=over 100
+
+=item One
+
+=item Two
+
+=back
+
+=head2 Heading 2
+
+Some text
+
+=head1 BugHeader
+
+Some text
+
+=head2 BugHeader2
+
+=over 4
+
+=item More
+
+=item Still More
+
+=back
+
+=head1 Heading-2
+
+=head2 Heading-2.2
+
+More text.
+
+=head1 OPTIONS AND ARGUMENTS
+
+=head2 Arguments
+
+The required arguments (which typically follow any options on the
+command line) are:
+
+=over
+
+=item I<destination>
+
+=item I<files>
+
+=back
+
+=head2 Options
+
+Options may be abbreviated. Options which take values may be separated
+from the values by whitespace or the "=" character.
+
+=cut
+

Added: vendor/perl/dist/cpan/Socket/Makefile.PL
===================================================================
--- vendor/perl/dist/cpan/Socket/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,266 @@
+#!perl
+use strict;
+use warnings;
+
+use ExtUtils::MakeMaker;
+use ExtUtils::Constant 0.23 'WriteConstants';
+use Config;
+
+my @DEFINES;
+
+my $cb;
+my $seq = 0;
+sub check_for
+{
+    my %args = @_;
+    return if $ENV{PERL_CORE};
+    return if defined $Config{$args{confkey}};
+
+    require ExtUtils::CBuilder;
+    $cb ||= ExtUtils::CBuilder->new( quiet => 1 );
+
+    my $main = $args{main};
+
+    print "Checking $args{define}...\n";
+
+    my $file_base = "test-$seq"; $seq++;
+
+    my $file_source = "$file_base.c";
+
+    {
+	open( my $file_source_fh, ">", $file_source ) or die "Cannot write $file_source - $!";
+	print $file_source_fh <<"EOF";
+#include <sys/types.h>
+#ifdef WIN32
+# include <ws2tcpip.h>
+# include <winsock.h>
+#else
+# include <sys/socket.h>
+# include <netdb.h>
+# include <netinet/in.h>
+# include <arpa/inet.h>
+#endif
+int main(int argc, char *argv[])
+  {
+    (void)argc;
+    (void)argv;
+    $main
+    return 0;
+  }
+EOF
+    }
+
+    my $file_obj = eval { $cb->compile( source => $file_source ) };
+    unlink $file_source;
+
+    return 0 unless defined $file_obj;
+
+    my $file_exe = eval { $cb->link_executable( objects => $file_obj ) };
+    unlink $file_obj;
+
+    return 0 unless defined $file_exe;
+
+    # Don't need to try running it
+    unlink $file_exe;
+
+    push @DEFINES, $args{define};
+}
+
+sub check_for_func
+{
+    my %args = @_;
+    my $func = delete $args{func};
+    check_for( %args, main => "void *p = &$func; (void)p;" );
+}
+
+my %defines = (
+    # -Dfoo               func()        $Config{key}
+    HAS_GETADDRINFO => [ "getaddrinfo", "d_getaddrinfo" ],
+    HAS_GETNAMEINFO => [ "getnameinfo", "d_getnameinfo" ],
+    HAS_INET_ATON   => [ "inet_aton",   "d_inetaton" ],
+    HAS_INETNTOP    => [ "inet_ntop",   "d_inetntop" ],
+    HAS_INETPTON    => [ "inet_pton",   "d_inetpton" ],
+);
+
+foreach my $define ( sort keys %defines ) {
+    my ( $func, $key ) = @{$defines{$define}};
+    check_for_func( 
+	confkey => $key,
+	define  => $define,
+	func    => $func
+    );
+}
+
+check_for(
+    confkey => "d_sockaddr_sa_len",
+    define  => "HAS_SOCKADDR_SA_LEN",
+    main    => "struct sockaddr sa; sa.sa_len = 0;"
+);
+
+check_for(
+    confkey => "d_sockaddr_in6",
+    define  => "HAS_SOCKADDR_IN6",
+    main    => "struct sockaddr_in6 sin6; sin6.sin6_family = AF_INET6;"
+);
+
+check_for(
+    confkey => "d_sin6_scope_id",
+    define  => "HAS_SIN6_SCOPE_ID",
+    main    => "struct sockaddr_in6 sin6; sin6.sin6_scope_id = 0;"
+);
+
+check_for(
+    confkey => "d_ip_mreq",
+    define  => "HAS_IP_MREQ",
+    main    => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
+);
+
+# TODO: Needs adding to perl5 core before importing dual-life again
+check_for(
+    confkey => "d_ip_mreq_source",
+    define  => "HAS_IP_MREQ_SOURCE",
+    main    => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
+);
+
+check_for(
+    confkey => "d_ipv6_mreq",
+    define  => "HAS_IPV6_MREQ",
+    main    => "struct ipv6_mreq mreq; mreq.ipv6mr_interface = 0;"
+);
+
+my %makefile_args;
+
+# Since we're providing a later version of a core module, before 5.12 the
+# @INC order is wrong so we'll have to go in perl rather than site dirs
+$makefile_args{INSTALLDIRS} = "perl" if $] < 5.012;
+
+WriteMakefile(
+    NAME	  => 'Socket',
+    VERSION_FROM  => 'Socket.pm',
+    # ABSTRACT_FROM gets confused by C<Socket>
+    ABSTRACT      => 'networking constants and support functions',
+   ($Config{libs} =~ /(-lsocks\S*)/ ? (LIBS => [ "$1" ] ) : ()),
+    XSPROTOARG    => '-noprototypes', 		# XXX remove later?
+    realclean     => {FILES=> 'const-c.inc const-xs.inc'},
+    DEFINE        => join( " ", map { "-D$_" } @DEFINES ),
+    CONFIGURE_REQUIRES => {
+	'ExtUtils::CBuilder' => 0,
+	'ExtUtils::Constant' => '0.23',
+    },
+    MIN_PERL_VERSION => '5.006001',
+    LICENSE       => 'perl',
+    %makefile_args,
+);
+my @names = (
+    qw(
+	AF_802 AF_AAL AF_APPLETALK AF_CCITT AF_CHAOS AF_CTF AF_DATAKIT
+	AF_DECnet AF_DLI AF_ECMA AF_GOSIP AF_HYLINK AF_IMPLINK AF_INET AF_INET6
+	AF_ISO AF_KEY AF_LAST AF_LAT AF_LINK AF_MAX AF_NBS AF_NIT AF_NS AF_OSI
+	AF_OSINET AF_PUP AF_ROUTE AF_SNA AF_UNIX AF_UNSPEC AF_USER AF_WAN
+	AF_X25
+
+	AI_ADDRCONFIG AI_ALL AI_CANONIDN AI_CANONNAME AI_IDN
+	AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES AI_NUMERICHOST
+	AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED
+
+	EAI_ADDRFAMILY EAI_AGAIN EAI_BADFLAGS EAI_BADHINTS EAI_FAIL EAI_FAMILY
+	EAI_NODATA EAI_NONAME EAI_PROTOCOL EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM
+
+	IOV_MAX
+
+	IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
+	IP_DROP_SOURCE_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF IP_MULTICAST_LOOP
+	IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS	IP_RECVRETOPTS IP_RETOPTS IP_TOS
+	IP_TTL 
+
+	IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
+	IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
+	IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
+
+	MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF
+	MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST
+	MSG_NOSIGNAL MSG_RST MSG_SYN MSG_TRUNC MSG_URG MSG_WAITALL MSG_WIRE
+
+	NI_DGRAM NI_IDN NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES
+	NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST NI_NUMERICSERV
+
+	PF_802 PF_AAL PF_APPLETALK PF_CCITT PF_CHAOS PF_CTF PF_DATAKIT
+	PF_DECnet PF_DLI PF_ECMA PF_GOSIP PF_HYLINK PF_IMPLINK PF_INET PF_INET6
+	PF_ISO PF_KEY PF_LAST PF_LAT PF_LINK PF_MAX PF_NBS PF_NIT PF_NS PF_OSI
+	PF_OSINET PF_PUP PF_ROUTE PF_SNA PF_UNIX PF_UNSPEC PF_USER PF_WAN
+	PF_X25
+
+	SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_TIMESTAMP
+
+	SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM
+	SOCK_NONBLOCK SOCK_CLOEXEC
+
+	SOL_SOCKET 
+
+	SOMAXCONN
+
+	SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BROADCAST SO_CHAMELEON
+	SO_DEBUG SO_DETACH_FILTER SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER
+	SO_DONTROUTE SO_ERROR SO_FAMILY SO_KEEPALIVE SO_LINGER SO_OOBINLINE
+	SO_PASSCRED SO_PASSIFNAME SO_PEERCRED SO_PROTOCOL SO_PROTOTYPE
+	SO_RCVBUF SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT
+	SO_SECURITY_AUTHENTICATION SO_SECURITY_ENCRYPTION_NETWORK
+	SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
+	SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
+
+	TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
+	TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
+	TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
+	TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
+	TCP_WINDOW_CLAMP
+
+	UIO_MAXIOV
+    ),
+    {name=>"IPPROTO_IP",   type=>"IV", default=>["IV",   0]},
+    {name=>"IPPROTO_IPV6", type=>"IV", default=>["IV",  41]},
+    {name=>"IPPROTO_RAW",  type=>"IV", default=>["IV", 255]},
+    {name=>"IPPROTO_ICMP", type=>"IV", default=>["IV",  1]},
+    {name=>"IPPROTO_TCP",  type=>"IV", default=>["IV",  6]},
+    {name=>"IPPROTO_UDP",  type=>"IV", default=>["IV", 17]},
+    {name=>"SHUT_RD",   type=>"IV", default=>["IV", "0"]},
+    {name=>"SHUT_WR",   type=>"IV", default=>["IV", "1"]},
+    {name=>"SHUT_RDWR", type=>"IV", default=>["IV", "2"]},
+);
+
+push @names, {
+    name  => $_,
+    type  => "IV",
+    macro => [ "#if defined($_) || defined(HAS_$_) /* might be an enum */\n",
+               "#endif\n" ]
+} foreach qw (MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS);
+
+push @names, {
+    name  => $_,
+    type  => "SV",
+    pre   => "struct in_addr ip_address; ip_address.s_addr = htonl($_);",
+    value => "newSVpvn_flags((char *)&ip_address,sizeof(ip_address), SVs_TEMP)",
+} foreach qw(INADDR_ANY INADDR_LOOPBACK INADDR_NONE INADDR_BROADCAST);
+
+push @names, {
+    name  => $_,
+    type  => "SV",
+    macro => [ "#ifdef ${_}_INIT\n",
+               "#endif\n" ],
+    pre   => "struct in6_addr ip6_address = ${_}_INIT;",
+    value => "newSVpvn_flags((char *)&ip6_address,sizeof(ip6_address), SVs_TEMP)",
+} foreach qw(IN6ADDR_ANY IN6ADDR_LOOPBACK);
+
+# Work around an old Perl core bug that affects ExtUtils::Constants on
+# pre-5.8.2 Perls.  EU:C should be amended to work around this itself.
+if("$]" < 5.008002) {
+    require ExtUtils::Constant::ProxySubs;
+    no warnings "once";
+    $ExtUtils::Constant::ProxySubs::type_to_C_value{$_} = sub { () }
+        foreach qw(YES NO UNDEF), "";
+}
+
+WriteConstants(
+    PROXYSUBS => {autoload => 1},
+    NAME => 'Socket',
+    NAMES => \@names,
+);

Added: vendor/perl/dist/cpan/Socket/Socket.pm
===================================================================
--- vendor/perl/dist/cpan/Socket/Socket.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/Socket.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1114 @@
+package Socket;
+
+use strict;
+{ use 5.006001; }
+
+our $VERSION = '2.009';
+
+=head1 NAME
+
+C<Socket> - networking constants and support functions
+
+=head1 SYNOPSIS
+
+C<Socket> a low-level module used by, among other things, the L<IO::Socket>
+family of modules. The following examples demonstrate some low-level uses but
+a practical program would likely use the higher-level API provided by
+C<IO::Socket> or similar instead.
+
+ use Socket qw(PF_INET SOCK_STREAM pack_sockaddr_in inet_aton);
+
+ socket(my $socket, PF_INET, SOCK_STREAM, 0)
+     or die "socket: $!";
+
+ my $port = getservbyname "echo", "tcp";
+ connect($socket, pack_sockaddr_in($port, inet_aton("localhost")))
+     or die "connect: $!";
+
+ print $socket "Hello, world!\n";
+ print <$socket>;
+
+See also the L</EXAMPLES> section.
+
+=head1 DESCRIPTION
+
+This module provides a variety of constants, structure manipulators and other
+functions related to socket-based networking. The values and functions
+provided are useful when used in conjunction with Perl core functions such as
+socket(), setsockopt() and bind(). It also provides several other support
+functions, mostly for dealing with conversions of network addresses between
+human-readable and native binary forms, and for hostname resolver operations.
+
+Some constants and functions are exported by default by this module; but for
+backward-compatibility any recently-added symbols are not exported by default
+and must be requested explicitly. When an import list is provided to the
+C<use Socket> line, the default exports are not automatically imported. It is
+therefore best practice to always to explicitly list all the symbols required.
+
+Also, some common socket "newline" constants are provided: the constants
+C<CR>, C<LF>, and C<CRLF>, as well as C<$CR>, C<$LF>, and C<$CRLF>, which map
+to C<\015>, C<\012>, and C<\015\012>. If you do not want to use the literal
+characters in your programs, then use the constants provided here. They are
+not exported by default, but can be imported individually, and with the
+C<:crlf> export tag:
+
+ use Socket qw(:DEFAULT :crlf);
+
+ $sock->print("GET / HTTP/1.0$CRLF");
+
+The entire getaddrinfo() subsystem can be exported using the tag C<:addrinfo>;
+this exports the getaddrinfo() and getnameinfo() functions, and all the
+C<AI_*>, C<NI_*>, C<NIx_*> and C<EAI_*> constants.
+
+=cut
+
+=head1 CONSTANTS
+
+In each of the following groups, there may be many more constants provided
+than just the ones given as examples in the section heading. If the heading
+ends C<...> then this means there are likely more; the exact constants
+provided will depend on the OS and headers found at compile-time.
+
+=cut
+
+=head2 PF_INET, PF_INET6, PF_UNIX, ...
+
+Protocol family constants to use as the first argument to socket() or the
+value of the C<SO_DOMAIN> or C<SO_FAMILY> socket option.
+
+=head2 AF_INET, AF_INET6, AF_UNIX, ...
+
+Address family constants used by the socket address structures, to pass to
+such functions as inet_pton() or getaddrinfo(), or are returned by such
+functions as sockaddr_family().
+
+=head2 SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, ...
+
+Socket type constants to use as the second argument to socket(), or the value
+of the C<SO_TYPE> socket option.
+
+=head2 SOCK_NONBLOCK. SOCK_CLOEXEC
+
+Linux-specific shortcuts to specify the C<O_NONBLOCK> and C<FD_CLOEXEC> flags
+during a C<socket(2)> call.
+
+ socket( my $sockh, PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0 )
+
+=head2 SOL_SOCKET
+
+Socket option level constant for setsockopt() and getsockopt().
+
+=head2 SO_ACCEPTCONN, SO_BROADCAST, SO_ERROR, ...
+
+Socket option name constants for setsockopt() and getsockopt() at the
+C<SOL_SOCKET> level.
+
+=head2 IP_OPTIONS, IP_TOS, IP_TTL, ...
+
+Socket option name constants for IPv4 socket options at the C<IPPROTO_IP>
+level.
+
+=head2 MSG_BCAST, MSG_OOB, MSG_TRUNC, ...
+
+Message flag constants for send() and recv().
+
+=head2 SHUT_RD, SHUT_RDWR, SHUT_WR
+
+Direction constants for shutdown().
+
+=head2 INADDR_ANY, INADDR_BROADCAST, INADDR_LOOPBACK, INADDR_NONE
+
+Constants giving the special C<AF_INET> addresses for wildcard, broadcast,
+local loopback, and invalid addresses.
+
+Normally equivalent to inet_aton('0.0.0.0'), inet_aton('255.255.255.255'),
+inet_aton('localhost') and inet_aton('255.255.255.255') respectively.
+
+=head2 IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, ...
+
+IP protocol constants to use as the third argument to socket(), the level
+argument to getsockopt() or setsockopt(), or the value of the C<SO_PROTOCOL>
+socket option.
+
+=head2 TCP_CORK, TCP_KEEPALIVE, TCP_NODELAY, ...
+
+Socket option name constants for TCP socket options at the C<IPPROTO_TCP>
+level.
+
+=head2 IN6ADDR_ANY, IN6ADDR_LOOPBACK
+
+Constants giving the special C<AF_INET6> addresses for wildcard and local
+loopback.
+
+Normally equivalent to inet_pton(AF_INET6, "::") and
+inet_pton(AF_INET6, "::1") respectively.
+
+=head2 IPV6_ADD_MEMBERSHIP, IPV6_MTU, IPV6_V6ONLY, ...
+
+Socket option name constants for IPv6 socket options at the C<IPPROTO_IPV6>
+level.
+
+=cut
+
+# Still undocumented: SCM_*, SOMAXCONN, IOV_MAX, UIO_MAXIOV
+
+=head1 STRUCTURE MANIPULATORS
+
+The following functions convert between lists of Perl values and packed binary
+strings representing structures.
+
+=cut
+
+=head2 $family = sockaddr_family $sockaddr
+
+Takes a packed socket address (as returned by pack_sockaddr_in(),
+pack_sockaddr_un() or the perl builtin functions getsockname() and
+getpeername()). Returns the address family tag. This will be one of the
+C<AF_*> constants, such as C<AF_INET> for a C<sockaddr_in> addresses or
+C<AF_UNIX> for a C<sockaddr_un>. It can be used to figure out what unpack to
+use for a sockaddr of unknown type.
+
+=head2 $sockaddr = pack_sockaddr_in $port, $ip_address
+
+Takes two arguments, a port number and an opaque string (as returned by
+inet_aton(), or a v-string). Returns the C<sockaddr_in> structure with those
+arguments packed in and C<AF_INET> filled in. For Internet domain sockets,
+this structure is normally what you need for the arguments in bind(),
+connect(), and send().
+
+=head2 ($port, $ip_address) = unpack_sockaddr_in $sockaddr
+
+Takes a C<sockaddr_in> structure (as returned by pack_sockaddr_in(),
+getpeername() or recv()). Returns a list of two elements: the port and an
+opaque string representing the IP address (you can use inet_ntoa() to convert
+the address to the four-dotted numeric format). Will croak if the structure
+does not represent an C<AF_INET> address.
+
+In scalar context will return just the IP address.
+
+=head2 $sockaddr = sockaddr_in $port, $ip_address
+
+=head2 ($port, $ip_address) = sockaddr_in $sockaddr
+
+A wrapper of pack_sockaddr_in() or unpack_sockaddr_in(). In list context,
+unpacks its argument and returns a list consisting of the port and IP address.
+In scalar context, packs its port and IP address arguments as a C<sockaddr_in>
+and returns it.
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_in() or unpack_sockaddr_in() explicitly.
+
+=head2 $sockaddr = pack_sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
+
+Takes two to four arguments, a port number, an opaque string (as returned by
+inet_pton()), optionally a scope ID number, and optionally a flow label
+number. Returns the C<sockaddr_in6> structure with those arguments packed in
+and C<AF_INET6> filled in. IPv6 equivalent of pack_sockaddr_in().
+
+=head2 ($port, $ip6_address, $scope_id, $flowinfo) = unpack_sockaddr_in6 $sockaddr
+
+Takes a C<sockaddr_in6> structure. Returns a list of four elements: the port
+number, an opaque string representing the IPv6 address, the scope ID, and the
+flow label. (You can use inet_ntop() to convert the address to the usual
+string format). Will croak if the structure does not represent an C<AF_INET6>
+address.
+
+In scalar context will return just the IP address.
+
+=head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
+
+=head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr
+
+A wrapper of pack_sockaddr_in6() or unpack_sockaddr_in6(). In list context,
+unpacks its argument according to unpack_sockaddr_in6(). In scalar context,
+packs its arguments according to pack_sockaddr_in6().
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_in6() or unpack_sockaddr_in6() explicitly.
+
+=head2 $sockaddr = pack_sockaddr_un $path
+
+Takes one argument, a pathname. Returns the C<sockaddr_un> structure with that
+path packed in with C<AF_UNIX> filled in. For C<PF_UNIX> sockets, this
+structure is normally what you need for the arguments in bind(), connect(),
+and send().
+
+=head2 ($path) = unpack_sockaddr_un $sockaddr
+
+Takes a C<sockaddr_un> structure (as returned by pack_sockaddr_un(),
+getpeername() or recv()). Returns a list of one element: the pathname. Will
+croak if the structure does not represent an C<AF_UNIX> address.
+
+=head2 $sockaddr = sockaddr_un $path
+
+=head2 ($path) = sockaddr_un $sockaddr
+
+A wrapper of pack_sockaddr_un() or unpack_sockaddr_un(). In a list context,
+unpacks its argument and returns a list consisting of the pathname. In a
+scalar context, packs its pathname as a C<sockaddr_un> and returns it.
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_un() or unpack_sockaddr_un() explicitly.
+
+These are only supported if your system has E<lt>F<sys/un.h>E<gt>.
+
+=head2 $ip_mreq = pack_ip_mreq $multiaddr, $interface
+
+Takes an IPv4 multicast address and optionally an interface address (or
+C<INADDR_ANY>). Returns the C<ip_mreq> structure with those arguments packed
+in. Suitable for use with the C<IP_ADD_MEMBERSHIP> and C<IP_DROP_MEMBERSHIP>
+sockopts.
+
+=head2 ($multiaddr, $interface) = unpack_ip_mreq $ip_mreq
+
+Takes an C<ip_mreq> structure. Returns a list of two elements; the IPv4
+multicast address and interface address.
+
+=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface
+
+Takes an IPv4 multicast address, source address, and optionally an interface
+address (or C<INADDR_ANY>). Returns the C<ip_mreq_source> structure with those
+arguments packed in. Suitable for use with the C<IP_ADD_SOURCE_MEMBERSHIP>
+and C<IP_DROP_SOURCE_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr, $source, $interface) = unpack_ip_mreq_source $ip_mreq
+
+Takes an C<ip_mreq_source> structure. Returns a list of three elements; the
+IPv4 multicast address, source address and interface address.
+
+=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex
+
+Takes an IPv6 multicast address and an interface number. Returns the
+C<ipv6_mreq> structure with those arguments packed in. Suitable for use with
+the C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr6, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
+
+Takes an C<ipv6_mreq> structure. Returns a list of two elements; the IPv6
+address and an interface number.
+
+=cut
+
+=head1 FUNCTIONS
+
+=cut
+
+=head2 $ip_address = inet_aton $string
+
+Takes a string giving the name of a host, or a textual representation of an IP
+address and translates that to an packed binary address structure suitable to
+pass to pack_sockaddr_in(). If passed a hostname that cannot be resolved,
+returns C<undef>. For multi-homed hosts (hosts with more than one address),
+the first address found is returned.
+
+For portability do not assume that the result of inet_aton() is 32 bits wide,
+in other words, that it would contain only the IPv4 address in network order.
+
+This IPv4-only function is provided largely for legacy reasons. Newly-written
+code should use getaddrinfo() or inet_pton() instead for IPv6 support.
+
+=head2 $string = inet_ntoa $ip_address
+
+Takes a packed binary address structure such as returned by
+unpack_sockaddr_in() (or a v-string representing the four octets of the IPv4
+address in network order) and translates it into a string of the form
+C<d.d.d.d> where the C<d>s are numbers less than 256 (the normal
+human-readable four dotted number notation for Internet addresses).
+
+This IPv4-only function is provided largely for legacy reasons. Newly-written
+code should use getnameinfo() or inet_ntop() instead for IPv6 support.
+
+=head2 $address = inet_pton $family, $string
+
+Takes an address family (such as C<AF_INET> or C<AF_INET6>) and a string
+containing a textual representation of an address in that family and
+translates that to an packed binary address structure.
+
+See also getaddrinfo() for a more powerful and flexible function to look up
+socket addresses given hostnames or textual addresses.
+
+=head2 $string = inet_ntop $family, $address
+
+Takes an address family and a packed binary address structure and translates
+it into a human-readable textual representation of the address; typically in
+C<d.d.d.d> form for C<AF_INET> or C<hhhh:hhhh::hhhh> form for C<AF_INET6>.
+
+See also getnameinfo() for a more powerful and flexible function to turn
+socket addresses into human-readable textual representations.
+
+=head2 ($err, @result) = getaddrinfo $host, $service, [$hints]
+
+Given both a hostname and service name, this function attempts to resolve the
+host name into a list of network addresses, and the service name into a
+protocol and port number, and then returns a list of address structures
+suitable to connect() to it.
+
+Given just a host name, this function attempts to resolve it to a list of
+network addresses, and then returns a list of address structures giving these
+addresses.
+
+Given just a service name, this function attempts to resolve it to a protocol
+and port number, and then returns a list of address structures that represent
+it suitable to bind() to. This use should be combined with the C<AI_PASSIVE>
+flag; see below.
+
+Given neither name, it generates an error.
+
+If present, $hints should be a reference to a hash, where the following keys
+are recognised:
+
+=over 4
+
+=item flags => INT
+
+A bitfield containing C<AI_*> constants; see below.
+
+=item family => INT
+
+Restrict to only generating addresses in this address family
+
+=item socktype => INT
+
+Restrict to only generating addresses of this socket type
+
+=item protocol => INT
+
+Restrict to only generating addresses for this protocol
+
+=back
+
+The return value will be a list; the first value being an error indication,
+followed by a list of address structures (if no error occurred).
+
+The error value will be a dualvar; comparable to the C<EI_*> error constants,
+or printable as a human-readable error message string. If no error occurred it
+will be zero numerically and an empty string.
+
+Each value in the results list will be a hash reference containing the following
+fields:
+
+=over 4
+
+=item family => INT
+
+The address family (e.g. C<AF_INET>)
+
+=item socktype => INT
+
+The socket type (e.g. C<SOCK_STREAM>)
+
+=item protocol => INT
+
+The protocol (e.g. C<IPPROTO_TCP>)
+
+=item addr => STRING
+
+The address in a packed string (such as would be returned by
+pack_sockaddr_in())
+
+=item canonname => STRING
+
+The canonical name for the host if the C<AI_CANONNAME> flag was provided, or
+C<undef> otherwise. This field will only be present on the first returned
+address.
+
+=back
+
+The following flag constants are recognised in the $hints hash. Other flag
+constants may exist as provided by the OS.
+
+=over 4
+
+=item AI_PASSIVE
+
+Indicates that this resolution is for a local bind() for a passive (i.e.
+listening) socket, rather than an active (i.e. connecting) socket.
+
+=item AI_CANONNAME
+
+Indicates that the caller wishes the canonical hostname (C<canonname>) field
+of the result to be filled in.
+
+=item AI_NUMERICHOST
+
+Indicates that the caller will pass a numeric address, rather than a hostname,
+and that getaddrinfo() must not perform a resolve operation on this name. This
+flag will prevent a possibly-slow network lookup operation, and instead return
+an error if a hostname is passed.
+
+=back
+
+=head2 ($err, $hostname, $servicename) = getnameinfo $sockaddr, [$flags, [$xflags]]
+
+Given a packed socket address (such as from getsockname(), getpeername(), or
+returned by getaddrinfo() in a C<addr> field), returns the hostname and
+symbolic service name it represents. $flags may be a bitmask of C<NI_*>
+constants, or defaults to 0 if unspecified.
+
+The return value will be a list; the first value being an error condition,
+followed by the hostname and service name.
+
+The error value will be a dualvar; comparable to the C<EI_*> error constants,
+or printable as a human-readable error message string. The host and service
+names will be plain strings.
+
+The following flag constants are recognised as $flags. Other flag constants may
+exist as provided by the OS.
+
+=over 4
+
+=item NI_NUMERICHOST
+
+Requests that a human-readable string representation of the numeric address be
+returned directly, rather than performing a name resolve operation that may
+convert it into a hostname. This will also avoid potentially-blocking network
+IO.
+
+=item NI_NUMERICSERV
+
+Requests that the port number be returned directly as a number representation
+rather than performing a name resolve operation that may convert it into a
+service name.
+
+=item NI_NAMEREQD
+
+If a name resolve operation fails to provide a name, then this flag will cause
+getnameinfo() to indicate an error, rather than returning the numeric
+representation as a human-readable string.
+
+=item NI_DGRAM
+
+Indicates that the socket address relates to a C<SOCK_DGRAM> socket, for the
+services whose name differs between TCP and UDP protocols.
+
+=back
+
+The following constants may be supplied as $xflags.
+
+=over 4
+
+=item NIx_NOHOST
+
+Indicates that the caller is not interested in the hostname of the result, so
+it does not have to be converted. C<undef> will be returned as the hostname.
+
+=item NIx_NOSERV
+
+Indicates that the caller is not interested in the service name of the result,
+so it does not have to be converted. C<undef> will be returned as the service
+name.
+
+=back
+
+=head1 getaddrinfo() / getnameinfo() ERROR CONSTANTS
+
+The following constants may be returned by getaddrinfo() or getnameinfo().
+Others may be provided by the OS.
+
+=over 4
+
+=item EAI_AGAIN
+
+A temporary failure occurred during name resolution. The operation may be
+successful if it is retried later.
+
+=item EAI_BADFLAGS
+
+The value of the C<flags> hint to getaddrinfo(), or the $flags parameter to
+getnameinfo() contains unrecognised flags.
+
+=item EAI_FAMILY
+
+The C<family> hint to getaddrinfo(), or the family of the socket address
+passed to getnameinfo() is not supported.
+
+=item EAI_NODATA
+
+The host name supplied to getaddrinfo() did not provide any usable address
+data.
+
+=item EAI_NONAME
+
+The host name supplied to getaddrinfo() does not exist, or the address
+supplied to getnameinfo() is not associated with a host name and the
+C<NI_NAMEREQD> flag was supplied.
+
+=item EAI_SERVICE
+
+The service name supplied to getaddrinfo() is not available for the socket
+type given in the $hints.
+
+=back
+
+=cut
+
+=head1 EXAMPLES
+
+=head2 Lookup for connect()
+
+The getaddrinfo() function converts a hostname and a service name into a list
+of structures, each containing a potential way to connect() to the named
+service on the named host.
+
+ use IO::Socket;
+ use Socket qw(SOCK_STREAM getaddrinfo);
+
+ my %hints = (socktype => SOCK_STREAM);
+ my ($err, @res) = getaddrinfo("localhost", "echo", \%hints);
+ die "Cannot getaddrinfo - $err" if $err;
+
+ my $sock;
+
+ foreach my $ai (@res) {
+     my $candidate = IO::Socket->new();
+
+     $candidate->socket($ai->{family}, $ai->{socktype}, $ai->{protocol})
+         or next;
+
+     $candidate->connect($ai->{addr})
+         or next;
+
+     $sock = $candidate;
+     last;
+ }
+
+ die "Cannot connect to localhost:echo" unless $sock;
+
+ $sock->print("Hello, world!\n");
+ print <$sock>;
+
+Because a list of potential candidates is returned, the C<while> loop tries
+each in turn until it it finds one that succeeds both the socket() and
+connect() calls.
+
+This function performs the work of the legacy functions gethostbyname(),
+getservbyname(), inet_aton() and pack_sockaddr_in().
+
+In practice this logic is better performed by L<IO::Socket::IP>.
+
+=head2 Making a human-readable string out of an address
+
+The getnameinfo() function converts a socket address, such as returned by
+getsockname() or getpeername(), into a pair of human-readable strings
+representing the address and service name.
+
+ use IO::Socket::IP;
+ use Socket qw(getnameinfo);
+
+ my $server = IO::Socket::IP->new(LocalPort => 12345, Listen => 1) or
+     die "Cannot listen - $@";
+
+ my $socket = $server->accept or die "accept: $!";
+
+ my ($err, $hostname, $servicename) = getnameinfo($socket->peername);
+ die "Cannot getnameinfo - $err" if $err;
+
+ print "The peer is connected from $hostname\n";
+
+Since in this example only the hostname was used, the redundant conversion of
+the port number into a service name may be omitted by passing the
+C<NIx_NOSERV> flag.
+
+ use Socket qw(getnameinfo NIx_NOSERV);
+
+ my ($err, $hostname) = getnameinfo($socket->peername, 0, NIx_NOSERV);
+
+This function performs the work of the legacy functions unpack_sockaddr_in(),
+inet_ntoa(), gethostbyaddr() and getservbyport().
+
+In practice this logic is better performed by L<IO::Socket::IP>.
+
+=head2 Resolving hostnames into IP addresses
+
+To turn a hostname into a human-readable plain IP address use getaddrinfo()
+to turn the hostname into a list of socket structures, then getnameinfo() on
+each one to make it a readable IP address again.
+
+ use Socket qw(:addrinfo SOCK_RAW);
+
+ my ($err, @res) = getaddrinfo($hostname, "", {socktype => SOCK_RAW});
+ die "Cannot getaddrinfo - $err" if $err;
+
+ while( my $ai = shift @res ) {
+     my ($err, $ipaddr) = getnameinfo($ai->{addr}, NI_NUMERICHOST, NIx_NOSERV);
+     die "Cannot getnameinfo - $err" if $err;
+
+     print "$ipaddr\n";
+ }
+
+The C<socktype> hint to getaddrinfo() filters the results to only include one
+socket type and protocol. Without this most OSes return three combinations,
+for C<SOCK_STREAM>, C<SOCK_DGRAM> and C<SOCK_RAW>, resulting in triplicate
+output of addresses. The C<NI_NUMERICHOST> flag to getnameinfo() causes it to
+return a string-formatted plain IP address, rather than reverse resolving it
+back into a hostname.
+
+This combination performs the work of the legacy functions gethostbyname()
+and inet_ntoa().
+
+=head2 Accessing socket options
+
+The many C<SO_*> and other constants provide the socket option names for
+getsockopt() and setsockopt().
+
+ use IO::Socket::INET;
+ use Socket qw(SOL_SOCKET SO_RCVBUF IPPROTO_IP IP_TTL);
+
+ my $socket = IO::Socket::INET->new(LocalPort => 0, Proto => 'udp')
+     or die "Cannot create socket: $@";
+
+ $socket->setsockopt(SOL_SOCKET, SO_RCVBUF, 64*1024) or
+     die "setsockopt: $!";
+
+ print "Receive buffer is ", $socket->getsockopt(SOL_SOCKET, SO_RCVBUF),
+     " bytes\n";
+
+ print "IP TTL is ", $socket->getsockopt(IPPROTO_IP, IP_TTL), "\n";
+
+As a convenience, L<IO::Socket>'s setsockopt() method will convert a number
+into a packed byte buffer, and getsockopt() will unpack a byte buffer of the
+correct size back into a number.
+
+=cut
+
+=head1 AUTHOR
+
+This module was originally maintained in Perl core by the Perl 5 Porters.
+
+It was extracted to dual-life on CPAN at version 1.95 by
+Paul Evans <leonerd at leonerd.org.uk>
+
+=cut
+
+use Carp;
+use warnings::register;
+
+require Exporter;
+require XSLoader;
+our @ISA = qw(Exporter);
+
+# <@Nicholas> you can't change @EXPORT without breaking the implicit API
+# Please put any new constants in @EXPORT_OK!
+
+# List re-ordered to match documentation above. Try to keep the ordering
+# consistent so it's easier to see which ones are or aren't documented.
+our @EXPORT = qw(
+	PF_802 PF_AAL PF_APPLETALK PF_CCITT PF_CHAOS PF_CTF PF_DATAKIT
+	PF_DECnet PF_DLI PF_ECMA PF_GOSIP PF_HYLINK PF_IMPLINK PF_INET PF_INET6
+	PF_ISO PF_KEY PF_LAST PF_LAT PF_LINK PF_MAX PF_NBS PF_NIT PF_NS PF_OSI
+	PF_OSINET PF_PUP PF_ROUTE PF_SNA PF_UNIX PF_UNSPEC PF_USER PF_WAN
+	PF_X25
+
+	AF_802 AF_AAL AF_APPLETALK AF_CCITT AF_CHAOS AF_CTF AF_DATAKIT
+	AF_DECnet AF_DLI AF_ECMA AF_GOSIP AF_HYLINK AF_IMPLINK AF_INET AF_INET6
+	AF_ISO AF_KEY AF_LAST AF_LAT AF_LINK AF_MAX AF_NBS AF_NIT AF_NS AF_OSI
+	AF_OSINET AF_PUP AF_ROUTE AF_SNA AF_UNIX AF_UNSPEC AF_USER AF_WAN
+	AF_X25
+
+	SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM
+
+	SOL_SOCKET
+
+	SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BROADCAST SO_CHAMELEON
+	SO_DEBUG SO_DETACH_FILTER SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER
+	SO_DONTROUTE SO_ERROR SO_FAMILY SO_KEEPALIVE SO_LINGER SO_OOBINLINE
+	SO_PASSCRED SO_PASSIFNAME SO_PEERCRED SO_PROTOCOL SO_PROTOTYPE
+	SO_RCVBUF SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT
+	SO_SECURITY_AUTHENTICATION SO_SECURITY_ENCRYPTION_NETWORK
+	SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
+	SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
+
+	IP_OPTIONS IP_HDRINCL IP_TOS IP_TTL IP_RECVOPTS IP_RECVRETOPTS
+	IP_RETOPTS
+
+	MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_CTRUNC MSG_DONTROUTE
+	MSG_DONTWAIT MSG_EOF MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN
+	MSG_MAXIOVLEN MSG_MCAST MSG_NOSIGNAL MSG_OOB MSG_PEEK MSG_PROXY MSG_RST
+	MSG_SYN MSG_TRUNC MSG_URG MSG_WAITALL MSG_WIRE
+
+	SHUT_RD SHUT_RDWR SHUT_WR
+
+	INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_NONE
+
+	SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_RIGHTS SCM_TIMESTAMP
+
+	SOMAXCONN
+
+	IOV_MAX
+	UIO_MAXIOV
+
+	sockaddr_family
+	pack_sockaddr_in  unpack_sockaddr_in  sockaddr_in
+	pack_sockaddr_in6 unpack_sockaddr_in6 sockaddr_in6
+	pack_sockaddr_un  unpack_sockaddr_un  sockaddr_un 
+
+	inet_aton inet_ntoa
+);
+
+# List re-ordered to match documentation above. Try to keep the ordering
+# consistent so it's easier to see which ones are or aren't documented.
+our @EXPORT_OK = qw(
+	CR LF CRLF $CR $LF $CRLF
+
+	SOCK_NONBLOCK SOCK_CLOEXEC
+
+	IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP
+	IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP
+	IP_MULTICAST_TTL
+
+	IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP
+	IPPROTO_UDP
+
+	TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO
+	TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL
+	TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT
+	TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT
+	TCP_WINDOW_CLAMP
+
+	IN6ADDR_ANY IN6ADDR_LOOPBACK
+
+	IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
+	IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
+	IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY
+
+	pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source
+
+	pack_ipv6_mreq unpack_ipv6_mreq
+
+	inet_pton inet_ntop
+
+	getaddrinfo getnameinfo
+
+	AI_ADDRCONFIG AI_ALL AI_CANONIDN AI_CANONNAME AI_IDN
+	AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES AI_NUMERICHOST
+	AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED
+
+	NI_DGRAM NI_IDN NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES
+	NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST NI_NUMERICSERV
+
+	NIx_NOHOST NIx_NOSERV
+
+	EAI_ADDRFAMILY EAI_AGAIN EAI_BADFLAGS EAI_BADHINTS EAI_FAIL EAI_FAMILY
+	EAI_NODATA EAI_NONAME EAI_PROTOCOL EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM
+);
+
+our %EXPORT_TAGS = (
+    crlf     => [qw(CR LF CRLF $CR $LF $CRLF)],
+    addrinfo => [qw(getaddrinfo getnameinfo), grep m/^(?:AI|NI|NIx|EAI)_/, @EXPORT_OK],
+    all      => [@EXPORT, @EXPORT_OK],
+);
+
+BEGIN {
+    sub CR   () {"\015"}
+    sub LF   () {"\012"}
+    sub CRLF () {"\015\012"}
+
+    # These are not gni() constants; they're extensions for the perl API
+    # The definitions in Socket.pm and Socket.xs must match
+    sub NIx_NOHOST() {1 << 0}
+    sub NIx_NOSERV() {1 << 1}
+}
+
+*CR   = \CR();
+*LF   = \LF();
+*CRLF = \CRLF();
+
+sub sockaddr_in {
+    if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die
+	my($af, $port, @quad) = @_;
+	warnings::warn "6-ARG sockaddr_in call is deprecated" 
+	    if warnings::enabled();
+	pack_sockaddr_in($port, inet_aton(join('.', @quad)));
+    } elsif (wantarray) {
+	croak "usage:   (port,iaddr) = sockaddr_in(sin_sv)" unless @_ == 1;
+        unpack_sockaddr_in(@_);
+    } else {
+	croak "usage:   sin_sv = sockaddr_in(port,iaddr))" unless @_ == 2;
+        pack_sockaddr_in(@_);
+    }
+}
+
+sub sockaddr_in6 {
+    if (wantarray) {
+	croak "usage:   (port,in6addr,scope_id,flowinfo) = sockaddr_in6(sin6_sv)" unless @_ == 1;
+	unpack_sockaddr_in6(@_);
+    }
+    else {
+	croak "usage:   sin6_sv = sockaddr_in6(port,in6addr,[scope_id,[flowinfo]])" unless @_ >= 2 and @_ <= 4;
+	pack_sockaddr_in6(@_);
+    }
+}
+
+sub sockaddr_un {
+    if (wantarray) {
+	croak "usage:   (filename) = sockaddr_un(sun_sv)" unless @_ == 1;
+        unpack_sockaddr_un(@_);
+    } else {
+	croak "usage:   sun_sv = sockaddr_un(filename)" unless @_ == 1;
+        pack_sockaddr_un(@_);
+    }
+}
+
+XSLoader::load(__PACKAGE__, $VERSION);
+
+my %errstr;
+
+if( defined &getaddrinfo ) {
+    # These are not part of the API, nothing uses them, and deleting them
+    # reduces the size of %Socket:: by about 12K
+    delete $Socket::{fake_getaddrinfo};
+    delete $Socket::{fake_getnameinfo};
+} else {
+    require Scalar::Util;
+
+    *getaddrinfo = \&fake_getaddrinfo;
+    *getnameinfo = \&fake_getnameinfo;
+
+    # These numbers borrowed from GNU libc's implementation, but since
+    # they're only used by our emulation, it doesn't matter if the real
+    # platform's values differ
+    my %constants = (
+	AI_PASSIVE     => 1,
+	AI_CANONNAME   => 2,
+	AI_NUMERICHOST => 4,
+	AI_V4MAPPED    => 8,
+	AI_ALL         => 16,
+	AI_ADDRCONFIG  => 32,
+	# RFC 2553 doesn't define this but Linux does - lets be nice and
+	# provide it since we can
+	AI_NUMERICSERV => 1024,
+
+	EAI_BADFLAGS   => -1,
+	EAI_NONAME     => -2,
+	EAI_NODATA     => -5,
+	EAI_FAMILY     => -6,
+	EAI_SERVICE    => -8,
+
+	NI_NUMERICHOST => 1,
+	NI_NUMERICSERV => 2,
+	NI_NOFQDN      => 4,
+	NI_NAMEREQD    => 8,
+	NI_DGRAM       => 16,
+
+	# Constants we don't support. Export them, but croak if anyone tries to
+	# use them
+	AI_IDN                      => 64,
+	AI_CANONIDN                 => 128,
+	AI_IDN_ALLOW_UNASSIGNED     => 256,
+	AI_IDN_USE_STD3_ASCII_RULES => 512,
+	NI_IDN                      => 32,
+	NI_IDN_ALLOW_UNASSIGNED     => 64,
+	NI_IDN_USE_STD3_ASCII_RULES => 128,
+
+	# Error constants we'll never return, so it doesn't matter what value
+	# these have, nor that we don't provide strings for them
+	EAI_SYSTEM   => -11,
+	EAI_BADHINTS => -1000,
+	EAI_PROTOCOL => -1001
+    );
+
+    foreach my $name ( keys %constants ) {
+	my $value = $constants{$name};
+
+	no strict 'refs';
+	defined &$name or *$name = sub () { $value };
+    }
+
+    %errstr = (
+	# These strings from RFC 2553
+	EAI_BADFLAGS()   => "invalid value for ai_flags",
+	EAI_NONAME()     => "nodename nor servname provided, or not known",
+	EAI_NODATA()     => "no address associated with nodename",
+	EAI_FAMILY()     => "ai_family not supported",
+	EAI_SERVICE()    => "servname not supported for ai_socktype",
+    );
+}
+
+# The following functions are used if the system does not have a
+# getaddrinfo(3) function in libc; and are used to emulate it for the AF_INET
+# family
+
+# Borrowed from Regexp::Common::net
+my $REGEXP_IPv4_DECIMAL = qr/25[0-5]|2[0-4][0-9]|1?[0-9][0-9]{1,2}/;
+my $REGEXP_IPv4_DOTTEDQUAD = qr/$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL/;
+
+sub fake_makeerr
+{
+    my ( $errno ) = @_;
+    my $errstr = $errno == 0 ? "" : ( $errstr{$errno} || $errno );
+    return Scalar::Util::dualvar( $errno, $errstr );
+}
+
+sub fake_getaddrinfo
+{
+    my ( $node, $service, $hints ) = @_;
+
+    $node = "" unless defined $node;
+
+    $service = "" unless defined $service;
+
+    my ( $family, $socktype, $protocol, $flags ) = @$hints{qw( family socktype protocol flags )};
+
+    $family ||= Socket::AF_INET(); # 0 == AF_UNSPEC, which we want too
+    $family == Socket::AF_INET() or return fake_makeerr( EAI_FAMILY() );
+
+    $socktype ||= 0;
+
+    $protocol ||= 0;
+
+    $flags ||= 0;
+
+    my $flag_passive     = $flags & AI_PASSIVE();     $flags &= ~AI_PASSIVE();
+    my $flag_canonname   = $flags & AI_CANONNAME();   $flags &= ~AI_CANONNAME();
+    my $flag_numerichost = $flags & AI_NUMERICHOST(); $flags &= ~AI_NUMERICHOST();
+    my $flag_numericserv = $flags & AI_NUMERICSERV(); $flags &= ~AI_NUMERICSERV();
+
+    # These constants don't apply to AF_INET-only lookups, so we might as well
+    # just ignore them. For AI_ADDRCONFIG we just presume the host has ability
+    # to talk AF_INET. If not we'd have to return no addresses at all. :)
+    $flags &= ~(AI_V4MAPPED()|AI_ALL()|AI_ADDRCONFIG());
+
+    $flags & (AI_IDN()|AI_CANONIDN()|AI_IDN_ALLOW_UNASSIGNED()|AI_IDN_USE_STD3_ASCII_RULES()) and
+	croak "Socket::getaddrinfo() does not support IDN";
+
+    $flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
+
+    $node eq "" and $service eq "" and return fake_makeerr( EAI_NONAME() );
+
+    my $canonname;
+    my @addrs;
+    if( $node ne "" ) {
+	return fake_makeerr( EAI_NONAME() ) if( $flag_numerichost and $node !~ m/^$REGEXP_IPv4_DOTTEDQUAD$/ );
+	( $canonname, undef, undef, undef, @addrs ) = gethostbyname( $node );
+	defined $canonname or return fake_makeerr( EAI_NONAME() );
+
+	undef $canonname unless $flag_canonname;
+    }
+    else {
+	$addrs[0] = $flag_passive ? Socket::inet_aton( "0.0.0.0" )
+				  : Socket::inet_aton( "127.0.0.1" );
+    }
+
+    my @ports; # Actually ARRAYrefs of [ socktype, protocol, port ]
+    my $protname = "";
+    if( $protocol ) {
+	$protname = getprotobynumber( $protocol );
+    }
+
+    if( $service ne "" and $service !~ m/^\d+$/ ) {
+	return fake_makeerr( EAI_NONAME() ) if( $flag_numericserv );
+	getservbyname( $service, $protname ) or return fake_makeerr( EAI_SERVICE() );
+    }
+
+    foreach my $this_socktype ( Socket::SOCK_STREAM(), Socket::SOCK_DGRAM(), Socket::SOCK_RAW() ) {
+	next if $socktype and $this_socktype != $socktype;
+
+	my $this_protname = "raw";
+	$this_socktype == Socket::SOCK_STREAM() and $this_protname = "tcp";
+	$this_socktype == Socket::SOCK_DGRAM()  and $this_protname = "udp";
+
+	next if $protname and $this_protname ne $protname;
+
+	my $port;
+	if( $service ne "" ) {
+	    if( $service =~ m/^\d+$/ ) {
+		$port = "$service";
+	    }
+	    else {
+		( undef, undef, $port, $this_protname ) = getservbyname( $service, $this_protname );
+		next unless defined $port;
+	    }
+	}
+	else {
+	    $port = 0;
+	}
+
+	push @ports, [ $this_socktype, scalar getprotobyname( $this_protname ) || 0, $port ];
+    }
+
+    my @ret;
+    foreach my $addr ( @addrs ) {
+	foreach my $portspec ( @ports ) {
+	    my ( $socktype, $protocol, $port ) = @$portspec;
+	    push @ret, {
+		family    => $family,
+		socktype  => $socktype,
+		protocol  => $protocol,
+		addr      => Socket::pack_sockaddr_in( $port, $addr ),
+		canonname => undef,
+	    };
+	}
+    }
+
+    # Only supply canonname for the first result
+    if( defined $canonname ) {
+	$ret[0]->{canonname} = $canonname;
+    }
+
+    return ( fake_makeerr( 0 ), @ret );
+}
+
+sub fake_getnameinfo
+{
+    my ( $addr, $flags, $xflags ) = @_;
+
+    my ( $port, $inetaddr );
+    eval { ( $port, $inetaddr ) = Socket::unpack_sockaddr_in( $addr ) }
+	or return fake_makeerr( EAI_FAMILY() );
+
+    my $family = Socket::AF_INET();
+
+    $flags ||= 0;
+
+    my $flag_numerichost = $flags & NI_NUMERICHOST(); $flags &= ~NI_NUMERICHOST();
+    my $flag_numericserv = $flags & NI_NUMERICSERV(); $flags &= ~NI_NUMERICSERV();
+    my $flag_nofqdn      = $flags & NI_NOFQDN();      $flags &= ~NI_NOFQDN();
+    my $flag_namereqd    = $flags & NI_NAMEREQD();    $flags &= ~NI_NAMEREQD();
+    my $flag_dgram       = $flags & NI_DGRAM()   ;    $flags &= ~NI_DGRAM();
+
+    $flags & (NI_IDN()|NI_IDN_ALLOW_UNASSIGNED()|NI_IDN_USE_STD3_ASCII_RULES()) and
+	croak "Socket::getnameinfo() does not support IDN";
+
+    $flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
+
+    $xflags ||= 0;
+
+    my $node;
+    if( $xflags & NIx_NOHOST ) {
+	$node = undef;
+    }
+    elsif( $flag_numerichost ) {
+	$node = Socket::inet_ntoa( $inetaddr );
+    }
+    else {
+	$node = gethostbyaddr( $inetaddr, $family );
+	if( !defined $node ) {
+	    return fake_makeerr( EAI_NONAME() ) if $flag_namereqd;
+	    $node = Socket::inet_ntoa( $inetaddr );
+	}
+	elsif( $flag_nofqdn ) {
+	    my ( $shortname ) = split m/\./, $node;
+	    my ( $fqdn ) = gethostbyname $shortname;
+	    $node = $shortname if defined $fqdn and $fqdn eq $node;
+	}
+    }
+
+    my $service;
+    if( $xflags & NIx_NOSERV ) {
+	$service = undef;
+    }
+    elsif( $flag_numericserv ) {
+	$service = "$port";
+    }
+    else {
+	my $protname = $flag_dgram ? "udp" : "";
+	$service = getservbyport( $port, $protname );
+	if( !defined $service ) {
+	    $service = "$port";
+	}
+    }
+
+    return ( fake_makeerr( 0 ), $node, $service );
+}
+
+1;

Added: vendor/perl/dist/cpan/Socket/Socket.xs
===================================================================
--- vendor/perl/dist/cpan/Socket/Socket.xs	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/Socket.xs	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1160 @@
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#include <stddef.h>
+
+#ifdef I_SYS_TYPES
+#  include <sys/types.h>
+#endif
+#if !defined(ultrix) /* Avoid double definition. */
+#   include <sys/socket.h>
+#endif
+#if defined(USE_SOCKS) && defined(I_SOCKS)
+#   include <socks.h>
+#endif
+#ifdef MPE
+#  define PF_INET AF_INET
+#  define PF_UNIX AF_UNIX
+#  define SOCK_RAW 3
+#endif
+#ifdef I_SYS_UN
+#  include <sys/un.h>
+#endif
+/* XXX Configure test for <netinet/in_systm.h needed XXX */
+#if defined(NeXT) || defined(__NeXT__)
+#  include <netinet/in_systm.h>
+#endif
+#if defined(__sgi) && !defined(AF_LINK) && defined(PF_LINK) && PF_LINK == AF_LNK
+#  undef PF_LINK
+#endif
+#if defined(I_NETINET_IN) || defined(__ultrix__)
+#  include <netinet/in.h>
+#endif
+#ifdef I_NETDB
+#  if !defined(ultrix)	/* Avoid double definition. */
+#   include <netdb.h>
+#  endif
+#endif
+#ifdef I_ARPA_INET
+#  include <arpa/inet.h>
+#endif
+#ifdef I_NETINET_TCP
+#  include <netinet/tcp.h>
+#endif
+
+#ifdef WIN32
+# include <ws2tcpip.h>
+#endif
+
+#ifdef NETWARE
+NETDB_DEFINE_CONTEXT
+NETINET_DEFINE_CONTEXT
+#endif
+
+#ifdef I_SYSUIO
+# include <sys/uio.h>
+#endif
+
+#ifndef AF_NBS
+# undef PF_NBS
+#endif
+
+#ifndef AF_X25
+# undef PF_X25
+#endif
+
+#ifndef INADDR_NONE
+# define INADDR_NONE	0xffffffff
+#endif /* INADDR_NONE */
+#ifndef INADDR_BROADCAST
+# define INADDR_BROADCAST	0xffffffff
+#endif /* INADDR_BROADCAST */
+#ifndef INADDR_LOOPBACK
+# define INADDR_LOOPBACK	 0x7F000001
+#endif /* INADDR_LOOPBACK */
+
+#ifndef C_ARRAY_LENGTH
+#define C_ARRAY_LENGTH(arr) (sizeof(arr) / sizeof(*(arr)))
+#endif /* !C_ARRAY_LENGTH */
+
+#ifndef PERL_UNUSED_VAR
+# define PERL_UNUSED_VAR(x) ((void)x)
+#endif /* !PERL_UNUSED_VAR */
+
+#ifndef PERL_UNUSED_ARG
+# define PERL_UNUSED_ARG(x) PERL_UNUSED_VAR(x)
+#endif /* !PERL_UNUSED_ARG */
+
+#ifndef Newx
+# define Newx(v,n,t) New(0,v,n,t)
+#endif /* !Newx */
+
+#ifndef croak_sv
+# define croak_sv(sv)	croak(SvPV_nolen(sv))
+#endif
+
+#ifndef hv_stores
+# define hv_stores(hv, keystr, val) \
+	hv_store(hv, ""keystr"", sizeof(keystr)-1, val, 0)
+#endif /* !hv_stores */
+
+#ifndef newSVpvn_flags
+# define newSVpvn_flags(s,len,flags) my_newSVpvn_flags(aTHX_ s,len,flags)
+static SV *my_newSVpvn_flags(pTHX_ const char *s, STRLEN len, U32 flags)
+{
+  SV *sv = newSVpvn(s, len);
+  SvFLAGS(sv) |= (flags & SVf_UTF8);
+  return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv;
+}
+#endif /* !newSVpvn_flags */
+
+#ifndef SvRV_set
+# define SvRV_set(sv, val) (SvRV(sv) = (val))
+#endif /* !SvRV_set */
+
+#ifndef SvPV_nomg
+# define SvPV_nomg SvPV
+#endif /* !SvPV_nomg */
+
+#ifndef HEK_FLAGS
+# define HEK_FLAGS(hek) 0
+# define HVhek_UTF8 1
+#endif /* !HEK_FLAGS */
+
+#ifndef hv_common
+/* These magic numbers are arbitrarily chosen (copied from perl core in fact)
+ * and only have to match between this definition and the code that uses them
+ */
+# define HV_FETCH_ISSTORE 0x04
+# define HV_FETCH_LVALUE  0x10
+# define hv_common(hv, keysv, key, klen, flags, act, val, hash) \
+	my_hv_common(aTHX_ hv, keysv, key, klen, flags, act, val, hash)
+static void *my_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
+	int flags, int act, SV *val, U32 hash)
+{
+	/*
+	 * This only handles the usage actually made by the code
+	 * generated by ExtUtils::Constant.  EU:C really ought to arrange
+	 * portability of its generated code itself.
+	 */
+	if (!keysv) {
+		keysv = sv_2mortal(newSVpvn(key, klen));
+		if (flags & HVhek_UTF8)
+			SvUTF8_on(keysv);
+	}
+	if (act == HV_FETCH_LVALUE) {
+		return (void*)hv_fetch_ent(hv, keysv, 1, hash);
+	} else if (act == HV_FETCH_ISSTORE) {
+		return (void*)hv_store_ent(hv, keysv, val, hash);
+	} else {
+		croak("panic: my_hv_common: act=0x%x", act);
+	}
+}
+#endif /* !hv_common */
+
+#ifndef hv_common_key_len
+# define hv_common_key_len(hv, key, kl, act, val, hash) \
+	my_hv_common_key_len(aTHX_ hv, key, kl, act, val, hash)
+static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl,
+	int act, SV *val, U32 hash)
+{
+	STRLEN klen;
+	int flags;
+	if (kl < 0) {
+		klen = -kl;
+		flags = HVhek_UTF8;
+	} else {
+		klen = kl;
+		flags = 0;
+	}
+	return hv_common(hv, NULL, key, klen, flags, act, val, hash);
+}
+#endif /* !hv_common_key_len */
+
+#ifndef mPUSHi
+# define mPUSHi(i) sv_setiv_mg(PUSHs(sv_newmortal()), (IV)(i))
+#endif /* !mPUSHi */
+#ifndef mPUSHp
+# define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l))
+#endif /* !mPUSHp */
+#ifndef mPUSHs
+# define mPUSHs(s) PUSHs(sv_2mortal(s))
+#endif /* !mPUSHs */
+
+#ifndef CvCONST_on
+# undef newCONSTSUB
+# define newCONSTSUB(stash, name, val) my_newCONSTSUB(aTHX_ stash, name, val)
+static CV *my_newCONSTSUB(pTHX_ HV *stash, char *name, SV *val)
+{
+	/*
+	 * This has to satisfy code generated by ExtUtils::Constant.
+	 * It depends on the 5.8+ layout of constant subs.  It has
+	 * two calls to newCONSTSUB(): one for real constants, and one
+	 * for undefined constants.  In the latter case, it turns the
+	 * initially-generated constant subs into something else, and
+	 * it needs the return value from newCONSTSUB() which Perl 5.6
+	 * doesn't provide.
+	 */
+	GV *gv;
+	CV *cv;
+	Perl_newCONSTSUB(aTHX_ stash, name, val);
+	ENTER;
+	SAVESPTR(PL_curstash);
+	PL_curstash = stash;
+	gv = gv_fetchpv(name, 0, SVt_PVCV);
+	cv = GvCV(gv);
+	LEAVE;
+	CvXSUBANY(cv).any_ptr = &PL_sv_undef;
+	return cv;
+}
+# define CvCONST_off(cv) my_CvCONST_off(aTHX_ cv)
+static void my_CvCONST_off(pTHX_ CV *cv)
+{
+	op_free(CvROOT(cv));
+	CvROOT(cv) = NULL;
+	CvSTART(cv) = NULL;
+}
+#endif /* !CvCONST_on */
+
+#ifndef HAS_INET_ATON
+
+/*
+ * Check whether "cp" is a valid ascii representation
+ * of an Internet address and convert to a binary address.
+ * Returns 1 if the address is valid, 0 if not.
+ * This replaces inet_addr, the return value from which
+ * cannot distinguish between failure and a local broadcast address.
+ */
+static int
+my_inet_aton(register const char *cp, struct in_addr *addr)
+{
+	dTHX;
+	register U32 val;
+	register int base;
+	register char c;
+	int nparts;
+	const char *s;
+	unsigned int parts[4];
+	register unsigned int *pp = parts;
+
+	if (!cp || !*cp)
+		return 0;
+	for (;;) {
+		/*
+		 * Collect number up to ".".
+		 * Values are specified as for C:
+		 * 0x=hex, 0=octal, other=decimal.
+		 */
+		val = 0; base = 10;
+		if (*cp == '0') {
+			if (*++cp == 'x' || *cp == 'X')
+				base = 16, cp++;
+			else
+				base = 8;
+		}
+		while ((c = *cp) != '\0') {
+			if (isDIGIT(c)) {
+				val = (val * base) + (c - '0');
+				cp++;
+				continue;
+			}
+			if (base == 16 && (s=strchr(PL_hexdigit,c))) {
+				val = (val << 4) +
+					((s - PL_hexdigit) & 15);
+				cp++;
+				continue;
+			}
+			break;
+		}
+		if (*cp == '.') {
+			/*
+			 * Internet format:
+			 *	a.b.c.d
+			 *	a.b.c	(with c treated as 16-bits)
+			 *	a.b	(with b treated as 24 bits)
+			 */
+			if (pp >= parts + 3 || val > 0xff)
+				return 0;
+			*pp++ = val, cp++;
+		} else
+			break;
+	}
+	/*
+	 * Check for trailing characters.
+	 */
+	if (*cp && !isSPACE(*cp))
+		return 0;
+	/*
+	 * Concoct the address according to
+	 * the number of parts specified.
+	 */
+	nparts = pp - parts + 1;	/* force to an int for switch() */
+	switch (nparts) {
+
+	case 1:				/* a -- 32 bits */
+		break;
+
+	case 2:				/* a.b -- 8.24 bits */
+		if (val > 0xffffff)
+			return 0;
+		val |= parts[0] << 24;
+		break;
+
+	case 3:				/* a.b.c -- 8.8.16 bits */
+		if (val > 0xffff)
+			return 0;
+		val |= (parts[0] << 24) | (parts[1] << 16);
+		break;
+
+	case 4:				/* a.b.c.d -- 8.8.8.8 bits */
+		if (val > 0xff)
+			return 0;
+		val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+		break;
+	}
+	addr->s_addr = htonl(val);
+	return 1;
+}
+
+#undef inet_aton
+#define inet_aton my_inet_aton
+
+#endif /* ! HAS_INET_ATON */
+
+/* These are not gni() constants; they're extensions for the perl API */
+/* The definitions in Socket.pm and Socket.xs must match */
+#define NIx_NOHOST   (1 << 0)
+#define NIx_NOSERV   (1 << 1)
+
+
+static int
+not_here(const char *s)
+{
+    croak("Socket::%s not implemented on this architecture", s);
+    return -1;
+}
+
+#define PERL_IN_ADDR_S_ADDR_SIZE 4
+
+/*
+* Bad assumptions possible here.
+*
+* Bad Assumption 1: struct in_addr has no other fields
+* than the s_addr (which is the field we care about
+* in here, really). However, we can be fed either 4-byte
+* addresses (from pack("N", ...), or va.b.c.d, or ...),
+* or full struct in_addrs (from e.g. pack_sockaddr_in()),
+* which may or may not be 4 bytes in size.
+*
+* Bad Assumption 2: the s_addr field is a simple type
+* (such as an int, u_int32_t).	It can be a bit field,
+* in which case using & (address-of) on it or taking sizeof()
+* wouldn't go over too well.  (Those are not attempted
+* now but in case someone thinks to change the below code
+* to use addr.s_addr instead of addr, you have been warned.)
+*
+* Bad Assumption 3: the s_addr is the first field in
+* an in_addr, or that its bytes are the first bytes in
+* an in_addr.
+*
+* These bad assumptions are wrong in UNICOS which has
+* struct in_addr { struct { u_long  st_addr:32; } s_da };
+* #define s_addr s_da.st_addr
+* and u_long is 64 bits.
+*
+* --jhi */
+
+#include "const-c.inc"
+
+#ifdef HAS_GETADDRINFO
+static SV *err_to_SV(pTHX_ int err)
+{
+	SV *ret = sv_newmortal();
+	(void) SvUPGRADE(ret, SVt_PVNV);
+
+	if(err) {
+		const char *error = gai_strerror(err);
+		sv_setpv(ret, error);
+	}
+	else {
+		sv_setpv(ret, "");
+	}
+
+	SvIV_set(ret, err); SvIOK_on(ret);
+
+	return ret;
+}
+
+static void xs_getaddrinfo(pTHX_ CV *cv)
+{
+	dXSARGS;
+
+	SV   *host;
+	SV   *service;
+	SV   *hints;
+
+	char *hostname = NULL;
+	char *servicename = NULL;
+	STRLEN len;
+	struct addrinfo hints_s;
+	struct addrinfo *res;
+	struct addrinfo *res_iter;
+	int err;
+	int n_res;
+
+	PERL_UNUSED_ARG(cv);
+	if(items > 3)
+		croak("Usage: Socket::getaddrinfo(host, service, hints)");
+
+	SP -= items;
+
+	if(items < 1)
+		host = &PL_sv_undef;
+	else
+		host = ST(0);
+
+	if(items < 2)
+		service = &PL_sv_undef;
+	else
+		service = ST(1);
+
+	if(items < 3)
+		hints = NULL;
+	else
+		hints = ST(2);
+
+	SvGETMAGIC(host);
+	if(SvOK(host)) {
+		hostname = SvPV_nomg(host, len);
+		if (!len)
+			hostname = NULL;
+	}
+
+	SvGETMAGIC(service);
+	if(SvOK(service)) {
+		servicename = SvPV_nomg(service, len);
+		if (!len)
+			servicename = NULL;
+	}
+
+	Zero(&hints_s, sizeof(hints_s), char);
+	hints_s.ai_family = PF_UNSPEC;
+
+	if(hints && SvOK(hints)) {
+		HV *hintshash;
+		SV **valp;
+
+		if(!SvROK(hints) || SvTYPE(SvRV(hints)) != SVt_PVHV)
+			croak("hints is not a HASH reference");
+
+		hintshash = (HV*)SvRV(hints);
+
+		if((valp = hv_fetch(hintshash, "flags", 5, 0)) != NULL && SvOK(*valp))
+			hints_s.ai_flags = SvIV(*valp);
+		if((valp = hv_fetch(hintshash, "family", 6, 0)) != NULL && SvOK(*valp))
+			hints_s.ai_family = SvIV(*valp);
+		if((valp = hv_fetch(hintshash, "socktype", 8, 0)) != NULL && SvOK(*valp))
+			hints_s.ai_socktype = SvIV(*valp);
+		if((valp = hv_fetch(hintshash, "protocol", 8, 0)) != NULL && SvOK(*valp))
+			hints_s.ai_protocol = SvIV(*valp);
+	}
+
+	err = getaddrinfo(hostname, servicename, &hints_s, &res);
+
+	XPUSHs(err_to_SV(aTHX_ err));
+
+	if(err)
+		XSRETURN(1);
+
+	n_res = 0;
+	for(res_iter = res; res_iter; res_iter = res_iter->ai_next) {
+		HV *res_hv = newHV();
+
+		(void)hv_stores(res_hv, "family",   newSViv(res_iter->ai_family));
+		(void)hv_stores(res_hv, "socktype", newSViv(res_iter->ai_socktype));
+		(void)hv_stores(res_hv, "protocol", newSViv(res_iter->ai_protocol));
+
+		(void)hv_stores(res_hv, "addr",     newSVpvn((char*)res_iter->ai_addr, res_iter->ai_addrlen));
+
+		if(res_iter->ai_canonname)
+			(void)hv_stores(res_hv, "canonname", newSVpv(res_iter->ai_canonname, 0));
+		else
+			(void)hv_stores(res_hv, "canonname", newSV(0));
+
+		XPUSHs(sv_2mortal(newRV_noinc((SV*)res_hv)));
+		n_res++;
+	}
+
+	freeaddrinfo(res);
+
+	XSRETURN(1 + n_res);
+}
+#endif
+
+#ifdef HAS_GETNAMEINFO
+static void xs_getnameinfo(pTHX_ CV *cv)
+{
+	dXSARGS;
+
+	SV  *addr;
+	int  flags;
+	int  xflags;
+
+	char host[1024];
+	char serv[256];
+	char *sa; /* we'll cast to struct sockaddr * when necessary */
+	STRLEN addr_len;
+	int err;
+
+	int want_host, want_serv;
+
+	PERL_UNUSED_ARG(cv);
+	if(items < 1 || items > 3)
+		croak("Usage: Socket::getnameinfo(addr, flags=0, xflags=0)");
+
+	SP -= items;
+
+	addr = ST(0);
+
+	if(items < 2)
+		flags = 0;
+	else
+		flags = SvIV(ST(1));
+
+	if(items < 3)
+		xflags = 0;
+	else
+		xflags = SvIV(ST(2));
+
+	want_host = !(xflags & NIx_NOHOST);
+	want_serv = !(xflags & NIx_NOSERV);
+
+	if(!SvPOK(addr))
+		croak("addr is not a string");
+
+	addr_len = SvCUR(addr);
+
+	/* We need to ensure the sockaddr is aligned, because a random SvPV might
+	 * not be due to SvOOK */
+	Newx(sa, addr_len, char);
+	Copy(SvPV_nolen(addr), sa, addr_len, char);
+#ifdef HAS_SOCKADDR_SA_LEN
+	((struct sockaddr *)sa)->sa_len = addr_len;
+#endif
+
+	err = getnameinfo((struct sockaddr *)sa, addr_len,
+			want_host ? host : NULL, want_host ? sizeof(host) : 0,
+			want_serv ? serv : NULL, want_serv ? sizeof(serv) : 0,
+			flags);
+
+	Safefree(sa);
+
+	XPUSHs(err_to_SV(aTHX_ err));
+
+	if(err)
+		XSRETURN(1);
+
+	XPUSHs(want_host ? sv_2mortal(newSVpv(host, 0)) : &PL_sv_undef);
+	XPUSHs(want_serv ? sv_2mortal(newSVpv(serv, 0)) : &PL_sv_undef);
+
+	XSRETURN(3);
+}
+#endif
+
+MODULE = Socket		PACKAGE = Socket
+
+INCLUDE: const-xs.inc
+
+BOOT:
+#ifdef HAS_GETADDRINFO
+	newXS("Socket::getaddrinfo", xs_getaddrinfo, __FILE__);
+#endif
+#ifdef HAS_GETNAMEINFO
+	newXS("Socket::getnameinfo", xs_getnameinfo, __FILE__);
+#endif
+
+void
+inet_aton(host)
+	char *	host
+	CODE:
+	{
+	struct in_addr ip_address;
+	struct hostent * phe;
+
+	if ((*host != '\0') && inet_aton(host, &ip_address)) {
+		ST(0) = sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address)));
+		XSRETURN(1);
+	}
+
+	phe = gethostbyname(host);
+	if (phe && phe->h_addrtype == AF_INET && phe->h_length == 4) {
+		ST(0) = sv_2mortal(newSVpvn((char *)phe->h_addr, phe->h_length));
+		XSRETURN(1);
+	}
+
+	XSRETURN_UNDEF;
+	}
+
+void
+inet_ntoa(ip_address_sv)
+	SV *	ip_address_sv
+	CODE:
+	{
+	STRLEN addrlen;
+	struct in_addr addr;
+	char * ip_address;
+	if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1))
+		croak("Wide character in %s", "Socket::inet_ntoa");
+	ip_address = SvPVbyte(ip_address_sv, addrlen);
+	if (addrlen == sizeof(addr) || addrlen == 4)
+		addr.s_addr =
+		    (ip_address[0] & 0xFF) << 24 |
+		    (ip_address[1] & 0xFF) << 16 |
+		    (ip_address[2] & 0xFF) <<  8 |
+		    (ip_address[3] & 0xFF);
+	else
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::inet_ntoa", (UV)addrlen, (UV)sizeof(addr));
+	/* We could use inet_ntoa() but that is broken
+	 * in HP-UX + GCC + 64bitint (returns "0.0.0.0"),
+	 * so let's use this sprintf() workaround everywhere.
+	 * This is also more threadsafe than using inet_ntoa(). */
+	ST(0) = sv_2mortal(Perl_newSVpvf(aTHX_ "%d.%d.%d.%d", /* IPv6? */
+					 ((addr.s_addr >> 24) & 0xFF),
+					 ((addr.s_addr >> 16) & 0xFF),
+					 ((addr.s_addr >>  8) & 0xFF),
+					 ( addr.s_addr        & 0xFF)));
+	}
+
+void
+sockaddr_family(sockaddr)
+	SV *	sockaddr
+	PREINIT:
+	STRLEN sockaddr_len;
+	char *sockaddr_pv = SvPVbyte(sockaddr, sockaddr_len);
+	CODE:
+	if (sockaddr_len < offsetof(struct sockaddr, sa_data))
+		croak("Bad arg length for %s, length is %"UVuf", should be at least %"UVuf,
+		      "Socket::sockaddr_family", (UV)sockaddr_len,
+		      (UV)offsetof(struct sockaddr, sa_data));
+	ST(0) = sv_2mortal(newSViv(((struct sockaddr*)sockaddr_pv)->sa_family));
+
+void
+pack_sockaddr_un(pathname)
+	SV *	pathname
+	CODE:
+	{
+#ifdef I_SYS_UN
+	struct sockaddr_un sun_ad; /* fear using sun */
+	STRLEN len;
+	char * pathname_pv;
+	int addr_len;
+
+	Zero(&sun_ad, sizeof(sun_ad), char);
+	sun_ad.sun_family = AF_UNIX;
+	pathname_pv = SvPV(pathname,len);
+	if (len > sizeof(sun_ad.sun_path))
+	    len = sizeof(sun_ad.sun_path);
+#  ifdef OS2	/* Name should start with \socket\ and contain backslashes! */
+	{
+		int off;
+		char *s, *e;
+
+		if (pathname_pv[0] != '/' && pathname_pv[0] != '\\')
+			croak("Relative UNIX domain socket name '%s' unsupported",
+			      pathname_pv);
+		else if (len < 8
+			 || pathname_pv[7] != '/' && pathname_pv[7] != '\\'
+			 || !strnicmp(pathname_pv + 1, "socket", 6))
+			off = 7;
+		else
+			off = 0;	/* Preserve names starting with \socket\ */
+		Copy("\\socket", sun_ad.sun_path, off, char);
+		Copy(pathname_pv, sun_ad.sun_path + off, len, char);
+
+		s = sun_ad.sun_path + off - 1;
+		e = s + len + 1;
+		while (++s < e)
+			if (*s = '/')
+				*s = '\\';
+	}
+#  else	/* !( defined OS2 ) */
+	Copy(pathname_pv, sun_ad.sun_path, len, char);
+#  endif
+	if (0) not_here("dummy");
+	if (len > 1 && sun_ad.sun_path[0] == '\0') {
+		/* Linux-style abstract-namespace socket.
+		 * The name is not a file name, but an array of arbitrary
+		 * character, starting with \0 and possibly including \0s,
+		 * therefore the length of the structure must denote the
+		 * end of that character array */
+		addr_len = (char *)&(sun_ad.sun_path) - (char *)&sun_ad + len;
+	} else {
+		addr_len = sizeof(sun_ad);
+	}
+#  ifdef HAS_SOCKADDR_SA_LEN
+	sun_ad.sun_len = addr_len;
+#  endif
+	ST(0) = sv_2mortal(newSVpvn((char *)&sun_ad, addr_len));
+#else
+	ST(0) = (SV*)not_here("pack_sockaddr_un");
+#endif
+	
+	}
+
+void
+unpack_sockaddr_un(sun_sv)
+	SV *	sun_sv
+	CODE:
+	{
+#ifdef I_SYS_UN
+	struct sockaddr_un addr;
+	STRLEN sockaddrlen;
+	char * sun_ad = SvPVbyte(sun_sv,sockaddrlen);
+	int addr_len;
+#   ifdef __linux__
+	/* On Linux sockaddrlen on sockets returned by accept, recvfrom,
+	   getpeername and getsockname is not equal to sizeof(addr). */
+	if (sockaddrlen < sizeof(addr)) {
+	  Copy(sun_ad, &addr, sockaddrlen, char);
+	  Zero(((char*)&addr) + sockaddrlen, sizeof(addr) - sockaddrlen, char);
+	} else {
+	  Copy(sun_ad, &addr, sizeof(addr), char);
+	}
+#   else
+	if (sockaddrlen != sizeof(addr))
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::unpack_sockaddr_un", (UV)sockaddrlen, (UV)sizeof(addr));
+	Copy(sun_ad, &addr, sizeof(addr), char);
+#   endif
+
+	if (addr.sun_family != AF_UNIX)
+		croak("Bad address family for %s, got %d, should be %d",
+		      "Socket::unpack_sockaddr_un", addr.sun_family, AF_UNIX);
+
+	if (addr.sun_path[0] == '\0') {
+		/* Linux-style abstract socket address begins with a nul
+		 * and can contain nuls. */
+		addr_len = (char *)&addr - (char *)&(addr.sun_path) + sockaddrlen;
+	} else {
+		for (addr_len = 0; addr.sun_path[addr_len]
+		     && addr_len < (int)sizeof(addr.sun_path); addr_len++);
+	}
+
+	ST(0) = sv_2mortal(newSVpvn(addr.sun_path, addr_len));
+#else
+	ST(0) = (SV*)not_here("unpack_sockaddr_un");
+#endif
+	}
+
+void
+pack_sockaddr_in(port, ip_address_sv)
+	unsigned short	port
+	SV *	ip_address_sv
+	CODE:
+	{
+	struct sockaddr_in sin;
+	struct in_addr addr;
+	STRLEN addrlen;
+	char * ip_address;
+	if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1))
+		croak("Wide character in %s", "Socket::pack_sockaddr_in");
+	ip_address = SvPVbyte(ip_address_sv, addrlen);
+	if (addrlen == sizeof(addr) || addrlen == 4)
+		addr.s_addr =
+		    (ip_address[0] & 0xFF) << 24 |
+		    (ip_address[1] & 0xFF) << 16 |
+		    (ip_address[2] & 0xFF) <<  8 |
+		    (ip_address[3] & 0xFF);
+	else
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_sockaddr_in",
+		      (UV)addrlen, (UV)sizeof(addr));
+	Zero(&sin, sizeof(sin), char);
+	sin.sin_family = AF_INET;
+	sin.sin_port = htons(port);
+	sin.sin_addr.s_addr = htonl(addr.s_addr);
+#  ifdef HAS_SOCKADDR_SA_LEN
+	sin.sin_len = sizeof(sin);
+#  endif
+	ST(0) = sv_2mortal(newSVpvn((char *)&sin, sizeof(sin)));
+	}
+
+void
+unpack_sockaddr_in(sin_sv)
+	SV *	sin_sv
+	PPCODE:
+	{
+	STRLEN sockaddrlen;
+	struct sockaddr_in addr;
+	SV *ip_address_sv;
+	char *	sin = SvPVbyte(sin_sv,sockaddrlen);
+	if (sockaddrlen != sizeof(addr)) {
+	    croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		  "Socket::unpack_sockaddr_in", sockaddrlen, sizeof(addr));
+	}
+	Copy(sin, &addr, sizeof(addr), char);
+	if (addr.sin_family != AF_INET) {
+	    croak("Bad address family for %s, got %d, should be %d",
+		  "Socket::unpack_sockaddr_in", addr.sin_family, AF_INET);
+	}
+	ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr));
+
+	if(GIMME_V == G_ARRAY) {
+	    EXTEND(SP, 2);
+	    mPUSHi(ntohs(addr.sin_port));
+	    mPUSHs(ip_address_sv);
+	}
+	else {
+	    mPUSHs(ip_address_sv);
+	}
+	}
+
+void
+pack_sockaddr_in6(port, sin6_addr, scope_id=0, flowinfo=0)
+	unsigned short	port
+	SV *	sin6_addr
+	unsigned long	scope_id
+	unsigned long	flowinfo
+	CODE:
+	{
+#ifdef HAS_SOCKADDR_IN6
+	struct sockaddr_in6 sin6;
+	char * addrbytes;
+	STRLEN addrlen;
+	if (DO_UTF8(sin6_addr) && !sv_utf8_downgrade(sin6_addr, 1))
+		croak("Wide character in %s", "Socket::pack_sockaddr_in6");
+	addrbytes = SvPVbyte(sin6_addr, addrlen);
+	if (addrlen != sizeof(sin6.sin6_addr))
+		croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6.sin6_addr));
+	Zero(&sin6, sizeof(sin6), char);
+	sin6.sin6_family = AF_INET6;
+	sin6.sin6_port = htons(port);
+	sin6.sin6_flowinfo = htonl(flowinfo);
+	Copy(addrbytes, &sin6.sin6_addr, sizeof(sin6.sin6_addr), char);
+#  ifdef HAS_SIN6_SCOPE_ID
+	sin6.sin6_scope_id = scope_id;
+#  else
+	if (scope_id != 0)
+	    warn("%s cannot represent non-zero scope_id %d",
+		 "Socket::pack_sockaddr_in6", scope_id);
+#  endif
+#  ifdef HAS_SOCKADDR_SA_LEN
+	sin6.sin6_len = sizeof(sin6);
+#  endif
+	ST(0) = sv_2mortal(newSVpvn((char *)&sin6, sizeof(sin6)));
+#else
+	ST(0) = (SV*)not_here("pack_sockaddr_in6");
+#endif
+	}
+
+void
+unpack_sockaddr_in6(sin6_sv)
+	SV *	sin6_sv
+	PPCODE:
+	{
+#ifdef HAS_SOCKADDR_IN6
+	STRLEN addrlen;
+	struct sockaddr_in6 sin6;
+	char * addrbytes = SvPVbyte(sin6_sv, addrlen);
+	SV *ip_address_sv;
+	if (addrlen != sizeof(sin6))
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6));
+	Copy(addrbytes, &sin6, sizeof(sin6), char);
+	if (sin6.sin6_family != AF_INET6)
+		croak("Bad address family for %s, got %d, should be %d",
+		      "Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6);
+	ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
+
+	if(GIMME_V == G_ARRAY) {
+	    EXTEND(SP, 4);
+	    mPUSHi(ntohs(sin6.sin6_port));
+	    mPUSHs(ip_address_sv);
+#  ifdef HAS_SIN6_SCOPE_ID
+	    mPUSHi(sin6.sin6_scope_id);
+#  else
+	    mPUSHi(0);
+#  endif
+	    mPUSHi(ntohl(sin6.sin6_flowinfo));
+	}
+	else {
+	    mPUSHs(ip_address_sv);
+	}
+#else
+	ST(0) = (SV*)not_here("pack_sockaddr_in6");
+#endif
+	}
+
+void
+inet_ntop(af, ip_address_sv)
+	int	af
+	SV *	ip_address_sv
+	CODE:
+#ifdef HAS_INETNTOP
+	STRLEN addrlen;
+#ifdef AF_INET6
+	struct in6_addr addr;
+	char str[INET6_ADDRSTRLEN];
+#else
+	struct in_addr addr;
+	char str[INET_ADDRSTRLEN];
+#endif
+	char *ip_address;
+
+	if (DO_UTF8(ip_address_sv) && !sv_utf8_downgrade(ip_address_sv, 1))
+		croak("Wide character in %s", "Socket::inet_ntop");
+
+	ip_address = SvPV(ip_address_sv, addrlen);
+
+	switch(af) {
+	  case AF_INET:
+	    if(addrlen != 4)
+		croak("Bad address length for Socket::inet_ntop on AF_INET;"
+		      " got %"UVuf", should be 4", (UV)addrlen);
+	    break;
+#ifdef AF_INET6
+	  case AF_INET6:
+	    if(addrlen != 16)
+		croak("Bad address length for Socket::inet_ntop on AF_INET6;"
+		      " got %"UVuf", should be 16", (UV)addrlen);
+	    break;
+#endif
+	  default:
+		croak("Bad address family for %s, got %d, should be"
+#ifdef AF_INET6
+		      " either AF_INET or AF_INET6",
+#else
+		      " AF_INET",
+#endif
+		      "Socket::inet_ntop", af);
+	}
+
+	if(addrlen < sizeof(addr)) {
+	    Copy(ip_address, &addr, addrlen, char);
+	    Zero(((char*)&addr) + addrlen, sizeof(addr) - addrlen, char);
+	}
+	else {
+	    Copy(ip_address, &addr, sizeof addr, char);
+	}
+	inet_ntop(af, &addr, str, sizeof str);
+
+	ST(0) = sv_2mortal(newSVpvn(str, strlen(str)));
+#else
+	ST(0) = (SV*)not_here("inet_ntop");
+#endif
+
+void
+inet_pton(af, host)
+	int	      af
+	const char *  host
+	CODE:
+#ifdef HAS_INETPTON
+	int ok;
+	int addrlen = 0;
+#ifdef AF_INET6
+	struct in6_addr ip_address;
+#else
+	struct in_addr ip_address;
+#endif
+
+	switch(af) {
+	  case AF_INET:
+	    addrlen = 4;
+	    break;
+#ifdef AF_INET6
+	  case AF_INET6:
+	    addrlen = 16;
+	    break;
+#endif
+	  default:
+		croak("Bad address family for %s, got %d, should be"
+#ifdef AF_INET6
+		      " either AF_INET or AF_INET6",
+#else
+		      " AF_INET",
+#endif
+		      "Socket::inet_pton", af);
+	}
+	ok = (*host != '\0') && inet_pton(af, host, &ip_address);
+
+	ST(0) = sv_newmortal();
+	if (ok) {
+		sv_setpvn( ST(0), (char *)&ip_address, addrlen);
+	}
+#else
+	ST(0) = (SV*)not_here("inet_pton");
+#endif
+
+void
+pack_ip_mreq(multiaddr, interface=&PL_sv_undef)
+	SV *	multiaddr
+	SV *	interface
+	CODE:
+	{
+#ifdef HAS_IP_MREQ
+	struct ip_mreq mreq;
+	char * multiaddrbytes;
+	char * interfacebytes;
+	STRLEN len;
+	if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+		croak("Wide character in %s", "Socket::pack_ip_mreq");
+	multiaddrbytes = SvPVbyte(multiaddr, len);
+	if (len != sizeof(mreq.imr_multiaddr))
+		croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
+	Zero(&mreq, sizeof(mreq), char);
+	Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
+	if(SvOK(interface)) {
+		if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
+			croak("Wide character in %s", "Socket::pack_ip_mreq");
+		interfacebytes = SvPVbyte(interface, len);
+		if (len != sizeof(mreq.imr_interface))
+			croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+			      "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
+		Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
+	}
+	else
+		mreq.imr_interface.s_addr = INADDR_ANY;
+	ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
+#else
+	not_here("pack_ip_mreq");
+#endif
+	}
+
+void
+unpack_ip_mreq(mreq_sv)
+	SV * mreq_sv
+	PPCODE:
+	{
+#ifdef HAS_IP_MREQ
+	struct ip_mreq mreq;
+	STRLEN mreqlen;
+	char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
+	if (mreqlen != sizeof(mreq))
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::unpack_ip_mreq", (UV)mreqlen, (UV)sizeof(mreq));
+	Copy(mreqbytes, &mreq, sizeof(mreq), char);
+	EXTEND(SP, 2);
+	mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
+	mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
+#else
+	not_here("unpack_ip_mreq");
+#endif
+	}
+
+void
+pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef)
+	SV *	multiaddr
+	SV *	source
+	SV *	interface
+	CODE:
+	{
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+	struct ip_mreq_source mreq;
+	char * multiaddrbytes;
+	char * sourcebytes;
+	char * interfacebytes;
+	STRLEN len;
+	if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+		croak("Wide character in %s", "Socket::pack_ip_mreq_source");
+	multiaddrbytes = SvPVbyte(multiaddr, len);
+	if (len != sizeof(mreq.imr_multiaddr))
+		croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr));
+	if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1))
+		croak("Wide character in %s", "Socket::pack_ip_mreq_source");
+	if (len != sizeof(mreq.imr_sourceaddr))
+		croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr));
+	sourcebytes = SvPVbyte(source, len);
+	Zero(&mreq, sizeof(mreq), char);
+	Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char);
+	Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), char);
+	if(SvOK(interface)) {
+		if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1))
+			croak("Wide character in %s", "Socket::pack_ip_mreq");
+		interfacebytes = SvPVbyte(interface, len);
+		if (len != sizeof(mreq.imr_interface))
+			croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+			      "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface));
+		Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char);
+	}
+	else
+		mreq.imr_interface.s_addr = INADDR_ANY;
+	ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
+#else
+	not_here("pack_ip_mreq_source");
+#endif
+	}
+
+void
+unpack_ip_mreq_source(mreq_sv)
+	SV * mreq_sv
+	PPCODE:
+	{
+#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
+	struct ip_mreq_source mreq;
+	STRLEN mreqlen;
+	char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
+	if (mreqlen != sizeof(mreq))
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::unpack_ip_mreq_source", (UV)mreqlen, (UV)sizeof(mreq));
+	Copy(mreqbytes, &mreq, sizeof(mreq), char);
+	EXTEND(SP, 3);
+	mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr));
+	mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr));
+	mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface));
+#else
+	not_here("unpack_ip_mreq_source");
+#endif
+	}
+
+void
+pack_ipv6_mreq(multiaddr, interface)
+	SV *	multiaddr
+	unsigned int	interface
+	CODE:
+	{
+#ifdef HAS_IPV6_MREQ
+	struct ipv6_mreq mreq;
+	char * multiaddrbytes;
+	STRLEN len;
+	if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1))
+		croak("Wide character in %s", "Socket::pack_ipv6_mreq");
+	multiaddrbytes = SvPVbyte(multiaddr, len);
+	if (len != sizeof(mreq.ipv6mr_multiaddr))
+		croak("Bad arg length %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::pack_ipv6_mreq", (UV)len, (UV)sizeof(mreq.ipv6mr_multiaddr));
+	Zero(&mreq, sizeof(mreq), char);
+	Copy(multiaddrbytes, &mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr), char);
+	mreq.ipv6mr_interface = interface;
+	ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq)));
+#else
+	not_here("pack_ipv6_mreq");
+#endif
+	}
+
+void
+unpack_ipv6_mreq(mreq_sv)
+	SV * mreq_sv
+	PPCODE:
+	{
+#ifdef HAS_IPV6_MREQ
+	struct ipv6_mreq mreq;
+	STRLEN mreqlen;
+	char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
+	if (mreqlen != sizeof(mreq))
+		croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
+		      "Socket::unpack_ipv6_mreq", (UV)mreqlen, (UV)sizeof(mreq));
+	Copy(mreqbytes, &mreq, sizeof(mreq), char);
+	EXTEND(SP, 2);
+	mPUSHp((char *)&mreq.ipv6mr_multiaddr, sizeof(mreq.ipv6mr_multiaddr));
+	mPUSHi(mreq.ipv6mr_interface);
+#else
+	not_here("unpack_ipv6_mreq");
+#endif
+	}

Added: vendor/perl/dist/cpan/Socket/t/Socket.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/Socket.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/Socket.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!./perl
+
+BEGIN {
+    require Config; import Config;
+    if ($Config{'extensions'} !~ /\bSocket\b/ && 
+        !(($^O eq 'VMS') && $Config{d_socket})) {
+	print "1..0\n";
+	exit 0;
+    }
+    $has_alarm = $Config{d_alarm};
+}
+	
+use Socket qw(:all);
+use Test::More tests => 6;
+
+$has_echo = $^O ne 'MSWin32';
+$alarmed = 0;
+sub arm      { $alarmed = 0; alarm(shift) if $has_alarm }
+sub alarmed  { $alarmed = 1 }
+$SIG{ALRM} = 'alarmed'                    if $has_alarm;
+
+SKIP: {
+    unless(socket(T, PF_INET, SOCK_STREAM, IPPROTO_TCP)) {
+	skip "No PF_INET", 3;
+    }
+
+    pass "socket(PF_INET)";
+
+    arm(5);
+    my $host = $^O eq 'MacOS' || ($^O eq 'irix' && $Config{osvers} == 5) ?
+			 	 '127.0.0.1' : 'localhost';
+    my $localhost = inet_aton($host);
+
+    SKIP: {
+	unless($has_echo && defined $localhost && connect(T,pack_sockaddr_in(7,$localhost))) {
+	    skip "Unable to connect to localhost:7", 2;
+	}
+
+	arm(0);
+
+	pass "PF_INET echo localhost connected";
+
+	diag "Connected to " .
+		inet_ntoa((unpack_sockaddr_in(getpeername(T)))[1])."\n";
+
+	arm(5);
+	syswrite(T,"hello",5);
+	arm(0);
+
+	arm(5);
+	$read = sysread(T,$buff,10);	# Connection may be granted, then closed!
+	arm(0);
+
+	while ($read > 0 && length($buff) < 5) {
+	    # adjust for fact that TCP doesn't guarantee size of reads/writes
+	    arm(5);
+	    $read = sysread(T,$buff,10,length($buff));
+	    arm(0);
+	}
+
+	ok(($read == 0 || $buff eq "hello"), "PF_INET echo localhost reply");
+    }
+}
+
+SKIP: {
+    unless(socket(S, PF_INET, SOCK_STREAM, IPPROTO_TCP)) {
+	skip "No PF_INET", 3;
+    }
+
+    pass "socket(PF_INET)";
+
+    SKIP: {
+	arm(5);
+	unless($has_echo && connect(S,pack_sockaddr_in(7,INADDR_LOOPBACK))) {
+	    skip "Unable to connect to localhost:7", 2;
+	}
+
+        arm(0);
+
+	pass "PF_INET echo INADDR_LOOPBACK connected";
+
+	diag "Connected to " .
+		inet_ntoa((unpack_sockaddr_in(getpeername(S)))[1])."\n";
+
+	arm(5);
+	syswrite(S,"olleh",5);
+	arm(0);
+
+	arm(5);
+	$read = sysread(S,$buff,10);	# Connection may be granted, then closed!
+	arm(0);
+
+	while ($read > 0 && length($buff) < 5) {
+	    # adjust for fact that TCP doesn't guarantee size of reads/writes
+	    arm(5);
+	    $read = sysread(S,$buff,10,length($buff));
+	    arm(0);
+	}
+
+	ok(($read == 0 || $buff eq "olleh"), "PF_INET echo INADDR_LOOPBACK reply");
+    }
+}

Added: vendor/perl/dist/cpan/Socket/t/getaddrinfo.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/getaddrinfo.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/getaddrinfo.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,122 @@
+use strict;
+use warnings;
+use Test::More tests => 30;
+
+use Socket qw(:addrinfo AF_INET SOCK_STREAM IPPROTO_TCP unpack_sockaddr_in inet_aton);
+
+my ( $err, @res );
+
+( $err, @res ) = getaddrinfo( "127.0.0.1", "80", { socktype => SOCK_STREAM } );
+cmp_ok( $err, "==", 0, '$err == 0 for host=127.0.0.1/service=80/socktype=STREAM' );
+cmp_ok( $err, "eq", "", '$err eq "" for host=127.0.0.1/service=80/socktype=STREAM' );
+is( scalar @res, 1,
+    '@res has 1 result' );
+
+is( $res[0]->{family}, AF_INET,
+    '$res[0] family is AF_INET' );
+is( $res[0]->{socktype}, SOCK_STREAM,
+    '$res[0] socktype is SOCK_STREAM' );
+ok( $res[0]->{protocol} == 0 || $res[0]->{protocol} == IPPROTO_TCP,
+    '$res[0] protocol is 0 or IPPROTO_TCP' );
+ok( defined $res[0]->{addr},
+    '$res[0] addr is defined' );
+if (length $res[0]->{addr}) {
+    is_deeply( [ unpack_sockaddr_in $res[0]->{addr} ],
+	       [ 80, inet_aton( "127.0.0.1" ) ],
+	       '$res[0] addr is {"127.0.0.1", 80}' );
+} else {
+    fail( '$res[0] addr is empty: check $socksizetype' );
+}
+
+# Check actual IV integers work just as well as PV strings
+( $err, @res ) = getaddrinfo( "127.0.0.1", 80, { socktype => SOCK_STREAM } );
+cmp_ok( $err, "==", 0, '$err == 0 for host=127.0.0.1/service=80/socktype=STREAM' );
+is_deeply( [ unpack_sockaddr_in $res[0]->{addr} ],
+           [ 80, inet_aton( "127.0.0.1" ) ],
+           '$res[0] addr is {"127.0.0.1", 80}' );
+
+( $err, @res ) = getaddrinfo( "127.0.0.1", "" );
+cmp_ok( $err, "==", 0, '$err == 0 for host=127.0.0.1' );
+# Might get more than one; e.g. different socktypes
+ok( scalar @res > 0, '@res has results' );
+
+( $err, @res ) = getaddrinfo( "127.0.0.1", undef );
+cmp_ok( $err, "==", 0, '$err == 0 for host=127.0.0.1/service=undef' );
+
+# Test GETMAGIC
+{
+    "127.0.0.1" =~ /(.+)/;
+    ( $err, @res ) = getaddrinfo($1, undef);
+    cmp_ok( $err, "==", 0, '$err == 0 for host=$1' );
+    ok( scalar @res > 0, '@res has results' );
+    is( (unpack_sockaddr_in $res[0]->{addr})[1],
+	inet_aton( "127.0.0.1" ),
+	'$res[0] addr is {"127.0.0.1", ??}' );
+}
+
+( $err, @res ) = getaddrinfo( "", "80", { family => AF_INET, socktype => SOCK_STREAM } );
+cmp_ok( $err, "==", 0, '$err == 0 for service=80/family=AF_INET/socktype=STREAM' );
+is( scalar @res, 1, '@res has 1 result' );
+
+# Just pick the first one
+is( $res[0]->{family}, AF_INET,
+    '$res[0] family is AF_INET' );
+is( $res[0]->{socktype}, SOCK_STREAM,
+    '$res[0] socktype is SOCK_STREAM' );
+ok( $res[0]->{protocol} == 0 || $res[0]->{protocol} == IPPROTO_TCP,
+    '$res[0] protocol is 0 or IPPROTO_TCP' );
+
+# Now some tests of a few well-known internet hosts
+my $goodhost = "cpan.perl.org";
+
+SKIP: {
+    skip "Resolver has no answer for $goodhost", 2 unless gethostbyname( $goodhost );
+
+    ( $err, @res ) = getaddrinfo( "cpan.perl.org", "ftp", { socktype => SOCK_STREAM } );
+    cmp_ok( $err, "==", 0, '$err == 0 for host=cpan.perl.org/service=ftp/socktype=STREAM' );
+    # Might get more than one; e.g. different families
+    ok( scalar @res > 0, '@res has results' );
+}
+
+# Now something I hope doesn't exist - we put it in a known-missing TLD
+my $missinghost = "TbK4jM2M0OS.lm57DWIyu4i";
+
+# Some CPAN testing machines seem to have wildcard DNS servers that reply to
+# any request. We'd better check for them
+
+SKIP: {
+    skip "Resolver has an answer for $missinghost", 1 if gethostbyname( $missinghost );
+
+    # Some OSes return $err == 0 but no results
+    ( $err, @res ) = getaddrinfo( $missinghost, "ftp", { socktype => SOCK_STREAM } );
+    ok( $err != 0 || ( $err == 0 && @res == 0 ),
+	'$err != 0 or @res == 0 for host=TbK4jM2M0OS.lm57DWIyu4i/service=ftp/socktype=SOCK_STREAM' );
+    if( @res ) {
+	# Diagnostic that might help
+	while( my $r = shift @res ) {
+	    diag( "family=$r->{family} socktype=$r->{socktype} protocol=$r->{protocol} addr=[" . length( $r->{addr} ) . " bytes]" );
+	    diag( "  addr=" . join( ", ", map { sprintf '0x%02x', ord $_ } split m//, $r->{addr} ) );
+	}
+    }
+}
+
+# Now check that names with AI_NUMERICHOST fail
+
+( $err, @res ) = getaddrinfo( "localhost", "ftp", { flags => AI_NUMERICHOST, socktype => SOCK_STREAM } );
+ok( $err != 0, '$err != 0 for host=localhost/service=ftp/flags=AI_NUMERICHOST/socktype=SOCK_STREAM' );
+
+# Some sanity checking on the hints hash
+ok( defined eval { getaddrinfo( "127.0.0.1", "80", undef ); 1 },
+    'getaddrinfo() with undef hints works' );
+ok( !defined eval { getaddrinfo( "127.0.0.1", "80", "hints" ); 1 },
+    'getaddrinfo() with string hints dies' );
+ok( !defined eval { getaddrinfo( "127.0.0.1", "80", [] ); 1 },
+    'getaddrinfo() with ARRAY hints dies' );
+
+# Ensure it doesn't segfault if args are missing
+
+( $err, @res ) = getaddrinfo();
+ok( defined $err, '$err defined for getaddrinfo()' );
+
+( $err, @res ) = getaddrinfo( "127.0.0.1" );
+ok( defined $err, '$err defined for getaddrinfo("127.0.0.1")' );

Added: vendor/perl/dist/cpan/Socket/t/getnameinfo.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/getnameinfo.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/getnameinfo.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+use strict;
+use warnings;
+use Test::More tests => 14;
+
+use Socket qw(:addrinfo AF_INET pack_sockaddr_in inet_aton);
+
+my ( $err, $host, $service );
+
+( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV );
+cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST|NI_NUMERICSERV' );
+cmp_ok( $err, "eq", "", '$err eq "" for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST|NI_NUMERICSERV' );
+
+is( $host, "127.0.0.1", '$host is 127.0.0.1 for NH/NS' );
+is( $service, "80", '$service is 80 for NH/NS' );
+
+( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV, NIx_NOHOST );
+is( $host, undef, '$host is undef for NIx_NOHOST' );
+is( $service, "80", '$service is 80 for NS, NIx_NOHOST' );
+
+( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST|NI_NUMERICSERV, NIx_NOSERV );
+is( $host, "127.0.0.1", '$host is undef for NIx_NOSERV' );
+is( $service, undef, '$service is 80 for NS, NIx_NOSERV' );
+
+# Probably "localhost" but we'd better ask the system to be sure
+my $expect_host = gethostbyaddr( inet_aton( "127.0.0.1" ), AF_INET );
+defined $expect_host or $expect_host = "127.0.0.1";
+
+( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICSERV );
+cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICSERV' );
+
+is( $host, $expect_host, "\$host is $expect_host for NS" );
+is( $service, "80", '$service is 80 for NS' );
+
+# Probably "www" but we'd better ask the system to be sure
+my $expect_service = getservbyport( 80, "tcp" );
+defined $expect_service or $expect_service = "80";
+
+( $err, $host, $service ) = getnameinfo( pack_sockaddr_in( 80, inet_aton( "127.0.0.1" ) ), NI_NUMERICHOST );
+cmp_ok( $err, "==", 0, '$err == 0 for {family=AF_INET,port=80,sinaddr=127.0.0.1}/NI_NUMERICHOST' );
+
+is( $host, "127.0.0.1", '$host is 127.0.0.1 for NH' );
+is( $service, $expect_service, "\$service is $expect_service for NH" );

Added: vendor/perl/dist/cpan/Socket/t/ip_mreq.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/ip_mreq.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/ip_mreq.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,41 @@
+use strict;
+use warnings;
+use Test::More;
+
+use Socket qw(
+    INADDR_ANY
+    pack_ip_mreq unpack_ip_mreq
+    pack_ip_mreq_source unpack_ip_mreq_source
+);
+
+# Check that pack/unpack_ip_mreq either croak with "Not implemented", or
+# roundtrip as identity
+
+my $packed;
+eval {
+    $packed = pack_ip_mreq "\xe0\0\0\1", INADDR_ANY;
+};
+if( !defined $packed ) {
+    plan skip_all => "No pack_ip_mreq" if $@ =~ m/ not implemented /;
+    die $@;
+}
+
+plan tests => 6;
+
+my @unpacked = unpack_ip_mreq $packed;
+
+is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' );
+is( $unpacked[1], INADDR_ANY,   'unpack_ip_mreq interface' );
+
+is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' );
+
+SKIP: {
+    my $mreq;
+    skip "No pack_ip_mreq_source", 3 unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY };
+
+    @unpacked = unpack_ip_mreq_source $mreq;
+
+    is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' );
+    is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' );
+    is( $unpacked[2], INADDR_ANY,   'unpack_ip_mreq_source interface' );
+}

Added: vendor/perl/dist/cpan/Socket/t/ipv6_mreq.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/ipv6_mreq.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/ipv6_mreq.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,26 @@
+use strict;
+use warnings;
+use Test::More;
+
+use Socket qw(
+    pack_ipv6_mreq unpack_ipv6_mreq
+);
+
+# Check that pack/unpack_ipv6_mreq either croak with "Not implemented", or
+# roundtrip as identity
+
+my $packed;
+eval {
+    $packed = pack_ipv6_mreq "ANADDRESSIN16CHR", 123;
+};
+if( !defined $packed ) {
+    plan skip_all => "No pack_ipv6_mreq" if $@ =~ m/ not implemented /;
+    die $@;
+}
+
+plan tests => 2;
+
+my @unpacked = unpack_ipv6_mreq $packed;
+
+is( $unpacked[0], "ANADDRESSIN16CHR", 'unpack_ipv6_mreq multiaddr' );
+is( $unpacked[1], 123,                'unpack_ipv6_mreq ifindex' );

Added: vendor/perl/dist/cpan/Socket/t/sockaddr.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/sockaddr.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/sockaddr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,137 @@
+#!./perl
+
+use strict;
+use warnings;
+
+use Socket qw(
+    AF_INET
+    inet_ntoa inet_aton inet_ntop inet_pton
+    pack_sockaddr_in unpack_sockaddr_in sockaddr_in
+    sockaddr_family
+    sockaddr_un
+);
+use Test::More tests => 33;
+
+# inet_aton, inet_ntoa
+{
+    is(join(".", unpack("C*",inet_aton("10.20.30.40"))), "10.20.30.40", 'inet_aton returns packed bytes');
+
+    is(inet_ntoa(v10.20.30.40), "10.20.30.40", 'inet_ntoa from v-string');
+
+    is(inet_ntoa(inet_aton("10.20.30.40")), "10.20.30.40", 'inet_aton->inet_ntoa roundtrip');
+
+    local $@;
+    eval { inet_ntoa(v10.20.30.400) };
+    like($@, qr/^Wide character in Socket::inet_ntoa at/, 'inet_ntoa warns about wide characters');
+}
+
+# inet_ntop, inet_pton
+SKIP: {
+    skip "No inet_ntop", 5 unless defined eval { inet_pton(AF_INET, "10.20.30.40") };
+
+    is(join(".", unpack("C*",inet_pton(AF_INET, "10.20.30.40"))), "10.20.30.40", 'inet_pton AF_INET returns packed bytes');
+
+    is(inet_ntop(AF_INET, v10.20.30.40), "10.20.30.40", 'inet_ntop AF_INET from v-string');
+
+    is(inet_ntop(AF_INET, inet_pton(AF_INET, "10.20.30.40")), "10.20.30.40", 'inet_pton->inet_ntop AF_INET roundtrip');
+    is(inet_ntop(AF_INET, inet_aton("10.20.30.40")), "10.20.30.40", 'inet_aton->inet_ntop AF_INET roundtrip');
+
+    local $@;
+    eval { inet_ntop(AF_INET, v10.20.30.400) };
+    like($@, qr/^Wide character in Socket::inet_ntop at/, 'inet_ntop warns about wide characters');
+}
+
+SKIP: {
+    skip "No AF_INET6", 3 unless my $AF_INET6 = eval { Socket::AF_INET6() };
+    skip "No inet_ntop", 3 unless defined eval { inet_pton($AF_INET6, "2460::1") };
+
+    is(uc unpack("H*",inet_pton($AF_INET6, "2001:503:BA3E::2:30")), "20010503BA3E00000000000000020030",
+        'inet_pton AF_INET6 returns packed bytes');
+
+    is(uc inet_ntop($AF_INET6, "\x20\x01\x05\x03\xBA\x3E\x00\x00\x00\x00\x00\x00\x00\x02\x00\x30"), "2001:503:BA3E::2:30",
+        'inet_ntop AF_INET6 from octet string');
+
+    is(lc inet_ntop($AF_INET6, inet_pton($AF_INET6, "2001:503:BA3E::2:30")), "2001:503:ba3e::2:30",
+        'inet_pton->inet_ntop AF_INET6 roundtrip');
+}
+
+# sockaddr_family
+{
+    local $@;
+    eval { sockaddr_family("") };
+    like($@, qr/^Bad arg length for Socket::sockaddr_family, length is 0, should be at least \d+/, 'sockaddr_family warns about argument length');
+}
+
+# pack_sockaddr_in, unpack_sockaddr_in
+# sockaddr_in
+{
+    my $sin = pack_sockaddr_in 100, inet_aton("10.20.30.40");
+    ok(defined $sin, 'pack_sockaddr_in defined');
+
+    is(sockaddr_family($sin), AF_INET, 'sockaddr_family of pack_sockaddr_in' );
+
+    is(          (unpack_sockaddr_in($sin))[0] , 100,           'pack_sockaddr_in->unpack_sockaddr_in port');
+    is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr');
+
+    is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr');
+
+    is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ],
+        'sockaddr_in in list context unpacks' );
+
+    is(sockaddr_family(scalar sockaddr_in(200,v10.30.50.70)), AF_INET,
+        'sockaddr_in in scalar context packs');
+}
+
+# pack_sockaddr_in6, unpack_sockaddr_in6
+# sockaddr_in6
+SKIP: {
+    skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() };
+    skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
+
+    ok(defined $sin6, 'pack_sockaddr_in6 defined');
+
+    is(sockaddr_family($sin6), $AF_INET6, 'sockaddr_family of pack_sockaddr_in6');
+
+    is((Socket::unpack_sockaddr_in6($sin6))[0], 0x1234,             'pack_sockaddr_in6->unpack_sockaddr_in6 port');
+    is((Socket::unpack_sockaddr_in6($sin6))[1], "0123456789abcdef", 'pack_sockaddr_in6->unpack_sockaddr_in6 addr');
+    is((Socket::unpack_sockaddr_in6($sin6))[2], 0,                  'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id');
+    is((Socket::unpack_sockaddr_in6($sin6))[3], 89,                 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo');
+
+    is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr');
+
+    is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ],
+        'sockaddr_in6 in list context unpacks' );
+
+    is(sockaddr_family(scalar Socket::sockaddr_in6(0x1357, "02468ace13579bdf")), $AF_INET6,
+        'sockaddr_in6 in scalar context packs' );
+}
+
+# sockaddr_un
+SKIP: {
+    # see if we can handle abstract sockets
+    skip "Abstract AF_UNIX paths unsupported", 2 unless $^O eq "linux";
+
+    my $test_abstract_socket = chr(0) . '/org/perl/hello'. chr(0) . 'world';
+    my $addr = sockaddr_un ($test_abstract_socket);
+    my ($path) = sockaddr_un ($addr);
+    is($path, $test_abstract_socket, 'sockaddr_un can handle abstract AF_UNIX paths');
+
+    # see if we calculate the address structure length correctly
+    is(length ($test_abstract_socket) + 2, length $addr, 'sockaddr_un abstract address length');
+}
+
+# warnings
+{
+    my $w = 0;
+    local $SIG{__WARN__} = sub {
+	++ $w if $_[0] =~ /^6-ARG sockaddr_in call is deprecated/ ;
+    };
+
+    no warnings 'Socket';
+    sockaddr_in(1,2,3,4,5,6) ;
+    is($w, 0, "sockaddr_in deprecated form doesn't warn without lexical warnings");
+
+    use warnings 'Socket';
+    sockaddr_in(1,2,3,4,5,6) ;
+    is($w, 1, "sockaddr_in deprecated form warns with lexical warnings");
+}

Added: vendor/perl/dist/cpan/Socket/t/socketpair.t
===================================================================
--- vendor/perl/dist/cpan/Socket/t/socketpair.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/t/socketpair.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,244 @@
+#!./perl -w
+
+my $child;
+my $can_fork;
+my $has_perlio;
+
+BEGIN {
+    require Config; import Config;
+    $can_fork = $Config{'d_fork'} || $Config{'d_pseudofork'};
+
+    if ($^O eq "hpux" or $Config{'extensions'} !~ /\bSocket\b/ &&
+        !(($^O eq 'VMS') && $Config{d_socket})) {
+	print "1..0\n";
+	exit 0;
+    }
+}
+
+{
+    # This was in the BEGIN block, but since Test::More 0.47 added support to
+    # detect forking, we don't need to fork before Test::More initialises.
+
+    # Too many things in this test will hang forever if something is wrong,
+    # so we need a self destruct timer. And IO can hang despite an alarm.
+
+    if( $can_fork) {
+	my $parent = $$;
+	$child = fork;
+	die "Fork failed" unless defined $child;
+	if (!$child) {
+	    $SIG{INT} = sub {exit 0}; # You have 60 seconds. Your time starts now.
+	    my $must_finish_by = time + 60;
+	    my $remaining;
+	    while (($remaining = $must_finish_by - time) > 0) {
+		sleep $remaining;
+	    }
+	    warn "Something unexpectedly hung during testing";
+	    kill "INT", $parent or die "Kill failed: $!";
+	    exit 1;
+	}
+    }
+    unless ($has_perlio = PerlIO::Layer->can("find") && PerlIO::Layer->find('perlio')) {
+	print <<EOF;
+# Since you don't have perlio you might get failures with UTF-8 locales.
+EOF
+    }
+}
+
+use Socket;
+use Test::More;
+use strict;
+use warnings;
+use Errno;
+
+my $skip_reason;
+
+if( !$Config{d_alarm} ) {
+    plan skip_all => "alarm() not implemented on this platform";
+} elsif( !$can_fork ) {
+    plan skip_all => "fork() not implemented on this platform";
+} else {
+    # This should fail but not die if there is real socketpair
+    eval {socketpair LEFT, RIGHT, -1, -1, -1};
+    if ($@ =~ /^Unsupported socket function "socketpair" called/ ||
+	$! =~ /^The operation requested is not supported./) { # Stratus VOS
+	plan skip_all => 'No socketpair (real or emulated)';
+    } else {
+	eval {AF_UNIX};
+	if ($@ =~ /^Your vendor has not defined Socket macro AF_UNIX/) {
+	    plan skip_all => 'No AF_UNIX';
+	} else {
+	    plan tests => 45;
+	}
+    }
+}
+
+# But we'll install an alarm handler in case any of the races below fail.
+$SIG{ALRM} = sub {die "Unexpected alarm during testing"};
+
+ok (socketpair (LEFT, RIGHT, AF_UNIX, SOCK_STREAM, PF_UNSPEC),
+    "socketpair (LEFT, RIGHT, AF_UNIX, SOCK_STREAM, PF_UNSPEC)")
+    or print "# \$\! = $!\n";
+
+if ($has_perlio) {
+    binmode(LEFT,  ":bytes");
+    binmode(RIGHT, ":bytes");
+}
+
+my @left = ("hello ", "world\n");
+my @right = ("perl ", "rules!"); # Not like I'm trying to bias any survey here.
+
+foreach (@left) {
+    # is (syswrite (LEFT, $_), length $_, "write " . _qq ($_) . " to left");
+    is (syswrite (LEFT, $_), length $_, "syswrite to left");
+}
+foreach (@right) {
+    # is (syswrite (RIGHT, $_), length $_, "write " . _qq ($_) . " to right");
+    is (syswrite (RIGHT, $_), length $_, "syswrite to right");
+}
+
+# stream socket, so our writes will become joined:
+my ($buffer, $expect);
+$expect = join '', @right;
+undef $buffer;
+is (read (LEFT, $buffer, length $expect), length $expect, "read on left");
+is ($buffer, $expect, "content what we expected?");
+$expect = join '', @left;
+undef $buffer;
+is (read (RIGHT, $buffer, length $expect), length $expect, "read on right");
+is ($buffer, $expect, "content what we expected?");
+
+ok (shutdown(LEFT, SHUT_WR), "shutdown left for writing");
+# This will hang forever if eof is buggy, and alarm doesn't interrupt system
+# Calls. Hence the child process minder.
+SKIP: {
+    skip "SCO Unixware / OSR have a bug with shutdown",2 if $^O =~ /^(?:svr|sco)/;
+    local $SIG{ALRM} = sub { warn "EOF on right took over 3 seconds" };
+    local $TODO = "Known problems with unix sockets on $^O"
+	if $^O eq 'hpux'   || $^O eq 'super-ux';
+    alarm 3;
+    $! = 0;
+    ok (eof RIGHT, "right is at EOF");
+    local $TODO = "Known problems with unix sockets on $^O"
+	if $^O eq 'unicos' || $^O eq 'unicosmk';
+    is ($!, '', 'and $! should report no error');
+    alarm 60;
+}
+
+my $err = $!;
+$SIG{PIPE} = 'IGNORE';
+{
+    local $SIG{ALRM} =
+	sub { warn "syswrite to left didn't fail within 3 seconds" };
+    alarm 3;
+    # Split the system call from the is() - is() does IO so
+    # (say) a flush may do a seek which on a pipe may disturb errno
+    my $ans = syswrite (LEFT, "void");
+    $err = $!;
+    is ($ans, undef, "syswrite to shutdown left should fail");
+    alarm 60;
+}
+{
+    # This may need skipping on some OSes - restoring value saved above
+    # should help
+    $! = $err;
+    ok (($!{EPIPE} or $!{ESHUTDOWN}), '$! should be EPIPE or ESHUTDOWN')
+	or printf "\$\!=%d(%s)\n", $err, $err;
+}
+
+my @gripping = (chr 255, chr 127);
+foreach (@gripping) {
+    is (syswrite (RIGHT, $_), length $_, "syswrite to right");
+}
+
+ok (!eof LEFT, "left is not at EOF");
+
+$expect = join '', @gripping;
+undef $buffer;
+is (read (LEFT, $buffer, length $expect), length $expect, "read on left");
+is ($buffer, $expect, "content what we expected?");
+
+ok (close LEFT, "close left");
+ok (close RIGHT, "close right");
+
+
+# And now datagrams
+# I suspect we also need a self destruct time-bomb for these, as I don't see any
+# guarantee that the stack won't drop a UDP packet, even if it is for localhost.
+
+SKIP: {
+    skip "No usable SOCK_DGRAM for socketpair", 24 if ($^O =~ /^(MSWin32|os2)\z/);
+    skip "alarm doesn't interrupt I/O on this Perl", 24 if "$]" < 5.008;
+    local $TODO = "socketpair not supported on $^O" if $^O eq 'nto';
+
+    ok (socketpair (LEFT, RIGHT, AF_UNIX, SOCK_DGRAM, PF_UNSPEC),
+	"socketpair (LEFT, RIGHT, AF_UNIX, SOCK_DGRAM, PF_UNSPEC)")
+	or print "# \$\! = $!\n";
+
+    if ($has_perlio) {
+	binmode(LEFT,  ":bytes");
+	binmode(RIGHT, ":bytes");
+    }
+
+    foreach (@left) {
+	# is (syswrite (LEFT, $_), length $_, "write " . _qq ($_) . " to left");
+	is (syswrite (LEFT, $_), length $_, "syswrite to left");
+    }
+    foreach (@right) {
+	# is (syswrite (RIGHT, $_), length $_, "write " . _qq ($_) . " to right");
+	is (syswrite (RIGHT, $_), length $_, "syswrite to right");
+    }
+
+    # stream socket, so our writes will become joined:
+    my ($total);
+    $total = join '', @right;
+    foreach $expect (@right) {
+	undef $buffer;
+	is (sysread (LEFT, $buffer, length $total), length $expect, "read on left");
+	is ($buffer, $expect, "content what we expected?");
+    }
+    $total = join '', @left;
+    foreach $expect (@left) {
+	undef $buffer;
+	is (sysread (RIGHT, $buffer, length $total), length $expect, "read on right");
+	is ($buffer, $expect, "content what we expected?");
+    }
+
+    ok (shutdown(LEFT, 1), "shutdown left for writing");
+
+    # eof uses buffering. eof is indicated by a sysread of zero.
+    # but for a datagram socket there's no way it can know nothing will ever be
+    # sent
+    SKIP: {
+	skip "$^O does length 0 udp reads", 2 if ($^O eq 'os390');
+
+	my $alarmed = 0;
+	local $SIG{ALRM} = sub { $alarmed = 1; };
+	print "# Approximate forever as 3 seconds. Wait 'forever'...\n";
+	alarm 3;
+	undef $buffer;
+	is (sysread (RIGHT, $buffer, 1), undef,
+	    "read on right should be interrupted");
+	is ($alarmed, 1, "alarm should have fired");
+    }
+
+    alarm 30;
+
+    foreach (@gripping) {
+	is (syswrite (RIGHT, $_), length $_, "syswrite to right");
+    }
+
+    $total = join '', @gripping;
+    foreach $expect (@gripping) {
+	undef $buffer;
+	is (sysread (LEFT, $buffer, length $total), length $expect, "read on left");
+	is ($buffer, $expect, "content what we expected?");
+    }
+
+    ok (close LEFT, "close left");
+    ok (close RIGHT, "close right");
+
+} # end of DGRAM SKIP
+
+kill "INT", $child or warn "Failed to kill child process $child: $!";
+exit 0;

Added: vendor/perl/dist/cpan/Socket/typemap
===================================================================
--- vendor/perl/dist/cpan/Socket/typemap	                        (rev 0)
+++ vendor/perl/dist/cpan/Socket/typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+TYPEMAP
+const char *	T_PV

Added: vendor/perl/dist/cpan/Sys-Syslog/t/facilities-routing.t
===================================================================
--- vendor/perl/dist/cpan/Sys-Syslog/t/facilities-routing.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Sys-Syslog/t/facilities-routing.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,143 @@
+#!perl -w
+# --------------------------------------------------------------------
+# Try to send messages with all combinations of facilities and levels
+# to a POE syslog server.
+# --------------------------------------------------------------------
+use strict;
+use warnings;
+
+use Test::More;
+use Socket;
+use Sys::Syslog 0.30 qw< :standard :extended :macros >;
+
+
+# check than POE is available
+plan skip_all => "POE is not available" unless eval "use POE; 1";
+
+# check than POE::Component::Server::Syslog is available and recent enough
+plan skip_all => "POE::Component::Server::Syslog is not available"
+    unless eval "use POE::Component::Server::Syslog; 1";
+plan skip_all => "POE::Component::Server::Syslog is too old"
+    if POE::Component::Server::Syslog->VERSION < 1.14;
+
+
+my $host    = "127.0.0.1";
+my $port    = 5140;
+my $proto   = "udp";
+my $ident   = "pocosyslog";
+
+my @levels = qw< emerg alert crit err warning notice info debug >;
+my @facilities = qw<
+    auth cron daemon ftp kern lpr mail news syslog user uucp
+    local0 local1 local2 local3 local4 local5 local6 local7
+>;
+
+my %received;
+my $parent_pid = $$;
+my $child_pid  = fork();
+
+if ($child_pid) {
+    # parent: setup a syslog server
+    POE::Component::Server::Syslog->spawn(
+        Alias       => 'syslog',
+        Type        => $proto, 
+        BindAddress => $host,
+        BindPort    => $port,
+
+        InputState  => \&client_input,
+        ErrorState  => \&client_error,
+    );
+
+    # signal handlers
+    POE::Kernel->sig_child($child_pid, sub { wait() });
+    $SIG{TERM} = sub {
+        POE::Kernel->post(syslog => "shutdown");
+        POE::Kernel->stop;
+    };
+
+    # run everything
+    plan tests => @facilities * @levels * 2;
+    POE::Kernel->run;
+
+    # check if some messages are missing
+    my @miss = grep { $received{$_} < 2 } keys %received;
+    diag "@miss" if @miss;
+}
+else {
+    # child: send messages to the syslog server
+    sleep 2;
+    setlogsock({ host => $host, type => $proto, port => $port });
+
+    # first way, set the facility each time with openlog()
+    for my $facility (@facilities) {
+        openlog($ident, "ndelay,pid", $facility);
+
+        for my $level (@levels) {
+            eval { syslog($level => "<$facility\:$level>") }
+                or warn "error: syslog($level => '<$facility\:$level>'): $@";
+        }
+    }
+
+    # second way, set the facility once with openlog(), then set
+    # the message facility with syslog()
+    openlog($ident, "ndelay,pid", "user");
+
+    for my $facility (@facilities) {
+        for my $level (@levels) {
+            eval { syslog("$facility.$level" => "<$facility\:$level>") }
+                or warn "error: syslog('$facility.$level' => '<$facility\:$level>'): $@";
+        }
+    }
+
+    sleep 2;
+
+    # send SIGTERM to the parent
+    kill 15 => $parent_pid;
+}
+
+
+sub client_input {
+    my $message = $_[&ARG0];
+
+    # extract the sent facility and level from the message text
+    my ($sent_facility, $sent_level) = $message->{msg} =~ /<(\w+):(\w+)>/;
+    $received{"$sent_facility\:$sent_level"}++;
+
+    # resolve their numeric values
+    my ($sent_fac_num, $sent_lev_num);
+    {
+        no strict "refs";
+        $sent_fac_num = eval { my $n = uc "LOG_$sent_facility"; &$n } >> 3;
+        $sent_lev_num = eval { my $n = uc "LOG_$sent_level";    &$n };
+    }
+
+    is_deeply(
+        {   # received message
+            facility => $message->{facility},
+            severity => $message->{severity},
+        },
+        {   # sent message
+            facility => $sent_fac_num,
+            severity => $sent_lev_num,
+        },
+        "sent<facility=$sent_facility($sent_fac_num), level=$sent_level" .
+        "($sent_lev_num)> - rcvd<facility=$message->{facility}, " .
+        "level=$message->{severity}>"
+    );
+}
+
+
+sub client_error {
+    my $message = $_[&ARG0];
+
+    require Data::Dumper;
+    $Data::Dumper::Indent   = 0;    $Data::Dumper::Indent   = 0;
+    $Data::Dumper::Sortkeys = 1;    $Data::Dumper::Sortkeys = 1;
+    fail "checking syslog message";
+    diag "[client_error] message = ", Data::Dumper::Dumper($message);
+
+    kill 15 => $child_pid;
+    POE::Kernel->post(syslog => "shutdown");
+    POE::Kernel->stop;
+}
+

Added: vendor/perl/dist/cpan/Term-ANSIColor/t/aliases-func.t
===================================================================
--- vendor/perl/dist/cpan/Term-ANSIColor/t/aliases-func.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Term-ANSIColor/t/aliases-func.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,88 @@
+#!/usr/bin/perl
+#
+# Test setting color aliases via the function interface.
+#
+# Copyright 2012 Russ Allbery <rra at stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 23;
+
+# Load the module.
+BEGIN {
+    delete $ENV{ANSI_COLORS_ALIASES};
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok('Term::ANSIColor', qw(color colored colorvalid uncolor coloralias));
+}
+
+# Confirm our test alias doesn't exist.
+my $output = eval { color('alert') };
+ok(!$output, 'alert color not recognized');
+like(
+    $@,
+    qr{ \A Invalid [ ] attribute [ ] name [ ] alert [ ] at [ ] }xms,
+    '...with the right error'
+);
+
+# Basic alias functionality.
+is(coloralias('alert', 'red'), 'red', 'coloralias works and returns color');
+is(color('alert'), color('red'), 'alert now works as a color');
+is(colored('test', 'alert'), "\e[31mtest\e[0m", '..and colored works');
+ok(colorvalid('alert'), '...and alert is now a valid color');
+is(coloralias('alert'), 'red', 'coloralias with one arg returns value');
+
+# The alias can be changed.
+is(coloralias('alert', 'green'), 'green', 'changing the alias works');
+is(coloralias('alert'), 'green',        '...and changed the mapping');
+is(color('alert'),      color('green'), '...and now returns its new value');
+
+# uncolor ignores aliases.
+is_deeply([uncolor("\e[32m")], ['green'], 'uncolor ignores aliases');
+
+# Asking for the value of an unknown alias returns undef.
+is(coloralias('warning'), undef, 'coloralias on unknown alias returns undef');
+
+# Invalid alias names.
+$output = eval { coloralias('foo;bar', 'green') };
+ok(!$output, 'invalid alias name rejected');
+like(
+    $@,
+    qr{ \A Invalid [ ] alias [ ] name [ ] "foo;bar" [ ] at [ ] }xms,
+    '...with the right error'
+);
+$output = eval { coloralias(q{}, 'green') };
+ok(!$output, 'empty alias name rejected');
+like(
+    $@,
+    qr{ \A Invalid [ ] alias [ ] name [ ] "" [ ] at [ ] }xms,
+    '...with the right error'
+);
+
+# Aliasing an existing color.
+$output = eval { coloralias('red', 'green') };
+ok(!$output, 'aliasing an existing color rejected');
+like(
+    $@,
+    qr{ \A Cannot [ ] alias [ ] standard [ ] color [ ] "red" [ ] at [ ] }xms,
+    '...with the right error'
+);
+
+# Aliasing to a color that doesn't exist, or to another alias.
+$output = eval { coloralias('warning', 'chartreuse') };
+ok(!$output, 'aliasing to an unknown color rejected');
+like(
+    $@,
+    qr{ \A Invalid [ ] attribute [ ] name [ ] "chartreuse" [ ] at [ ] }xms,
+    '...with the right error'
+);
+$output = eval { coloralias('warning', 'alert') };
+ok(!$output, 'aliasing to an alias rejected');
+like(
+    $@,
+    qr{ \A Invalid [ ] attribute [ ] name [ ] "alert" [ ] at [ ] }xms,
+    '...with the right error'
+);

Added: vendor/perl/dist/cpan/Term-ANSIColor/t/basic256.t
===================================================================
--- vendor/perl/dist/cpan/Term-ANSIColor/t/basic256.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Term-ANSIColor/t/basic256.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+#
+# Tests for 256-color support.
+#
+# Copyright 2012 Kurt Starsinic <kstarsinic at gmail.com>
+# Copyright 2012, 2013 Russ Allbery <rra at stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 92;
+
+# Load the module.
+BEGIN {
+    delete $ENV{ANSI_COLORS_ALIASES};
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok('Term::ANSIColor', qw(:constants256 color uncolor colorvalid));
+}
+
+# Test basic 256-color codes.
+is(color('ansi0'),  "\e[38;5;0m",   'ANSI 0');
+is(color('ansi15'), "\e[38;5;15m",  'ANSI 15');
+is(color('rgb000'), "\e[38;5;16m",  'RGB 000');
+is(color('rgb555'), "\e[38;5;231m", 'RGB 555');
+is(color('grey0'),  "\e[38;5;232m", 'Grey 0');
+is(color('grey23'), "\e[38;5;255m", 'Grey 23');
+
+# Errors at boundary cases.
+for my $color (qw(ansi16 rgb600 rgb060 rgb006 rgb666 rgb999 rgb0000 grey24)) {
+    my $output = eval { color($color) };
+    is($output, undef, 'color on unknown color name fails');
+    like(
+        $@,
+        qr{ \A Invalid [ ] attribute [ ] name [ ] \Q$color\E [ ] at [ ] }xms,
+        '...with the right error'
+    );
+    ok(!colorvalid($color), '...and colorvalid says it is invalid');
+}
+
+# Check that various 256-color codes are valid.
+for my $color (qw(ansi0 ansi15 rgb000 rgb555 grey0 grey23)) {
+    ok(colorvalid($color), "Color $color is valid");
+}
+
+# Check uncolor with 256-color codes.
+is_deeply([uncolor('38;5;0')],        ['ansi0'],    'uncolor of ansi0');
+is_deeply([uncolor("\e[38;5;231m")],  ['rgb555'],   'uncolor of rgb555');
+is_deeply([uncolor("\e[48;05;001m")], ['on_ansi1'], 'uncolor with leading 0s');
+
+# An invalid 256-color code should report an error on the part that makes it
+# invalid.  Check truncated codes (should report on the 38 or 48), codes with
+# an invalid second part (likewise), and codes with an invalid third part
+# (should report the complete code).
+#
+# This is a hash of test escape sequences to the invalid sequence that should
+# be reported.
+my %uncolor_tests = (
+    "\e[38m"       => 38,
+    "\e[38;5m"     => 38,
+    "\e[38;5;256m" => '38;5;256',
+    "\e[38;5;777m" => '38;5;777',
+    "\e[48m"       => 48,
+    "\e[48;5m"     => 48,
+    "\e[48;5;256m" => '48;5;256',
+    "\e[48;5;777m" => '48;5;777',
+);
+while (my ($escape, $invalid) = each %uncolor_tests) {
+    my $output = eval { uncolor($escape) };
+    is($output, undef, "uncolor on unknown color code \Q$escape\E fails");
+    like(
+        $@,
+        qr{ \A No [ ] name [ ] for [ ] escape [ ] sequence [ ] \Q$invalid\E
+            [ ] at [ ] }xms,
+        '...with the right error'
+    );
+}
+
+# Test all the variations of a few different constants.
+is((ANSI0 't'),  "\e[38;5;0mt",   'Basic constant works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt",  '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt",  '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt", '...and for RGB555');
+is((GREY0 't'),  "\e[38;5;232mt", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt", '...and for GREY23');
+
+# Do the same for disabled colors.
+local $ENV{ANSI_COLORS_DISABLED} = 1;
+is(ANSI0,  q{}, 'ANSI_COLORS_DISABLED works for ANSI0');
+is(ANSI15, q{}, '...and for ANSI15');
+is(RGB000, q{}, '...and for RGB000');
+is(RGB555, q{}, '...and for RGB555');
+is(GREY0,  q{}, '...and for GREY0');
+is(GREY23, q{}, '...and for GREY23');
+delete $ENV{ANSI_COLORS_DISABLED};
+
+# Do the same for AUTORESET.
+$Term::ANSIColor::AUTORESET = 1;
+is((ANSI0 't'),  "\e[38;5;0mt\e[0m",   'AUTORESET works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt\e[0m",  '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt\e[0m",  '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt\e[0m", '...and for RGB555');
+is((GREY0 't'),  "\e[38;5;232mt\e[0m", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt\e[0m", '...and for GREY23');
+is((ANSI0),      "\e[38;5;0m",         'AUTORESET without text for ANSI0');
+is((ANSI15),     "\e[38;5;15m",        '...and for ANSI15');
+is((RGB000),     "\e[38;5;16m",        '...and for RGB000');
+is((RGB555),     "\e[38;5;231m",       '...and for RGB555');
+is((GREY0),      "\e[38;5;232m",       '...and for GREY0');
+is((GREY23),     "\e[38;5;255m",       '...and for GREY23');
+$Term::ANSIColor::AUTORESET = 0;
+
+# Do the same for AUTOLOCAL.
+$Term::ANSIColor::AUTOLOCAL = 1;
+is((ANSI0 't'),  "\e[38;5;0mt\e[0m",   'AUTOLOCAL works for ANSI0');
+is((ANSI15 't'), "\e[38;5;15mt\e[0m",  '...and for ANSI15');
+is((RGB000 't'), "\e[38;5;16mt\e[0m",  '...and for RGB000');
+is((RGB555 't'), "\e[38;5;231mt\e[0m", '...and for RGB555');
+is((GREY0 't'),  "\e[38;5;232mt\e[0m", '...and for GREY0');
+is((GREY23 't'), "\e[38;5;255mt\e[0m", '...and for GREY23');
+is((ANSI0),      "\e[38;5;0m",         'AUTOLOCAL without text for ANSI0');
+is((ANSI15),     "\e[38;5;15m",        '...and for ANSI15');
+is((RGB000),     "\e[38;5;16m",        '...and for RGB000');
+is((RGB555),     "\e[38;5;231m",       '...and for RGB555');
+is((GREY0),      "\e[38;5;232m",       '...and for GREY0');
+is((GREY23),     "\e[38;5;255m",       '...and for GREY23');
+$Term::ANSIColor::AUTOLOCAL = 0;

Added: vendor/perl/dist/cpan/Term-ANSIColor/t/eval.t
===================================================================
--- vendor/perl/dist/cpan/Term-ANSIColor/t/eval.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Term-ANSIColor/t/eval.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+#
+# Test suite for $@ preservation with constants.
+#
+# Earlier versions of Term::ANSIColor would clobber $@ during AUTOLOAD
+# processing and lose its value or leak $@ values to the calling program.
+# This is a regression test to ensure that this problem doesn't return.
+#
+# Copyright 2012 Russ Allbery <rra at stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 5;
+
+# We refer to $@ in the test descriptions.
+## no critic (ValuesAndExpressions::RequireInterpolationOfMetachars)
+
+# Load the module.
+BEGIN {
+    delete $ENV{ANSI_COLORS_ALIASES};
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok('Term::ANSIColor', qw(:constants));
+}
+
+# Ensure that using a constant doesn't leak anything in $@.
+is((BOLD 'test'), "\e[1mtest", 'BOLD works');
+is($@,            q{},         '... and $@ is empty');
+
+# Store something in $@ and ensure it doesn't get clobbered.
+## no critic (BuiltinFunctions::ProhibitStringyEval)
+## no critic (ErrorHandling::RequireCheckingReturnValueOfEval)
+eval 'sub { syntax';
+is((BLINK 'test'), "\e[5mtest", 'BLINK works after eval failure');
+isnt($@, q{}, '... and $@ still contains something useful');

Added: vendor/perl/dist/cpan/Term-ANSIColor/t/stringify.t
===================================================================
--- vendor/perl/dist/cpan/Term-ANSIColor/t/stringify.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Term-ANSIColor/t/stringify.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+#
+# Test suite for stringify interaction.
+#
+# Copyright 2011 Revilo Reegiles
+# Copyright 2011 Russ Allbery <rra at stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 6;
+
+# Create a dummy class that implements stringification.
+## no critic (Modules::ProhibitMultiplePackages)
+package Test::Stringify;
+use overload '""' => 'stringify';
+sub new { return bless {}, 'Test::Stringify' }
+sub stringify { return "Foo Bar\n" }
+
+# Back to the main package.
+package main;
+
+# Load the module.
+BEGIN {
+    delete $ENV{ANSI_COLORS_ALIASES};
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok('Term::ANSIColor', qw(colored));
+}
+
+# Some basic tests of colored without stringification.
+my $result = colored(['blue', 'bold'], 'testing');
+is($result, "\e[34;1mtesting\e[0m", 'colored with an array reference');
+$result = colored("ok\n", 'bold blue');
+is($result, "\e[1;34mok\n\e[0m", 'colored with a following string');
+
+# Create a stringifiable object and repeat the tests.
+my $test = Test::Stringify->new;
+$result = colored($test . q{}, 'bold blue');
+is($result, "\e[1;34mFoo Bar\n\e[0m", 'colored with forced stringification');
+$result = colored($test, 'bold blue');
+is($result, "\e[1;34mFoo Bar\n\e[0m", 'colored with a non-array reference');
+
+# Create a hash reference and try stringifying it.
+my %foo = (foo => 'bar');
+$result = colored(\%foo, 'bold blue');
+like(
+    $result,
+    qr{ \e\[1;34m HASH\(.*\) \e\[0m }xms,
+    'colored with a hash reference'
+);

Added: vendor/perl/dist/cpan/Term-ANSIColor/t/taint.t
===================================================================
--- vendor/perl/dist/cpan/Term-ANSIColor/t/taint.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Term-ANSIColor/t/taint.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,39 @@
+#!/usr/bin/perl -T
+#
+# Check that Term::ANSIColor untaints generated constants.
+#
+# It's possible that the name of the constant function that we're calling
+# could be tained (such as by loading the name of the constant function from
+# an environment variable).  Term::ANSIColor does the work to untaint it; be
+# sure that the taint flag is properly cleared.
+#
+# Copyright 2012 Russ Allbery <rra at stanford.edu>
+#
+# This program is free software; you may redistribute it and/or modify it
+# under the same terms as Perl itself.
+
+use strict;
+use warnings;
+
+use Test::More tests => 4;
+
+# Load the module.
+BEGIN {
+    delete $ENV{ANSI_COLORS_ALIASES};
+    delete $ENV{ANSI_COLORS_DISABLED};
+    use_ok('Term::ANSIColor', qw(:pushpop));
+}
+
+# Generate a tainted constant name.  PATH is always tainted, and tainting is
+# sticky, so we can prepend the name to whatever PATH holds and then chop it
+# off again.
+my $constant = substr 'BOLD' . $ENV{PATH}, 0, length 'BOLD';
+
+# Using that as a constant should now work without any tainting problems.
+## no critic (TestingAndDebugging::ProhibitNoStrict)
+{
+    no strict 'refs';
+    is(&{$constant}(), "\e[1m", 'Constant subs are not tainted');
+    is(BOLD(),         "\e[1m", '...and we can call the sub again');
+    ok(defined(&Term::ANSIColor::BOLD), '...and it is now defined');
+}

Added: vendor/perl/dist/cpan/Test-Harness/t/compat/env_opts.t
===================================================================
--- vendor/perl/dist/cpan/Test-Harness/t/compat/env_opts.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Test-Harness/t/compat/env_opts.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Test::More tests => 12;
+
+use Test::Harness;
+
+sub _has_module {
+    my $module = shift;
+    eval "use $module";
+    return $@ ? 0 : 1;
+}
+
+{
+
+    # Should add a fake home dir? to test the rc stuff..
+    local $ENV{HARNESS_OPTIONS} = 'j4:c';
+
+    ok my $harness = Test::Harness::_new_harness, 'made harness';
+    is( $harness->color, 1, "set color correctly" );
+    is( $harness->jobs,  4, "set jobs correctly" );
+}
+SKIP: {
+    skip 'Can\'t locate object method "color" via package "TAP::Formatter::HTML" (RT 82738)',4;
+    skip "requires TAP::Formatter::HTML", 4
+      unless _has_module('TAP::Formatter::HTML');
+
+    local $ENV{HARNESS_OPTIONS} = 'j4:c:fTAP-Formatter-HTML';
+
+    ok my $harness = Test::Harness::_new_harness, 'made harness';
+    is( $harness->color, 1, "set color correctly" );
+    is( $harness->jobs,  4, "set jobs correctly" );
+    is( $harness->formatter_class, "TAP::Formatter::HTML",
+        "correct formatter" );
+
+}
+SKIP: {
+    skip "requires TAP::Harness::Archive", 5
+      unless _has_module('TAP::Harness::Archive');
+
+    # Test archive
+    local $ENV{HARNESS_OPTIONS} = 'j4:c:a/archive.tgz';
+
+    ok my $harness = Test::Harness::_new_harness, 'made harness';
+    is( $harness->color, 1, "set color correctly" );
+    is( $harness->jobs,  4, "set jobs correctly" );
+    isa_ok( $harness, "TAP::Harness::Archive", "correct harness subclass" );
+
+    # XXX: this is nasty :(
+    is( $harness->{__archive_file}, "/archive.tgz", "correct archive found" );
+
+}
+

Added: vendor/perl/dist/cpan/Test-Harness/t/nowarn.t
===================================================================
--- vendor/perl/dist/cpan/Test-Harness/t/nowarn.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Test-Harness/t/nowarn.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+#!perl
+
+use Test::More tests => 1;
+
+# Make sure that warnings are only enabled if we enable them
+# specifically.
+ok !$^W, 'warnings disabled';
+
+# vim:ts=2:sw=2:et:ft=perl
+

Added: vendor/perl/dist/cpan/Text-Tabs/t/Tabs-ElCid.t
===================================================================
--- vendor/perl/dist/cpan/Text-Tabs/t/Tabs-ElCid.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Text-Tabs/t/Tabs-ElCid.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,177 @@
+#!perl
+
+BEGIN {
+	if ($] <= 5.010) {
+		print "1..0 # skip this test requires perl 5.010 or greater\n";
+		exit 0;
+	}
+}
+
+use strict;
+use warnings "FATAL" => "all";
+use Text::Tabs;
+
+require bytes;
+
+our $Errors = 0;
+
+our @DATA = (
+    [ # DATALINE #0
+	sub { die "there is no line 0" } 
+    ],
+    { # DATALINE #1
+	OLD => { BYTES =>  71, CHARS => 59, CHUNKS => 47, WORDS => 7, TABS => 3 },
+	NEW => { BYTES =>  92, CHARS => 80, CHUNKS => 68, WORDS => 7, TABS => 0 },
+    },
+    { # DATALINE #2
+	OLD => { BYTES =>  45, CHARS => 43, CHUNKS => 41, WORDS => 6, TABS => 3 },
+	NEW => { BYTES =>  65, CHARS => 63, CHUNKS => 61, WORDS => 6, TABS => 0 },
+    },
+    { # DATALINE #3
+	OLD => { BYTES =>  47, CHARS => 45, CHUNKS => 43, WORDS => 7, TABS => 3 },
+	NEW => { BYTES =>  64, CHARS => 62, CHUNKS => 60, WORDS => 7, TABS => 0 },
+    },
+    { # DATALINE #4
+	OLD => { BYTES =>  49, CHARS => 47, CHUNKS => 45, WORDS => 7, TABS => 3 },
+	NEW => { BYTES =>  69, CHARS => 67, CHUNKS => 65, WORDS => 7, TABS => 0 },
+    },
+    { # DATALINE #5
+	OLD => { BYTES =>  83, CHARS => 62, CHUNKS => 41, WORDS => 7, TABS => 4 },
+	NEW => { BYTES => 105, CHARS => 84, CHUNKS => 63, WORDS => 7, TABS => 0 },
+    },
+    { # DATALINE #6
+	OLD => { BYTES =>  55, CHARS => 53, CHUNKS => 51, WORDS => 8, TABS => 3 },
+	NEW => { BYTES =>  76, CHARS => 74, CHUNKS => 72, WORDS => 8, TABS => 0 },
+    },
+    { # DATALINE #7
+	OLD => { BYTES =>  42, CHARS => 40, CHUNKS => 38, WORDS => 7, TABS => 4 },
+	NEW => { BYTES =>  65, CHARS => 63, CHUNKS => 61, WORDS => 7, TABS => 0 },
+    },
+    { # DATALINE #8
+	OLD => { BYTES =>  80, CHARS => 65, CHUNKS => 52, WORDS => 9, TABS => 1 },
+	NEW => { BYTES =>  87, CHARS => 72, CHUNKS => 59, WORDS => 9, TABS => 0 },
+    },
+    { # DATALINE #9
+	OLD => { BYTES =>  43, CHARS => 41, CHUNKS => 41, WORDS => 7, TABS => 3 },
+	NEW => { BYTES =>  63, CHARS => 61, CHUNKS => 61, WORDS => 7, TABS => 0 },
+    },
+);
+
+$| = 1;
+my $numtests = @DATA;
+print "1..$numtests\n";
+
+$Errors += table_ok();
+check_data();
+
+if ($Errors) {
+    die "Error count: $Errors";
+} else {
+    exit(0);
+} 
+
+
+# first some sanity checks
+sub table_ok { 
+    my $bad = 0;
+    for my $i ( 1 .. $#DATA ) {
+
+	if ( $DATA[$i]{NEW}{TABS} ) {
+	    warn "new data should have no tabs in it at table line $i";
+	    $bad++;
+	} 
+
+	if ( $DATA[$i]{NEW}{WORDS} != $DATA[$i]{OLD}{WORDS} ) {
+	    warn "word count shouldn't change upon tab expansion at table line $i";
+	    $bad++;
+	} 
+    } 
+    print $bad ? "not " : "", "ok 1\n";
+    return $bad;
+}
+
+sub check($$$$) {
+    die "expected 4 arguments" unless @_ == 4;
+    my ($found, $index, $version, $item) = @_;
+    my $expected = $DATA[$index]{$version}{$item};
+    return 1 if $found == $expected;
+    warn sprintf("%s line %d expected %d %s, found %d instead",
+		  ucfirst(lc($version)), 
+			  $index,     $expected, 
+					 lc($item),  
+						 $found);
+    return 0;
+} 
+
+sub check_data { 
+
+    local $_;
+    binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+    while ( <DATA> ) {
+
+	my $bad = 0;
+
+	if ($. > $#DATA) {
+	    die "too many lines of data";
+	} 
+
+	$DATA[$.]{OLD}{DATA} = $_;
+
+	my($char_count,  $byte_count, $chunk_count, $word_count, $tab_count);
+
+	$byte_count  = bytes::length($_);
+	$char_count  = length();
+	$chunk_count = () = /\X/g;
+	$word_count  = () = /(?:(?=\pL)\X)+/g;
+	$tab_count   = y/\t//;
+
+	$bad++ unless check($byte_count,  $., "OLD", "BYTES");
+	$bad++ unless check($char_count,  $., "OLD", "CHARS");
+	$bad++ unless check($chunk_count, $., "OLD", "CHUNKS");
+	$bad++ unless check($word_count,  $., "OLD", "WORDS");
+	$bad++ unless check($tab_count,   $., "OLD", "TABS");
+
+	$_ = expand($_);
+
+	$DATA[$.]{NEW}{DATA} = $_;
+
+	$byte_count  = bytes::length($_);
+	$char_count  = length();
+	$chunk_count = () = /\X/g;
+	$word_count  = () = /(?:(?=\pL)\X)+/g;
+	$tab_count   = y/\t//;
+
+	$bad++ unless check($byte_count,  $., "NEW", "BYTES");
+	$bad++ unless check($char_count,  $., "NEW", "CHARS");
+	$bad++ unless check($chunk_count, $., "NEW", "CHUNKS");
+	$bad++ unless check($word_count,  $., "NEW", "WORDS");
+	$bad++ unless check($tab_count,   $., "NEW", "TABS");
+
+	$_ = unexpand($_);
+
+	if ($_ ne $DATA[$.]{OLD}{DATA}) {
+	    warn "expand/unexpand round-trip equivalency failed at line $.";
+	    warn sprintf("  Expected:\n%s\n%v02x\n  But got:\n%s\n%v02x\n",
+		    ( $DATA[$.]{OLD}{DATA} ) x 2, ($_) x 2 );
+	    $bad++;
+	} 
+
+	my $num = $. + 1;
+	print $bad ? "not " : "", "ok $num\n";
+	$Errors += $bad;
+
+    } 
+
+}
+
+
+__DATA__
+	De los sos o̲j̲o̲s̲ 		tan fuertemientre l̲l̲o̲r̲a̲n̲d̲o̲,
+	tornava la cabeça		i estávalos catando.
+	Vio puertas abiertas		e uços sin cañados,
+	alcándaras vázias		sin pielles e sin mantos
+	e s̲i̲n̲ f̲a̲l̲c̲o̲n̲e̲s̲			e s̲i̲n̲ a̲d̲t̲o̲r̲e̲s̲ mudados.
+	Sospiró mio Çid,		ca mucho avie grandes cuidados.
+	Fabló mio Çid			bien e tan mesurado:
+       “grado a tí, s̳e̳ñ̳o̳r̳ p̳a̳d̳r̳e̳,	que estás en alto!
+	Esto me an buelto		mis enemigos malos.”

Added: vendor/perl/dist/cpan/Text-Tabs/t/Wrap-JLB.t
===================================================================
--- vendor/perl/dist/cpan/Text-Tabs/t/Wrap-JLB.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Text-Tabs/t/Wrap-JLB.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,152 @@
+#!perl
+
+BEGIN {
+	if ($] <= 5.010) {
+		print "1..0 # skip this test requires perl 5.010 or greater\n";
+		exit 0;
+	}
+}
+
+use strict;
+use warnings "FATAL" => "all";
+use Text::Wrap;
+
+$Text::Wrap::columns = 72;
+
+require bytes;
+
+our $Errors = 0;
+
+$/ = q();
+binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+
+our @DATA = (
+    [ # paragraph 0
+	sub { die "there is no paragraph 0" } 
+    ],
+    { # paragraph 1
+	OLD => { BYTES =>    44, CHARS =>   44, CHUNKS =>   44, WORDS =>   7, TABS =>  3, LINES =>  4 },
+	NEW => { BYTES =>    44, CHARS =>   44, CHUNKS =>   44, WORDS =>   7, TABS =>  3, LINES =>  4 },
+    },
+    { # paragraph 2
+	OLD => { BYTES =>  1766, CHARS => 1635, CHUNKS => 1507, WORDS => 275, TABS =>  0, LINES =>  2 },
+	NEW => { BYTES =>  1766, CHARS => 1635, CHUNKS => 1507, WORDS => 275, TABS =>  0, LINES => 24 },
+    },
+    { # paragraph 3
+	OLD => { BYTES =>   157, CHARS =>  148, CHUNKS =>  139, WORDS =>  27, TABS =>  0, LINES =>  2 },
+	NEW => { BYTES =>   157, CHARS =>  148, CHUNKS =>  139, WORDS =>  27, TABS =>  0, LINES =>  3 },
+    },
+    { # paragraph 4
+	OLD => { BYTES =>    30, CHARS =>   25, CHUNKS =>   24, WORDS =>   3, TABS =>  4, LINES =>  1 },
+	NEW => { BYTES =>    30, CHARS =>   25, CHUNKS =>   24, WORDS =>   3, TABS =>  4, LINES =>  1 },
+    },
+);
+
+$| = 1;
+my $numtests = @DATA;
+print "1..$numtests\n";
+
+$Errors += table_ok();
+check_data();
+
+if ($Errors) {
+    die "Error count: $Errors";
+} else {
+    exit(0);
+} 
+
+
+# first some sanity checks
+sub table_ok { 
+    my $bad = 0;
+    for my $i ( 1 .. $#DATA ) {
+	for my $item (qw[ bytes chars chunks words tabs ]) {
+	    if ( $DATA[$i]{NEW}{uc $item} != $DATA[$i]{OLD}{uc $item} ) {
+		warn "\u$item count shouldn't change upon wrapping at table paragraph $i";
+		$bad++;
+	    } 
+	}
+    } 
+    print $bad ? "not " : "", "ok 1\n";
+    return $bad;
+}
+
+sub check($$$$) {
+    die "expected 4 arguments" unless @_ == 4;
+    my ($found, $index, $version, $item) = @_;
+    my $expected = $DATA[$index]{$version}{$item};
+    return 1 if $found == $expected;
+    warn sprintf("%s paragraph %d expected %d %s, found %d instead",
+		  ucfirst(lc($version)), 
+			  $index,     $expected, 
+					 lc($item),  
+						 $found);
+    return 0;
+}
+
+sub check_data { 
+
+    binmode(DATA, ":utf8") || die "can't binmode DATA to utf8: $!";
+    local $_;
+    while ( <DATA> ) {
+
+	my $bad = 0;
+
+	if ($. > $#DATA) {
+	    die "too many paragraphs of data";
+	} 
+
+	$DATA[$.]{OLD}{DATA} = $_;
+
+	my($char_count,  $byte_count, $chunk_count, $word_count, $tab_count, $line_count);
+
+	$byte_count  = bytes::length($_);
+	$char_count  = length();
+	$chunk_count = () = /\X/g;
+	$word_count  = () = /(?:(?=\pL)\X)+/g;
+	$tab_count   = y/\t//;
+	$line_count  = y/\n//;
+
+	$bad++ unless check($byte_count,  $., "OLD", "BYTES");
+	$bad++ unless check($char_count,  $., "OLD", "CHARS");
+	$bad++ unless check($chunk_count, $., "OLD", "CHUNKS");
+	$bad++ unless check($word_count,  $., "OLD", "WORDS");
+	$bad++ unless check($tab_count,   $., "OLD", "TABS");
+	$bad++ unless check($line_count,  $., "OLD", "LINES");
+
+	my $nl = "\n" x chomp;
+
+	$_ = wrap("", "", $_) . $nl;
+
+	$byte_count  = bytes::length($_);
+	$char_count  = length();
+	$chunk_count = () = /\X/g;
+	$word_count  = () = /(?:(?=\pL)\X)+/g;
+	$tab_count   = y/\t//;
+	$line_count  = y/\n//;
+
+	$bad++ unless check($byte_count,  $., "NEW", "BYTES");
+	$bad++ unless check($char_count,  $., "NEW", "CHARS");
+	$bad++ unless check($chunk_count, $., "NEW", "CHUNKS");
+	$bad++ unless check($word_count,  $., "NEW", "WORDS");
+	$bad++ unless check($tab_count,   $., "NEW", "TABS");
+	$bad++ unless check($line_count,  $., "NEW", "LINES");
+
+	my $num = $. + 1;
+	print $bad ? "not " : "", "ok $num\n";
+	$Errors += $bad;
+
+    } 
+
+}
+
+__DATA__
+	Los dos reyes
+	     y
+	Los dos laberintos
+
+Cuentan los hombres dignos de fe (pero A̳l̳á̳ sabe más) que en los primeros días hubo un rey de l̲a̲s̲ i̲s̲l̲a̲s̲ d̲e̲ B̲a̲b̲i̲l̲o̲n̲i̲a̲ que congregó a sus arquitectos y magos y les mandó construir un laberinto tan perplejo y sutil que los varones más prudentes no se aventuraban a entrar, y los que entraban se perdían.  Esa obra era un escándalo, porque la confusión y la maravilla son operaciones propias de D̳i̳o̳s̳ y no de los hombres.  Con el andar del tiempo vino a su corte un rey de los árabes, y el rey de B̲a̲b̲i̲l̲o̲n̲i̲a̲ (para hacer burla de la simplicidad de su huésped) lo hizo penetrar en el laberinto, donde vagó afrentado y confundido hasta la declinación de la tarde.  Entonces imploró socorro divino y dio con la puerta.  Sus labios no profirieron queja ninguna, pero le dijo al rey de B̲a̲b̲i̲l̲o̲n̲i̲a̲ que él en A̲r̲a̲b̲i̲a̲ tenía otro laberinto y que, si D̳i̳o̳s̳ era servido, se lo daría a conocer algún día.  Luego regresó a A̲r̲a̲b̲i̲a̲, juntó sus capitanes y sus alcaides y estragó l̲o̲s̲ r̲e̲i̲n̲o̲s̲ d̲e̲ B̲a̲b̲i̲l̲o̲n̲i̲a̲ con tan venturosa fortuna que derribó sus castillos, rompió sus gentes e hizo cautivo al mismo rey.  Lo amarró encima de un camello veloz y lo llevó al desierto.  Cabalgaron tres días, y le dijo: «¡Oh, rey del tiempo y substancia y cifra del siglo!, en B̲a̲b̲i̲l̲o̲n̲i̲a̲ me quisiste perder en un laberinto de bronce con muchas escaleras, puertas y muros; ahora e̳l̳ P̳o̳d̳e̳r̳o̳s̳o̳ ha tenido a bien que te muestre el mío, donde no hay escaleras que subir, ni puertas que forzar, ni fatigosas galerías que recorrer, ni muros que te veden el paso.»
+
+Luego le desató las ligaduras y lo abandonó en mitad del desierto, donde murió de hambre y de sed.  La gloria sea con A̳q̳u̳é̳l̳ que no muere.
+
+				——Jorge Luís Borges

Added: vendor/perl/dist/cpan/Time-HiRes/t/Watchdog.pm
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/Watchdog.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/Watchdog.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+package t::Watchdog;
+
+use strict;
+
+use Config;
+use Test::More;
+
+my $waitfor = 360; # 30-45 seconds is normal (load affects this).
+my $watchdog_pid;
+my $TheEnd;
+
+if ($Config{d_fork}) {
+    note "I am the main process $$, starting the watchdog process...";
+    $watchdog_pid = fork();
+    if (defined $watchdog_pid) {
+	if ($watchdog_pid == 0) { # We are the kid, set up the watchdog.
+	    my $ppid = getppid();
+	    note "I am the watchdog process $$, sleeping for $waitfor seconds...";
+	    sleep($waitfor - 2);    # Workaround for perlbug #49073
+	    sleep(2);               # Wait for parent to exit
+	    if (kill(0, $ppid)) {   # Check if parent still exists
+		warn "\n$0: overall time allowed for tests (${waitfor}s) exceeded!\n";
+		note "Terminating main process $ppid...";
+		kill('KILL', $ppid);
+		note "This is the watchdog process $$, over and out.";
+	    }
+	    exit(0);
+	} else {
+	    note "The watchdog process $watchdog_pid launched, continuing testing...";
+	    $TheEnd = time() + $waitfor;
+	}
+    } else {
+	warn "$0: fork failed: $!\n";
+    }
+} else {
+    note "No watchdog process (need fork)";
+}
+
+END {
+    if ($watchdog_pid) { # Only in the main process.
+	my $left = $TheEnd - time();
+	note sprintf "I am the main process $$, terminating the watchdog process $watchdog_pid before it terminates me in %d seconds (testing took %d seconds).", $left, $waitfor - $left;
+	if (kill(0, $watchdog_pid)) {
+	    local $? = 0;
+	    my $kill = kill('KILL', $watchdog_pid); # We are done, the watchdog can go.
+	    wait();
+	    note sprintf "kill KILL $watchdog_pid = %d", $kill;
+	}
+	unlink("ktrace.out"); # Used in BSD system call tracing.
+	note "All done.";
+    }
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/alarm.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/alarm.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/alarm.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,222 @@
+use strict;
+
+use Test::More 0.82 tests => 10;
+use t::Watchdog;
+
+BEGIN { require_ok "Time::HiRes"; }
+
+use Config;
+
+my $limit = 0.25; # 25% is acceptable slosh for testing timers
+
+my $xdefine = ''; 
+if (open(XDEFINE, "xdefine")) {
+    chomp($xdefine = <XDEFINE> || "");
+    close(XDEFINE);
+}
+
+my $can_subsecond_alarm =
+   defined &Time::HiRes::gettimeofday &&
+   defined &Time::HiRes::ualarm &&
+   defined &Time::HiRes::usleep &&
+   ($Config{d_ualarm} || $xdefine =~ /-DHAS_UALARM/);
+
+SKIP: {
+    skip "no subsecond alarm", 1 unless $can_subsecond_alarm;
+    eval { require POSIX };
+    my $use_sigaction =
+	!$@ && defined &POSIX::sigaction && &POSIX::SIGALRM > 0;
+
+    my ($r, $i, $not, $ok);
+
+    $r = [Time::HiRes::gettimeofday()];
+    $i = 5;
+    my $oldaction;
+    if ($use_sigaction) {
+	$oldaction = new POSIX::SigAction;
+	note sprintf "sigaction tick, ALRM = %d", &POSIX::SIGALRM;
+
+	# Perl's deferred signals may be too wimpy to break through
+	# a restartable select(), so use POSIX::sigaction if available.
+
+	POSIX::sigaction(&POSIX::SIGALRM,
+			 POSIX::SigAction->new("tick"),
+			 $oldaction)
+	    or die "Error setting SIGALRM handler with sigaction: $!\n";
+    } else {
+	note "SIG tick";
+	$SIG{ALRM} = "tick";
+    }
+
+    # On VMS timers can not interrupt select.
+    if ($^O eq 'VMS') {
+	$ok = "Skip: VMS select() does not get interrupted.";
+    } else {
+	while ($i > 0) {
+	    Time::HiRes::alarm(0.3);
+	    select (undef, undef, undef, 3);
+	    my $ival = Time::HiRes::tv_interval ($r);
+	    note "Select returned! $i $ival";
+	    note abs($ival/3 - 1);
+	    # Whether select() gets restarted after signals is
+	    # implementation dependent.  If it is restarted, we
+	    # will get about 3.3 seconds: 3 from the select, 0.3
+	    # from the alarm.  If this happens, let's just skip
+	    # this particular test.  --jhi
+	    if (abs($ival/3.3 - 1) < $limit) {
+		$ok = "Skip: your select() may get restarted by your SIGALRM (or just retry test)";
+		undef $not;
+		last;
+	    }
+	    my $exp = 0.3 * (5 - $i);
+	    if ($exp == 0) {
+		$not = "while: divisor became zero";
+		last;
+	    }
+	    # This test is more sensitive, so impose a softer limit.
+	    if (abs($ival/$exp - 1) > 4*$limit) {
+		my $ratio = abs($ival/$exp);
+		$not = "while: $exp sleep took $ival ratio $ratio";
+		last;
+	    }
+	    $ok = $i;
+	}
+    }
+
+    sub tick {
+	$i--;
+	my $ival = Time::HiRes::tv_interval ($r);
+	note "Tick! $i $ival";
+	my $exp = 0.3 * (5 - $i);
+	if ($exp == 0) {
+	    $not = "tick: divisor became zero";
+	    last;
+	}
+	# This test is more sensitive, so impose a softer limit.
+	if (abs($ival/$exp - 1) > 4*$limit) {
+	    my $ratio = abs($ival/$exp);
+	    $not = "tick: $exp sleep took $ival ratio $ratio";
+	    $i = 0;
+	}
+    }
+
+    if ($use_sigaction) {
+	POSIX::sigaction(&POSIX::SIGALRM, $oldaction);
+    } else {
+	Time::HiRes::alarm(0); # can't cancel usig %SIG
+    }
+
+    ok !$not;
+    note $not || $ok;
+}
+
+SKIP: {
+    skip "no ualarm", 1 unless &Time::HiRes::d_ualarm;
+    eval { Time::HiRes::alarm(-3) };
+    like $@, qr/::alarm\(-3, 0\): negative time not invented yet/,
+	    "negative time error";
+}
+
+# Find the loop size N (a for() loop 0..N-1)
+# that will take more than T seconds.
+
+SKIP: {
+    skip "no ualarm", 1 unless &Time::HiRes::d_ualarm;
+    skip "perl bug", 1 unless $] >= 5.008001;
+    # http://groups.google.com/group/perl.perl5.porters/browse_thread/thread/adaffaaf939b042e/20dafc298df737f0%2320dafc298df737f0?sa=X&oi=groupsr&start=0&num=3
+    # Perl changes [18765] and [18770], perl bug [perl #20920]
+
+    note "Finding delay loop...";
+
+    my $T = 0.01;
+    my $DelayN = 1024;
+    my $i;
+ N: {
+     do {
+	 my $t0 = Time::HiRes::time();
+	 for ($i = 0; $i < $DelayN; $i++) { }
+	 my $t1 = Time::HiRes::time();
+	 my $dt = $t1 - $t0;
+	 note "N = $DelayN, t1 = $t1, t0 = $t0, dt = $dt";
+	 last N if $dt > $T;
+	 $DelayN *= 2;
+     } while (1);
+ }
+
+    # The time-burner which takes at least T (default 1) seconds.
+    my $Delay = sub {
+	my $c = @_ ? shift : 1;
+	my $n = $c * $DelayN;
+	my $i;
+	for ($i = 0; $i < $n; $i++) { }
+    };
+
+    # Next setup a periodic timer (the two-argument alarm() of
+    # Time::HiRes, behind the curtains the libc getitimer() or
+    # ualarm()) which has a signal handler that takes so much time (on
+    # the first initial invocation) that the first periodic invocation
+    # (second invocation) will happen before the first invocation has
+    # finished.  In Perl 5.8.0 the "safe signals" concept was
+    # implemented, with unfortunately at least one bug that caused a
+    # core dump on reentering the handler. This bug was fixed by the
+    # time of Perl 5.8.1.
+
+    # Do not try mixing sleep() and alarm() for testing this.
+
+    my $a = 0; # Number of alarms we receive.
+    my $A = 2; # Number of alarms we will handle before disarming.
+               # (We may well get $A + 1 alarms.)
+
+    $SIG{ALRM} = sub {
+	$a++;
+	note "Alarm $a - ", Time::HiRes::time();
+	Time::HiRes::alarm(0) if $a >= $A; # Disarm the alarm.
+	$Delay->(2); # Try burning CPU at least for 2T seconds.
+    }; 
+
+    Time::HiRes::alarm($T, $T);  # Arm the alarm.
+
+    $Delay->(10); # Try burning CPU at least for 10T seconds.
+
+    ok 1; # Not core dumping by now is considered to be the success.
+}
+
+SKIP: {
+    skip "no subsecond alarm", 6 unless $can_subsecond_alarm;
+    {
+	my $alrm;
+	$SIG{ALRM} = sub { $alrm++ };
+	Time::HiRes::alarm(0.1);
+	my $t0 = Time::HiRes::time();
+	1 while Time::HiRes::time() - $t0 <= 1;
+	ok $alrm;
+    }
+    {
+	my $alrm;
+	$SIG{ALRM} = sub { $alrm++ };
+	Time::HiRes::alarm(1.1);
+	my $t0 = Time::HiRes::time();
+	1 while Time::HiRes::time() - $t0 <= 2;
+	ok $alrm;
+    }
+
+    {
+	my $alrm = 0;
+	$SIG{ALRM} = sub { $alrm++ };
+	my $got = Time::HiRes::alarm(2.7);
+	ok $got == 0 or note $got;
+
+	my $t0 = Time::HiRes::time();
+	1 while Time::HiRes::time() - $t0 <= 1;
+
+	$got = Time::HiRes::alarm(0);
+	ok $got > 0 && $got < 1.8 or note $got;
+
+	ok $alrm == 0 or note $alrm;
+
+	$got = Time::HiRes::alarm(0);
+	ok $got == 0 or note $got;
+    }
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/clock.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/clock.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/clock.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,94 @@
+use strict;
+
+use Test::More 0.82 tests => 5;
+use t::Watchdog;
+
+BEGIN { require_ok "Time::HiRes"; }
+
+sub has_symbol {
+    my $symbol = shift;
+    eval "use Time::HiRes qw($symbol)";
+    return 0 unless $@ eq '';
+    eval "my \$a = $symbol";
+    return $@ eq '';
+}
+
+note sprintf "have_clock_gettime   = %d", &Time::HiRes::d_clock_gettime;
+note sprintf "have_clock_getres    = %d", &Time::HiRes::d_clock_getres;
+note sprintf "have_clock_nanosleep = %d", &Time::HiRes::d_clock_nanosleep;
+note sprintf "have_clock           = %d", &Time::HiRes::d_clock;
+
+# Ideally, we'd like to test that the timers are rather precise.
+# However, if the system is busy, there are no guarantees on how
+# quickly we will return.  This limit used to be 10%, but that
+# was occasionally triggered falsely.  
+# So let's try 25%.
+# Another possibility might be to print "ok" if the test completes fine
+# with (say) 10% slosh, "skip - system may have been busy?" if the test
+# completes fine with (say) 30% slosh, and fail otherwise.  If you do that,
+# consider changing over to test.pl at the same time.
+# --A.D., Nov 27, 2001
+my $limit = 0.25; # 25% is acceptable slosh for testing timers
+
+SKIP: {
+    skip "no clock_gettime", 1
+	unless &Time::HiRes::d_clock_gettime && has_symbol("CLOCK_REALTIME");
+    my $ok = 0;
+ TRY: {
+	for my $try (1..3) {
+	    note "CLOCK_REALTIME: try = $try";
+	    my $t0 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
+	    my $T = 1.5;
+	    Time::HiRes::sleep($T);
+	    my $t1 = Time::HiRes::clock_gettime(&CLOCK_REALTIME);
+	    if ($t0 > 0 && $t1 > $t0) {
+		note "t1 = $t1, t0 = $t0";
+		my $dt = $t1 - $t0;
+		my $rt = abs(1 - $dt / $T);
+		note "dt = $dt, rt = $rt";
+		if ($rt <= 2 * $limit) {
+		    $ok = 1;
+		    last TRY;
+		}
+	    } else {
+		note "Error: t0 = $t0, t1 = $t1";
+	    }
+	    my $r = rand() + rand();
+	    note sprintf "Sleeping for %.6f seconds...\n", $r;
+	    Time::HiRes::sleep($r);
+	}
+    }
+    ok $ok;
+}
+
+SKIP: {
+    skip "no clock_getres", 1 unless &Time::HiRes::d_clock_getres;
+    my $tr = Time::HiRes::clock_getres();
+    ok $tr > 0 or note "tr = $tr";
+}
+
+SKIP: {
+    skip "no clock_nanosleep", 1
+	unless &Time::HiRes::d_clock_nanosleep && has_symbol("CLOCK_REALTIME");
+    my $s = 1.5e9;
+    my $t = Time::HiRes::clock_nanosleep(&CLOCK_REALTIME, $s);
+    my $r = abs(1 - $t / $s);
+    ok $r < 2 * $limit or note "t = $t, r = $r";
+}
+
+SKIP: {
+    skip "no clock", 1 unless &Time::HiRes::d_clock;
+    my @clock = Time::HiRes::clock();
+    note "clock = @clock";
+    for my $i (1..3) {
+	for (my $j = 0; $j < 1e6; $j++) { }
+	push @clock, Time::HiRes::clock();
+	note "clock = @clock";
+    }
+    ok $clock[0] >= 0 &&
+	$clock[1] > $clock[0] &&
+	$clock[2] > $clock[1] &&
+	$clock[3] > $clock[2];
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/gettimeofday.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/gettimeofday.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/gettimeofday.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,33 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    unless(&Time::HiRes::d_gettimeofday) {
+	require Test::More;
+	Test::More::plan(skip_all => "no gettimeofday()");
+    }
+}
+
+use Test::More 0.82 tests => 6;
+use t::Watchdog;
+
+my @one = Time::HiRes::gettimeofday();
+note 'gettimeofday returned ', 0+ at one, ' args';
+ok @one == 2;
+ok $one[0] > 850_000_000 or note "@one too small";
+
+sleep 1;
+
+my @two = Time::HiRes::gettimeofday();
+ok $two[0] > $one[0] || ($two[0] == $one[0] && $two[1] > $one[1])
+	or note "@two is not greater than @one";
+
+my $f = Time::HiRes::time();
+ok $f > 850_000_000 or note "$f too small";
+ok $f - $two[0] < 2 or note "$f - $two[0] >= 2";
+
+my $r = [Time::HiRes::gettimeofday()];
+my $g = Time::HiRes::tv_interval $r;
+ok $g < 2 or note $g;
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/itimer.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/itimer.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/itimer.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,64 @@
+use strict;
+
+sub has_symbol {
+    my $symbol = shift;
+    eval "use Time::HiRes qw($symbol)";
+    return 0 unless $@ eq '';
+    eval "my \$a = $symbol";
+    return $@ eq '';
+}
+
+use Config;
+
+BEGIN {
+    require Time::HiRes;
+    unless(defined &Time::HiRes::setitimer
+	    && defined &Time::HiRes::getitimer
+	    && has_symbol('ITIMER_VIRTUAL')
+	    && $Config{sig_name} =~ m/\bVTALRM\b/
+	    && $^O ne 'nto' # nto: QNX 6 has the API but no implementation
+	    && $^O ne 'haiku' # haiku: has the API but no implementation
+	    && $^O ne 'gnu' # GNU/Hurd: has the API but no implementation
+    ) {
+	require Test::More;
+	Test::More::plan(skip_all => "no itimer");
+    }
+}
+
+use Test::More 0.82 tests => 2;
+use t::Watchdog;
+
+my $limit = 0.25; # 25% is acceptable slosh for testing timers
+
+my $i = 3;
+my $r = [Time::HiRes::gettimeofday()];
+
+$SIG{VTALRM} = sub {
+    $i ? $i-- : Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0);
+    note "Tick! $i ", Time::HiRes::tv_interval($r);
+};	
+
+note "setitimer: ", join(" ",
+    Time::HiRes::setitimer(&Time::HiRes::ITIMER_VIRTUAL, 0.5, 0.4));
+
+# Assume interval timer granularity of $limit * 0.5 seconds.  Too bold?
+my $virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
+ok defined $virt && abs($virt / 0.5) - 1 < $limit;
+
+note "getitimer: ", join(" ",
+    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
+
+while (Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL)) {
+    my $j;
+    for (1..1000) { $j++ } # Can't be unbreakable, must test getitimer().
+}
+
+note "getitimer: ", join(" ",
+    Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL));
+
+$virt = Time::HiRes::getitimer(&Time::HiRes::ITIMER_VIRTUAL);
+ok defined $virt && $virt == 0;
+
+$SIG{VTALRM} = 'DEFAULT';
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/nanosleep.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/nanosleep.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/nanosleep.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    unless(&Time::HiRes::d_nanosleep) {
+	require Test::More;
+	Test::More::plan(skip_all => "no nanosleep()");
+    }
+}
+
+use Test::More 0.82 tests => 3;
+use t::Watchdog;
+
+eval { Time::HiRes::nanosleep(-5) };
+like $@, qr/::nanosleep\(-5\): negative time not invented yet/,
+	"negative time error";
+
+my $one = CORE::time;
+Time::HiRes::nanosleep(10_000_000);
+my $two = CORE::time;
+Time::HiRes::nanosleep(10_000_000);
+my $three = CORE::time;
+ok $one == $two || $two == $three
+    or note "slept too long, $one $two $three";
+
+SKIP: {
+    skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
+    my $f = Time::HiRes::time();
+    Time::HiRes::nanosleep(500_000_000);
+    my $f2 = Time::HiRes::time();
+    my $d = $f2 - $f;
+    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/sleep.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/sleep.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/sleep.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+use strict;
+
+use Test::More 0.82 tests => 4;
+use t::Watchdog;
+
+BEGIN { require_ok "Time::HiRes"; }
+
+use Config;
+
+my $xdefine = ''; 
+if (open(XDEFINE, "xdefine")) {
+    chomp($xdefine = <XDEFINE> || "");
+    close(XDEFINE);
+}
+
+my $can_subsecond_alarm =
+   defined &Time::HiRes::gettimeofday &&
+   defined &Time::HiRes::ualarm &&
+   defined &Time::HiRes::usleep &&
+   ($Config{d_ualarm} || $xdefine =~ /-DHAS_UALARM/);
+
+eval { Time::HiRes::sleep(-1) };
+like $@, qr/::sleep\(-1\): negative time not invented yet/,
+	"negative time error";
+
+SKIP: {
+    skip "no subsecond alarm", 2 unless $can_subsecond_alarm;
+    my $f = Time::HiRes::time; 
+    note "time...$f";
+    ok 1;
+
+    my $r = [Time::HiRes::gettimeofday()];
+    Time::HiRes::sleep (0.5);
+    note "sleep...", Time::HiRes::tv_interval($r);
+    ok 1;
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/stat.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/stat.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/stat.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,71 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    unless(&Time::HiRes::d_hires_stat) {
+	require Test::More;
+	Test::More::plan(skip_all => "no hi-res stat");
+    }
+    if($^O =~ /\A(?:cygwin|MSWin)/) {
+	require Test::More;
+	Test::More::plan(skip_all =>
+		"$^O file timestamps not reliable enough for stat test");
+    }
+}
+
+use Test::More 0.82 tests => 16;
+use t::Watchdog;
+
+my $limit = 0.25; # 25% is acceptable slosh for testing timers
+
+my @atime;
+my @mtime;
+for (1..5) {
+    Time::HiRes::sleep(rand(0.1) + 0.1);
+    open(X, ">$$");
+    print X $$;
+    close(X);
+    my($a, $stat, $b) = ("a", [Time::HiRes::stat($$)], "b");
+    is $a, "a";
+    is $b, "b";
+    is ref($stat), "ARRAY";
+    push @mtime, $stat->[9];
+    Time::HiRes::sleep(rand(0.1) + 0.1);
+    open(X, "<$$");
+    <X>;
+    close(X);
+    $stat = [Time::HiRes::stat($$)];
+    push @atime, $stat->[8];
+}
+1 while unlink $$;
+note "mtime = @mtime";
+note "atime = @atime";
+my $ai = 0;
+my $mi = 0;
+my $ss = 0;
+for (my $i = 1; $i < @atime; $i++) {
+    if ($atime[$i] >= $atime[$i-1]) {
+	$ai++;
+    }
+    if ($atime[$i] > int($atime[$i])) {
+	$ss++;
+    }
+}
+for (my $i = 1; $i < @mtime; $i++) {
+    if ($mtime[$i] >= $mtime[$i-1]) {
+	$mi++;
+    }
+    if ($mtime[$i] > int($mtime[$i])) {
+	$ss++;
+    }
+}
+note "ai = $ai, mi = $mi, ss = $ss";
+# Need at least 75% of monotonical increase and
+# 20% of subsecond results. Yes, this is guessing.
+SKIP: {
+    skip "no subsecond timestamps detected", 1 if $ss == 0;
+    ok $mi/(@mtime-1) >= 0.75 && $ai/(@atime-1) >= 0.75 &&
+	     $ss/(@mtime+ at atime) >= 0.2;
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/time.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/time.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/time.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+use strict;
+
+use Test::More 0.82 tests => 2;
+use t::Watchdog;
+
+BEGIN { require_ok "Time::HiRes"; }
+
+SKIP: {
+    skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
+    my ($s, $n, $i) = (0);
+    for $i (1 .. 100) {
+	$s += Time::HiRes::time() - CORE::time();
+	$n++;
+    }
+    # $s should be, at worst, equal to $n
+    # (CORE::time() may be rounding down, up, or closest),
+    # but allow 10% of slop.
+    ok abs($s) / $n <= 1.10
+	or note "Time::HiRes::time() not close to CORE::time()";
+    note "s = $s, n = $n, s/n = ", abs($s)/$n;
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/tv_interval.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/tv_interval.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/tv_interval.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+use strict;
+
+use Test::More 0.82 tests => 2;
+
+BEGIN { require_ok "Time::HiRes"; }
+
+my $f = Time::HiRes::tv_interval [5, 100_000], [10, 500_000];
+ok abs($f - 5.4) < 0.001 or note $f;
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/ualarm.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/ualarm.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/ualarm.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,112 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    unless(&Time::HiRes::d_ualarm) {
+	require Test::More;
+	Test::More::plan(skip_all => "no ualarm()");
+    }
+}
+
+use Test::More 0.82 tests => 12;
+use t::Watchdog;
+
+use Config;
+
+SKIP: {
+    skip "no alarm", 2 unless $Config{d_alarm};
+    my $tick = 0;
+    local $SIG{ ALRM } = sub { $tick++ };
+
+    my $one = CORE::time;
+    $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
+    my $two = CORE::time;
+    $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
+    my $three = CORE::time;
+    ok $one == $two || $two == $three
+	or note "slept too long, $one $two $three";
+    note "tick = $tick, one = $one, two = $two, three = $three";
+
+    $tick = 0; Time::HiRes::ualarm(10_000, 10_000); while ($tick < 3) { }
+    ok 1;
+    Time::HiRes::ualarm(0);
+    note "tick = $tick, one = $one, two = $two, three = $three";
+}
+
+eval { Time::HiRes::ualarm(-4) };
+like $@, qr/::ualarm\(-4, 0\): negative time not invented yet/,
+	"negative time error";
+
+# Find the loop size N (a for() loop 0..N-1)
+# that will take more than T seconds.
+
+sub bellish {  # Cheap emulation of a bell curve.
+    my ($min, $max) = @_;
+    my $rand = ($max - $min) / 5;
+    my $sum = 0; 
+    for my $i (0..4) {
+	$sum += rand($rand);
+    }
+    return $min + $sum;
+}
+
+# 1_100_000 slightly over 1_000_000,
+# 2_200_000 slightly over 2**31/1000,
+# 4_300_000 slightly over 2**32/1000.
+for my $n (100_000, 1_100_000, 2_200_000, 4_300_000) {
+    my $ok;
+    for my $retry (1..10) {
+	my $alarmed = 0;
+	local $SIG{ ALRM } = sub { $alarmed++ };
+	my $t0 = Time::HiRes::time();
+	note "t0 = $t0";
+	note "ualarm($n)";
+	Time::HiRes::ualarm($n); 1 while $alarmed == 0;
+	my $t1 = Time::HiRes::time();
+	note "t1 = $t1";
+	my $dt = $t1 - $t0;
+	note "dt = $dt";
+	my $r = $dt / ($n/1e6);
+	note "r = $r";
+	$ok =
+	    ($n < 1_000_000 || # Too much noise.
+	     ($r >= 0.8 && $r <= 1.6));
+	last if $ok;
+	my $nap = bellish(3, 15);
+	note sprintf "Retrying in %.1f seconds...\n", $nap;
+	Time::HiRes::sleep($nap);
+    }
+    ok $ok or note "ualarm($n) close enough";
+}
+
+{
+    my $alrm0 = 0;
+
+    $SIG{ALRM} = sub { $alrm0++ };
+    my $t0 = Time::HiRes::time();
+    my $got0 = Time::HiRes::ualarm(500_000);
+
+    my($alrm, $t1);
+    do {
+	$alrm = $alrm0;
+	$t1 = Time::HiRes::time();
+    } while $t1 - $t0 <= 0.3;
+    my $got1 = Time::HiRes::ualarm(0);
+
+    note "t0 = $t0";
+    note "got0 = $got0";
+    note "t1 = $t1";
+    note "t1 - t0 = ", ($t1 - $t0);
+    note "got1 = $got1";
+    ok $got0 == 0 or note $got0;
+    SKIP: {
+	skip "alarm interval exceeded", 2 if $t1 - $t0 >= 0.5;
+	ok $got1 > 0;
+	ok $alrm == 0;
+    }
+    ok $got1 < 300_000;
+    my $got2 = Time::HiRes::ualarm(0);
+    ok $got2 == 0 or note $got2;
+}
+
+1;

Added: vendor/perl/dist/cpan/Time-HiRes/t/usleep.t
===================================================================
--- vendor/perl/dist/cpan/Time-HiRes/t/usleep.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Time-HiRes/t/usleep.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,78 @@
+use strict;
+
+BEGIN {
+    require Time::HiRes;
+    unless(&Time::HiRes::d_usleep) {
+	require Test::More;
+	Test::More::plan(skip_all => "no usleep()");
+    }
+}
+
+use Test::More 0.82 tests => 6;
+use t::Watchdog;
+
+eval { Time::HiRes::usleep(-2) };
+like $@, qr/::usleep\(-2\): negative time not invented yet/,
+	"negative time error";
+
+my $limit = 0.25; # 25% is acceptable slosh for testing timers
+
+my $one = CORE::time;
+Time::HiRes::usleep(10_000);
+my $two = CORE::time;
+Time::HiRes::usleep(10_000);
+my $three = CORE::time;
+ok $one == $two || $two == $three
+or note "slept too long, $one $two $three";
+
+SKIP: {
+    skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
+    my $f = Time::HiRes::time();
+    Time::HiRes::usleep(500_000);
+    my $f2 = Time::HiRes::time();
+    my $d = $f2 - $f;
+    ok $d > 0.4 && $d < 0.9 or note "slept $d secs $f to $f2";
+}
+
+SKIP: {
+    skip "no gettimeofday", 1 unless &Time::HiRes::d_gettimeofday;
+    my $r = [ Time::HiRes::gettimeofday() ];
+    Time::HiRes::sleep( 0.5 );
+    my $f = Time::HiRes::tv_interval $r;
+    ok $f > 0.4 && $f < 0.9 or note "slept $f instead of 0.5 secs.";
+}
+
+SKIP: {
+    skip "no gettimeofday", 2 unless &Time::HiRes::d_gettimeofday;
+
+    my ($t0, $td);
+
+    my $sleep = 1.5; # seconds
+    my $msg;
+
+    $t0 = Time::HiRes::gettimeofday();
+    $a = abs(Time::HiRes::sleep($sleep)        / $sleep         - 1.0);
+    $td = Time::HiRes::gettimeofday() - $t0;
+    my $ratio = 1.0 + $a;
+
+    $msg = "$td went by while sleeping $sleep, ratio $ratio.\n";
+
+    SKIP: {
+	skip $msg, 1 unless $td < $sleep * (1 + $limit);
+	ok $a < $limit or note $msg;
+    }
+
+    $t0 = Time::HiRes::gettimeofday();
+    $a = abs(Time::HiRes::usleep($sleep * 1E6) / ($sleep * 1E6) - 1.0);
+    $td = Time::HiRes::gettimeofday() - $t0;
+    $ratio = 1.0 + $a;
+
+    $msg = "$td went by while sleeping $sleep, ratio $ratio.\n";
+
+    SKIP: {
+	skip $msg, 1 unless $td < $sleep * (1 + $limit);
+	ok $a < $limit or note $msg;
+    }
+}
+
+1;

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/CJK/Zhuyin.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3176 @@
+package Unicode::Collate::CJK::Zhuyin;
+
+use 5.006;
+use strict;
+
+our $VERSION = '0.94';
+
+my %u2p;
+my $wt = 0x8000;
+
+while (<DATA>) {
+    last if /^__END__/;
+    my @c = split;
+    for my $c (@c) {
+	next if !$c;
+	$u2p{hex($c)} = $wt if $c !~ /-/;
+	$wt++;
+    }
+}
+
+sub weightZhuyin {
+    my $u = shift;
+    return exists $u2p{$u} ? $u2p{$u} : undef;
+}
+
+1;
+__DATA__
+FDD0-3105
+516B 4EC8 6252 6733 7390 593F 5C9C 82AD 5CC7 67ED
+75A4 54F5 5DFC 634C 7C91 7F93 8686 91DB 91DF 3B6D
+8C5D 9C83 4C3E
+53D0 72AE 629C 577A 59AD 62D4 70A6 7679 80C8 8307
+83DD 8A59 8DCB 8EF7 98B0 58A2 9B43 9F25
+628A 94AF 9200 9776
+575D 5F1D 7238 57BB 8019 8DC1 9C85 9C8C 43AC 9B8A
+8987 77F2 9738 58E9 705E 6B1B
+5DF4 53ED 5427 7B06 7D26 7F62 9B5E 7F77
+7676 5E17 62E8 6CE2 7677 73BB 525D 5265 54F1 76CB
+7835 94B5 997D 7D34 7F3D 889A 88B0 83E0 7886 9262
+50E0 5D93 64A5 64AD 9911 9B81 8E73 9A4B 9C4D
+4EE2 4F2F 72BB 8091 9A73 5E1B 72DB 74DD 4FBC 52C3
+80C9 82E9 4EB3 632C 6D61 74DF 79E1 90E3 94B9 94C2
+3A8D 3DBF 3E40 3F0E 8116 8236 88AF 535A 6E24 88B9
+9E41 613D 640F 733C 8467 9238 9251 998E 50F0 3B0D
+717F 7254 7B94 824A 4B6F 999B 99C1 8514 8E23 92CD
+9548 464F 294D0 999E 99EE 8C70 2836D 5697 61EA 3A67
+3B27 7C19 894F 939B 993A 9D53 72A6 7921 9AC6 9AC9
+6B02 7934 896E 946E
+8DDB 7BA5 7C38
+5B79 6A97 7CEA 8B52 8617
+2E8A 535C 5575 8421 818A
+6300 63B0 64D8
+767D
+767E 4F70 67CF 6822 636D 74F8 7CA8 7D54 6446 64FA
+896C
+5E8D 62DD 8D25 62DC 6557 7308 7A17 86FD 7CBA 3525
+8D01 97DB
+7AE1 85AD
+5351 676F 9642 76C3 686E 60B2 63F9 6911 7891 7986
+9E4E 9303 85E3 9D6F
+5317 3933 9273
+8D1D 5B5B 72C8 8C9D 5907 6601 726C 90B6 80CC 82DD
+94A1 4FFB 500D 36DD 6096 72FD 90E5 505D 5079 3AF2
+6896 73FC 88AB 5099 60EB 7119 7432 8EF0 8F88 9101
+50C3 6102 3ED7 789A 3E22 7295 84D3 8A96 9781 8919
+8F29 92C7 9AB3 618A 7CD2 97B4 943E
+5457 5504 7999
+52F9 5305 5B62 67B9 80DE 82DE 7B23 7172 9F85 8912
+8554 95C1 8943 9F59
+7A87 5AD1 96F9 420F 8584 2688A 3FFA
+5B9D 6009 9971 4FDD 9E28 5BB2 73E4 5821 5822 5AAC
+5BDA 8446 98FD 99C2 9CF5 7DE5 8913 9D07 8CF2 4B4B
+5BF3 5BF6 28C26 974C 4D10 28C3B
+52FD 62A5 62B1 8C79 8DB5 94C7 86AB 888C 5831 83E2
+924B 9C8D 9764 66B4 9AB2 9AF1 8663 9B91 5124 66D3
+7206 5FC1 9464 9E14
+4F68 85F5
+6273 653D 73ED 822C 9881 6591 642C 6592 9812 7622
+9CFB 4232 878C 8929 764D 8FAC
+5742 5C85 962A 6604 677F 7248 74EA 94A3 7C84 8228
+9211 8742 9B6C 95C6
+529E 534A 4F34 5762 59C5 6011 62CC 7ECA 67C8 79DA
+6E74 7D46 9261 977D 8FA6 74E3
+626E 8781
+5954 6CCD 8D32 681F 7287 951B 931B
+672C 82EF 5959 755A 7FC9 694D
+574B 574C 5034 6379 6873 6E00 7B28 26BC0 9029 64AA
+7356 8F3D
+90A6 57B9 5E2E 6360 6D5C 6886 90AB 5E47 5E5A 7E0D
+5E6B 97A4
+7ED1 7D81 699C 7253 8180 9AC8
+3B4B 73A4 868C 508D 68D2 68D3 8C24 585D 6412 7A16
+84A1 872F 78C5 9551 8255 8B17 938A
+4F3B 794A 595F 5D29 7D63 958D 50B0 5D6D 75ED 5623
+7DB3
+752D
+57C4 57F2 7EF7 7423 742B 83F6 7E43 979B
+6CF5 8FF8 902C 5874 955A 750F 295F4 4B70 8E66 93F0
+882F
+63FC
+5C44 506A 6BF4 6945 903C 8C4D 8795 9CBE 939E 9D56
+9C0F
+8378 9F3B
+5315 6BD4 3832 5936 673C 4F4A 5421 59A3 6C98 7595
+5F7C 67C0 79D5 4FFE 7B14 7C83 822D 555A 3A8F 7B46
+7B84 805B 9119 8C8F
+5E01 5FC5 6BD5 95ED 4F56 3629 5752 5E87 8BD0 3620
+59BC 602D 6036 39D9 6788 7540 90B2 54D4 67F2 6BD6
+73CC 75AA 82FE 6BD9 72F4 7B13 7C8A 835C 94CB 965B
+5A62 5EB3 655D 6890 7562 8890 9587 9589 581B 5F3B
+5F3C 610A 610E 6E62 7695 7B5A 8406 8A56 8CB1 8CC1
+8D51 6ED7 714F 75F9 75FA 7764 8177 870C 8DF8 924D
+959F 98F6 55F6 5E63 5F0A 5F43 6EED 78A7 7B85 7B86
+7DBC 84D6 88E8 999D 6F77 719A 7358 7359 3EEB 84FD
+853D 480B 912A 99DC 9AF2 58C1 5B16 5EE6 3D65 7BE6
+7F7C 89F1 9B85 6583 6FDE 7BF3 7E2A 81C2 859C 907F
+9946 5970 74A7 8E55 9128 9AC0 7E74 895E 93CE 4557
+8963 8E83 8E84 97B8 97E0 8D14 9434 9A46 9B53 9DDD
+9DE9 9F0A
+5302 841E 5E64 5B36 8945
+618B 87DE 9CD6 9C49 9F08 864C 9F9E
+5225 522B 5487 43DF 8382 86C2 5FB6 8952 8E69
+762A 765F 3FDC
+5F46 4318
+706C 6753 6807 98D1 9A89 9ADF 6DF2 5F6A 730B 813F
+98A9 5882 5E56 647D 6EEE 98AE 9AA0 6A19 719B 8198
+8508 762D 78E6 9556 98D9 98DA 5126 98B7 700C 8B24
+7202 81D5 85E8 8D06 93E2 7A6E 9573 98C6 98C7 98C8
+9A43 9463 4BBD 9A6B
+8868 5A4A 88F1 8AD8 9336 6AA6 893E
+4FF5 9CD4 9C3E
+98CA
+8FB9 8FBA 782D 7B3E 63D9 7335 7F16 7178 7251 7502
+7BAF 7DE8 8759 9089 937D 9CCA 97AD 908A 9BFE 9BFF
+7C69
+8D2C 6241 7A86 533E 60FC 8CB6 8439 78A5 7A28 7CC4
+890A 9D18 85CA
+535E 5F01 5325 5FED 6283 6C73 6C74 91C6 53D8 73A3
+82C4 4FBF 5909 662A 3B53 898D 5FA7 7F0F 904D 959E
+8FA1 7DF6 8251 8FA7 8FA8 8FA9 8FAB 8FAE 8FAF 8B8A
+5CC5 709E
+6C43 90A0 73A2 780F 5BBE 5F6C 68B9 50A7 658C 6915
+6EE8 3EDE 7F24 69DF 7478 8C69 8CD3 8CD4 9554 5110
+6FD2 6FF1 8668 8C73 6AB3 74B8 7015 9726 7E7D 944C
+986E
+6448 6BA1 8191 9AE9 64EF 9B02 6BAF 81CF 9ACC 9B13
+9AD5 9B22
+6C1E 6FF5
+51AB 4ECC 4ED2 6C37 51B0 5175 63A4
+4E19 6032 62A6 79C9 90B4 9643 661E 663A 67C4 70B3
+82EA 997C 772A 7A89 3A00 86C3 6452 7980 7A1F 9235
+927C 9905 9920 979E
+5E76 34C8 4E26 4F75 5E77 5EB0 5002 6824 75C5 7ADD
+504B 50A1 5BCE 68C5 8A81 9BA9 9750
+57AA 9786 92F2
+5CEC 5EAF 6661 900B 923D 8AA7
+9CEA 8F50 91AD
+535F 248F0 8865 54FA 6355 55B8 88DC 9D4F
+4E0D 5E03 4F48 5425 6B65 5498 3635 6016 62AA 6B68
+6B69 3CCD 67E8 949A 52CF 57D4 57D7 6091 6357 94B8
+57E0 8379 90E8 74FF 8E04 8500 90F6 9914 9922 7BF0
+7C3F
+FDD0-3106
+5991 25419 241B5 7685 8DB4 8225 556A 8469
+6777 722C 63B1 7436 7B62 6F56
+5E0A 5E15 6015 8899
+948B 5761 5CA5 6CCA 9887 6E8C 9255 9817 93FA
+5A46 5619 8522 9131 76A4 8B08 6AC7
+53F5 5C00 94B7 7B38 99CA
+5CB6 7087 6540 6622 6D26 73C0 8FEB 70DE 7834 7836
+91D9 7C95 84AA 9B44 9197 4A96
+6CFC 6872 6F51
+62CD
+4FF3 5F98 6392 7305 68D1 724C 8F2B 7C30 7C32 72A4
+5EF9
+54CC 6D3E 3B5B 6E43 848E 9383
+5478 36B0 600C 80A7 67F8 80DA 8843 9185
+962B 57F9 966A 6BF0 8D54 952B 88F4 88F5 8CE0 99CD
+4FD6
+4F02 6C9B 4F69 5E14 59F5 65BE 65C6 6D7F 73EE 914D
+7B29 4283 8F94 99B7 5D8F 9708 8F61
+84DC
+629B 62CB 812C
+5228 5486 5789 5E96 72CD 70B0 722E 530F 888D 8EF3
+9784 9E83 9E85
+8DD1
+5945 6CE1 70AE 75B1 76B0 7832 9EAD 791F 792E
+8422 891C
+5256 5A1D
+6294 6299 634A 638A 88D2 7B81 9307
+5485 54E3 5A44 7283 5ECD
+3434 7705 7819 7568 6F58 6500
+723F 6D00 76D8 8DD8 5ABB 5E4B 642B 69C3 84B0 76E4
+78D0 7E0F 78FB 8E52 23066 700A 87E0 8E63 939C 97B6
+51B8 5224 6C9C 62DA 6CEE 708D 53DB 7249 76FC 7554
+8041 88A2 8A4A 6EBF 9816 92EC 897B 947B
+9D65
+55B7 5674 6B55
+74EB 76C6 6E53 8450
+5460 7FF8
+55AF
+4E53 6C97 80EE 96F1 6EC2 8196 4A26 9736
+5390 5E9E 5396 65C1 9004 823D 5ACE 5FAC 249ED 8783
+9CD1 9F8E 9F90
+55D9 802A 89AB
+7090 80A8 80D6
+5309 36C1 6026 62A8 6072 39F8 7830 6888 70F9 7851
+8EEF 959B 6F30 562D 6F8E 78DE
+8283 670B 7AFC 5017 6337 580B 5F38 8391 5F6D 68DA
+6916 787C 7A1D 9E4F 5873 6189 69F0 6A25 71A2 84EC
+28083 8F23 7BE3 81A8 930B 97F8 9AFC 87DA 87DB 9B05
+4D36 97FC 9D6C 9A2F 7E84 9B14 945D
+6367 6DCE 768F 527B
+63BD 692A 78B0 8E2B
+7BF7
+4E15 4F13 4F3E 6279 7EB0 576F 62AB 62B7 708B 72C9
+90B3 7812 20731 6082 79DB 79E0 7D15 94CD 65C7 7FCD
+801A 8C7E 9208 921A 9239 925F 9294 5288 78C7 99D3
+9AEC 567C 930D 9B7E 9B8D 61B5 7914 7915 9739
+76AE 34DF 9630 5CAF 6787 6BDE 72D3 80B6 8298 6BD7
+6BD8 75B2 868D 5564 57E4 5D25 26A2D 86BD 86BE 8C7C
+2821A 90EB 9674 7137 7435 813E 8157 9C8F 7F74 818D
+8731 9B6E 58C0 7BFA 87B7 8C94 9D67 7F86 6707 9F19
+5339 5E80 758B 4EF3 572E 82C9 8134 75DE 92A2 8AC0
+9D04 64D7 567D 7656 4C26 56AD
+5C41 6DE0 6E12 63CA 91FD 5AB2 5AD3 7765 8F9F 6F4E
+7A2B 50FB 6FBC 568A 7513 4444 7588 8B6C 95E2 9DFF
+9E0A
+698C
+6C15 6487 22CC2 6486 66BC 77A5
+4E3F 82E4 9405
+5AF3
+527D 6153 7F25 98D8 65DA 7FF2 87B5 72A5 98C3 98C4
+9B52
+5AD6 74E2 7AC2 85B8 95DD
+6B8D 5F6F 779F 7BFB 7E39 91A5 76AB 9860
+7968 50C4 52E1 560C 5FB1 6F02 3B13
+56E8 504F 5AA5 728F 7BC7 7FE9 9342 9DA3
+9A88 80FC 8141 6944 6969 8CC6 8DF0 8ADA 8E41 99E2
+9ABF 9A08
+8991 8C1D 8CB5 8ADE
+7247 9A97 9A17 9A19
+9B78
+59D8 62FC 3866 7917 7A66 99AA 9A5E
+73AD 8D2B 5A26 8CA7 7415 5AD4 9891 983B 5B2A 7371
+85B2 56AC 77C9 8819 98A6 9870
+54C1 6980
+725D 6C56 8058
+4E52 7539 4FDC 5A09 6D84 782F 8060 8275 7AEE 9829
+29A4D
+5E73 8BC4 51ED 546F 576A 6CD9 5C4F 5E21 67B0 6D34
+73B6 80D3 82F9 90F1 3EB8 3EC2 8353 5C5B 5E32 6DDC
+74F6 86B2 5E48 7129 7F3E 840D 86E2 8A55 7501 84F1
+8EFF 9C86 51F4 4202 617F 7BB3 8F27 6191 9B83 6A98
+7C08 860B
+5CBC 5840
+4EC6 6534 6251 9660 5657 64B2 6F7D 64C8 9BC6
+3EAA 530D 812F 8386 83D0 83E9 8461 50D5 84B1 84B2
+917A 58A3 735B 749E 6FEE 77A8 7A59 423B 9564 258C8
+7E80 8965 93F7
+5724 6734 5703 6D66 70F3 666E 6EA5 8C31 8AE9 6A38
+6C06 6A8F 9568 8B5C 8E7C 9420
+94FA 8216 8217 92EA 3B25 7011 66DD
+5DEC 5DED 99C7 8D0C
+FDD0-3107
+5463
+5988 5B56 5ABD 5B24 5B37
+9EBB 75F2 7298 8534 87C7
+9A6C 3437 739B 7801 8682 99AC 6EA4 746A 78BC 879E
+93B7 9C22 9DCC
+72B8 6769 7943 9581 9A82 551B 508C 7341 561C 3A38
+69AA 7770 79A1 7F75 372B 99E1 7923 9B15
+4E87 5417 55CE 561B 5AF2 9064 87C6
+6478
+8C1F 998D 5AEB 9EBD 6469 6479 6A21 819C 6A45 78E8
+7CE2 56A4 64F5 8B28 56A9 56B0 9943 8611 5298 9ACD
+9B54 40FA 995D
+62B9 61E1 4A4B
+672B 52B0 573D 59BA 5E13 6B7E 6B7F 6B81 6CAB 248FB
+5E1E 6629 67BA 8309 964C 551C 768C 771C 773F 781E
+79E3 773D 7C96 7D48 8388 83AB 6E50 86E8 8C83 8C8A
+55FC 587B 5BDE 6F20 734F 84E6 9286 977A 5AFC 66AF
+3C73 9ED9 7790 9546 9B69 58A8 763C 7799 9ED8 700E
+87D4 8B29 8C98 7205 85E6 93CC 7933 7E86 9A40 8031
+5E85 603D 5C1B 9B79 9EBF
+4E48 9EBC 5692 569C 6FF9 7666
+57CB 3725 85B6 973E
+4E70 836C 8CB7 562A 8552 9DF6
+52A2 4F45 58F2 8FC8 9EA6 5356 8109 8108 9EA5 8847
+52F1 8CE3 9081 9721 9722 2A133
+5445 5746 6C92 6CA1 679A 73AB 6802 7709 82FA 5A12
+8104 6885 73FB 8122 8393 5833 5A92 5D4B 6E44 6E48
+7338 7742 90FF 6963 6973 7164 7442 847F 587A 69D1
+7996 9176 9545 9E5B 92C2 9709 7A48 5FBE 9387 77C0
+6517 9DA5 862A 9EF4
+6BCE 6BCF 51C2 7F8E 6334 6D7C 5A84 5D44 6E3C 5ABA
+815C 9541 5B0D 71D8 9382 9EE3
+59B9 62BA 6CAC 65C0 6627 3B51 771B 7959 8882 5A9A
+5BD0 75D7 8DCA 715D 9B3D 7778 97CE 7BC3 875E 9B45
+8EBE
+732B 8C93
+6BDB 77DB 6786 7266 8305 8306 65C4 7F5E 515E 8EDE
+9155 5825 6E35 28968 951A 9AE6 5AF9 6C02 729B 8765
+9AF3 87CA 9328 9D9C
+5187 536F 5918 4E6E 623C 36B9 5CC1 6CD6 6634 94C6
+7B37 84E9
+5183 7683 5190 82BC 5192 67D5 770A 8302 8D38 8004
+88A4 8992 5AA2 5E3D 8CBF 6117 6693 6959 6BF7 7441
+843A 7780 8C8C 911A 8750 912E 61CB
+54DE
+725F 4F94 52BA 3B4C 6048 6D20 7738 8C0B 86D1 7F2A
+8E0E 927E 8B00 77B4 7E46 936A 9D3E 9EB0
+67D0 26CD1
+5ADA 989F
+59CF 6097 34BC 86EE 50C8 8C29 6172 9992 6A20 7792
+779E 9794 25C91 8B3E 9945 9CD7 9862 9B17 9B18 9C3B
+883B
+5C58 6E80 774C 6EE1 6EFF 87A8 87CE 8954 93CB 77D5
+66FC 3B05 5881 5E54 6162 6471 6F2B 734C 7F26 9124
+69FE 71B3 8504 8513 3862 6FB7 9558 7E35 93DD 2914D
+4555 2414E
+8630
+95E8 626A 73A7 9494 9580 9585 636B 83DB 748A 9346
+4EB9 864B
+95F7 7116 60B6 66AA 71DC 61D1 61E3
+4EEC 5011 691A
+7264
+5402 5FD9 6C52 9099 5C28 6757 6767 8292 6C13 76F2
+7B00 54E4 5A0F 5EAC 3936 607E 6D5D 72F5 832B 727B
+3ECA 91EF 94D3 75DD 786D 86D6 420D 23677 92E9 99F9
+29DF6
+83BD 7865 833B 83BE 58FE 6F2D 3B12 87D2 880E
+753F 867B 51A1 8394 840C 8420 4004 76DF 8499 8771
+511A 6A57 750D 77A2 8544 9133 5E6A 61DE 66DA 6FDB
+9138 6726 6AAC 6C0B 4443 4445 9BCD 77C7 791E 9E72
+8268 8609 77D2 973F 9740 995B 986D 9F06 9E0F
+52D0 731B 74FE 4045 9530 824B 8722 9333 61DC 7374
+61F5 9BED 8813
+5B5F 20D7C 68A6 6E95 5922 5923 44DD 9725 3734
+63B9 64DD
+54AA 772F 7787
+519E 5F25 7F59 7962 8FF7 7315 8C1C 8A78 84BE 5F4C
+64DF 7CDC 7E3B 8B0E 919A 9E8A 9E8B 79B0 9761 3737
+7030 737C 9E9B 6202 6520 74D5 957E 7222 4577 863C
+91BE 91BF 9E0D 91C4
+7C73 8288 4F8E 6CB5 7F8B 5F2D 6D23 6549 772B 8112
+6E33 845E 92A4 851D 6FD4 5B4A 7056
+5196 7CF8 6C68 6C95 5B93 6CCC 89C5 5CDA 5BBB 7955
+79D8 5BC6 6DE7 6DFF 8993 8994 5E42 8C27 5853 5E4E
+3A20 899B 5627 6993 6EF5 6F1E 7190 871C 6A12 8524
+9F0F 51AA 5E66 6FD7 8B10 6AC1 7C1A 85CC 7F83
+4E5C 5400 54A9 54F6 5B6D
+706D 70D5 8995 6423 6EC5 8511 9D13 7BFE 858E 5E6D
+61F1 6AD7 881B 884A 9456 9C74
+55B5
+82D7 3464 5A8C 63CF 9E4B 7784 7DE2 9D93 9C59
+676A 7707 79D2 6DFC 6E3A 7F08 7BCE 7DF2 85D0 9088
+5999 5E99 7385 7AD7 5EBF 5EDF
+8C2C 8B2C
+5B80 8287 7720 5A42 7EF5 5A94 68C9 7DBF 7DDC 81F1
+8752 5B35 6AB0 6ACB 77C8 77CA 77CF
+4E0F 6C45 514D 6C94 9EFE 52C9 7704 5A29 3743 506D
+5195 52D4 6E11 5595 6110 6E4E 7F05 7D7B 817C 8442
+9EFD 3EF0 7DEC 9EAB 6FA0 9BB8
+9763 9762 7CC6 9EAA 9EBA 9EB5
+6C11 59C4 5CB7 5FDE 600B 65FB 65FC 73C9 76FF 7807
+82E0 7F60 5D0F 636A 7418 7F17 656F 7449 75FB 7888
+9231 7DCD 4AB8 7DE1 9309 9D16 9372
+76BF 51BA 5221 95F5 62BF 6CEF 52C4 6543 95FD 60AF
+654F 7B22 60FD 6E63 9594 610D 3B06 668B 95A9 50F6
+615C 61AB 6F63 7C22 2704B 9CD8 8820 9C35 2A134
+578A 7B3D
+540D 660E 9E23 6D3A 7700 51A5 8317 6719 7733 94ED
+5AC7 6E9F 733D 910D 669D 69A0 84C2 9298 9CF4 7791
+879F 89AD 4AE4
+4F72 59F3 51D5 614F 9169
+547D 6927 8A7A
+63B5
+6BEA 58B2 6C01
+6BCD 4EA9 7261 5776 59C6 5CD4 7273 7546 7552 80DF
+755D 755E 782A 756E 27FF9 20E96 9267 8E07
+6728 4EEB 6730 76EE 6C90 72C7 7091 7267 82DC 6BE3
+869E 94BC 83AF 96EE 52DF 3708 6958 7766 926C 5893
+5E55 5E59 6154 6155 66AE 8252 9702 7A46 7E38 97AA
+51E9 62C7
+FDD0-3108
+53D1 6CB7 767A 50A0 767C 5F42 9166 91B1
+4E4F 4F10 59C2 57A1 6D4C 75BA 7F5A 9600 6830 781D
+8337 7B4F 7782 7F70 95A5 7F78 6A43 85C5
+4F71 6CD5 704B
+73D0 743A 9AEA 9AEE 855F 27B0B
+9345
+4ECF 5772
+68BB
+98DE 5983 975E 98DB 5561 5A53 6E04 7EEF 291EB 6249
+7306 83F2 975F 7DCB 871A 88F6 970F 9CB1 9925 99A1
+9A11 9A1B 98DD
+80A5 6DDD 8153 4208 8730 87E6
+670F 532A 8BFD 595C 60B1 6590 68D0 69A7 7FE1 8AB9
+7BDA 855C 2913C
+5420 5E9F 676E 6CB8 72D2 80BA 82BE 6632 80C7 8D39
+4FF7 5255 539E 75BF 5C5D 966B 5EC3 3E43 8409 8CBB
+75F1 9544 5EE2 66CA 4935 7648 9F23 6FF7 4C01 6AE0
+9BE1 9428 9745
+5A54 6683
+7D11 88E6
+7F36 5426 599A 7F39 7F3B 6B95 96EC 9D00
+5E06 8A09 756A 52EB 5643 5B0F 5E61 61A3 65D9 8543
+65DB 7E59 7FFB 85E9 8F53 98BF 7C53 98DC 9C55
+51E1 51E2 51E3 3836 5FDB 674B 77FE 7C75 9492 67C9
+70E6 8227 7B32 68E5 6E22 7169 7DD0 58A6 6A0A 6A4E
+71D4 74A0 81B0 7E41 85A0 7FB3 894E 8E6F 702A 703F
+792C 9407 9422 8629 881C 9DED
+53CD 6255 8FD4 484A 91E9
+201A9 6C3E 72AF 597F 6C4E 996D 6CDB 8D29 7548 8303
+4000 8ED3 5A4F 68B5 3D00 76D5 7B35 8CA9 8EEC 98EF
+98F0 6EFC 5B0E 7BC4
+8224
+5206 5429 5E09 7EB7 6610 6C1B 82AC 54DB 517A 7D1B
+7FC2 886F 515D 8A1C 915A 68FB 9216 96F0 3B1F 6706
+71D3 9934 9959
+575F 59A2 5C8E 6C7E 670C 678C 7083 80A6 7F92 86A0
+86A1 68A4 68FC 711A 999A 84B6 58B3 5E69 6FC6 9B75
+6A68 71CC 8561 8C6E 96AB 9F22 7FB5 9F16 8C76 8F52
+943C 99A9 9EC2
+7C89 9EFA
+4EFD 5F05 594B 5FFF 79CE 507E 6124 7CAA 50E8 61A4
+596E 81B9 7CDE 9CBC 7035 9C5D
+7AD5 8EAE
+531A 65B9 6C78 90A1 678B 7265 82B3 94AB 8684 6DD3
+9201 9D0B
+59A8 9632 623F 80AA 57C5 9C82 9B74 9C1F
+4EFF 8BBF 5F77 7EBA 6609 6618 74EC 7706 5023 65CA
+7D21 822B 8A2A 9AE3 9DAD
+653E 8DBD
+574A 580F 933A
+4E30 98CE 4EF9 51E8 51EC 59A6 6CA3 6CA8 51EE 67AB
+5C01 75AF 76FD 781C 98A8 36D4 5CEF 5CF0 44A0 5051
+687B 70FD 5D36 7326 950B 6953 728E 8451 8702 760B
+78B8 50FC 7BC8 92D2 9137 6A92 95CF 8C50 93E0 34A5
+5BF7 3826 7043 9146 973B 8634 882D 974A 98CC 9EB7
+51AF 5906 6340 6D72 9022 5838 99AE 7D98 8242 3980
+6453 6F28 3D6F
+8BBD 552A 8982 8AF7
+51E4 5949 752E 4FF8 6E57 7128 7148 7F1D 8D57 9CEF
+9CF3 9D0C 8CF5 7E2B
+7412 6E84 93BD 8615
+8985
+4F15 544B 598B 909E 59C7 739E 80A4 6024 67CE 7806
+57BA 5A10 5C03 8342 886D 65C9 3B6A 7D28 8374 8DBA
+9EB8 75E1 7A03 8DD7 9207 7B5F 7D92 5B75 8C67 911C
+6577 819A 9CFA 9EA9 7CD0 9EAC 9EB1 61EF
+4E40 5DFF 5F17 4F0F 51EB 7536 4F5B 51B9 521C 5B5A
+6276 5488 5CAA 5F7F 602B 62C2 670D 678E 6CED 7EC2
+7ECB 8299 82A3 4FD8 5798 3A84 67EB 6C1F 6D11 70A5
+73B8 7549 7550 7F58 82FB 8300 97E8 54F9 683F 6D6E
+7829 7953 832F 86A8 90DB 5310 6874 6DAA 70F0 7408
+7B26 7B30 7D31 7D3C 7FC7 8274 83A9 8659 5E45 68F4
+7D65 7F66 83D4 7CB0 7D8D 8240 844D 8709 8F90 9258
+925C 98AB 9CE7 6991 798F 7A2A 7B99 97CD 5E5E 6F93
+8760 9AF4 8AE8 8E3E 8F3B 9B84 9D14 7641 29732 9EFB
+8946 9D69 9D9D
+5452 629A 4E76 5E9C 5F23 62CA 65A7 4FCC 4FDB 80D5
+9CEC 4FEF 90D9 91DC 91E1 636C 8F85 7124 76D9 8151
+6ECF 8705 42E8 8150 8F14 5638 64A8 64AB 982B 9B34
+7C20 9EFC
+2ECF 2ED6 961D 7236 8BA3 4ED8 5987 8D1F 577F 3914
+7ACE 961C 9644 9A78 590D 5CCA 8A03 8CA0 8D74 3931
+7954 86A5 965A 5069 51A8 526F 5A66 86B9 889D 5A8D
+5BCC 5FA9 3DC6 79FF 86D7 8A42 8D4B 5711 6931 7F1A
+8179 842F 9C8B 8D59 4B7B 3B3C 7DEE 875C 876E 8907
+8914 8CE6 99D9 5B14 7E1B 8567 8F39 9B92 8CFB 9351
+9362 9CC6 8986 99A5 4600 9C12 204D7
+592B 752B 5490 915C 5085 6928 88B1 8984 79A3 9BB2
+FDD0-3109
+5491 54D2 8037 8345 7B1A 55D2 642D 2143F 6498 5660
+265BF 8921 939D
+8FBE 547E 59B2 601B 6C93 8FD6 709F 7F8D 7557 7563
+7B2A 8359 5273 5312 7B54 8A5A 9039 9054 9618 977C
+9791 8598 9389 87FD 8E82 943D 97C3 9F96 9F98
+6253
+5927 6C4F 7714
+57AF 58B6 7629 71F5 7E68
+561A
+392B 6074 6DC2 60EA 68CF 951D 5FB3 5FB7 9340
+5730 7684 5F97 8126
+5446 5454 7343 61DB
+6B79 50A3 902E
+3432 4EE3 8F6A 20C3A 5788 5CB1 5E12 7519 7ED0 9A80
+5E26 5F85 6020 67CB 6B86 73B3 8D37 8FE8 5E2F 8ED1
+57ED 5E36 7D3F 888B 8EDA 3ED6 8CB8 8EE9 7447 5ED7
+4206 53C7 3BC2 7DFF 66C3 9D0F 6234 26102 825C 9EDB
+7C24 8E5B 703B 9734 9EF1 8976 9746
+9B98
+2E88 5200 5202 53E8 5FC9 6737 6C18 8220 91D6 9C7D
+9B5B
+636F
+5BFC 5C9B 5CF6 6363 7977 6417 7982 3800 5D8B 5D8C
+3A36 969D 5C0E 58D4 5DB9 64E3 8E48 96AF 79B1
+5230 5012 60BC 7118 76D7 76DC 83FF 9053 7A32 7B8C
+7FE2 7A3B 885C 5675 885F 6AA4 71FE 4326 7FFF 8EC7
+74D9 7E9B
+5C76 9666 6921 69DD
+543A 5517 515C 90FD 5160 8538 6A77 7BFC
+6296 9627 6793 67A1 551E 86AA 9661 9204
+6597 8C46 6D62 90D6 997E 9B25 68AA 6BED 8130 8373
+9017 9158 75D8 9597 7AA6 4B26 9B26 9916 65A3 2109D
+95D8 4546 7AC7 9B2A 9B2C 9B2D
+4E67 8254
+4E39 5989 5355 62C5 5358 7708 7803 803C 803D 449F
+8043 8EAD 90F8 55AE 5A85 6B9A 7605 5330 7BAA 9815
+510B 52EF 891D 9132 64D4 6BAB 7649 7514 7C1E 894C
+8078
+4F14 5210 628C 73AC 74ED 80C6 75B8 7D1E 8874 63B8
+8D55 4EB6 64A2 64A3 6FB8 9ED5 81BD 9EEE
+65E6 4F46 5E0E 6C8A 72DA 8BDE 67E6 758D 5556 5557
+5F39 60EE 6DE1 86CB 557F 5F3E 6C2E 8145 840F 89DB
+35D6 7A9E 50E4 8711 99BE 9AE7 563E 5649 5F48 619A
+8A95 61BA 66BA 6FB9 84DE 9D20 79AB 99F3 765A 56AA
+7E75 8D09 972E 994F 4A35
+6CF9
+6265 627D
+5F53 73F0 7B5C 88C6 7576 5679 6FA2 74AB 7C39 8261
+87F7 8960
+6321 515A 8C20 64CB 8B61 9EE8 6529 7059 6B13 8B9C
+6C39 51FC 5735 5B95 7800 57B1 6863 8361 5A78 6113
+83EA 5D63 74FD 903F 96FC 78AD 5105 6F52 778A 8DA4
+58CB 8569 6A94 7497 76EA 7911 7C1C 862F 95E3
+94DB 943A
+706F 767B 8C4B 5654 5B01 71C8 7492 7AF3 7C26 89B4
+8E6C
+6729 7B49 6225
+9093 51F3 58B1 5D9D 9127 96A5 77AA 78F4 956B 6AC8
+9419
+8260
+6C10 4EFE 4F4E 5943 5F7D 7F9D 889B 5824 8D86 9684
+6EF4 6A00 955D 78FE 9349 97AE
+72C4 5EF8 7C74 82D6 8FEA 5519 654C 6DA4 6891 7B1B
+837B 89CC 976E 99B0 9AE2 5600 5AE1 6ECC 7FDF 9814
+6575 850B 8510 4A00 5681 7BF4 4A24 8C74 8E62 9B04
+85E1 93D1 42AE 7CF4 89BF 9E10
+538E 5758 8BCB 5467 5E95 5F24 62B5 62DE 90B8 963A
+67E2 7274 830B 7825 57DE 638B 3B7D 83E7 89DD 8A46
+8EE7 805C 9AB6
+5754 5F1F 65F3 6755 7393 601F 4FE4 5E1D 57CA 5A23
+5059 5547 5572 688A 710D 73F6 7731 7B2C 8C1B 9012
+9013 91F1 5A82 68E3 6E27 7747 7976 7F14 83C2 50C0
+8163 8482 926A 5891 6455 78B2 7998 8743 905E 58AC
+6178 7DE0 8515 9070 5DB3 750B 8AE6 8E36 87AE
+9BF3
+55F2
+7239 8DCC 893A
+57A4 5CCC 604E 6315 6633 7ED6 80C5 82F5 8FED 74DE
+7723 621C 43F2 8C0D 558B 581E 60F5 63F2 7573 7D70
+800B 81F7 8A44 8D83 957B 53E0 6B9C 7243 7252 5D7D
+789F 8728 8253 8776 890B 22DA3 8ADC 8E40 9CBD 3B2A
+66E1 7589 9C08 758A 6C0E
+54CB 800A 7730
+5E49 7582
+5201 53FC 6C48 866D 51CB 595D 5F34 5F6B 86C1 7431
+8C82 7889 9CED 6BA6 7797 96D5 9B89 9CB7 9F26 9BDB
+9D70
+625A 5C4C
+5F14 4F04 540A 9493 7A8E 8A0B 8C03 6389 91E3 94DE
+94EB 7AE8 92B1 96FF 9B61 84E7 8ABF 7639 7AB5 92FD
+85CB 9443
+7C13
+4E1F 4E22 20C8D 94E5 92A9
+7538 6541 20DA7 6382 508E 53A7 5D6E 6EC7 69C7 69D9
+7628 98A0 8E4E 5DC5 985A 985B 766B 5DD3 5DD4 6527
+7672 9F7B
+5178 594C 70B9 5A70 7320 4344 655F 8DD5 7898 84A7
+8E2E 8547 9EDE 56B8
+7535 4F43 576B 5E97 963D 57AB 6242 73B7 94BF 5A5D
+60E6 6DC0 5960 7414 6BBF 8714 96FB 588A 58C2 6A42
+6A5D 6FB1 975B 24A71 765C 7C1F 9A54
+6923
+4E01 4EC3 53EE 5E04 738E 7594 76EF 9489 8035 8670
+914A 91D8 976A
+5975 9876 9802 3AC0 9F0E 5D7F 9F11 6FCE 85A1 9424
+8BA2 5FCA 9964 77F4 5B9A 8A02 98E3 5576 94E4 6917
+815A 7887 952D 78A0 874A 92CC 9320 78F8 9841
+8423 8062
+53BE 21C2A 5262 9607 7763 561F 918F 95CD
+6BD2 72EC 6D9C 8BFB 6E0E 691F 3C69 724D 728A 78A1
+88FB 8AAD 8773 7368 9316 51DF 5335 5B3B 7006 6ADD
+6BB0 7258 72A2 74C4 76BE 9A33 9EE9 8B80 8C44 8D15
+97E3 945F 9AD1 97C7 97E5 9EF7 8B9F
+7B03 5835 5E3E 8D4C 743D 7779 89A9 8CED 7BE4
+5992 675C 809A 828F 59AC 5EA6 79FA 8370 6E21 976F
+9540 29D5A 8799 6BAC 934D 7C35 8827 8839
+591A 591B 5484 54C6 7553 525F 5D1C 6387 6560 6BF2
+88F0 5689
+593A 94CE 526B 6553 655A 55A5 60B3 656A 75E5 922C
+596A 51D9 8E31 9BB5 9438
+6736 54DA 579B 579C 6305 6306 57F5 7F0D 692F 8D93
+8EB1 8EB2 7D9E 492A 619C 4EB8 937A 8EC3 56B2 5972
+5234 5241 9973 5C2E 67C1 67EE 70A8 964A 964F 6857
+5815 8235 60F0 8DE2 8DE5 8DFA 98FF 3EE7 58AE 58AF
+5D9E 9D7D
+6735 67A4
+5796 5806 5860 5D5F 75FD 78D3 9D2D 941C
+3A03 9827
+5BF9 961F 514A 514C 5151 5BFE 603C 794B 966E 968A
+7893 41CF 7D90 5C0D 619E 619D 6FE7 9566 61DF 3B23
+85B1 7029 8B48 8968 9413
+8011 5073 526C 5A8F 7AEF 890D 9374
+22B43 77ED
+6BB5 65AD 5845 7F0E 6934 7145 7456 8176 846E 78AB
+953B 7DDE 6BC8 7C16 935B 65B7 8E96 7C6A
+5428 60C7 6566 8733 58A9 58AA 64B4 7364 5678 6489
+6A54 729C 7905 453B 8E72 8E7E 9A50
+233B4 76F9 8DB8 8E89
+4F05 56E4 5E89 6C8C 7096 76FE 7818 949D 9007 987F
+920D 696F 9041 9813 6F61 906F 71C9 8E32
+78B7
+4E1C 51AC 549A 36B5 5CBD 6771 6638 6C21 82F3 5032
+9E2B 57EC 5A3B 5D20 5D2C 6DB7 7B17 5F9A 6C2D 83C4
+29093 8740 9D24 9F15 9BDF 9D87
+3A02 8463 58A5 7BBD 8ACC 5B1E 23FC5 856B 61C2
+52A8 51BB 4F97 578C 59DB 5CD2 606B 630F 680B 6D1E
+80E8 51CD 6219 80F4 8FF5 52D5 7850 68DF 6E69 7D67
+8156 50CD 99E7 9718
+9B97 9DAB
+FDD0-310A
+4ED6 5B83 5979 7260 7942 94CA 8DBF 584C 6EBB 6999
+891F 5683 95E7
+8E79
+5854 6E9A 5896 35F3 736D 9CCE 737A 9C28
+4EA3 62D3 631E 72E7 95FC 20D32 36E5 5D09 6DBE 3B7C
+6428 40BF 8DF6 69BB 6BFE 420B 905D 9062 3493 79A2
+8ABB 8E0F 64BB 6FBE 9314 6A7D 6FCC 8E4B 979C 9B99
+3FF9 95D2 97B3 56BA 8B76 95E5 2A601 8EA2
+4FA4 549C
+5FD1 5FD2 7279 8CA3 86AE 94FD 615D 92F1 87A3 87D8
+56FC 5B61 80CE
+51AD 53F0 65F2 576E 62AC 90B0 67B1 70B1 70B2 82D4
+83ED 8DC6 3B03 9C90 7B88 81FA 98B1 421A 99D8 5113
+9B90 5B2F 64E1 3E00 6AAF 85B9 7C49
+592A 5933 5FF2 6C70 6001 80BD 949B 6CF0 8226 48ED
+915E 9226 6E99 614B 71E4
+7C8F
+5932 5F22 6D9B 7EE6 638F 8A5C 5ACD 5E4D 6146 642F
+6ED4 7D5B 69C4 746B 97EC 98F8 4231 7E1A 7E27 6FE4
+8B1F 8F41 493E 97B1 97DC 9955
+530B 54B7 6D2E 8FEF 6843 9003 5555 68BC 6DD8 413B
+7EF9 9676 8404 7979 7DAF 872A 88EA 9780 9184 9789
+92FE 932D 99E3 6AAE 9940 9A0A 9F17
+8BA8 8A0E
+5957
+5077 5078 5A7E 5AAE 92C0 936E
+4EA0 5934 6295 9AB0 7DF0 982D
+59B5 94AD 7D0F 3A97 6568 98F3 9EC8 8623
+900F 7D89
+574D 3631 62A9 8D2A 6039 75D1 8211 8CAA 644A 6EE9
+762B 64F9 6524 7058 7671
+575B 212A8 6619 5013 8C08 5A52 60D4 90EF 8983 6983
+75F0 952C 8C2D 58B0 58B5 619B 6F6D 8AC7 9188 58C7
+66C7 71C2 931F 9924 6A80 78F9 9843 7F48 58DC 85EB
+8B5A 8C9A 91B0 8B60 7F4E
+5FD0 5766 43D9 94BD 8892 6BEF 83FC 47A1 926D 55FF
+61B3 61BB 9193 74AE 8962
+53F9 70AD 57EE 63A2 509D 6E60 50CB 5606 78B3 8215
+6B4E 8CE7
+6C64 5763 94F4 6E6F 5621 8025 528F 7FB0 876A 47B6
+4800 9557 859A 8E5A 93DC 940B 97BA 9F1E
+9967 5510 5802 508F 557A 3B7B 68E0 347D 5858 370D
+642A 6E8F 910C 69B6 6F1F 717B 746D 8185 84CE 969A
+6A18 2365F 78C4 799F 7CC3 819B 6A56 7BD6 7CD6 8797
+8E3C 7CDB 87B3 8D6F 91A3 9933 424E 9395 9939 95DB
+9944 28189 9DB6
+4F16 5E11 5018 5052 6DCC 50A5 8EBA 954B 93B2 513B
+6203 66ED 7223 77D8 9482
+70EB 6465 8D9F 71D9
+71A5 81AF 9F1F
+75BC 75CB 5E50 817E 8A8A 6F1B 6ED5 7E22 9086 99E6
+8B04 512F 85E4 9A30 7C50 9C27 7C58 9A63
+972F
+8645
+5254 68AF 3538 9511 8E22 64FF 9DC8 9DC9
+5397 82D0 7EE8 8351 504D 557C 5D39 60FF 63D0 7A0A
+7F07 7F64 9E48 55C1 7445 7D88 9046 78AE 5FB2 6F3D
+7DF9 876D 8906 92BB 9898 855B 8DA7 8E44 918D 8B15
+8E4F 9357 9CC0 9D3A 984C 9BB7 9D5C 9A20 9BF7 9D97
+9D99 79B5 9DE4
+4F53 632E 8EB0 9AB5 9BA7 8EC6 9AD4
+623B 239C2 8FCF 5243 6711 6D1F 501C 608C 6D95 6090
+60D5 63A6 9016 60D6 63E5 66FF 9037 6974 88FC 6B52
+6BA2 8905 9AF0 3B31 568F 8599 9B00 5694 74CB 7C4A
+8DAF 4D91
+5C49 5C5C 7B39 5D5C
+5E16 6017 8D34 8051 841C 8CBC
+94C1 86C8 50E3 9295 92E8 9D29 9421 9435 9A56
+546B 98FB 4D34 992E
+65EB 4F7B 5EA3 604C 6311 7967 3B38 804E
+8280 6761 5CA7 5CB9 8FE2 7952 689D 7B24 8414 47ED
+8D92 9F86 84DA 8729 6A24 84E8 92DA 9AEB 9CA6 9797
+93A5 9BC8 9F60 9C37
+5BA8 6640 6713 3E20 8101 7A95 8A82 4837 7AB1 65A2
+5B25
+773A 7C9C 7D69 899C 8DF3 7CF6
+87A9
+5929 5172 5A56 6DFB 915F 9754 42EC 3B32 9EC7 975D
+7530 5C47 6CBA 606C 754B 7551 76F7 80CB 7560 751B
+751C 6E49 83FE 4852 5861 586B 6437 923F 9617 7DC2
+78CC 7AB4 74B3 95D0 9DC6 9DCF
+5FDD 6B84 500E 35AD 553A 3649 60BF 6DDF 666A 7420
+8146 89CD 75F6 7753 8214 9902 89A5 8CDF 932A 9766
+9369
+3401 63AD 777C 821A
+78B5 9D2B
+5385 5E81 6C40 827C 542C 753A 8013 539B 70C3 686F
+70F4 7D8E 42FC 9793 8074 5EF0 807C 807D 5EF3
+9092 5EF7 4EAD 5EAD 505C 839B 5A77 5D49 6E1F 695F
+7B73 8476 8713 69B3 8064 874F 95AE 9706 8AEA 9F2E
+2123C 5722 753C 4FB9 5A17 633A 6D8F 6883 70F6 73FD
+8121 988B 8247 8A94 9832 2A2B6
+51F8 5B8A 79BF 79C3 6022 7A81 550B 6D8B 6378 5817
+6E65 75DC 8456 5D80 92F5 9D5A 9F35
+56F3 56FE 51C3 5CF9 5EA9 5F92 6087 6348 5C60 688C
+3ECC 837C 9014 63EC 3B78 7A0C 83DF 5715 5857 5D5E
+23225 760F 7B61 816F 922F 5716 5717 5EDC 6F73 84A4
+8DFF 9174 48DD 999F 934E 99FC 9D4C 9D9F 9DCB 9DF5
+571F 5721 5410 948D 91F7
+514E 5154 8FCC 580D 9D75
+6C62 6D82 83B5
+4E47 4EDB 8BAC 6258 6261 6C51 9966 6754 4F82 5483
+62D5 62D6 6CB0 6329 635D 8A17 6DB6 812B 8131 838C
+88A5 98E5 9B60 9A5D
+9A6E 4F57 5768 5CAE 6CB1 6CB2 72CF 9640 9641 8FF1
+7823 7824 9E35 7D3D 8889 5836 8DCE 9161 99B1 69D6
+78A2 4B7E 99C4 99DE 6A50 9B80 9D15 9F27 9A28 9F0D
+9A52 9F09
+5F75 59A5 5EB9 5AA0 692D 6955 5AF7 6A62 9D4E 9B0C
+9C16
+67DD 6BE4 553E 841A 8DC5 6BFB 7BA8 8600 7C5C
+9A7C 99DD
+63A8 84F7 85EC
+5F1A 4003 9893 5C35 96A4 9839 983A 983D 9B4B 7A68
+8E6A 8608 3FD7
+4FC0 50D3 817F 8E46 9ABD
+4FBB 5A27 9000 717A 86FB 8715 892A 99FE
+6E4D 732F 7153 474E 8C92 4D4E
+56E2 56E3 629F 5278 5718 6171 6476 6F19 69EB 7BFF
+6AB2 93C4 7CF0 9DD2 9DFB
+7583
+5F56 6E6A 8916
+541E 5451 6D92 554D 671C 711E 564B 66BE 3B3F 9ED7
+5C6F 5749 5FF3 9968 829A 8C58 8C5A 8ED8 98E9 9C80
+9B68 3A54 9715 81C0 81CB
+6C3D 757D
+65FD
+56F2 70B5 75CC 901A 55F5 84EA
+4EDD 540C 4F5F 5F64 5CC2 5E9D 54C3 5CDD 72EA 664D
+6850 6D75 70D4 783C 833C 8692 772E 79F1 94DC 7AE5
+7CA1 26A34 7B69 8A77 8D68 916E 9256 50EE 52ED 9275
+9285 9907 9C96 6F7C 735E 66C8 6723 6A66 6C03 71D1
+729D 81A7 3F3F 77B3 9BA6 2648D 4D00
+7EDF 6345 3A8C 6876 7B52 7D71 7D82 6A0B
+6078 75DB 8855 615F 6185
+FDD0-310B
+55EF
+62CF 62FF 6310 55F1 954E 93BF
+4E78 54EA 96EB
+59A0 7EB3 90A3 80AD 94A0 5A1C 7D0D 8872 637A 7B1D
+25E49 88A6 8C7D 8EDC 8C80 9209 9779 84B3 24E3B 9B76
+422B
+7592 8BB7 6290 7732 8A25
+5436 5450 5462
+8149 718B 6468 5B7B
+4E43 5976 6C16 827F 7593 59B3 5EFC 5037 8FFA 91E2
+5B2D
+5948 67F0 800F 8010 217AB 6E3F 8418 9F10 879A 8926
+933C
+5A1E 9981 812E 8147 9912 9BBE 9BD8
+5167 5185 343B 6C1D 9317
+5B6C
+5476 6013 6320 5CF1 7847 94D9 7331 86F2 8A49 7899
+6493 5DA9 61B9 87EF 5912 8B4A 9403 5DCE
+57B4 607C 60A9 8111 5318 5816 60F1 5AD0 7459 8166
+78AF 4700 7376 737F
+95F9 5A65 6DD6 9599 9B27 81D1
+8133
+7FBA
+5542
+69C8 8028 7373 6ABD 9392 941E 8B73
+56E1
+7537 678F 67AC 4FBD 5357 67DF 5A1A 7558 96BE 83AE
+5583 6694 6960 8AF5 96E3 27574
+8D67 63C7 6E73 8169 8433 4212 877B 6201
+266DA 5A7B 3B2E
+9056
+6041 5AE9 5AF0
+56D4
+4E6A 56A2 8B68 56CA 8830 9B1E 9995 6B1C 9962
+64C3 66E9 652E 7062
+513E 9F49
+80FD
+20E4C 28D99
+59AE
+5C3C 576D 37BE 6029 6CE5 7C7E 502A 5C54 79DC 94CC
+57FF 5A57 6DE3 730A 86AD 4626 90F3 68FF 249A4 46CF
+8DDC 815D 8063 873A 89EC 8C8E 8F17 9713 9CB5 9BD3
+9BE2 9E91 9F6F 81E1
+4F31 4F60 62B3 62DF 72D4 67C5 82E8 65CE 6672 5B74
+922E 999C 5117 511E 64EC 96AC 6AB7 85BF 807B
+5C70 6C3C 4F32 23CB7 6635 80D2 8FE1 7724 9006 533F
+5804 60C4 6135 6EBA 7768 817B 5ADF 66B1 8ABD 4065
+7E0C 81A9 5B3A 2A65B
+88AE
+634F 63D1
+82F6
+5E07 26612 573C 67BF 6D85 75C6 8042 81EC 9667 556E
+60D7 55A6 655C 6E7C 83CD 9689 55EB 5D72 8E02 565B
+6470 69F7 8E17 954A 954D 5DAD 7BDE 81F2 931C 989E
+8E51 5699 8076 93B3 95D1 5B7C 3738 5B7D 6AF1 7C4B
+56C1 8616 9F67 23033 7CF1 8825 9448 7CF5 56D3 8B98
+8EA1 9477 9873 9480 4BC0
+5DD5
+9E1F 8311 3B64 8885 9CE5 5ACB 88CA 6A22 8526 5B1D
+892D 5B32 3735
+5C3F 8132
+599E
+2EA7 725B 6C7C
+5FF8 626D 72C3 7EBD 7084 94AE 7D10 83A5 9215 9775
+8842 42F4
+725C
+62C8 852B
+5E74 79CA 79E5 9C87 9B8E 9CB6 9ECF 9BF0
+6D8A 637B 6DF0 713E 8DC8 8F87 8F97 649A 64B5 78BE
+8F26 7C10 8E4D 6506 8E68 8E8E
+5344 5EFF 5FF5 59E9 5538 57DD 824C 9F30
+54D6 9D47
+56DC 60A8 42FB
+62F0
+810C
+5B22 5B43
+917F 91B8 91C0
+5A18
+5B81 549B 62E7 72DE 67E0 82E7 804D 5BCD 5BD5 752F
+5BD7 5BDC 5BE7 511C 51DD 5680 5B23 64F0 7370 6AB8
+85B4 8079 27B48 944F 9B21 9E0B
+6A63 77C3
+4F5E 4FAB 6CDE 6FD8
+6F9D
+5974 5B65 9A7D 7B2F 99D1
+4F2E 52AA 5F29 782E 80EC
+6012 5089 6419
+90CD 632A 689B 50A9 513A
+6A60
+8BFA 558F 611E 2272A 63BF 6426 903D 9518 643B 6992
+7A2C 7CD1 8AFE 8E43 61E6 61E7 7CE5 7A64 7CEF
+597B
+6E1C 3B09 6696 7156 7157 992A
+9EC1
+519C 4FAC 54DD 6D53 8113 79FE 8FB2 5102 8FB3 5665
+6FC3 6A82 71F6 81BF 857D 79AF 7A60 895B 91B2 6B01
+7E77
+5F04 630A 7651 9F48
+5973 9495 7C79 91F9
+6C91 6067 6712 8844 46BC
+759F 8650 7878 7627
+FDD0-310C
+5783 62C9 67C6 7FCB 83C8 641A 908B
+65EF 524C 782C 63E6 78D6
+5587 85DE
+814A 63E7 694B 760C 8721 874B 8FA2 8FA3 8772 81C8
+650B 7209 81D8 9B0E 74CE 9574 9BFB 881F 945E
+5566 6E82 97A1 56B9
+56D6
+808B
+4EC2 3539 4E50 53FB 5FC7 6250 6C3B 961E 738F 827B
+6CD0 7AFB 7833 697D 97F7 6A02 7C15 39A1 9CD3 9C33
+4E86 9979 990E
+6765 4F86 4FEB 5008 5D03 5F95 6D9E 5A61 5D0D 5EB2
+5FA0 68BE 6DF6 730D 83B1 90F2 68F6 741C 7B59 840A
+9028 94FC 7B82 42F1 28090 9338 9A0B 9BE0 9D86 9EB3
+553B 8D49 7750 775E 8D56 8CDA 6FD1 8CF4 983C 9842
+21096 765E 9D63 7028 702C 7C41 6AF4 3E0A 85FE 7669
+7C5F 8970
+52D2
+96F7 5AD8 7F27 757E 8502 64C2 3D62 6A91 7E32 790C
+956D 6AD1 74C3 7FB8 7927 7E8D 7F4D 881D 9433 8632
+8F60 513D 58E8 9458 9741 6B19 8646 7E9D 9F3A
+53BD 8012 8BD4 5792 7D6B 8142 50AB 8A84 6A0F 78CA
+78E5 854C 5121 4242 857E 58D8 3D7D 7657 6AD0 85DF
+7928 7045 8B84 863D 9478 9E13
+6CEA 6D21 7C7B 6D99 6DDA 7D2F 28024 9179 9287 981B
+982A 9311 48AE 6502 98A3 985E 426A 7E87 8631 79B7
+5841 561E 9C69
+635E 6488
+52B3 52B4 7262 7A82 54F0 5520 5D02 6D76 52DE 75E8
+94F9 50D7 562E 37A0 5D97 61A5 24A42 7646 78F1 7C29
+87E7 91AA 9412 985F 9ADD
+8002 8001 4F6C 54BE 59E5 6045 72EB 6833 8356 94D1
+41ED 92A0 6F66 6A51 8F51
+6D9D 70D9 8022 916A 5AEA 61A6 6F87 8EBC 6A6F 802E
+8EC2
+73EF 7853 266E8 7CA9 86EF 6725 9BB1
+779C
+5245 5A04 507B 5A41 6E87 50C2 697C 848C 5ED4 617A
+6F0A 6A13 71A1 8027 851E 877C 9071 802C 825B 87BB
+8B31 8EC1 9AC5 97BB 9ACF
+5D5D 6402 587F 5D81 645F 7BD3 750A 7C0D
+3537 964B 5C5A 6F0F 7618 9542 763A 763B 93E4
+55BD 560D
+5170 5C9A 62E6 680F 5A6A 60CF 5D50 9611 847B 84DD
+8C30 53B1 6F9C 5116 6593 7BEE 8934 61E2 71E3 71F7
+9567 95CC 74BC 85CD 8955 8B4B 2814F 5E71 6514 703E
+7C43 7E7F 8964 6595 6B04 7046 862D 7937 7C63 8974
+56D2 7061 8B95 8E9D 6B17 9484 97CA
+89C8 6D68 36E6 63FD 7F06 6984 6F24 7F71 9182 58C8
+61D2 89A7 3A5C 64E5 5B3E 61F6 5B44 89BD 432B 5B4F
+652C 7060 56D5 6B16 9872 7E9C
+70C2 6EE5 71D7 5682 6FEB 7201 721B 74D3 7224 946D
+7CF7
+7226 897D
+5577
+52C6 90CE 6B34 72FC 90DE 9606 658F 6879 3C62 7405
+5ACF 5ECA 7860 7A02 9512 6994 746F 7B64 8246 84C8
+870B 8EB4 8782 92C3 93AF 99FA
+6717 6716 70FA 365F 5871 6A03 84E2 8A8F 3BBE 6724
+57CC 5D00 6D6A 3AF0 83A8 20E98 8497 95AC
+5525 90D2
+3604
+5D1A 5844 68F1 695E 7890 7A1C 8F18 4244 8590
+51B7
+5030 580E 6123 7756 8E1C
+5215 675D 5398 5253 9A8A 60A1 68A8 68A9 68B8 7281
+740D 79BB 7C9A 8372 55B1 68C3 3D1D 7282 83DE 9E42
+527A 6F13 3E48 775D 7B63 7F21 8243 870A 20ED7 20F1D
+5AE0 5B77 76E0 8C8D 3992 6A06 7483 7CCE 84E0 92EB
+9CA1 9ECE 7F79 853E 26E99 9305 7BF1 7E2D 4527 87CD
+8935 569F 8B27 91A8 91D0 96E2 6584 3C00 74C8 85DC
+908C 93EB 9BEC 9D79 9EE7 56C4 8821 9A39 5B4B 5EF2
+6521 7055 5299 863A 9457 7A72 7C6C 7E9A 9A6A 9C7A
+9E1D
+793C 91CC 4FDA 5CDB 5CE2 5A0C 5CF2 6D6C 7406 9026
+9502 7CB4 88CF 8C4A 92F0 9CA4 5163 6FA7 79AE 9BC9
+87F8 91B4 9CE2 9090 9C67 6B1A
+529B 5386 5389 5C74 7ACB 540F 6738 4E3D 5229 52B1
+5456 575C 6CA5 4F8B 3578 5CA6 623E 67A5 6CB4 75A0
+82C8 96B6 4FD0 4FEA 3926 680E 75AC 7805 82D9 8D72
+8F79 3466 550E 60A7 6817 681B 6D96 7301 73D5 783A
+783E 79DD 8318 8354 90E6 5533 5A6F 7B20 7C92 7C9D
+8137 8385 8389 86B8 86CE 5088 51D3 53A4 68D9 75E2
+86E0 8A48 8DDE 96F3 53AF 585B 6144 642E 6EA7 925D
+9CE8 3B0F 66A6 6B74 746E 7D9F 849A 849E 8727 53B2
+8777 66C6 6B77 7BE5 4509 96B7 29D98 9D17 52F5 3EFA
+78FF 96B8 9B01 512E 5DC1 6FFF 7658 9398 56A6 58E2
+650A 66DE 6AD4 6ADF 701D 7204 72A1 74C5 8807 9E97
+6AEA 720F 74D1 76AA 76ED 77CB 792A 792B 79B2 85F6
+34A7 5137 7667 7930 7CF2 8823 882B 9DC5 9E9C 56C7
+6526 2789D 89FB 8E92 8F62 9148 6B10 8B88 2829B 8F63
+652D 74E5 9742 299C3 9C71 9C73 974B
+674E 6803 54E9 5A33 72F8 88E1 6AAA 9BCF
+4FE9 5006
+5217 52A3 51BD 52BD 39DC 59F4 6312 6D0C 54F7 57D2
+57D3 3920 3B5E 6835 6D56 70C8 8322 8FFE 6369 3B69
+730E 811F 86DA 88C2 716D 7759 8057 8D94 5DE4 98B2
+5120 9BA4 9D37 64F8 7375 72A3 8E90 9B1B 3B2F 9B23
+9C72
+6BDF 54A7 6318 70EE 731F
+64A9 8E7D
+8FBD 7597 804A 50DA 5BE5 5D7A 6180 6F3B 818B 5639
+5AFD 5BEE 5D9A 5D9B 6579 7360 7F2D 66B8 71CE 7499
+81AB 907C 3D73 7642 9E69 5C6A 5EEB 7C1D 7E5A 87DF
+8C42 8CFF 8E58 9410 85D4 98C9 9ACE 9DEF
+53FE 4126 948C 91D5 911D 61AD 84FC 77AD 66E2 957D
+7212
+5C25 5C26 7093 6599 5C1E 5ED6 6482 7AB7 9563
+720E
+6E9C 7198 8E53
+5218 6CA0 7544 6D41 6D4F 7409 7559 65C8 7571 786B
+88D7 28EE7 5AB9 5D67 65D2 84C5 998F 9A9D 69B4 7460
+84A5 905B 98D7 5289 746C 7624 78C2 954F 99E0 9E60
+6A4A 74A2 7581 9560 7645 87C9 295E9 99F5 56A0 61F0
+700F 938F 93A6 9E8D 85F0 93D0 98C0 9A2E 98C5 9C21
+9DB9 9A51
+39D5 67F3 6801 73CB 687A 7EFA 950D 925A 98F9 7DB9
+71AE 7F76 92F6 6A6E 5B3C 7F80
+516D 7542 7FCF 586F 5EC7 6F91 78DF 9E68 9724 993E
+96E1 9402 98C2 9B38 9DDA
+685E
+5941 5E18 601C 8FDE 6D9F 68BF 83B2 467A 9023 8054
+4EB7 5EC9 6E93 5332 55F9 5969 6169 6F23 7191 88E2
+899D 5286 5333 5652 5AFE 6190 69E4 78CF 806B 84EE
+9CA2 6FC2 6FD3 806E 878A 71EB 7E3A 7FF4 806F 81C1
+8595 8933 8B30 8E65 938C 9570 6AE3 7C3E 880A 9B11
+4965 942E 9C31 7C62 7C68
+655B 740F 8138 88E3 6459 7489 8539 5B1A 6582 3BEC
+81C9 913B 7FB7 895D 861E
+7EC3 70BC 604B 6D70 6B93 581C 3703 5AA1 3C68 6E45
+94FE 50C6 695D 7149 7453 8430 6F4B 7DF4 6FB0 932C
+6BAE 934A 93C8 3D91 7032 9C0A 861D 6200 373B 7E9E
+8068
+62CE
+53B8 6797 90BB 4E34 51A7 77DD 5549 5D0A 6DCB 667D
+7433 7CA6 75F3 7884 7B96 7CBC 5D99 6F7E 735C 9130
+96A3 65B4 66BD 71D0 7498 8F9A 9074 9716 77B5 78F7
+81E8 7E57 7FF7 9E90 8F54 58E3 7036 93FB 9CDE 9A4E
+9C57 9E9F
+342D 3A06 83FB 4E83 51DB 51DC 649B 5EE9 5EEA 61CD
+61D4 6F9F 6A81 6AA9 765B 765D
+541D 6061 608B 8D41 711B 8CC3 50EF 853A 6A49 81A6
+95B5 7510 7584 8E78 85FA 8E8F 8E99 8EAA 8F65
+826F 4FCD 51C9 6881 6DBC 690B 8F8C 7CAE 7CB1 589A
+7DA1 8E09 6A11 8F2C 7CE7
+4E21 4E24 34B3 5169 5521 5562 639A 813C 7DC9 873D
+88F2 9B49 9B4E
+4EAE 54F4 60A2 8C05 8F86 55A8 667E 6E78 91CF 8F0C
+8AD2 8F1B 9344
+7177 7C17
+3007 5222 7075 56F9 577D 590C 59C8 5CBA 5F7E 6CE0
+72D1 6624 670E 67C3 73B2 82D3 51CC 74F4 768A 7831
+79E2 7ADB 94C3 9E30 5A48 6395 68C2 6DE9 740C 7B2D
+7D37 7EEB 4345 7F9A 7FCE 8046 8232 86C9 8851 9675
+83F1 8A45 8DC9 8EE8 797E 9234 959D 96F6 9F84 420A
+7DBE 88EC 8506 970A 99D6 6FAA 9302 9B7F 9CAE 9D12
+9E77 3B21 71EF 4241 4516 8576 971B 971D 9F62 9BEA
+5B41 9143 9F61 6AFA 8626 91BD 9748 2331F 6B1E 7227
+24AE9 9EA2 4585 9F97
+5CAD 963E 888A 9886 9818 5DBA
+4EE4 53E6 5464 70A9
+4F36 84E4 9717 702E
+565C 64B8
+5362 5E90 5786 6CF8 7089 82A6 3B54 680C 80EA 8F73
+9E2C 7388 823B 9885 9C88 9B72 76E7 56A7 58DA 3820
+5EEC 650E 6ADA 7018 7379 74B7 66E5 6AE8 7210 74D0
+81DA 8606 77D1 7C5A 7E91 7F4F 826B 8826 8F64 946A
+9871 9AD7 9C78 9E15 9EF8
+5364 864F 63B3 9E75 7875 9C81 865C 5877 6EF7 6A10
+84FE 9B6F 64C4 6A79 78E0 9565 5695 64FC 7002 6AD3
+6C0C 8263 93C0 826A 942A 9465
+5725 752A 4F93 5774 5F54 5F55 9646 5CCD 52CE 8D42
+8F82 5A3D 6DD5 6DE5 6E0C 7849 9678 9E7F 3A90 6902
+742D 7984 4402 83C9 902F 50C7 5279 52E0 76DD 7769
+788C 797F 7A11 8CC2 8DEF 5876 5ED8 645D 6F09 7B93
+7CB6 21014 622E 6A1A 719D 8194 850D 89EE 8DA2 8E1B
+8F98 9181 3BDD 6F5E 7A4B 9304 9332 9334 7490 7C0F
+8557 87B0 8E57 8F46 9A04 298F1 9E6D 7C2C 7C36 93D5
+9BE5 9D66 9D71 9E93 93F4 9732 9A3C 7C59 9DFA 8642
+67A6 822E 9229 6F9B 6C07
+7F57 5570 9831 56C9
+7F56 7321 8136 6924 841D 8999 903B 8161 9523 7BA9
+9AA1 9559 87BA 7F85 89B6 93CD 5138 89BC 9A3E 21922
+651E 7380 6B0F 268C7 863F 908F 9A58 9E01 7C6E 947C
+9960
+5246 502E 84CF 88F8 8EB6 7630 3A61 3C01 8803 81DD
+66EA 7673
+6CFA 5CC8 6D1B 7EDC 9A86 6D1C 73DE 8366 7866 7B3F
+7D61 55E0 843D 645E 6F2F 7296 927B 96D2 99F1 9BA5
+9D3C 9D45 6FFC 277CC 7E99
+5A08 5B6A 5CE6 631B 683E 9E3E 8114 6EE6 92AE 9D49
+571D 5971 5B4C 5B7F 5DD2 6523 66EB 6B12 7053 7F89
+81E0 571E 7064 864A 947E 7674 7675 9E1E
+5375
+4E71 91E0 4E82
+62A1 6384
+4ED1 4F26 56F5 6CA6 7EB6 4F96 8F6E 502B 5707 5A68
+5D18 5D19 60C0 6DEA 966F 68C6 3DCD 8140 83D5 4201
+7DB8 8726 8E1A 8F2A 9300 9BE9
+57E8 7896 7A10 8023
+8BBA 6EA3 8AD6
+78EE
+9F99 5C78 5499 6CF7 663D 680A 73D1 80E7 830F 772C
+783B 7ADC 7B3C 804B 6E70 9686 6EDD 20F90 5D90 6F0B
+3863 7BED 856F 9F8D 7643 56A8 5DC3 5DC4 7027 7C3C
+93E7 66E8 6727 3C0D 6AF3 7216 74CF 8622 9733 77D3
+7931 7932 9F92 7C60 807E 882A 882C 8971 8C45 8E98
+9468 9747 4BBE 9A61 9E17
+5784 5785 62E2 9647 3D33 7BE2 5131 58DF 58E0 650F
+96B4 7AC9 9F93
+54E2 6335 6887 5FBF 8D1A
+69DE 7ABF
+9A74 95FE 90D8 6988 99BF 6C00 81A2 95AD 85D8 9DDC
+9A62
+5415 5442 4FA3 4FB6 6314 36CE 634B 635B 65C5 3B5A
+68A0 7963 7A06 94DD 5C61 7F15 7D7D 5C62 8182 5C65
+891B 92C1 8190 5122 7A5E 7E37 8938 7A6D
+5BFD 578F 5F8B 8651 7387 7EFF 20DC8 5D42 6C2F 6EE4
+844E 7DA0 7DD1 616E 7BBB 819F 52F4 7E42 6FFE 6AD6
+7208 9462
+7112
+7567 950A 7A24 3500 5719 3A3C 92DD 92E2 64FD
+FDD0-310D
+65EE 5477 560E 5620
+9486 5C1C 5676 9337
+5C15 738D
+5C2C 9B40
+6208 4EE1 572A 72B5 7EA5 20BEB 6213 8090 726B 7599
+54AF 7271 54E5 80F3 9E3D 5272 6401 88BC 20E9D 6ED2
+6228 6B4C 29FB7 9D10 9D1A 64F1 8B0C 9D3F 93B6
+5444 3837 4F6E 530C 630C 9601 9769 654B 3B58 683C
+8316 9B32 6105 81F5 86D2 55DD 5865 6EC6 845B 88D3
+89E1 9694 643F 69C5 8188 95A3 95A4 4213 9549 9788
+97D0 7366 8AFD 8F35 9ABC 9BAF 97DA 97B7 9A14 4601
+8F55
+54FF 8238
+4E2A 5404 867C 500B 784C 94EC 55F0 7B87
+5F41 6ACA
+4F85 8BE5 5793 59DF 5CD0 90C2 9654 6650 8344 8D45
+7561 7974 7D6F 8A72 8C65 8CC5
+5FCB 6539 7D60
+4E10 4E62 5303 5304 9623 675A 9499 76D6 6461 6E89
+9223 6224 6982 8462 8CCC 9691 6F11 84CB 3562 69E9
+69EA 74C2
+7ED9 7D66
+768B 7F94 7F99 9AD8 7690 2690E 9AD9 81EF 6EDC 69D4
+777E 818F 69F9 6A70 7BD9 7CD5 993B 6ADC 9DCE 9F1B
+9DF1
+5930 6772 83D2 641E 7F1F 66A0 69C0 69C1 3D46 7A3E
+7A3F 9550 7E1E 6ABA 85C1 85F3
+543F 544A 52C2 53DD 8BF0 90DC 796E 7970 9506 7170
+7B76 8AA5 799E 92EF
+97DF
+52FE 4F5D 6C9F 94A9 88A7 7F11 920E 6E9D 9264 7DF1
+7BDD 8920 97B2 97DD
+5CA3 72D7 82B6 67B8 73BD 8007 82DF 7B31 8008 8009
+86BC 8C7F
+5778 6784 8BDF 8D2D 57A2 59E4 5193 8329 591F 5920
+8A3D 5ABE 5F40 6406 8A6C 96CA 69CB 7179 89CF 9058
+6480 89AF 8CFC
+7518 5FD3 653C 6746 3DA5 7395 809D 8289 8FC0 5769
+6CD4 77F8 4E79 67D1 7AFF 82F7 75B3 9150 4E7E 7C93
+4E81 51F2 5C32 5C34 7B78 6F27 9CF1 5C36 5C37 9B50
+4EE0 625E 76AF 79C6 8866 8D76 687F 7B34 6562 7A08
+611F 8D95 6F89 64C0 6A44 7C33 9C14 9CE1 9C64
+5E72 65F0 6C75 76F0 7EC0 501D 51CE 6DE6 7D3A 8A4C
+5E79 9AAD 69A6 6A8A 8D11 8D63 8D1B 7068
+6839 8DDF
+54CF
+826E
+4E98 4E99 831B 63EF
+5188 7F53 51AE 521A 6760 7EB2 809B 5CA1 3B4E 7268
+7598 77FC 7F38 94A2 525B 7F61 5808 6386 91ED 68E1
+7285 583D 7DB1 7F41 92FC 93A0
+5C97 3F58 5D17 6E2F
+7135 7B7B 69D3 6205 6206
+522F 5E9A 754A 6D6D 3E74 8015 6404 713F 7D5A 83EE
+8D53 9E52 7DEA 7E06 7FAE 8CE1 7FB9 9D8A
+54FD 57C2 5CFA 632D 7EE0 803F 90E0 231B3 6897 8384
+3F98 7D86 4304 9CA0 9ABE 9BC1
+66F4 5829 6685 4C4D 4C6D
+63B6 6929
+4F30 5471 59D1 5B64 6CBD 6CD2 67E7 82FD 8F71 5502
+7F5B 9E2A 7B1F 86C4 83F0 89DA 8EF1 8EF2 8F9C 9164
+9232 7B8D 7B9B 5AF4 6A6D 443B 9B95 9D23
+9DBB
+5903 53E4 6262 6C69 8BC2 8C37 80A1 726F 2EE3 5503
+4026 7F5F 7F96 94B4 9AA8 5552 6DC8 8135 86CA 86CC
+8A41 9E44 5C33 6132 6BC2 9237 9989 9F13 9F14 560F
+6996 69BE 76B7 84C7 7A40 9E58 7CD3 7E0E 6FF2 76BC
+81CC 85A3 8F42 7014 76EC 77BD 9936 4D9C 8831
+56FA 6545 51C5 987E 580C 5D13 5D2E 688F 727F 68DD
+96C7 75FC 797B 7A12 9522 50F1 932E 9CB4 9BDD 9867
+5495 5CE0 9027 50A6 83C7 7BD0
+74DC 522E 80CD 681D 20D6F 9E39 8052 44B7 6B44 7171
+8D8F 5280 7DFA 92BD 98B3 8E3B 9D30 9A27
+53E7 518E 5250 526E 5BE1 4211
+5366 576C 8BD6 6302 5569 639B 7F63 7D53 7F6B 8A7F
+8902
+98AA
+5459 54BC 57DA 5D1E 90ED 581D 921B 9505 5613 588E
+7611 8748 5F49 35FB 6FC4 87C8 934B 5F4D
+56EF 56F6 56FB 56FD 5700 570B 5E3C 8158 5E57 6156
+6F0D 805D 8195 852E 8662 9998 27C12 4190
+679C 60C8 6DC9 7313 9983 6901 83D3 7CBF 7DB6 873E
+88F9 69E8 8F20 9301 991C 9439
+8FC7 904E
+556F
+4E56 63B4 6451
+62D0 67B4 67FA 27285 7B89
+592C 53CF 602A 39D4 6060
+5F52 572D 59AB 9F9F 89C4 7688 90BD 95FA 5E30 73EA
+80FF 8325 4E80 7845 4145 7A90 898F 5080 5AAF 691D
+88BF 5EC6 90CC 5AE2 646B 7470 95A8 9C91 5B00 69FB
+69FC 749D 81AD 879D 9F9C 9BAD 5DC2 6B78 9B36 74CC
+9A29 9B39 6AF7
+5B84 6C3F 6739 8F68 5E8B 4F79 5326 8BE1 20C53 579D
+59FD 6051 6531 7678 8ECC 9652 5EAA 9B3C 532D 796A
+6677 6E40 436F 86EB 3533 89E4 8A6D 53AC 3A33 4925
+87E1 77A1 7C0B
+6530 523D 523F 660B 7094 67DC 8D35 3A88 6842 6867
+7324 7B40 8CB4 8DEA 5331 84D5 528A 528C 5DA1 648C
+69F6 4210 4434 6A9C 77B6 7C02 6AC3 7650 79AC 8958
+9CDC 97BC 9C56 9C65
+6922
+5173 89C2 5B98 51A0 898C 500C 20D28 68FA 7AA4 8484
+95A2 761D 764F 89B3 95D7 9CCF 95DC 9C25 9C5E 89C0
+839E 9986 742F 75EF 7B66 7BA1 8F28 8218 9327 9928
+9CE4
+6BCC 4E31 8D2F 6CF4 60BA 60EF 63BC 6DAB 8CAB 60B9
+3D26 3BA1 797C 6163 645C 6F45 6A0C 9066 76E5 7F46
+465B 96DA 93C6 704C 721F 74D8 9E73 77D4 7936 7F50
+9475 9C79 9E1B
+4E28 200CC 886E 60C3 7EF2 889E 88AC 8F8A 6EDA 6EFE
+7DC4 84D8 78D9 8509 8F25 9CA7 25566 9B8C 9BC0
+68CD 7754 3665 7774 74AD 8B34
+5149 706E 4F8A 7097 709B 54A3 5799 59EF 6D38 6844
+70E1 80F1 832A 8F04 50D9 92A7 9EC6 299C9
+5E7F 5E83 72B7 5EE3 81E9 7377 2A1F5
+4FC7 73D6 901B 81E6 6497 29448
+709A 6B1F
+5DE5 5F13 516C 53B7 529F 653B 675B 4F9B 739C 7CFC
+80B1 5BAB 5BAE 606D 8EAC 9F9A 5311 5868 5E4A 6129
+89E5 7195 8EB3 78BD 9AF8 4CCD 89F5 9F8F 9F94
+5EFE 5DE9 6C5E 62F1 39EC 62F2 3B5F 6831 73D9 3F26
+8F01 92DB 978F 4C4B
+5171 8D21 7FBE 551D 8CA2 83BB 3536
+86A3 6150
+FDD0-310E
+5494 5496 5580 8849 64D6
+5361 4F67 80E9 9272
+57B0 88C3
+533C 3E2F 22208 67EF 7241 73C2 79D1 80E2 82DB 8F72
+75B4 7822 8DB7 68F5 8EFB 988F 55D1 6415 7290 7A1E
+7AA0 842A 9233 69BC 4426 9897 6A16 778C 78D5 4300
+874C 9312 8596 9198 9846 9AC1 791A
+58F3 63E2 6BBC 7FD7
+53EF 5777 37B9 5CA2 3ABC 70A3 6E07 5D51 6564 6E34
+5DB1 790D
+514B 523B 524B 52C0 52CA 5BA2 606A 20CED 5A14 5C05
+8BFE 20DB2 5801 6C2A 9A92 7F02 6119 6E98 951E 78A6
+7DD9 8250 8AB2 790A 9A0D 2A0ED
+5D59
+5F00 5952 63E9 950E 958B 4924 9426
+51EF 5240 57B2 607A 95FF 94E0 51F1 5274 6168 584F
+5D66 6137 6977 8488 8F06 5605 669F 9534 4057 9347
+93A7 95D3 98BD
+5FFE 708C 708F 6B2C 70D7 52D3 6112 613E 938E
+5C3B 9ADB
+4E02 6537 8003 62F7 6D18 6832 70E4 7A01 9C93 71FA
+94D0 7292 92AC 9760 9BB3 9BCC
+62A0 26B05 82A4 770D 527E 5F44 6473 7798 4071
+53E3 24618 52B6
+53E9 6263 6542 51A6 5BBC 5BC7 3C2F 91E6 7A9B 7B58
+6EF1 7789 8532 853B 7C06 9DC7
+520A 681E 52D8 9F9B 582A 5D41 6221 9F95
+519A 574E 4F83 780D 5058 57F3 60C2 83B0 6B3F 586A
+6B41 69DB 8F21 6ABB 9851 7AF7 8F57
+770B 884E 5D01 5888 78E1 77B0 95DE 77D9
+808E 80AF 80BB 57A6 6073 5543 8C64 9F88 58BE 9339
+61C7 9F66
+63AF 88C9 8903
+5FFC 95F6 780A 7C87 5EB7 21413 5ADD 5D7B 6177 6F2E
+69FA 7A45 41B2 7CE0 8EBF 93EE 9C47
+625B 6443
+4849
+4EA2 4F09 531F 56E5 6297 72BA 909F 7095 94AA 9227
+958C
+52A5 542D 5751 5994 962C 6333 7841 727C 785C 94FF
+787B 647C 8A99 92B5 40D8 935E 93D7
+625D 5233 77FB 67AF 80D0 90C0 54ED 684D 5800 5D2B
+35C4 5710 8DCD 7A9F 9AB7 26846 9BAC
+72DC 82E6
+3838 5E93 4FC8 7ED4 5EAB 79D9 8DB6 7105 55BE 7D5D
+88B4 88E4 7614 9177 5EE4 8932 56B3
+5938 59F1 8A87
+4F89 54B5 57AE 9299
+3404 630E 80EF 8DE8 9ABB
+823F
+6269 62E1 62EC 6304 6870 7B48 86DE 9614 843F 8440
+5ED3 9822 9AFA 6FF6 95CA 979F 61D6 64F4 9729 97B9
+9B20
+97D5
+39DF 84AF 64D3
+5DDC 51F7 5757 5FEB 4FA9 54D9 72EF 90D0 810D 584A
+3C6E 7B77 9C99 5108 58A4 5672 5EE5 736A 9136 81BE
+65DD 7CE9 9C60
+5726
+4E8F 5232 5CBF 609D 76D4 7AA5 8067 7ABA 8667 95DA
+985D 5DCB 862C
+594E 6646 9804 9997 55B9 63C6 45AF 9035 9108 9A99
+6223 668C 694F 6951 8475 9697 777D 9B41 8770 4906
+982F 367A 9368 9377 6AC6 85C8 9A24 5914 8637 8641
+5DD9 2A1B4 72AA 8EA8
+7143 8DEC 980D 8E5E
+5C2F 532E 6B33 559F 6126 6E83 8143 9988 5ABF 6127
+8489 7786 5633 5B07 6192 6F70 7BD1 8069 4646 6A3B
+806D 8562 8B09 7C23 8075 993D 7C44 9400 994B 944E
+4C0E
+5BBD 5BDB 5BEC 81D7 9ACB 9AD6
+6B35 6B3E 6B40 7ABE 4540
+7ABD 9467
+5764 6606 5803 5A6B 5D10 5D11 665C 7311 711C 7428
+83CE 88C8 9AE0 8C87 951F 9AE1 9E4D 872B 88E9 9AE8
+747B 890C 918C 9315 9CB2 9A09 9BE4 9D7E 9DA4
+6083 6346 9603 58F8 68B1 7871 7975 7A07 58FC 7A1B
+7D91 88CD 95AB 95B8 9F6B
+56F0 6D83 3AFB 774F
+5812 5C21 6F49 71B4
+5321 344C 52BB 8BD3 5329 54D0 6047 6D2D 90BC 6846
+7844 7B50 44B0 8A86 8EED
+5FF9 6282 72C2 8BF3 8ED6 8A91 9D5F
+593C 5123 61ED
+535D 5739 7EA9 909D 51B5 65F7 5CB2 6CC1 77FF 663F
+8D36 7716 7736 7D56 8CBA 8EE6 9271 58D9 8E80 913A
+9ECB 61EC 66E0 720C 77CC 7926 7A6C 7E8A 945B
+783F 7D4B 7B7A
+7A7A 369A 5025 57EA 5D06 60BE 6DB3 787F 7B9C 9313
+9D7C
+5B54 233FA 6050
+63A7 26048 979A
+8EBB
+FDD0-310F
+5677
+54C8 94EA
+86E4
+5964
+4E37
+8BC3 62B2 6B31 559D 8A36 55EC 881A
+79BE 5408 4F55 52BE 5392 548A 548C 59C0 6CB3 5CC6
+3A83 66F7 67C7 72E2 76C7 7C7A 7D07 90C3 9602 9978
+54EC 3A89 6546 6838 76C9 76CD 555D 3B71 6DB8 76D2
+79F4 8377 86B5 9F81 60D2 6E2E 83CF 8402 8A38 988C
+6941 6BFC 8A65 8C88 47A6 8F05 924C 9616 9C84 3561
+7186 9E56 9EA7 6F95 3FE5 981C 7BD5 7FEE 879B 9B7A
+7909 95D4 97A8 9F55 8988 9DA1 76AC 9449 9FA2
+4F6B 578E 8D3A 7103 8894 8CC0 55C3 7142 788B 7187
+8D6B 3D51 8910 9E64 3B1E 7A52 7FEF 58D1 764B 8B1E
+7200 9DAE 9DB4 974E 9E16 974F
+7CAD 974D
+548D 54B3 55E8
+8FD8 5B69 9826 9AB8 9084
+6D77 80F2 70F8 917C 91A2
+4EA5 598E 39E1 9A87 5BB3 6C26 55D0 9900 99ED 26926
+995A
+5870 56A1
+9ED2 9ED1 563F 6F76 28B46
+8320 84BF 5686 8585 85A7
+6BDC 869D 6BEB 6903 55E5 7346 8C89 5651 7354 8C6A
+295B8 5637 3B14 734B 8AD5 512B 568E 58D5 3819 6FE0
+7C47 8814 8B79
+597D 90DD
+53F7 36AA 3740 660A 6626 79CF 54E0 5CFC 604F 608E
+6D69 8017 6667 3B36 6DCF 5090 7693 6EC8 8055 865F
+9117 66A4 66AD 6F94 769C 769E 66CD 76A1 76A5 8583
+93AC 98A2 704F 9865 9C1D 705D
+7AD3
+9F41
+4FAF 3927 77E6 5589 5E3F 7334 9107 3B0B 8454 760A
+777A 7BCC 7CC7 7FED 9ABA 7FF5 936D 9931 9BF8
+543C 72BC
+540E 539A 5795 5F8C 6D09 90C8 9005 5820 8C5E 9C8E
+9C98 9B9C 9C5F
+5019
+4F44 70B6 9878 3937 86B6 9163 9807 5AE8 8C3D 61A8
+99A0 6B5B 9F3E
+9097 542B 51FD 5481 80A3 90AF 51FE 8677 5505 5705
+5A22 6D5B 5D21 6657 6892 6DB5 7113 7400 5BD2 5D45
+3B80 97E9 751D 7B68 4204 872C 6F8F 92E1 9B7D 97D3
+4E06 5388 7F55 6D6B 558A 961A 850A 3E01 8C43 9B2B
+361A
+6C49 5C7D 6C57 95EC 65F1 5CBE 54FB 57BE 608D 634D
+6D86 7302 3A8B 6658 6665 710A 839F 91EC 9588 7694
+7745 83E1 50BC 86FF 9894 99AF 6F22 872D 8C8B 6496
+66B5 71AF 92B2 92CE 61BE 64BC 24CC9 7FF0 8792 9837
+9844 99FB 96D7 701A 8B40 862B 9DBE
+516F 7233
+62EB 75D5 978E
+4F77 5F88 72E0 8A6A
+6068
+592F 3C20
+65BB 676D 82C0 8FD2 7ED7 73E9 7B10 822A 86A2 4615
+9883 8CA5 7B55 7D4E 980F 28048 9B67
+6C86
+57B3
+4EA8 54FC 6099 5548 811D
+3530 59EE 6046 6052 6841 70C6 80FB 9E3B 6A2A 6A6B
+8861 9D34 8605 9445
+583C
+6DA5 9D46
+4E6F 5322 864D 547C 5780 5FFD 6612 66F6 6CD8 6057
+70C0 82F8 8F77 532B 553F 60DA 39FE 6DF4 8656 8EE4
+5611 5BE3 6EF9 44E4 96D0 5E60 622F 6B51 27A53 81B4
+8B3C
+56EB 6287 5F27 72D0 80E1 58F6 74F3 96BA 20D31 58F7
+659B 7100 35C5 5596 58FA 5AA9 6E56 7322 7D57 6430
+695C 7173 745A 846B 561D 2430D 9E55 69F2 7BB6 851B
+8774 885A 9B71 7E20 879C 9190 9836 89F3 9378 992C
+4B4C 9D60 702B 9B0D 9C17 9D98 9DA6
+4E55 6C7B 864E 6D52 4FFF 7425 8400 865D 6EF8
+4E65 4E92 5F16 6236 6237 6238 3E26 51B1 51B4 5E0D
+62A4 6C8D 6CAA 8290 5CB5 6019 623D 6608 6791 6018
+795C 7B0F 5A5F 6248 74E0 55C0 695B 7D94 96FD 5AED
+5AEE 6462 6EEC 9120 69F4 71A9 8530 9CF8 7C04 9359
+569B 9E71 8B77 9CE0 97C4 9800 9C6F 9E0C
+4E4E 7C90 552C 7CCA 933F 9BF1
+82B1 82B2 54D7 5629 848A 9335
+534E 3572 3B49 59E1 9A85 91EA 91EB 94E7 83EF 6433
+6ED1 733E 380F 398A 64B6 78C6 92D8 8550 8796 8B41
+93F5 9A4A 9DE8
+5316 5212 3566 593B 3577 6779 753B 8BDD 6866 5A73
+5D0B 756B 7575 89DF 8A71 5283 6466 5AFF 5B05 69EC
+6F85 6A3A 8AE3 7E63 8219 9ECA 8B6E
+57D6 5A72 691B 7874 7CC0 8AAE 748D
+5419 5268 8020 952A 5290 9343 5684 8C41 6509 9A1E
+4F78 6D3B 79EE 79F3
+706B 4F19 90A9 94AC 9225 5925 6F37
+6C8E 6216 8D27 549F 7809 4100 4FF0 6347 7713 9584
+20D7E 639D 83B7 8CA8 60D1 6E71 7978 65E4 6947 3A2F
+798D 84A6 35F2 596F 970D 6FE9 7372 8B0B 6AB4 956C
+56AF 7016 77C6 7A6B 4C5B 66E4 802F 81DB 8267 85FF
+8816 56BF 7668 77D0 944A 9743
+6000 5F8A 6DEE 69D0 8E1D 61D0 8922 8931 3733 3822
+61F7 7024 6AF0 8032 8639
+574F 54B6 8AD9 58CA 58DE 863E
+7070 39D1 8BD9 54B4 6062 62FB 6325 6D03 867A 6656
+70E3 73F2 8886 8C57 5A4E 5645 5A88 63EE 3DC7 7FDA
+8F89 6689 694E 7147 8A7C 9693 5E51 7773 7988 649D
+5655 7FEC 8918 8F1D 9EBE 5FBD 7008 96B3 8633 9C34
+56D8 56DE 56EC 4F6A 5EFB 605B 6D04 5EFD 70E0 8334
+8698 8FF4 75D0 9025 86D4 86D5 8716 9BB0
+6094 6BC0 6BC1 26799 6BC7 6A93 71EC 8B6D
+5349 6C47 4F1A 8BB3 6CCB 54D5 21726 6D4D 7ED8 8294
+8BF2 605A 6075 70E9 835F 8D3F 5F57 6666 79FD 5599
+60E0 6E4F 7D75 7F0B 7FD9 9613 532F 5F59 5F5A 3963
+6703 6ED9 8A6F 8CC4 9892 50E1 5612 3A39 8AA8 571A
+5BED 6167 6193 66B3 69E5 6F53 7623 8527 49E5 5666
+5B12 5FBB 6A5E 6BA8 6FAE 6FCA 7369 8559 8AF1 982E
+71F4 74AF 7BF2 8588 8589 992F 5696 77BA 7A62 7E62
+87EA 3B29 6AD8 7E6A 7FFD 85F1 8B53 5136 93F8 95E0
+5B48 942C 9767 8B7F 986A
+5C77 7073 74A4 61F3
+72BF 6B53 9D05 3E55 9D4D 56BE 61FD 737E 9144 8B99
+8C9B 9A69
+73AF 5CD8 6D39 72DF 90C7 6853 8341 5BCF 7D59 8408
+8411 96C8 7D84 7FA6 8C86 926E 953E 571C 5B1B 5BF0
+6FB4 7F33 49A1 961B 74B0 8C72 9370 956E 9E6E 7CEB
+7E6F 8F58 9436 95E4 9B1F 74DB 4D09
+7F13 4220 7DE9 650C
+5E7B 5942 8092 5950 5BA6 5524 6362 6D63 6DA3 70C9
+60A3 6899 7115 559A 559B 5D48 610C 63DB 6E19 75EA
+7746 902D 3B07 3B0A 7165 744D 8C62 6F36 7613 69F5
+9CA9 64D0 6FA3 9BC7 85E7 9C00
+6B22 77A3 6B61
+660F 662C 8364 5A5A 60DB 6DBD 960D 68D4 6B99 7767
+8477 776F 95BD
+5FF6 6D51 68A1 9984 581A 6E3E 743F 9B42 991B 7E49
+8F4B 4B9D 9F32
+9BF6
+8BE8 4FD2 5031 5702 638D 6DF7 711D 6EB7 6141 89E8
+8AE2
+5DDF 3835 8093 8841 8352 671A 5843 614C 3B3B
+7687 505F 51F0 55A4 582D 5A93 5D32 5FA8 60F6 6E5F
+968D 9EC3 9EC4 697B 714C 745D 845F 9051 953D 58B4
+6F62 735A 7BC1 7BCA 824E 8757 71BF 749C 8AFB 7640
+78FA 417F 7A54 9360 992D 9CC7 7C27 87E5 97F9 8DAA
+9A1C 9404 9C09 5164 9C51 9DEC
+6033 604D 70BE 5BBA 6644 595B 8C0E 5E4C 8A64 7180
+4420 8B0A 6ACE
+6130 3A2A 6EC9 69A5 769D 66C2 93A4 76A9
+6643 7E28
+53FF 543D 544D 7074 8F70 54C4 8A07 70D8 8EE3 63C8
+6E39 7122 7861 8C3E 29420 8F37 85A8 9367 569D 8F5F
+4EDC 5F18 5985 7EA2 5430 5B8F 6C6F 7392 7EAE 95F3
+5B96 6CD3 57AC 5A02 6D2A 7AD1 427A 7D05 82F0 8679
+5CF5 6D64 7D18 7FC3 803E 836D 7854 7D2D 8C39 9E3F
+6E31 7AE4 7CA0 921C 958E 7D8B 7FDD 8452 8453 8C3C
+6F42 28306 9277 9783 9B5F 92D0 5F4B 9710 857B 971F
+9D3B 9EC9 2410F 9ECC
+664E 3B34 55CA
+8BA7 8A0C 95A7 6494 6F8B 6F92 92BE 95C2 9B28
+FDD0-3110
+4E0C 22A66 8BA5 51FB 5209 53FD 9965 4E69 520F 673A
+7391 808C 573E 77F6 9E21 6785 82A8 54AD 59EB 525E
+5527 59EC 5C50 79EF 7B04 8FF9 98E2 57FA 7EE9 559E
+5D46 5D47 6567 671E 7284 7B53 7F09 8D4D 52E3 55D8
+7578 7A18 8DE1 8DFB 9CEE 50DF 20F3B 6BC4 7B95 9288
+5630 69E3 757F 7A3D 7DDD 89ED 8CEB 8EB8 9F51 58BC
+6A5F 6FC0 74A3 7A4D 9324 64CA 78EF 79A8 7C0A 7E3E
+7F81 8940 8CF7 96AE 6AC5 802D 8E5F 96DE 8B4F 913F
+97F2 9D8F 8B64 9416 9951 8E8B 97BF 9DC4 9F4E 7F87
+9447 8640 8989 9459 9F4F 7F88 9E04 898A
+4EBC 53CA 4F0B 5409 7EA7 5373 5C8C 5F76 5FE3 6781
+6C72 7680 4E9F 4F76 8BD8 9491 537D 59DE 6025 72E4
+90C6 63E4 75BE 768D 7B08 7D1A 810A 4798 506E 5359
+5EB4 3B72 710F 89D9 8C3B 35CA 68D8 6E52 96C6 5849
+5AC9 6131 6222 696B 6975 6B9B 8D8C 69C9 8024 818C
+84BA 92A1 35F1 6483 6F57 7620 799D 7BBF 8E16 9E61
+5DAF 6A76 6FC8 8540 878F 64EE 6A9D 857A 8E50 9353
+85C9 894B 8265 7C4D 8F5A 93F6 4CED 9735 9DBA 9DD1
+96E6 96E7
+51E0 5DF1 4E2E 5980 72B1 6CF2 866E 6324 638E 9C7E
+5E7E 39B8 621F 9218 5D74 9E82 9B62 64A0 64E0 7A56
+87E3 9B55
+2E95 5F50 5F51 65E1 8BA1 8BB0 4F0E 7EAA 5756 5993
+5FCC 6280 5242 5B63 82B0 9645 54DC 578D 5CDC 65E2
+6D0E 6D4E 7D00 830D 8A08 5264 7D12 7EE7 8324 8360
+89CA 8A18 5048 5BC2 5BC4 3831 5F9B 394D 60B8 65E3
+689E 6E08 796D 5848 60CE 3ED1 4400 81EE 517E 75F5
+7D99 846A 8507 88DA 66A8 6F03 6F08 7A29 7A4A 84DF
+8900 8A8B 8DFD 969B 9701 9B3E 9C9A 66A9 7A37 8AC5
+9CAB 5180 5291 66C1 7A44 9AFB 568C 6A95 6FDF 7F7D
+858A 89AC 6AB5 3E04 85BA 9D4B 9F4C 61FB 7660 7A67
+7E4B 9AA5 9BDA 7031 7E7C 860E 29949 9C40 862E 973D
+9C36 9C3F 863B 9C6D 9A65
+4EBD 8F91 6A2D 8F2F 5EED 766A
+52A0 4E6B 5939 4F3D 593E 4F73 62B8 62C1 6CC7 3E62
+67B7 6BE0 6D43 73C8 8304 8FE6 57C9 5BB6 6D79 75C2
+689C 7B33 801E 8888 50A2 7333 8DCF 20EA2 728C 8175
+846D 926B 5609 927F 9553 8C6D 8C91 29D9B 93B5 4552
+9E9A
+573F 5FE6 6274 90CF 550A 605D 835A 90DF 621B 83A2
+94D7 621E 86F1 88B7 988A 3B96 86FA 88CC 8DF2 9782
+9904 92CF 982C 9830 9D36 9D4A
+7532 4EEE 5CAC 53DA 73BE 80DB 659A 8D3E 94BE 5047
+5A7D 5FA6 659D 6935 8CC8 9240 698E 69DA 7615 6A9F
+4EF7 9A7E 67B6 22C4C 5AC1 5E4F 69A2 50F9 99D5
+7A3C 7CD8
+7596 9636 7686 63A5 63B2 23D8F 75CE 79F8 5588 5826
+5A98 63ED 6904 6E5D 813B 83E8 8857 968E 55DF 5AC5
+716F 40C8 7A2D 8754 64D1 7664 8B2F 9D9B
+5369 536A 5B51 5C10 8BA6 8282 5226 5227 52AB 5C8A
+523C 351A 52BC 6605 6770 758C 3636 36C3 62EE 6D01
+7ED3 5022 6840 8871 8A10 8FFC 507C 5A55 5D28 6377
+83AD 5091 55BC 3A17 4039 7D50 7D5C 88BA 9889 5D65
+3A29 696C 6976 6ED0 776B 7BC0 8710 874D 8A70 9263
+9B5D 622A 69A4 78A3 7AED 26D74 9C92 6F54 7FAF 84F5
+8AB1 8E15 978A 5E6F 937B 9B9A 5DC0 6AED 881E 8818
+883D
+6BD1 5A8E 89E3 89E7 98F7 6A9E
+4E2F 4ECB 5424 5C95 3839 5E8E 6212 5C46 5C4A 73A0
+82A5 754C 754D 75A5 780E 8BEB 501F 6088 86A7 8878
+5FA3 583A 6950 743E 86F6 7297 8AA1 9AB1 9B6A 892F
+9385 8EA4
+59D0 685D
+4EA4 827D 8281 59E3 5A07 5CE7 6D47 90CA 9A84 80F6
+832D 832E 6912 7126 86DF 8DE4 50EC 5604 213ED 8660
+9C9B 5B0C 5D95 5DA3 618D 6F86 81A0 71CB 81B2 8549
+7901 7A5A 9BAB 9D41 9E6A 7C25 87ED 8F47 940E 9DCD
+9A55 9DE6 9DEE
+3B42 81EB 89D2 4F7C 4FA5 6054 6322 72E1 7EDE 997A
+6341 6648 70C4 768E 77EB 811A 94F0 6405 6E6B 7D5E
+527F 656B 6E6C 714D 8173 8CCB 50E5 6477 669E 8E0B
+9278 9903 510C 528B 5FBA 649F 64B9 5FBC 61BF 657D
+657F 71DE 7F34 96A6 66D2 74AC 77EF 76A6 87DC 7E73
+8B51 5B42 3A70 27088 652A 705A 9C4E
+53EB 544C 5CE4 630D 8A06 73D3 7A8C 8F7F 8F83 654E
+6559 7A96 3C3E 6ED8 8F03 5602 5626 65A0 6F16 9175
+564D 5DA0 6F50 566D 5B13 7365 85E0 8DAD 8F4E 91AE
+8B65 3B2D 76AD 91C2
+9D64 6AF5 7E90
+4E29 52FC 7EA0 673B 725E 7A76 7CFA 9E20 7CFE 8D73
+28CCA 9604 557E 63C2 63EA 841B 63EB 9CE9 644E 6A1B
+9B0F 9B2E
+4E5D 4E45 4E46 4E63 597A 7078 7396 820F 97ED 7D24
+9152 9579 97EE
+531B 65E7 3EA9 81FC 548E 759A 4192 67E9 67FE 5003
+6344 6855 5313 53A9 6551 5AA8 5C31 5EC4 8205 50E6
+5ECF 5ED0 6166 6BA7 9E6B 820A 5336 9BE6 9E94 9F68
+9DF2
+6C63 6766 6B0D
+620B 5978 5C16 5E75 575A 6B7C 95F4 51BF 6214 73AA
+80A9 8270 59E6 59E7 517C 76D1 5042 5805 60E4 3B74
+730F 7B3A 8C5C 6E54 724B 7F04 83C5 83FA 9593 641B
+6937 693E 714E 728D 744A 788A 7F23 844C 8C63 76E3
+7777 7B8B 84B9 6A2B 719E 7DD8 9CA3 9CFD 9E63 71B8
+2585D 7BEF 7E11 8551 8573 8271 9930 99A2 9E89 7010
+97AC 97AF 9CD2 791B 4320 89B8 9D73 7038 9427 6AFC
+6BB2 9DBC 97C0 9C39 56CF 8643 946F 97C9
+56DD 62E3 67A7 4FED 67EC 5039 6338 6361 7B15 8327
+51CF 526A 6898 68C0 583F 63C0 63C3 691C 6E1B 6E55
+7751 7877 8A43 950F 5F3F 6695 7450 7B67 7B80 7D78
+88E5 8C2B 8DBC 6229 622C 3A35 78B1 5109 7FE6 64BF
+6AA2 2372D 8B07 8E47 77BC 7906 7C21 85C6 8947 8949
+8B2D 7E6D 9B0B 9E78 703D 8812 9417 9C0E 5297 9E7B
+7C5B 8B7E 9E7C 897A
+89C1 4EF6 898B 996F 5251 5EFA 6D0A 726E 8D31 4FF4
+5263 682B 6DA7 73D4 8230 8350 5065 5271 5FA4 6E10
+8C0F 91FC 5BCB 6E85 81F6 88B8 8DF5 65D4 6957 6BFD
+249E3 8171 8465 8CCE 9274 952E 50ED 3A34 6997 6F38
+528D 528E 3D4E 6F97 7BAD 7CCB 852A 8AD3 8CE4 8D9D
+8E10 8E3A 5292 5294 8AEB 92FB 991E 77B7 78F5 85A6
+87B9 9373 9375 64F6 6FFA 7E5D 3C04 89B5 93E9 7033
+8266 8B7C 8F5E 9431 9451 9452 946C 9473
+5F45 58B9 6A7A 7900 6BB1
+5DFE 4ECA 65A4 9485 5153 91D1 6D25 77DC 89D4 57D0
+73D2 7D1F 8355 887F 60CD 583B 7B4B 91FF 5D9C 9E76
+9EC5 895F
+4EC5 5C3D 4FAD 537A 5DF9 7D27 5807 83EB 50C5 53AA
+8C28 9526 5AE4 5ED1 6F0C 76E1 7DCA 9991 69FF 747E
+84F3 5118 9326 8B39 9949
+4F12 52A4 52B2 5997 6783 8FD1 8FDB 52C1 6D55 6649
+664B 6D78 70EC 8369 8D46 552B 740E 7972 9032 5BD6
+6422 6E8D 7981 7F19 9773 5890 3A37 3B10 669C 7468
+50F8 51DA 6B4F 6BA3 89D0 5664 3B1C 6FC5 74A1 7E09
+8CEE 568D 5B27 3BF2 6FDC 71FC 74B6 85CE 89B2 8D10
+9F7D
+91D2 781B 743B 58D7
+6C5F 59DC 5C06 6D46 7555 8333 8C47 5C07 757A 8441
+646A 7FDE 50F5 6F3F 8780 58C3 7F30 6A7F 6BAD 8591
+87BF 9CC9 7585 7913 7586 7E6E 97C1 9C42
+8BB2 5956 6868 508B 5968 848B 596C 69F3 734E 8199
+8523 8029 4243 8B1B 985C
+531E 5905 5F1C 6D1A 7EDB 964D 5F36 7D73 88B6 52E5
+9171 5D79 647E 6EF0 5F4A 236A6 729F 7CE1 7CE8 91A4
+8B3D 91AC
+5320 6762 6AE4
+5755 5759 5DE0 4EAC 6CFE 7ECF 4EB0 79D4 830E 6D87
+834A 5A5B 60CA 65CC 65CD 7304 7D4C 8396 6676 7A09
+8148 8346 83C1 7CB3 7D93 844F 5162 7CBE 8059 9CB8
+9D5B 9BE8 9D81 9D84 9E96 9F31 9A5A 9EA0
+4E95 4E3C 522D 362B 5753 5B91 6C6B 9631 6C6C 80BC
+5244 7A7D 9888 666F 981A 5106 5E5C 61AC 66BB 71DB
+749F 9838 61BC 74A5 87FC 4718 8B66
+598C 51C0 5F2A 5F84 4FD3 205CA 6D44 80EB 8FF3 501E
+51C8 5F33 5F91 75C9 7ADE 5A59 5A67 6871 68B7 6DE8
+811B 9015 291D5 7ADF 75D9 7AE7 9753 50B9 656C 3B0C
+7AEB 9756 5883 734D 8AA9 8E01 9759 477C 975A 955C
+975C 66D4 6FEA 701E 93E1 7AF6 7AF8
+775B 6A78 71DD
+51E5 521F 6285 530A 5C45 62D8 6CC3 72D9 9A79 82F4
+6336 75BD 75C0 7717 7820 7F5D 5A35 5A6E 5D0C 63AC
+68AE 6DBA 9671 6910 741A 8152 83F9 8D84 8DD4 9514
+96CE 824D 871B 88FE 8E18 8E19 92E6 99D2 9B88 9D21
+97A0 97AB 9D8B
+26951 5C40 3632 6CE6 4FB7 72CA 6854 6BE9 5579 5A45
+6DD7 7117 6908 6BF1 6E68 83CA 90F9 7291 8F02 50EA
+7CB7 8DFC 8ACA 8D9C 8EB9 95B0 6A58 6A8B 99F6 4CD4
+9D59 8E6B 9D74 5DC8 9DAA 861C 9F33 9A67
+5480 5F06 6CAE 4E3E 6319 8392 6907 6989 6998 7B65
+9F83 849F 8065 8209 8E3D 64E7 9F5F 6AF8 6B05
+53E5 5DE8 4E6C 5DEA 8BB5 5177 59D6 5CA0 6007 6010
+601A 62D2 62E0 6D30 90AD 661B 6B6B 70AC 82E3 949C
+4FF1 5028 5036 51A3 5267 79EC 57E7 57FE 60E7 636E
+7C94 801F 86B7 8893 728B 8A4E 8DD9 8DDD 98D3 8C66
+9245 952F 5BE0 6133 7AAD 805A 8661 5287 52EE 5C66
+8E1E 99CF 58C9 61C5 64DA 6FBD 7AB6 422E 92F8 9B94
+5C68 907D 98B6 8C97 7C34 8E86 91B5 61FC 943B 3B2C
+77E9 7220 8977
+5658 6485 64A7 5C69 8E7B
+4E85 2010C 5B52 5B53 51B3 5214 6C12 8BC0 6289 6C7A
+5F21 3B48 6CEC 73A6 73A8 82B5 6317 73CF 75A6 7804
+7EDD 8673 89C9 5014 6354 6B2E 8697 5D1B 6398 658D
+6877 6B8C 8990 89D6 8A23 8D7D 8DB9 4848 5095 53A5
+3B7E 7133 7D55 7D76 899A 8D89 902B 920C 37F2 5282
+3522 52EA 7474 8C32 99C3 5DA5 61B0 71A6 7234 7357
+761A 9D02 9D03 5671 61A0 6A5B 6A5C 855D 8568 7235
+81C4 9562 87E8 87E9 5C6B 8B4E 8E76 8E77 9D8C 5337
+56BC 7211 77CD 89BA 940D 941D 721D 89FC 5F4F 6204
+652B 7383 9DE2 6B14 77E1 9FA3 28C1C 8C9C 8EA9 9481
+59E2 5A1F 6350 6D93 7106 8127 74F9 9E43 88D0 52EC
+48FA 954C 93B8 9D51 942B 8832
+5377 545F 5E23 57CD 6372 83E4 9529 3DF7 9308 81C7
+52B5 5946 5DFB 5026 52CC 684A 72F7 7EE2 96BD 6DC3
+7737 774A 7D6D 7F65 45AD 9104 7760 7D79 96CB 98EC
+21840 617B 8528 990B 7367 7E33 7F82
+519B 208D5 541B 5747 36AC 6C6E 59F0 8ECD 94A7 8690
+8880 687E 76B2 8399 83CC 921E 7885 76B8 76B9 89A0
+9281 929E 9CAA 9E87 9355 9BB6 9E8F 9E95
+5441 4FCA 3F59 57C8 5CFB 6343 6D5A 90E1 9656 9982
+9A8F 35A5 6659 710C 73FA 2797A 347A 68DE 756F 7AE3
+3766 41F9 7B98 7B9F 8720 28318 5101 3559 9915 5BEF
+61CF 71C7 6FEC 99FF 9D54 9D58 6508 4551 651F
+2E86 5182 518B 5770 6243 57DB 7D45 99C9 99EB 860F
+8614
+518F 56E7 38A0 6CC2 7085 4FB0 70AF 8FE5 6D7B 9008
+70F1 489B 7A98 988E 715A 7D97 50D2 715B 71B2 6F83
+8927
+FDD0-3111
+4E03 6C8F 8FC9 59BB 67D2 501B 51C4 6816 6864 5A38
+60BD 687C 6DD2 90EA 6532 671F 68F2 6B3A 3C66 840B
+86E3 50DB 5601 617D 69BF 6F06 7DC0 617C 69ED 25250
+8AC6 8AFF 970B 45E9 8E4A 3B24 9B4C 4953 93DA 9D88
+4E93 9F50 573B 5C90 5C93 5FEF 4E9D 5176 5947 6589
+6B67 7541 7941 80B5 82AA 4FDF 75A7 7947 7948 7AD2
+5258 658A 65C2 8006 8110 8691 8694 869A 9880 57FC
+5D0E 5E3A 6391 6DC7 7309 7566 8DC2 8EDD 91EE 9A90
+9A91 68CA 68CB 7426 742A 8401 8415 86F4 612D 7881
+7895 797A 44C5 951C 980E 65D7 7CB8 7DA5 7DA6 7DA8
+44EB 871D 871E 9B3F 9F4A 7482 8E11 79A5 8572 9321
+9CAF 61E0 6FDD 2A5C6 6AB1 6AC0 24A8C 81CD 85C4 9A0E
+9A0F 9CCD 4C07 9BD5 9D78 9D80 9E92 7E83 8269 8604
+8810 9B10 9C2D 7382 9EA1
+4E5E 4F01 5C7A 5C82 9094 542F 5447 675E 7398 76C0
+8291 5518 8C48 8D77 5553 5554 5A4D 555F 7EEE 6675
+68E8 410E 7DAE 7DBA 8AEC 95D9
+6C14 8BAB 5FD4 6C17 6C54 5F03 6C7D 77F5 8FC4 546E
+6CE3 7081 76F5 829E 54A0 5951 780C 6814 6B2B 6C23
+8A16 552D 5921 68C4 6E46 6E47 789B 847A 6456 66A3
+78B6 5650 6187 7508 27858 5668 61A9 78DC 78E7 78E9
+468D 7F4A 87FF 9F1C
+7F3C 621A 6E0F 7DD5 8904 87A7 7C2F 7C31 7C4F
+6390 845C
+62E4
+8DD2 9160
+5736 51BE 34E4 5E22 6070 6D3D 6B8E 7848 6118 9AC2
+9790
+767F 21D90 49A7 807A
+4E14
+5207 59BE 602F 5327 7A83 90C4 20CB5 608F 6308 6D2F
+3932 60EC 6DC1 7B21 611C 86EA 3966 6705 7BA7 7DC1
+9532 21424 7BCB 8E25 7A55 9365 85D2 9BDC 9411 7ACA
+2383A
+82C6 503F 5AAB 7C61
+6084 7857 90FB 5D6A 8DF7 5281 6572 6BC3 8E0D 9121
+9125 9539 589D 981D 58BD 5E67 22FE3 6A47 71C6 7F32
+9AB9 78FD 936B 936C 7E51 8DAC 8E7A 9430
+4E54 4FA8 6865 834D 835E 785A 55AC 83EC 50D1 8C2F
+563A 5AF6 376F 6194 9792 6A35 6A4B 854E 7644 4009
+77A7 7904 4397 8DAB 85EE 9408 97BD 9866 2710D
+5DE7 91E5 6100 9ADC
+4FCF 8BEE 5CED 5E29 7A8D 9657 6BBB 7FD8 8A9A 9ADA
+50FA 64AC 64BD 9798 97D2 7AC5 7FF9 8B59 8E88 3681
+69D7 729E
+3400 4E18 4E20 20C0B 5775 36B1 3CCB 90B1 6058 79CB
+79CC 86AF 5A9D 6978 8429 9E59 7BCD 7DE7 84F2 8775
+7A50 8DA5 4A02 9CC5 87D7 97A6 97A7 9C0C 9C0D 9D96
+8824 9F9D
+53F4 56DA 624F 72B0 738C 6C53 808D 6C42 866C 6CC5
+42B5 866F 4FC5 89D3 8A04 8A05 914B 91D3 5512 3797
+3939 3B5D 6D57 7D0C 91DA 6882 6B8F 6BEC 7403 838D
+8D47 900E 9011 5D37 5DEF 3962 6E1E 6E6D 76B3 76DA
+5DF0 716A 7D7F 86F7 88D8 9052 89E9 8CD5 7486 8764
+92B6 9194 9B82 9F3D 9BC4 9C3D
+641D 7CD7
+91FB 8612
+5343 4EDF 5731 5732 5977 6266 6C58 9621 4F65 5C8D
+6744 6C67 828A 8FC1 6B26 74E9 81E4 833E 948E 62EA
+7275 7C81 515B 60AD 8C38 94C5 5A5C 5B6F 727D 91FA
+6394 8688 8C26 9206 96C3 50C9 6106 7B7E 925B 9A9E
+9E50 6173 6434 6481 7B9E 8AD0 9077 8930 8B19 9845
+6AB6 6510 6ACF 7C3D 9D6E 5B45 6513 9A2B 6511 9B1D
+9B1C 3A77 7C64 97C6
+4EF1 5C92 5FF4 6272 62D1 524D 94A4 6B6C 8654 94B1
+94B3 63AE 8EE1 5A8A 63F5 9210 976C 9257 5898 69A9
+7B9D 92AD 6F5B 6F5C 7FAC 6A6C 8541 9322 9ED4 9EDA
+6FF3 9A1A 9A1D 704A 9C2C
+51F5 80B7 6D45 6DFA 8125 55DB 5D70 69CF 8181 8738
+9063 8C34 7F31 7E7E 8B74
+6B20 520B 3438 82A1 4FD4 5029 6093 831C 5811 5094
+5D4C 68C8 6920 614A 7698 5879 371E 37FB 6B49 7DAA
+84A8 69E7 7BCF 8533 8F24 5119 7BDF 58CD 7E34 4945
+9C1C
+7ACF 9386 93F2 7C56 9453
+4EB2 4FB5 94A6 887E 9A8E 5A87 5D5A 6B3D 7D85 8A9B
+5D94 89AA 9849 99F8 9BBC 5BF4
+3626 5E88 3A81 82A9 82B9 57C1 73E1 79E6 8039 8699
+6366 7434 7439 83E6 83F3 9219 96C2 52E4 55EA 5AC0
+6EB1 79BD 9772 616C 5659 65B3 9CF9 61C4 3A52 64D2
+6FBF 763D 8793 61C3 6A8E 9B35 8804 9D6D
+5745 6611 7B09 68AB 8D7E 5BD1 9513 5BDD 5BE2 92DF
+87BC
+5422 5423 3908 628B 6C81 551A 63FF 83E3 29088 6407
+64B3 421C 7019 85FD
+545B 6215 6217 65A8 67AA 73B1 7F8C 7F97 7310 8DC4
+690C 8154 55C6 6EAC 9516 5D88 6227 69CD 7244 7472
+7FAB 8723 9535 7BEC 9306 8B12 8E4C 956A 8E61 9397
+93D8
+4E2C 5F37 5F3A 5899 5AF1 6F12 6A2F 8503 8537 58BB
+5B19 5EE7 6AA3 7246 8594 8262 8620
+62A2 7F9F 6436 7FA5 588F 7E48 8941 7E66 93F9
+709D 5534 7197 7FBB
+55F4 7347
+72C5 9751 9752 6C22 8F7B 503E 537F 570A 57E5 5BC8
+6C2B 6DF8 6E05 90EC 50BE 873B 8F15 4A1D 9CAD 944B
+591D 7520 5260 52CD 60C5 6B91 6674 68FE 6C30 6692
+845D 6A08 64CF 64CE 3BF3 6AA0 9EE5
+9877 82D8 8BF7 5EBC 9803 5ECE 6F00 3DEB 8ACB 6ABE
+5E86 51CA 6385 6BB8 7883 7B90 9758 6176 78D8 78EC
+7F44 8B26
+7858 6AE6
+533A 66F2 4F39 4F49 5324 5C96 8BCE 9A71 5765 5C48
+5CA8 5CB4 62BE 9639 3B55 6D40 80E0 795B 5340 7D36
+86C6 88AA 8EAF 7B41 7CAC 86D0 8A58 8D8B 5D87 6188
+420C 99C6 657A 8AB3 957C 99C8 9EB9 9AF7 9B7C 8DA8
+9EAF 89B0 8EC0 9EB4 9EE2 89BB 9A45 9C38 9C4B
+4F62 52AC 65AA 6710 80CA 9E32 6DED 7D47 7FD1 6E20
+83C3 8EE5 844B 24A0E 7496 8556 9D1D 74A9 78F2 87B6
+77BF 87DD 9F29 3739 5FC2 7048 8627 6235 6B0B 6C0D
+81DE 766F 7C67 8837 8862 8EA3 883C 947A 9E1C
+53D6 7AD8 5A36 8A53 7AEC 877A 9F8B 9F72
+53BA 53BB 521E 547F 3C26 551F 801D 9612 89D1 8DA3
+95B4 9EAE 95C3 9F01 89B7
+8FF2 8850
+7F3A 9619 849B
+7638
+5374 537B 57C6 5D05 5BC9 60AB 96C0 7437 785E 786E
+9615 5859 6409 76B5 788F 6128 69B7 58A7 6164 78BA
+78BB 8D9E 71E9 95CB 7910 95D5 704D 792D
+9E4A 9D72
+5CD1 5F2E 606E 609B 5708 570F 68EC 99E9 9409
+34B0 5168 6743 4F7A 8BE0 59FE 6CC9 6D24 62F3 7277
+8343 8F81 5573 57E2 5A58 60D3 75CA 7842 94E8 6E76
+7288 7B4C 7D5F 643C 7454 8472 89E0 8A6E 8DE7 8F07
+8737 9293 6A29 8E21 7E13 919B 9CC8 9B08 9A21 9C01
+5B49 5DCF 9F64 6B0A 98A7 8838 9874
+21FE8 72AC 6C71 754E 70C7 7EFB 7DA3 8647
+529D 5238 7276 52E7 97CF 52F8
+72AD 6926 697E 95CE
+590B 56F7 5CEE 9021
+5BAD 5E2C 3A8A 7FA3 7FA4 88D9 88E0
+828E 5314
+536D 5B86 909B 7A77 7A79 8315 684F 4143 7B3B 8D79
+60F8 712A 712D 743C 7B47 823C 86E9 86EC 21983 7162
+7758 8DEB 928E 778F 7AAE 511D 618C 6A69 749A 74CA
+7AC6 85D1 85ED 74D7
+718D
+FDD0-3112
+5915 516E 5FDA 6C50 8980 5438 5E0C 6271 6278 5365
+6614 6790 7A78 80B8 80B9 4FD9 5F86 6038 6053 997B
+550F 595A 36D3 5C56 6095 6C25 6D60 727A 72F6 90D7
+553D 6089 60DC 637F 665E 6878 6B37 6DC5 70EF 7101
+7108 740B 7852 8383 8D65 91F8 5092 60C1 6670 6673
+3C64 711F 712C 7280 774E 7A00 7C9E 7FD5 823E 83E5
+5380 5D60 5FAF 6EAA 7699 910E 9521 50D6 69BD 7155
+7184 7188 7199 7DC6 84A0 8725 8C68 990F 563B 564F
+5B06 5B09 6F5D 3FB7 761C 78CE 819D 51DE 20615 5DB2
+6199 3B1B 6A28 6A40 71B9 71BA 71BB 7AB8 7E18 7FB2
+8785 8787 932B 3C46 71E8 406F 77A6 87CB 8C3F 8C40
+8C6F 8C95 7CE6 7E65 96DF 9D57 8B46 91AF 93ED 5DC7
+66E6 7214 72A7 89F9 96B5 9145 89FD 9F37 8835 9E02
+89FF 9474
+4E60 90CB 5E2D 7FD2 88AD 89CB 5AB3 693A 3804 5D8D
+6F1D 84B5 84C6 89A1 8D98 69E2 3A57 6A84 8582 96B0
+8B35 93B4 972B 9CDB 98C1 9A31 9A3D 8972 9C3C 9A68
+67B2 6D17 73BA 5F99 94E3 559C 9222 8448 8478 9268
+9269 5C63 6F07 6198 84F0 66BF 6B56 8AF0 58D0 79A7
+7E30 8B11 87E2 8E5D 74BD 56CD 9C5A 77D6 8EA7
+5338 534C 620F 5C43 7CFB 9969 546C 5FE5 602C 77FD
+7EC6 4FC2 54A5 6044 76FB 3938 3B61 6B2F 7EE4 90E4
+7D30 91F3 960B 55BA 691E 7FD6 8203 8204 8D87 6140
+6ECA 7D8C 8D69 588D 7182 7294 798A 7A27 9699 969F
+6F5F 89A4 6231 6F99 422A 856E 9ED6 6232 78F6 4B8E
+8669 993C 9B29 7E6B 56B1 95DF 3E0D 973C 5C6D 884B
+897F 606F 6E13 6A72 72A0 7902 9BD1
+8672 75A8 867E 3520 8C3A 5084 9595 7146 7175 98AC
+271CD 778E 8766 9C15
+5323 4FA0 72CE 4FE0 5CE1 67D9 70A0 72ED 5CFD 70DA
+72F9 73E8 965C 7856 796B 7FC8 823A 35C7 7864 967F
+656E 6687 7455 7B6A 821D 9050 78AC 8F96 78CD 7E00
+7E16 8D6E 9B7B 8578 8F44 935C 971E 938B 9EE0 9A22
+9DB7
+959C
+4E05 4E0B 4E64 5413 759C 590F 3648 7771 5687 61D7
+7F45 5913 93BC 93EC
+5737 68BA 6E8A
+4E9B 3C54 63F3 7332 6954 6B47 874E 880D
+52A6 534F 65EA 90AA 5354 80C1 57A5 604A 62F9 631F
+594A 5CEB 633E 8105 8107 887A 5055 659C 3B68 8C10
+35BF 7FD3 55CB 6136 643A 744E 7D8A 26CC3 3666 7181
+818E 52F0 64B7 7DF3 7F2C 8762 978B 9821 64D5 8AE7
+71F2 3A66 64F7 97B5 651C 7E88 896D 8B97 9FA4
+5199 51A9 5BEB 85DB
+4F33 707A 5378 6CC4 6CFB 7EC1 7F37 6D29 70A7 7944
+5A0E 5C51 5C53 22B3F 505E 5070 5368 5FA2 68B0 70F2
+710E 7D32 4EB5 5A9F 5C5F 6E2B 245C8 79BC 7D4F 7D6C
+8C22 50C1 586E 698D 69AD 3D3D 5C67 66AC 7DE4 8909
+5667 5DB0 5EE8 61C8 6FA5 736C 7CCF 27735 97F0 71EE
+85A2 85A4 893B 8B1D 9082 99F4 7009 97A2 7023 7215
+424F 7E72 87F9 880F 9F58 9F5B 9F65 9F42 8E9E
+810B 5911
+7071 7072 547A 67AD 4FBE 54D3 67B5 9A81 54EE 5BAF
+5BB5 5EA8 6D88 7EE1 8653 9E2E 5A4B 689F 7107 7307
+900D 75DA 75DF 785D 7863 7A99 8427 9500 63F1 7D83
+7FDB 8437 560B 5610 6B4A 6F47 7BAB 8E03 5635 5F47
+61A2 3A4B 7362 92B7 9704 81AE 856D 9D1E 7A58 7C18
+87C2 87CF 9B48 9D35 56A3 7C2B 85C3 87F0 701F 6AF9
+24473 9AC7 56BB 56C2 8828 9A4D 9AD0 6BCA 8648
+6D28 3B35 7B05 5D24 6DC6 8A24 90E9 6BBD 7B4A 8AB5
+2E8C 2E8D 5C0F 6653 6681 7B71 7B7F 769B 66C9 7BE0
+76A2 8B0F
+5B5D 8096 52B9 54B2 4FF2 6548 6821 6D8D 7B11 5578
+509A 6569 35DB 8A68 5628 8A9F 562F 6B57 71BD 97A9
+6585 6586 4567
+6077 6EE7
+4F11 4FE2 54BB 5EA5 3CDC 4FEE 70CB 70CC 7F9E 8119
+8129 9E3A 81F9 8C85 9990 929D 9AE4 6A07 9AF9 9380
+9D42 93C5 9948 9C43 98CD
+82EC
+673D 7D87 6EEB 7CD4
+79C0 5CAB 5CC0 73DB 7EE3 7407 8896 9508 55C5 6EB4
+7493 890E 890F 92B9 8791 7E4D 7E61 93E5 93FD 9F45
+9BB4
+353E 4EDA 5C73 5148 597E 7EA4 4F61 5FFA 6C19 6774
+79C8 67AE 7946 7C7C 82EE 73D7 6380 83B6 8A2E 94E6
+23519 50CA 8DF9 9170 9528 5615 929B 9C9C 97EF 5B10
+61B8 66B9 9341 859F 893C 97F1 9BAE 8E6E 99A6 4D4C
+5EEF 6515 7E8E 9DB1 8E9A 7E96 8973 9C7B
+4F2D 95F2 59B6 5F26 8D24 54B8 6326 80D8 5A34 550C
+5563 5A39 5A71 6D8E 7D43 8237 86BF 8854 3B79 75EB
+86DD 9591 9592 9E47 5ACC 8858 929C 5AFA 5AFB 61AA
+648F 6F96 7509 7A34 8AB8 8CE2 3BD7 3D6A 71C5 8AF4
+8F31 918E 7647 764E 77AF 85D6 3C0A 7925 4554 9E79
+9E99 8D12 9DF3 9DF4 9DFC
+51BC 72DD 39E5 663E 5D04 3B60 6BE8 70CD 7303 86AC
+9669 8D7B 967A 7B45 5C1F 5C20 641F 8DE3 3B0E 7992
+9291 7BB2 5DAE 736B 96AA 736E 934C 71F9 85D3 9855
+5E70 6507 6AF6 8B63 861A 4606 496A 7381 97C5 986F
+7066
+4F23 53BF 5C98 2070E 73B0 7EBF 81FD 82CB 549E 59ED
+5BAA 770C 9650 54EF 57B7 5A0A 5A28 5CF4 3A87 6D80
+9665 665B 73FE 784D 83A7 9677 9985 774D 7D64 7F10
+7FA1 732E 7CAF 7FA8 817A 8706 49DF 50E9 50F4 21416
+7DAB 8AA2 648A 7DDA 92E7 61B2 3B17 6A4C 7E23 930E
+9921 58CF 8C4F 493C 9EB2 7017 81D4 737B 7CEE 9F38
+4ED9 50F2 7E4A 9466
+5FC3 59A1 5FFB 8F9B 90A4 6615 677A 6B23 7098 82AF
+76FA 4FFD 3B62 60DE 8A22 920A 950C 65B0 6B46 5EDE
+92C5 5B1C 85AA 99A8 946B 99AB
+6794 3726 8951 9414
+4F08
+3430 4F29 56DF 9620 5B5E 3B44 248F2 4FE1 8ED0 812A
+8845 8A2B 712E 7161 99B8 820B 9856 91C1
+5FC4 567A
+4E61 8297 76F8 9999 53A2 554C 90F7 5EC2 6E58 7F03
+9109 910A 7A25 8459 9115 7BB1 7DD7 81B7 858C 8944
+5FC0 9AA7 9E98 6B00 74D6 9576 9472 9A64
+4F6D 74E8 8BE6 5EA0 6819 7965 7D74 7FD4 8A73 8DED
+4EAB 4EAF 54CD 9977 6651 98E8 60F3 9284 9909 9C9E
+66CF 9B9D 8801 9BD7 97FF 9957 995F 9C76
+5411 59E0 5DF7 8683 9879 73E6 5842 7F3F 8856 8C61
+9805 842B 50CF 52E8 9297 5D91 6A61 95C0 56AE 87D3
+8950 940C 9C4C
+697F 9C5C
+661F 57B6 9A8D 60FA 7329 714B 7446 8165 86F5 89EA
+7BB5 7BC2 9B8F 66D0 89F2 935F 9A02 76A8 9BF9
+5211 884C 5F62 90A2 4F80 9649 578B 6D10 90C9 9498
+5A19 8365 9658 784E 94CF 9203 6ECE 9276 9292 92DE
+3A18 7772 9192 64E4
+5174 674F 59D3 5E78 6027 5016 8347 5A5E 60BB 6DAC
+8395 7DC8 8208 5B39 81D6
+54D8 88C4 8B03
+5401 620C 65F4 759E 76F1 6B28 80E5 987B 6647 8A0F
+987C 8657 865A 8C1E 5AAD 5E41 63DF 6E51 247E0 865B
+88C7 9808 6948 7AA2 980A 5618 9700 5653 589F 5B03
+7E03 8751 9B46 6B54 8566 8ADD 8B43 7E7B 9450 9A49
+9B1A 9B56
+4FC6 5F90 84A3
+8BB8 5474 59C1 8BE9 5194 6829 73DD 5066 8A31 668A
+8A61 7A30 7CC8 9126 9191 76E8
+65ED 4F35 5E8F 6C7F 4F90 5379 6034 6C80 82A7 53D9
+6064 662B 6D2B 460F 57BF 6B30 6B88 70C5 73EC 52D6
+654D 6558 52D7 70FC 7EEA 7EED 9157 55A3 58FB 5A7F
+6702 6E86 7D6E 8A39 6149 7166 8CC9 69D2 6F35 6F4A
+76E2 7781 7DD2 805F 84C4 928A 735D 7A38 7DD6 9B63
+77B2 85C7 85DA 7E8C 9C6E
+8053 7D9A 84FF
+524A 75B6 3EE1 8486 9774 35FE 8FA5 8FAA 859B 97BE
+7A74 6588 4E74 5B66 5CA4 5CC3 6CF6 8313 9E34 8895
+8E05 58C6 5B78 5DA8 6FA9 71E2 3D85 89F7 96E4 9DFD
+96EA 9CD5 9C48
+8840 3570 5437 5779 72D8 6856 8C11 8D90 8B14 7025
+81A4 6A30 825D 8F4C
+5405 8F69 660D 5BA3 5F32 8ED2 688B 8C16 55A7 5847
+5A97 6103 610B 63CE 6684 714A 7444 8431 8432 777B
+84D2 5107 7BAE 7E07 7FE7 8756 92D7 61C1 79A4 8AE0
+8AFC 857F 9379 99FD 7FFE 8809 77CE 85FC 8610 8B5E
+7384 73B9 3623 75C3 60AC 65CB 7401 8701 5AD9 6F29
+66B6 7487 4062 6A88 74BF 61F8
+54BA 6645 70DC 9009 3535 9078 9848 7663 766C
+6030 6CEB 39E6 6621 70AB 7EDA 7729 94C9 7404 7734
+8852 88A8 6E32 7D62 6965 6966 9249 78B9 8519 955F
+9799 98B4 7E3C 7E4F 93C7 8B82 8D19
+9C1A
+5743 52CB 57D9 7104 52DB 5864 718F 7AA8 52F2 8512
+52F3 99E8 58CE 736F 85AB 66DB 71FB 81D0 85B0 77C4
+7E81 860D 58E6 91BA
+5BFB 5EF5 65EC 9A6F 674A 5DE1 7543 8BE2 5CCB 6042
+6D35 6D54 7D03 6812 686A 6BE5 73E3 8340 8368 5071
+3704 5C0B 5FAA 63D7 295B0 8A62 99B4 69C6 6F43 9C9F
+565A 3D4C 6F6F 9129 6533 6A33 71D6 7495 87F3 9C4F
+9C58 7065
+5342 8BAF 4F28 6C5B 8FC5 4F9A 5DFA 5F87 72E5 6B89
+8A0A 8A19 8FFF 900A 595E 5DFD 6BBE 7A04 613B 8CD0
+905C 5640 6F60 8548 9D55 720B 9868 9442
+8BAD 8A13 5691
+51F6 5144 342B 5147 5308 8BBB 5FF7 6C79 54C5 605F
+6D36 80F7 80F8 8A29 8A7E 8CEF
+96C4 718A
+713D
+8BC7 7138 8A57 5910 657B 22FCC
+FDD0-3113
+4E4B 652F 536E 6C41 5431 5DF5 6C65 5767 679D 6CDC
+77E5 7EC7 80A2 829D 6800 79D3 79D6 80D1 80DD 5001
+75B7 7957 79EA 8102 887C 96BB 6894 796C 6925 81F8
+6220 6418 7A19 7D95 69B0 7994 8718 99B6 3BC4 9CF7
+9D32 9D44 7E54 9F05 8635
+6267 4F84 59B7 76F4 59EA 5024 503C 8040 91DE 57F4
+57F7 21E1C 6DD4 804C 8CAD 690D 6B96 7286 7D77 8901
+8DD6 55ED 74E1 7983 9244 588C 646D 99BD 5B02 6179
+6F10 8E2F 6A34 81B1 5128 7E36 8077 87D9 8E60 8EC4
+8E91
+5902 6B62 53EA 52A7 65E8 5740 5741 5E0B 627A 6C66
+6C9A 7EB8 962F 603E 62A7 23CB5 82B7 54AB 6049 6307
+67B3 6D14 780B 7949 8F75 75BB 41DB 7D19 8879 6DFD
+8A28 8DBE 8EF9 4920 9EF9 916F 85E2 8967
+81F3 9624 5FD7 5FEE 627B 8296 8C78 28468 5236 5394
+5781 5E19 5E1C 6CBB 7099 8D28 5CD9 5EA2 5EA4 6303
+67E3 6809 6D37 81F4 8FE3 90C5 5A21 5F8F 2267A 631A
+664A 684E 72FE 7951 79E9 8D3D 8F7E 965F 4E7F 506B
+202B7 5F9D 3A01 63B7 68BD 6956 7318 7564 75D4 79F2
+79F7 7A92 7D29 7FD0 889F 88A0 89D7 94DA 9E37 5082
+21376 5D3B 5F58 667A 6EDE 75E3 86ED 8EFD 9A98 5BD8
+5ECC 6431 6ECD 7A1A 7B6B 7F6E 8DF1 8F0A 9527 96C9
+5886 21839 6EEF 6F4C 7590 43BA 88FD 899F 8A8C 928D
+5E5F 6184 646F 71AB 7A3A 7DFB 442D 81A3 89EF 8CEA
+8E2C 92D5 64F3 65D8 7004 99E4 9D19 5295 61E5 6ADB
+7A49 4245 87B2 3609 3731 61EB 64F2 8D04 6ACD 74C6
+89F6 9BEF 7929 8C51 9A2D 9A3A 9A47 8E93 9DD9 9455
+8C52
+51EA 4FE7 5F94 8B22
+624E 5412 62AF 5953 6313 67E4 67FB 54F3 5067 55B3
+63F8 6E23 6942 5284 6463 76B6 6A1D 89F0 76BB 8B47
+9F44 9F47
+672D 7534 95F8 86BB 94E1 7160 7250 9598 7B9A 802B
+9358 8B57
+538F 62C3 82F2 7728 781F 6429 9C8A 9C9D 8E37 9B93
+9BBA 4562
+4E4D 7079 8BC8 54A4 67DE 6805 70B8 5BB1 75C4 86B1
+8A50 643E 6EA0 69A8 27A0A 9705 91A1
+8707 55FB 5AEC 906E
+5387 6298 6B7D 77FA 7813 7C77 8674 54F2 57D1 3B59
+7C8D 5560 608A 6662 6663 3B6F 88A9 8F84 5586 86F0
+8A5F 41FD 8C2A 99B2 647A 8F12 78D4 8F19 92B8 8F99
+87C4 569E 8B2B 8B3A 9BBF 8F4D 8B81 8B8B
+8005 4E7D 556B 9517 7987 8D6D 8936 8975
+8FD9 67D8 6D59 6DDB 9019 6A1C 6F6A 9E67 87C5 4826
+9DD3
+7740 8457 8517
+635A 658B 658E 6458 69B8 451D 9F4B 29C73
+5B85 6AA1
+7A84 9259
+503A 7826 50B5 5BE8 7635
+5908 7C82
+4F4B 948A 59B1 5DF6 62DB 662D 76C4 91D7 5541 924A
+99CB 7ABC 9363 76BD
+722A 627E 6CBC 7475 4203
+53EC 5146 8BCF 679B 5797 70A4 72E3 8D75 7B0A 8081
+65D0 68F9 436E 8A54 7167 7F69 4207 8087 8088 8D99
+66CC 71F3 9BA1 6AC2 77BE 7F84
+2EA5 722B 7F40
+5DDE 821F 8BCC 4F9C 5468 6D32 8BEA 70D0 73D8 8F80
+5F9F 3A04 63AB 6DCD 77EA 90EE 9E3C 558C 7CA5 8D52
+9031 8F08 44DF 9282 8CD9 8F16 970C 76E9 8B05 9D43
+9A06 8B78
+59AF 8F74 8EF8
+8098 759B 666D 83F7 776D 7B92 9BDE
+7EA3 4F37 546A 5492 5B99 7EC9 5191 54AE 663C 7D02
+80C4 76B1 836E 914E 665D 7C99 3473 8A4B 8464 8A76
+7503 50FD 76BA 99CE 5663 243F2 7E10 9AA4 7C40 7C55
+7C52 9A5F
+5E1A 70BF 99F2
+6CBE 6BE1 65C3 6834 7C98 86C5 98E6 60C9 8A40 8D88
+8A79 959A 8C35 5661 5DA6 9711 6C08 6C0A 859D 9085
+77BB 9E6F 65DC 8B6B 9958 9CE3 9A59 9B59 9C63 9E07
+8B9D
+65A9 98D0 5C55 76CF 5D2D 65AC 382D 692B 7416 370A
+640C 76DE 5D83 5D84 6990 98AD 5AF8 9186 6A4F 406A
+8F3E 28AC0 27B06 2217A 9EF5
+5360 4F54 6218 6808 685F 7AD9 5061 7EFD 68E7 6E5B
+83DA 6226 7DBB 5D98 8F1A 6230 8665 8666 89B1 8F4F
+8B67 29947 9A4F 8638
+8D1E 3630 9488 4FA6 6D48 73CD 73CE 80D7 8C9E 3598
+5E2A 6815 6862 771E 771F 7827 91DD 5075 686D 796F
+9159 5BCA 5AC3 21EC8 6438 659F 6968 7349 8474 9049
+9241 9755 699B 6B9D 7467 7504 78AA 798E 8496 84C1
+6F67 799B 7BB4 6A3C 6FB5 81FB 9331 8F43 937C 85BD
+7C48 9C75
+3431 8BCA 62AE 6795 5F2B 6623 8F78 5C52 755B 75B9
+7715 7D3E 8044 8897 8A3A 8EEB 7D7C 7F1C 88D6 4AB4
+7A39 99D7 7E25 9B12 9EF0
+5733 7EBC 9635 753D 4FB2 630B 42B6 9E29 632F 6715
+681A 7D16 9663 7739 8D48 9156 63D5 5866 7471 8AAB
+8CD1 47F4 6576 9547 9707 9D06 93AD 93AE
+8419 92F4
+5F20 5F35 7AE0 50BD 5887 5ADC 5F70 22554 615E 6F33
+7350 7CBB 9123 66B2 6A1F 24364 748B 8501 9067 9926
+87D1 9A3F 9C46 9E9E
+4EC9 957F 9577 6DA8 638C 6F32 7903
+4E08 4ED7 6259 5E10 6756 80C0 8D26 5E33 6DB1 8139
+75EE 5D82 5E5B 969C 8CEC 762C 7634 7795
+7C80 5E65 93F1 9423
+4E89 4F42 59C3 5F81 6014 722D 8BE4 20C9C 5CE5 6323
+70A1 72F0 70DD 7710 94B2 57E9 5D1D 5D22 6399 7319
+7741 8047 28713 94EE 5A9C 63C1 7B5D 3B39 5FB0 775C
+9266 5FB4 84B8 7B8F 5FB5 8E2D 7BDC 931A 9B07 9BD6
+7665
+6C36 628D 7CFD 62EF 639F 6678 6138 649C 6574
+6B63 8BC1 5E27 653F 90D1 75C7 5E40 8A3C 5863 40BB
+27D84 4223 8ACD 912D 9D0A 8B49 496D
+51E7
+6731 52AF 4F8F 8BDB 6D19 90BE 682A 73E0 8331 8BF8
+732A 7843 79FC 94E2 7D51 86DB 88BE 8A85 8DE6 69E0
+876B 9296 6A65 6F74 8AF8 8C6C 99EF 9BA2 9D38 7026
+6AEB 6AE7 9BFA 9F04 8829
+7AF9 6CCF 7AFA 70A2 7B01 70DB 7A8B 833F 7B1C 8233
+9010 7603 7BC9 71ED 880B 8E85 9C41 5B4E 705F 66EF
+6B18 7225 883E
+4E36 4E3B 20C0D 5B94 62C4 7F5C 6E1A 967C 716E 8A5D
+7151 5631 6FD0 9E88 77A9 529A 56D1 65B8 77DA
+4F2B 4F47 4F4F 52A9 7EBB 577E 677C 6CE8 82CE 8D2E
+8FEC 9A7B 58F4 67F1 6BB6 70B7 75B0 771D 782B 795D
+7ADA 7969 7D35 7D38 7F9C 8387 86C0 5D40 7B51 8A3B
+8CAF 8DD3 8EF4 94F8 7B6F 9252 99B5 7BB8 7FE5 6A26
+92F3 99D0 7BEB 9714 9E86 9444
+58B8
+6293 6A9B 81BC 9AFD 7C3B
+5353 62D9 70AA 502C 6349 684C 68C1 6DBF 68F3 7A5B
+25F1A 4B93 7A71 883F
+5734 5F74 6C4B 72B3 707C 53D5 59B0 65AB 6D4A 8301
+4E35 6D5E 8BFC 914C 5544 5545 5A3A 39FB 3B6C 68B2
+70F5 65B1 666B 6913 7438 4401 251CD 787A 7AA1 7F6C
+65B2 69D5 64AF 64C6 799A 4175 8AC1 8AD1 92DC 6FC1
+7BE7 289E7 64E2 6580 65B5 6FEF 243F8 6AE1 8B36 956F
+9D6B 7042 8817 942F 9432 7C57 9DDF 7C71
+5285
+7AA7
+62FD
+8DE9
+96B9 8FFD 9A93 9525 9310 9A05 9D7B
+6C9D
+5760 6858 7B0D 5A37 60F4 7F12 7577 7500 787E 8187
+8D58 589C 8AC8 918A 7E0B 9323 991F 7908 8D05 8B75
+8F5B 9446
+7F00 7DB4
+4E13 53C0 5C02 7816 5C08 587C 5AE5 911F 747C 78D7
+819E 989B 750E 78DA 8AEF 87E4 9853 9C44
+8F6C 5B68 8EE2 7AF1 4871 8F49
+7077 556D 581F 7451 815E 8483 50CE 8D5A 64B0 7BC6
+9994 7BF9 8CFA 8948 8B54 994C 56C0 7C51
+5B92 80AB 8FCD 7A80 8C06 8AC4 8860
+51C6 57FB 6E96 7DA7
+8A30 7A15
+51D6
+5986 5E84 599D 5A24 6869 8358 6889 838A 6E77 7CA7
+88C5 88DD 6A01 7CDA
+58EE 58EF 72B6 72C0 58F5 710B 6F34 649E 6207
+5E92
+4E2D 4F00 6C77 5223 5990 5F78 5FE0 6CC8 7082 7EC8
+26B15 67CA 76C5 949F 41D7 822F 8873 8877 7D42 9221
+5E52 953A 8520 92BF 87A4 87BD 937E 9F28 8E71 9418
+2915E 7C66
+80BF 79CD 51A2 55A0 5C30 585A 585C 6B71 7144 816B
+7607 7A2E 8E35 7A5C
+4EF2 4F17 5995 72C6 794C 91CD 833D 869B 8876 5045
+773E 5839 5A91 7B57 8846 8AE5
+8FDA
+FDD0-3114
+5403 4F99 54E7 5F68 80F5 86A9 9E31 7735 7B1E 55AB
+74FB 8A35 55E4 5AB8 75F4 7D7A 645B 5644 8ABA 779D
+9D1F 87AD 7661 9F5D 9B51 5F72 9ED0
+5F1B 6C60 9A70 577B 5CBB 8FDF 6301 7AFE 830C 6B6D
+834E 86B3 8D7F 7B42 8CBE 8D8D 9045 99B3 7B8E 905F
+5880 6F26 8E1F 7BEA 9072 8B18 28A32
+5C3A 53FA 544E 4F88 5376 9F7F 5791 80E3 6065 3DB4
+7C8E 42BC 803B 8687 6B3C 6B6F 88B2 88B3 88ED 9279
+9F52 892B
+5F73 53F1 65A5 6758 707B 8D64 996C 62B6 52C5 605C
+70BD 52D1 7FC4 7FC5 6555 70FE 75D3 557B 3961 6E41
+7873 98ED 50BA 75F8 815F 8DEE 9253 96F4 7608 7FE4
+9290 6157 618F 761B 7FE8 906B 71BE 61D8 8DA9 4820
+994E 9D92 9DD8
+599B 9EB6
+53C9 6260 6748 2472F 809E 81FF 633F 505B 63D2 63F7
+9987 55CF 929F 9538 7580 8256 9364 9937
+79C5 579E 67E5 832C 8336 5D56 7339 976B 643D 8A67
+5BDF 69CE 78B4 25ED7 6AAB 297D4
+8869 8E45 9572 9454
+597C 6C4A 5C94 4F98 8BE7 59F9 7D01 5DEE 47D5 8A6B
+8F66 4F21 8ECA 4FE5 7817 5513 8397 7868 86FC
+626F 5056 47A3 64A6
+5C6E 5F7B 577C 8FE0 3934 70E2 3FED 352D 8045 63A3
+7869 9819 5FB9 64A4 6F88 3B1A 52F6 77AE 4720 7221
+8286 62C6 9497 91F5
+4FAA 67F4 8C7A 7961 558D 5115 9F5C
+831D
+867F 8883 8A0D 7625 8806 56C6
+6284 2207E 5F28 600A 6B29 949E 8A2C 712F 24674 8D85
+9214 52E6 4AFF
+724A 6641 5DE2 5DE3 671D 9F0C 6F05 911B 5632 6A14
+6F6E 7AB2 7F7A 8F48 9F02 8B3F
+5435 7092 7727 7123 717C 9EA8 5DD0
+4EE6 4EEF 8016 89D8
+62BD 5A64 640A 7633 7BD8 72A8 72AB
+4EC7 601E 4FE6 5E31 6826 60C6 7D2C 7EF8 6906 7574
+7D52 83D7 6101 7697 7A20 7B79 9167 7DA2 88EF 8E0C
+5114 96D4 568B 5B26 5E6C 61E4 71FD 85B5 96E0 7587
+7C4C 8E8A 91BB 8B8E 8B90
+4E11 4E12 541C 677B 677D 4FB4 5062 7785 919C 77C1
+9B57
+81ED 81F0 6BA0 905A
+916C
+8FBF 89C7 6400 68B4 8998 9246 88E7 92D3 5E68 895C
+6519
+5A75 8C17 68CE 6E79 998B 7158 7985 7F20 50DD 7351
+8749 8A97 5103 5B0B 5EDB 6F79 6F7A 7DFE 6FB6 78DB
+92CB 6BDA 79AA 9561 700D 87EC 913D 5133 5296 87FE
+56B5 5DC9 703A 9141 6B03 7E8F 7E92 8E94 9575 826C
+8B92 9471 995E
+4EA7 522C 65F5 4E33 65BA 6D50 5257 8C04 5574 7522
+7523 94F2 9610 5277 8487 5D7C 644C 6EFB 563D 5E5D
+8AC2 95B3 9AA3 71C0 8546 7C05 5181 7E5F 8B42 8FB4
+93DF 95E1 56C5 705B 8B87
+5FCF 785F 3B04 6472 61F4 98A4 61FA 7FBC 97C2 986B
+58E5
+62BB 6375 90F4 741B 55D4 7D9D 778B 8AC3 8CDD 7E1D
+8B13
+5C18 81E3 5FF1 6C88 6C89 8FB0 9648 8FE7 5BB8 831E
+6550 8380 8390 8A26 8C0C 8ED9 9673 6116 63E8 9202
+7141 5875 760E 6A04 852F 9703 8AF6 87B4 85BC 9E8E
+66DF 9DD0
+8DBB 7876 789C 588B 5926 78E3 8E38 9356 8D02 91A6
+75A2 886C 9F80 8D81 8D82 6987 9F53 512C 9F54 512D
+56AB 8C36 6AEC 896F 8B96
+70E5 6668
+4F25 660C 5000 5A3C 6DD0 7316 960A 667F 7429 83D6
+9520 88EE 9329 95B6 9CB3 4B96 9BE7 2A087 9F1A
+4EE7 514F 80A0 82CC 9578 5C1D 507F 5E38 5F9C 74FA
+8407 751E 8178 5617 5872 5AE6 747A 8193 92FF 511F
+5690 9CBF 93DB 9C68
+5382 573A 6636 60DD 5834 50D8 53B0 5EE0 6C05 92F9
+6005 739A 7545 5021 9B2F 5531 60B5 713B 7452 66A2
+757C 8AAF 97D4
+655E 6919 87D0
+6CDF 9637 67FD 722F 6D7E 79F0 5041 86CF 36F5 68E6
+6E5E 725A 7424 8D6A 50DC 6186 645A 7A31 9757 6490
+6491 7DFD 6A55 77A0 8D6C 9833 6A89 7AC0 7A6A 87F6
+93F3 93FF 9953
+4E1E 6210 673E 5448 627F 67A8 8BDA 4E57 57CE 5A0D
+5CF8 6D06 90D5 4E58 57D5 5BAC 6330 665F 73F9 8100
+6381 73F5 7A9A 812D 837F 94D6 5818 60E9 68D6 6909
+7A0B 7B6C 7D7E 584D 5856 6E97 7880 41F8 88CE 8AA0
+757B 9172 92EE 6195 6F82 6F84 6A59 6A99 7013 61F2
+2815D 9A2C
+4FB1 5F8E 609C 9A8B 5EB1 901E 7748 9A01
+79E4
+9BCE
+51FA 5C80 521D 6474 6A17 8C99 9F63
+520D 82BB 9664 53A8 8C60 9504 5AB0 6EC1 8021 870D
+8D8E 924F 96CF 3551 7293 84A2 84AD 3861 5EDA 854F
+92E4 6A71 7BE8 5E6E 6AC9 96DB 6AE5 85F8 8E70 8E87
+9DB5 8E95
+51E6 6775 7840 50A8 6918 696E 891A 6FCB 5132 6A9A
+790E 9F6D 9E00 9F7C
+4E8D 5904 7ACC 6035 62C0 7ECC 8C56 67F7 6B2A 7AD0
+4FF6 654A 755C 3647 57F1 73FF 7D40 8655 5097 7421
+6410 6EC0 89E6 9110 8E00 95A6 510A 563C 84EB 8AD4
+61B7 65B6 6B5C 81C5 9EDC 89F8 77D7
+695A 698B 6A7B 74B4 87F5
+6B3B 6B58
+9034 8E14 6233
+2ECC 2ECD 8FB6 8FB5 3C8B 5A15 5A16 60D9 6DB0 7EF0
+5A7C 814F 8F8D 44CE 916B 7DBD 8DA0 8F1F 9F8A 64C9
+78ED 7E5B 6B60 56BD 9F6A 9461
+63E3 640B
+8197
+555C 562C 81AA 8E39
+5439 708A
+5782 5015 57C0 6376 68F0 690E 8144 9672 6425 83D9
+9524 69CC 7BA0 9318 9840 939A
+9FA1
+5DDB 5DDD 6C1A 7A7F 5276 732D 744F
+4F1D 4F20 8221 8229 8239 570C 50B3 693D 9044 66B7
+7BC5 8F32
+821B 8348 5598 6B42 50E2 8E33
+6C4C 4E32 7394 948F 91E7 8CD7 9DA8
+65FE 6776 6625 583E 5A8B 8405 6699 693F 7443 7BBA
+877D 6A41 8F34 81A5 6AC4 9C06 9D9E 2A0B9
+7EAF 5507 6D71 7D14 9659 6DF3 8123 83BC 6E7B 7289
+6EE3 6F18 8493 84F4 9187 9195 931E 9BD9
+5046 60F7 8436 7776 8CF0 8822
+9E51 9D89
+5205 75AE 7A93 7A97 724E 6450 7255 7621 7ABB
+5E8A 7240 5647 5E62
+95EF 50B8 6464 78E2 95D6
+521B 6006 5231 524F 5259 51D4 5275 6134
+5145 51B2 5FE1 6C96 833A 6D7A 73EB 7FC0 8202 5603
+644F 5FB8 6183 61A7 885D 41B9 7F7F 825F 8E56
+866B 5D07 5D08 9680 7DDF 8769 8908 87F2 721E
+5BA0 57EB 205A5 5BF5
+94F3 63F0 9283
+FDD0-3115
+5C38 5931 5E08 545E 8671 8BD7 9E24 5C4D 65BD 6D49
+72EE 90BF 5E2B 7D41 91F6 6E64 6E7F 921F 6EAE 6EBC
+7345 8479 8A69 9247 9248 7461 8492 84CD 9CF2 8768
+9CFE 27A79 9CBA 6FD5 26488 8937 9366 2A014 9BF4 9C24
+9DB3 8979
+5341 9963 77F3 4E6D 8FBB 65F6 20C34 5B9E 5B9F 65F9
+59FC 5CD5 70BB 8680 98DF 98E0 57D8 6642 794F 83B3
+5BD4 6E5C 5852 6EA1 9048 9250 5BE6 69AF 8494 8755
+4215 9CA5 9F2B 9F2D 9C23
+53F2 77E2 4E68 8C55 4F7F 59CB 9A76 5158 5BA9 5C4E
+7B36 9242 99DB
+58EB 6C0F 793B 4E17 4E16 4ED5 5E02 2EAC 793A 534B
+5F0F 5FD5 2EAE 4E8A 4F3C 53D3 623A 4E8B 4F8D 52BF
+5469 67F9 8BD5 9970 519F 5BA4 6040 6043 62ED 662F
+6630 67BE 67FF 7702 89C6 8D33 683B 70D2 770E 7721
+8210 8F7C 9002 94C8 8996 8C49 901D 91C8 5A9E 5D3C
+5F11 5FA5 63D3 8C25 8CB0 91CA 52E2 55DC 5F12 7757
+7B6E 89E2 8A66 8EFE 9230 9243 98FE 8213 8A93 927D
+596D 9069 492D 92B4 9919 566C 5B15 6FA8 8ADF 8AE1
+991D 87AB 8B1A 907E 7C2D 91CB 896B
+4F66 7ACD 8BC6 62FE 5319 5D75 6981 7176 7BD2 9B96
+7C42 8B58 9C18
+6740 6C99 7EB1 4E77 5239 524E 7802 5526 7300 7C86
+7D17 686C 6BBA 6BEE 3E3A 838E 94E9 75E7 7870 715E
+88DF 699D 6A27 8531 9B66 9CA8 9BCA 9BCB 93A9
+50BB 510D
+503D 553C 5551 5565 5E39 53A6 55A2 8410 5EC8 3C3C
+6B43 7FDC 4209 7B91 7FE3 95AF 970E
+7E4C
+5962 731E 8D4A 756C 7572 8F0B 8CD2 8CD6 6AA8
+820C 4F58 8675 86C7 86E5 27D73
+820D 6368 4B37
+538D 8BBE 793E 5399 5C04 6D89 6DBB 6E09 8A2D 8D66
+5F3D 6151 6442 6444 6EE0 6174 6475 850E 6B59 97D8
+9A07 8802 4713 61FE 651D 7044 9E9D 6B07
+820E
+3D13 7B5B 917E 7BE9 7C01 7C1B 91C3
+7E7A
+6652 3B20 95B7 66EC
+5F30 634E 70E7 68A2 83A6 713C 7A0D 65D3 7B72 8244
+86F8 8F0E 71D2 4230 98B5 9AFE 9BB9
+52FA 828D 67D6 73BF 82D5 7AF0 97F6
+5C11 28218 4520
+52AD 5372 7ECD 90B5 54E8 5A0B 7D39 8891 7744 7DA4
+6F72
+8571
+53CE 6536
+624B 5B88 57A8 9996 824F
+5BFF 53D7 72E9 517D 552E 6388 6DAD 7EF6 75E9 58FD
+7DAC 5900 7626 46F5 7378 93C9
+624C 7363
+5C71 5F61 9096 5220 522A 6749 59CD 59D7 829F 9490
+67F5 72E6 73CA 8222 82EB 886B 57CF 75C1 8ED5 633B
+7B18 8120 8DDA 527C 6427 5607 5E53 717D 6F78 6F98
+6A86 7E3F 81BB 7FB4 7FB6 9BC5 3C11
+27A3E
+95EA 9655 9583 965D 3A8E 6671 7154 7752 718C 89A2
+8BAA 6C55 38CC 759D 5261 6247 8A15 8D78 639E 91E4
+5093 5584 928F 9A9F 50D0 58A0 58A1 6F6C 25531 7F2E
+912F 5B17 64C5 6A3F 6B5A 81B3 4C49 78F0 8B06 8D61
+4120 7E55 87EE 4947 87FA 8B71 8D0D 9425 994D 9A38
+9CDD 7057 9C53 9C54
+5738 6763 958A 657E
+7533 5C7E 625F 4F38 8EAB 4F81 547B 59BD 7C76 7EC5
+8BDC 59FA 67DB 6C20 73C5 7A7C 7C78 5A20 5CF7 7521
+7712 7837 6552 6DF1 7D33 8398 515F 68FD 8A37 8460
+88D1 8A75 20EDD 7527 84E1 8518 71CA 99EA 9CB9 66D1
+8593 9D62 9BF5 9C3A
+4EC0 751A 795E 4C20
+5F1E 90A5 5BA1 77E4 54C2 77E7 5BB7 8C02 8C09 5A76
+6E16 8A20 5BE9 8AD7 9823 9B6B 66CB 9825 77AB 5B38
+700B 3C02 89BE 8B85
+80BE 4FBA 661A 80C2 6D81 7718 6E17 8124 7973 814E
+613C 614E 6939 7606 7F67 8703 8704 6EF2 92E0 762E
+5814 698A 9C30
+4F24 6B87 5546 89DE 50B7 5892 616F 6EF3 6F21 6BA4
+71B5 850F 87AA 89F4 8B2A 9B3A
+57A7 6244 664C 8D4F 8CDE 8D18 945C
+4E04 4E0A 5C19 5C1A 6066 7EF1 7DD4 979D
+4EE9 88F3
+5347 751F 544F 58F0 6598 9629 6607 6CE9 72CC 680D
+6B85 7272 73C4 82FC 3C61 965E 7B19 9679 6E66 713A
+7525 924E 8072 9F2A 9D7F
+7EF3 61B4 7E69 8B5D
+7701 771A 5057 6E3B
+5723 80DC 6660 5270 76DB 5269 52DD 8CB9 5D4A 741E
+8056 58AD 69BA 8542 8CF8
+7AD4 66FB 6A73
+4E66 6BB3 5C17 6292 7EBE 3450 53D4 6778 67A2 59DD
+964E 500F 5010 66F8 6B8A 7D13 6393 68B3 6DD1 7102
+8ED7 758E 758F 8212 83FD 9103 6445 6BF9 7D80 8F93
+8DFE 8E08 6A1E 7479 852C 8F38 6A7E 9B9B 6504 5135
+9D68
+79EB 5A4C 5B70 8D4E 587E 719F 74B9 8D16
+9F21 5C5E 6691 9ECD 668F 7F72 8700 9F20 6F7B 66D9
+3EFF 85A5 85AF 7659 85F7 8961 5C6C 8969 9483
+672E 672F 620D 675F 6CAD 4FB8 51C1 54B0 6037 6811
+7AD6 8FF0 6055 6352 8357 5EB6 5EBB 7D49 8853 5C0C
+9683 6570 7AEA 8167 8481 88CB 9265 5885 6F31 6F44
+6578 6F8D 8C4E 6A39 6FD6 9330 4240 93E3 9D90 866A
+702D 7CEC 8834 9C6A 9C70
+5237 5530
+800D
+8A9C
+8BF4 54FE 8AAA 8AAC
+5981 70C1 6714 94C4 6B36 7855 77DF 6420 69CA 78A9
+84B4 7361 7BBE 26097 9399 720D 9460
+8870 6454 2812E
+7529
+5E05 5E25 2361A 87C0 535B
+8C01 813D 8AB0
+6C34
+5E28 6D97 6D9A 7971 7A05 7A0E 7761 88DE 7793
+6C35 6C3A 9596
+95E9 62F4 9582 6813
+6DAE 8168
+542E
+987A 821C 9806 6A53 779A 8563 77AC 9B0A
+53CC 971C 96D9 5B40 9AA6 5B47 9A3B 6B06 7935 9DDE
+9E74 4276 826D 9A66 9E18
+723D 587D 6161 6F3A 6A09 7E14 45EE
+7040
+93EF
+FDD0-3116
+2E9C 65E5 9A72 56F8 91F0 9224 99B9
+60F9
+70ED 71B1
+5A06 9976 6861 835B 5B08 6A48 8558 8953 9952
+6270 96A2 64FE
+7ED5 9076 7E5E
+53B9 79B8 67D4 5A83 63C9 6E18 7163 7448 4413 8447
+7CC5 875A 8E42 8F2E 9352 97A3 74C7 9A25 9C07 9D94
+7C88 697A 97D6
+2EBC 8089 5B8D 816C
+5465 80B0 86A6 887B 8887 86BA 88A1 7136 9AE5 562B
+3723 9AEF 71C3 7E4E 4533
+5184 5189 59CC 67D3 73C3 82D2 5AA3 6A6A
+8485
+4EBA 4EBB 4EC1 58EC 5FC8 6732 5FCE 79C2 82A2 9213
+9B5C 928B 433E 9D40
+5FCD 6820 6823 834F 79F9 8375 68EF 7A14
+5203 5204 8BA4 4EDE 4EED 8BB1 4EFB 5C7B 5C83 3834
+6268 7EAB 2EB6 2634C 598A 6752 7263 7EB4 8095 8F6B
+97E7 996A 59D9 794D 7D09 7D1D 887D 8A12 8ED4 6895
+3E3E 8EE0 41EE 7D4D 814D 88B5 976D 9771 97CC 98EA
+845A 8A8D 9901
+7D9B 8EB5
+7A63 5134 52F7 703C 737D 8618 74E4 79B3 7A70 4274
+8E9F 9B24
+58CC 56B7 58E4 6518 7219 7E95
+8BA9 61F9 8B72 8B93
+6254
+4ECD 20BA8 3B41 8FB8 793D 3EB1 967E
+82BF
+633C
+5982 909A 4F9E 5E24 6847 8339 94F7 6E2A 7B4E 88BD
+8498 92A3 8761 5112 8560 9D11 5685 5B2C 5B7A 6FE1
+9D3D 66D8 71F8 85B7 8815 8966 98A5 91B9 986C 9C6C
+6C5D 8097 4E73 8FB1 910F 64E9
+5165 6D33 55D5 5AB7 6EBD 7F1B 84D0 7E1F 8925
+6256 6741 8FBC 9CF0 5DBF
+637C
+53D2 82E5 5F31 504C 6E03 712B 9100 6949 84BB 7BAC
+7BDB 7207 9C19 9C2F 9DB8
+5D76
+5A51 6875 7524 7DCC 8564 4B10
+6A64 854A 854B 7E60 8602 8603
+6C6D 6798 82AE 4132 868B 9510 745E 777F 8739 92B3
+92ED 53E1 289E8 3AAB 58E1
+5827 648B 58D6
+962E 670A 8F6F 800E 5044 8EDF 5A86 744C 789D 7DDB
+44F4 8F2D 74C0 791D
+77A4
+95F0 6DA6 958F 95A0 6F64 6A4D 81B6
+8338
+620E 809C 6804 72E8 7ED2 5BB9 3B5C 6BE7 8319 8363
+70FF 4846 5D58 41EF 7D68 7FA2 5AB6 5AC6 5D64 6408
+6411 6EB6 38D1 6995 69AE 69B5 7194 7462 84C9 7A41
+877E 9555 7E19 878D 878E 8923 99E5 9AF6 5B2B 5DB8
+7203 9394 701C 5DC6 66E7 8811 2A0FE
+5197 5B82 5748 22AE8 5087 8EF5 6C04
+9D27
+7A43
+FDD0-3117
+4E72 5B5C 5179 54A8 59D5 59FF 830A 6825 7386 7D0E
+8332 8D40 8D44 6DC4 79F6 7F01 8C18 55DE 5B73 5D6B
+6914 6E7D 6ECB 7CA2 8F8E 5B76 8458 89DC 8A3E 8CB2
+8CC7 8D91 9111 9531 798C 7A35 7DC7 922D 9543 9F87
+8F1C 6FAC 8AEE 8DA6 8F3A 9319 9AED 9CBB 9F12 937F
+93A1 74BE 983F 983E 9BD4 9D85 9F4D 2A5CB 9C26
+84FB
+20094 4ED4 5407 674D 3EAD 59C9 59CA 77F7 79C4 5470
+7C7D 8014 80CF 8678 79ED 6893 7B2B 91E8 5559 7D2B
+6ED3 8A3F 699F
+5B57 81EA 8293 39D8 5033 525A 6063 7278 8321 6E0D
+7725 7726 80D4 80FE 6F2C 3C74
+5B50 5D30 6A74
+5E00 531D 6C9E 5482 8FCA 62F6 7D25 7D2E 9254 9B73
+81DC 81E2
+6742 7838 507A 5592 97F4 96D1 22D8D 5DBB 78FC 894D
+96DC 56CB 56D0 96E5
+548B
+5219 629E 6CA2 62E9 6CCE 6CFD 8D23 5247 8FEE 835D
+5536 5567 5E3B 7B2E 8234 8CAC 6EAD 77E0 5616 5AE7
+5E58 7BA6 6A0D 8ACE 8D5C 64C7 6FA4 769F 7794 7C00
+790B 8B2E 8CFE 880C 8957 9F5A 456A 9F70 9E05
+5928 4EC4 5E82 6C44 6603 6617 6351 5D31
+4F2C 8536
+707D 707E 753E 54C9 683D 70D6 6E3D 83D1 7775 8CF3
+5BB0 5D3D 43C1
+518D 5728 6257 4FA2 6D05 8F7D 50A4 8F09 9168 510E
+7E21
+8D3C 621D 8CCA 9C97 9BFD 8808 9C02 9C61
+50AE 906D 7CDF 8E67 91A9
+51FF 947F
+65E9 67A3 86A4 68D7 6FA1 74AA 85BB 7E70 85FB
+7076 7681 7682 5515 5523 688D 9020 55BF 8241 6165
+566A 71E5 7C09 8B5F 8DAE 8E81 7AC3 7AC8
+6806
+90B9 9A7A 8BF9 90F0 966C 68F7 68F8 83C6 9112 7B83
+7DC5 8ACF 9CB0 9139 9BEB 9EC0 9A36 9F71 9F7A
+8D71 8D70
+594F 63CD 6971 3D75
+9BD0
+5142 7CCC 7C2A 7C2E 9415 941F
+54B1
+661D 6CAF 685A 5BC1 3CEB 63DD 5646 648D 5127 6505
+6512 5139 6522 8DB1 7938 8DB2
+6682 3506 66AB 8CDB 8D5E 933E 6FFD 8E54 913C 74C9
+8D0A 93E8 74D2 373A 7052 8B83 9147 74DA 79B6 8978
+8B9A 9961
+600E
+8C2E 8B56 8B5B
+56CE
+5328 7242 7F98 8D43 8CCD 81E7 8CD8 8535 8D13 9AD2
+8D1C
+9A75 99D4
+3638 5958 5F09 810F 585F 846C 92BA 81D3 81DF
+5897 589E 618E 7F2F 912B 6A67 71B7 7494 77F0 78F3
+7F7E 7E52 8B44
+9503 92E5 8D60 7511 8D08
+9C5B
+79DF 8445 84A9
+5346 8DB3 5352 54EB 5D12 5D2A 65CF 50B6 7BA4 8E24
+8E3F 955E 93C3
+8BC5 7EC4 963B 4FCE 723C 73C7 7956 7D44 8A5B 977B
+4503
+93BA
+6628 79E8 637D 838B 690A 7422 7A13 7B70 923C
+20087 5DE6 4F50 5528 7E53
+4F5C 5750 3634 5C9D 5C9E 600D 963C 4FB3 80D9 5511
+5EA7 795A 505A 3930 3B6E 888F 8443 8444 98F5 3600
+7CF3
+5497 84D9
+539C 6718 3B70 55FA 6A36 87D5 7E97
+5D8A 5634 5DB5 567F 74BB
+682C 7D4A 9154 6700 666C 797D 7A21 7F6A 8FA0 69DC
+917B 9189 855E 92F7 930A 6A87 6A8C
+67A0 7A5D
+94BB 28256 8E9C 947D
+7E64 7F35 7E82 7E89 7C6B 7E98
+6525 945A
+5C0A 58AB 58FF 5D9F 6A3D 9075 7E5C 7F47 940F 9CDF
+9C52 9DF7
+50D4 5642 6499 453F 8B50
+6358 928C
+9D8E
+5B97 5027 7EFC 9A94 582B 5D4F 5D55 60FE 68D5 7323
+8159 6721 6936 847C 5D78 4053 7A2F 7D9C 7DC3 71A7
+4226 7DF5 7FEA 876C 8E28 8E2A 78EB 9350 8C75 8E64
+9A0C 9B03 9A23 9B09 9B37 9BEE 9BFC 9441
+603B 506C 6374 60E3 6121 63D4 6403 50AF 3DD3 6460
+7DCF 84D7 7E02 7E3D 93D3
+7EB5 662E 75AD 500A 7314 7882 7CBD 7CC9 7632 7E26
+931D 7E31 7CED
+6F48
+FDD0-3118
+5472 75B5 8D7C 5068 8D80 8DD0 29A28 9AB4 7E12 8800
+9ACA 9F79
+8BCD 3639 5790 67CC 73C1 5832 7960 8308 8328 3935
+74F7 46D0 8A5E 8F9D 8F9E 6148 7506 78C1 96CC 4A0F
+9E5A 7CCD 8FA4 98FA 9908 3602 5B28 6FE8 858B 9D1C
+7920 8FAD 9DBF 9DC0
+6B64 4F4C 6CDA 73BC 7689 7D2A 9B86
+673F 6B21 4F3A 4F7D 523A 523E 5E9B 6828 8326 7D58
+83BF 86D3 8D50 8CDC 8786 3A5E
+5693 64E6 6503
+7924
+906A 56C3
+518A 518C 4FA7 5395 607B 62FA 6D4B 6547 755F 5074
+53A0 7B27 7CA3 5EC1 60FB 6E2C 7B56 8417 7B5E 7B74
+8434 5884 3A32 7BA3 84DB 61A1 25C21 7C0E
+5072 5A47 731C
+624D 72B2 6750 8D22 8CA1 88C1 6EA8 7E94
+6BDD 91C7 5038 554B 5BC0 5F69 63A1 776C 8DF4 7DB5
+8E29
+57F0 68CC 83DC 8521 7E29
+64A1 64CD 7CD9
+66FA 66F9 5608 5D86 6F15 69FD 84F8 25562 825A 87AC
+893F 93EA
+8278 8349 613A 61C6 9A32
+808F 9135 8959
+2EBE 8279
+51D1 6E4A 8160 8F8F 8F33
+53C2 53C3 53C4 98E1 9A96 53C5 55B0 6E4C 50AA 5B20
+9910 9A42
+6B8B 8695 60ED 6B98 615A 8745 6159 45DD 5B31 8836
+883A
+60E8 6701 6158 61AF 7A47 7BF8 9EEA 9EF2
+707F 36D1 63BA 5B71 7CB2 647B 6FAF 71E6 74A8 8592
+8B32
+510F 7218
+5D7E
+5C91 6D94 7B12 68A3
+4ED3 4EFA 4F27 6CA7 82CD 9E27 5009 8231 5096 5D62
+6EC4 734A 84BC 8259 87A5 9DAC
+85CF 9476
+416E 8CF6
+6FF8 7F49 6B0C
+66FD 564C
+5C42 66FE 5C64 5D92 3B1D 7AF2 4255 9A53
+8E6D
+7C97 89D5 9E81 9E84 9EA4
+5F82 6B82
+4FC3 731D 8128 9162 7604 8A8E 8D97 5648 61B1 851F
+8E27 918B 762F 7C07 7E2C 8E59 4944 9F00 8E74 8E75
+9863
+6413 7473 64AE 78CB 9073 8E49 919D
+3B6B 8658 75E4 7749 77EC 5D6F 5D73 84AB 8516 9E7E
+9142 9E7A 8EA6
+811E
+5249 5252 539D 590E 632B 63AA 839D 83A1 65AE 68E4
+902A 9509 9519 84CC 6B75 92BC 932F
+5D14 50AC 51D7 7F1E 5894 3720 5D89 615B 6467 69B1
+7355 69EF 78EA 7E17 93D9
+6F3C 7480 8DA1 76A0
+4F1C 5FF0 75A9 5005 7C8B 7D23 7FC6 8103 8106 5550
+555B 60B4 6DEC 6BF3 7120 813A 8403 7601 7CB9 7DB7
+7FE0 81AC 81B5 6FE2 7AC1 9847 81CE 894A
+4E7C
+6C46 64BA 92D1 9569 8E7F 651B 8EA5 9479
+6AD5 5DD1 6B11 7A73
+7A9C 6BA9 71B6 7BE1 7C12 7AC4 7228
+6751 90A8 76B4 8E06 6F8A 7AF4
+5B58 4F9F 62F5
+520C 5FD6
+5BF8 540B 7C7F
+5306 56EA 56F1 5FE9 679E 82C1 6031 60A4 217DF 68C7
+7127 249DA 8471 6F17 8061 9AA2 66B0 6A05 6A2C 719C
+747D 7481 7DEB 8066 806A 84EF 8525 779B 71EA 7BF5
+8070 87CC 936F 7E71 93E6 9A18 9A44
+4ECE 4E1B 5F93 5A43 5B6E 5F96 5F9E 60B0 6DD9 742E
+6152 6F0E 6F40 6F68 8AB4 8CE8 8CE9 6A37 53E2 85C2
+7047 6B09 721C
+6181 8B25
+8310
+FDD0-3119
+53B6 7E9F 4E1D 53F8 3EA8 7CF9 79C1 549D 6CC0 601D
+8652 9E36 5AA4 65AF 7D72 7F0C 86F3 6952 3D32 9270
+98D4 51D8 53AE 69B9 7997 7F73 8724 9536 5636 565D
+21852 5EDD 6495 6F8C 78C3 79A0 25BE8 7DE6 92D6 71CD
+856C 8784 452E 87D6 87F4 98B8 9A26 9401 29170 9DE5
+9F36 7C6D
+6B7B
+5DF3 4E96 56DB 5BFA 6C5C 4F40 4FA1 5155 59D2 5B60
+676B 6CD7 6CE4 7940 9972 9A77 3B52 67F6 726D 5A30
+6D0D 6D98 8082 98E4 7B25 801C 91F2 7AE2 8997 55E3
+8086 8C84 9236 923B 98FC 99DF 79A9 5129 857C 7003
+4FEC 6056 92AF
+4EE8 6331 6332 6492
+6D12 8A2F 9778 6F75 7051 8EA0
+5345 6CE7 98D2 810E 9212 8428 644B 98AF 99BA 85A9
+6AD2 8644
+20BBF 96A1
+95AA
+8272 6D13 681C 6DA9 556C 94EF 6B6E 7417 96ED 55C7
+745F 6B70 92AB 6F81 61CE 64CC 6FC7 7637 7A51 6F80
+74B1 7012 7A61 7E6C 8F56 93FC 8B45 98CB
+6E0B 6FCF 7A6F
+6BE2 6122 63CC 585E 6BF8 816E 567B 9CC3 984B 4C04
+9C13
+4222
+55EE 8D5B 50FF 8CFD 7C3A
+5625
+63BB 9A9A 6145 6414 6E9E 7F2B 7E45 81CA 9CCB 9A12
+9A37 9C20 9C62
+626B 6383 5AC2 4545
+57FD 7619 6C09 77C2 9ADE
+87A6
+635C 5EC0 998A 55D6 5ECB 641C 6449 6EB2 7340 910B
+6457 22CB7 8490 84C3 953C 98D5 422D 8258 878B 9199
+93AA 993F 98BC 98BE 9A2A
+53DC 53DF 5081 55FE 778D 64DE 85AE 64FB 6AE2 85EA
+7C54
+8184 7636
+55FD
+4E09 5F0E 53C1 6BF5 4200 6BFF 7299 9B16
+4ED0 4F1E 5098 7CC1 7CC2 9993 7CDD 7CE3 7CE4 7E56
+93D2 93FE 9730 994A
+4FD5 5E34 60B7 6563 9590
+58ED 6BF6 5381 6A75
+68EE 692E 69EE 8942
+6852 6851
+55D3 6421 78C9 892C 98A1 939F 9859
+4E27 55AA
+69E1
+50E7 448F 9B19
+82CF 7526 9165 7A23 7AA3 7A4C 6AEF 8607 8613 56CC
+4FD7
+738A 5919 6CDD 8083 6D2C 6D91 73DF 7D20 5BBF 6880
+6B90 7C9B 83A4 901F 9A95 5083 7C9F 8C21 55C9 5850
+5851 5ACA 612B 6EAF 6EB8 8085 9E54 50F3 3504 612C
+69A1 8186 89EB 8D9A 9061 619F 6A0E 6A15 6F5A 6F65
+24882 78BF 850C 906C 92C9 9917 3B18 6A5A 749B 7E24
+7C0C 8B16 8E5C 85D7 9A4C 9C50 9DEB
+8BC9 8A34 9BC2
+5506 36D6 5A11 686B 68AD 838F 509E 7743 55CD 7FA7
+644D 7F29 84D1 8D96 7C11 450B 7C14 7E2E 9AFF 9BBB
+6240 4E7A 3ABD 5522 7D22 7410 60E2 9501 55E9 22C62
+6E91 669B 7463 7485 8928 459B 9388 938D 9396 93BB
+93C1
+9024 6EB9 8736
+7411 55E6
+590A 6535 8295 867D 5020 54F8 6D7D 772D 837D 837E
+6ED6 7762 7D8F 8470 71A3 6FC9 9796 96D6
+7EE5 968B 9040 968F 96A8 74CD
+81B8 4B49 7021 9AC4 9AD3
+4E97 5C81 7815 795F 8C07 57E3 5D57 21ED5 6B72 6B73
+716B 775F 788E 9042 7A42 8AB6 8CE5 5B18 6FBB 96A7
+6A85 6A96 71E7 74B2 7A57 7E40 9083 79AD 7A5F 7E50
+65DE 7E78 895A 8B62 9406 9429 97E2
+72FB 75E0 9178
+5334
+7958 7B07 7B6D 7B97 849C
+5B59 72F2 5B6B 836A 98E7 640E 733B 98F1 69C2 84C0
+8575 859E
+635F 7B0B 96BC 7B4D 640D 69AB 7BB0 7C28 93A8 9DBD
+5FEA 677E 6780 5A00 67D7 502F 51C7 5D27 5EBA 68A5
+6DDE 83D8 5D69 7879 8719 61BD 6FCD 290ED 6AA7 9376
+9B06
+6002 609A 8038 7AE6 50B1 612F 3A26 6964 5D77 616B
+8073 99F7
+8BBC 5B8B 8BF5 9001 9882 8A1F 980C 8AA6 9938
+67A9 93B9
+FDD0-311A
+5475 963F 9515
+55C4
+554A
+FDD0-311B
+5594 5662
+54E6
+7B7D
+FDD0-311C
+59B8 59BF 94B6 5A3F 5A40 5C59 75FE
+8BB9 542A 56EE 8FD7 4FC4 5A25 5CE8 5CE9 6D90 73F4
+83AA 8A1B 7692 774B 4109 920B 9507 9E45 86FE 8A90
+78C0 981F 989D 9B64 96B2 984D 9D5D 9D5E 8B4C 21145
+9C2A
+6799 7808 980B 5641 9A00
+5384 5C75 6239 6B7A 5443 5C8B 627C 9628 545D 82CA
+8F6D 9638 54A2 54B9 20C65 57A9 59F6 5CC9 7810 530E
+6076 7828 4465 8685 997F 5054 537E 580A 60AA 63A0
+7565 7846 8C14 8EDB 960F 35C1 582E 5D3F 60E1 6115
+6E42 4748 8C5F 8EF6 9102 922A 5EC5 6424 6439 3B99
+7427 816D 843C 8A7B 904C 904F 50EB 8741 9537 9E57
+981E 989A 9913 9B65 5669 855A 89A8 8AE4 95BC 9929
+8C96 9354 9CC4 6B5E 984E 7918 6AEE 9C10 9D9A 8B8D
+9F43 9469 9F76 9C77
+64DC 9D48
+FDD0-311E
+54C0 54CE 5509 57C3 5A2D 6328 6B38 55F3 6EBE 92B0
+953F 566F 9384
+5540 6371 7691 6EB0 560A 6571 6573 769A 764C 9A03
+6BD0 6639 5A3E 77EE 853C 8EB7 6FED 972D 85F9 9744
+4F0C 827E 3637 7231 7839 784B 35D2 55CC 5867 5AD2
+611B 788D 9698 53C6 66A7 7477 95A1 50FE 416C 5B21
+61D3 58D2 61DD 66D6 74A6 8586 9932 9D31 76A7 77B9
+453D 99A4 7919 8B6A 8B7A 9440 9749
+9C6B
+FDD0-311F
+8BF6 8A92
+FDD0-3120
+51F9 356D 67EA 688E 8EEA 720A
+6556 53AB 55F7 55F8 5D85 5ED2 6EF6 7353 7352 969E
+646E 23281 71AC 7488 851C 9068 78DD 7FF1 8071 87AF
+7FFA 8B37 8B38 9CCC 93D6 9C32 9DD4 9F07
+629D 62D7 82BA 8884 957A 5AAA 5ABC 8956
+362D 5C99 6277 5773 5787 5CB0 5961 5965 50B2 5967
+9A9C 371C 5AEF 6160 22CC6 58BA 5DB4 61CA 64D9 6FB3
+96A9 93CA 9A41
+7FF6
+FDD0-3121
+8BB4 6CA4 6B27 6BB4 74EF 9E25 5878 6F1A 6B50 6BC6
+71B0 9D0E 750C 210BF 8B33 6AD9 93C2 9DD7 4972
+8192 9F75
+20676 5418 5455 5076 8162 5614 3496 8026 8545 85D5
+6004 616A
+85F2
+FDD0-3122
+5B89 4F92 5CD6 6849 6C28 5EB5 4002 8C19 5A95 83F4
+75F7 8164 843B 844A 9E4C 8A9D 84ED 978C 978D 76E6
+8AF3 99A3 76EB 9D6A 97FD 9D95
+73B5 557D 96F8 5111
+57B5 4FFA 5535 57EF 94F5 63DE 968C 7F6F 92A8
+72B4 5CB8 6309 6D1D 6848 80FA 834C 8C7B 5813 5A69
+4141 667B 6697 930C 95C7 9B9F 4B97 9EEF
+FDD0-3123
+5940 6069 217EF 717E 84BD
+5CCE
+6441 4B53
+FDD0-3124
+80AE 9AAF
+536C 5C87 6602 663B 44A2 3B7F
+678A 76CE 91A0
+FDD0-3125
+97A5
+FDD0-3126
+513F 800C 5150 4F95 5152 5CCF 6D0F 9651 682D 80F9
+834B 5532 9E38 7CAB 804F 88BB 8F00 42E9 9C95 9AF5
+96AD 9B9E 9D2F 8F5C
+53BC 5C12 5C13 5C14 8033 6D31 8FE9 9975 682E 6BE6
+73E5 94D2 723E 990C 99EC 85BE 9087 8DB0
+4E8C 5F0D 5F10 4F74 5235 54A1 36C5 8D30 8CAE 8848
+8CB3 8A80 927A 6A32
+FDD0-3127
+4E00 4E4A 5F0C 4F0A 8863 533B 541A 58F1 4F9D 54BF
+20C96 36C4 3CD6 6D22 794E 2343F 6098 7317 94F1 58F9
+63D6 6B39 86DC 90FC 5ADB 6F2A 7995 7A26 92A5 5B04
+566B 5901 747F 9E65 7E44 4AD1 6AB9 6BC9 91AB 9EDF
+8B69 9DD6 9EF3
+4E41 4EEA 531C 572F 5937 519D 5B90 6C82 8BD2 8FC6
+4F87 6021 6CB6 72CB 9974 54A6 59E8 5CD3 5DF8 5F2C
+605E 62F8 67C2 73C6 886A 8D3B 8FE4 5BA7 6245 6818
+684B 3EBF 74F5 7719 80F0 8A11 8CA4 8FFB 75CD 79FB
+801B 8898 51D2 7FA0 8413 86E6 8A51 8A52 8CBD 5A90
+6686 6938 8A83 8DE0 9057 9809 9890 98F4 7591 5100
+71AA 7BB7 5DAC 5F5B 5F5C 8794 907A 9824 5BF2 5DB7
+7C03 984A 294E7 4C4C 5F5D 5F5E 8B3B 93D4 89FA 3C18
+8B89 9E03
+4E59 5DF2 4EE5 9487 4F41 20BCB 653A 77E3 8094 5EA1
+8223 82E1 82E2 8681 91D4 501A 6246 914F 506F 7B16
+9018 5D3A 65D1 6905 9CE6 926F 65D6 88FF 8E26 8F22
+657C 8798 49E7 6AA5 4B72 7912 8264 87FB 9857 8F59
+9F6E
+4E42 20086 4E49 4EBF 5F0B 5208 5FC6 808A 827A 8BAE
+4EA6 3439 4F07 5C79 5F02 4F3F 4F5A 52AE 5453 5744
+5F79 6291 6759 8034 8285 8BD1 9091 4F7E 546D 5479
+5CC4 6008 603F 6613 678D 6B25 3CD1 6CC6 7088 79C7
+7ECE 82C5 8BE3 9A7F 4FCB 5955 5E1F 5E20 5F08 223D7
+67BB 6D02 6D42 73B4 75AB 7FBF 263F8 8F76 3465 5508
+57BC 6092 6339 6359 6827 683A 6B2D 6D65 6D73 76CA
+8875 8C0A 52DA 57F6 57F8 60A5 639C 6BB9 7570 785B
+7F9B 7FCA 7FCC 88A3 8A32 8A33 8C59 8C5B 91F4 966D
+96BF 5E46 6561 6679 68ED 6B94 6E59 7132 2497F 433B
+86E1 8A4D 8DC7 8EFC 9038 9220 4E84 517F 3534 610F
+6EA2 7348 75EC 776A 7AE9 41FC 7F22 7FA9 8084 88D4
+88DB 8A63 9AAE 52E9 5AD5 5ED9 698F 7617 8189 8734
+977E 99C5 5104 3989 648E 69F8 6BC5 6F69 71A0 71A4
+761E 84FA 8ABC 9552 9E5D 9E62 9ED3 5293 3601 571B
+58BF 5B11 5B1F 5DA7 61B6 61CC 66C0 6BAA 3D69 6FBA
+71BC 71DA 7631 7796 7A53 7E0A 8257 87A0 5BF1 6581
+66CE 6A8D 6B5D 71E1 71F1 7FF3 7FFC 81C6 858F 8939
+8CF9 9BA8 7654 8D00 93B0 9571 7E76 7E79 85D9 85DD
+8C77 972C 9BE3 9D82 9D83 39A4 7037 8B6F 8B70 91B3
+91B7 9950 2113B 25725 8619 943F 9DC1 9DCA 56C8 61FF
+9A5B 9DE7 9DFE 8649 897C 9F78 8B9B
+5307 8864 8FB7 5B9C 7569 692C 841F 9D8D 7C4E
+4E2B 5727 538B 5416 5E98 62BC 6792 57AD 9E26 6860
+9E2D 57E1 5B72 690F 9D09 930F 9D28 58D3 9D76 941A
+7259 4F22 5391 5C88 5393 73A1 82BD 7B0C 869C 5810
+5D15 5D16 6DAF 731A 740A 7458 775A 8859 6F04 9F56
+2A632
+24D13 538A 5E8C 54D1 5516 555E 75D6 96C5 7602 279DD
+8565
+529C 5720 8F67 4E9A 897E 8BB6 4E9C 72BD 4E9E 8ECB
+8FD3 5A05 631C 7811 4FF9 6C29 5A6D 6397 8A1D 94D4
+63E0 6C2C 7330 8050 26716 5714 7A0F 7AAB 9F7E
+2E84 4E5B 5440
+54DF 5537 55B2
+503B 6396 668D 6930 564E 6F71 882E
+8036 6353 94D8 63F6 91FE 92E3 64E8 9381
+4E5F 5414 51B6 57DC 91CE 5622 6F1C 58C4
+4E1A 53F6 66F3 9875 66F5 591C 62B4 90BA 4EB1 67BC
+9801 6654 67BD 70E8 35A1 5558 6DB2 8C12 5828 6B97
+814B 696A 696D 8449 9113 998C 50F7 6B4B 58B7 420E
+9765 5DAA 5DAB 64DB 66C4 66C5 6FB2 71C1 2681C 8B01
+9134 9923 5688 64EB 66D7 76A3 77B1 9371 64EA 77B8
+790F 42A6 9391 9941 9D7A 7217 9437 9768 9A5C 9E08
+7237 4EAA 723A
+5E7A 592D 5406 5996 6796 6B80 7945 8A1E 5593 6946
+8170 847D 4301 4645 9D01 9080
+723B 5C27 5C2D 80B4 579A 59DA 5CE3 409A 8F7A 5004
+70D1 73E7 7A91 509C 582F 63FA 8C23 8EFA 347E 55C2
+5AB1 5FAD 612E 6416 6447 733A 3A31 669A 69A3 7464
+7476 9059 9065 929A 98D6 9906 5DA2 5DA4 7AAF 7AB0
+4504 991A 7E47 8B20 8B21 26FBE 9390 9CD0 4B19 98BB
+8628 908E 9864 9C29
+4EF8 5B8E 5C86 62AD 6773 72D5 54AC 67FC 82ED 7711
+7A85 7A88 8200 5060 5A79 5D3E 6E94 699A 84D4 9D22
+9F3C 95C4 9A15 9F69 9DD5
+7A7E 8981 94A5 25052 836F 7A94 888E 7B44 8A4F 846F
+718E 899E 977F 735F 9E5E 25AAF 85AC 66DC 71FF 825E
+77C5 85E5 8000 7E85 9DC2 8B91 9470
+4F18 5FE7 6538 5466 602E 6CD1 5E7D 60A0 900C 9E80
+6EFA 6182 512A 5698 7000 913E 6ACC 7E8B 8030
+5C22 5C24 7531 6C8B 72B9 3F55 233DE 6CB9 80AC 90AE
+6023 65BF 75A3 5CF3 6D5F 79DE 4343 94C0 5064 839C
+83B8 86B0 8A27 6E38 7336 9030 90F5 9C7F 6962 7337
+904A 923E 9C89 8F0F 99C0 8763 9B77 8555 8F36 9B8B
+6AFE
+6709 4E23 5363 9149 82C3 3DAD 7F91 5EAE 682F 7F90
+6884 8048 811C 83A0 94D5 6E75 870F 7989 92AA 4B00
+69F1 7256 9EDD 61EE
+2E80 53C8 53F3 5E7C 4F51 4F91 72D6 7CFF 54CA 56FF
+59F7 5BA5 5CDF 67DA 7270 8BF1 5500 7950 8FF6 4001
+86B4 4EB4 8C81 91C9 916D 8A98 9F2C
+53CB 5B67 848F 7257
+6079 5266 70DF 73DA 80ED 5063 5571 5D26 393F 6DCA
+6DF9 7109 7111 479B 9609 6E6E 7312 814C 83F8 7159
+787D 5AE3 6F39 4167 9122 9183 95B9 5B2E 61E8 7BF6
+61D5 81D9 9EEB
+8BA0 4E25 8A00 5CA9 5EF6 6616 6CBF 708E 82AB 598D
+59F8 7814 5A2E 76D0 5A2B 72FF 7402 784F 90D4 9586
+960E 5D52 5D53 6E7A 839A 5869 63C5 694C 41FE 8A7D
+789E 7B75 7D96 8712 8505 989C 8664 95BB 53B3 6A90
+984F 9854 58DB 7C37 56B4 5DCC 6AE9 9EEC 5DD7 58E7
+5B4D 5DD6 9E7D 7939 9EA3
+5935 6281 6C87 4E75 5156 5944 4FE8 5157 533D 5F07
+884D 5043 53A3 63A9 773C 9153 5D43 611D 624A 63DC
+3B7A 68EA 6E30 6E37 7430 8412 90FE 693C 7F68 9043
+9692 6F14 88FA 5D96 622D 8758 8917 565E 8EBD 9B47
+7E2F 6ABF 9A13 9EE1 53B4 2502C 9C0B 9DA0 9EE4 9F5E
+9F91 7517 9EED 513C 9869 9F34 5DD8 5DDA 9F39 66EE
+9B58 9F74 9EF6
+538C 95EB 599F 89C3 726A 54BD 59F2 5F65 5F66 781A
+5501 5BB4 664F 8273 898E 9A8C 5050 7114 8C1A 55AD
+5830 6565 70FB 7130 7131 786F 9681 96C1 50BF 693B
+6E8E 6EDF 8455 9CEB 53AD 5895 66A5 917D 5B0A 8C33
+290C0 990D 9D08 3DF3 3DFC 71C4 71D5 8AFA 8D5D 48AD
+9B33 66D5 9D33 9A10 56A5 5B3F 8276 8D0B 9140 4A04
+4CE1 3B2B 66E3 7213 91B6 9A34 9DC3 7054 8D17 89FE
+8B8C 91BC 995C 9A57 9DF0 8277 2A64A 704E 9A60 7067
+8B9E 8C53 91C5 8C54 7069
+8A01 6A2E 7196 8EC5 6B15
+56D9 56E0 9625 9634 4F8C 5794 59FB 39E2 6D07 97F3
+9A83 6836 6BB7 6C24 8335 51D0 5A63 4104 79F5 836B
+94DF 9670 5591 5819 6114 7B43 7D6A 88C0 967B 9682
+6B45 6EB5 6147 647F 7616 798B 92A6 7DF8 852D 9787
+8AF2 9712 290EC 99F0 567E 95C9 9720 3D8F 97FE
+5198 4E51 3542 541F 72BE 65A6 82C2 57A0 6CFF 3597
+5701 5CFE 70CE 72FA 73E2 8A14 8A1A 5A6C 5BC5 5D1F
+5D2F 6DEB 8376 8A21 94F6 921D 9F82 6EDB 7892 5924
+911E 9280 5656 6BA5 748C 8529 8ABE 569A 6AAD 87EB
+4D26 972A 9F57 9DE3
+4E5A 200CA 5EF4 5C39 5F15 5432 996E 8693 8D7A 6DFE
+920F 9690 98F2 9777 98EE 6704 8F11 96A0 78E4 8D9B
+763E 5DBE 6A83 6FE5 6FE6 87BE 96B1 6AFD 861F 766E
+8B94
+5370 6D15 80E4 57BD 831A 5837 6E5A 730C 5ED5 8491
+9173 616D 6196 6197 764A 9BA3 3865 61DA 6ABC 4543
+7C8C
+592E 5489 59CE 62B0 6CF1 6B83 80E6 770F 79E7 9E2F
+9260 96F5 9785 9D26
+626C 7F8A 65F8 6768 7080 9626 9633 98CF 4F6F 52B7
+6C1C 75A1 9496 579F 5F89 661C 6D0B 7F8F 70CA 73DC
+26B75 773B 5D35 5D38 63DA 86D8 967D 656D 6698 694A
+716C 760D 7993 3B15 8AF9 8F30 935A 9D39 98BA 940A
+9C11 9737 9E09
+4EF0 4F52 5771 5C9F 517B 67CD 70B4 6C27 75D2 7D3B
+509F 8EEE 6143 6967 6C31 8746 990A 99DA 3526 61E9
+6501 4446 7662
+600F 6059 6837 7F95 8A47 69D8 6F3E 6A23 7001
+594D 7FAA 7922
+5E94 5FDC 82F1 685C 5040 5568 5A74 7EEC 83BA 20E04
+21398 5A96 6E36 48D0 5AC8 6720 7150 745B 5624 6484
+78A4 7F28 7F42 8CCF 9533 6A31 748E 7507 7DD3 8767
+7F43 892E 9348 9D2C 9E66 5B30 61C9 81BA 9719 97FA
+9E70 7516 9D91 56B6 5B46 5B7E 6516 7F4C 8B4D 9DA7
+6AFB 74D4 792F 8621 8B7B 9DAF 944D 7E93 8833 9DEA
+9DF9 9E0E 9E1A
+76C1 8FCE 76C8 8314 8367 55B6 83B9 86CD 2870F 6E81
+6E8B 8424 8426 50CC 584B 6979 6EE2 8425 843E 6F46
+7192 84E5 7469 4294 877F 5B34 7E08 87A2 6FD9 6FDA
+6FF4 71DF 89AE 8B0D 8D62 7005 85C0 93A3 650D 701B
+7020 2294F 702F 7034 8D0F 6AFF 7C5D 7C6F
+77E8 6D67 90E2 68AC 988D 9895 9896 646C 4B2C 5F71
+6F41 7484 763F 7A4E 9834 5DCA 5EEE 766D
+6620 786C 5AB5 668E 81A1 565F 9795 941B 9C66
+73F1 6125 8747 7E04 8805 651A 7050 705C 8EC8
+FDD0-3128
+4E4C 572C 5F19 6C59 6C5A 6C61 545C 5DEB 6747 90AC
+5C4B 6D3F 8BEC 94A8 70CF 526D 7A8F 55DA 9114 6B4D
+8AA3 7BBC 8790 9D2E 93A2 9C1E
+65E0 6BCB 5433 5434 543E 5449 829C 5514 5A2A 6D16
+6D6F 90DA 68A7 73F8 8323 8381 7121 7966 94FB 9E40
+8708 8A88 7991 7491 856A 87F1 9BC3 9D50 8B55 9F2F
+9DE1
+4E94 5348 4EF5 59A9 5E91 5FE4 6003 65FF 3B33 6B66
+739D 4FAE 4FC9 5035 6342 554E 5A2C 727E 73F7 6440
+7894 9E49 7193 7466 821E 5AF5 5EE1 61AE 6F55 511B
+6A46 7512 9D61 8E8C
+5140 52FF 3433 620A 4F06 5C7C 6264 9622 575E 5C89
+674C 5FE2 7269 77F9 82B4 8FD5 537C 6544 8BEF 609E
+609F 60AE 7C85 6664 7110 901C 5A7A 5D4D 75E6 9770
+9A9B 5862 5966 5D68 6EA9 9696 96FA 96FE 5BE4 7183
+8AA4 9E5C 92C8 7AB9 907B 4A01 971A 9F3F 9727 9A16
+9F40 8601 9DA9
+4E44 52A1 4F0D 52D9 933B
+7A75 52B8 6316 6D3C 5A32 7556 7A8A 5AA7 86D9 55D7
+6432 6E9B 6F25 7AAA 9F03 6528
+5A03
+74E6 4F64 5493 39DA 90B7
+8049 889C 55E2 817D 8183 896A 97C8 97E4
+5C72 54C7 74F2
+631D 502D 6DA1 5529 6DB9 83B4 6E26 7327 7A9D 8435
+8717 7AA9 8778 8E12 64BE
+6211 5A50 6370 4C00
+4EF4 6C83 809F 5367 6782 81E5 5053 637E 6DB4 5A89
+5E44 63E1 6E25 7125 786A 6943 815B 65A1 7783 20FDF
+64ED 6FE3 9F8C 74C1 81D2 96D8 9F77
+6B6A 558E 7AF5
+5D34
+5916 20C3B 591E 9861
+5371 5A01 20CFF 70D3 504E 55B4 364E 5A99 6104 63CB
+63FB 6E28 840E 9036 9687 9688 5FAE 6933 6972 6EA6
+7168 8468 8473 8A74 8732 875B 89A3 71F0 8587 9CC2
+9C03 9C04 5DCD
+56D7 97E6 5729 56F4 5E0F 6CA9 95F1 8FDD 5CD7 5CDE
+6D08 97CB 6845 6DA0 552F 5E37 60DF 7859 7EF4 55A1
+570D 5A81 5E43 6E4B 6E88 741F 912C 5D6C 9055 6F4D
+7DAD 6F59 6F7F 78D1 84F6 9180 6FF0 934F 95C8 9BA0
+7653 4260 89B9 973A 6B08 72A9
+5383 4F1F 4F2A 5C3E 7EAC 59D4 3B4F 709C 73AE 829B
+82C7 6D27 5A13 5C57 6D58 8BFF 5049 507D 5D23 68B6
+75CF 784A 8371 5BEA 5D54 5FAB 6107 7325 9AA9 6690
+6932 7152 744B 75FF 41FB 8172 8249 8466 848D 97EA
+9AAA 9AAB 50DE 9C94 5130 64B1 78C8 25BE4 7DEF 8AC9
+8E13 97D1 9820 3B19 853F 285E8 9361 9BAA 6FFB 85B3
+97D9 98B9 58DD 7022 8624 97E1 6596
+536B 4E3A 672A 4F4D 5473 70BA 754F 80C3 82FF 53DE
+8ECE 5C09 8C13 5582 5AA6 6E2D 3DC9 7232 83CB 715F
+78A8 873C 6170 71AD 729A 7DED 851A 885B 61C0 748F
+7F7B 885E 8B02 9927 9B87 87B1 893D 9935 8F4A 9B4F
+85EF 93CF 9728 9CDA 9956 8636 8B86 8E97 4C81 8B8F
+8E9B
+6364 7140 732C 589B 7E05 875F 5DB6
+5F2F 525C 5A60 5E35 5846 6E7E 873F 6F6B 8C4C 5F4E
+58EA 7063
+4E38 5213 6C4D 7EA8 5B8C 5C8F 628F 8284 73A9 7D08
+6356 987D 70F7 7413 9811 4BC8 7FEB
+5B9B 5007 550D 633D 76CC 57E6 5A49 60CB 665A 6669
+689A 7EFE 8118 667C 6900 742C 7696 83C0 8416 7579
+7755 7897 7DA9 7DB0 8F13 8E20 92C4 92D4 4A4A 3736
+4E07 534D 5350 59A7 5FE8 6365 8115 8CA6 8155 842C
+8F10 6FAB 933D 858D 87C3 8D03 93AB 4951 8D0E
+909C 6764 7B02
+6637 6E29 586D 3B08 6985 6EAB 8F92 6B9F 7465 761F
+8570 8F3C 8C71 8F40 9CC1 97B0 29948 9C1B 9C2E
+5301 6587 5F63 7EB9 7086 739F 82A0 95FB 7D0B 8689
+868A 73F3 960C 741D 96EF 7612 805E 99BC 9B70 9CFC
+9D0D 87A1 95BA 95BF 87C1 95C5 9F24 95E6
+520E 543B 5FDF 6286 5461 80B3 7D0A 687D 8117 7A33
+7A4F 7A69
+95EE 598F 6C76 554F 6E02 83AC 63FE 6435 9850 74BA
+545A 922B 93BE
+21BC1 5C23 5C29 5C2A 5C2B 6C6A
+4EA1 4EBE 5166 738B 4EFC 5F7A 869F 83A3
+34C1 7F52 7F51 5F80 5F83 7F54 5F8D 60D8 6680 68E2
+83F5 86E7 8F8B 7DB2 8744 8AB7 8F1E 7007 9B4D
+5984 5FD8 65FA 76F3 8FCB 671B 6722 4911
+6789 7139
+7FC1 55E1 6EC3 9E5F 8789 9393 9DB2
+3622 52DC 5963 5855 5D61 66A1 4425 84CA 7788 806C
+3732
+74EE 8579 7515 7F4B 9F46
+FDD0-3129
+625C 7EA1 8FC2 8FC3 7A7B 7D06 8676 9653 5539 6DE4
+76D3 6BFA 7600 7B8A
+4E90 4E8E 4F03 36A5 3B30 9098 4F59 59A4 6275 6745
+6B24 7397 7399 65BC 76C2 81FE 9C7C 4E7B 4FDE 516A
+79BA 7AFD 4342 8867 5A1B 5A2F 5A31 6859 72F3 8201
+8330 8C00 9151 9980 6E14 96E9 9B5A 5823 582C 5D33
+5D4E 5D5B 3965 6109 63C4 6970 6E1D 6E61 756D 7862
+8174 8438 9685 611A 65D5 3B02 6961 6986 6B48 724F
+745C 8245 842E 865E 89CE 903E 9AAC 6F01 776E 7AAC
+6B76 7FAD 4433 8753 8915 8ADB 96D3 9918 4C3B 6F9E
+8206 854D 89A6 8E30 5B29 87B8 8F3F 935D 28A36 6B5F
+74B5 8B23 9BBD 9A1F 9AC3 65DF 7C45 861B 9C05 4CA3
+9DE0 9E06
+4E0E 4E88 4F1B 5B87 5C7F 7FBD 2ED7 96E8 4FC1 4FE3
+79B9 8BED 5704 5CFF 504A 3531 532C 5709 5EBE 6554
+7964 3762 659E 9105 50B4 5BD9 6940 7440 7610 842D
+38C3 8207 8A9E 7AB3 92D9 9828 9F89 5673 8C90 5DBC
+61D9 399B 6594 9E8C 860C 9F6C
+8080 7389 9A6D 572B 807F 59AA 5FEC 828B 828C 996B
+80B2 3922 6631 72F1 79D7 90C1 4FFC 5CEA 5F67 6D74
+7821 831F 94B0 9884 57DF 5809 5FA1 6086 60D0 6B32
+6DE2 6DEF 8C15 9608 5585 5590 55A9 55BB 5A80 5BD3
+5EBD 68DB 68DC 68EB 7134 7419 77DE 7872 26C40 9033
+98EB 99AD 9E46 6108 6BD3 6EEA 715C 3F63 7A22 7F6D
+8248 88D5 8A89 9047 923A 9810 5AD7 5D8E 622B 7344
+7609 4205 42ED 7DCE 84AE 84E3 871F 872E 463B 8F0D
+9289 564A 617E 6F4F 7A36 84F9 92CA 9CFF 224B0 6FA6
+71CF 79A6 8AED 8C6B 9079 9325 95BE 9D25 9D2A 5125
+2148A 71E0 7BFD 8577 8581 9E6C 7652 7907 7916 7E58
+27450 91A7 9B4A 9D52 791C 7A65 9947 6AF2 9731 8B7D
+8F5D 942D 6B0E 9A48 9B3B 7C5E 9C4A 9DF8 6B1D 9E12
+9FA5 8EC9 9B30 9B31 706A 7C72 7229
+6327 8362 6F9A 9BF2
+66F0 66F1 7EA6 7D04 7BB9 5F5F 77F1 5F60
+2E9D 6708 6209 5216 599C 5C84 6288 216DF 5CB3 73A5
+793F 6071 4195 6085 60A6 868E 868F 8ECF 94BA 9605
+6373 8DC0 8DC3 4847 7CA4 8D8A 9205 7CB5 925E 4926
+95B1 95B2 6A3E 7BD7 5B33 5DBD 294E5 9FA0 3730 3B26
+7039 7C46 9EE6 721A 8625 8E8D 79B4 7C65 9E11 7C70
+9E19
+56E6 9E22 5248 51A4 6081 7722 9E33 5BC3 6DF5 6E01
+6E06 6E0A 6E15 60CC 68E9 3F93 847E 870E 9E53 7BA2
+84AC 8735 88F7 9CF6 485D 99CC 9D1B 5B3D 4949 9D77
+7041 9F18 9F1D
+5143 5186 8D20 5458 56ED 6C85 90A7 676C 57A3 7230
+8C9F 539F 54E1 5706 7B0E 8696 8881 53A1 570E 63F4
+6E72 7328 7F18 8312 9F0B 5712 5713 586C 5AB4 5AC4
+6E90 6E92 733F 7342 699E 69AC 849D 8F95 7DE3 7E01
+875D 876F 9B6D 4CAE 6A7C 7FB1 8788 8597 8B1C 8F45
+9EFF 93B1 6ADE 908D 9A35 9DA2 9DB0 53B5
+8FDC 76F6 903A 9060 92FA
+5917 8099 59B4 3B47 6028 82D1 57B8 884F 9662 5086
+5A9B 63BE 7457 613F 7990 88EB 8911 566E 8924 9858
+915B 9228
+6655 7F0A 6688 7174 8480 596B 6C32 6C33 8495 7E15
+8779 8D5F 9835 8D07 99A7
+4E91 52FB 5300 56E9 5998 6C84 7EAD 6600 82B8 7547
+7703 79D0 6DA2 7D1C 8018 803A 90E7 96F2 612A 6EB3
+7B60 7B7C 9116 69B2 7189 84B7 6F90 92C6 6A52 7BD4
+7E1C 8553 9942
+5141 593D 628E 72C1 962D 9668 6B92 837A 5597 491E
+9217 9695 6B9E 99BB 78D2 891E 8CF1 9723 9F73
+5B55 679F 8FD0 607D 90D3 915D 508A 60F2 6120 9106
+614D 816A 904B 97EB 97F5 7185 71A8 7DF7 7DFC 4CB0
+8574 9196 8580 919E 992B 97D7 85F4 97DE 97FB 860A
+62A3 7E67
+4F63 62E5 75C8 9095 5EB8 50AD 55C8 96CD 5889 5ADE
+6175 6EFD 9118 69E6 5670 58C5 64C1 6FAD 90FA 955B
+81C3 7655 96DD 93DE 9CD9 5EF1 7049 9954 9C45 9DDB
+7670
+5581 63D8 7245 9899 9852 9C2B
+6C38 752C 548F 6CF3 4FD1 52C7 52C8 6810 57C7 6080
+67E1 6D8C 607F 3D04 509B 60E5 6111 6E67 7867 8A60
+584E 5D71 5F6E 6139 86F9 6142 8E0A 799C 9CAC 8E34
+9BD2
+7528 82DA 919F
+603A 783D
+__END__
+
+=head1 NAME
+
+Unicode::Collate::CJK::Zhuyin - weighting CJK Unified Ideographs
+for Unicode::Collate
+
+=head1 SYNOPSIS
+
+    use Unicode::Collate;
+    use Unicode::Collate::CJK::Zhuyin;
+
+    my $collator = Unicode::Collate->new(
+        overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin
+    );
+
+=head1 DESCRIPTION
+
+C<Unicode::Collate::CJK::Zhuyin> provides C<weightZhuyin()>,
+that is adequate for C<overrideCJK> of C<Unicode::Collate>
+and makes tailoring of CJK Unified Ideographs in the order
+of CLDR's zhuyin (bopomofo) ordering.
+
+=head1 CAVEAT
+
+The zhuyin ordering includes some characters that are not
+CJK Unified Ideographs and can't utilize C<weightZhuyin()>
+for collation. For them, use C<entry> instead.
+
+=head1 SEE ALSO
+
+=over 4
+
+=item CLDR - Unicode Common Locale Data Repository
+
+L<http://cldr.unicode.org/>
+
+=item Unicode Locale Data Markup Language (LDML) - UTS #35
+
+L<http://www.unicode.org/reports/tr35/>
+
+=item L<Unicode::Collate>
+
+=item L<Unicode::Collate::Locale>
+
+=back
+
+=cut

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/as.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/as.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/as.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0982      ; [.204B.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
+0981      ; [.204B.0020.0002.0981][.FFF2.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+0983      ; [.204B.0020.0002.0983][.FFF3.0000.0000.0000] # BENGALI SIGN VISARGA
+0994      ; [.204B.0020.0002.0994][.FFF0.0000.0000.0000] # BENGALI LETTER AU
+09A4 09CD 200D ; [.205A.0020.0002.09A4][.FFF1.0000.0000.0000] # <BENGALI LETTER TA, BENGALI SIGN VIRAMA, ZERO WIDTH JOINER>
+09A3      ; [.205A.0020.0002.09A3][.FFF0.0000.0000.0000] # BENGALI LETTER NNA
+0995 09CD 09B7 ; [.206D.0020.0002.0995][.FFF1.0000.0000.0000] # <BENGALI LETTER KA, BENGALI SIGN VIRAMA, BENGALI LETTER SSA>
+09B9      ; [.206D.0020.0002.09B9][.FFF0.0000.0000.0000] # BENGALI LETTER HA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/be.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/be.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/be.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
++{
+   locale_version => 0.93,
+   suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+		0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
+		0x04E8, 0x04E9, 0x041A, 0x043A, 0x0427, 0x0447, 0x042B, 0x044B,
+		0x042D, 0x044D, 0x0474, 0x0475],
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0451      ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0435 0308 ; [.19DA.0020.0002.0451] # CYRILLIC SMALL LETTER IO
+0401      ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+0415 0308 ; [.19DA.0020.0008.0401] # CYRILLIC CAPITAL LETTER IO
+04D1      ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0      ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3      ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2      ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB      ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA      ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453      ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403      ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7      ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6      ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD      ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC      ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF      ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE      ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457      ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407      ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7      ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6      ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB      ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA      ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C      ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C      ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+04F5      ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4      ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9      ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8      ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED      ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC      ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477      ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476      ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bg.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bg.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bg.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
++{
+   locale_version => 0.93,
+   suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+		0x0416, 0x0436, 0x0417, 0x0437, 0x0406, 0x0456, 0x041E, 0x043E,
+		0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447,
+		0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
+   entry => <<'ENTRY', # for DUCET v6.2.0
+04D1      ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0      ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3      ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2      ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB      ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA      ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453      ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403      ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7      ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6      ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD      ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC      ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF      ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE      ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+0457      ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407      ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+04E7      ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6      ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB      ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA      ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C      ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C      ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E      ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E      ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1      ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0      ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3      ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2      ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5      ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4      ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9      ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8      ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED      ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC      ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477      ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476      ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bn.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bn.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/bn.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0982      ; [.204B.0020.0002.0982][.FFF1.0000.0000.0000] # BENGALI SIGN ANUSVARA
+0983      ; [.204B.0020.0002.0983][.FFF2.0000.0000.0000] # BENGALI SIGN VISARGA
+0981      ; [.204B.0020.0002.0981][.FFF3.0000.0000.0000] # BENGALI SIGN CANDRABINDU
+0994      ; [.204B.0020.0002.0994][.FFF0.0000.0000.0000] # BENGALI LETTER AU
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ee.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ee.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ee.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
++{
+   locale_version => 0.95,
+# d-tail, open-e, f-hook, gamma, eng, open-o, v-hook don't require tailoring
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0302      ; [.0000.0042.0002.0302] # COMBINING CIRCUMFLEX ACCENT
+00E2      ; [.15EF.0020.0002.0061][.0000.0042.0002.0302] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2      ; [.15EF.0020.0008.0041][.0000.0042.0002.0302] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+00EA      ; [.164C.0020.0002.0065][.0000.0042.0002.0302] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA      ; [.164C.0020.0008.0045][.0000.0042.0002.0302] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+00EE      ; [.16CD.0020.0002.0069][.0000.0042.0002.0302] # LATIN SMALL LETTER I WITH CIRCUMFLEX
+00CE      ; [.16CD.0020.0008.0049][.0000.0042.0002.0302] # LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+00F4      ; [.1771.0020.0002.006F][.0000.0042.0002.0302] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4      ; [.1771.0020.0008.004F][.0000.0042.0002.0302] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+00FB      ; [.1836.0020.0002.0075][.0000.0042.0002.0302] # LATIN SMALL LETTER U WITH CIRCUMFLEX
+00DB      ; [.1836.0020.0008.0055][.0000.0042.0002.0302] # LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+0177      ; [.1880.0020.0002.0079][.0000.0042.0002.0302] # LATIN SMALL LETTER Y WITH CIRCUMFLEX
+0176      ; [.1880.0020.0008.0059][.0000.0042.0002.0302] # LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+0064 007A ; [.1632.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER Z>
+0044 007A ; [.1632.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER Z>
+0044 005A ; [.1632.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER Z>
+0067 0062 ; [.1692.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER B>
+0047 0062 ; [.1692.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER B>
+0047 0042 ; [.1692.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER B>
+0078      ; [.16B5.0020.0002.0078] # LATIN SMALL LETTER X
+0058      ; [.16B5.0020.0008.0058] # LATIN CAPITAL LETTER X
+006B 0070 ; [.1700.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER P>
+004B 0070 ; [.1700.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER P>
+004B 0050 ; [.1700.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER P>
+006E 0079 ; [.1750.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.1750.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.1750.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0074 0073 ; [.1817.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER S>
+0054 0073 ; [.1817.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER S>
+0054 0053 ; [.1817.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER S>
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fa.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fa.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fa.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,51 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0650      ; [.0000.00AE.0002.0650] # ARABIC KASRA
+064B      ; [.0000.00B3.0002.064B] # ARABIC FATHATAN
+064D      ; [.0000.00B4.0002.064D] # ARABIC KASRATAN
+064C      ; [.0000.00B5.0002.064C] # ARABIC DAMMATAN
+0622      ; [.1C9B.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C9B.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+08AC      ; [.1C9B.0020.0002.08AC][.FFF0.0000.0000.0000] # ARABIC LETTER ROHINGYA YEH
+0671      ; [.1C9C.0021.0002.0671] # ARABIC LETTER ALEF WASLA
+0621      ; [.1C9D.0020.0002.0621][.FFF0.0000.0000.0000] # ARABIC LETTER HAMZA
+0623      ; [.1C9D.0021.0002.0623][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C9D.0021.0002.0623][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0672      ; [.1C9D.0022.0002.0672][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0625      ; [.1C9D.0023.0002.0625][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0627 0655 ; [.1C9D.0023.0002.0625][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0673      ; [.1C9D.0024.0002.0673][.FFF0.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0624      ; [.1C9D.0025.0002.0624][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C9D.0025.0002.0624][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+06CC 0654 ; [.1C9D.0026.0002.06CC][.FFF0.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC HAMZA ABOVE>
+0649 0654 ; [.1C9D.0026.0003.0649][.FFF0.0000.0000.0000] # <ARABIC LETTER ALEF MAKSURA, ARABIC HAMZA ABOVE>
+0626      ; [.1C9D.0026.0004.0626][.FFF0.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C9D.0026.0004.0626][.FFF0.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+066E      ; [.1C9D.0020.0002.066E][.FFF1.0000.0000.0000] # ARABIC LETTER DOTLESS BEH
+06AA      ; [.1D0E.0021.0002.06AA] # ARABIC LETTER SWASH KAF
+06AB      ; [.1D0E.0022.0002.06AB] # ARABIC LETTER KAF WITH RING
+0643      ; [.1D0E.0023.0002.0643] # ARABIC LETTER KAF
+06AC      ; [.1D0E.0024.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
+06AD      ; [.1D0E.0025.0002.06AD] # ARABIC LETTER NG
+06AE      ; [.1D0E.0026.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
+0647      ; [.1D43.0020.0002.0647][.FFF1.0000.0000.0000] # ARABIC LETTER HEH
+06D5      ; [.1D43.0021.0002.06D5][.FFF1.0000.0000.0000] # ARABIC LETTER AE
+06C1      ; [.1D43.0022.0002.06C1][.FFF1.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2      ; [.1D43.0022.0002.06C1][.FFF1.0000.0000.0000][.0000.00BE.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+0629      ; [.1D43.0023.0002.0629][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA
+06C3      ; [.1D43.0024.0002.06C3][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+06C0      ; [.1D43.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06D5 0654 ; [.1D43.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06BE      ; [.1D43.0026.0002.06BE][.FFF1.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+06CF      ; [.1D43.0020.0002.06CF][.FFF0.0000.0000.0000] # ARABIC LETTER WAW WITH DOT ABOVE
+0649      ; [.1D49.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
+06D2      ; [.1D49.0022.0002.06D2] # ARABIC LETTER YEH BARREE
+06D3      ; [.1D49.0022.0002.06D2][.0000.00BE.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+064A      ; [.1D49.0023.0002.064A] # ARABIC LETTER YEH
+06D0      ; [.1D49.0024.0002.06D0] # ARABIC LETTER E
+06D1      ; [.1D49.0025.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
+06CD      ; [.1D49.0026.0002.06CD] # ARABIC LETTER YEH WITH TAIL
+06CE      ; [.1D49.0027.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/fi_phone.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,62 @@
++{
+   locale_version => 0.93,
+# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0111      ; [.1631.0021.0002.0111][.0000.007D.0002.0335] # LATIN SMALL LETTER D WITH STROKE
+0110      ; [.1631.0021.0008.0110][.0000.007D.0002.0335] # LATIN CAPITAL LETTER D WITH STROKE
+01E5      ; [.1691.0021.0002.01E5][.0000.007D.0002.0335] # LATIN SMALL LETTER G WITH STROKE
+01E4      ; [.1691.0021.0008.01E4][.0000.007D.0002.0335] # LATIN CAPITAL LETTER G WITH STROKE
+014B      ; [.174F.0021.0002.014B][.0000.007D.0002.0335] # LATIN SMALL LETTER ENG
+014A      ; [.174F.0021.0008.014A][.0000.007D.0002.0335] # LATIN CAPITAL LETTER ENG
+0167      ; [.1816.0021.0002.0167][.0000.007D.0002.0335] # LATIN SMALL LETTER T WITH STROKE
+0166      ; [.1816.0021.0008.0166][.0000.007D.0002.0335] # LATIN CAPITAL LETTER T WITH STROKE
+00FC      ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC      ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC      ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB      ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8      ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7      ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6      ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5      ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA      ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9      ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0292      ; [.1895.0021.0002.0292][.0000.007D.0002.0335] # LATIN SMALL LETTER EZH
+01B7      ; [.1895.0021.0008.01B7][.0000.007D.0002.0335] # LATIN CAPITAL LETTER EZH
+01EF      ; [.1895.0021.0002.0292][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN SMALL LETTER EZH WITH CARON
+01EE      ; [.1895.0021.0008.01B7][.0000.007D.0002.0335][.0000.0041.0002.030C] # LATIN CAPITAL LETTER EZH WITH CARON
+00E5      ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5      ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B      ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB      ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA      ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4      ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4      ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF      ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE      ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6      ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6      ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D      ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD      ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC      ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3      ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2      ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00F6      ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6      ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B      ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A      ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8      ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8      ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF      ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE      ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/gu.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/gu.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/gu.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0A82      ; [.20B7.0020.0002.0A82][.FFF1.0000.0000.0000] # GUJARATI SIGN ANUSVARA
+0A81      ; [.20B7.0021.0002.0A81][.FFF1.0000.0000.0A81] # GUJARATI SIGN CANDRABINDU
+0A83      ; [.20B7.0020.0002.0A83][.FFF2.0000.0000.0000] # GUJARATI SIGN VISARGA
+0AD0      ; [.20B7.0020.0002.0AD0][.FFF0.0000.0000.0000] # GUJARATI OM
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/hi.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/hi.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/hi.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0902      ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901      ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903      ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950      ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kn.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kn.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kn.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0C82      ; [.21C7.0020.0002.0C82][.FFF1.0000.0000.0000] # KANNADA SIGN ANUSVARA
+0C83      ; [.21C7.0020.0002.0C83][.FFF2.0000.0000.0000] # KANNADA SIGN VISARGA
+0CF1      ; [.21C7.0020.0002.0CF1][.FFF3.0000.0000.0000] # KANNADA SIGN JIHVAMULIYA
+0CF2      ; [.21C7.0020.0002.0CF2][.FFF4.0000.0000.0000] # KANNADA SIGN UPADHMANIYA
+0C94      ; [.21C7.0020.0002.0C94][.FFF0.0000.0000.0000] # KANNADA LETTER AU
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kok.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kok.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/kok.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0902      ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901      ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903      ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950      ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+0939      ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ln.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ln.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ln.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
++{
+   locale_version => 0.93,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+025B      ; [.164D.0020.0002.025B] # LATIN SMALL LETTER OPEN E
+0190      ; [.164D.0020.0008.0190] # LATIN CAPITAL LETTER OPEN E
+2107      ; [.164D.0020.000A.2107] # EULER CONSTANT
+1D4B      ; [.164D.0020.0014.1D4B] # MODIFIER LETTER SMALL OPEN E
+0254      ; [.1771.0021.0002.0254] # LATIN SMALL LETTER OPEN O
+0186      ; [.1771.0021.0008.0186] # LATIN CAPITAL LETTER OPEN O
+1D53      ; [.1771.0021.0014.1D53] # MODIFIER LETTER SMALL OPEN O
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mk.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mk.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mk.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
++{
+   locale_version => 0.93,
+   suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0415, 0x0435, 0x0416, 0x0436,
+		0x0417, 0x0437, 0x0418, 0x0438, 0x0406, 0x0456, 0x041E, 0x043E,
+		0x04E8, 0x04E9, 0x0423, 0x0443, 0x0427, 0x0447, 0x042B, 0x044B,
+		0x042D, 0x044D, 0x0474, 0x0475],
+   entry => <<'ENTRY', # for DUCET v6.2.0
+04D1      ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0      ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3      ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2      ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB      ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA      ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+04D7      ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6      ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD      ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC      ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF      ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE      ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5      ; [.1A0A.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4      ; [.1A0A.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457      ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407      ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439      ; [.1A0A.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419      ; [.1A0A.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7      ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6      ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB      ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA      ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045E      ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E      ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1      ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0      ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3      ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2      ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5      ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4      ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9      ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8      ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED      ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC      ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477      ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476      ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ml.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ml.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ml.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
++{
+   locale_version => 0.93,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0D3D      ; [.0000.00F5.0002.0D3D] # MALAYALAM SIGN AVAGRAHA
+0D57      ; [.2246.0020.0002.0D57] # MALAYALAM AU LENGTH MARK
+0D4C      ; [.2246.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
+0D46 0D57 ; [.2246.0020.0003.0D4C] # MALAYALAM VOWEL SIGN AU
+0D15 0D4D 200D ; [.2211.0020.0002.0D15][.2248.0021.0002.0D15] # <MALAYALAM LETTER KA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7F      ; [.2211.0020.0003.0D7F][.2248.0021.0002.0D7F] # MALAYALAM LETTER CHILLU K
+0D23 0D4D 200D ; [.221F.0020.0002.0D23][.2248.0021.0002.0D23] # <MALAYALAM LETTER NNA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7A      ; [.221F.0020.0003.0D7A][.2248.0021.0002.0D7A] # MALAYALAM LETTER CHILLU NN
+0D28 0D4D 200D ; [.2224.0020.0002.0D28][.2248.0021.0002.0D28] # <MALAYALAM LETTER NA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7B      ; [.2224.0020.0003.0D7B][.2248.0021.0002.0D7B] # MALAYALAM LETTER CHILLU N
+0D30 0D4D 200D ; [.222C.0020.0002.0D30][.2248.0021.0002.0D30] # <MALAYALAM LETTER RA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7C      ; [.222C.0020.0003.0D7C][.2248.0021.0002.0D7C] # MALAYALAM LETTER CHILLU RR
+0D32 0D4D 200D ; [.222D.0020.0002.0D32][.2248.0021.0002.0D32] # <MALAYALAM LETTER LA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7D      ; [.222D.0020.0003.0D7D][.2248.0021.0002.0D7D] # MALAYALAM LETTER CHILLU L
+0D33 0D4D 200D ; [.2233.0020.0002.0D33][.2248.0021.0002.0D33] # <MALAYALAM LETTER LLA, MALAYALAM SIGN VIRAMA, ZERO WIDTH JOINER>
+0D7E      ; [.2233.0020.0003.0D7E][.2248.0021.0002.0D7E] # MALAYALAM LETTER CHILLU LL
+0D02      ; [.222A.0020.0002.0D2E][.2248.0021.0002.0D02] # MALAYALAM SIGN ANUSVARA
+0D7B 0D4D ; [.2224.0020.0002.0D28][.2248.0020.0003.0D7B] # <MALAYALAM LETTER CHILLU N, MALAYALAM SIGN VIRAMA>
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mr.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mr.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/mr.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0902      ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901      ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903      ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950      ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+091C 094D 091E ; [.201D.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+0939      ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/or.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/or.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/or.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0B01      ; [.2108.0020.0002.0B01][.FFF1.0000.0000.0000] # ORIYA SIGN CANDRABINDU
+0B02      ; [.2108.0020.0002.0B02][.FFF2.0000.0000.0000] # ORIYA SIGN ANUSVARA
+0B03      ; [.2108.0020.0002.0B03][.FFF3.0000.0000.0000] # ORIYA SIGN VISARGA
+0B14      ; [.2108.0020.0002.0B14][.FFF0.0000.0000.0000] # ORIYA LETTER AU
+0B15 0B4D 0B37 ; [.212C.0020.0002.0B15][.FFF1.0000.0000.0000] # <ORIYA LETTER KA, ORIYA SIGN VIRAMA, ORIYA LETTER SSA>
+0B39      ; [.212C.0020.0002.0B39][.FFF0.0000.0000.0000] # ORIYA LETTER HA
+0B5F      ; [.2122.0021.0002.0B5F] # ORIYA LETTER YYA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/pa.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/pa.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/pa.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
++{
+   locale_version => 0.93,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0A71      ; [.0000.00F2.0002.0A71] # GURMUKHI ADDAK
+0A03      ; [.0000.00F1.0002.0A03] # GURMUKHI SIGN VISARGA
+0A70      ; [.0000.00F3.0002.0A70] # GURMUKHI TIPPI
+0A02      ; [.0000.00F4.0002.0A02] # GURMUKHI SIGN BINDI
+0A01      ; [.0000.00F5.0002.0A01] # GURMUKHI SIGN ADAK BINDI
+0A3C      ; [.0000.00F6.0002.0A3C] # GURMUKHI SIGN NUKTA
+0A33      ; [.20AA.0020.0002.0A32][.0000.00F6.0002.0A3C] # GURMUKHI LETTER LLA
+0A36      ; [.208B.0020.0002.0A38][.0000.00F6.0002.0A3C] # GURMUKHI LETTER SHA
+0A59      ; [.208F.0020.0002.0A16][.0000.00F6.0002.0A3C] # GURMUKHI LETTER KHHA
+0A5A      ; [.2090.0020.0002.0A17][.0000.00F6.0002.0A3C] # GURMUKHI LETTER GHHA
+0A5B      ; [.2095.0020.0002.0A1C][.0000.00F6.0002.0A3C] # GURMUKHI LETTER ZA
+0A5E      ; [.20A3.0020.0002.0A2B][.0000.00F6.0002.0A3C] # GURMUKHI LETTER FA
+0A4D      ; [.20AD.0020.0002.0A4D] # GURMUKHI SIGN VIRAMA
+0A3E      ; [.20AE.0020.0002.0A3E] # GURMUKHI VOWEL SIGN AA
+0A3F      ; [.20AF.0020.0002.0A3F] # GURMUKHI VOWEL SIGN I
+0A40      ; [.20B0.0020.0002.0A40] # GURMUKHI VOWEL SIGN II
+0A41      ; [.20B1.0020.0002.0A41] # GURMUKHI VOWEL SIGN U
+0A42      ; [.20B2.0020.0002.0A42] # GURMUKHI VOWEL SIGN UU
+0A47      ; [.20B3.0020.0002.0A47] # GURMUKHI VOWEL SIGN EE
+0A48      ; [.20B4.0020.0002.0A48] # GURMUKHI VOWEL SIGN AI
+0A4B      ; [.20B5.0020.0002.0A4B] # GURMUKHI VOWEL SIGN OO
+0A4C      ; [.20B6.0020.0002.0A4C] # GURMUKHI VOWEL SIGN AU
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sa.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sa.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sa.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0902      ; [.1FDC.0020.0002.0902][.FFF1.0000.0000.0000] # DEVANAGARI SIGN ANUSVARA
+0901      ; [.1FDC.0021.0002.0901][.FFF1.0000.0000.0901] # DEVANAGARI SIGN CANDRABINDU
+0903      ; [.1FDC.0020.0002.0903][.FFF2.0000.0000.0000] # DEVANAGARI SIGN VISARGA
+0950      ; [.1FDC.0020.0002.0950][.FFF0.0000.0000.0000] # DEVANAGARI OM
+0933      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000] # DEVANAGARI LETTER LLA
+0934      ; [.201D.0020.0002.0933][.FFF1.0000.0000.0000][.0000.00F1.0002.093C] # DEVANAGARI LETTER LLLA
+0915 094D 0937 ; [.201D.0020.0002.0915][.FFF2.0000.0000.0000] # <DEVANAGARI LETTER KA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER SSA>
+091C 094D 091E ; [.201D.0020.0002.091C][.FFF3.0000.0000.0000] # <DEVANAGARI LETTER JA, DEVANAGARI SIGN VIRAMA, DEVANAGARI LETTER NYA>
+0939      ; [.201D.0020.0002.0939][.FFF0.0000.0000.0000] # DEVANAGARI LETTER HA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0D82      ; [.225A.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83      ; [.225A.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0D96      ; [.225A.0020.0002.0D96][.FFF0.0000.0000.0000] # SINHALA LETTER AUYANNA
+0DA5      ; [.2265.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA4      ; [.2266.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si_dict.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/si_dict.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0D82      ; [.225A.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83      ; [.225A.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0D96      ; [.225A.0020.0002.0D96][.FFF0.0000.0000.0000] # SINHALA LETTER AUYANNA
+0DA5      ; [.2263.0020.0002.0DA2][.2295.0020.0002.0DCA][.2265.0021.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sr.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sr.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sr.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
++{
+   locale_version => 0.93,
+   suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+		0x0416, 0x0436, 0x0417, 0x0437, 0x0418, 0x0438, 0x0406, 0x0456,
+		0x041E, 0x043E, 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443,
+		0x0427, 0x0447, 0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
+   entry => <<'ENTRY', # for DUCET v6.2.0
+04D1      ; [.1991.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0      ; [.1991.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3      ; [.1991.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2      ; [.1991.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB      ; [.199D.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA      ; [.199D.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453      ; [.19B1.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403      ; [.19B1.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7      ; [.19D9.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6      ; [.19D9.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD      ; [.19E5.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC      ; [.19E5.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF      ; [.19F2.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE      ; [.19F2.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5      ; [.1A0A.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4      ; [.1A0A.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457      ; [.1A16.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407      ; [.1A16.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439      ; [.1A0A.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419      ; [.1A0A.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7      ; [.1A77.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6      ; [.1A77.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB      ; [.1A7F.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA      ; [.1A7F.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C      ; [.1A28.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C      ; [.1A28.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E      ; [.1AB9.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E      ; [.1AB9.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1      ; [.1AB9.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0      ; [.1AB9.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3      ; [.1AB9.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2      ; [.1AB9.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5      ; [.1B0C.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4      ; [.1B0C.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9      ; [.1B3F.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8      ; [.1B3F.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED      ; [.1B54.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC      ; [.1B54.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477      ; [.1B8A.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476      ; [.1B8A.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,85 @@
++{
+   locale_version => 0.93,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0111      ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1631.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110      ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1631.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0      ; [.1631.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0      ; [.1631.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE      ; [.1816.0020.0003.00FE][.16B4.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE      ; [.1816.0020.0009.00DE][.16B4.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC      ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1880.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC      ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1880.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC      ; [.1880.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB      ; [.1880.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8      ; [.1880.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7      ; [.1880.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6      ; [.1880.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5      ; [.1880.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA      ; [.1880.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9      ; [.1880.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171      ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1880.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170      ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1880.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E5      ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1906.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5      ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1906.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B      ; [.1906.0020.0008.00C5] # ANGSTROM SIGN
+01FB      ; [.1906.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA      ; [.1906.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4      ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1907.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4      ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1907.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF      ; [.1907.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE      ; [.1907.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6      ; [.1907.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6      ; [.1907.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D      ; [.1907.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD      ; [.1907.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC      ; [.1907.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3      ; [.1907.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2      ; [.1907.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+0119      ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.1907.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118      ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.1907.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F6      ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1908.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6      ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1908.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B      ; [.1908.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A      ; [.1908.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8      ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1908.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8      ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1908.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF      ; [.1908.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE      ; [.1908.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0151      ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.1908.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150      ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.1908.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153      ; [.1908.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152      ; [.1908.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00F4      ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.1908.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4      ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.1908.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.1908.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.1908.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.1908.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.1908.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.1908.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.1908.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.1908.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.1908.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.1908.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.1908.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ta.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ta.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ta.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,55 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0B82      ; [.214B.0020.0002.0B82][.FFF0.0000.0000.0000] # TAMIL SIGN ANUSVARA
+0B83      ; [.214B.0020.0002.0B83][.FFF1.0000.0000.0000] # TAMIL SIGN VISARGA
+0B95 0BCD 0BB7 0BCD ; [.2162.0020.0002.0B95][.FFF2.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0B95 0BCD 0BB7 ; [.2162.0020.0002.0B95][.FFF3.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA>
+0B95 0BCD ; [.214C.0020.0002.0B95][.FFF0.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA>
+0B95      ; [.214C.0020.0002.0B95][.FFF1.0000.0000.0000] # TAMIL LETTER KA
+0B99 0BCD ; [.214D.0020.0002.0B99][.FFF0.0000.0000.0000] # <TAMIL LETTER NGA, TAMIL SIGN VIRAMA>
+0B99      ; [.214D.0020.0002.0B99][.FFF1.0000.0000.0000] # TAMIL LETTER NGA
+0B9A 0BCD ; [.214E.0020.0002.0B9A][.FFF0.0000.0000.0000] # <TAMIL LETTER CA, TAMIL SIGN VIRAMA>
+0B9A      ; [.214E.0020.0002.0B9A][.FFF1.0000.0000.0000] # TAMIL LETTER CA
+0B9E 0BCD ; [.214F.0020.0002.0B9E][.FFF0.0000.0000.0000] # <TAMIL LETTER NYA, TAMIL SIGN VIRAMA>
+0B9E      ; [.214F.0020.0002.0B9E][.FFF1.0000.0000.0000] # TAMIL LETTER NYA
+0B9F 0BCD ; [.2150.0020.0002.0B9F][.FFF0.0000.0000.0000] # <TAMIL LETTER TTA, TAMIL SIGN VIRAMA>
+0B9F      ; [.2150.0020.0002.0B9F][.FFF1.0000.0000.0000] # TAMIL LETTER TTA
+0BA3 0BCD ; [.2151.0020.0002.0BA3][.FFF0.0000.0000.0000] # <TAMIL LETTER NNA, TAMIL SIGN VIRAMA>
+0BA3      ; [.2151.0020.0002.0BA3][.FFF1.0000.0000.0000] # TAMIL LETTER NNA
+0BA4 0BCD ; [.2152.0020.0002.0BA4][.FFF0.0000.0000.0000] # <TAMIL LETTER TA, TAMIL SIGN VIRAMA>
+0BA4      ; [.2152.0020.0002.0BA4][.FFF1.0000.0000.0000] # TAMIL LETTER TA
+0BA8 0BCD ; [.2153.0020.0002.0BA8][.FFF0.0000.0000.0000] # <TAMIL LETTER NA, TAMIL SIGN VIRAMA>
+0BA8      ; [.2153.0020.0002.0BA8][.FFF1.0000.0000.0000] # TAMIL LETTER NA
+0BAA 0BCD ; [.2154.0020.0002.0BAA][.FFF0.0000.0000.0000] # <TAMIL LETTER PA, TAMIL SIGN VIRAMA>
+0BAA      ; [.2154.0020.0002.0BAA][.FFF1.0000.0000.0000] # TAMIL LETTER PA
+0BAE 0BCD ; [.2155.0020.0002.0BAE][.FFF0.0000.0000.0000] # <TAMIL LETTER MA, TAMIL SIGN VIRAMA>
+0BAE      ; [.2155.0020.0002.0BAE][.FFF1.0000.0000.0000] # TAMIL LETTER MA
+0BAF 0BCD ; [.2156.0020.0002.0BAF][.FFF0.0000.0000.0000] # <TAMIL LETTER YA, TAMIL SIGN VIRAMA>
+0BAF      ; [.2156.0020.0002.0BAF][.FFF1.0000.0000.0000] # TAMIL LETTER YA
+0BB0 0BCD ; [.2157.0020.0002.0BB0][.FFF0.0000.0000.0000] # <TAMIL LETTER RA, TAMIL SIGN VIRAMA>
+0BB0      ; [.2157.0020.0002.0BB0][.FFF1.0000.0000.0000] # TAMIL LETTER RA
+0BB2 0BCD ; [.2158.0020.0002.0BB2][.FFF0.0000.0000.0000] # <TAMIL LETTER LA, TAMIL SIGN VIRAMA>
+0BB2      ; [.2158.0020.0002.0BB2][.FFF1.0000.0000.0000] # TAMIL LETTER LA
+0BB5 0BCD ; [.2159.0020.0002.0BB5][.FFF0.0000.0000.0000] # <TAMIL LETTER VA, TAMIL SIGN VIRAMA>
+0BB5      ; [.2159.0020.0002.0BB5][.FFF1.0000.0000.0000] # TAMIL LETTER VA
+0BB4 0BCD ; [.215A.0020.0002.0BB4][.FFF0.0000.0000.0000] # <TAMIL LETTER LLLA, TAMIL SIGN VIRAMA>
+0BB4      ; [.215A.0020.0002.0BB4][.FFF1.0000.0000.0000] # TAMIL LETTER LLLA
+0BB3 0BCD ; [.215B.0020.0002.0BB3][.FFF0.0000.0000.0000] # <TAMIL LETTER LLA, TAMIL SIGN VIRAMA>
+0BB3      ; [.215B.0020.0002.0BB3][.FFF1.0000.0000.0000] # TAMIL LETTER LLA
+0BB1 0BCD ; [.215C.0020.0002.0BB1][.FFF0.0000.0000.0000] # <TAMIL LETTER RRA, TAMIL SIGN VIRAMA>
+0BB1      ; [.215C.0020.0002.0BB1][.FFF1.0000.0000.0000] # TAMIL LETTER RRA
+0BA9 0BCD ; [.215D.0020.0002.0BA9][.FFF0.0000.0000.0000] # <TAMIL LETTER NNNA, TAMIL SIGN VIRAMA>
+0BA9      ; [.215D.0020.0002.0BA9][.FFF1.0000.0000.0000] # TAMIL LETTER NNNA
+0B9C 0BCD ; [.215E.0020.0002.0B9C][.FFF0.0000.0000.0000] # <TAMIL LETTER JA, TAMIL SIGN VIRAMA>
+0B9C      ; [.215E.0020.0002.0B9C][.FFF1.0000.0000.0000] # TAMIL LETTER JA
+0BB6 0BCD ; [.215F.0020.0002.0BB6][.FFF0.0000.0000.0000] # <TAMIL LETTER SHA, TAMIL SIGN VIRAMA>
+0BB6      ; [.215F.0020.0002.0BB6][.FFF1.0000.0000.0000] # TAMIL LETTER SHA
+0BB7 0BCD ; [.2160.0020.0002.0BB7][.FFF0.0000.0000.0000] # <TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0BB7      ; [.2160.0020.0002.0BB7][.FFF1.0000.0000.0000] # TAMIL LETTER SSA
+0BB8 0BCD ; [.2161.0020.0002.0BB8][.FFF0.0000.0000.0000] # <TAMIL LETTER SA, TAMIL SIGN VIRAMA>
+0BB8      ; [.2161.0020.0002.0BB8][.FFF1.0000.0000.0000] # TAMIL LETTER SA
+0BB9 0BCD ; [.2162.0020.0002.0BB9][.FFF0.0000.0000.0000] # <TAMIL LETTER HA, TAMIL SIGN VIRAMA>
+0BB9      ; [.2162.0020.0002.0BB9][.FFF1.0000.0000.0000] # TAMIL LETTER HA
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/te.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/te.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/te.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0C01      ; [.217F.0020.0002.0C01][.FFF1.0000.0000.0000] # TELUGU SIGN CANDRABINDU
+0C02      ; [.217F.0020.0002.0C02][.FFF2.0000.0000.0000] # TELUGU SIGN ANUSVARA
+0C03      ; [.217F.0020.0002.0C03][.FFF3.0000.0000.0000] # TELUGU SIGN VISARGA
+0C14      ; [.217F.0020.0002.0C14][.FFF0.0000.0000.0000] # TELUGU LETTER AU
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/th.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/th.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/th.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
++{
+   locale_version => 0.96,
+   variable => 'shifted',
+   alternate => 'shifted',
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0E2F      ; [*03BE.0020.0002.0E2F][*FFF0.0000.0000.0000] # THAI CHARACTER PAIYANNOI
+0E5A      ; [*03BE.0020.0002.0E5A][*FFF1.0000.0000.0000] # THAI CHARACTER ANGKHANKHU
+0E46      ; [*03BF.0020.0002.0E46][*FFF1.0000.0000.0000] # THAI CHARACTER MAIYAMOK
+0E5B      ; [*03BF.0020.0002.0E5B][*FFF0.0000.0000.0000] # THAI CHARACTER KHOMUT
+0E4C      ; [.0000.00FF.0002.0E4C] # THAI CHARACTER THANTHAKHAT
+0E47      ; [.0000.0100.0002.0E47] # THAI CHARACTER MAITAIKHU
+0E48      ; [.0000.0101.0002.0E48] # THAI CHARACTER MAI EK
+0E49      ; [.0000.0102.0002.0E49] # THAI CHARACTER MAI THO
+0E4A      ; [.0000.0103.0002.0E4A] # THAI CHARACTER MAI TRI
+0E4B      ; [.0000.0104.0002.0E4B] # THAI CHARACTER MAI CHATTAWA
+0E4D      ; [.24B6.0020.0002.0E4D] # THAI CHARACTER NIKHAHIT
+0E45      ; [.24B9.0020.0003.0E45] # THAI CHARACTER LAKKHANGYAO
+0E4D 0E32 ; [.24B9.0020.0002.0E32][.24B6.0020.0003.0E4D] # THAI CHARACTER SARA AM
+0E33      ; [.24B9.0020.0002.0E32][.24B6.0020.0004.0E33] # THAI CHARACTER SARA AM
+0E45 0E4D ; [.24B6.0020.0002.0E4D][.24B9.0020.0004.0E45] # <THAI CHARACTER LAKKHANGYAO, THAI CHARACTER NIKHAHIT>
+0E3A      ; [.24C7.0020.0002.0E3A] # THAI CHARACTER PHINTHU
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ur.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ur.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/ur.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,89 @@
++{
+   locale_version => 0.96,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0623      ; [.1C9C.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C9C.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0622      ; [.1C9D.0020.0002.0622][.FFC0.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C9D.0020.0002.0622][.FFC0.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0628      ; [.1C9D.0020.0002.0628][.FFC1.0000.0000.0000] # ARABIC LETTER BEH
+0628 06BE ; [.1C9D.0020.0002.0628][.FFC2.0000.0000.0000] # <ARABIC LETTER BEH, ARABIC LETTER HEH DOACHASHMEE>
+067E      ; [.1C9D.0020.0002.067E][.FFC3.0000.0000.0000] # ARABIC LETTER PEH
+067E 06BE ; [.1C9D.0020.0002.067E][.FFC4.0000.0000.0000] # <ARABIC LETTER PEH, ARABIC LETTER HEH DOACHASHMEE>
+062A      ; [.1C9D.0020.0002.062A][.FFC5.0000.0000.0000] # ARABIC LETTER TEH
+062A 06BE ; [.1C9D.0020.0002.062A][.FFC6.0000.0000.0000] # <ARABIC LETTER TEH, ARABIC LETTER HEH DOACHASHMEE>
+0679      ; [.1C9D.0020.0002.0679][.FFC7.0000.0000.0000] # ARABIC LETTER TTEH
+0679 06BE ; [.1C9D.0020.0002.0679][.FFC8.0000.0000.0000] # <ARABIC LETTER TTEH, ARABIC LETTER HEH DOACHASHMEE>
+062B      ; [.1C9D.0020.0002.062B][.FFC9.0000.0000.0000] # ARABIC LETTER THEH
+062C      ; [.1C9D.0020.0002.062C][.FFCA.0000.0000.0000] # ARABIC LETTER JEEM
+062C 06BE ; [.1C9D.0020.0002.062C][.FFCB.0000.0000.0000] # <ARABIC LETTER JEEM, ARABIC LETTER HEH DOACHASHMEE>
+0686      ; [.1C9D.0020.0002.0686][.FFCC.0000.0000.0000] # ARABIC LETTER TCHEH
+0686 06BE ; [.1C9D.0020.0002.0686][.FFCD.0000.0000.0000] # <ARABIC LETTER TCHEH, ARABIC LETTER HEH DOACHASHMEE>
+062D      ; [.1C9D.0020.0002.062D][.FFCE.0000.0000.0000] # ARABIC LETTER HAH
+062E      ; [.1C9D.0020.0002.062E][.FFCF.0000.0000.0000] # ARABIC LETTER KHAH
+062F      ; [.1C9D.0020.0002.062F][.FFD0.0000.0000.0000] # ARABIC LETTER DAL
+062F 06BE ; [.1C9D.0020.0002.062F][.FFD1.0000.0000.0000] # <ARABIC LETTER DAL, ARABIC LETTER HEH DOACHASHMEE>
+0688      ; [.1C9D.0020.0002.0688][.FFD2.0000.0000.0000] # ARABIC LETTER DDAL
+0688 06BE ; [.1C9D.0020.0002.0688][.FFD3.0000.0000.0000] # <ARABIC LETTER DDAL, ARABIC LETTER HEH DOACHASHMEE>
+0630      ; [.1C9D.0020.0002.0630][.FFD4.0000.0000.0000] # ARABIC LETTER THAL
+0631      ; [.1C9D.0020.0002.0631][.FFD5.0000.0000.0000] # ARABIC LETTER REH
+0631 06BE ; [.1C9D.0020.0002.0631][.FFD6.0000.0000.0000] # <ARABIC LETTER REH, ARABIC LETTER HEH DOACHASHMEE>
+0691      ; [.1C9D.0020.0002.0691][.FFD7.0000.0000.0000] # ARABIC LETTER RREH
+0691 06BE ; [.1C9D.0020.0002.0691][.FFD8.0000.0000.0000] # <ARABIC LETTER RREH, ARABIC LETTER HEH DOACHASHMEE>
+0632      ; [.1C9D.0020.0002.0632][.FFD9.0000.0000.0000] # ARABIC LETTER ZAIN
+0698      ; [.1C9D.0020.0002.0698][.FFDA.0000.0000.0000] # ARABIC LETTER JEH
+0633      ; [.1C9D.0020.0002.0633][.FFDB.0000.0000.0000] # ARABIC LETTER SEEN
+0634      ; [.1C9D.0020.0002.0634][.FFDC.0000.0000.0000] # ARABIC LETTER SHEEN
+0635      ; [.1C9D.0020.0002.0635][.FFDD.0000.0000.0000] # ARABIC LETTER SAD
+0636      ; [.1C9D.0020.0002.0636][.FFDE.0000.0000.0000] # ARABIC LETTER DAD
+0637      ; [.1C9D.0020.0002.0637][.FFDF.0000.0000.0000] # ARABIC LETTER TAH
+0638      ; [.1C9D.0020.0002.0638][.FFE0.0000.0000.0000] # ARABIC LETTER ZAH
+0639      ; [.1C9D.0020.0002.0639][.FFE1.0000.0000.0000] # ARABIC LETTER AIN
+063A      ; [.1C9D.0020.0002.063A][.FFE2.0000.0000.0000] # ARABIC LETTER GHAIN
+0641      ; [.1C9D.0020.0002.0641][.FFE3.0000.0000.0000] # ARABIC LETTER FEH
+0642      ; [.1C9D.0020.0002.0642][.FFE4.0000.0000.0000] # ARABIC LETTER QAF
+06A9      ; [.1C9D.0020.0002.06A9][.FFE5.0000.0000.0000] # ARABIC LETTER KEHEH
+06A9 06BE ; [.1C9D.0020.0002.06A9][.FFE6.0000.0000.0000] # <ARABIC LETTER KEHEH, ARABIC LETTER HEH DOACHASHMEE>
+06AF      ; [.1C9D.0020.0002.06AF][.FFE7.0000.0000.0000] # ARABIC LETTER GAF
+06AF 06BE ; [.1C9D.0020.0002.06AF][.FFE8.0000.0000.0000] # <ARABIC LETTER GAF, ARABIC LETTER HEH DOACHASHMEE>
+0644      ; [.1C9D.0020.0002.0644][.FFE9.0000.0000.0000] # ARABIC LETTER LAM
+0644 06BE ; [.1C9D.0020.0002.0644][.FFEA.0000.0000.0000] # <ARABIC LETTER LAM, ARABIC LETTER HEH DOACHASHMEE>
+0645      ; [.1C9D.0020.0002.0645][.FFEB.0000.0000.0000] # ARABIC LETTER MEEM
+0645 06BE ; [.1C9D.0020.0002.0645][.FFEC.0000.0000.0000] # <ARABIC LETTER MEEM, ARABIC LETTER HEH DOACHASHMEE>
+0646      ; [.1C9D.0020.0002.0646][.FFED.0000.0000.0000] # ARABIC LETTER NOON
+0646 06BE ; [.1C9D.0020.0002.0646][.FFEE.0000.0000.0000] # <ARABIC LETTER NOON, ARABIC LETTER HEH DOACHASHMEE>
+06BA      ; [.1C9D.0020.0002.06BA][.FFEF.0000.0000.0000] # ARABIC LETTER NOON GHUNNA
+06BA 06BE ; [.1C9D.0020.0002.06BA][.FFF0.0000.0000.0000] # <ARABIC LETTER NOON GHUNNA, ARABIC LETTER HEH DOACHASHMEE>
+0648      ; [.1C9D.0020.0002.0648][.FFF1.0000.0000.0000] # ARABIC LETTER WAW
+0624      ; [.1C9D.0021.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C9D.0021.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 06BE ; [.1C9D.0020.0002.0648][.FFF2.0000.0000.0000] # <ARABIC LETTER WAW, ARABIC LETTER HEH DOACHASHMEE>
+06C1      ; [.1C9D.0020.0002.06C1][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2      ; [.1C9D.0021.0002.06C2][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C1 0654 ; [.1C9D.0021.0002.06C2][.FFF3.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06BE      ; [.1C9D.0020.0002.06BE][.FFF4.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+06C3      ; [.1C9D.0020.0002.06C3][.FFF5.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+0621      ; [.1C9D.0020.0002.0621][.FFF6.0000.0000.0000] # ARABIC LETTER HAMZA
+06CC      ; [.1C9D.0020.0002.06CC][.FFF7.0000.0000.0000] # ARABIC LETTER FARSI YEH
+0626      ; [.1C9D.0021.0002.0626][.FFF7.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C9D.0021.0002.0626][.FFF7.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+06CC 06BE ; [.1C9D.0020.0002.06CC][.FFF8.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC LETTER HEH DOACHASHMEE>
+06D2      ; [.1C9D.0020.0002.06D2][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE
+06D3      ; [.1C9D.0021.0002.06D3][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D2 0654 ; [.1C9D.0021.0002.06D3][.FFF9.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+066E      ; [.1C9D.0020.0002.066E][.FFFA.0000.0000.0000] # ARABIC LETTER DOTLESS BEH
+0652      ; [.0000.00AF.0002.0652] # ARABIC SUKUN
+064E      ; [.0000.00B0.0002.064E] # ARABIC FATHA
+0650      ; [.0000.00B1.0002.0650] # ARABIC KASRA
+064F      ; [.0000.00B2.0002.064F] # ARABIC DAMMA
+0670      ; [.0000.00B3.0002.0670] # ARABIC LETTER SUPERSCRIPT ALEF
+0656      ; [.0000.00B4.0002.0656] # ARABIC SUBSCRIPT ALEF
+0657      ; [.0000.00B5.0002.0657] # ARABIC INVERTED DAMMA
+064B      ; [.0000.00B6.0002.064B] # ARABIC FATHATAN
+064D      ; [.0000.00B7.0002.064D] # ARABIC KASRATAN
+064C      ; [.0000.00B8.0002.064C] # ARABIC DAMMATAN
+0654      ; [.0000.00B9.0002.0654] # ARABIC HAMZA ABOVE
+0651      ; [.0000.00BA.0002.0651] # ARABIC SHADDA
+0658      ; [.0000.00BB.0002.0658] # ARABIC MARK NOON GHUNNA
+0653      ; [.0000.00BC.0002.0653] # ARABIC MADDAH ABOVE
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/wae.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/wae.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/wae.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
++{
+   locale_version => 0.93,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+0061 0061 ; [.15EF.0020.0002.0061][.0000.0032.0002.0301] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+00E4 00E4 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+00E4 0061 0308 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0061 0308 00E4 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+0061 0308 0061 0308 ; [.15EF.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0065 0065 ; [.164C.0020.0002.0065][.0000.0032.0002.0301] # <LATIN SMALL LETTER E, LATIN SMALL LETTER E>
+0069 0069 ; [.16CD.0020.0002.0069][.0000.0032.0002.0301] # <LATIN SMALL LETTER I, LATIN SMALL LETTER I>
+006F 006F ; [.1771.0020.0002.006F][.0000.0032.0002.0301] # <LATIN SMALL LETTER O, LATIN SMALL LETTER O>
+00F6 00F6 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+00F6 006F 0308 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+006F 0308 00F6 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+006F 0308 006F 0308 ; [.1771.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+0063 0068 ; [.161D.0020.0002.0063][.0000.0041.0002.030C] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0073 0063 0068 ; [.17F3.0020.0002.0073][.0000.0041.0002.030C] # <LATIN SMALL LETTER S, LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0075 0075 ; [.1836.0020.0002.0075][.0000.0032.0002.0301] # <LATIN SMALL LETTER U, LATIN SMALL LETTER U>
+00FC 00FC ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+00FC 0075 0308 ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+0075 0308 00FC ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+0075 0308 0075 0308 ; [.1836.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/Collate/Locale/zh_zhu.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1563 @@
+use Unicode::Collate::CJK::Zhuyin;
++{
+   locale_version => 0.94,
+   overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin,
+   entry => <<'ENTRY', # for DUCET v6.2.0
+02C9      ; [.0000.0199.0002.02C9] # MODIFIER LETTER MACRON
+02CA      ; [.019A.0020.0002.02CA] # MODIFIER LETTER ACUTE ACCENT
+02C7      ; [.019B.0020.0002.02C7] # CARON
+02CB      ; [.019C.0020.0002.02CB] # MODIFIER LETTER GRAVE ACCENT
+02D9      ; [.019D.0020.0002.02D9] # DOT ABOVE
+02EA      ; [.019E.0020.0002.02EA] # MODIFIER LETTER YIN DEPARTING TONE MARK
+02EB      ; [.019F.0020.0002.02EB] # MODIFIER LETTER YANG DEPARTING TONE MARK
+0101      ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0061 0304 ; [.15EF.001C.0002.0101] # LATIN SMALL LETTER A WITH MACRON
+0100      ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+0041 0304 ; [.15EF.001C.0008.0100] # LATIN CAPITAL LETTER A WITH MACRON
+00E1      ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0341 ; [.15EF.001D.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1      ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0341 ; [.15EF.001D.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+01CE      ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+0061 030C ; [.15EF.001E.0002.01CE] # LATIN SMALL LETTER A WITH CARON
+01CD      ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+0041 030C ; [.15EF.001E.0008.01CD] # LATIN CAPITAL LETTER A WITH CARON
+00E0      ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0300 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+0061 0340 ; [.15EF.001F.0002.00E0] # LATIN SMALL LETTER A WITH GRAVE
+00C0      ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0300 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0041 0340 ; [.15EF.001F.0008.00C0] # LATIN CAPITAL LETTER A WITH GRAVE
+0113      ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0065 0304 ; [.164C.001C.0002.0113] # LATIN SMALL LETTER E WITH MACRON
+0112      ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+0045 0304 ; [.164C.001C.0008.0112] # LATIN CAPITAL LETTER E WITH MACRON
+00E9      ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0341 ; [.164C.001D.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9      ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0341 ; [.164C.001D.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+011B      ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+0065 030C ; [.164C.001E.0002.011B] # LATIN SMALL LETTER E WITH CARON
+011A      ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+0045 030C ; [.164C.001E.0008.011A] # LATIN CAPITAL LETTER E WITH CARON
+00E8      ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0300 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+0065 0340 ; [.164C.001F.0002.00E8] # LATIN SMALL LETTER E WITH GRAVE
+00C8      ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0300 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+0045 0340 ; [.164C.001F.0008.00C8] # LATIN CAPITAL LETTER E WITH GRAVE
+00EA 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+00CA 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING MACRON>
+0065 0302 0304 ; [.164C.0021.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+0045 0302 0304 ; [.164C.0021.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING MACRON>
+1EBF      ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0301 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+0065 0302 0341 ; [.164C.0022.0002.1EBF] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE      ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0301 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+0045 0302 0341 ; [.164C.0022.0008.1EBE] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+00EA 0301 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00EA 0341 ; [.164C.0022.0002.1EBF] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00CA 0301 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE ACCENT>
+00CA 0341 ; [.164C.0022.0008.1EBE] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING ACUTE TONE MARK>
+00EA 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+00CA 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING CARON>
+0065 0302 030C ; [.164C.0023.0002.00EA] # <LATIN SMALL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+0045 0302 030C ; [.164C.0023.0008.00CA] # <LATIN CAPITAL LETTER E, COMBINING CIRCUMFLEX ACCENT, COMBINING CARON>
+1EC1      ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0300 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+0065 0302 0340 ; [.164C.0024.0002.1EC1] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0      ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0300 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+0045 0302 0340 ; [.164C.0024.0008.1EC0] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+00EA 0300 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00EA 0340 ; [.164C.0024.0002.1EC1] # <LATIN SMALL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00CA 0300 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE ACCENT>
+00CA 0340 ; [.164C.0024.0008.1EC0] # <LATIN CAPITAL LETTER E WITH CIRCUMFLEX, COMBINING GRAVE TONE MARK>
+00EA      ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.164C.0025.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA      ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.164C.0025.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC5      ; [.164C.0025.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4      ; [.164C.0025.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3      ; [.164C.0025.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2      ; [.164C.0025.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7      ; [.164C.0025.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6      ; [.164C.0025.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+012B      ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+0069 0304 ; [.16CD.001C.0002.012B] # LATIN SMALL LETTER I WITH MACRON
+012A      ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+0049 0304 ; [.16CD.001C.0008.012A] # LATIN CAPITAL LETTER I WITH MACRON
+00ED      ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0341 ; [.16CD.001D.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD      ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0341 ; [.16CD.001D.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+01D0      ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+0069 030C ; [.16CD.001E.0002.01D0] # LATIN SMALL LETTER I WITH CARON
+01CF      ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+0049 030C ; [.16CD.001E.0008.01CF] # LATIN CAPITAL LETTER I WITH CARON
+00EC      ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0300 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+0069 0340 ; [.16CD.001F.0002.00EC] # LATIN SMALL LETTER I WITH GRAVE
+00CC      ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0300 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+0049 0340 ; [.16CD.001F.0008.00CC] # LATIN CAPITAL LETTER I WITH GRAVE
+006D 0304 ; [.1741.001C.0002.006D] # <LATIN SMALL LETTER M, COMBINING MACRON>
+004D 0304 ; [.1741.001C.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING MACRON>
+1E3F      ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0301 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+006D 0341 ; [.1741.001D.0002.1E3F] # LATIN SMALL LETTER M WITH ACUTE
+1E3E      ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0301 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+004D 0341 ; [.1741.001D.0008.1E3E] # LATIN CAPITAL LETTER M WITH ACUTE
+006D 030C ; [.1741.001E.0002.006D] # <LATIN SMALL LETTER M, COMBINING CARON>
+004D 030C ; [.1741.001E.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING CARON>
+006D 0300 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE ACCENT>
+006D 0340 ; [.1741.001F.0002.006D] # <LATIN SMALL LETTER M, COMBINING GRAVE TONE MARK>
+004D 0300 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE ACCENT>
+004D 0340 ; [.1741.001F.0008.004D] # <LATIN CAPITAL LETTER M, COMBINING GRAVE TONE MARK>
+006E 0304 ; [.174F.001C.0002.006E] # <LATIN SMALL LETTER N, COMBINING MACRON>
+004E 0304 ; [.174F.001C.0008.004E] # <LATIN CAPITAL LETTER N, COMBINING MACRON>
+0144      ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0301 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+006E 0341 ; [.174F.001D.0002.0144] # LATIN SMALL LETTER N WITH ACUTE
+0143      ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0301 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+004E 0341 ; [.174F.001D.0008.0143] # LATIN CAPITAL LETTER N WITH ACUTE
+0148      ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+006E 030C ; [.174F.001E.0002.0148] # LATIN SMALL LETTER N WITH CARON
+0147      ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+004E 030C ; [.174F.001E.0008.0147] # LATIN CAPITAL LETTER N WITH CARON
+01F9      ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0300 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+006E 0340 ; [.174F.001F.0002.01F9] # LATIN SMALL LETTER N WITH GRAVE
+01F8      ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0300 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+004E 0340 ; [.174F.001F.0008.01F8] # LATIN CAPITAL LETTER N WITH GRAVE
+014D      ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+006F 0304 ; [.1771.001C.0002.014D] # LATIN SMALL LETTER O WITH MACRON
+014C      ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+004F 0304 ; [.1771.001C.0008.014C] # LATIN CAPITAL LETTER O WITH MACRON
+00F3      ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0341 ; [.1771.001D.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3      ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0341 ; [.1771.001D.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+01D2      ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+006F 030C ; [.1771.001E.0002.01D2] # LATIN SMALL LETTER O WITH CARON
+01D1      ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+004F 030C ; [.1771.001E.0008.01D1] # LATIN CAPITAL LETTER O WITH CARON
+00F2      ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0300 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+006F 0340 ; [.1771.001F.0002.00F2] # LATIN SMALL LETTER O WITH GRAVE
+00D2      ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0300 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+004F 0340 ; [.1771.001F.0008.00D2] # LATIN CAPITAL LETTER O WITH GRAVE
+016B      ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+0075 0304 ; [.1836.001C.0002.016B] # LATIN SMALL LETTER U WITH MACRON
+016A      ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+0055 0304 ; [.1836.001C.0008.016A] # LATIN CAPITAL LETTER U WITH MACRON
+00FA      ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0341 ; [.1836.001D.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA      ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0341 ; [.1836.001D.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+01D4      ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+0075 030C ; [.1836.001E.0002.01D4] # LATIN SMALL LETTER U WITH CARON
+01D3      ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+0055 030C ; [.1836.001E.0008.01D3] # LATIN CAPITAL LETTER U WITH CARON
+00F9      ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0300 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+0075 0340 ; [.1836.001F.0002.00F9] # LATIN SMALL LETTER U WITH GRAVE
+00D9      ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0300 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+0055 0340 ; [.1836.001F.0008.00D9] # LATIN CAPITAL LETTER U WITH GRAVE
+01D6      ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+0075 0308 0304 ; [.1836.0021.0002.01D6] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5      ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+0055 0308 0304 ; [.1836.0021.0008.01D5] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+00FC 0304 ; [.1836.0021.0002.01D6] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING MACRON>
+00DC 0304 ; [.1836.0021.0008.01D5] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING MACRON>
+01D8      ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0301 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+0075 0308 0341 ; [.1836.0022.0002.01D8] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7      ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0301 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+0055 0308 0341 ; [.1836.0022.0008.01D7] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+00FC 0301 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00FC 0341 ; [.1836.0022.0002.01D8] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+00DC 0301 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE ACCENT>
+00DC 0341 ; [.1836.0022.0008.01D7] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING ACUTE TONE MARK>
+01DA      ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+0075 0308 030C ; [.1836.0023.0002.01DA] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9      ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0055 0308 030C ; [.1836.0023.0008.01D9] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+00FC 030C ; [.1836.0023.0002.01DA] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING CARON>
+00DC 030C ; [.1836.0023.0008.01D9] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING CARON>
+01DC      ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0300 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+0075 0308 0340 ; [.1836.0024.0002.01DC] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB      ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0300 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+0055 0308 0340 ; [.1836.0024.0008.01DB] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+00FC 0300 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00FC 0340 ; [.1836.0024.0002.01DC] # <LATIN SMALL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00DC 0300 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE ACCENT>
+00DC 0340 ; [.1836.0024.0008.01DB] # <LATIN CAPITAL LETTER U WITH DIAERESIS, COMBINING GRAVE TONE MARK>
+00FC      ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1836.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC      ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1836.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+FDD0 3105 ; [.8000.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER B>
+2E8A      ; [.80B5.0020.0002.2E8A] # CJK RADICAL DIVINATION
+FDD0 3106 ; [.83B1.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER P>
+FDD0 3107 ; [.8626.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER M>
+FDD0 3108 ; [.897F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER F>
+2ECF      ; [.8BC0.0020.0002.2ECF] # CJK RADICAL CITY
+2ED6      ; [.8BC1.0020.0002.2ED6] # CJK RADICAL MOUND TWO
+FDD0 3109 ; [.8C0D.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER D>
+2E88      ; [.8C86.0020.0002.2E88] # CJK RADICAL KNIFE ONE
+FDD0 310A ; [.901F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER T>
+FDD0 310B ; [.93D9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER N>
+2EA7      ; [.9525.0020.0002.2EA7] # CJK RADICAL COW
+FDD0 310C ; [.95D9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER L>
+3007      ; [.9A41.0020.0002.3007] # IDEOGRAPHIC NUMBER ZERO
+FDD0 310D ; [.9C5F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER G>
+2EE3      ; [.9E0A.0020.0002.2EE3] # CJK RADICAL BONE
+FDD0 310E ; [.9FD2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER K>
+FDD0 310F ; [.A223.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER H>
+FDD0 3110 ; [.A697.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER J>
+2E95      ; [.A762.0020.0002.2E95] # CJK RADICAL SNOUT TWO
+2E86      ; [.AD18.0020.0002.2E86] # CJK RADICAL BOX
+FDD0 3111 ; [.AD38.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER Q>
+FDD0 3112 ; [.B164.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER X>
+2E8C      ; [.B383.0020.0002.2E8C] # CJK RADICAL SMALL ONE
+2E8D      ; [.B384.0020.0002.2E8D] # CJK RADICAL SMALL TWO
+FDD0 3113 ; [.B6E9.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ZH>
+2EA5      ; [.B8AC.0020.0002.2EA5] # CJK RADICAL PAW TWO
+FDD0 3114 ; [.BBAC.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER CH>
+2ECC      ; [.BE9D.0020.0002.2ECC] # CJK RADICAL SIMPLIFIED WALK
+2ECD      ; [.BE9E.0020.0002.2ECD] # CJK RADICAL WALK ONE
+FDD0 3115 ; [.BF5A.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER SH>
+2EAC      ; [.BFBC.0020.0002.2EAC] # CJK RADICAL SPIRIT ONE
+2EAE      ; [.BFC1.0020.0002.2EAE] # CJK RADICAL BAMBOO
+FDD0 3116 ; [.C2A2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER R>
+2E9C      ; [.C2A3.0020.0002.2E9C] # CJK RADICAL SUN
+2EBC      ; [.C2D3.0020.0002.2EBC] # CJK RADICAL MEAT
+2EB6      ; [.C311.0020.0002.2EB6] # CJK RADICAL SHEEP
+FDD0 3117 ; [.C402.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER Z>
+FDD0 3118 ; [.C630.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER C>
+2EBE      ; [.C6CA.0020.0002.2EBE] # CJK RADICAL GRASS ONE
+FDD0 3119 ; [.C7F6.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER S>
+FDD0 311A ; [.CA13.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER A>
+FDD0 311B ; [.CA19.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER O>
+FDD0 311C ; [.CA1E.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER E>
+FDD0 311E ; [.CAA0.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AI>
+FDD0 311F ; [.CAE8.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER EI>
+FDD0 3120 ; [.CAEB.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AU>
+FDD0 3121 ; [.CB2E.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER OU>
+FDD0 3122 ; [.CB51.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER AN>
+FDD0 3123 ; [.CB8B.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER EN>
+FDD0 3124 ; [.CB94.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ANG>
+FDD0 3125 ; [.CBA0.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ENG>
+FDD0 3126 ; [.CBA2.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER ER>
+FDD0 3127 ; [.CBDB.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER I>
+2E84      ; [.CDB5.0020.0002.2E84] # CJK RADICAL SECOND THREE
+2E80      ; [.CEDF.0020.0002.2E80] # CJK RADICAL REPEAT
+FDD0 3128 ; [.D16F.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER U>
+FDD0 3129 ; [.D403.0020.0002.FDD0] # <noncharacter-FDD0, BOPOMOFO LETTER IU>
+2ED7      ; [.D47E.0020.0002.2ED7] # CJK RADICAL RAIN
+2E9D      ; [.D53B.0020.0002.2E9D] # CJK RADICAL MOON
+3220      ; [*02FB.0020.0004.3220][.CBDC.0020.0004.3220][*02FC.0020.001F.3220] # PARENTHESIZED IDEOGRAPH ONE
+3226      ; [*02FB.0020.0004.3226][.AD39.0020.0004.3226][*02FC.0020.001F.3226] # PARENTHESIZED IDEOGRAPH SEVEN
+3222      ; [*02FB.0020.0004.3222][.C8DF.0020.0004.3222][*02FC.0020.001F.3222] # PARENTHESIZED IDEOGRAPH THREE
+3228      ; [*02FB.0020.0004.3228][.A95D.0020.0004.3228][*02FC.0020.001F.3228] # PARENTHESIZED IDEOGRAPH NINE
+3221      ; [*02FB.0020.0004.3221][.CBCD.0020.0004.3221][*02FC.0020.001F.3221] # PARENTHESIZED IDEOGRAPH TWO
+3224      ; [*02FB.0020.0004.3224][.D1A9.0020.0004.3224][*02FC.0020.001F.3224] # PARENTHESIZED IDEOGRAPH FIVE
+3239      ; [*02FB.0020.0004.3239][.8C57.0020.0004.3239][*02FC.0020.001F.3239] # PARENTHESIZED IDEOGRAPH REPRESENT
+323D      ; [*02FB.0020.0004.323D][.ADC1.0020.0004.323D][*02FC.0020.001F.323D] # PARENTHESIZED IDEOGRAPH ENTERPRISE
+3241      ; [*02FB.0020.0004.3241][.B3A8.0020.0004.3241][*02FC.0020.001F.3241] # PARENTHESIZED IDEOGRAPH REST
+3227      ; [*02FB.0020.0004.3227][.8001.0020.0004.3227][*02FC.0020.001F.3227] # PARENTHESIZED IDEOGRAPH EIGHT
+3225      ; [*02FB.0020.0004.3225][.9953.0020.0004.3225][*02FC.0020.001F.3225] # PARENTHESIZED IDEOGRAPH SIX
+3238      ; [*02FB.0020.0004.3238][.969E.0020.0004.3238][*02FC.0020.001F.3238] # PARENTHESIZED IDEOGRAPH LABOR
+3229      ; [*02FB.0020.0004.3229][.BF85.0020.0004.3229][*02FC.0020.001F.3229] # PARENTHESIZED IDEOGRAPH TEN
+323F      ; [*02FB.0020.0004.323F][.B2BC.0020.0004.323F][*02FC.0020.001F.323F] # PARENTHESIZED IDEOGRAPH ALLIANCE
+3234      ; [*02FB.0020.0004.3234][.892A.0020.0004.3234][*02FC.0020.001F.3234] # PARENTHESIZED IDEOGRAPH NAME
+323A      ; [*02FB.0020.0004.323A][.A3B5.0020.0004.323A][*02FC.0020.001F.323A] # PARENTHESIZED IDEOGRAPH CALL
+3223      ; [*02FB.0020.0004.3223][.C82E.0020.0004.3223][*02FC.0020.001F.3223] # PARENTHESIZED IDEOGRAPH FOUR
+322F      ; [*02FB.0020.0004.322F][.92EA.0020.0004.322F][*02FC.0020.001F.322F] # PARENTHESIZED IDEOGRAPH EARTH
+323B      ; [*02FB.0020.0004.323B][.B5F0.0020.0004.323B][*02FC.0020.001F.323B] # PARENTHESIZED IDEOGRAPH STUDY
+3230      ; [*02FB.0020.0004.3230][.C2A4.0020.0004.3230][*02FC.0020.001F.3230] # PARENTHESIZED IDEOGRAPH SUN
+322A      ; [*02FB.0020.0004.322A][.D53C.0020.0004.322A][*02FC.0020.001F.322A] # PARENTHESIZED IDEOGRAPH MOON
+3232      ; [*02FB.0020.0004.3232][.CEC7.0020.0004.3232][*02FC.0020.001F.3232] # PARENTHESIZED IDEOGRAPH HAVE
+322D      ; [*02FB.0020.0004.322D][.895F.0020.0004.322D][*02FC.0020.001F.322D] # PARENTHESIZED IDEOGRAPH WOOD
+3231      ; [*02FB.0020.0004.3231][.BA36.0020.0004.3231][*02FC.0020.001F.3231] # PARENTHESIZED IDEOGRAPH STOCK
+322C      ; [*02FB.0020.0004.322C][.C26E.0020.0004.322C][*02FC.0020.001F.322C] # PARENTHESIZED IDEOGRAPH WATER
+322B      ; [*02FB.0020.0004.322B][.A48C.0020.0004.322B][*02FC.0020.001F.322B] # PARENTHESIZED IDEOGRAPH FIRE
+3235      ; [*02FB.0020.0004.3235][.9060.0020.0004.3235][*02FC.0020.001F.3235] # PARENTHESIZED IDEOGRAPH SPECIAL
+323C      ; [*02FB.0020.0004.323C][.A9B3.0020.0004.323C][*02FC.0020.001F.323C] # PARENTHESIZED IDEOGRAPH SUPERVISE
+3233      ; [*02FB.0020.0004.3233][.C05E.0020.0004.3233][*02FC.0020.001F.3233] # PARENTHESIZED IDEOGRAPH SOCIETY
+3237      ; [*02FB.0020.0004.3237][.BA90.0020.0004.3237][*02FC.0020.001F.3237] # PARENTHESIZED IDEOGRAPH CONGRATULATION
+3240      ; [*02FB.0020.0004.3240][.A78C.0020.0004.3240][*02FC.0020.001F.3240] # PARENTHESIZED IDEOGRAPH FESTIVAL
+3242      ; [*02FB.0020.0004.3242][.C457.0020.0004.3242][*02FC.0020.001F.3242] # PARENTHESIZED IDEOGRAPH SELF
+3243      ; [*02FB.0020.0004.3243][.B766.0020.0004.3243][*02FC.0020.001F.3243] # PARENTHESIZED IDEOGRAPH REACH
+3236      ; [*02FB.0020.0004.3236][.C69F.0020.0004.3236][*02FC.0020.001F.3236] # PARENTHESIZED IDEOGRAPH FINANCIAL
+323E      ; [*02FB.0020.0004.323E][.C421.0020.0004.323E][*02FC.0020.001F.323E] # PARENTHESIZED IDEOGRAPH RESOURCE
+322E      ; [*02FB.0020.0004.322E][.AA72.0020.0004.322E][*02FC.0020.001F.322E] # PARENTHESIZED IDEOGRAPH METAL
+3358      ; [.15E5.0020.0004.3358][.8E99.0020.001F.3358] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+33E9      ; [.15E6.0020.0004.33E9][.15E5.0020.0004.33E9][.C2A4.0020.001F.33E9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+32C9      ; [.15E6.0020.0004.32C9][.15E5.0020.0004.32C9][.D53C.0020.001F.32C9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+3362      ; [.15E6.0020.0004.3362][.15E5.0020.0004.3362][.8E99.0020.001F.3362] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+33EA      ; [.15E6.0020.0004.33EA][.15E6.0020.0004.33EA][.C2A4.0020.001F.33EA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+32CA      ; [.15E6.0020.0004.32CA][.15E6.0020.0004.32CA][.D53C.0020.001F.32CA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+3363      ; [.15E6.0020.0004.3363][.15E6.0020.0004.3363][.8E99.0020.001F.3363] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+33EB      ; [.15E6.0020.0004.33EB][.15E7.0020.0004.33EB][.C2A4.0020.001F.33EB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+32CB      ; [.15E6.0020.0004.32CB][.15E7.0020.0004.32CB][.D53C.0020.001F.32CB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+3364      ; [.15E6.0020.0004.3364][.15E7.0020.0004.3364][.8E99.0020.001F.3364] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+33EC      ; [.15E6.0020.0004.33EC][.15E8.0020.0004.33EC][.C2A4.0020.001F.33EC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+3365      ; [.15E6.0020.0004.3365][.15E8.0020.0004.3365][.8E99.0020.001F.3365] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+33ED      ; [.15E6.0020.0004.33ED][.15E9.0020.0004.33ED][.C2A4.0020.001F.33ED] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+3366      ; [.15E6.0020.0004.3366][.15E9.0020.0004.3366][.8E99.0020.001F.3366] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+33EE      ; [.15E6.0020.0004.33EE][.15EA.0020.0004.33EE][.C2A4.0020.001F.33EE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+3367      ; [.15E6.0020.0004.3367][.15EA.0020.0004.3367][.8E99.0020.001F.3367] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+33EF      ; [.15E6.0020.0004.33EF][.15EB.0020.0004.33EF][.C2A4.0020.001F.33EF] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+3368      ; [.15E6.0020.0004.3368][.15EB.0020.0004.3368][.8E99.0020.001F.3368] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+33F0      ; [.15E6.0020.0004.33F0][.15EC.0020.0004.33F0][.C2A4.0020.001F.33F0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+3369      ; [.15E6.0020.0004.3369][.15EC.0020.0004.3369][.8E99.0020.001F.3369] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+33F1      ; [.15E6.0020.0004.33F1][.15ED.0020.0004.33F1][.C2A4.0020.001F.33F1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+336A      ; [.15E6.0020.0004.336A][.15ED.0020.0004.336A][.8E99.0020.001F.336A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+33F2      ; [.15E6.0020.0004.33F2][.15EE.0020.0004.33F2][.C2A4.0020.001F.33F2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+336B      ; [.15E6.0020.0004.336B][.15EE.0020.0004.336B][.8E99.0020.001F.336B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+33E0      ; [.15E6.0020.0004.33E0][.C2A4.0020.001F.33E0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+32C0      ; [.15E6.0020.0004.32C0][.D53C.0020.001F.32C0] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+3359      ; [.15E6.0020.0004.3359][.8E99.0020.001F.3359] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+33F3      ; [.15E7.0020.0004.33F3][.15E5.0020.0004.33F3][.C2A4.0020.001F.33F3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+336C      ; [.15E7.0020.0004.336C][.15E5.0020.0004.336C][.8E99.0020.001F.336C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+33F4      ; [.15E7.0020.0004.33F4][.15E6.0020.0004.33F4][.C2A4.0020.001F.33F4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+336D      ; [.15E7.0020.0004.336D][.15E6.0020.0004.336D][.8E99.0020.001F.336D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+33F5      ; [.15E7.0020.0004.33F5][.15E7.0020.0004.33F5][.C2A4.0020.001F.33F5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+336E      ; [.15E7.0020.0004.336E][.15E7.0020.0004.336E][.8E99.0020.001F.336E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+33F6      ; [.15E7.0020.0004.33F6][.15E8.0020.0004.33F6][.C2A4.0020.001F.33F6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+336F      ; [.15E7.0020.0004.336F][.15E8.0020.0004.336F][.8E99.0020.001F.336F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+33F7      ; [.15E7.0020.0004.33F7][.15E9.0020.0004.33F7][.C2A4.0020.001F.33F7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+3370      ; [.15E7.0020.0004.3370][.15E9.0020.0004.3370][.8E99.0020.001F.3370] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+33F8      ; [.15E7.0020.0004.33F8][.15EA.0020.0004.33F8][.C2A4.0020.001F.33F8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+33F9      ; [.15E7.0020.0004.33F9][.15EB.0020.0004.33F9][.C2A4.0020.001F.33F9] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+33FA      ; [.15E7.0020.0004.33FA][.15EC.0020.0004.33FA][.C2A4.0020.001F.33FA] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+33FB      ; [.15E7.0020.0004.33FB][.15ED.0020.0004.33FB][.C2A4.0020.001F.33FB] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+33FC      ; [.15E7.0020.0004.33FC][.15EE.0020.0004.33FC][.C2A4.0020.001F.33FC] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+33E1      ; [.15E7.0020.0004.33E1][.C2A4.0020.001F.33E1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+32C1      ; [.15E7.0020.0004.32C1][.D53C.0020.001F.32C1] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+335A      ; [.15E7.0020.0004.335A][.8E99.0020.001F.335A] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+33FD      ; [.15E8.0020.0004.33FD][.15E5.0020.0004.33FD][.C2A4.0020.001F.33FD] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+33FE      ; [.15E8.0020.0004.33FE][.15E6.0020.0004.33FE][.C2A4.0020.001F.33FE] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+33E2      ; [.15E8.0020.0004.33E2][.C2A4.0020.001F.33E2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+32C2      ; [.15E8.0020.0004.32C2][.D53C.0020.001F.32C2] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+335B      ; [.15E8.0020.0004.335B][.8E99.0020.001F.335B] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+33E3      ; [.15E9.0020.0004.33E3][.C2A4.0020.001F.33E3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+32C3      ; [.15E9.0020.0004.32C3][.D53C.0020.001F.32C3] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+335C      ; [.15E9.0020.0004.335C][.8E99.0020.001F.335C] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+33E4      ; [.15EA.0020.0004.33E4][.C2A4.0020.001F.33E4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+32C4      ; [.15EA.0020.0004.32C4][.D53C.0020.001F.32C4] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+335D      ; [.15EA.0020.0004.335D][.8E99.0020.001F.335D] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+33E5      ; [.15EB.0020.0004.33E5][.C2A4.0020.001F.33E5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+32C5      ; [.15EB.0020.0004.32C5][.D53C.0020.001F.32C5] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+335E      ; [.15EB.0020.0004.335E][.8E99.0020.001F.335E] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+33E6      ; [.15EC.0020.0004.33E6][.C2A4.0020.001F.33E6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+32C6      ; [.15EC.0020.0004.32C6][.D53C.0020.001F.32C6] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+335F      ; [.15EC.0020.0004.335F][.8E99.0020.001F.335F] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+33E7      ; [.15ED.0020.0004.33E7][.C2A4.0020.001F.33E7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+32C7      ; [.15ED.0020.0004.32C7][.D53C.0020.001F.32C7] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+3360      ; [.15ED.0020.0004.3360][.8E99.0020.001F.3360] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+33E8      ; [.15EE.0020.0004.33E8][.C2A4.0020.001F.33E8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+32C8      ; [.15EE.0020.0004.32C8][.D53C.0020.001F.32C8] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+3361      ; [.15EE.0020.0004.3361][.8E99.0020.001F.3361] # IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+1F241     ; [*0359.0020.0004.1F241][.C8DF.0020.0004.1F241][*035A.0020.001F.1F241] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
+1F242     ; [*0359.0020.0004.1F242][.CBCD.0020.0004.1F242][*035A.0020.001F.1F242] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
+1F247     ; [*0359.0020.0004.1F247][.C1CC.0020.0004.1F247][*035A.0020.001F.1F247] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
+1F243     ; [*0359.0020.0004.1F243][.CB52.0020.0004.1F243][*035A.0020.001F.1F243] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
+1F245     ; [*0359.0020.0004.1F245][.8C38.0020.0004.1F245][*035A.0020.001F.1F245] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
+1F248     ; [*0359.0020.0004.1F248][.80CD.0020.0004.1F248][*035A.0020.001F.1F248] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+1F240     ; [*0359.0020.0004.1F240][.819A.0020.0004.1F240][*035A.0020.001F.1F240] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
+1F244     ; [*0359.0020.0004.1F244][.8E99.0020.0004.1F244][*035A.0020.001F.1F244] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
+1F246     ; [*0359.0020.0004.1F246][.8CA9.0020.0004.1F246][*035A.0020.001F.1F246] # TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
+2F00      ; [.CBDC.0020.0004.2F00] # KANGXI RADICAL ONE
+3192      ; [.CBDC.0020.0014.3192] # IDEOGRAPHIC ANNOTATION ONE MARK
+3280      ; [.CBDC.0020.0006.3280] # CIRCLED IDEOGRAPH ONE
+1F229     ; [.CBDC.0020.001C.1F229] # SQUARED CJK UNIFIED IDEOGRAPH-4E00
+319C      ; [.8EC1.0020.0014.319C] # IDEOGRAPHIC ANNOTATION FOURTH MARK
+3286      ; [.AD39.0020.0006.3286] # CIRCLED IDEOGRAPH SEVEN
+3194      ; [.C8DF.0020.0014.3194] # IDEOGRAPHIC ANNOTATION THREE MARK
+3282      ; [.C8DF.0020.0006.3282] # CIRCLED IDEOGRAPH THREE
+1F22A     ; [.C8DF.0020.001C.1F22A] # SQUARED CJK UNIFIED IDEOGRAPH-4E09
+3196      ; [.C19C.0020.0014.3196] # IDEOGRAPHIC ANNOTATION TOP MARK
+32A4      ; [.C19C.0020.0006.32A4] # CIRCLED IDEOGRAPH HIGH
+3198      ; [.B2A0.0020.0014.3198] # IDEOGRAPHIC ANNOTATION BOTTOM MARK
+32A6      ; [.B2A0.0020.0006.32A6] # CIRCLED IDEOGRAPH LOW
+319B      ; [.8355.0020.0014.319B] # IDEOGRAPHIC ANNOTATION THIRD MARK
+2F01      ; [.9F64.0020.0004.2F01] # KANGXI RADICAL LINE
+3197      ; [.BB6D.0020.0014.3197] # IDEOGRAPHIC ANNOTATION MIDDLE MARK
+32A5      ; [.BB6D.0020.0006.32A5] # CIRCLED IDEOGRAPH CENTRE
+1F22D     ; [.BB6D.0020.001C.1F22D] # SQUARED CJK UNIFIED IDEOGRAPH-4E2D
+2F02      ; [.BA6A.0020.0004.2F02] # KANGXI RADICAL DOT
+2F03      ; [.8558.0020.0004.2F03] # KANGXI RADICAL SLASH
+2F04      ; [.CC59.0020.0004.2F04] # KANGXI RADICAL SECOND
+319A      ; [.CC59.0020.0014.319A] # IDEOGRAPHIC ANNOTATION SECOND MARK
+3288      ; [.A95D.0020.0006.3288] # CIRCLED IDEOGRAPH NINE
+2F05      ; [.AC3C.0020.0004.2F05] # KANGXI RADICAL HOOK
+2F06      ; [.CBCD.0020.0004.2F06] # KANGXI RADICAL TWO
+3193      ; [.CBCD.0020.0014.3193] # IDEOGRAPHIC ANNOTATION TWO MARK
+3281      ; [.CBCD.0020.0006.3281] # CIRCLED IDEOGRAPH TWO
+1F214     ; [.CBCD.0020.001C.1F214] # SQUARED CJK UNIFIED IDEOGRAPH-4E8C
+3284      ; [.D1A9.0020.0006.3284] # CIRCLED IDEOGRAPH FIVE
+2F07      ; [.90D4.0020.0004.2F07] # KANGXI RADICAL LID
+1F218     ; [.A8BE.0020.001C.1F218] # SQUARED CJK UNIFIED IDEOGRAPH-4EA4
+2F08      ; [.C2EF.0020.0004.2F08] # KANGXI RADICAL MAN
+319F      ; [.C2EF.0020.0014.319F] # IDEOGRAPHIC ANNOTATION MAN MARK
+32AD      ; [.ADC1.0020.0006.32AD] # CIRCLED IDEOGRAPH ENTERPRISE
+32A1      ; [.B3A8.0020.0006.32A1] # CIRCLED IDEOGRAPH REST
+329D      ; [.CE97.0020.0006.329D] # CIRCLED IDEOGRAPH EXCELLENT
+2F09      ; [.CBA3.0020.0004.2F09] # KANGXI RADICAL LEGS
+2F0A      ; [.C376.0020.0004.2F0A] # KANGXI RADICAL ENTER
+2F0B      ; [.8001.0020.0004.2F0B] # KANGXI RADICAL EIGHT
+3287      ; [.8001.0020.0006.3287] # CIRCLED IDEOGRAPH EIGHT
+3285      ; [.9953.0020.0006.3285] # CIRCLED IDEOGRAPH SIX
+2F0C      ; [.AD19.0020.0004.2F0C] # KANGXI RADICAL DOWN BOX
+1F21E     ; [.C4C2.0020.001C.1F21E] # SQUARED CJK UNIFIED IDEOGRAPH-518D
+2F0D      ; [.8867.0020.0004.2F0D] # KANGXI RADICAL COVER
+32A2      ; [.B2E9.0020.0006.32A2] # CIRCLED IDEOGRAPH COPY
+2F0E      ; [.834E.0020.0004.2F0E] # KANGXI RADICAL ICE
+2F0F      ; [.A74C.0020.0004.2F0F] # KANGXI RADICAL TABLE
+2F10      ; [.AF59.0020.0004.2F10] # KANGXI RADICAL OPEN BOX
+2F11      ; [.8C87.0020.0004.2F11] # KANGXI RADICAL KNIFE
+1F220     ; [.BE3B.0020.001C.1F220] # SQUARED CJK UNIFIED IDEOGRAPH-521D
+1F21C     ; [.AF3B.0020.001C.1F21C] # SQUARED CJK UNIFIED IDEOGRAPH-524D
+1F239     ; [.9C7B.0020.001C.1F239] # SQUARED CJK UNIFIED IDEOGRAPH-5272
+2F12      ; [.9804.0020.0004.2F12] # KANGXI RADICAL POWER
+3298      ; [.969E.0020.0006.3298] # CIRCLED IDEOGRAPH LABOR
+2F13      ; [.811A.0020.0004.2F13] # KANGXI RADICAL WRAP
+2F14      ; [.81FC.0020.0004.2F14] # KANGXI RADICAL SPOON
+2F15      ; [.8A9F.0020.0004.2F15] # KANGXI RADICAL RIGHT OPEN BOX
+2F16      ; [.B224.0020.0004.2F16] # KANGXI RADICAL HIDING ENCLOSURE
+32A9      ; [.CBE1.0020.0006.32A9] # CIRCLED IDEOGRAPH MEDICINE
+2F17      ; [.BF85.0020.0004.2F17] # KANGXI RADICAL TEN
+3038      ; [.BF85.0020.0004.3038] # HANGZHOU NUMERAL TEN
+3289      ; [.BF85.0020.0006.3289] # CIRCLED IDEOGRAPH TEN
+3039      ; [.954F.0020.0004.3039] # HANGZHOU NUMERAL TWENTY
+303A      ; [.C861.0020.0004.303A] # HANGZHOU NUMERAL THIRTY
+32AF      ; [.B2BC.0020.0006.32AF] # CIRCLED IDEOGRAPH ALLIANCE
+2F18      ; [.80B6.0020.0004.2F18] # KANGXI RADICAL DIVINATION
+2F19      ; [.A84F.0020.0004.2F19] # KANGXI RADICAL SEAL
+329E      ; [.D06B.0020.0006.329E] # CIRCLED IDEOGRAPH PRINT
+2F1A      ; [.BDC0.0020.0004.2F1A] # KANGXI RADICAL CLIFF
+2F1B      ; [.C7F7.0020.0004.2F1B] # KANGXI RADICAL PRIVATE
+2F1C      ; [.CEE0.0020.0004.2F1C] # KANGXI RADICAL AGAIN
+1F212     ; [.C28A.0020.001C.1F212] # SQUARED CJK UNIFIED IDEOGRAPH-53CC
+2F1D      ; [.A070.0020.0004.2F1D] # KANGXI RADICAL MOUTH
+1F251     ; [.A007.0020.0006.1F251] # CIRCLED IDEOGRAPH ACCEPT
+32A8      ; [.CEE1.0020.0006.32A8] # CIRCLED IDEOGRAPH RIGHT
+1F22E     ; [.CEE1.0020.001C.1F22E] # SQUARED CJK UNIFIED IDEOGRAPH-53F3
+1F234     ; [.A232.0020.001C.1F234] # SQUARED CJK UNIFIED IDEOGRAPH-5408
+3294      ; [.892A.0020.0006.3294] # CIRCLED IDEOGRAPH NAME
+1F225     ; [.BEBE.0020.001C.1F225] # SQUARED CJK UNIFIED IDEOGRAPH-5439
+3244      ; [.D3B7.0020.0006.3244] # CIRCLED IDEOGRAPH QUESTION
+1F23A     ; [.D120.0020.001C.1F23A] # SQUARED CJK UNIFIED IDEOGRAPH-55B6
+2F1E      ; [.D27D.0020.0004.2F1E] # KANGXI RADICAL ENCLOSURE
+3195      ; [.C82E.0020.0014.3195] # IDEOGRAPHIC ANNOTATION FOUR MARK
+3283      ; [.C82E.0020.0006.3283] # CIRCLED IDEOGRAPH FOUR
+2F1F      ; [.92EA.0020.0004.2F1F] # KANGXI RADICAL EARTH
+328F      ; [.92EA.0020.0006.328F] # CIRCLED IDEOGRAPH EARTH
+319E      ; [.8C4B.0020.0014.319E] # IDEOGRAPHIC ANNOTATION EARTH MARK
+2F20      ; [.BFB5.0020.0004.2F20] # KANGXI RADICAL SCHOLAR
+1F224     ; [.C1A8.0020.001C.1F224] # SQUARED CJK UNIFIED IDEOGRAPH-58F0
+2F21      ; [.B740.0020.0004.2F21] # KANGXI RADICAL GO
+2F22      ; [.C986.0020.0004.2F22] # KANGXI RADICAL GO SLOWLY
+2F23      ; [.B165.0020.0004.2F23] # KANGXI RADICAL EVENING
+1F215     ; [.8F35.0020.001C.1F215] # SQUARED CJK UNIFIED IDEOGRAPH-591A
+32B0      ; [.CDD7.0020.0006.32B0] # CIRCLED IDEOGRAPH NIGHT
+2F24      ; [.8C39.0020.0004.2F24] # KANGXI RADICAL BIG
+337D      ; [.8C39.0020.001C.337D][.BA1E.0020.001C.337D] # SQUARE ERA NAME TAISYOU
+319D      ; [.923B.0020.0014.319D] # IDEOGRAPHIC ANNOTATION HEAVEN MARK
+1F217     ; [.923B.0020.001C.1F217] # SQUARED CJK UNIFIED IDEOGRAPH-5929
+2F25      ; [.95CC.0020.0004.2F25] # KANGXI RADICAL WOMAN
+329B      ; [.95CC.0020.0006.329B] # CIRCLED IDEOGRAPH FEMALE
+2F26      ; [.C466.0020.0004.2F26] # KANGXI RADICAL CHILD
+1F211     ; [.C456.0020.001C.1F211] # SQUARED CJK UNIFIED IDEOGRAPH-5B57
+32AB      ; [.B5F0.0020.0006.32AB] # CIRCLED IDEOGRAPH STUDY
+2F27      ; [.88BF.0020.0004.2F27] # KANGXI RADICAL ROOF
+32AA      ; [.C5ED.0020.0006.32AA] # CIRCLED IDEOGRAPH RELIGION
+2F28      ; [.C7B4.0020.0004.2F28] # KANGXI RADICAL INCH
+2F29      ; [.B385.0020.0004.2F29] # KANGXI RADICAL SMALL
+2F2A      ; [.CE9E.0020.0004.2F2A] # KANGXI RADICAL LAME
+2F2B      ; [.BF5B.0020.0004.2F2B] # KANGXI RADICAL CORPSE
+2F2C      ; [.BC63.0020.0004.2F2C] # KANGXI RADICAL SPROUT
+2F2D      ; [.C0C5.0020.0004.2F2D] # KANGXI RADICAL MOUNTAIN
+2F2E      ; [.BED1.0020.0004.2F2E] # KANGXI RADICAL RIVER
+2F2F      ; [.9F9E.0020.0004.2F2F] # KANGXI RADICAL WORK
+32A7      ; [.C593.0020.0006.32A7] # CIRCLED IDEOGRAPH LEFT
+1F22C     ; [.C593.0020.001C.1F22C] # SQUARED CJK UNIFIED IDEOGRAPH-5DE6
+2F30      ; [.A74D.0020.0004.2F30] # KANGXI RADICAL ONESELF
+2F31      ; [.AA6D.0020.0004.2F31] # KANGXI RADICAL TURBAN
+2F32      ; [.9D7F.0020.0004.2F32] # KANGXI RADICAL DRY
+337B      ; [.85BF.0020.001C.337B][.BDFC.0020.001C.337B] # SQUARE ERA NAME HEISEI
+2F33      ; [.CE11.0020.0004.2F33] # KANGXI RADICAL SHORT THREAD
+3245      ; [.CEE2.0020.0006.3245] # CIRCLED IDEOGRAPH KINDERGARTEN
+2F34      ; [.9F8F.0020.0004.2F34] # KANGXI RADICAL DOTTED CLIFF
+2F35      ; [.D04E.0020.0004.2F35] # KANGXI RADICAL LONG STRIDE
+2F36      ; [.9FBB.0020.0004.2F36] # KANGXI RADICAL TWO HANDS
+2F37      ; [.CC86.0020.0004.2F37] # KANGXI RADICAL SHOOT
+2F38      ; [.9F9F.0020.0004.2F38] # KANGXI RADICAL BOW
+2F39      ; [.A763.0020.0004.2F39] # KANGXI RADICAL SNOUT
+2F3A      ; [.C0C6.0020.0004.2F3A] # KANGXI RADICAL BRISTLE
+2F3B      ; [.BBF9.0020.0004.2F3B] # KANGXI RADICAL STEP
+1F21D     ; [.A30D.0020.001C.1F21D] # SQUARED CJK UNIFIED IDEOGRAPH-5F8C
+1F250     ; [.8C4D.0020.0006.1F250] # CIRCLED IDEOGRAPH ADVANTAGE
+2F3C      ; [.B4AB.0020.0004.2F3C] # KANGXI RADICAL HEART
+2F3D      ; [.9C6C.0020.0004.2F3D] # KANGXI RADICAL HALBERD
+2F3E      ; [.A40C.0020.0004.2F3E] # KANGXI RADICAL DOOR
+2F3F      ; [.C0AE.0020.0004.2F3F] # KANGXI RADICAL HAND
+1F210     ; [.C0AE.0020.001C.1F210] # SQUARED CJK UNIFIED IDEOGRAPH-624B
+1F231     ; [.8C38.0020.001C.1F231] # SQUARED CJK UNIFIED IDEOGRAPH-6253
+1F227     ; [.90D6.0020.001C.1F227] # SQUARED CJK UNIFIED IDEOGRAPH-6295
+1F22F     ; [.B753.0020.001C.1F22F] # SQUARED CJK UNIFIED IDEOGRAPH-6307
+1F228     ; [.838E.0020.001C.1F228] # SQUARED CJK UNIFIED IDEOGRAPH-6355
+2F40      ; [.B6EB.0020.0004.2F40] # KANGXI RADICAL BRANCH
+2F41      ; [.85EC.0020.0004.2F41] # KANGXI RADICAL RAP
+2F42      ; [.D38D.0020.0004.2F42] # KANGXI RADICAL SCRIPT
+3246      ; [.D38D.0020.0006.3246] # CIRCLED IDEOGRAPH SCHOOL
+2F43      ; [.8CCF.0020.0004.2F43] # KANGXI RADICAL DIPPER
+1F21B     ; [.9905.0020.001C.1F21B] # SQUARED CJK UNIFIED IDEOGRAPH-6599
+2F44      ; [.AA6F.0020.0004.2F44] # KANGXI RADICAL AXE
+1F21F     ; [.B4BC.0020.001C.1F21F] # SQUARED CJK UNIFIED IDEOGRAPH-65B0
+2F45      ; [.8AA0.0020.0004.2F45] # KANGXI RADICAL SQUARE
+2F46      ; [.D18A.0020.0004.2F46] # KANGXI RADICAL NOT
+2F47      ; [.C2A4.0020.0004.2F47] # KANGXI RADICAL SUN
+3290      ; [.C2A4.0020.0006.3290] # CIRCLED IDEOGRAPH SUN
+337E      ; [.892B.0020.001C.337E][.B773.0020.001C.337E] # SQUARE ERA NAME MEIZI
+1F219     ; [.D15D.0020.001C.1F219] # SQUARED CJK UNIFIED IDEOGRAPH-6620
+337C      ; [.B884.0020.001C.337C][.A237.0020.001C.337C] # SQUARE ERA NAME SYOUWA
+2F48      ; [.D533.0020.0004.2F48] # KANGXI RADICAL SAY
+2F49      ; [.D53C.0020.0004.2F49] # KANGXI RADICAL MOON
+328A      ; [.D53C.0020.0006.328A] # CIRCLED IDEOGRAPH MOON
+1F237     ; [.D53C.0020.001C.1F237] # SQUARED CJK UNIFIED IDEOGRAPH-6708
+3292      ; [.CEC7.0020.0006.3292] # CIRCLED IDEOGRAPH HAVE
+1F236     ; [.CEC7.0020.001C.1F236] # SQUARED CJK UNIFIED IDEOGRAPH-6709
+2F4A      ; [.895F.0020.0004.2F4A] # KANGXI RADICAL TREE
+328D      ; [.895F.0020.0006.328D] # CIRCLED IDEOGRAPH WOOD
+3291      ; [.BA36.0020.0006.3291] # CIRCLED IDEOGRAPH STOCK
+337F      ; [.BA36.0020.001C.337F][.BFBF.0020.001C.337F][.A51A.0020.001C.337F][.C05E.0020.001C.337F] # SQUARE CORPORATION
+2F4B      ; [.AF68.0020.0004.2F4B] # KANGXI RADICAL LACK
+2F4C      ; [.B741.0020.0004.2F4C] # KANGXI RADICAL STOP
+32A3      ; [.BA1E.0020.0006.32A3] # CIRCLED IDEOGRAPH CORRECT
+2F4D      ; [.8C53.0020.0004.2F4D] # KANGXI RADICAL DEATH
+2F4E      ; [.C1D9.0020.0004.2F4E] # KANGXI RADICAL WEAPON
+2F4F      ; [.D18B.0020.0004.2F4F] # KANGXI RADICAL DO NOT
+2E9F      ; [.894D.0020.0004.2E9F] # CJK RADICAL MOTHER
+2F50      ; [.81FD.0020.0004.2F50] # KANGXI RADICAL COMPARE
+2F51      ; [.8727.0020.0004.2F51] # KANGXI RADICAL FUR
+2F52      ; [.BFB6.0020.0004.2F52] # KANGXI RADICAL CLAN
+2F53      ; [.ADDA.0020.0004.2F53] # KANGXI RADICAL STEAM
+2F54      ; [.C26E.0020.0004.2F54] # KANGXI RADICAL WATER
+328C      ; [.C26E.0020.0006.328C] # CIRCLED IDEOGRAPH WATER
+329F      ; [.BA84.0020.0006.329F] # CIRCLED IDEOGRAPH ATTENTION
+1F235     ; [.8793.0020.001C.1F235] # SQUARED CJK UNIFIED IDEOGRAPH-6E80
+1F226     ; [.CF75.0020.001C.1F226] # SQUARED CJK UNIFIED IDEOGRAPH-6F14
+2F55      ; [.A48C.0020.0004.2F55] # KANGXI RADICAL FIRE
+328B      ; [.A48C.0020.0006.328B] # CIRCLED IDEOGRAPH FIRE
+1F21A     ; [.D19A.0020.001C.1F21A] # SQUARED CJK UNIFIED IDEOGRAPH-7121
+2F56      ; [.B88D.0020.0004.2F56] # KANGXI RADICAL CLAW
+2F57      ; [.8BC3.0020.0004.2F57] # KANGXI RADICAL FATHER
+2F58      ; [.CE21.0020.0004.2F58] # KANGXI RADICAL DOUBLE X
+2F59      ; [.8453.0020.0004.2F59] # KANGXI RADICAL HALF TREE TRUNK
+2F5A      ; [.8593.0020.0004.2F5A] # KANGXI RADICAL SLICE
+2F5B      ; [.CD78.0020.0004.2F5B] # KANGXI RADICAL FANG
+2F5C      ; [.9526.0020.0004.2F5C] # KANGXI RADICAL COW
+3295      ; [.9060.0020.0006.3295] # CIRCLED IDEOGRAPH SPECIAL
+2F5D      ; [.B123.0020.0004.2F5D] # KANGXI RADICAL DOG
+2F5E      ; [.B63A.0020.0004.2F5E] # KANGXI RADICAL PROFOUND
+2F5F      ; [.D4A7.0020.0004.2F5F] # KANGXI RADICAL JADE
+2F60      ; [.9E4D.0020.0004.2F60] # KANGXI RADICAL MELON
+2F61      ; [.D216.0020.0004.2F61] # KANGXI RADICAL TILE
+2F62      ; [.9D4E.0020.0004.2F62] # KANGXI RADICAL SWEET
+2F63      ; [.C1A6.0020.0004.2F63] # KANGXI RADICAL LIFE
+1F222     ; [.C1A6.0020.001C.1F222] # SQUARED CJK UNIFIED IDEOGRAPH-751F
+2F64      ; [.D68B.0020.0004.2F64] # KANGXI RADICAL USE
+2F65      ; [.9245.0020.0004.2F65] # KANGXI RADICAL FIELD
+3199      ; [.A814.0020.0014.3199] # IDEOGRAPHIC ANNOTATION FIRST MARK
+1F238     ; [.C125.0020.001C.1F238] # SQUARED CJK UNIFIED IDEOGRAPH-7533
+329A      ; [.9459.0020.0006.329A] # CIRCLED IDEOGRAPH MALE
+2F66      ; [.852E.0020.0004.2F66] # KANGXI RADICAL BOLT OF CLOTH
+2F67      ; [.93F9.0020.0004.2F67] # KANGXI RADICAL SICKNESS
+2F68      ; [.8046.0020.0004.2F68] # KANGXI RADICAL DOTTED TENT
+2F69      ; [.80BD.0020.0004.2F69] # KANGXI RADICAL WHITE
+2F6A      ; [.8504.0020.0004.2F6A] # KANGXI RADICAL SKIN
+2F6B      ; [.890B.0020.0004.2F6B] # KANGXI RADICAL DISH
+32AC      ; [.A9B3.0020.0006.32AC] # CIRCLED IDEOGRAPH SUPERVISE
+2F6C      ; [.8962.0020.0004.2F6C] # KANGXI RADICAL EYE
+2F6D      ; [.8728.0020.0004.2F6D] # KANGXI RADICAL SPEAR
+2F6E      ; [.BFA9.0020.0004.2F6E] # KANGXI RADICAL ARROW
+2F6F      ; [.BF87.0020.0004.2F6F] # KANGXI RADICAL STONE
+2F70      ; [.BFBD.0020.0004.2F70] # KANGXI RADICAL SPIRIT
+3293      ; [.C05E.0020.0006.3293] # CIRCLED IDEOGRAPH SOCIETY
+3297      ; [.BA90.0020.0006.3297] # CIRCLED IDEOGRAPH CONGRATULATION
+1F232     ; [.AAB2.0020.001C.1F232] # SQUARED CJK UNIFIED IDEOGRAPH-7981
+2F71      ; [.C2BD.0020.0004.2F71] # KANGXI RADICAL TRACK
+2F72      ; [.A231.0020.0004.2F72] # KANGXI RADICAL GRAIN
+3299      ; [.8871.0020.0006.3299] # CIRCLED IDEOGRAPH SECRET
+2F73      ; [.B5ED.0020.0004.2F73] # KANGXI RADICAL CAVE
+1F233     ; [.A211.0020.001C.1F233] # SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+2F74      ; [.9808.0020.0004.2F74] # KANGXI RADICAL STAND
+2F75      ; [.BA53.0020.0004.2F75] # KANGXI RADICAL BAMBOO
+3247      ; [.BA0D.0020.0006.3247] # CIRCLED IDEOGRAPH KOTO
+2F76      ; [.8856.0020.0004.2F76] # KANGXI RADICAL RICE
+2F77      ; [.8868.0020.0004.2F77] # KANGXI RADICAL SILK
+1F221     ; [.BB7F.0020.001C.1F221] # SQUARED CJK UNIFIED IDEOGRAPH-7D42
+2F78      ; [.89F6.0020.0004.2F78] # KANGXI RADICAL JAR
+2F79      ; [.D3D1.0020.0004.2F79] # KANGXI RADICAL NET
+2F7A      ; [.D08F.0020.0004.2F7A] # KANGXI RADICAL SHEEP
+2F7B      ; [.D47D.0020.0004.2F7B] # KANGXI RADICAL FEATHER
+2F7C      ; [.96B7.0020.0004.2F7C] # KANGXI RADICAL OLD
+2F7D      ; [.CBA4.0020.0004.2F7D] # KANGXI RADICAL AND
+2F7E      ; [.966B.0020.0004.2F7E] # KANGXI RADICAL PLOW
+2F7F      ; [.CBBF.0020.0004.2F7F] # KANGXI RADICAL EAR
+2F80      ; [.D4AA.0020.0004.2F80] # KANGXI RADICAL BRUSH
+2F81      ; [.C2D4.0020.0004.2F81] # KANGXI RADICAL MEAT
+2F82      ; [.BD5B.0020.0004.2F82] # KANGXI RADICAL MINISTER
+2F83      ; [.C457.0020.0004.2F83] # KANGXI RADICAL SELF
+2F84      ; [.B766.0020.0004.2F84] # KANGXI RADICAL ARRIVE
+2F85      ; [.A96D.0020.0004.2F85] # KANGXI RADICAL MORTAR
+2F86      ; [.C053.0020.0004.2F86] # KANGXI RADICAL TONGUE
+2F87      ; [.BEE4.0020.0004.2F87] # KANGXI RADICAL OPPOSE
+2F88      ; [.B8B0.0020.0004.2F88] # KANGXI RADICAL BOAT
+2F89      ; [.9D94.0020.0004.2F89] # KANGXI RADICAL STOPPING
+2F8A      ; [.C870.0020.0004.2F8A] # KANGXI RADICAL COLOR
+2F8B      ; [.C6C2.0020.0004.2F8B] # KANGXI RADICAL GRASS
+2F8C      ; [.A3B4.0020.0004.2F8C] # KANGXI RADICAL TIGER
+2F8D      ; [.BF4A.0020.0004.2F8D] # KANGXI RADICAL INSECT
+2F8E      ; [.B604.0020.0004.2F8E] # KANGXI RADICAL BLOOD
+2F8F      ; [.B543.0020.0004.2F8F] # KANGXI RADICAL WALK ENCLOSURE
+2F90      ; [.CBE0.0020.0004.2F90] # KANGXI RADICAL CLOTHES
+2F91      ; [.CD9C.0020.0004.2F91] # KANGXI RADICAL WEST
+2F92      ; [.AA1C.0020.0004.2F92] # KANGXI RADICAL SEE
+2F93      ; [.A8EB.0020.0004.2F93] # KANGXI RADICAL HORN
+1F216     ; [.A898.0020.001C.1F216] # SQUARED CJK UNIFIED IDEOGRAPH-89E3
+2F94      ; [.CF21.0020.0004.2F94] # KANGXI RADICAL SPEECH
+2F95      ; [.9E07.0020.0004.2F95] # KANGXI RADICAL VALLEY
+2F96      ; [.8CD0.0020.0004.2F96] # KANGXI RADICAL BEAN
+2F97      ; [.BFAB.0020.0004.2F97] # KANGXI RADICAL PIG
+2F98      ; [.B76C.0020.0004.2F98] # KANGXI RADICAL BADGER
+2F99      ; [.80EB.0020.0004.2F99] # KANGXI RADICAL SHELL
+3296      ; [.C69F.0020.0006.3296] # CIRCLED IDEOGRAPH FINANCIAL
+1F223     ; [.8A4B.0020.001C.1F223] # SQUARED CJK UNIFIED IDEOGRAPH-8CA9
+32AE      ; [.C421.0020.0006.32AE] # CIRCLED IDEOGRAPH RESOURCE
+2F9A      ; [.BBFE.0020.0004.2F9A] # KANGXI RADICAL RED
+2F9B      ; [.C50C.0020.0004.2F9B] # KANGXI RADICAL RUN
+1F230     ; [.C50C.0020.001C.1F230] # SQUARED CJK UNIFIED IDEOGRAPH-8D70
+2F9C      ; [.C571.0020.0004.2F9C] # KANGXI RADICAL FOOT
+2F9D      ; [.C129.0020.0004.2F9D] # KANGXI RADICAL BODY
+2F9E      ; [.BC58.0020.0004.2F9E] # KANGXI RADICAL CART
+2F9F      ; [.B4AE.0020.0004.2F9F] # KANGXI RADICAL BITTER
+2FA0      ; [.BD5F.0020.0004.2FA0] # KANGXI RADICAL MORNING
+2FA1      ; [.BEA0.0020.0004.2FA1] # KANGXI RADICAL WALK
+1F22B     ; [.CEBC.0020.001C.1F22B] # SQUARED CJK UNIFIED IDEOGRAPH-904A
+329C      ; [.BFFC.0020.0006.329C] # CIRCLED IDEOGRAPH SUITABLE
+2FA2      ; [.CC9C.0020.0004.2FA2] # KANGXI RADICAL CITY
+2FA3      ; [.CECA.0020.0004.2FA3] # KANGXI RADICAL WINE
+2FA4      ; [.8308.0020.0004.2FA4] # KANGXI RADICAL DISTINGUISH
+2FA5      ; [.97EB.0020.0004.2FA5] # KANGXI RADICAL VILLAGE
+2FA6      ; [.AA72.0020.0004.2FA6] # KANGXI RADICAL GOLD
+328E      ; [.AA72.0020.0006.328E] # CIRCLED IDEOGRAPH METAL
+2FA7      ; [.B9D1.0020.0004.2FA7] # KANGXI RADICAL LONG
+2FA8      ; [.87B7.0020.0004.2FA8] # KANGXI RADICAL GATE
+2FA9      ; [.8BCB.0020.0004.2FA9] # KANGXI RADICAL MOUND
+2FAA      ; [.9819.0020.0004.2FAA] # KANGXI RADICAL SLAVE
+2FAB      ; [.BAFD.0020.0004.2FAB] # KANGXI RADICAL SHORT TAILED BIRD
+2FAC      ; [.D47F.0020.0004.2FAC] # KANGXI RADICAL RAIN
+2FAD      ; [.B01B.0020.0004.2FAD] # KANGXI RADICAL BLUE
+2FAE      ; [.89A9.0020.0004.2FAE] # KANGXI RADICAL WRONG
+2FAF      ; [.88EB.0020.0004.2FAF] # KANGXI RADICAL FACE
+2FB0      ; [.9C8F.0020.0004.2FB0] # KANGXI RADICAL LEATHER
+2FB1      ; [.D288.0020.0004.2FB1] # KANGXI RADICAL TANNED LEATHER
+2FB2      ; [.A965.0020.0004.2FB2] # KANGXI RADICAL LEEK
+2FB3      ; [.CFF8.0020.0004.2FB3] # KANGXI RADICAL SOUND
+2FB4      ; [.CDDC.0020.0004.2FB4] # KANGXI RADICAL LEAF
+32A0      ; [.B520.0020.0006.32A0] # CIRCLED IDEOGRAPH ITEM
+2FB5      ; [.8AD5.0020.0004.2FB5] # KANGXI RADICAL WIND
+2FB6      ; [.89AA.0020.0004.2FB6] # KANGXI RADICAL FLY
+2FB7      ; [.BF93.0020.0004.2FB7] # KANGXI RADICAL EAT
+2FB8      ; [.C0B1.0020.0004.2FB8] # KANGXI RADICAL HEAD
+2FB9      ; [.B4E1.0020.0004.2FB9] # KANGXI RADICAL FRAGRANT
+2FBA      ; [.8637.0020.0004.2FBA] # KANGXI RADICAL HORSE
+2FBB      ; [.9E10.0020.0004.2FBB] # KANGXI RADICAL BONE
+2FBC      ; [.9CEC.0020.0004.2FBC] # KANGXI RADICAL TALL
+2FBD      ; [.82AD.0020.0004.2FBD] # KANGXI RADICAL HAIR
+2FBE      ; [.8CD4.0020.0004.2FBE] # KANGXI RADICAL FIGHT
+2FBF      ; [.BDCE.0020.0004.2FBF] # KANGXI RADICAL SACRIFICIAL WINE
+2FC0      ; [.9C94.0020.0004.2FC0] # KANGXI RADICAL CAULDRON
+2FC1      ; [.9EF1.0020.0004.2FC1] # KANGXI RADICAL GHOST
+2FC2      ; [.D436.0020.0004.2FC2] # KANGXI RADICAL FISH
+2FC3      ; [.9519.0020.0004.2FC3] # KANGXI RADICAL BIRD
+2FC4      ; [.9AD5.0020.0004.2FC4] # KANGXI RADICAL SALT
+2FC5      ; [.9AFD.0020.0004.2FC5] # KANGXI RADICAL DEER
+2FC6      ; [.86CC.0020.0004.2FC6] # KANGXI RADICAL WHEAT
+2FC7      ; [.862D.0020.0004.2FC7] # KANGXI RADICAL HEMP
+2FC8      ; [.A607.0020.0004.2FC8] # KANGXI RADICAL YELLOW
+2FC9      ; [.C20C.0020.0004.2FC9] # KANGXI RADICAL MILLET
+2FCA      ; [.A2AD.0020.0004.2FCA] # KANGXI RADICAL BLACK
+2FCB      ; [.B762.0020.0004.2FCB] # KANGXI RADICAL EMBROIDERY
+2FCC      ; [.88E4.0020.0004.2FCC] # KANGXI RADICAL FROG
+2FCD      ; [.8ED2.0020.0004.2FCD] # KANGXI RADICAL TRIPOD
+2FCE      ; [.9E1D.0020.0004.2FCE] # KANGXI RADICAL DRUM
+2FCF      ; [.C210.0020.0004.2FCF] # KANGXI RADICAL RAT
+2FD0      ; [.81FB.0020.0004.2FD0] # KANGXI RADICAL NOSE
+2FD1      ; [.ADA1.0020.0004.2FD1] # KANGXI RADICAL EVEN
+2FD2      ; [.BBF7.0020.0004.2FD2] # KANGXI RADICAL TOOTH
+2FD3      ; [.9BE4.0020.0004.2FD3] # KANGXI RADICAL DRAGON
+2FD4      ; [.9ED7.0020.0004.2FD4] # KANGXI RADICAL TURTLE
+2EF3      ; [.9EB8.0020.0004.2EF3] # CJK RADICAL C-SIMPLIFIED TURTLE
+2FD5      ; [.D560.0020.0004.2FD5] # KANGXI RADICAL FLUTE
+F967      ; [.8392.0020.0002.4E0D] # CJK COMPATIBILITY IDEOGRAPH-F967
+FA70      ; [.836F.0020.0002.4E26] # CJK COMPATIBILITY IDEOGRAPH-FA70
+F905      ; [.BEEB.0020.0002.4E32] # CJK COMPATIBILITY IDEOGRAPH-F905
+2F801     ; [.D334.0020.0002.4E38] # CJK COMPATIBILITY IDEOGRAPH-2F801
+F95E      ; [.8CEB.0020.0002.4E39] # CJK COMPATIBILITY IDEOGRAPH-F95E
+2F800     ; [.980B.0020.0002.4E3D] # CJK COMPATIBILITY IDEOGRAPH-2F800
+2F802     ; [.CC07.0020.0002.4E41] # CJK COMPATIBILITY IDEOGRAPH-2F802
+F91B      ; [.9BA8.0020.0002.4E82] # CJK COMPATIBILITY IDEOGRAPH-F91B
+F9BA      ; [.9615.0020.0002.4E86] # CJK COMPATIBILITY IDEOGRAPH-F9BA
+F977      ; [.9A32.0020.0002.4EAE] # CJK COMPATIBILITY IDEOGRAPH-F977
+F9FD      ; [.C151.0020.0002.4EC0] # CJK COMPATIBILITY IDEOGRAPH-F9FD
+2F819     ; [.834F.0020.0002.4ECC] # CJK COMPATIBILITY IDEOGRAPH-2F819
+F9A8      ; [.9A9B.0020.0002.4EE4] # CJK COMPATIBILITY IDEOGRAPH-F9A8
+2F804     ; [.94AF.0020.0002.4F60] # CJK COMPATIBILITY IDEOGRAPH-2F804
+FA73      ; [.B546.0020.0002.4F80] # CJK COMPATIBILITY IDEOGRAPH-FA73
+F92D      ; [.9619.0020.0002.4F86] # CJK COMPATIBILITY IDEOGRAPH-F92D
+F9B5      ; [.9811.0020.0002.4F8B] # CJK COMPATIBILITY IDEOGRAPH-F9B5
+FA30      ; [.D1B4.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-FA30
+2F805     ; [.D1B4.0020.0002.4FAE] # CJK COMPATIBILITY IDEOGRAPH-2F805
+2F806     ; [.935A.0020.0002.4FBB] # CJK COMPATIBILITY IDEOGRAPH-2F806
+F965      ; [.830C.0020.0002.4FBF] # CJK COMPATIBILITY IDEOGRAPH-F965
+2F807     ; [.8373.0020.0002.5002] # CJK COMPATIBILITY IDEOGRAPH-2F807
+F9D4      ; [.9BB2.0020.0002.502B] # CJK COMPATIBILITY IDEOGRAPH-F9D4
+2F808     ; [.C477.0020.0002.507A] # CJK COMPATIBILITY IDEOGRAPH-2F808
+2F809     ; [.80FF.0020.0002.5099] # CJK COMPATIBILITY IDEOGRAPH-2F809
+2F80B     ; [.B522.0020.0002.50CF] # CJK COMPATIBILITY IDEOGRAPH-2F80B
+F9BB      ; [.98D4.0020.0002.50DA] # CJK COMPATIBILITY IDEOGRAPH-F9BB
+FA31      ; [.C90E.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-FA31
+2F80A     ; [.C90E.0020.0002.50E7] # CJK COMPATIBILITY IDEOGRAPH-2F80A
+FA0C      ; [.D1CB.0020.0002.5140] # CJK COMPATIBILITY IDEOGRAPH-FA0C
+FA74      ; [.BF37.0020.0002.5145] # CJK COMPATIBILITY IDEOGRAPH-FA74
+FA32      ; [.88D2.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-FA32
+2F80E     ; [.88D2.0020.0002.514D] # CJK COMPATIBILITY IDEOGRAPH-2F80E
+2F80F     ; [.92F0.0020.0002.5154] # CJK COMPATIBILITY IDEOGRAPH-2F80F
+2F810     ; [.A627.0020.0002.5164] # CJK COMPATIBILITY IDEOGRAPH-2F810
+2F814     ; [.9422.0020.0002.5167] # CJK COMPATIBILITY IDEOGRAPH-2F814
+FA72      ; [.B0F4.0020.0002.5168] # CJK COMPATIBILITY IDEOGRAPH-FA72
+F978      ; [.9A28.0020.0002.5169] # CJK COMPATIBILITY IDEOGRAPH-F978
+F9D1      ; [.9953.0020.0002.516D] # CJK COMPATIBILITY IDEOGRAPH-F9D1
+2F811     ; [.ABF3.0020.0002.5177] # CJK COMPATIBILITY IDEOGRAPH-2F811
+FA75      ; [.A7A9.0020.0002.5180] # CJK COMPATIBILITY IDEOGRAPH-FA75
+2F815     ; [.C4C2.0020.0002.518D] # CJK COMPATIBILITY IDEOGRAPH-2F815
+2F8D2     ; [.874F.0020.0002.5192] # CJK COMPATIBILITY IDEOGRAPH-2F8D2
+2F8D3     ; [.88DA.0020.0002.5195] # CJK COMPATIBILITY IDEOGRAPH-2F8D3
+2F817     ; [.C3F9.0020.0002.5197] # CJK COMPATIBILITY IDEOGRAPH-2F817
+2F818     ; [.D571.0020.0002.51A4] # CJK COMPATIBILITY IDEOGRAPH-2F818
+2F81A     ; [.8FE3.0020.0002.51AC] # CJK COMPATIBILITY IDEOGRAPH-2F81A
+FA71      ; [.A1F5.0020.0002.51B5] # CJK COMPATIBILITY IDEOGRAPH-FA71
+2F81B     ; [.A1F5.0020.0002.51B5] # CJK COMPATIBILITY IDEOGRAPH-2F81B
+F92E      ; [.9793.0020.0002.51B7] # CJK COMPATIBILITY IDEOGRAPH-F92E
+F979      ; [.9A18.0020.0002.51C9] # CJK COMPATIBILITY IDEOGRAPH-F979
+F955      ; [.9A51.0020.0002.51CC] # CJK COMPATIBILITY IDEOGRAPH-F955
+F954      ; [.99F8.0020.0002.51DC] # CJK COMPATIBILITY IDEOGRAPH-F954
+FA15      ; [.B1BC.0020.0002.51DE] # CJK COMPATIBILITY IDEOGRAPH-FA15
+2F81D     ; [.AF59.0020.0002.51F5] # CJK COMPATIBILITY IDEOGRAPH-2F81D
+2F81E     ; [.C305.0020.0002.5203] # CJK COMPATIBILITY IDEOGRAPH-2F81E
+FA00      ; [.AE24.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-FA00
+2F850     ; [.AE24.0020.0002.5207] # CJK COMPATIBILITY IDEOGRAPH-2F850
+F99C      ; [.98A1.0020.0002.5217] # CJK COMPATIBILITY IDEOGRAPH-F99C
+F9DD      ; [.980C.0020.0002.5229] # CJK COMPATIBILITY IDEOGRAPH-F9DD
+F9FF      ; [.C66A.0020.0002.523A] # CJK COMPATIBILITY IDEOGRAPH-F9FF
+2F820     ; [.A014.0020.0002.523B] # CJK COMPATIBILITY IDEOGRAPH-2F820
+2F821     ; [.9B64.0020.0002.5246] # CJK COMPATIBILITY IDEOGRAPH-2F821
+2F822     ; [.9C7B.0020.0002.5272] # CJK COMPATIBILITY IDEOGRAPH-2F822
+2F823     ; [.BD2E.0020.0002.5277] # CJK COMPATIBILITY IDEOGRAPH-2F823
+F9C7      ; [.9926.0020.0002.5289] # CJK COMPATIBILITY IDEOGRAPH-F9C7
+F98A      ; [.9804.0020.0002.529B] # CJK COMPATIBILITY IDEOGRAPH-F98A
+F99D      ; [.98A2.0020.0002.52A3] # CJK COMPATIBILITY IDEOGRAPH-F99D
+2F992     ; [.969D.0020.0002.52B3] # CJK COMPATIBILITY IDEOGRAPH-2F992
+FA76      ; [.D671.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-FA76
+2F825     ; [.D671.0020.0002.52C7] # CJK COMPATIBILITY IDEOGRAPH-2F825
+FA33      ; [.88D5.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-FA33
+2F826     ; [.88D5.0020.0002.52C9] # CJK COMPATIBILITY IDEOGRAPH-2F826
+F952      ; [.964C.0020.0002.52D2] # CJK COMPATIBILITY IDEOGRAPH-F952
+F92F      ; [.96A5.0020.0002.52DE] # CJK COMPATIBILITY IDEOGRAPH-F92F
+FA34      ; [.AFAD.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-FA34
+2F827     ; [.AFAD.0020.0002.52E4] # CJK COMPATIBILITY IDEOGRAPH-2F827
+F97F      ; [.985C.0020.0002.52F5] # CJK COMPATIBILITY IDEOGRAPH-F97F
+FA77      ; [.C096.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-FA77
+2F828     ; [.C096.0020.0002.52FA] # CJK COMPATIBILITY IDEOGRAPH-2F828
+2F829     ; [.811B.0020.0002.5305] # CJK COMPATIBILITY IDEOGRAPH-2F829
+2F82A     ; [.C7B7.0020.0002.5306] # CJK COMPATIBILITY IDEOGRAPH-2F82A
+F963      ; [.80E5.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-F963
+2F82B     ; [.80E5.0020.0002.5317] # CJK COMPATIBILITY IDEOGRAPH-2F82B
+F9EB      ; [.94CA.0020.0002.533F] # CJK COMPATIBILITY IDEOGRAPH-F9EB
+2F82C     ; [.A518.0020.0002.5349] # CJK COMPATIBILITY IDEOGRAPH-2F82C
+FA35      ; [.80D7.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-FA35
+2F82D     ; [.80D7.0020.0002.5351] # CJK COMPATIBILITY IDEOGRAPH-2F82D
+2F82E     ; [.807E.0020.0002.535A] # CJK COMPATIBILITY IDEOGRAPH-2F82E
+2F82F     ; [.A6FF.0020.0002.5373] # CJK COMPATIBILITY IDEOGRAPH-2F82F
+F91C      ; [.9BA5.0020.0002.5375] # CJK COMPATIBILITY IDEOGRAPH-F91C
+2F830     ; [.A70A.0020.0002.537D] # CJK COMPATIBILITY IDEOGRAPH-2F830
+2F831     ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F831
+2F832     ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F832
+2F833     ; [.B020.0020.0002.537F] # CJK COMPATIBILITY IDEOGRAPH-2F833
+F96B      ; [.C6D2.0020.0002.53C3] # CJK COMPATIBILITY IDEOGRAPH-F96B
+2F836     ; [.A6FB.0020.0002.53CA] # CJK COMPATIBILITY IDEOGRAPH-2F836
+2F837     ; [.C8D2.0020.0002.53DF] # CJK COMPATIBILITY IDEOGRAPH-2F837
+F906      ; [.ABEE.0020.0002.53E5] # CJK COMPATIBILITY IDEOGRAPH-F906
+2F839     ; [.A922.0020.0002.53EB] # CJK COMPATIBILITY IDEOGRAPH-2F839
+2F83A     ; [.BBFA.0020.0002.53F1] # CJK COMPATIBILITY IDEOGRAPH-2F83A
+2F83B     ; [.CE13.0020.0002.5406] # CJK COMPATIBILITY IDEOGRAPH-2F83B
+F9DE      ; [.9809.0020.0002.540F] # CJK COMPATIBILITY IDEOGRAPH-F9DE
+F9ED      ; [.9A03.0020.0002.541D] # CJK COMPATIBILITY IDEOGRAPH-F9ED
+2F83D     ; [.B16A.0020.0002.5438] # CJK COMPATIBILITY IDEOGRAPH-2F83D
+F980      ; [.9C24.0020.0002.5442] # CJK COMPATIBILITY IDEOGRAPH-F980
+2F83E     ; [.BDFE.0020.0002.5448] # CJK COMPATIBILITY IDEOGRAPH-2F83E
+2F83F     ; [.B8B3.0020.0002.5468] # CJK COMPATIBILITY IDEOGRAPH-2F83F
+2F83C     ; [.B473.0020.0002.549E] # CJK COMPATIBILITY IDEOGRAPH-2F83C
+2F840     ; [.CA56.0020.0002.54A2] # CJK COMPATIBILITY IDEOGRAPH-2F840
+F99E      ; [.CF9A.0020.0002.54BD] # CJK COMPATIBILITY IDEOGRAPH-F99E
+2F841     ; [.8891.0020.0002.54F6] # CJK COMPATIBILITY IDEOGRAPH-2F841
+2F842     ; [.9144.0020.0002.5510] # CJK COMPATIBILITY IDEOGRAPH-2F842
+2F843     ; [.ADCE.0020.0002.5553] # CJK COMPATIBILITY IDEOGRAPH-2F843
+FA79      ; [.90B6.0020.0002.5555] # CJK COMPATIBILITY IDEOGRAPH-FA79
+2F844     ; [.B415.0020.0002.5563] # CJK COMPATIBILITY IDEOGRAPH-2F844
+2F845     ; [.C100.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F845
+2F846     ; [.C100.0020.0002.5584] # CJK COMPATIBILITY IDEOGRAPH-2F846
+F90B      ; [.95E6.0020.0002.5587] # CJK COMPATIBILITY IDEOGRAPH-F90B
+FA7A      ; [.A52B.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-FA7A
+2F847     ; [.A52B.0020.0002.5599] # CJK COMPATIBILITY IDEOGRAPH-2F847
+FA36      ; [.A22D.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA36
+FA78      ; [.A22D.0020.0002.559D] # CJK COMPATIBILITY IDEOGRAPH-FA78
+2F848     ; [.BBB6.0020.0002.55AB] # CJK COMPATIBILITY IDEOGRAPH-2F848
+2F849     ; [.B7F6.0020.0002.55B3] # CJK COMPATIBILITY IDEOGRAPH-2F849
+FA0D      ; [.A422.0020.0002.55C0] # CJK COMPATIBILITY IDEOGRAPH-FA0D
+2F84A     ; [.CE34.0020.0002.55C2] # CJK COMPATIBILITY IDEOGRAPH-2F84A
+FA7B      ; [.D21D.0020.0002.55E2] # CJK COMPATIBILITY IDEOGRAPH-FA7B
+FA37      ; [.912C.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-FA37
+2F84C     ; [.912C.0020.0002.5606] # CJK COMPATIBILITY IDEOGRAPH-2F84C
+2F84E     ; [.A2BD.0020.0002.5651] # CJK COMPATIBILITY IDEOGRAPH-2F84E
+FA38      ; [.ADFD.0020.0002.5668] # CJK COMPATIBILITY IDEOGRAPH-FA38
+2F84F     ; [.847B.0020.0002.5674] # CJK COMPATIBILITY IDEOGRAPH-2F84F
+F9A9      ; [.9A44.0020.0002.56F9] # CJK COMPATIBILITY IDEOGRAPH-F9A9
+2F84B     ; [.92DB.0020.0002.5716] # CJK COMPATIBILITY IDEOGRAPH-2F84B
+2F84D     ; [.92DC.0020.0002.5717] # CJK COMPATIBILITY IDEOGRAPH-2F84D
+2F855     ; [.B548.0020.0002.578B] # CJK COMPATIBILITY IDEOGRAPH-2F855
+2F852     ; [.BE03.0020.0002.57CE] # CJK COMPATIBILITY IDEOGRAPH-2F852
+2F853     ; [.B720.0020.0002.57F4] # CJK COMPATIBILITY IDEOGRAPH-2F853
+2F854     ; [.92F2.0020.0002.580D] # CJK COMPATIBILITY IDEOGRAPH-2F854
+2F857     ; [.8151.0020.0002.5831] # CJK COMPATIBILITY IDEOGRAPH-2F857
+2F856     ; [.C642.0020.0002.5832] # CJK COMPATIBILITY IDEOGRAPH-2F856
+FA39      ; [.85EA.0020.0002.5840] # CJK COMPATIBILITY IDEOGRAPH-FA39
+FA10      ; [.BB92.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA10
+FA7C      ; [.BB92.0020.0002.585A] # CJK COMPATIBILITY IDEOGRAPH-FA7C
+F96C      ; [.C892.0020.0002.585E] # CJK COMPATIBILITY IDEOGRAPH-F96C
+FA3A      ; [.86A0.0020.0002.58A8] # CJK COMPATIBILITY IDEOGRAPH-FA3A
+2F858     ; [.8E0D.0020.0002.58AC] # CJK COMPATIBILITY IDEOGRAPH-2F858
+FA7D      ; [.8A7A.0020.0002.58B3] # CJK COMPATIBILITY IDEOGRAPH-FA7D
+F94A      ; [.9679.0020.0002.58D8] # CJK COMPATIBILITY IDEOGRAPH-F94A
+F942      ; [.9C0B.0020.0002.58DF] # CJK COMPATIBILITY IDEOGRAPH-F942
+2F851     ; [.BB63.0020.0002.58EE] # CJK COMPATIBILITY IDEOGRAPH-2F851
+2F85A     ; [.86C6.0020.0002.58F2] # CJK COMPATIBILITY IDEOGRAPH-2F85A
+2F85B     ; [.A3DA.0020.0002.58F7] # CJK COMPATIBILITY IDEOGRAPH-2F85B
+2F85C     ; [.8AFA.0020.0002.5906] # CJK COMPATIBILITY IDEOGRAPH-2F85C
+2F85D     ; [.8F35.0020.0002.591A] # CJK COMPATIBILITY IDEOGRAPH-2F85D
+2F85E     ; [.882A.0020.0002.5922] # CJK COMPATIBILITY IDEOGRAPH-2F85E
+FA7E      ; [.CF5B.0020.0002.5944] # CJK COMPATIBILITY IDEOGRAPH-FA7E
+F90C      ; [.9410.0020.0002.5948] # CJK COMPATIBILITY IDEOGRAPH-F90C
+F909      ; [.ADE9.0020.0002.5951] # CJK COMPATIBILITY IDEOGRAPH-F909
+FA7F      ; [.8193.0020.0002.5954] # CJK COMPATIBILITY IDEOGRAPH-FA7F
+2F85F     ; [.C04A.0020.0002.5962] # CJK COMPATIBILITY IDEOGRAPH-2F85F
+F981      ; [.95CC.0020.0002.5973] # CJK COMPATIBILITY IDEOGRAPH-F981
+2F865     ; [.8598.0020.0002.59D8] # CJK COMPATIBILITY IDEOGRAPH-2F865
+2F862     ; [.A6AD.0020.0002.59EC] # CJK COMPATIBILITY IDEOGRAPH-2F862
+2F863     ; [.D42A.0020.0002.5A1B] # CJK COMPATIBILITY IDEOGRAPH-2F863
+2F864     ; [.935B.0020.0002.5A27] # CJK COMPATIBILITY IDEOGRAPH-2F864
+FA80      ; [.8232.0020.0002.5A62] # CJK COMPATIBILITY IDEOGRAPH-FA80
+2F866     ; [.8BDA.0020.0002.5A66] # CJK COMPATIBILITY IDEOGRAPH-2F866
+2F986     ; [.D15F.0020.0002.5AB5] # CJK COMPATIBILITY IDEOGRAPH-2F986
+2F869     ; [.C2B1.0020.0002.5B08] # CJK COMPATIBILITY IDEOGRAPH-2F869
+FA81      ; [.C657.0020.0002.5B28] # CJK COMPATIBILITY IDEOGRAPH-FA81
+2F86A     ; [.9741.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86A
+2F86B     ; [.9741.0020.0002.5B3E] # CJK COMPATIBILITY IDEOGRAPH-2F86B
+FA04      ; [.B874.0020.0002.5B85] # CJK COMPATIBILITY IDEOGRAPH-FA04
+2F86D     ; [.D575.0020.0002.5BC3] # CJK COMPATIBILITY IDEOGRAPH-2F86D
+2F86E     ; [.B7AB.0020.0002.5BD8] # CJK COMPATIBILITY IDEOGRAPH-2F86E
+F95F      ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F95F
+F9AA      ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-F9AA
+2F86F     ; [.9570.0020.0002.5BE7] # CJK COMPATIBILITY IDEOGRAPH-2F86F
+F9BC      ; [.98DC.0020.0002.5BEE] # CJK COMPATIBILITY IDEOGRAPH-F9BC
+2F870     ; [.8143.0020.0002.5BF3] # CJK COMPATIBILITY IDEOGRAPH-2F870
+2F872     ; [.C0B3.0020.0002.5BFF] # CJK COMPATIBILITY IDEOGRAPH-2F872
+2F873     ; [.AAD5.0020.0002.5C06] # CJK COMPATIBILITY IDEOGRAPH-2F873
+2F875     ; [.CE9E.0020.0002.5C22] # CJK COMPATIBILITY IDEOGRAPH-2F875
+F9BD      ; [.9522.0020.0002.5C3F] # CJK COMPATIBILITY IDEOGRAPH-F9BD
+2F877     ; [.92CA.0020.0002.5C60] # CJK COMPATIBILITY IDEOGRAPH-2F877
+F94B      ; [.9C34.0020.0002.5C62] # CJK COMPATIBILITY IDEOGRAPH-F94B
+FA3B      ; [.C71D.0020.0002.5C64] # CJK COMPATIBILITY IDEOGRAPH-FA3B
+F9DF      ; [.9C36.0020.0002.5C65] # CJK COMPATIBILITY IDEOGRAPH-F9DF
+FA3C      ; [.BC63.0020.0002.5C6E] # CJK COMPATIBILITY IDEOGRAPH-FA3C
+2F878     ; [.BC63.0020.0002.5C6E] # CJK COMPATIBILITY IDEOGRAPH-2F878
+2F87A     ; [.AEFF.0020.0002.5C8D] # CJK COMPATIBILITY IDEOGRAPH-2F87A
+2F879     ; [.B3C8.0020.0002.5CC0] # CJK COMPATIBILITY IDEOGRAPH-2F879
+F9D5      ; [.9BB6.0020.0002.5D19] # CJK COMPATIBILITY IDEOGRAPH-F9D5
+2F87C     ; [.CF66.0020.0002.5D43] # CJK COMPATIBILITY IDEOGRAPH-2F87C
+F921      ; [.970A.0020.0002.5D50] # CJK COMPATIBILITY IDEOGRAPH-F921
+2F87F     ; [.C416.0020.0002.5D6B] # CJK COMPATIBILITY IDEOGRAPH-2F87F
+2F87E     ; [.8E87.0020.0002.5D6E] # CJK COMPATIBILITY IDEOGRAPH-2F87E
+2F880     ; [.BD30.0020.0002.5D7C] # CJK COMPATIBILITY IDEOGRAPH-2F880
+2F9F4     ; [.B1BE.0020.0002.5DB2] # CJK COMPATIBILITY IDEOGRAPH-2F9F4
+F9AB      ; [.9A9A.0020.0002.5DBA] # CJK COMPATIBILITY IDEOGRAPH-F9AB
+2F881     ; [.B68C.0020.0002.5DE1] # CJK COMPATIBILITY IDEOGRAPH-2F881
+2F882     ; [.BC98.0020.0002.5DE2] # CJK COMPATIBILITY IDEOGRAPH-2F882
+2F884     ; [.B6C0.0020.0002.5DFD] # CJK COMPATIBILITY IDEOGRAPH-2F884
+2F885     ; [.C26F.0020.0002.5E28] # CJK COMPATIBILITY IDEOGRAPH-2F885
+2F886     ; [.8758.0020.0002.5E3D] # CJK COMPATIBILITY IDEOGRAPH-2F886
+2F887     ; [.8A7B.0020.0002.5E69] # CJK COMPATIBILITY IDEOGRAPH-2F887
+F98E      ; [.9537.0020.0002.5E74] # CJK COMPATIBILITY IDEOGRAPH-F98E
+FA01      ; [.8F28.0020.0002.5EA6] # CJK COMPATIBILITY IDEOGRAPH-FA01
+2F88B     ; [.8372.0020.0002.5EB0] # CJK COMPATIBILITY IDEOGRAPH-2F88B
+2F88C     ; [.8233.0020.0002.5EB3] # CJK COMPATIBILITY IDEOGRAPH-2F88C
+2F88D     ; [.C22B.0020.0002.5EB6] # CJK COMPATIBILITY IDEOGRAPH-2F88D
+F9A2      ; [.996E.0020.0002.5EC9] # CJK COMPATIBILITY IDEOGRAPH-F9A2
+F928      ; [.9766.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-F928
+2F88E     ; [.9766.0020.0002.5ECA] # CJK COMPATIBILITY IDEOGRAPH-2F88E
+FA82      ; [.CAF7.0020.0002.5ED2] # CJK COMPATIBILITY IDEOGRAPH-FA82
+FA0B      ; [.A11E.0020.0002.5ED3] # CJK COMPATIBILITY IDEOGRAPH-FA0B
+FA83      ; [.CCFF.0020.0002.5ED9] # CJK COMPATIBILITY IDEOGRAPH-FA83
+F982      ; [.9AB9.0020.0002.5EEC] # CJK COMPATIBILITY IDEOGRAPH-F982
+2F890     ; [.9FBB.0020.0002.5EFE] # CJK COMPATIBILITY IDEOGRAPH-2F890
+F943      ; [.95C8.0020.0002.5F04] # CJK COMPATIBILITY IDEOGRAPH-F943
+2F894     ; [.9097.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F894
+2F895     ; [.9097.0020.0002.5F22] # CJK COMPATIBILITY IDEOGRAPH-2F895
+2F874     ; [.8D4C.0020.0002.5F53] # CJK COMPATIBILITY IDEOGRAPH-2F874
+2F899     ; [.B544.0020.0002.5F62] # CJK COMPATIBILITY IDEOGRAPH-2F899
+FA84      ; [.C6A8.0020.0002.5F69] # CJK COMPATIBILITY IDEOGRAPH-FA84
+2F89A     ; [.8E55.0020.0002.5F6B] # CJK COMPATIBILITY IDEOGRAPH-2F89A
+F9D8      ; [.9C41.0020.0002.5F8B] # CJK COMPATIBILITY IDEOGRAPH-F9D8
+2F89C     ; [.8FF3.0020.0002.5F9A] # CJK COMPATIBILITY IDEOGRAPH-2F89C
+F966      ; [.8BDF.0020.0002.5FA9] # CJK COMPATIBILITY IDEOGRAPH-F966
+FA85      ; [.CE36.0020.0002.5FAD] # CJK COMPATIBILITY IDEOGRAPH-FA85
+2F89D     ; [.C2FD.0020.0002.5FCD] # CJK COMPATIBILITY IDEOGRAPH-2F89D
+2F89E     ; [.B768.0020.0002.5FD7] # CJK COMPATIBILITY IDEOGRAPH-2F89E
+F9A3      ; [.9551.0020.0002.5FF5] # CJK COMPATIBILITY IDEOGRAPH-F9A3
+2F89F     ; [.A1E7.0020.0002.5FF9] # CJK COMPATIBILITY IDEOGRAPH-2F89F
+F960      ; [.958F.0020.0002.6012] # CJK COMPATIBILITY IDEOGRAPH-F960
+F9AC      ; [.9965.0020.0002.601C] # CJK COMPATIBILITY IDEOGRAPH-F9AC
+FA6B      ; [.A524.0020.0002.6075] # CJK COMPATIBILITY IDEOGRAPH-FA6B
+2F8A0     ; [.D572.0020.0002.6081] # CJK COMPATIBILITY IDEOGRAPH-2F8A0
+FA3D      ; [.A510.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-FA3D
+2F8A3     ; [.A510.0020.0002.6094] # CJK COMPATIBILITY IDEOGRAPH-2F8A3
+2F8A5     ; [.8FBB.0020.0002.60C7] # CJK COMPATIBILITY IDEOGRAPH-2F8A5
+FA86      ; [.D3D6.0020.0002.60D8] # CJK COMPATIBILITY IDEOGRAPH-FA86
+F9B9      ; [.CA70.0020.0002.60E1] # CJK COMPATIBILITY IDEOGRAPH-F9B9
+FA88      ; [.D4DB.0020.0002.6108] # CJK COMPATIBILITY IDEOGRAPH-FA88
+F9D9      ; [.9846.0020.0002.6144] # CJK COMPATIBILITY IDEOGRAPH-F9D9
+2F8A6     ; [.C64C.0020.0002.6148] # CJK COMPATIBILITY IDEOGRAPH-2F8A6
+2F8A7     ; [.A5FA.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A7
+2F8A9     ; [.A5FA.0020.0002.614C] # CJK COMPATIBILITY IDEOGRAPH-2F8A9
+FA87      ; [.C178.0020.0002.614E] # CJK COMPATIBILITY IDEOGRAPH-FA87
+2F8A8     ; [.C178.0020.0002.614E] # CJK COMPATIBILITY IDEOGRAPH-2F8A8
+FA8A      ; [.CB23.0020.0002.6160] # CJK COMPATIBILITY IDEOGRAPH-FA8A
+FA3E      ; [.A03D.0020.0002.6168] # CJK COMPATIBILITY IDEOGRAPH-FA3E
+2F8AA     ; [.96E1.0020.0002.617A] # CJK COMPATIBILITY IDEOGRAPH-2F8AA
+FA3F      ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA3F
+FA89      ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-FA89
+2F8AB     ; [.C55C.0020.0002.618E] # CJK COMPATIBILITY IDEOGRAPH-2F8AB
+F98F      ; [.997C.0020.0002.6190] # CJK COMPATIBILITY IDEOGRAPH-F98F
+2F8AD     ; [.8A96.0020.0002.61A4] # CJK COMPATIBILITY IDEOGRAPH-2F8AD
+2F8AE     ; [.C6EB.0020.0002.61AF] # CJK COMPATIBILITY IDEOGRAPH-2F8AE
+2F8AC     ; [.B498.0020.0002.61B2] # CJK COMPATIBILITY IDEOGRAPH-2F8AC
+2F8AF     ; [.8803.0020.0002.61DE] # CJK COMPATIBILITY IDEOGRAPH-2F8AF
+FA40      ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA40
+FA8B      ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-FA8B
+2F8B0     ; [.BE2C.0020.0002.61F2] # CJK COMPATIBILITY IDEOGRAPH-2F8B0
+F90D      ; [.9742.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-F90D
+2F8B1     ; [.9742.0020.0002.61F6] # CJK COMPATIBILITY IDEOGRAPH-2F8B1
+F990      ; [.99C4.0020.0002.6200] # CJK COMPATIBILITY IDEOGRAPH-F990
+2F8B2     ; [.BDFC.0020.0002.6210] # CJK COMPATIBILITY IDEOGRAPH-2F8B2
+2F8B3     ; [.A802.0020.0002.621B] # CJK COMPATIBILITY IDEOGRAPH-2F8B3
+F9D2      ; [.9B16.0020.0002.622E] # CJK COMPATIBILITY IDEOGRAPH-F9D2
+FA8C      ; [.8C7A.0020.0002.6234] # CJK COMPATIBILITY IDEOGRAPH-FA8C
+2F8B4     ; [.A0E3.0020.0002.625D] # CJK COMPATIBILITY IDEOGRAPH-2F8B4
+2F8B5     ; [.814B.0020.0002.62B1] # CJK COMPATIBILITY IDEOGRAPH-2F8B5
+F925      ; [.95DB.0020.0002.62C9] # CJK COMPATIBILITY IDEOGRAPH-F925
+F95B      ; [.93DB.0020.0002.62CF] # CJK COMPATIBILITY IDEOGRAPH-F95B
+FA02      ; [.9037.0020.0002.62D3] # CJK COMPATIBILITY IDEOGRAPH-FA02
+2F8B6     ; [.801D.0020.0002.62D4] # CJK COMPATIBILITY IDEOGRAPH-2F8B6
+2F8BA     ; [.8599.0020.0002.62FC] # CJK COMPATIBILITY IDEOGRAPH-2F8BA
+F973      ; [.C00F.0020.0002.62FE] # CJK COMPATIBILITY IDEOGRAPH-F973
+2F8B9     ; [.D348.0020.0002.633D] # CJK COMPATIBILITY IDEOGRAPH-2F8B9
+2F8B7     ; [.ACA2.0020.0002.6350] # CJK COMPATIBILITY IDEOGRAPH-2F8B7
+2F8BB     ; [.C05A.0020.0002.6368] # CJK COMPATIBILITY IDEOGRAPH-2F8BB
+F9A4      ; [.9540.0020.0002.637B] # CJK COMPATIBILITY IDEOGRAPH-F9A4
+2F8BC     ; [.C8AF.0020.0002.6383] # CJK COMPATIBILITY IDEOGRAPH-2F8BC
+F975      ; [.CA67.0020.0002.63A0] # CJK COMPATIBILITY IDEOGRAPH-F975
+2F8C1     ; [.CF63.0020.0002.63A9] # CJK COMPATIBILITY IDEOGRAPH-2F8C1
+FA8D      ; [.D43E.0020.0002.63C4] # CJK COMPATIBILITY IDEOGRAPH-FA8D
+2F8C0     ; [.CF39.0020.0002.63C5] # CJK COMPATIBILITY IDEOGRAPH-2F8C0
+2F8BD     ; [.A70F.0020.0002.63E4] # CJK COMPATIBILITY IDEOGRAPH-2F8BD
+FA8E      ; [.C8BD.0020.0002.641C] # CJK COMPATIBILITY IDEOGRAPH-FA8E
+2F8BF     ; [.AAB0.0020.0002.6422] # CJK COMPATIBILITY IDEOGRAPH-2F8BF
+FA8F      ; [.8365.0020.0002.6452] # CJK COMPATIBILITY IDEOGRAPH-FA8F
+2F8C3     ; [.865D.0020.0002.6469] # CJK COMPATIBILITY IDEOGRAPH-2F8C3
+2F8C6     ; [.A904.0020.0002.6477] # CJK COMPATIBILITY IDEOGRAPH-2F8C6
+2F8C4     ; [.AB0A.0020.0002.647E] # CJK COMPATIBILITY IDEOGRAPH-2F8C4
+F991      ; [.9546.0020.0002.649A] # CJK COMPATIBILITY IDEOGRAPH-F991
+2F8C5     ; [.A4F3.0020.0002.649D] # CJK COMPATIBILITY IDEOGRAPH-2F8C5
+F930      ; [.9ADE.0020.0002.64C4] # CJK COMPATIBILITY IDEOGRAPH-F930
+FA41      ; [.8915.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-FA41
+2F8C8     ; [.8915.0020.0002.654F] # CJK COMPATIBILITY IDEOGRAPH-2F8C8
+FA90      ; [.CAF2.0020.0002.6556] # CJK COMPATIBILITY IDEOGRAPH-FA90
+2F8C9     ; [.AB74.0020.0002.656C] # CJK COMPATIBILITY IDEOGRAPH-2F8C9
+F969      ; [.C23A.0020.0002.6578] # CJK COMPATIBILITY IDEOGRAPH-F969
+F9BE      ; [.9905.0020.0002.6599] # CJK COMPATIBILITY IDEOGRAPH-F9BE
+F983      ; [.9C2B.0020.0002.65C5] # CJK COMPATIBILITY IDEOGRAPH-F983
+FA42      ; [.A775.0020.0002.65E2] # CJK COMPATIBILITY IDEOGRAPH-FA42
+2F8CB     ; [.A789.0020.0002.65E3] # CJK COMPATIBILITY IDEOGRAPH-2F8CB
+F9E0      ; [.CCA3.0020.0002.6613] # CJK COMPATIBILITY IDEOGRAPH-F9E0
+2F8CD     ; [.AAA5.0020.0002.6649] # CJK COMPATIBILITY IDEOGRAPH-2F8CD
+FA12      ; [.B034.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA12
+FA91      ; [.B034.0020.0002.6674] # CJK COMPATIBILITY IDEOGRAPH-FA91
+F9C5      ; [.D5E6.0020.0002.6688] # CJK COMPATIBILITY IDEOGRAPH-F9C5
+FA43      ; [.C20B.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-FA43
+2F8CF     ; [.C20B.0020.0002.6691] # CJK COMPATIBILITY IDEOGRAPH-2F8CF
+2F8D5     ; [.AAB8.0020.0002.669C] # CJK COMPATIBILITY IDEOGRAPH-2F8D5
+FA06      ; [.8156.0020.0002.66B4] # CJK COMPATIBILITY IDEOGRAPH-FA06
+F98B      ; [.9855.0020.0002.66C6] # CJK COMPATIBILITY IDEOGRAPH-F98B
+F901      ; [.9DDE.0020.0002.66F4] # CJK COMPATIBILITY IDEOGRAPH-F901
+2F8CC     ; [.C1E5.0020.0002.66F8] # CJK COMPATIBILITY IDEOGRAPH-2F8CC
+2F8D4     ; [.C5BD.0020.0002.6700] # CJK COMPATIBILITY IDEOGRAPH-2F8D4
+F929      ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-F929
+FA92      ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-FA92
+2F8D8     ; [.9775.0020.0002.6717] # CJK COMPATIBILITY IDEOGRAPH-2F8D8
+FA93      ; [.D3E7.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-FA93
+2F8D9     ; [.D3E7.0020.0002.671B] # CJK COMPATIBILITY IDEOGRAPH-2F8D9
+2F8DA     ; [.C5F8.0020.0002.6721] # CJK COMPATIBILITY IDEOGRAPH-2F8DA
+F9E1      ; [.9897.0020.0002.674E] # CJK COMPATIBILITY IDEOGRAPH-F9E1
+2F8DC     ; [.82A9.0020.0002.6753] # CJK COMPATIBILITY IDEOGRAPH-2F8DC
+FA94      ; [.B9DA.0020.0002.6756] # CJK COMPATIBILITY IDEOGRAPH-FA94
+2F8DB     ; [.ADC7.0020.0002.675E] # CJK COMPATIBILITY IDEOGRAPH-2F8DB
+F9C8      ; [.BCDE.0020.0002.677B] # CJK COMPATIBILITY IDEOGRAPH-F9C8
+2F8E0     ; [.A6A7.0020.0002.6785] # CJK COMPATIBILITY IDEOGRAPH-2F8E0
+F9F4      ; [.99CA.0020.0002.6797] # CJK COMPATIBILITY IDEOGRAPH-F9F4
+F9C9      ; [.9944.0020.0002.67F3] # CJK COMPATIBILITY IDEOGRAPH-F9C9
+2F8DF     ; [.9EAD.0020.0002.67FA] # CJK COMPATIBILITY IDEOGRAPH-2F8DF
+F9DA      ; [.9826.0020.0002.6817] # CJK COMPATIBILITY IDEOGRAPH-F9DA
+2F8E5     ; [.8196.0020.0002.681F] # CJK COMPATIBILITY IDEOGRAPH-2F8E5
+2F8E1     ; [.C902.0020.0002.6852] # CJK COMPATIBILITY IDEOGRAPH-2F8E1
+F97A      ; [.9A19.0020.0002.6881] # CJK COMPATIBILITY IDEOGRAPH-F97A
+FA44      ; [.86DF.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-FA44
+2F8E2     ; [.86DF.0020.0002.6885] # CJK COMPATIBILITY IDEOGRAPH-2F8E2
+2F8E4     ; [.CAEF.0020.0002.688E] # CJK COMPATIBILITY IDEOGRAPH-2F8E4
+F9E2      ; [.979F.0020.0002.68A8] # CJK COMPATIBILITY IDEOGRAPH-F9E2
+2F8E6     ; [.C417.0020.0002.6914] # CJK COMPATIBILITY IDEOGRAPH-2F8E6
+2F8E8     ; [.B7F9.0020.0002.6942] # CJK COMPATIBILITY IDEOGRAPH-2F8E8
+2F8E9     ; [.CE3D.0020.0002.69A3] # CJK COMPATIBILITY IDEOGRAPH-2F8E9
+2F8EA     ; [.9CE5.0020.0002.69EA] # CJK COMPATIBILITY IDEOGRAPH-2F8EA
+F914      ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F914
+F95C      ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F95C
+F9BF      ; [.9610.0020.0002.6A02] # CJK COMPATIBILITY IDEOGRAPH-F9BF
+F94C      ; [.96E3.0020.0002.6A13] # CJK COMPATIBILITY IDEOGRAPH-F94C
+2F8EB     ; [.C052.0020.0002.6AA8] # CJK COMPATIBILITY IDEOGRAPH-2F8EB
+F931      ; [.9AE5.0020.0002.6AD3] # CJK COMPATIBILITY IDEOGRAPH-F931
+2F8ED     ; [.B7D3.0020.0002.6ADB] # CJK COMPATIBILITY IDEOGRAPH-2F8ED
+F91D      ; [.9726.0020.0002.6B04] # CJK COMPATIBILITY IDEOGRAPH-F91D
+2F8EF     ; [.C667.0020.0002.6B21] # CJK COMPATIBILITY IDEOGRAPH-2F8EF
+2F8F1     ; [.B58D.0020.0002.6B54] # CJK COMPATIBILITY IDEOGRAPH-2F8F1
+2F8F3     ; [.C9AB.0020.0002.6B72] # CJK COMPATIBILITY IDEOGRAPH-2F8F3
+F98C      ; [.9856.0020.0002.6B77] # CJK COMPATIBILITY IDEOGRAPH-F98C
+FA95      ; [.8C53.0020.0002.6B79] # CJK COMPATIBILITY IDEOGRAPH-FA95
+2F8F4     ; [.D380.0020.0002.6B9F] # CJK COMPATIBILITY IDEOGRAPH-2F8F4
+F9A5      ; [.99BD.0020.0002.6BAE] # CJK COMPATIBILITY IDEOGRAPH-F9A5
+F970      ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-F970
+FA96      ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-FA96
+2F8F5     ; [.C025.0020.0002.6BBA] # CJK COMPATIBILITY IDEOGRAPH-2F8F5
+2F8F6     ; [.AE8A.0020.0002.6BBB] # CJK COMPATIBILITY IDEOGRAPH-2F8F6
+2F8FA     ; [.8A3E.0020.0002.6C4E] # CJK COMPATIBILITY IDEOGRAPH-2F8FA
+2F8FE     ; [.AF01.0020.0002.6C67] # CJK COMPATIBILITY IDEOGRAPH-2F8FE
+F972      ; [.BD5D.0020.0002.6C88] # CJK COMPATIBILITY IDEOGRAPH-F972
+2F8FC     ; [.CF25.0020.0002.6CBF] # CJK COMPATIBILITY IDEOGRAPH-2F8FC
+F968      ; [.886C.0020.0002.6CCC] # CJK COMPATIBILITY IDEOGRAPH-F968
+2F8FD     ; [.8194.0020.0002.6CCD] # CJK COMPATIBILITY IDEOGRAPH-2F8FD
+F9E3      ; [.9490.0020.0002.6CE5] # CJK COMPATIBILITY IDEOGRAPH-F9E3
+2F8FF     ; [.D193.0020.0002.6D16] # CJK COMPATIBILITY IDEOGRAPH-2F8FF
+F915      ; [.9B72.0020.0002.6D1B] # CJK COMPATIBILITY IDEOGRAPH-F915
+FA05      ; [.900E.0020.0002.6D1E] # CJK COMPATIBILITY IDEOGRAPH-FA05
+2F907     ; [.85C8.0020.0002.6D34] # CJK COMPATIBILITY IDEOGRAPH-2F907
+2F900     ; [.83F9.0020.0002.6D3E] # CJK COMPATIBILITY IDEOGRAPH-2F900
+F9CA      ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-F9CA
+FA97      ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-FA97
+2F902     ; [.9912.0020.0002.6D41] # CJK COMPATIBILITY IDEOGRAPH-2F902
+2F903     ; [.A2D9.0020.0002.6D69] # CJK COMPATIBILITY IDEOGRAPH-2F903
+F92A      ; [.9781.0020.0002.6D6A] # CJK COMPATIBILITY IDEOGRAPH-F92A
+FA45      ; [.A29A.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-FA45
+2F901     ; [.A29A.0020.0002.6D77] # CJK COMPATIBILITY IDEOGRAPH-2F901
+2F904     ; [.AAA7.0020.0002.6D78] # CJK COMPATIBILITY IDEOGRAPH-2F904
+2F905     ; [.94E1.0020.0002.6D85] # CJK COMPATIBILITY IDEOGRAPH-2F905
+F9F5      ; [.99D1.0020.0002.6DCB] # CJK COMPATIBILITY IDEOGRAPH-F9F5
+F94D      ; [.9688.0020.0002.6DDA] # CJK COMPATIBILITY IDEOGRAPH-F94D
+F9D6      ; [.9BB8.0020.0002.6DEA] # CJK COMPATIBILITY IDEOGRAPH-F9D6
+2F90E     ; [.CF08.0020.0002.6DF9] # CJK COMPATIBILITY IDEOGRAPH-2F90E
+FA46      ; [.BA70.0020.0002.6E1A] # CJK COMPATIBILITY IDEOGRAPH-FA46
+2F908     ; [.9DB6.0020.0002.6E2F] # CJK COMPATIBILITY IDEOGRAPH-2F908
+2F909     ; [.CF0D.0020.0002.6E6E] # CJK COMPATIBILITY IDEOGRAPH-2F909
+F9CB      ; [.990C.0020.0002.6E9C] # CJK COMPATIBILITY IDEOGRAPH-F9CB
+F9EC      ; [.94CE.0020.0002.6EBA] # CJK COMPATIBILITY IDEOGRAPH-F9EC
+2F90C     ; [.8E88.0020.0002.6EC7] # CJK COMPATIBILITY IDEOGRAPH-2F90C
+FA99      ; [.C419.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-FA99
+2F90B     ; [.C419.0020.0002.6ECB] # CJK COMPATIBILITY IDEOGRAPH-2F90B
+F904      ; [.A44F.0020.0002.6ED1] # CJK COMPATIBILITY IDEOGRAPH-F904
+FA98      ; [.D03B.0020.0002.6EDB] # CJK COMPATIBILITY IDEOGRAPH-FA98
+F94E      ; [.96FC.0020.0002.6F0F] # CJK COMPATIBILITY IDEOGRAPH-F94E
+FA47      ; [.A368.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA47
+FA9A      ; [.A368.0020.0002.6F22] # CJK COMPATIBILITY IDEOGRAPH-FA9A
+F992      ; [.9974.0020.0002.6F23] # CJK COMPATIBILITY IDEOGRAPH-F992
+2F90F     ; [.BCA0.0020.0002.6F6E] # CJK COMPATIBILITY IDEOGRAPH-2F90F
+2F912     ; [.8A7C.0020.0002.6FC6] # CJK COMPATIBILITY IDEOGRAPH-2F912
+F922      ; [.9751.0020.0002.6FEB] # CJK COMPATIBILITY IDEOGRAPH-F922
+F984      ; [.9C51.0020.0002.6FFE] # CJK COMPATIBILITY IDEOGRAPH-F984
+2F915     ; [.D142.0020.0002.701B] # CJK COMPATIBILITY IDEOGRAPH-2F915
+FA9B      ; [.AB83.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-FA9B
+2F914     ; [.AB83.0020.0002.701E] # CJK COMPATIBILITY IDEOGRAPH-2F914
+2F913     ; [.D563.0020.0002.7039] # CJK COMPATIBILITY IDEOGRAPH-2F913
+2F917     ; [.AF57.0020.0002.704A] # CJK COMPATIBILITY IDEOGRAPH-2F917
+2F835     ; [.A4D6.0020.0002.7070] # CJK COMPATIBILITY IDEOGRAPH-2F835
+2F919     ; [.BB35.0020.0002.7077] # CJK COMPATIBILITY IDEOGRAPH-2F919
+2F918     ; [.C4B5.0020.0002.707D] # CJK COMPATIBILITY IDEOGRAPH-2F918
+F9FB      ; [.B774.0020.0002.7099] # CJK COMPATIBILITY IDEOGRAPH-F9FB
+2F91A     ; [.9126.0020.0002.70AD] # CJK COMPATIBILITY IDEOGRAPH-2F91A
+F99F      ; [.98B0.0020.0002.70C8] # CJK COMPATIBILITY IDEOGRAPH-F99F
+F916      ; [.96C6.0020.0002.70D9] # CJK COMPATIBILITY IDEOGRAPH-F916
+2F91C     ; [.8FAD.0020.0002.7145] # CJK COMPATIBILITY IDEOGRAPH-2F91C
+F993      ; [.99B6.0020.0002.7149] # CJK COMPATIBILITY IDEOGRAPH-F993
+FA48      ; [.BA72.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA48
+FA9C      ; [.BA72.0020.0002.716E] # CJK COMPATIBILITY IDEOGRAPH-FA9C
+2F91E     ; [.C7CA.0020.0002.719C] # CJK COMPATIBILITY IDEOGRAPH-2F91E
+F9C0      ; [.98E3.0020.0002.71CE] # CJK COMPATIBILITY IDEOGRAPH-F9C0
+F9EE      ; [.99E0.0020.0002.71D0] # CJK COMPATIBILITY IDEOGRAPH-F9EE
+F932      ; [.9AC1.0020.0002.7210] # CJK COMPATIBILITY IDEOGRAPH-F932
+F91E      ; [.9753.0020.0002.721B] # CJK COMPATIBILITY IDEOGRAPH-F91E
+2F920     ; [.C7A8.0020.0002.7228] # CJK COMPATIBILITY IDEOGRAPH-2F920
+FA49      ; [.B8AD.0020.0002.722B] # CJK COMPATIBILITY IDEOGRAPH-FA49
+FA9E      ; [.AC81.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-FA9E
+2F921     ; [.AC81.0020.0002.7235] # CJK COMPATIBILITY IDEOGRAPH-2F921
+2F922     ; [.B809.0020.0002.7250] # CJK COMPATIBILITY IDEOGRAPH-2F922
+F946      ; [.969F.0020.0002.7262] # CJK COMPATIBILITY IDEOGRAPH-F946
+2F924     ; [.B19A.0020.0002.7280] # CJK COMPATIBILITY IDEOGRAPH-2F924
+2F925     ; [.810B.0020.0002.7295] # CJK COMPATIBILITY IDEOGRAPH-2F925
+FA9F      ; [.8A3C.0020.0002.72AF] # CJK COMPATIBILITY IDEOGRAPH-FA9F
+F9FA      ; [.BB66.0020.0002.72C0] # CJK COMPATIBILITY IDEOGRAPH-F9FA
+F92B      ; [.975E.0020.0002.72FC] # CJK COMPATIBILITY IDEOGRAPH-F92B
+FA16      ; [.BA3A.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FA16
+FAA0      ; [.BA3A.0020.0002.732A] # CJK COMPATIBILITY IDEOGRAPH-FAA0
+F9A7      ; [.98C3.0020.0002.7375] # CJK COMPATIBILITY IDEOGRAPH-F9A7
+2F928     ; [.9034.0020.0002.737A] # CJK COMPATIBILITY IDEOGRAPH-2F928
+F961      ; [.9C43.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F961
+F9DB      ; [.9C43.0020.0002.7387] # CJK COMPATIBILITY IDEOGRAPH-F9DB
+2F929     ; [.D3CA.0020.0002.738B] # CJK COMPATIBILITY IDEOGRAPH-2F929
+2F92B     ; [.D544.0020.0002.73A5] # CJK COMPATIBILITY IDEOGRAPH-2F92B
+F9AD      ; [.9A4F.0020.0002.73B2] # CJK COMPATIBILITY IDEOGRAPH-F9AD
+F917      ; [.9B76.0020.0002.73DE] # CJK COMPATIBILITY IDEOGRAPH-F917
+F9E4      ; [.97F2.0020.0002.7406] # CJK COMPATIBILITY IDEOGRAPH-F9E4
+F9CC      ; [.9914.0020.0002.7409] # CJK COMPATIBILITY IDEOGRAPH-F9CC
+FA4A      ; [.C58E.0020.0002.7422] # CJK COMPATIBILITY IDEOGRAPH-FA4A
+2F92E     ; [.8C72.0020.0002.7447] # CJK COMPATIBILITY IDEOGRAPH-2F92E
+2F92F     ; [.D44E.0020.0002.745C] # CJK COMPATIBILITY IDEOGRAPH-2F92F
+F9AE      ; [.D131.0020.0002.7469] # CJK COMPATIBILITY IDEOGRAPH-F9AE
+FAA1      ; [.B9AB.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-FAA1
+2F930     ; [.B9AB.0020.0002.7471] # CJK COMPATIBILITY IDEOGRAPH-2F930
+2F931     ; [.C979.0020.0002.7485] # CJK COMPATIBILITY IDEOGRAPH-2F931
+F994      ; [.999F.0020.0002.7489] # CJK COMPATIBILITY IDEOGRAPH-F994
+F9EF      ; [.99E1.0020.0002.7498] # CJK COMPATIBILITY IDEOGRAPH-F9EF
+2F932     ; [.B15E.0020.0002.74CA] # CJK COMPATIBILITY IDEOGRAPH-2F932
+FAA2      ; [.C64D.0020.0002.7506] # CJK COMPATIBILITY IDEOGRAPH-FAA2
+2F934     ; [.C397.0020.0002.7524] # CJK COMPATIBILITY IDEOGRAPH-2F934
+FAA3      ; [.A462.0020.0002.753B] # CJK COMPATIBILITY IDEOGRAPH-FAA3
+2F936     ; [.C4B7.0020.0002.753E] # CJK COMPATIBILITY IDEOGRAPH-2F936
+F9CD      ; [.9915.0020.0002.7559] # CJK COMPATIBILITY IDEOGRAPH-F9CD
+F976      ; [.CA68.0020.0002.7565] # CJK COMPATIBILITY IDEOGRAPH-F976
+F962      ; [.CCD0.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-F962
+2F938     ; [.CCD0.0020.0002.7570] # CJK COMPATIBILITY IDEOGRAPH-2F938
+F9E5      ; [.983F.0020.0002.75E2] # CJK COMPATIBILITY IDEOGRAPH-F9E5
+2F93A     ; [.D494.0020.0002.7610] # CJK COMPATIBILITY IDEOGRAPH-2F93A
+FAA4      ; [.9F2F.0020.0002.761D] # CJK COMPATIBILITY IDEOGRAPH-FAA4
+FAA5      ; [.D382.0020.0002.761F] # CJK COMPATIBILITY IDEOGRAPH-FAA5
+F9C1      ; [.98E8.0020.0002.7642] # CJK COMPATIBILITY IDEOGRAPH-F9C1
+F90E      ; [.9649.0020.0002.7669] # CJK COMPATIBILITY IDEOGRAPH-F90E
+FA17      ; [.CCC7.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FA17
+FAA6      ; [.CCC7.0020.0002.76CA] # CJK COMPATIBILITY IDEOGRAPH-FAA6
+FAA7      ; [.C1CA.0020.0002.76DB] # CJK COMPATIBILITY IDEOGRAPH-FAA7
+F933      ; [.9AB5.0020.0002.76E7] # CJK COMPATIBILITY IDEOGRAPH-F933
+FAA8      ; [.B71A.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-FAA8
+2F940     ; [.B71A.0020.0002.76F4] # CJK COMPATIBILITY IDEOGRAPH-2F940
+F96D      ; [.C1C2.0020.0002.7701] # CJK COMPATIBILITY IDEOGRAPH-F96D
+2F945     ; [.B959.0020.0002.771E] # CJK COMPATIBILITY IDEOGRAPH-2F945
+2F946     ; [.B95A.0020.0002.771F] # CJK COMPATIBILITY IDEOGRAPH-2F946
+2F947     ; [.B95A.0020.0002.771F] # CJK COMPATIBILITY IDEOGRAPH-2F947
+FAAA      ; [.B869.0020.0002.7740] # CJK COMPATIBILITY IDEOGRAPH-FAAA
+FAA9      ; [.ACC5.0020.0002.774A] # CJK COMPATIBILITY IDEOGRAPH-FAA9
+2F948     ; [.ACC5.0020.0002.774A] # CJK COMPATIBILITY IDEOGRAPH-2F948
+2F94A     ; [.BD55.0020.0002.778B] # CJK COMPATIBILITY IDEOGRAPH-2F94A
+FA9D      ; [.AE77.0020.0002.77A7] # CJK COMPATIBILITY IDEOGRAPH-FA9D
+2F94E     ; [.B54F.0020.0002.784E] # CJK COMPATIBILITY IDEOGRAPH-2F94E
+F9CE      ; [.9918.0020.0002.786B] # CJK COMPATIBILITY IDEOGRAPH-F9CE
+F93B      ; [.9B0A.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-F93B
+2F94F     ; [.9B0A.0020.0002.788C] # CJK COMPATIBILITY IDEOGRAPH-2F94F
+FA4B      ; [.80DF.0020.0002.7891] # CJK COMPATIBILITY IDEOGRAPH-FA4B
+F947      ; [.9673.0020.0002.78CA] # CJK COMPATIBILITY IDEOGRAPH-F947
+FAAB      ; [.9259.0020.0002.78CC] # CJK COMPATIBILITY IDEOGRAPH-FAAB
+2F950     ; [.9259.0020.0002.78CC] # CJK COMPATIBILITY IDEOGRAPH-2F950
+F964      ; [.845F.0020.0002.78FB] # CJK COMPATIBILITY IDEOGRAPH-F964
+F985      ; [.9878.0020.0002.792A] # CJK COMPATIBILITY IDEOGRAPH-F985
+FA18      ; [.97EA.0020.0002.793C] # CJK COMPATIBILITY IDEOGRAPH-FA18
+FA4C      ; [.C05E.0020.0002.793E] # CJK COMPATIBILITY IDEOGRAPH-FA4C
+FA4E      ; [.AD73.0020.0002.7948] # CJK COMPATIBILITY IDEOGRAPH-FA4E
+FA4D      ; [.B757.0020.0002.7949] # CJK COMPATIBILITY IDEOGRAPH-FA4D
+FA4F      ; [.CEF0.0020.0002.7950] # CJK COMPATIBILITY IDEOGRAPH-FA4F
+FA50      ; [.C583.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-FA50
+2F953     ; [.C583.0020.0002.7956] # CJK COMPATIBILITY IDEOGRAPH-2F953
+FA51      ; [.BA90.0020.0002.795D] # CJK COMPATIBILITY IDEOGRAPH-FA51
+FA19      ; [.C153.0020.0002.795E] # CJK COMPATIBILITY IDEOGRAPH-FA19
+FA1A      ; [.B4FF.0020.0002.7965] # CJK COMPATIBILITY IDEOGRAPH-FA1A
+F93C      ; [.9B0B.0020.0002.797F] # CJK COMPATIBILITY IDEOGRAPH-F93C
+FA52      ; [.A4A7.0020.0002.798D] # CJK COMPATIBILITY IDEOGRAPH-FA52
+FA53      ; [.B971.0020.0002.798E] # CJK COMPATIBILITY IDEOGRAPH-FA53
+FA1B      ; [.8B8D.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-FA1B
+2F956     ; [.8B8D.0020.0002.798F] # CJK COMPATIBILITY IDEOGRAPH-2F956
+F9B6      ; [.97FC.0020.0002.79AE] # CJK COMPATIBILITY IDEOGRAPH-F9B6
+F995      ; [.9538.0020.0002.79CA] # CJK COMPATIBILITY IDEOGRAPH-F995
+2F957     ; [.C201.0020.0002.79EB] # CJK COMPATIBILITY IDEOGRAPH-2F957
+F956      ; [.978F.0020.0002.7A1C] # CJK COMPATIBILITY IDEOGRAPH-F956
+FA54      ; [.9E24.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-FA54
+2F959     ; [.9E24.0020.0002.7A40] # CJK COMPATIBILITY IDEOGRAPH-2F959
+2F95A     ; [.A79C.0020.0002.7A4A] # CJK COMPATIBILITY IDEOGRAPH-2F95A
+2F95B     ; [.D3B2.0020.0002.7A4F] # CJK COMPATIBILITY IDEOGRAPH-2F95B
+FA55      ; [.92B6.0020.0002.7A81] # CJK COMPATIBILITY IDEOGRAPH-FA55
+FAAC      ; [.9231.0020.0002.7AB1] # CJK COMPATIBILITY IDEOGRAPH-FAAC
+F9F7      ; [.9808.0020.0002.7ACB] # CJK COMPATIBILITY IDEOGRAPH-F9F7
+2F95F     ; [.85BC.0020.0002.7AEE] # CJK COMPATIBILITY IDEOGRAPH-2F95F
+F9F8      ; [.9833.0020.0002.7B20] # CJK COMPATIBILITY IDEOGRAPH-F9F8
+FA56      ; [.A87C.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FA56
+FAAD      ; [.A87C.0020.0002.7BC0] # CJK COMPATIBILITY IDEOGRAPH-FAAD
+2F962     ; [.BB3E.0020.0002.7BC6] # CJK COMPATIBILITY IDEOGRAPH-2F962
+2F963     ; [.BA5F.0020.0002.7BC9] # CJK COMPATIBILITY IDEOGRAPH-2F963
+F9A6      ; [.9992.0020.0002.7C3E] # CJK COMPATIBILITY IDEOGRAPH-F9A6
+F944      ; [.9BF8.0020.0002.7C60] # CJK COMPATIBILITY IDEOGRAPH-F944
+FAAE      ; [.9686.0020.0002.7C7B] # CJK COMPATIBILITY IDEOGRAPH-FAAE
+F9F9      ; [.9834.0020.0002.7C92] # CJK COMPATIBILITY IDEOGRAPH-F9F9
+FA1D      ; [.AB32.0020.0002.7CBE] # CJK COMPATIBILITY IDEOGRAPH-FA1D
+2F966     ; [.8114.0020.0002.7CD2] # CJK COMPATIBILITY IDEOGRAPH-2F966
+FA03      ; [.915F.0020.0002.7CD6] # CJK COMPATIBILITY IDEOGRAPH-FA03
+2F969     ; [.C8EE.0020.0002.7CE3] # CJK COMPATIBILITY IDEOGRAPH-2F969
+F97B      ; [.9A24.0020.0002.7CE7] # CJK COMPATIBILITY IDEOGRAPH-F97B
+2F968     ; [.AB10.0020.0002.7CE8] # CJK COMPATIBILITY IDEOGRAPH-2F968
+2F96A     ; [.A778.0020.0002.7D00] # CJK COMPATIBILITY IDEOGRAPH-2F96A
+F9CF      ; [.952E.0020.0002.7D10] # CJK COMPATIBILITY IDEOGRAPH-F9CF
+F96A      ; [.C970.0020.0002.7D22] # CJK COMPATIBILITY IDEOGRAPH-F96A
+F94F      ; [.9689.0020.0002.7D2F] # CJK COMPATIBILITY IDEOGRAPH-F94F
+FAAF      ; [.90A1.0020.0002.7D5B] # CJK COMPATIBILITY IDEOGRAPH-FAAF
+2F96C     ; [.81D3.0020.0002.7D63] # CJK COMPATIBILITY IDEOGRAPH-2F96C
+F93D      ; [.9C4A.0020.0002.7DA0] # CJK COMPATIBILITY IDEOGRAPH-F93D
+F957      ; [.9A73.0020.0002.7DBE] # CJK COMPATIBILITY IDEOGRAPH-F957
+2F96E     ; [.C427.0020.0002.7DC7] # CJK COMPATIBILITY IDEOGRAPH-2F96E
+F996      ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-F996
+FA57      ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FA57
+FAB0      ; [.99BA.0020.0002.7DF4] # CJK COMPATIBILITY IDEOGRAPH-FAB0
+2F96F     ; [.C61F.0020.0002.7E02] # CJK COMPATIBILITY IDEOGRAPH-2F96F
+FA58      ; [.AAC3.0020.0002.7E09] # CJK COMPATIBILITY IDEOGRAPH-FA58
+F950      ; [.9C3C.0020.0002.7E37] # CJK COMPATIBILITY IDEOGRAPH-F950
+FA59      ; [.8A28.0020.0002.7E41] # CJK COMPATIBILITY IDEOGRAPH-FA59
+2F970     ; [.C8A7.0020.0002.7E45] # CJK COMPATIBILITY IDEOGRAPH-2F970
+FAB1      ; [.85D7.0020.0002.7F3E] # CJK COMPATIBILITY IDEOGRAPH-FAB1
+FA5A      ; [.C20E.0020.0002.7F72] # CJK COMPATIBILITY IDEOGRAPH-FA5A
+F9E6      ; [.97C3.0020.0002.7F79] # CJK COMPATIBILITY IDEOGRAPH-F9E6
+2F976     ; [.BCA2.0020.0002.7F7A] # CJK COMPATIBILITY IDEOGRAPH-2F976
+F90F      ; [.9B52.0020.0002.7F85] # CJK COMPATIBILITY IDEOGRAPH-F90F
+2F978     ; [.D0D3.0020.0002.7F95] # CJK COMPATIBILITY IDEOGRAPH-2F978
+F9AF      ; [.9A62.0020.0002.7F9A] # CJK COMPATIBILITY IDEOGRAPH-F9AF
+FA1E      ; [.D47D.0020.0002.7FBD] # CJK COMPATIBILITY IDEOGRAPH-FA1E
+2F979     ; [.CB06.0020.0002.7FFA] # CJK COMPATIBILITY IDEOGRAPH-2F979
+F934      ; [.96B7.0020.0002.8001] # CJK COMPATIBILITY IDEOGRAPH-F934
+FA5B      ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FA5B
+FAB2      ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-FAB2
+2F97A     ; [.B856.0020.0002.8005] # CJK COMPATIBILITY IDEOGRAPH-2F97A
+F9B0      ; [.9A64.0020.0002.8046] # CJK COMPATIBILITY IDEOGRAPH-F9B0
+2F97D     ; [.85BA.0020.0002.8060] # CJK COMPATIBILITY IDEOGRAPH-2F97D
+F997      ; [.9989.0020.0002.806F] # CJK COMPATIBILITY IDEOGRAPH-F997
+2F97F     ; [.C7D5.0020.0002.8070] # CJK COMPATIBILITY IDEOGRAPH-2F97F
+F945      ; [.9BF9.0020.0002.807E] # CJK COMPATIBILITY IDEOGRAPH-F945
+F953      ; [.9600.0020.0002.808B] # CJK COMPATIBILITY IDEOGRAPH-F953
+2F8D6     ; [.93E7.0020.0002.80AD] # CJK COMPATIBILITY IDEOGRAPH-2F8D6
+2F982     ; [.D4B0.0020.0002.80B2] # CJK COMPATIBILITY IDEOGRAPH-2F982
+2F983     ; [.C780.0020.0002.8103] # CJK COMPATIBILITY IDEOGRAPH-2F983
+2F985     ; [.851D.0020.0002.813E] # CJK COMPATIBILITY IDEOGRAPH-2F985
+F926      ; [.95F4.0020.0002.81D8] # CJK COMPATIBILITY IDEOGRAPH-F926
+F9F6      ; [.99E7.0020.0002.81E8] # CJK COMPATIBILITY IDEOGRAPH-F9F6
+FA5C      ; [.BCE6.0020.0002.81ED] # CJK COMPATIBILITY IDEOGRAPH-FA5C
+2F893     ; [.D42F.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F893
+2F98B     ; [.D42F.0020.0002.8201] # CJK COMPATIBILITY IDEOGRAPH-2F98B
+2F98C     ; [.B23F.0020.0002.8204] # CJK COMPATIBILITY IDEOGRAPH-2F98C
+FA6D      ; [.9F3F.0020.0002.8218] # CJK COMPATIBILITY IDEOGRAPH-FA6D
+F97C      ; [.9A16.0020.0002.826F] # CJK COMPATIBILITY IDEOGRAPH-F97C
+FA5D      ; [.C6CB.0020.0002.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5D
+FA5E      ; [.C6CB.0020.0002.8279] # CJK COMPATIBILITY IDEOGRAPH-FA5E
+2F990     ; [.D4AD.0020.0002.828B] # CJK COMPATIBILITY IDEOGRAPH-2F990
+2F98F     ; [.ADCA.0020.0002.8291] # CJK COMPATIBILITY IDEOGRAPH-2F98F
+2F991     ; [.B6F7.0020.0002.829D] # CJK COMPATIBILITY IDEOGRAPH-2F991
+2F993     ; [.A43F.0020.0002.82B1] # CJK COMPATIBILITY IDEOGRAPH-2F993
+2F994     ; [.8AA5.0020.0002.82B3] # CJK COMPATIBILITY IDEOGRAPH-2F994
+2F995     ; [.CD7E.0020.0002.82BD] # CJK COMPATIBILITY IDEOGRAPH-2F995
+F974      ; [.C386.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-F974
+2F998     ; [.C386.0020.0002.82E5] # CJK COMPATIBILITY IDEOGRAPH-2F998
+2F996     ; [.A0F5.0020.0002.82E6] # CJK COMPATIBILITY IDEOGRAPH-2F996
+2F999     ; [.BC82.0020.0002.831D] # CJK COMPATIBILITY IDEOGRAPH-2F999
+2F99C     ; [.D198.0020.0002.8323] # CJK COMPATIBILITY IDEOGRAPH-2F99C
+F9FE      ; [.BC3C.0020.0002.8336] # CJK COMPATIBILITY IDEOGRAPH-F9FE
+FAB3      ; [.A5F7.0020.0002.8352] # CJK COMPATIBILITY IDEOGRAPH-FAB3
+2F9A0     ; [.85CF.0020.0002.8353] # CJK COMPATIBILITY IDEOGRAPH-2F9A0
+2F99A     ; [.C3D3.0020.0002.8363] # CJK COMPATIBILITY IDEOGRAPH-2F99A
+2F99B     ; [.A86D.0020.0002.83AD] # CJK COMPATIBILITY IDEOGRAPH-2F99B
+2F99D     ; [.87E9.0020.0002.83BD] # CJK COMPATIBILITY IDEOGRAPH-2F99D
+F93E      ; [.9B03.0020.0002.83C9] # CJK COMPATIBILITY IDEOGRAPH-F93E
+2F9A1     ; [.ABC4.0020.0002.83CA] # CJK COMPATIBILITY IDEOGRAPH-2F9A1
+2F9A2     ; [.ACE3.0020.0002.83CC] # CJK COMPATIBILITY IDEOGRAPH-2F9A2
+2F9A3     ; [.C6B0.0020.0002.83DC] # CJK COMPATIBILITY IDEOGRAPH-2F9A3
+2F99E     ; [.8DE0.0020.0002.83E7] # CJK COMPATIBILITY IDEOGRAPH-2F99E
+FAB4      ; [.A44D.0020.0002.83EF] # CJK COMPATIBILITY IDEOGRAPH-FAB4
+F958      ; [.9A69.0020.0002.83F1] # CJK COMPATIBILITY IDEOGRAPH-F958
+F918      ; [.9B7C.0020.0002.843D] # CJK COMPATIBILITY IDEOGRAPH-F918
+F96E      ; [.CDE9.0020.0002.8449] # CJK COMPATIBILITY IDEOGRAPH-F96E
+FA5F      ; [.B86A.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-FA5F
+2F99F     ; [.B86A.0020.0002.8457] # CJK COMPATIBILITY IDEOGRAPH-2F99F
+F999      ; [.9980.0020.0002.84EE] # CJK COMPATIBILITY IDEOGRAPH-F999
+2F9A8     ; [.85DC.0020.0002.84F1] # CJK COMPATIBILITY IDEOGRAPH-2F9A8
+2F9A9     ; [.AA97.0020.0002.84F3] # CJK COMPATIBILITY IDEOGRAPH-2F9A9
+F9C2      ; [.98FD.0020.0002.84FC] # CJK COMPATIBILITY IDEOGRAPH-F9C2
+2F9AA     ; [.C74F.0020.0002.8516] # CJK COMPATIBILITY IDEOGRAPH-2F9AA
+2F9AC     ; [.C399.0020.0002.8564] # CJK COMPATIBILITY IDEOGRAPH-2F9AC
+F923      ; [.971B.0020.0002.85CD] # CJK COMPATIBILITY IDEOGRAPH-F923
+F9F0      ; [.9A11.0020.0002.85FA] # CJK COMPATIBILITY IDEOGRAPH-F9F0
+F935      ; [.9AC4.0020.0002.8606] # CJK COMPATIBILITY IDEOGRAPH-F935
+FA20      ; [.AEF5.0020.0002.8612] # CJK COMPATIBILITY IDEOGRAPH-FA20
+F91F      ; [.9728.0020.0002.862D] # CJK COMPATIBILITY IDEOGRAPH-F91F
+F910      ; [.9B5D.0020.0002.863F] # CJK COMPATIBILITY IDEOGRAPH-F910
+2F9B3     ; [.95D6.0020.0002.8650] # CJK COMPATIBILITY IDEOGRAPH-2F9B3
+F936      ; [.9AD8.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-F936
+2F9B4     ; [.9AD8.0020.0002.865C] # CJK COMPATIBILITY IDEOGRAPH-2F9B4
+2F9B5     ; [.A14D.0020.0002.8667] # CJK COMPATIBILITY IDEOGRAPH-2F9B5
+2F9B6     ; [.B256.0020.0002.8669] # CJK COMPATIBILITY IDEOGRAPH-2F9B6
+2F9B8     ; [.AF15.0020.0002.8688] # CJK COMPATIBILITY IDEOGRAPH-2F9B8
+2F9B7     ; [.BBB2.0020.0002.86A9] # CJK COMPATIBILITY IDEOGRAPH-2F9B7
+2F9BA     ; [.85D9.0020.0002.86E2] # CJK COMPATIBILITY IDEOGRAPH-2F9BA
+2F9B9     ; [.D57F.0020.0002.870E] # CJK COMPATIBILITY IDEOGRAPH-2F9B9
+2F9BC     ; [.8E3B.0020.0002.8728] # CJK COMPATIBILITY IDEOGRAPH-2F9BC
+2F9BD     ; [.BA44.0020.0002.876B] # CJK COMPATIBILITY IDEOGRAPH-2F9BD
+FAB5      ; [.D5EE.0020.0002.8779] # CJK COMPATIBILITY IDEOGRAPH-FAB5
+2F9BB     ; [.D5EE.0020.0002.8779] # CJK COMPATIBILITY IDEOGRAPH-2F9BB
+2F9BE     ; [.C674.0020.0002.8786] # CJK COMPATIBILITY IDEOGRAPH-2F9BE
+F911      ; [.9B51.0020.0002.87BA] # CJK COMPATIBILITY IDEOGRAPH-F911
+2F9C0     ; [.9EFE.0020.0002.87E1] # CJK COMPATIBILITY IDEOGRAPH-2F9C0
+2F9C1     ; [.B510.0020.0002.8801] # CJK COMPATIBILITY IDEOGRAPH-2F9C1
+F927      ; [.95F9.0020.0002.881F] # CJK COMPATIBILITY IDEOGRAPH-F927
+FA08      ; [.B543.0020.0002.884C] # CJK COMPATIBILITY IDEOGRAPH-FA08
+2F9C3     ; [.BB4D.0020.0002.8860] # CJK COMPATIBILITY IDEOGRAPH-2F9C3
+2F9C4     ; [.CBE0.0020.0002.8863] # CJK COMPATIBILITY IDEOGRAPH-2F9C4
+F9A0      ; [.98B8.0020.0002.88C2] # CJK COMPATIBILITY IDEOGRAPH-F9A0
+F9E7      ; [.97F6.0020.0002.88CF] # CJK COMPATIBILITY IDEOGRAPH-F9E7
+2F9C6     ; [.9919.0020.0002.88D7] # CJK COMPATIBILITY IDEOGRAPH-2F9C6
+2F9C7     ; [.C276.0020.0002.88DE] # CJK COMPATIBILITY IDEOGRAPH-2F9C7
+F9E8      ; [.989C.0020.0002.88E1] # CJK COMPATIBILITY IDEOGRAPH-F9E8
+F912      ; [.9B67.0020.0002.88F8] # CJK COMPATIBILITY IDEOGRAPH-F912
+2F9C9     ; [.CF76.0020.0002.88FA] # CJK COMPATIBILITY IDEOGRAPH-2F9C9
+FA60      ; [.A282.0020.0002.8910] # CJK COMPATIBILITY IDEOGRAPH-FA60
+FAB6      ; [.B011.0020.0002.8941] # CJK COMPATIBILITY IDEOGRAPH-FAB6
+F924      ; [.9724.0020.0002.8964] # CJK COMPATIBILITY IDEOGRAPH-F924
+FAB7      ; [.8BFE.0020.0002.8986] # CJK COMPATIBILITY IDEOGRAPH-FAB7
+FA0A      ; [.AA1C.0020.0002.898B] # CJK COMPATIBILITY IDEOGRAPH-FA0A
+FA61      ; [.BFE1.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FA61
+FAB8      ; [.BFE1.0020.0002.8996] # CJK COMPATIBILITY IDEOGRAPH-FAB8
+2F9CF     ; [.BE22.0020.0002.8AA0] # CJK COMPATIBILITY IDEOGRAPH-2F9CF
+F96F      ; [.C24F.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F96F
+F9A1      ; [.C24F.0020.0002.8AAA] # CJK COMPATIBILITY IDEOGRAPH-F9A1
+FAB9      ; [.8E75.0020.0002.8ABF] # CJK COMPATIBILITY IDEOGRAPH-FAB9
+FABB      ; [.B047.0020.0002.8ACB] # CJK COMPATIBILITY IDEOGRAPH-FABB
+F97D      ; [.9A3C.0020.0002.8AD2] # CJK COMPATIBILITY IDEOGRAPH-F97D
+F941      ; [.9BCB.0020.0002.8AD6] # CJK COMPATIBILITY IDEOGRAPH-F941
+FABE      ; [.D502.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-FABE
+2F9D0     ; [.D502.0020.0002.8AED] # CJK COMPATIBILITY IDEOGRAPH-2F9D0
+FA22      ; [.BA48.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FA22
+FABA      ; [.BA48.0020.0002.8AF8] # CJK COMPATIBILITY IDEOGRAPH-FABA
+F95D      ; [.95A4.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-F95D
+FABD      ; [.95A4.0020.0002.8AFE] # CJK COMPATIBILITY IDEOGRAPH-FABD
+FA62      ; [.CDF9.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FA62
+FABC      ; [.CDF9.0020.0002.8B01] # CJK COMPATIBILITY IDEOGRAPH-FABC
+FA63      ; [.AA9A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FA63
+FABF      ; [.AA9A.0020.0002.8B39] # CJK COMPATIBILITY IDEOGRAPH-FABF
+F9FC      ; [.C017.0020.0002.8B58] # CJK COMPATIBILITY IDEOGRAPH-F9FC
+F95A      ; [.8F10.0020.0002.8B80] # CJK COMPATIBILITY IDEOGRAPH-F95A
+FAC0      ; [.831E.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-FAC0
+2F9D1     ; [.831E.0020.0002.8B8A] # CJK COMPATIBILITY IDEOGRAPH-2F9D1
+F900      ; [.ADCC.0020.0002.8C48] # CJK COMPATIBILITY IDEOGRAPH-F900
+2F9D2     ; [.BFAB.0020.0002.8C55] # CJK COMPATIBILITY IDEOGRAPH-2F9D2
+2F9D4     ; [.9F4B.0020.0002.8CAB] # CJK COMPATIBILITY IDEOGRAPH-2F9D4
+2F9D5     ; [.8245.0020.0002.8CC1] # CJK COMPATIBILITY IDEOGRAPH-2F9D5
+F948      ; [.9B0D.0020.0002.8CC2] # CJK COMPATIBILITY IDEOGRAPH-F948
+F903      ; [.A822.0020.0002.8CC8] # CJK COMPATIBILITY IDEOGRAPH-F903
+FA64      ; [.8331.0020.0002.8CD3] # CJK COMPATIBILITY IDEOGRAPH-FA64
+FA65      ; [.C56B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FA65
+FAC1      ; [.C56B.0020.0002.8D08] # CJK COMPATIBILITY IDEOGRAPH-FAC1
+2F9D6     ; [.9D8F.0020.0002.8D1B] # CJK COMPATIBILITY IDEOGRAPH-2F9D6
+2F9D7     ; [.ADCD.0020.0002.8D77] # CJK COMPATIBILITY IDEOGRAPH-2F9D7
+2F9DB     ; [.A9FA.0020.0002.8DBC] # CJK COMPATIBILITY IDEOGRAPH-2F9DB
+2F9DA     ; [.8024.0020.0002.8DCB] # CJK COMPATIBILITY IDEOGRAPH-2F9DA
+F937      ; [.9B0E.0020.0002.8DEF] # CJK COMPATIBILITY IDEOGRAPH-F937
+2F9DC     ; [.8589.0020.0002.8DF0] # CJK COMPATIBILITY IDEOGRAPH-2F9DC
+F902      ; [.BC58.0020.0002.8ECA] # CJK COMPATIBILITY IDEOGRAPH-F902
+2F9DE     ; [.C321.0020.0002.8ED4] # CJK COMPATIBILITY IDEOGRAPH-2F9DE
+F998      ; [.9549.0020.0002.8F26] # CJK COMPATIBILITY IDEOGRAPH-F998
+F9D7      ; [.9BC2.0020.0002.8F2A] # CJK COMPATIBILITY IDEOGRAPH-F9D7
+FAC2      ; [.C1FB.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-FAC2
+2F9DF     ; [.C1FB.0020.0002.8F38] # CJK COMPATIBILITY IDEOGRAPH-2F9DF
+FA07      ; [.8B97.0020.0002.8F3B] # CJK COMPATIBILITY IDEOGRAPH-FA07
+F98D      ; [.988A.0020.0002.8F62] # CJK COMPATIBILITY IDEOGRAPH-F98D
+2F98D     ; [.C64B.0020.0002.8F9E] # CJK COMPATIBILITY IDEOGRAPH-2F98D
+F971      ; [.BD5F.0020.0002.8FB0] # CJK COMPATIBILITY IDEOGRAPH-F971
+FA66      ; [.BE9F.0020.0002.8FB6] # CJK COMPATIBILITY IDEOGRAPH-FA66
+F99A      ; [.996B.0020.0002.9023] # CJK COMPATIBILITY IDEOGRAPH-F99A
+FA25      ; [.CCEA.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA25
+FA67      ; [.CCEA.0020.0002.9038] # CJK COMPATIBILITY IDEOGRAPH-FA67
+FAC3      ; [.BBE0.0020.0002.9072] # CJK COMPATIBILITY IDEOGRAPH-FAC3
+F9C3      ; [.98E6.0020.0002.907C] # CJK COMPATIBILITY IDEOGRAPH-F9C3
+F913      ; [.9B5E.0020.0002.908F] # CJK COMPATIBILITY IDEOGRAPH-F913
+2F9E2     ; [.ADC4.0020.0002.9094] # CJK COMPATIBILITY IDEOGRAPH-2F9E2
+F92C      ; [.975C.0020.0002.90CE] # CJK COMPATIBILITY IDEOGRAPH-F92C
+FA2E      ; [.975F.0020.0002.90DE] # CJK COMPATIBILITY IDEOGRAPH-FA2E
+2F9E3     ; [.85CC.0020.0002.90F1] # CJK COMPATIBILITY IDEOGRAPH-2F9E3
+FA26      ; [.8CC2.0020.0002.90FD] # CJK COMPATIBILITY IDEOGRAPH-FA26
+2F9E4     ; [.C423.0020.0002.9111] # CJK COMPATIBILITY IDEOGRAPH-2F9E4
+2F9E6     ; [.BC9D.0020.0002.911B] # CJK COMPATIBILITY IDEOGRAPH-2F9E6
+F919      ; [.96C8.0020.0002.916A] # CJK COMPATIBILITY IDEOGRAPH-F919
+FAC4      ; [.C8CB.0020.0002.9199] # CJK COMPATIBILITY IDEOGRAPH-FAC4
+F9B7      ; [.97FF.0020.0002.91B4] # CJK COMPATIBILITY IDEOGRAPH-F9B7
+F9E9      ; [.97EB.0020.0002.91CC] # CJK COMPATIBILITY IDEOGRAPH-F9E9
+F97E      ; [.9A3A.0020.0002.91CF] # CJK COMPATIBILITY IDEOGRAPH-F97E
+F90A      ; [.AA72.0020.0002.91D1] # CJK COMPATIBILITY IDEOGRAPH-F90A
+F9B1      ; [.9A6E.0020.0002.9234] # CJK COMPATIBILITY IDEOGRAPH-F9B1
+2F9E7     ; [.8086.0020.0002.9238] # CJK COMPATIBILITY IDEOGRAPH-2F9E7
+FAC5      ; [.B553.0020.0002.9276] # CJK COMPATIBILITY IDEOGRAPH-FAC5
+2F9EA     ; [.8369.0020.0002.927C] # CJK COMPATIBILITY IDEOGRAPH-2F9EA
+2F9E8     ; [.B62C.0020.0002.92D7] # CJK COMPATIBILITY IDEOGRAPH-2F9E8
+2F9E9     ; [.A455.0020.0002.92D8] # CJK COMPATIBILITY IDEOGRAPH-2F9E9
+F93F      ; [.9B23.0020.0002.9304] # CJK COMPATIBILITY IDEOGRAPH-F93F
+F99B      ; [.99BE.0020.0002.934A] # CJK COMPATIBILITY IDEOGRAPH-F99B
+2F9EB     ; [.B013.0020.0002.93F9] # CJK COMPATIBILITY IDEOGRAPH-2F9EB
+2F9EC     ; [.C516.0020.0002.9415] # CJK COMPATIBILITY IDEOGRAPH-2F9EC
+2F9EE     ; [.A032.0020.0002.958B] # CJK COMPATIBILITY IDEOGRAPH-2F9EE
+F986      ; [.9C1F.0020.0002.95AD] # CJK COMPATIBILITY IDEOGRAPH-F986
+2F9F0     ; [.C083.0020.0002.95B7] # CJK COMPATIBILITY IDEOGRAPH-2F9F0
+F9C6      ; [.C3B3.0020.0002.962E] # CJK COMPATIBILITY IDEOGRAPH-F9C6
+F951      ; [.96FA.0020.0002.964B] # CJK COMPATIBILITY IDEOGRAPH-F951
+FA09      ; [.AB03.0020.0002.964D] # CJK COMPATIBILITY IDEOGRAPH-FA09
+F959      ; [.9A68.0020.0002.9675] # CJK COMPATIBILITY IDEOGRAPH-F959
+F9D3      ; [.9AFC.0020.0002.9678] # CJK COMPATIBILITY IDEOGRAPH-F9D3
+FAC6      ; [.BA71.0020.0002.967C] # CJK COMPATIBILITY IDEOGRAPH-FAC6
+F9DC      ; [.9BDC.0020.0002.9686] # CJK COMPATIBILITY IDEOGRAPH-F9DC
+F9F1      ; [.99DD.0020.0002.96A3] # CJK COMPATIBILITY IDEOGRAPH-F9F1
+FA2F      ; [.9859.0020.0002.96B7] # CJK COMPATIBILITY IDEOGRAPH-FA2F
+F9B8      ; [.985F.0020.0002.96B8] # CJK COMPATIBILITY IDEOGRAPH-F9B8
+2F9F3     ; [.AF18.0020.0002.96C3] # CJK COMPATIBILITY IDEOGRAPH-2F9F3
+F9EA      ; [.97D0.0020.0002.96E2] # CJK COMPATIBILITY IDEOGRAPH-F9EA
+FA68      ; [.9467.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FA68
+FAC7      ; [.9467.0020.0002.96E3] # CJK COMPATIBILITY IDEOGRAPH-FAC7
+F9B2      ; [.9A70.0020.0002.96F6] # CJK COMPATIBILITY IDEOGRAPH-F9B2
+F949      ; [.964D.0020.0002.96F7] # CJK COMPATIBILITY IDEOGRAPH-F949
+2F9F5     ; [.D625.0020.0002.9723] # CJK COMPATIBILITY IDEOGRAPH-2F9F5
+F938      ; [.9B37.0020.0002.9732] # CJK COMPATIBILITY IDEOGRAPH-F938
+F9B3      ; [.9A8D.0020.0002.9748] # CJK COMPATIBILITY IDEOGRAPH-F9B3
+FA1C      ; [.AB77.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FA1C
+FAC8      ; [.AB77.0020.0002.9756] # CJK COMPATIBILITY IDEOGRAPH-FAC8
+FAC9      ; [.80D4.0020.0002.97DB] # CJK COMPATIBILITY IDEOGRAPH-FAC9
+2F9FA     ; [.8286.0020.0002.97E0] # CJK COMPATIBILITY IDEOGRAPH-2F9FA
+FA69      ; [.B512.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FA69
+FACA      ; [.B512.0020.0002.97FF] # CJK COMPATIBILITY IDEOGRAPH-FACA
+FACB      ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-FACB
+2F9FE     ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-2F9FE
+2F9FF     ; [.CA47.0020.0002.980B] # CJK COMPATIBILITY IDEOGRAPH-2F9FF
+F9B4      ; [.9A99.0020.0002.9818] # CJK COMPATIBILITY IDEOGRAPH-F9B4
+2FA00     ; [.85BD.0020.0002.9829] # CJK COMPATIBILITY IDEOGRAPH-2FA00
+FA6A      ; [.85A6.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FA6A
+FACC      ; [.85A6.0020.0002.983B] # CJK COMPATIBILITY IDEOGRAPH-FACC
+F9D0      ; [.9693.0020.0002.985E] # CJK COMPATIBILITY IDEOGRAPH-F9D0
+2FA02     ; [.A6B2.0020.0002.98E2] # CJK COMPATIBILITY IDEOGRAPH-2FA02
+FA2A      ; [.8A4D.0020.0002.98EF] # CJK COMPATIBILITY IDEOGRAPH-FA2A
+FA2B      ; [.C84E.0020.0002.98FC] # CJK COMPATIBILITY IDEOGRAPH-FA2B
+FA2C      ; [.9F41.0020.0002.9928] # CJK COMPATIBILITY IDEOGRAPH-FA2C
+2FA04     ; [.CA8F.0020.0002.9929] # CJK COMPATIBILITY IDEOGRAPH-2FA04
+2FA05     ; [.D5F2.0020.0002.99A7] # CJK COMPATIBILITY IDEOGRAPH-2FA05
+2FA06     ; [.813C.0020.0002.99C2] # CJK COMPATIBILITY IDEOGRAPH-2FA06
+F91A      ; [.9B82.0020.0002.99F1] # CJK COMPATIBILITY IDEOGRAPH-F91A
+2FA07     ; [.9361.0020.0002.99FE] # CJK COMPATIBILITY IDEOGRAPH-2FA07
+F987      ; [.97E7.0020.0002.9A6A] # CJK COMPATIBILITY IDEOGRAPH-F987
+FACD      ; [.B997.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-FACD
+2FA0A     ; [.B997.0020.0002.9B12] # CJK COMPATIBILITY IDEOGRAPH-2FA0A
+F939      ; [.9ADD.0020.0002.9B6F] # CJK COMPATIBILITY IDEOGRAPH-F939
+2FA0B     ; [.A7C3.0020.0002.9C40] # CJK COMPATIBILITY IDEOGRAPH-2FA0B
+F9F2      ; [.99F1.0020.0002.9C57] # CJK COMPATIBILITY IDEOGRAPH-F9F2
+2FA0C     ; [.A9BB.0020.0002.9CFD] # CJK COMPATIBILITY IDEOGRAPH-2FA0C
+2FA0F     ; [.8528.0020.0002.9D67] # CJK COMPATIBILITY IDEOGRAPH-2FA0F
+FA2D      ; [.A28C.0020.0002.9DB4] # CJK COMPATIBILITY IDEOGRAPH-FA2D
+F93A      ; [.9B3A.0020.0002.9DFA] # CJK COMPATIBILITY IDEOGRAPH-F93A
+F920      ; [.9BA4.0020.0002.9E1E] # CJK COMPATIBILITY IDEOGRAPH-F920
+F940      ; [.9AFD.0020.0002.9E7F] # CJK COMPATIBILITY IDEOGRAPH-F940
+F988      ; [.9871.0020.0002.9E97] # CJK COMPATIBILITY IDEOGRAPH-F988
+F9F3      ; [.99F2.0020.0002.9E9F] # CJK COMPATIBILITY IDEOGRAPH-F9F3
+2FA15     ; [.862D.0020.0002.9EBB] # CJK COMPATIBILITY IDEOGRAPH-2FA15
+F989      ; [.97C2.0020.0002.9ECE] # CJK COMPATIBILITY IDEOGRAPH-F989
+2FA17     ; [.B762.0020.0002.9EF9] # CJK COMPATIBILITY IDEOGRAPH-2FA17
+2FA18     ; [.88D4.0020.0002.9EFE] # CJK COMPATIBILITY IDEOGRAPH-2FA18
+2FA19     ; [.B715.0020.0002.9F05] # CJK COMPATIBILITY IDEOGRAPH-2FA19
+2FA1A     ; [.8885.0020.0002.9F0F] # CJK COMPATIBILITY IDEOGRAPH-2FA1A
+2FA1B     ; [.8A85.0020.0002.9F16] # CJK COMPATIBILITY IDEOGRAPH-2FA1B
+2FA1C     ; [.81FB.0020.0002.9F3B] # CJK COMPATIBILITY IDEOGRAPH-2FA1C
+FAD8      ; [.CA9A.0020.0002.9F43] # CJK COMPATIBILITY IDEOGRAPH-FAD8
+F9C4      ; [.9BE4.0020.0002.9F8D] # CJK COMPATIBILITY IDEOGRAPH-F9C4
+FAD9      ; [.8497.0020.0002.9F8E] # CJK COMPATIBILITY IDEOGRAPH-FAD9
+F907      ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F907
+F908      ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-F908
+FACE      ; [.9ED7.0020.0002.9F9C] # CJK COMPATIBILITY IDEOGRAPH-FACE
+2F81F     ; [.8505.0020.0002.34DF] # CJK COMPATIBILITY IDEOGRAPH-2F81F
+2F888     ; [.87AA.0020.0002.3862] # CJK COMPATIBILITY IDEOGRAPH-2F888
+2F8D0     ; [.D37C.0020.0002.3B08] # CJK COMPATIBILITY IDEOGRAPH-2F8D0
+2F8CE     ; [.D2E0.0020.0002.3B19] # CJK COMPATIBILITY IDEOGRAPH-2F8CE
+2F8DE     ; [.A447.0020.0002.3B49] # CJK COMPATIBILITY IDEOGRAPH-2F8DE
+2F8EE     ; [.CC56.0020.0002.3C18] # CJK COMPATIBILITY IDEOGRAPH-2F8EE
+2F90A     ; [.9C08.0020.0002.3D33] # CJK COMPATIBILITY IDEOGRAPH-2F90A
+2F92C     ; [.85CD.0020.0002.3EB8] # CJK COMPATIBILITY IDEOGRAPH-2F92C
+2F92D     ; [.85CD.0020.0002.3EB8] # CJK COMPATIBILITY IDEOGRAPH-2F92D
+FAD4      ; [.A871.0020.0002.4039] # CJK COMPATIBILITY IDEOGRAPH-FAD4
+2F949     ; [.A871.0020.0002.4039] # CJK COMPATIBILITY IDEOGRAPH-2F949
+2F960     ; [.85E0.0020.0002.4202] # CJK COMPATIBILITY IDEOGRAPH-2F960
+2F96D     ; [.CE1D.0020.0002.4301] # CJK COMPATIBILITY IDEOGRAPH-2F96D
+2F8D7     ; [.9118.0020.0002.43D9] # CJK COMPATIBILITY IDEOGRAPH-2F8D7
+2FA0E     ; [.A746.0020.0002.4CED] # CJK COMPATIBILITY IDEOGRAPH-2FA0E
+ENTRY
+};

Added: vendor/perl/dist/cpan/Unicode-Collate/t/cjk_zy.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/cjk_zy.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/cjk_zy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,87 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..26\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;
+
+ok(1);
+
+#########################
+
+use Unicode::Collate::CJK::Zhuyin;
+
+my $collator = Unicode::Collate->new(
+    table => undef,
+    normalization => undef,
+    overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin
+);
+
+sub hex_sort {
+    my @source = map pack('U', hex $_), split ' ', shift;
+    my @sorted = $collator->sort(@source);
+    return join " ", map sprintf("%04X", unpack 'U', $_), @sorted;
+}
+
+# 1
+
+$collator->change(level => 1);
+
+ok($collator->lt("\x{516B}", "\x{628A}"));
+ok($collator->lt("\x{628A}", "\x{5DF4}"));
+ok($collator->lt("\x{5DF4}", "\x{767D}"));
+ok($collator->lt("\x{767D}", "\x{5317}"));
+ok($collator->lt("\x{5317}", "\x{9F3B}"));
+ok($collator->lt("\x{9F3B}", "\x{4E0D}"));
+ok($collator->lt("\x{4E0D}", "\x{547D}"));
+ok($collator->lt("\x{547D}", "\x{6BCD}"));
+ok($collator->lt("\x{6BCD}", "\x{6253}"));
+ok($collator->lt("\x{6253}", "\x{7530}"));
+ok($collator->lt("\x{7530}", "\x{52AA}"));
+ok($collator->lt("\x{52AA}", "\x{529B}"));
+ok($collator->lt("\x{529B}", "\x{5375}"));
+ok($collator->lt("\x{5375}", "\x{5149}"));
+ok($collator->lt("\x{5149}", "\x{5915}"));
+ok($collator->lt("\x{5915}", "\x{4E09}"));
+ok($collator->lt("\x{4E09}", "\x{4E00}"));
+ok($collator->lt("\x{4E00}", "\x{7528}"));
+
+# Ext.B
+ok($collator->lt("\x{20000}", "\x{20001}"));
+ok($collator->lt("\x{20001}", "\x{20002}"));
+ok($collator->lt("\x{20002}", "\x{20003}"));
+ok($collator->lt("\x{20003}", "\x{20004}"));
+ok($collator->lt("\x{20004}", "\x{20005}"));
+
+# 24
+
+ok(hex_sort('4E00 4E8C 4E09 56DB 4E94 516D 4E03 516B 4E5D 5341'),
+            '516B 516D 4E5D 4E03 5341 56DB 4E09 4E8C 4E00 4E94');
+
+
+
+ok(hex_sort('4E0C 4E8D 4F5C 5140 554A 5750 57C3 5EA7 963F 9F3D 9F3E 9F44'),
+            '9F3E 4E0C 9F3D 9F44 4E8D 4F5C 5750 5EA7 963F 554A 57C3 5140');
+
+# 26

Added: vendor/perl/dist/cpan/Unicode-Collate/t/ident.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/ident.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/ident.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,161 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..45\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;
+
+ok(1);
+
+#########################
+
+my $Collator = Unicode::Collate->new(
+    table => 'keys.txt',
+    normalization => undef,
+);
+
+# [001F] UNIT SEPARATOR
+{
+    ok($Collator->eq("\0",   "\x1F"));
+    ok($Collator->eq("\x1F", "\x{200B}"));
+    ok($Collator->eq("\0",   "\x{200B}"));
+    ok($Collator->eq("\x{313}", "\x{343}"));
+    ok($Collator->eq("\x{2000}", "\x{2001}"));
+    ok($Collator->eq("\x{200B}", "\x{200C}"));
+    ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+
+    $Collator->change(identical => 1);
+
+    ok($Collator->lt("\0",   "\x1F"));
+    ok($Collator->lt("\x1F", "\x{200B}"));
+    ok($Collator->lt("\0",   "\x{200B}"));
+    ok($Collator->lt("\x{313}", "\x{343}"));
+    ok($Collator->lt("\x{2000}", "\x{2001}"));
+    ok($Collator->lt("\x{200B}", "\x{200C}"));
+    ok($Collator->gt("\x{304C}", "\x{304B}\x{3099}"));
+
+    $Collator->change(identical => 0);
+
+    ok($Collator->eq("\0",   "\x1F"));
+    ok($Collator->eq("\x1F", "\x{200B}"));
+    ok($Collator->eq("\0",   "\x{200B}"));
+    ok($Collator->eq("\x{313}", "\x{343}"));
+    ok($Collator->eq("\x{2000}", "\x{2001}"));
+    ok($Collator->eq("\x{200B}", "\x{200C}"));
+    ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+}
+
+#### 22
+
+eval { require Unicode::Normalize };
+if (!$@) {
+    $Collator->change(normalization => "NFD");
+
+    $Collator->change(identical => 1);
+
+    ok($Collator->lt("\0", "\x{200B}"));
+    ok($Collator->eq("\x{313}", "\x{343}"));
+    ok($Collator->lt("\x{2000}", "\x{2001}"));
+    ok($Collator->lt("\x{200B}", "\x{200C}"));
+    ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+
+    $Collator->change(identical => 0);
+
+    ok($Collator->eq("\0", "\x{200B}"));
+    ok($Collator->eq("\x{313}", "\x{343}"));
+    ok($Collator->eq("\x{2000}", "\x{2001}"));
+    ok($Collator->eq("\x{200B}", "\x{200C}"));
+    ok($Collator->eq("\x{304C}", "\x{304B}\x{3099}"));
+} else {
+    ok(1) for 1..10;
+}
+
+$Collator->change(normalization => undef, identical => 1);
+
+##### 32
+
+ok($Collator->viewSortKey("\0"),       '[| | | | 0000 0000]');
+ok($Collator->viewSortKey("\x{200B}"), '[| | | | 0000 200B]');
+
+ok($Collator->viewSortKey('a'),
+    '[0A15 | 0020 | 0002 | FFFF | 0000 0061]');
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304C]');
+
+ok($Collator->viewSortKey("\x{100000}"),
+    '[FBE0 8000 | 0020 | 0002 | FFFF FFFF | 0010 0000]');
+
+eval { require Unicode::Normalize };
+if (!$@) {
+    $Collator->change(normalization => "NFD");
+
+    ok($Collator->viewSortKey("\x{304C}"),
+    '[1926 | 0020 013D | 000E 0002 | FFFF FFFF | 0000 304B 0000 3099]');
+} else {
+    ok(1);
+}
+
+$Collator->change(normalization => undef);
+
+##### 38
+
+$Collator->change(level => 3);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926 | 0020 013D | 000E 0002 | | 0000 304C]');
+
+$Collator->change(level => 2);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926 | 0020 013D | | | 0000 304C]');
+
+$Collator->change(level => 1);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926 | | | | 0000 304C]');
+
+##### 41
+
+$Collator->change(UCA_Version => 8);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926||||0000 304C]');
+
+$Collator->change(level => 2);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926|0020 013D|||0000 304C]');
+
+$Collator->change(level => 3);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926|0020 013D|000E 0002||0000 304C]');
+
+$Collator->change(level => 4);
+
+ok($Collator->viewSortKey("\x{304C}"),
+    '[1926|0020 013D|000E 0002|FFFF FFFF|0000 304C]');
+
+##### 45

Added: vendor/perl/dist/cpan/Unicode-Collate/t/iglevel2.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/iglevel2.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/iglevel2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,226 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..42\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;
+
+ok(1);
+
+#########################
+
+my $Collator = Unicode::Collate->new(
+  table => 'keys.txt',
+  normalization => undef,
+  ignore_level2 => 1,
+  entry => << 'ENTRIES',
+1B00  ; [.0000.00FF.0002.1B00] # BALINESE SIGN ULU RICEM
+1B01  ; [.0000.0100.0002.1B01] # BALINESE SIGN ULU CANDRA
+1B02  ; [.0000.0101.0002.1B02] # BALINESE SIGN CECEK
+03C6  ; [.1900.0020.0002.03C6] # GREEK SMALL LETTER PHI
+03D5  ; [.1900.0020.0004.03D5] # GREEK PHI SYMBOL; QQK
+03A6  ; [.1900.0020.0008.03A6] # GREEK CAPITAL LETTER PHI
+ENTRIES
+);
+
+ok($Collator->eq("camel", "came\x{300}l"));
+ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->lt("camel", "Camel"));
+
+# 4
+
+$Collator->change(ignore_level2 => 0);
+
+ok($Collator->lt("camel", "came\x{300}l"));
+ok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->lt("camel", "Camel"));
+
+$Collator->change(level => 1);
+
+ok($Collator->eq("camel", "came\x{300}l"));
+ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->eq("camel", "Camel"));
+
+$Collator->change(level => 2);
+
+ok($Collator->lt("camel", "came\x{300}l"));
+ok($Collator->lt("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->eq("camel", "Camel"));
+
+# 13
+
+$Collator->change(ignore_level2 => 1);
+
+ok($Collator->eq("camel", "came\x{300}l"));
+ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->eq("camel", "Camel"));
+
+$Collator->change(level => 3);
+
+ok($Collator->eq("camel", "came\x{300}l"));
+ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->lt("camel", "Camel"));
+
+#  secondary: neither 00FF nor 0100 is zero
+ok($Collator->eq("camel", "came\x{1B00}l"));
+ok($Collator->eq("camel", "came\x{1B01}l"));
+ok($Collator->eq("camel", "came\x{1B02}l"));
+
+#  primary: 1900 isn't zero
+ok($Collator->lt("\x{3C6}", "\x{3D5}"));
+ok($Collator->lt("\x{3D5}", "\x{3A6}"));
+
+# 24
+
+{
+    my $s;
+    my $txt = "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.";
+
+    $Collator->change(ignore_level2 => 0, level => 1);
+
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
+
+    $Collator->change(level => 2);
+
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "=Camel= donkey zebra came\x{301}l =CAMEL= horse =cAm\0E\0L=.");
+
+    $Collator->change(level => 3);
+
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L.");
+
+    $Collator->change(ignore_level2 => 1);
+
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "Camel donkey zebra =came\x{301}l= CAMEL horse cAm\0E\0L.");
+
+    $Collator->change(level => 2);
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
+
+    $Collator->change(level => 1);
+    $s = $txt;
+    $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+    ok($s, "=Camel= donkey zebra =came\x{301}l= =CAMEL= horse =cAm\0E\0L=.");
+
+}
+
+# 30
+
+{
+    my $c = Unicode::Collate->new(
+        table => 'keys.txt', normalization => undef, level => 1,
+    );
+    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
+    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
+    ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
+}
+
+{
+    my $c = Unicode::Collate->new(
+        table => 'keys.txt', normalization => undef, level => 2,
+    );
+    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
+    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
+    ok($str, "<b>Camel</b> donkey zebra came\x{301}l <b>CAMEL</b> horse <b>cam\0e\0l</b>...");
+}
+
+{
+    my $c = Unicode::Collate->new(
+        table => 'keys.txt', normalization => undef, ignore_level2 => 1,
+    );
+    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
+    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
+    ok($str, "Camel donkey zebra <b>came\x{301}l</b> CAMEL horse <b>cam\0e\0l</b>...");
+}
+
+{
+    my $c = Unicode::Collate->new(
+        table => 'keys.txt', normalization => undef, level => 3,
+    );
+    my $str = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l...";
+    $c->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
+    ok($str, "Camel donkey zebra came\x{301}l CAMEL horse <b>cam\0e\0l</b>...");
+}
+
+# 34
+
+{
+    my $str;
+    my $camel = "camel Camel came\x{301}l c-a-m-e-l cam\0e\0l";
+
+    $Collator->change(ignore_level2 => 0);
+
+    $Collator->change(level => 1);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 2);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= =Camel= came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 3);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= Camel came\x{301}l =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 4);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= Camel came\x{301}l c-a-m-e-l =cam\0e\0l=");
+
+    $Collator->change(ignore_level2 => 1);
+
+    $Collator->change(level => 1);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 2);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= =Camel= =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 3);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= Camel =came\x{301}l= =c-a-m-e-l= =cam\0e\0l=");
+
+    $Collator->change(level => 4);
+    $str = $camel;
+    $Collator->gsubst($str, "camel", sub { "=$_[0]=" });
+    ok($str, "=camel= Camel =came\x{301}l= c-a-m-e-l =cam\0e\0l=");
+}
+
+# 42
+

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_as.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_as.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_as.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..24\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 $objAs = Unicode::Collate::Locale->
+    new(locale => 'AS', normalization => undef);
+
+ok($objAs->getlocale, 'as');
+
+$objAs->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objAs->change(highestFFFF => 1) if $h;
+
+    ok($objAs->lt("\x{993}$t", "\x{994}"));
+    ok($objAs->lt("\x{994}$t", "\x{982}"));
+    ok($objAs->lt("\x{982}$t", "\x{981}"));
+    ok($objAs->lt("\x{981}$t", "\x{983}"));
+    ok($objAs->lt("\x{983}$t", "\x{995}"));
+
+    ok($objAs->lt("\x{9A2}$t", "\x{9A3}"));
+    ok($objAs->lt("\x{9A3}$t", "\x{9A4}\x{9CD}\x{200D}"));
+    ok($objAs->lt("\x{9A4}\x{9CD}\x{200D}$t", "\x{9A4}"));
+
+    ok($objAs->lt("\x{9B8}$t", "\x{9B9}"));
+    ok($objAs->lt("\x{9B9}$t", "\x{995}\x{9CD}\x{9B7}"));
+    ok($objAs->lt("\x{995}\x{9CD}\x{9B7}$t", "\x{9BD}"));
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_bn.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_bn.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_bn.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..12\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 $objBn = Unicode::Collate::Locale->
+    new(locale => 'BN', normalization => undef);
+
+ok($objBn->getlocale, 'bn');
+
+$objBn->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objBn->change(highestFFFF => 1) if $h;
+
+    ok($objBn->lt("\x{993}$t", "\x{994}"));
+    ok($objBn->lt("\x{994}$t", "\x{982}"));
+    ok($objBn->lt("\x{982}$t", "\x{983}"));
+    ok($objBn->lt("\x{983}$t", "\x{981}"));
+    ok($objBn->lt("\x{981}$t", "\x{995}"));
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_bs.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_bs.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_bs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,194 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..118\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 $objBs = Unicode::Collate::Locale->
+    new(locale => 'BS', normalization => undef);
+
+ok($objBs->getlocale, 'bs');
+
+$objBs->change(level => 1);
+
+ok($objBs->lt("c", "c\x{30C}"));
+ok($objBs->lt("c\x{30C}", "c\x{301}"));
+ok($objBs->gt("d", "c\x{301}"));
+ok($objBs->lt("d", "dz\x{30C}"));
+ok($objBs->lt("dzz", "dz\x{30C}"));
+ok($objBs->lt("dz\x{30C}", "d\x{335}"));
+ok($objBs->gt("e", "d\x{335}"));
+ok($objBs->lt("l", "lj"));
+ok($objBs->lt("lz","lj"));
+ok($objBs->gt("m", "lj"));
+ok($objBs->lt("n", "nj"));
+ok($objBs->lt("nz","nj"));
+ok($objBs->gt("o", "nj"));
+ok($objBs->lt("s", "s\x{30C}"));
+ok($objBs->lt("sz","s\x{30C}"));
+ok($objBs->gt("t", "s\x{30C}"));
+ok($objBs->lt("z", "z\x{30C}"));
+ok($objBs->lt("zz","z\x{30C}"));
+ok($objBs->lt("z\x{30C}", "\x{292}")); # U+0292 EZH
+
+# 21
+
+# not tailored
+ok($objBs->lt("dZ\x{30C}","dz\x{30C}"));
+ok($objBs->lt("lJ", "lj"));
+ok($objBs->lt("nJ", "nj"));
+
+# 24
+
+$objBs->change(level => 2);
+
+ok($objBs->eq("c\x{30C}", "C\x{30C}"));
+ok($objBs->eq("c\x{301}", "C\x{301}"));
+ok($objBs->eq("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->eq("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->eq("d\x{335}", "D\x{335}"));
+ok($objBs->eq("lj", "Lj"));
+ok($objBs->eq("Lj", "LJ"));
+ok($objBs->eq("nj", "Nj"));
+ok($objBs->eq("Nj", "NJ"));
+ok($objBs->eq("s\x{30C}", "S\x{30C}"));
+ok($objBs->eq("z\x{30C}", "Z\x{30C}"));
+
+# 35
+
+ok($objBs->eq("dz\x{30C}", "\x{1C6}"));
+ok($objBs->eq("Dz\x{30C}", "\x{1C6}"));
+ok($objBs->eq("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->eq("DZ\x{30C}", "\x{1C5}"));
+ok($objBs->eq("DZ\x{30C}", "\x{1C4}"));
+
+ok($objBs->eq("lj", "\x{1C9}"));
+ok($objBs->eq("Lj", "\x{1C9}"));
+ok($objBs->eq("Lj", "\x{1C8}"));
+ok($objBs->eq("LJ", "\x{1C8}"));
+ok($objBs->eq("LJ", "\x{1C7}"));
+
+ok($objBs->eq("nj", "\x{1CC}"));
+ok($objBs->eq("Nj", "\x{1CC}"));
+ok($objBs->eq("Nj", "\x{1CB}"));
+ok($objBs->eq("NJ", "\x{1CB}"));
+ok($objBs->eq("NJ", "\x{1CA}"));
+
+# 50
+
+$objBs->change(level => 3);
+
+ok($objBs->lt("c\x{30C}", "C\x{30C}"));
+ok($objBs->lt("c\x{301}", "C\x{301}"));
+ok($objBs->lt("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->lt("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->lt("d\x{335}", "D\x{335}"));
+ok($objBs->lt("lj", "Lj"));
+ok($objBs->lt("Lj", "LJ"));
+ok($objBs->lt("nj", "Nj"));
+ok($objBs->lt("Nj", "NJ"));
+ok($objBs->lt("s\x{30C}", "S\x{30C}"));
+ok($objBs->lt("z\x{30C}", "Z\x{30C}"));
+
+# 61
+
+ok($objBs->lt("dz\x{30C}", "\x{1C6}"));
+ok($objBs->gt("Dz\x{30C}", "\x{1C6}"));
+ok($objBs->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->gt("DZ\x{30C}", "\x{1C5}"));
+ok($objBs->lt("DZ\x{30C}", "\x{1C4}"));
+
+ok($objBs->lt("lj", "\x{1C9}"));
+ok($objBs->gt("Lj", "\x{1C9}"));
+ok($objBs->lt("Lj", "\x{1C8}"));
+ok($objBs->gt("LJ", "\x{1C8}"));
+ok($objBs->lt("LJ", "\x{1C7}"));
+
+ok($objBs->lt("nj", "\x{1CC}"));
+ok($objBs->gt("Nj", "\x{1CC}"));
+ok($objBs->lt("Nj", "\x{1CB}"));
+ok($objBs->gt("NJ", "\x{1CB}"));
+ok($objBs->lt("NJ", "\x{1CA}"));
+
+# 76
+
+ok($objBs->eq("c\x{30C}", "\x{10D}"));
+ok($objBs->eq("C\x{30C}", "\x{10C}"));
+ok($objBs->eq("c\x{301}", "\x{107}"));
+ok($objBs->eq("c\x{341}", "\x{107}"));
+ok($objBs->eq("C\x{301}", "\x{106}"));
+ok($objBs->eq("C\x{341}", "\x{106}"));
+ok($objBs->eq("dz\x{30C}", "d\x{17E}"));
+ok($objBs->eq("dZ\x{30C}", "d\x{17D}"));
+ok($objBs->eq("Dz\x{30C}", "D\x{17E}"));
+ok($objBs->eq("DZ\x{30C}", "D\x{17D}"));
+ok($objBs->eq("d\x{335}", "\x{111}"));
+ok($objBs->eq("D\x{335}", "\x{110}"));
+ok($objBs->eq("s\x{30C}", "\x{161}"));
+ok($objBs->eq("S\x{30C}", "\x{160}"));
+ok($objBs->eq("z\x{30C}", "\x{17E}"));
+ok($objBs->eq("Z\x{30C}", "\x{17D}"));
+
+# 92
+
+$objBs->change(upper_before_lower => 1);
+
+ok($objBs->gt("c\x{30C}", "C\x{30C}"));
+ok($objBs->gt("c\x{301}", "C\x{301}"));
+ok($objBs->gt("dz\x{30C}","Dz\x{30C}"));
+ok($objBs->gt("Dz\x{30C}","DZ\x{30C}"));
+ok($objBs->gt("d\x{335}", "D\x{335}"));
+ok($objBs->gt("lj", "Lj"));
+ok($objBs->gt("Lj", "LJ"));
+ok($objBs->gt("nj", "Nj"));
+ok($objBs->gt("Nj", "NJ"));
+ok($objBs->gt("s\x{30C}", "S\x{30C}"));
+ok($objBs->gt("z\x{30C}", "Z\x{30C}"));
+
+# 103
+
+ok($objBs->lt("DZ\x{30C}", "\x{1C4}"));
+ok($objBs->gt("Dz\x{30C}", "\x{1C4}"));
+ok($objBs->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objBs->gt("dz\x{30C}", "\x{1C5}"));
+ok($objBs->lt("dz\x{30C}", "\x{1C6}"));
+
+ok($objBs->lt("LJ", "\x{1C7}"));
+ok($objBs->gt("Lj", "\x{1C7}"));
+ok($objBs->lt("Lj", "\x{1C8}"));
+ok($objBs->gt("lj", "\x{1C8}"));
+ok($objBs->lt("lj", "\x{1C9}"));
+
+ok($objBs->lt("NJ", "\x{1CA}"));
+ok($objBs->gt("Nj", "\x{1CA}"));
+ok($objBs->lt("Nj", "\x{1CB}"));
+ok($objBs->gt("nj", "\x{1CB}"));
+ok($objBs->lt("nj", "\x{1CC}"));
+
+# 118

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_bscy.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_bscy.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_bscy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,209 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..210\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 $objBsCyrl = Unicode::Collate::Locale->
+    new(locale => 'BS-CYRL', normalization => undef);
+
+ok($objBsCyrl->getlocale, 'bs_Cyrl');
+
+$objBsCyrl->change(level => 1);
+
+ok($objBsCyrl->eq("\x{4D1}", "\x{430}"));
+ok($objBsCyrl->eq("\x{4D0}", "\x{410}"));
+ok($objBsCyrl->eq("\x{4D3}", "\x{430}"));
+ok($objBsCyrl->eq("\x{4D2}", "\x{410}"));
+ok($objBsCyrl->eq("\x{4DB}", "\x{4D9}"));
+ok($objBsCyrl->eq("\x{4DA}", "\x{4D8}"));
+ok($objBsCyrl->eq("\x{453}", "\x{433}"));
+ok($objBsCyrl->eq("\x{403}", "\x{413}"));
+ok($objBsCyrl->eq("\x{450}", "\x{435}")); # not contraction
+ok($objBsCyrl->eq("\x{400}", "\x{415}")); # not contraction
+ok($objBsCyrl->eq("\x{451}", "\x{435}")); # not contraction
+ok($objBsCyrl->eq("\x{401}", "\x{415}")); # not contraction
+ok($objBsCyrl->eq("\x{4D7}", "\x{435}"));
+ok($objBsCyrl->eq("\x{4D6}", "\x{415}"));
+ok($objBsCyrl->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objBsCyrl->eq("\x{4C1}", "\x{416}")); # not contraction
+ok($objBsCyrl->eq("\x{4DD}", "\x{436}"));
+ok($objBsCyrl->eq("\x{4DC}", "\x{416}"));
+ok($objBsCyrl->eq("\x{4DF}", "\x{437}"));
+ok($objBsCyrl->eq("\x{4DE}", "\x{417}"));
+ok($objBsCyrl->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objBsCyrl->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objBsCyrl->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objBsCyrl->eq("\x{4E2}", "\x{418}")); # not contraction
+ok($objBsCyrl->eq("\x{4E5}", "\x{438}"));
+ok($objBsCyrl->eq("\x{4E4}", "\x{418}"));
+ok($objBsCyrl->eq("\x{457}", "\x{456}"));
+ok($objBsCyrl->eq("\x{407}", "\x{406}"));
+ok($objBsCyrl->eq("\x{439}", "\x{438}"));
+ok($objBsCyrl->eq("\x{419}", "\x{418}"));
+ok($objBsCyrl->eq("\x{4E7}", "\x{43E}"));
+ok($objBsCyrl->eq("\x{4E6}", "\x{41E}"));
+ok($objBsCyrl->eq("\x{4EB}", "\x{4E9}"));
+ok($objBsCyrl->eq("\x{4EA}", "\x{4E8}"));
+ok($objBsCyrl->eq("\x{45C}", "\x{43A}"));
+ok($objBsCyrl->eq("\x{40C}", "\x{41A}"));
+ok($objBsCyrl->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objBsCyrl->eq("\x{4EE}", "\x{423}")); # not contraction
+ok($objBsCyrl->eq("\x{45E}", "\x{443}"));
+ok($objBsCyrl->eq("\x{40E}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F1}", "\x{443}"));
+ok($objBsCyrl->eq("\x{4F0}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F3}", "\x{443}"));
+ok($objBsCyrl->eq("\x{4F2}", "\x{423}"));
+ok($objBsCyrl->eq("\x{4F5}", "\x{447}"));
+ok($objBsCyrl->eq("\x{4F4}", "\x{427}"));
+ok($objBsCyrl->eq("\x{4F9}", "\x{44B}"));
+ok($objBsCyrl->eq("\x{4F8}", "\x{42B}"));
+ok($objBsCyrl->eq("\x{4ED}", "\x{44D}"));
+ok($objBsCyrl->eq("\x{4EC}", "\x{42D}"));
+ok($objBsCyrl->eq("\x{477}", "\x{475}"));
+ok($objBsCyrl->eq("\x{476}", "\x{474}"));
+
+# 54
+
+$objBsCyrl->change(level => 2);
+
+ok($objBsCyrl->gt("\x{4D1}", "\x{430}"));
+ok($objBsCyrl->gt("\x{4D0}", "\x{410}"));
+ok($objBsCyrl->gt("\x{4D3}", "\x{430}"));
+ok($objBsCyrl->gt("\x{4D2}", "\x{410}"));
+ok($objBsCyrl->gt("\x{4DB}", "\x{4D9}"));
+ok($objBsCyrl->gt("\x{4DA}", "\x{4D8}"));
+ok($objBsCyrl->gt("\x{453}", "\x{433}"));
+ok($objBsCyrl->gt("\x{403}", "\x{413}"));
+ok($objBsCyrl->gt("\x{450}", "\x{435}")); # not contraction
+ok($objBsCyrl->gt("\x{400}", "\x{415}")); # not contraction
+ok($objBsCyrl->gt("\x{451}", "\x{435}")); # not contraction
+ok($objBsCyrl->gt("\x{401}", "\x{415}")); # not contraction
+ok($objBsCyrl->gt("\x{4D7}", "\x{435}"));
+ok($objBsCyrl->gt("\x{4D6}", "\x{415}"));
+ok($objBsCyrl->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objBsCyrl->gt("\x{4C1}", "\x{416}")); # not contraction
+ok($objBsCyrl->gt("\x{4DD}", "\x{436}"));
+ok($objBsCyrl->gt("\x{4DC}", "\x{416}"));
+ok($objBsCyrl->gt("\x{4DF}", "\x{437}"));
+ok($objBsCyrl->gt("\x{4DE}", "\x{417}"));
+ok($objBsCyrl->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objBsCyrl->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objBsCyrl->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objBsCyrl->gt("\x{4E2}", "\x{418}")); # not contraction
+ok($objBsCyrl->gt("\x{4E5}", "\x{438}"));
+ok($objBsCyrl->gt("\x{4E4}", "\x{418}"));
+ok($objBsCyrl->gt("\x{457}", "\x{456}"));
+ok($objBsCyrl->gt("\x{407}", "\x{406}"));
+ok($objBsCyrl->gt("\x{439}", "\x{438}"));
+ok($objBsCyrl->gt("\x{419}", "\x{418}"));
+ok($objBsCyrl->gt("\x{4E7}", "\x{43E}"));
+ok($objBsCyrl->gt("\x{4E6}", "\x{41E}"));
+ok($objBsCyrl->gt("\x{4EB}", "\x{4E9}"));
+ok($objBsCyrl->gt("\x{4EA}", "\x{4E8}"));
+ok($objBsCyrl->gt("\x{45C}", "\x{43A}"));
+ok($objBsCyrl->gt("\x{40C}", "\x{41A}"));
+ok($objBsCyrl->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objBsCyrl->gt("\x{4EE}", "\x{423}")); # not contraction
+ok($objBsCyrl->gt("\x{45E}", "\x{443}"));
+ok($objBsCyrl->gt("\x{40E}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F1}", "\x{443}"));
+ok($objBsCyrl->gt("\x{4F0}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F3}", "\x{443}"));
+ok($objBsCyrl->gt("\x{4F2}", "\x{423}"));
+ok($objBsCyrl->gt("\x{4F5}", "\x{447}"));
+ok($objBsCyrl->gt("\x{4F4}", "\x{427}"));
+ok($objBsCyrl->gt("\x{4F9}", "\x{44B}"));
+ok($objBsCyrl->gt("\x{4F8}", "\x{42B}"));
+ok($objBsCyrl->gt("\x{4ED}", "\x{44D}"));
+ok($objBsCyrl->gt("\x{4EC}", "\x{42D}"));
+ok($objBsCyrl->gt("\x{477}", "\x{475}"));
+ok($objBsCyrl->gt("\x{476}", "\x{474}"));
+
+# 106
+
+$objBsCyrl->change(level => 3);
+
+for my $i ("", "\0") {
+  ok($objBsCyrl->eq("\x{4D1}", "\x{430}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4D0}", "\x{410}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4D3}", "\x{430}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4D2}", "\x{410}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{453}", "\x{433}$i\x{301}"));
+  ok($objBsCyrl->eq("\x{403}", "\x{413}$i\x{301}"));
+  ok($objBsCyrl->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+  ok($objBsCyrl->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+  ok($objBsCyrl->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+  ok($objBsCyrl->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+  ok($objBsCyrl->eq("\x{4D7}", "\x{435}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4D6}", "\x{415}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+  ok($objBsCyrl->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+  ok($objBsCyrl->eq("\x{4DD}", "\x{436}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4DC}", "\x{416}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4DF}", "\x{437}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4DE}", "\x{417}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+  ok($objBsCyrl->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+  ok($objBsCyrl->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+  ok($objBsCyrl->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+  ok($objBsCyrl->eq("\x{4E5}", "\x{438}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4E4}", "\x{418}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{457}", "\x{456}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{407}", "\x{406}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{439}", "\x{438}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{419}", "\x{418}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{45C}", "\x{43A}$i\x{301}"));
+  ok($objBsCyrl->eq("\x{40C}", "\x{41A}$i\x{301}"));
+  ok($objBsCyrl->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+  ok($objBsCyrl->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+  ok($objBsCyrl->eq("\x{45E}", "\x{443}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{40E}", "\x{423}$i\x{306}"));
+  ok($objBsCyrl->eq("\x{4F1}", "\x{443}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4F0}", "\x{423}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+  ok($objBsCyrl->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+  ok($objBsCyrl->eq("\x{4F5}", "\x{447}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4F4}", "\x{427}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+  ok($objBsCyrl->eq("\x{477}", "\x{475}$i\x{30F}"));
+  ok($objBsCyrl->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 210

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjk.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjk.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjk.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,506 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..3589\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 $objDefault = Unicode::Collate::Locale->
+    new(locale => 'DEFAULT', normalization => undef);
+
+ok($objDefault->getlocale, 'default');
+
+my $objZhP = Unicode::Collate::Locale->
+    new(locale => 'ZH__pinyin', normalization => undef);
+
+ok($objZhP->getlocale, 'zh__pinyin');
+
+my $objZhS = Unicode::Collate::Locale->
+    new(locale => 'ZH__stroke', normalization => undef);
+
+ok($objZhS->getlocale, 'zh__stroke');
+
+my $objZhZ = Unicode::Collate::Locale->
+    new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZhZ->getlocale, 'zh__zhuyin');
+
+for my $obj ($objDefault, $objZhP, $objZhS, $objZhZ) {
+    for my $lev (2, 3) {
+	$obj->change(level => $lev);
+	my $r = $lev == 2 ? 0 : 1;
+	ok($obj->cmp("\x{3220}", "\(\x{4E00}\)"), $r);
+	ok($obj->cmp("\x{3226}", "\(\x{4E03}\)"), $r);
+	ok($obj->cmp("\x{3222}", "\(\x{4E09}\)"), $r);
+	ok($obj->cmp("\x{3228}", "\(\x{4E5D}\)"), $r);
+	ok($obj->cmp("\x{3221}", "\(\x{4E8C}\)"), $r);
+	ok($obj->cmp("\x{3224}", "\(\x{4E94}\)"), $r);
+	ok($obj->cmp("\x{3239}", "\(\x{4EE3}\)"), $r);
+	ok($obj->cmp("\x{323D}", "\(\x{4F01}\)"), $r);
+	ok($obj->cmp("\x{3241}", "\(\x{4F11}\)"), $r);
+	ok($obj->cmp("\x{3227}", "\(\x{516B}\)"), $r);
+	ok($obj->cmp("\x{3225}", "\(\x{516D}\)"), $r);
+	ok($obj->cmp("\x{3238}", "\(\x{52B4}\)"), $r);
+	ok($obj->cmp("\x{3229}", "\(\x{5341}\)"), $r);
+	ok($obj->cmp("\x{323F}", "\(\x{5354}\)"), $r);
+	ok($obj->cmp("\x{3234}", "\(\x{540D}\)"), $r);
+	ok($obj->cmp("\x{323A}", "\(\x{547C}\)"), $r);
+	ok($obj->cmp("\x{3223}", "\(\x{56DB}\)"), $r);
+	ok($obj->cmp("\x{322F}", "\(\x{571F}\)"), $r);
+	ok($obj->cmp("\x{323B}", "\(\x{5B66}\)"), $r);
+	ok($obj->cmp("\x{3230}", "\(\x{65E5}\)"), $r);
+	ok($obj->cmp("\x{322A}", "\(\x{6708}\)"), $r);
+	ok($obj->cmp("\x{3232}", "\(\x{6709}\)"), $r);
+	ok($obj->cmp("\x{322D}", "\(\x{6728}\)"), $r);
+	ok($obj->cmp("\x{3231}", "\(\x{682A}\)"), $r);
+	ok($obj->cmp("\x{322C}", "\(\x{6C34}\)"), $r);
+	ok($obj->cmp("\x{322B}", "\(\x{706B}\)"), $r);
+	ok($obj->cmp("\x{3235}", "\(\x{7279}\)"), $r);
+	ok($obj->cmp("\x{323C}", "\(\x{76E3}\)"), $r);
+	ok($obj->cmp("\x{3233}", "\(\x{793E}\)"), $r);
+	ok($obj->cmp("\x{3237}", "\(\x{795D}\)"), $r);
+	ok($obj->cmp("\x{3240}", "\(\x{796D}\)"), $r);
+	ok($obj->cmp("\x{3242}", "\(\x{81EA}\)"), $r);
+	ok($obj->cmp("\x{3243}", "\(\x{81F3}\)"), $r);
+	ok($obj->cmp("\x{3236}", "\(\x{8CA1}\)"), $r);
+	ok($obj->cmp("\x{323E}", "\(\x{8CC7}\)"), $r);
+	ok($obj->cmp("\x{322E}", "\(\x{91D1}\)"), $r);
+	ok($obj->cmp("\x{3358}", "0\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E9}", "10\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C9}", "10\x{6708}"), $r);
+	ok($obj->cmp("\x{3362}", "10\x{70B9}"), $r);
+	ok($obj->cmp("\x{33EA}", "11\x{65E5}"), $r);
+	ok($obj->cmp("\x{32CA}", "11\x{6708}"), $r);
+	ok($obj->cmp("\x{3363}", "11\x{70B9}"), $r);
+	ok($obj->cmp("\x{33EB}", "12\x{65E5}"), $r);
+	ok($obj->cmp("\x{32CB}", "12\x{6708}"), $r);
+	ok($obj->cmp("\x{3364}", "12\x{70B9}"), $r);
+	ok($obj->cmp("\x{33EC}", "13\x{65E5}"), $r);
+	ok($obj->cmp("\x{3365}", "13\x{70B9}"), $r);
+	ok($obj->cmp("\x{33ED}", "14\x{65E5}"), $r);
+	ok($obj->cmp("\x{3366}", "14\x{70B9}"), $r);
+	ok($obj->cmp("\x{33EE}", "15\x{65E5}"), $r);
+	ok($obj->cmp("\x{3367}", "15\x{70B9}"), $r);
+	ok($obj->cmp("\x{33EF}", "16\x{65E5}"), $r);
+	ok($obj->cmp("\x{3368}", "16\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F0}", "17\x{65E5}"), $r);
+	ok($obj->cmp("\x{3369}", "17\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F1}", "18\x{65E5}"), $r);
+	ok($obj->cmp("\x{336A}", "18\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F2}", "19\x{65E5}"), $r);
+	ok($obj->cmp("\x{336B}", "19\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E0}", "1\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C0}", "1\x{6708}"), $r);
+	ok($obj->cmp("\x{3359}", "1\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F3}", "20\x{65E5}"), $r);
+	ok($obj->cmp("\x{336C}", "20\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F4}", "21\x{65E5}"), $r);
+	ok($obj->cmp("\x{336D}", "21\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F5}", "22\x{65E5}"), $r);
+	ok($obj->cmp("\x{336E}", "22\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F6}", "23\x{65E5}"), $r);
+	ok($obj->cmp("\x{336F}", "23\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F7}", "24\x{65E5}"), $r);
+	ok($obj->cmp("\x{3370}", "24\x{70B9}"), $r);
+	ok($obj->cmp("\x{33F8}", "25\x{65E5}"), $r);
+	ok($obj->cmp("\x{33F9}", "26\x{65E5}"), $r);
+	ok($obj->cmp("\x{33FA}", "27\x{65E5}"), $r);
+	ok($obj->cmp("\x{33FB}", "28\x{65E5}"), $r);
+	ok($obj->cmp("\x{33FC}", "29\x{65E5}"), $r);
+	ok($obj->cmp("\x{33E1}", "2\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C1}", "2\x{6708}"), $r);
+	ok($obj->cmp("\x{335A}", "2\x{70B9}"), $r);
+	ok($obj->cmp("\x{33FD}", "30\x{65E5}"), $r);
+	ok($obj->cmp("\x{33FE}", "31\x{65E5}"), $r);
+	ok($obj->cmp("\x{33E2}", "3\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C2}", "3\x{6708}"), $r);
+	ok($obj->cmp("\x{335B}", "3\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E3}", "4\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C3}", "4\x{6708}"), $r);
+	ok($obj->cmp("\x{335C}", "4\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E4}", "5\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C4}", "5\x{6708}"), $r);
+	ok($obj->cmp("\x{335D}", "5\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E5}", "6\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C5}", "6\x{6708}"), $r);
+	ok($obj->cmp("\x{335E}", "6\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E6}", "7\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C6}", "7\x{6708}"), $r);
+	ok($obj->cmp("\x{335F}", "7\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E7}", "8\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C7}", "8\x{6708}"), $r);
+	ok($obj->cmp("\x{3360}", "8\x{70B9}"), $r);
+	ok($obj->cmp("\x{33E8}", "9\x{65E5}"), $r);
+	ok($obj->cmp("\x{32C8}", "9\x{6708}"), $r);
+	ok($obj->cmp("\x{3361}", "9\x{70B9}"), $r);
+	ok($obj->cmp("\x{1F241}", "\x{3014}\x{4E09}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F242}", "\x{3014}\x{4E8C}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F247}", "\x{3014}\x{52DD}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F243}", "\x{3014}\x{5B89}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F245}", "\x{3014}\x{6253}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F248}", "\x{3014}\x{6557}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F240}", "\x{3014}\x{672C}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F244}", "\x{3014}\x{70B9}\x{3015}"), $r);
+	ok($obj->cmp("\x{1F246}", "\x{3014}\x{76D7}\x{3015}"), $r);
+	ok($obj->cmp("\x{2F00}", "\x{4E00}"), $r);
+	ok($obj->cmp("\x{3192}", "\x{4E00}"), $r);
+	ok($obj->cmp("\x{3280}", "\x{4E00}"), $r);
+	ok($obj->cmp("\x{1F229}", "\x{4E00}"), $r);
+	ok($obj->cmp("\x{319C}", "\x{4E01}"), $r);
+	ok($obj->cmp("\x{3286}", "\x{4E03}"), $r);
+	ok($obj->cmp("\x{3194}", "\x{4E09}"), $r);
+	ok($obj->cmp("\x{3282}", "\x{4E09}"), $r);
+	ok($obj->cmp("\x{1F22A}", "\x{4E09}"), $r);
+	ok($obj->cmp("\x{3196}", "\x{4E0A}"), $r);
+	ok($obj->cmp("\x{32A4}", "\x{4E0A}"), $r);
+	ok($obj->cmp("\x{3198}", "\x{4E0B}"), $r);
+	ok($obj->cmp("\x{32A6}", "\x{4E0B}"), $r);
+	ok($obj->cmp("\x{319B}", "\x{4E19}"), $r);
+	ok($obj->cmp("\x{2F01}", "\x{4E28}"), $r);
+	ok($obj->cmp("\x{3197}", "\x{4E2D}"), $r);
+	ok($obj->cmp("\x{32A5}", "\x{4E2D}"), $r);
+	ok($obj->cmp("\x{1F22D}", "\x{4E2D}"), $r);
+	ok($obj->cmp("\x{2F02}", "\x{4E36}"), $r);
+	ok($obj->cmp("\x{2F03}", "\x{4E3F}"), $r);
+	ok($obj->cmp("\x{2F04}", "\x{4E59}"), $r);
+	ok($obj->cmp("\x{319A}", "\x{4E59}"), $r);
+	ok($obj->cmp("\x{3288}", "\x{4E5D}"), $r);
+	ok($obj->cmp("\x{2F05}", "\x{4E85}"), $r);
+	ok($obj->cmp("\x{2F06}", "\x{4E8C}"), $r);
+	ok($obj->cmp("\x{3193}", "\x{4E8C}"), $r);
+	ok($obj->cmp("\x{3281}", "\x{4E8C}"), $r);
+	ok($obj->cmp("\x{1F214}", "\x{4E8C}"), $r);
+	ok($obj->cmp("\x{3284}", "\x{4E94}"), $r);
+	ok($obj->cmp("\x{2F07}", "\x{4EA0}"), $r);
+	ok($obj->cmp("\x{1F218}", "\x{4EA4}"), $r);
+	ok($obj->cmp("\x{2F08}", "\x{4EBA}"), $r);
+	ok($obj->cmp("\x{319F}", "\x{4EBA}"), $r);
+	ok($obj->cmp("\x{32AD}", "\x{4F01}"), $r);
+	ok($obj->cmp("\x{32A1}", "\x{4F11}"), $r);
+	ok($obj->cmp("\x{329D}", "\x{512A}"), $r);
+	ok($obj->cmp("\x{2F09}", "\x{513F}"), $r);
+	ok($obj->cmp("\x{2F0A}", "\x{5165}"), $r);
+	ok($obj->cmp("\x{2F0B}", "\x{516B}"), $r);
+	ok($obj->cmp("\x{3287}", "\x{516B}"), $r);
+	ok($obj->cmp("\x{3285}", "\x{516D}"), $r);
+	ok($obj->cmp("\x{2F0C}", "\x{5182}"), $r);
+	ok($obj->cmp("\x{1F21E}", "\x{518D}"), $r);
+	ok($obj->cmp("\x{2F0D}", "\x{5196}"), $r);
+	ok($obj->cmp("\x{32A2}", "\x{5199}"), $r);
+	ok($obj->cmp("\x{2F0E}", "\x{51AB}"), $r);
+	ok($obj->cmp("\x{2F0F}", "\x{51E0}"), $r);
+	ok($obj->cmp("\x{2F10}", "\x{51F5}"), $r);
+	ok($obj->cmp("\x{2F11}", "\x{5200}"), $r);
+	ok($obj->cmp("\x{1F220}", "\x{521D}"), $r);
+	ok($obj->cmp("\x{1F21C}", "\x{524D}"), $r);
+	ok($obj->cmp("\x{1F239}", "\x{5272}"), $r);
+	ok($obj->cmp("\x{2F12}", "\x{529B}"), $r);
+	ok($obj->cmp("\x{3298}", "\x{52B4}"), $r);
+	ok($obj->cmp("\x{2F13}", "\x{52F9}"), $r);
+	ok($obj->cmp("\x{2F14}", "\x{5315}"), $r);
+	ok($obj->cmp("\x{2F15}", "\x{531A}"), $r);
+	ok($obj->cmp("\x{2F16}", "\x{5338}"), $r);
+	ok($obj->cmp("\x{32A9}", "\x{533B}"), $r);
+	ok($obj->cmp("\x{2F17}", "\x{5341}"), $r);
+	ok($obj->cmp("\x{3038}", "\x{5341}"), $r);
+	ok($obj->cmp("\x{3289}", "\x{5341}"), $r);
+	ok($obj->cmp("\x{3039}", "\x{5344}"), $r);
+	ok($obj->cmp("\x{303A}", "\x{5345}"), $r);
+	ok($obj->cmp("\x{32AF}", "\x{5354}"), $r);
+	ok($obj->cmp("\x{2F18}", "\x{535C}"), $r);
+	ok($obj->cmp("\x{2F19}", "\x{5369}"), $r);
+	ok($obj->cmp("\x{329E}", "\x{5370}"), $r);
+	ok($obj->cmp("\x{2F1A}", "\x{5382}"), $r);
+	ok($obj->cmp("\x{2F1B}", "\x{53B6}"), $r);
+	ok($obj->cmp("\x{2F1C}", "\x{53C8}"), $r);
+	ok($obj->cmp("\x{1F212}", "\x{53CC}"), $r);
+	ok($obj->cmp("\x{2F1D}", "\x{53E3}"), $r);
+	ok($obj->cmp("\x{1F251}", "\x{53EF}"), $r);
+	ok($obj->cmp("\x{32A8}", "\x{53F3}"), $r);
+	ok($obj->cmp("\x{1F22E}", "\x{53F3}"), $r);
+	ok($obj->cmp("\x{1F234}", "\x{5408}"), $r);
+	ok($obj->cmp("\x{3294}", "\x{540D}"), $r);
+	ok($obj->cmp("\x{1F225}", "\x{5439}"), $r);
+	ok($obj->cmp("\x{3244}", "\x{554F}"), $r);
+	ok($obj->cmp("\x{1F23A}", "\x{55B6}"), $r);
+	ok($obj->cmp("\x{2F1E}", "\x{56D7}"), $r);
+	ok($obj->cmp("\x{3195}", "\x{56DB}"), $r);
+	ok($obj->cmp("\x{3283}", "\x{56DB}"), $r);
+	ok($obj->cmp("\x{2F1F}", "\x{571F}"), $r);
+	ok($obj->cmp("\x{328F}", "\x{571F}"), $r);
+	ok($obj->cmp("\x{319E}", "\x{5730}"), $r);
+	ok($obj->cmp("\x{2F20}", "\x{58EB}"), $r);
+	ok($obj->cmp("\x{1F224}", "\x{58F0}"), $r);
+	ok($obj->cmp("\x{2F21}", "\x{5902}"), $r);
+	ok($obj->cmp("\x{2F22}", "\x{590A}"), $r);
+	ok($obj->cmp("\x{2F23}", "\x{5915}"), $r);
+	ok($obj->cmp("\x{1F215}", "\x{591A}"), $r);
+	ok($obj->cmp("\x{32B0}", "\x{591C}"), $r);
+	ok($obj->cmp("\x{2F24}", "\x{5927}"), $r);
+	ok($obj->cmp("\x{337D}", "\x{5927}\x{6B63}"), $r);
+	ok($obj->cmp("\x{319D}", "\x{5929}"), $r);
+	ok($obj->cmp("\x{1F217}", "\x{5929}"), $r);
+	ok($obj->cmp("\x{2F25}", "\x{5973}"), $r);
+	ok($obj->cmp("\x{329B}", "\x{5973}"), $r);
+	ok($obj->cmp("\x{2F26}", "\x{5B50}"), $r);
+	ok($obj->cmp("\x{1F211}", "\x{5B57}"), $r);
+	ok($obj->cmp("\x{32AB}", "\x{5B66}"), $r);
+	ok($obj->cmp("\x{2F27}", "\x{5B80}"), $r);
+	ok($obj->cmp("\x{32AA}", "\x{5B97}"), $r);
+	ok($obj->cmp("\x{2F28}", "\x{5BF8}"), $r);
+	ok($obj->cmp("\x{2F29}", "\x{5C0F}"), $r);
+	ok($obj->cmp("\x{2F2A}", "\x{5C22}"), $r);
+	ok($obj->cmp("\x{2F2B}", "\x{5C38}"), $r);
+	ok($obj->cmp("\x{2F2C}", "\x{5C6E}"), $r);
+	ok($obj->cmp("\x{2F2D}", "\x{5C71}"), $r);
+	ok($obj->cmp("\x{2F2E}", "\x{5DDB}"), $r);
+	ok($obj->cmp("\x{2F2F}", "\x{5DE5}"), $r);
+	ok($obj->cmp("\x{32A7}", "\x{5DE6}"), $r);
+	ok($obj->cmp("\x{1F22C}", "\x{5DE6}"), $r);
+	ok($obj->cmp("\x{2F30}", "\x{5DF1}"), $r);
+	ok($obj->cmp("\x{2F31}", "\x{5DFE}"), $r);
+	ok($obj->cmp("\x{2F32}", "\x{5E72}"), $r);
+	ok($obj->cmp("\x{337B}", "\x{5E73}\x{6210}"), $r);
+	ok($obj->cmp("\x{2F33}", "\x{5E7A}"), $r);
+	ok($obj->cmp("\x{3245}", "\x{5E7C}"), $r);
+	ok($obj->cmp("\x{2F34}", "\x{5E7F}"), $r);
+	ok($obj->cmp("\x{2F35}", "\x{5EF4}"), $r);
+	ok($obj->cmp("\x{2F36}", "\x{5EFE}"), $r);
+	ok($obj->cmp("\x{2F37}", "\x{5F0B}"), $r);
+	ok($obj->cmp("\x{2F38}", "\x{5F13}"), $r);
+	ok($obj->cmp("\x{2F39}", "\x{5F50}"), $r);
+	ok($obj->cmp("\x{2F3A}", "\x{5F61}"), $r);
+	ok($obj->cmp("\x{2F3B}", "\x{5F73}"), $r);
+	ok($obj->cmp("\x{1F21D}", "\x{5F8C}"), $r);
+	ok($obj->cmp("\x{1F250}", "\x{5F97}"), $r);
+	ok($obj->cmp("\x{2F3C}", "\x{5FC3}"), $r);
+	ok($obj->cmp("\x{2F3D}", "\x{6208}"), $r);
+	ok($obj->cmp("\x{2F3E}", "\x{6236}"), $r);
+	ok($obj->cmp("\x{2F3F}", "\x{624B}"), $r);
+	ok($obj->cmp("\x{1F210}", "\x{624B}"), $r);
+	ok($obj->cmp("\x{1F231}", "\x{6253}"), $r);
+	ok($obj->cmp("\x{1F227}", "\x{6295}"), $r);
+	ok($obj->cmp("\x{1F22F}", "\x{6307}"), $r);
+	ok($obj->cmp("\x{1F228}", "\x{6355}"), $r);
+	ok($obj->cmp("\x{2F40}", "\x{652F}"), $r);
+	ok($obj->cmp("\x{2F41}", "\x{6534}"), $r);
+	ok($obj->cmp("\x{2F42}", "\x{6587}"), $r);
+	ok($obj->cmp("\x{3246}", "\x{6587}"), $r);
+	ok($obj->cmp("\x{2F43}", "\x{6597}"), $r);
+	ok($obj->cmp("\x{1F21B}", "\x{6599}"), $r);
+	ok($obj->cmp("\x{2F44}", "\x{65A4}"), $r);
+	ok($obj->cmp("\x{1F21F}", "\x{65B0}"), $r);
+	ok($obj->cmp("\x{2F45}", "\x{65B9}"), $r);
+	ok($obj->cmp("\x{2F46}", "\x{65E0}"), $r);
+	ok($obj->cmp("\x{2F47}", "\x{65E5}"), $r);
+	ok($obj->cmp("\x{3290}", "\x{65E5}"), $r);
+	ok($obj->cmp("\x{337E}", "\x{660E}\x{6CBB}"), $r);
+	ok($obj->cmp("\x{1F219}", "\x{6620}"), $r);
+	ok($obj->cmp("\x{337C}", "\x{662D}\x{548C}"), $r);
+	ok($obj->cmp("\x{2F48}", "\x{66F0}"), $r);
+	ok($obj->cmp("\x{2F49}", "\x{6708}"), $r);
+	ok($obj->cmp("\x{328A}", "\x{6708}"), $r);
+	ok($obj->cmp("\x{1F237}", "\x{6708}"), $r);
+	ok($obj->cmp("\x{3292}", "\x{6709}"), $r);
+	ok($obj->cmp("\x{1F236}", "\x{6709}"), $r);
+	ok($obj->cmp("\x{2F4A}", "\x{6728}"), $r);
+	ok($obj->cmp("\x{328D}", "\x{6728}"), $r);
+	ok($obj->cmp("\x{3291}", "\x{682A}"), $r);
+	ok($obj->cmp("\x{337F}", "\x{682A}\x{5F0F}\x{4F1A}\x{793E}"), $r);
+	ok($obj->cmp("\x{2F4B}", "\x{6B20}"), $r);
+	ok($obj->cmp("\x{2F4C}", "\x{6B62}"), $r);
+	ok($obj->cmp("\x{32A3}", "\x{6B63}"), $r);
+	ok($obj->cmp("\x{2F4D}", "\x{6B79}"), $r);
+	ok($obj->cmp("\x{2F4E}", "\x{6BB3}"), $r);
+	ok($obj->cmp("\x{2F4F}", "\x{6BCB}"), $r);
+	ok($obj->cmp("\x{2E9F}", "\x{6BCD}"), $r);
+	ok($obj->cmp("\x{2F50}", "\x{6BD4}"), $r);
+	ok($obj->cmp("\x{2F51}", "\x{6BDB}"), $r);
+	ok($obj->cmp("\x{2F52}", "\x{6C0F}"), $r);
+	ok($obj->cmp("\x{2F53}", "\x{6C14}"), $r);
+	ok($obj->cmp("\x{2F54}", "\x{6C34}"), $r);
+	ok($obj->cmp("\x{328C}", "\x{6C34}"), $r);
+	ok($obj->cmp("\x{329F}", "\x{6CE8}"), $r);
+	ok($obj->cmp("\x{1F235}", "\x{6E80}"), $r);
+	ok($obj->cmp("\x{1F226}", "\x{6F14}"), $r);
+	ok($obj->cmp("\x{2F55}", "\x{706B}"), $r);
+	ok($obj->cmp("\x{328B}", "\x{706B}"), $r);
+	ok($obj->cmp("\x{1F21A}", "\x{7121}"), $r);
+	ok($obj->cmp("\x{2F56}", "\x{722A}"), $r);
+	ok($obj->cmp("\x{2F57}", "\x{7236}"), $r);
+	ok($obj->cmp("\x{2F58}", "\x{723B}"), $r);
+	ok($obj->cmp("\x{2F59}", "\x{723F}"), $r);
+	ok($obj->cmp("\x{2F5A}", "\x{7247}"), $r);
+	ok($obj->cmp("\x{2F5B}", "\x{7259}"), $r);
+	ok($obj->cmp("\x{2F5C}", "\x{725B}"), $r);
+	ok($obj->cmp("\x{3295}", "\x{7279}"), $r);
+	ok($obj->cmp("\x{2F5D}", "\x{72AC}"), $r);
+	ok($obj->cmp("\x{2F5E}", "\x{7384}"), $r);
+	ok($obj->cmp("\x{2F5F}", "\x{7389}"), $r);
+	ok($obj->cmp("\x{2F60}", "\x{74DC}"), $r);
+	ok($obj->cmp("\x{2F61}", "\x{74E6}"), $r);
+	ok($obj->cmp("\x{2F62}", "\x{7518}"), $r);
+	ok($obj->cmp("\x{2F63}", "\x{751F}"), $r);
+	ok($obj->cmp("\x{1F222}", "\x{751F}"), $r);
+	ok($obj->cmp("\x{2F64}", "\x{7528}"), $r);
+	ok($obj->cmp("\x{2F65}", "\x{7530}"), $r);
+	ok($obj->cmp("\x{3199}", "\x{7532}"), $r);
+	ok($obj->cmp("\x{1F238}", "\x{7533}"), $r);
+	ok($obj->cmp("\x{329A}", "\x{7537}"), $r);
+	ok($obj->cmp("\x{2F66}", "\x{758B}"), $r);
+	ok($obj->cmp("\x{2F67}", "\x{7592}"), $r);
+	ok($obj->cmp("\x{2F68}", "\x{7676}"), $r);
+	ok($obj->cmp("\x{2F69}", "\x{767D}"), $r);
+	ok($obj->cmp("\x{2F6A}", "\x{76AE}"), $r);
+	ok($obj->cmp("\x{2F6B}", "\x{76BF}"), $r);
+	ok($obj->cmp("\x{32AC}", "\x{76E3}"), $r);
+	ok($obj->cmp("\x{2F6C}", "\x{76EE}"), $r);
+	ok($obj->cmp("\x{2F6D}", "\x{77DB}"), $r);
+	ok($obj->cmp("\x{2F6E}", "\x{77E2}"), $r);
+	ok($obj->cmp("\x{2F6F}", "\x{77F3}"), $r);
+	ok($obj->cmp("\x{2F70}", "\x{793A}"), $r);
+	ok($obj->cmp("\x{3293}", "\x{793E}"), $r);
+	ok($obj->cmp("\x{3297}", "\x{795D}"), $r);
+	ok($obj->cmp("\x{1F232}", "\x{7981}"), $r);
+	ok($obj->cmp("\x{2F71}", "\x{79B8}"), $r);
+	ok($obj->cmp("\x{2F72}", "\x{79BE}"), $r);
+	ok($obj->cmp("\x{3299}", "\x{79D8}"), $r);
+	ok($obj->cmp("\x{2F73}", "\x{7A74}"), $r);
+	ok($obj->cmp("\x{1F233}", "\x{7A7A}"), $r);
+	ok($obj->cmp("\x{2F74}", "\x{7ACB}"), $r);
+	ok($obj->cmp("\x{2F75}", "\x{7AF9}"), $r);
+	ok($obj->cmp("\x{3247}", "\x{7B8F}"), $r);
+	ok($obj->cmp("\x{2F76}", "\x{7C73}"), $r);
+	ok($obj->cmp("\x{2F77}", "\x{7CF8}"), $r);
+	ok($obj->cmp("\x{1F221}", "\x{7D42}"), $r);
+	ok($obj->cmp("\x{2F78}", "\x{7F36}"), $r);
+	ok($obj->cmp("\x{2F79}", "\x{7F51}"), $r);
+	ok($obj->cmp("\x{2F7A}", "\x{7F8A}"), $r);
+	ok($obj->cmp("\x{2F7B}", "\x{7FBD}"), $r);
+	ok($obj->cmp("\x{2F7C}", "\x{8001}"), $r);
+	ok($obj->cmp("\x{2F7D}", "\x{800C}"), $r);
+	ok($obj->cmp("\x{2F7E}", "\x{8012}"), $r);
+	ok($obj->cmp("\x{2F7F}", "\x{8033}"), $r);
+	ok($obj->cmp("\x{2F80}", "\x{807F}"), $r);
+	ok($obj->cmp("\x{2F81}", "\x{8089}"), $r);
+	ok($obj->cmp("\x{2F82}", "\x{81E3}"), $r);
+	ok($obj->cmp("\x{2F83}", "\x{81EA}"), $r);
+	ok($obj->cmp("\x{2F84}", "\x{81F3}"), $r);
+	ok($obj->cmp("\x{2F85}", "\x{81FC}"), $r);
+	ok($obj->cmp("\x{2F86}", "\x{820C}"), $r);
+	ok($obj->cmp("\x{2F87}", "\x{821B}"), $r);
+	ok($obj->cmp("\x{2F88}", "\x{821F}"), $r);
+	ok($obj->cmp("\x{2F89}", "\x{826E}"), $r);
+	ok($obj->cmp("\x{2F8A}", "\x{8272}"), $r);
+	ok($obj->cmp("\x{2F8B}", "\x{8278}"), $r);
+	ok($obj->cmp("\x{2F8C}", "\x{864D}"), $r);
+	ok($obj->cmp("\x{2F8D}", "\x{866B}"), $r);
+	ok($obj->cmp("\x{2F8E}", "\x{8840}"), $r);
+	ok($obj->cmp("\x{2F8F}", "\x{884C}"), $r);
+	ok($obj->cmp("\x{2F90}", "\x{8863}"), $r);
+	ok($obj->cmp("\x{2F91}", "\x{897E}"), $r);
+	ok($obj->cmp("\x{2F92}", "\x{898B}"), $r);
+	ok($obj->cmp("\x{2F93}", "\x{89D2}"), $r);
+	ok($obj->cmp("\x{1F216}", "\x{89E3}"), $r);
+	ok($obj->cmp("\x{2F94}", "\x{8A00}"), $r);
+	ok($obj->cmp("\x{2F95}", "\x{8C37}"), $r);
+	ok($obj->cmp("\x{2F96}", "\x{8C46}"), $r);
+	ok($obj->cmp("\x{2F97}", "\x{8C55}"), $r);
+	ok($obj->cmp("\x{2F98}", "\x{8C78}"), $r);
+	ok($obj->cmp("\x{2F99}", "\x{8C9D}"), $r);
+	ok($obj->cmp("\x{3296}", "\x{8CA1}"), $r);
+	ok($obj->cmp("\x{1F223}", "\x{8CA9}"), $r);
+	ok($obj->cmp("\x{32AE}", "\x{8CC7}"), $r);
+	ok($obj->cmp("\x{2F9A}", "\x{8D64}"), $r);
+	ok($obj->cmp("\x{2F9B}", "\x{8D70}"), $r);
+	ok($obj->cmp("\x{1F230}", "\x{8D70}"), $r);
+	ok($obj->cmp("\x{2F9C}", "\x{8DB3}"), $r);
+	ok($obj->cmp("\x{2F9D}", "\x{8EAB}"), $r);
+	ok($obj->cmp("\x{2F9E}", "\x{8ECA}"), $r);
+	ok($obj->cmp("\x{2F9F}", "\x{8F9B}"), $r);
+	ok($obj->cmp("\x{2FA0}", "\x{8FB0}"), $r);
+	ok($obj->cmp("\x{2FA1}", "\x{8FB5}"), $r);
+	ok($obj->cmp("\x{1F22B}", "\x{904A}"), $r);
+	ok($obj->cmp("\x{329C}", "\x{9069}"), $r);
+	ok($obj->cmp("\x{2FA2}", "\x{9091}"), $r);
+	ok($obj->cmp("\x{2FA3}", "\x{9149}"), $r);
+	ok($obj->cmp("\x{2FA4}", "\x{91C6}"), $r);
+	ok($obj->cmp("\x{2FA5}", "\x{91CC}"), $r);
+	ok($obj->cmp("\x{2FA6}", "\x{91D1}"), $r);
+	ok($obj->cmp("\x{328E}", "\x{91D1}"), $r);
+	ok($obj->cmp("\x{2FA7}", "\x{9577}"), $r);
+	ok($obj->cmp("\x{2FA8}", "\x{9580}"), $r);
+	ok($obj->cmp("\x{2FA9}", "\x{961C}"), $r);
+	ok($obj->cmp("\x{2FAA}", "\x{96B6}"), $r);
+	ok($obj->cmp("\x{2FAB}", "\x{96B9}"), $r);
+	ok($obj->cmp("\x{2FAC}", "\x{96E8}"), $r);
+	ok($obj->cmp("\x{2FAD}", "\x{9751}"), $r);
+	ok($obj->cmp("\x{2FAE}", "\x{975E}"), $r);
+	ok($obj->cmp("\x{2FAF}", "\x{9762}"), $r);
+	ok($obj->cmp("\x{2FB0}", "\x{9769}"), $r);
+	ok($obj->cmp("\x{2FB1}", "\x{97CB}"), $r);
+	ok($obj->cmp("\x{2FB2}", "\x{97ED}"), $r);
+	ok($obj->cmp("\x{2FB3}", "\x{97F3}"), $r);
+	ok($obj->cmp("\x{2FB4}", "\x{9801}"), $r);
+	ok($obj->cmp("\x{32A0}", "\x{9805}"), $r);
+	ok($obj->cmp("\x{2FB5}", "\x{98A8}"), $r);
+	ok($obj->cmp("\x{2FB6}", "\x{98DB}"), $r);
+	ok($obj->cmp("\x{2FB7}", "\x{98DF}"), $r);
+	ok($obj->cmp("\x{2FB8}", "\x{9996}"), $r);
+	ok($obj->cmp("\x{2FB9}", "\x{9999}"), $r);
+	ok($obj->cmp("\x{2FBA}", "\x{99AC}"), $r);
+	ok($obj->cmp("\x{2FBB}", "\x{9AA8}"), $r);
+	ok($obj->cmp("\x{2FBC}", "\x{9AD8}"), $r);
+	ok($obj->cmp("\x{2FBD}", "\x{9ADF}"), $r);
+	ok($obj->cmp("\x{2FBE}", "\x{9B25}"), $r);
+	ok($obj->cmp("\x{2FBF}", "\x{9B2F}"), $r);
+	ok($obj->cmp("\x{2FC0}", "\x{9B32}"), $r);
+	ok($obj->cmp("\x{2FC1}", "\x{9B3C}"), $r);
+	ok($obj->cmp("\x{2FC2}", "\x{9B5A}"), $r);
+	ok($obj->cmp("\x{2FC3}", "\x{9CE5}"), $r);
+	ok($obj->cmp("\x{2FC4}", "\x{9E75}"), $r);
+	ok($obj->cmp("\x{2FC5}", "\x{9E7F}"), $r);
+	ok($obj->cmp("\x{2FC6}", "\x{9EA5}"), $r);
+	ok($obj->cmp("\x{2FC7}", "\x{9EBB}"), $r);
+	ok($obj->cmp("\x{2FC8}", "\x{9EC3}"), $r);
+	ok($obj->cmp("\x{2FC9}", "\x{9ECD}"), $r);
+	ok($obj->cmp("\x{2FCA}", "\x{9ED1}"), $r);
+	ok($obj->cmp("\x{2FCB}", "\x{9EF9}"), $r);
+	ok($obj->cmp("\x{2FCC}", "\x{9EFD}"), $r);
+	ok($obj->cmp("\x{2FCD}", "\x{9F0E}"), $r);
+	ok($obj->cmp("\x{2FCE}", "\x{9F13}"), $r);
+	ok($obj->cmp("\x{2FCF}", "\x{9F20}"), $r);
+	ok($obj->cmp("\x{2FD0}", "\x{9F3B}"), $r);
+	ok($obj->cmp("\x{2FD1}", "\x{9F4A}"), $r);
+	ok($obj->cmp("\x{2FD2}", "\x{9F52}"), $r);
+	ok($obj->cmp("\x{2FD3}", "\x{9F8D}"), $r);
+	ok($obj->cmp("\x{2FD4}", "\x{9F9C}"), $r);
+	ok($obj->cmp("\x{2EF3}", "\x{9F9F}"), $r);
+	ok($obj->cmp("\x{2FD5}", "\x{9FA0}"), $r);
+    }
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjkc.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjkc.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_cjkc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1077 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..8025\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 $objDefault = Unicode::Collate::Locale->
+    new(locale => 'DEFAULT', normalization => undef);
+
+ok($objDefault->getlocale, 'default');
+
+my $objB = Unicode::Collate::Locale->
+    new(locale => 'ZH__big5han', normalization => undef);
+
+ok($objB->getlocale, 'zh__big5han');
+
+my $objG = Unicode::Collate::Locale->
+    new(locale => 'ZH__gb2312han', normalization => undef);
+
+ok($objG->getlocale, 'zh__gb2312han');
+
+my $objJ = Unicode::Collate::Locale->
+    new(locale => 'JA', normalization => undef);
+
+ok($objJ->getlocale, 'ja');
+
+my $objK = Unicode::Collate::Locale->
+    new(locale => 'KO', normalization => undef);
+
+ok($objK->getlocale, 'ko');
+
+my $objP = Unicode::Collate::Locale->
+    new(locale => 'ZH__pinyin', normalization => undef);
+
+ok($objP->getlocale, 'zh__pinyin');
+
+my $objS = Unicode::Collate::Locale->
+    new(locale => 'ZH__stroke', normalization => undef);
+
+ok($objS->getlocale, 'zh__stroke');
+
+my $objZ = Unicode::Collate::Locale->
+    new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZ->getlocale, 'zh__zhuyin');
+
+for my $obj ($objDefault, $objB, $objG, $objJ, $objK, $objP, $objS, $objZ) {
+    $obj->change(level => 3);
+    ok($obj->eq("\x{4E0D}", "\x{F967}"));
+    ok($obj->eq("\x{4E26}", "\x{FA70}"));
+    ok($obj->eq("\x{4E32}", "\x{F905}"));
+    ok($obj->eq("\x{4E38}", "\x{2F801}"));
+    ok($obj->eq("\x{4E39}", "\x{F95E}"));
+    ok($obj->eq("\x{4E3D}", "\x{2F800}"));
+    ok($obj->eq("\x{4E41}", "\x{2F802}"));
+    ok($obj->eq("\x{4E82}", "\x{F91B}"));
+    ok($obj->eq("\x{4E86}", "\x{F9BA}"));
+    ok($obj->eq("\x{4EAE}", "\x{F977}"));
+    ok($obj->eq("\x{4EC0}", "\x{F9FD}"));
+    ok($obj->eq("\x{4ECC}", "\x{2F819}"));
+    ok($obj->eq("\x{4EE4}", "\x{F9A8}"));
+    ok($obj->eq("\x{4F60}", "\x{2F804}"));
+    ok($obj->eq("\x{4F80}", "\x{FA73}"));
+    ok($obj->eq("\x{4F86}", "\x{F92D}"));
+    ok($obj->eq("\x{4F8B}", "\x{F9B5}"));
+    ok($obj->eq("\x{4FAE}", "\x{FA30}"));
+    ok($obj->eq("\x{4FAE}", "\x{2F805}"));
+    ok($obj->eq("\x{4FBB}", "\x{2F806}"));
+    ok($obj->eq("\x{4FBF}", "\x{F965}"));
+    ok($obj->eq("\x{5002}", "\x{2F807}"));
+    ok($obj->eq("\x{502B}", "\x{F9D4}"));
+    ok($obj->eq("\x{507A}", "\x{2F808}"));
+    ok($obj->eq("\x{5099}", "\x{2F809}"));
+    ok($obj->eq("\x{50CF}", "\x{2F80B}"));
+    ok($obj->eq("\x{50DA}", "\x{F9BB}"));
+    ok($obj->eq("\x{50E7}", "\x{FA31}"));
+    ok($obj->eq("\x{50E7}", "\x{2F80A}"));
+    ok($obj->eq("\x{5140}", "\x{FA0C}"));
+    ok($obj->eq("\x{5145}", "\x{FA74}"));
+    ok($obj->eq("\x{514D}", "\x{FA32}"));
+    ok($obj->eq("\x{514D}", "\x{2F80E}"));
+    ok($obj->eq("\x{5154}", "\x{2F80F}"));
+    ok($obj->eq("\x{5164}", "\x{2F810}"));
+    ok($obj->eq("\x{5167}", "\x{2F814}"));
+    ok($obj->eq("\x{5168}", "\x{FA72}"));
+    ok($obj->eq("\x{5169}", "\x{F978}"));
+    ok($obj->eq("\x{516D}", "\x{F9D1}"));
+    ok($obj->eq("\x{5177}", "\x{2F811}"));
+    ok($obj->eq("\x{5180}", "\x{FA75}"));
+    ok($obj->eq("\x{518D}", "\x{2F815}"));
+    ok($obj->eq("\x{5192}", "\x{2F8D2}"));
+    ok($obj->eq("\x{5195}", "\x{2F8D3}"));
+    ok($obj->eq("\x{5197}", "\x{2F817}"));
+    ok($obj->eq("\x{51A4}", "\x{2F818}"));
+    ok($obj->eq("\x{51AC}", "\x{2F81A}"));
+    ok($obj->eq("\x{51B5}", "\x{FA71}"));
+    ok($obj->eq("\x{51B5}", "\x{2F81B}"));
+    ok($obj->eq("\x{51B7}", "\x{F92E}"));
+    ok($obj->eq("\x{51C9}", "\x{F979}"));
+    ok($obj->eq("\x{51CC}", "\x{F955}"));
+    ok($obj->eq("\x{51DC}", "\x{F954}"));
+    ok($obj->eq("\x{51DE}", "\x{FA15}"));
+    ok($obj->eq("\x{51F5}", "\x{2F81D}"));
+    ok($obj->eq("\x{5203}", "\x{2F81E}"));
+    ok($obj->eq("\x{5207}", "\x{FA00}"));
+    ok($obj->eq("\x{5207}", "\x{2F850}"));
+    ok($obj->eq("\x{5217}", "\x{F99C}"));
+    ok($obj->eq("\x{5229}", "\x{F9DD}"));
+    ok($obj->eq("\x{523A}", "\x{F9FF}"));
+    ok($obj->eq("\x{523B}", "\x{2F820}"));
+    ok($obj->eq("\x{5246}", "\x{2F821}"));
+    ok($obj->eq("\x{5272}", "\x{2F822}"));
+    ok($obj->eq("\x{5277}", "\x{2F823}"));
+    ok($obj->eq("\x{5289}", "\x{F9C7}"));
+    ok($obj->eq("\x{529B}", "\x{F98A}"));
+    ok($obj->eq("\x{52A3}", "\x{F99D}"));
+    ok($obj->eq("\x{52B3}", "\x{2F992}"));
+    ok($obj->eq("\x{52C7}", "\x{FA76}"));
+    ok($obj->eq("\x{52C7}", "\x{2F825}"));
+    ok($obj->eq("\x{52C9}", "\x{FA33}"));
+    ok($obj->eq("\x{52C9}", "\x{2F826}"));
+    ok($obj->eq("\x{52D2}", "\x{F952}"));
+    ok($obj->eq("\x{52DE}", "\x{F92F}"));
+    ok($obj->eq("\x{52E4}", "\x{FA34}"));
+    ok($obj->eq("\x{52E4}", "\x{2F827}"));
+    ok($obj->eq("\x{52F5}", "\x{F97F}"));
+    ok($obj->eq("\x{52FA}", "\x{FA77}"));
+    ok($obj->eq("\x{52FA}", "\x{2F828}"));
+    ok($obj->eq("\x{5305}", "\x{2F829}"));
+    ok($obj->eq("\x{5306}", "\x{2F82A}"));
+    ok($obj->eq("\x{5317}", "\x{F963}"));
+    ok($obj->eq("\x{5317}", "\x{2F82B}"));
+    ok($obj->eq("\x{533F}", "\x{F9EB}"));
+    ok($obj->eq("\x{5349}", "\x{2F82C}"));
+    ok($obj->eq("\x{5351}", "\x{FA35}"));
+    ok($obj->eq("\x{5351}", "\x{2F82D}"));
+    ok($obj->eq("\x{535A}", "\x{2F82E}"));
+    ok($obj->eq("\x{5373}", "\x{2F82F}"));
+    ok($obj->eq("\x{5375}", "\x{F91C}"));
+    ok($obj->eq("\x{537D}", "\x{2F830}"));
+    ok($obj->eq("\x{537F}", "\x{2F831}"));
+    ok($obj->eq("\x{537F}", "\x{2F832}"));
+    ok($obj->eq("\x{537F}", "\x{2F833}"));
+    ok($obj->eq("\x{53C3}", "\x{F96B}"));
+    ok($obj->eq("\x{53CA}", "\x{2F836}"));
+    ok($obj->eq("\x{53DF}", "\x{2F837}"));
+    ok($obj->eq("\x{53E5}", "\x{F906}"));
+    ok($obj->eq("\x{53EB}", "\x{2F839}"));
+    ok($obj->eq("\x{53F1}", "\x{2F83A}"));
+    ok($obj->eq("\x{5406}", "\x{2F83B}"));
+    ok($obj->eq("\x{540F}", "\x{F9DE}"));
+    ok($obj->eq("\x{541D}", "\x{F9ED}"));
+    ok($obj->eq("\x{5438}", "\x{2F83D}"));
+    ok($obj->eq("\x{5442}", "\x{F980}"));
+    ok($obj->eq("\x{5448}", "\x{2F83E}"));
+    ok($obj->eq("\x{5468}", "\x{2F83F}"));
+    ok($obj->eq("\x{549E}", "\x{2F83C}"));
+    ok($obj->eq("\x{54A2}", "\x{2F840}"));
+    ok($obj->eq("\x{54BD}", "\x{F99E}"));
+    ok($obj->eq("\x{54F6}", "\x{2F841}"));
+    ok($obj->eq("\x{5510}", "\x{2F842}"));
+    ok($obj->eq("\x{5553}", "\x{2F843}"));
+    ok($obj->eq("\x{5555}", "\x{FA79}"));
+    ok($obj->eq("\x{5563}", "\x{2F844}"));
+    ok($obj->eq("\x{5584}", "\x{2F845}"));
+    ok($obj->eq("\x{5584}", "\x{2F846}"));
+    ok($obj->eq("\x{5587}", "\x{F90B}"));
+    ok($obj->eq("\x{5599}", "\x{FA7A}"));
+    ok($obj->eq("\x{5599}", "\x{2F847}"));
+    ok($obj->eq("\x{559D}", "\x{FA36}"));
+    ok($obj->eq("\x{559D}", "\x{FA78}"));
+    ok($obj->eq("\x{55AB}", "\x{2F848}"));
+    ok($obj->eq("\x{55B3}", "\x{2F849}"));
+    ok($obj->eq("\x{55C0}", "\x{FA0D}"));
+    ok($obj->eq("\x{55C2}", "\x{2F84A}"));
+    ok($obj->eq("\x{55E2}", "\x{FA7B}"));
+    ok($obj->eq("\x{5606}", "\x{FA37}"));
+    ok($obj->eq("\x{5606}", "\x{2F84C}"));
+    ok($obj->eq("\x{5651}", "\x{2F84E}"));
+    ok($obj->eq("\x{5668}", "\x{FA38}"));
+    ok($obj->eq("\x{5674}", "\x{2F84F}"));
+    ok($obj->eq("\x{56F9}", "\x{F9A9}"));
+    ok($obj->eq("\x{5716}", "\x{2F84B}"));
+    ok($obj->eq("\x{5717}", "\x{2F84D}"));
+    ok($obj->eq("\x{578B}", "\x{2F855}"));
+    ok($obj->eq("\x{57CE}", "\x{2F852}"));
+    ok($obj->eq("\x{57F4}", "\x{2F853}"));
+    ok($obj->eq("\x{580D}", "\x{2F854}"));
+    ok($obj->eq("\x{5831}", "\x{2F857}"));
+    ok($obj->eq("\x{5832}", "\x{2F856}"));
+    ok($obj->eq("\x{5840}", "\x{FA39}"));
+    ok($obj->eq("\x{585A}", "\x{FA10}"));
+    ok($obj->eq("\x{585A}", "\x{FA7C}"));
+    ok($obj->eq("\x{585E}", "\x{F96C}"));
+    ok($obj->eq("\x{58A8}", "\x{FA3A}"));
+    ok($obj->eq("\x{58AC}", "\x{2F858}"));
+    ok($obj->eq("\x{58B3}", "\x{FA7D}"));
+    ok($obj->eq("\x{58D8}", "\x{F94A}"));
+    ok($obj->eq("\x{58DF}", "\x{F942}"));
+    ok($obj->eq("\x{58EE}", "\x{2F851}"));
+    ok($obj->eq("\x{58F2}", "\x{2F85A}"));
+    ok($obj->eq("\x{58F7}", "\x{2F85B}"));
+    ok($obj->eq("\x{5906}", "\x{2F85C}"));
+    ok($obj->eq("\x{591A}", "\x{2F85D}"));
+    ok($obj->eq("\x{5922}", "\x{2F85E}"));
+    ok($obj->eq("\x{5944}", "\x{FA7E}"));
+    ok($obj->eq("\x{5948}", "\x{F90C}"));
+    ok($obj->eq("\x{5951}", "\x{F909}"));
+    ok($obj->eq("\x{5954}", "\x{FA7F}"));
+    ok($obj->eq("\x{5962}", "\x{2F85F}"));
+    ok($obj->eq("\x{5973}", "\x{F981}"));
+    ok($obj->eq("\x{59D8}", "\x{2F865}"));
+    ok($obj->eq("\x{59EC}", "\x{2F862}"));
+    ok($obj->eq("\x{5A1B}", "\x{2F863}"));
+    ok($obj->eq("\x{5A27}", "\x{2F864}"));
+    ok($obj->eq("\x{5A62}", "\x{FA80}"));
+    ok($obj->eq("\x{5A66}", "\x{2F866}"));
+    ok($obj->eq("\x{5AB5}", "\x{2F986}"));
+    ok($obj->eq("\x{5B08}", "\x{2F869}"));
+    ok($obj->eq("\x{5B28}", "\x{FA81}"));
+    ok($obj->eq("\x{5B3E}", "\x{2F86A}"));
+    ok($obj->eq("\x{5B3E}", "\x{2F86B}"));
+    ok($obj->eq("\x{5B85}", "\x{FA04}"));
+    ok($obj->eq("\x{5BC3}", "\x{2F86D}"));
+    ok($obj->eq("\x{5BD8}", "\x{2F86E}"));
+    ok($obj->eq("\x{5BE7}", "\x{F95F}"));
+    ok($obj->eq("\x{5BE7}", "\x{F9AA}"));
+    ok($obj->eq("\x{5BE7}", "\x{2F86F}"));
+    ok($obj->eq("\x{5BEE}", "\x{F9BC}"));
+    ok($obj->eq("\x{5BF3}", "\x{2F870}"));
+    ok($obj->eq("\x{5BFF}", "\x{2F872}"));
+    ok($obj->eq("\x{5C06}", "\x{2F873}"));
+    ok($obj->eq("\x{5C22}", "\x{2F875}"));
+    ok($obj->eq("\x{5C3F}", "\x{F9BD}"));
+    ok($obj->eq("\x{5C60}", "\x{2F877}"));
+    ok($obj->eq("\x{5C62}", "\x{F94B}"));
+    ok($obj->eq("\x{5C64}", "\x{FA3B}"));
+    ok($obj->eq("\x{5C65}", "\x{F9DF}"));
+    ok($obj->eq("\x{5C6E}", "\x{FA3C}"));
+    ok($obj->eq("\x{5C6E}", "\x{2F878}"));
+    ok($obj->eq("\x{5C8D}", "\x{2F87A}"));
+    ok($obj->eq("\x{5CC0}", "\x{2F879}"));
+    ok($obj->eq("\x{5D19}", "\x{F9D5}"));
+    ok($obj->eq("\x{5D43}", "\x{2F87C}"));
+    ok($obj->eq("\x{5D50}", "\x{F921}"));
+    ok($obj->eq("\x{5D6B}", "\x{2F87F}"));
+    ok($obj->eq("\x{5D6E}", "\x{2F87E}"));
+    ok($obj->eq("\x{5D7C}", "\x{2F880}"));
+    ok($obj->eq("\x{5DB2}", "\x{2F9F4}"));
+    ok($obj->eq("\x{5DBA}", "\x{F9AB}"));
+    ok($obj->eq("\x{5DE1}", "\x{2F881}"));
+    ok($obj->eq("\x{5DE2}", "\x{2F882}"));
+    ok($obj->eq("\x{5DFD}", "\x{2F884}"));
+    ok($obj->eq("\x{5E28}", "\x{2F885}"));
+    ok($obj->eq("\x{5E3D}", "\x{2F886}"));
+    ok($obj->eq("\x{5E69}", "\x{2F887}"));
+    ok($obj->eq("\x{5E74}", "\x{F98E}"));
+    ok($obj->eq("\x{5EA6}", "\x{FA01}"));
+    ok($obj->eq("\x{5EB0}", "\x{2F88B}"));
+    ok($obj->eq("\x{5EB3}", "\x{2F88C}"));
+    ok($obj->eq("\x{5EB6}", "\x{2F88D}"));
+    ok($obj->eq("\x{5EC9}", "\x{F9A2}"));
+    ok($obj->eq("\x{5ECA}", "\x{F928}"));
+    ok($obj->eq("\x{5ECA}", "\x{2F88E}"));
+    ok($obj->eq("\x{5ED2}", "\x{FA82}"));
+    ok($obj->eq("\x{5ED3}", "\x{FA0B}"));
+    ok($obj->eq("\x{5ED9}", "\x{FA83}"));
+    ok($obj->eq("\x{5EEC}", "\x{F982}"));
+    ok($obj->eq("\x{5EFE}", "\x{2F890}"));
+    ok($obj->eq("\x{5F04}", "\x{F943}"));
+    ok($obj->eq("\x{5F22}", "\x{2F894}"));
+    ok($obj->eq("\x{5F22}", "\x{2F895}"));
+    ok($obj->eq("\x{5F53}", "\x{2F874}"));
+    ok($obj->eq("\x{5F62}", "\x{2F899}"));
+    ok($obj->eq("\x{5F69}", "\x{FA84}"));
+    ok($obj->eq("\x{5F6B}", "\x{2F89A}"));
+    ok($obj->eq("\x{5F8B}", "\x{F9D8}"));
+    ok($obj->eq("\x{5F9A}", "\x{2F89C}"));
+    ok($obj->eq("\x{5FA9}", "\x{F966}"));
+    ok($obj->eq("\x{5FAD}", "\x{FA85}"));
+    ok($obj->eq("\x{5FCD}", "\x{2F89D}"));
+    ok($obj->eq("\x{5FD7}", "\x{2F89E}"));
+    ok($obj->eq("\x{5FF5}", "\x{F9A3}"));
+    ok($obj->eq("\x{5FF9}", "\x{2F89F}"));
+    ok($obj->eq("\x{6012}", "\x{F960}"));
+    ok($obj->eq("\x{601C}", "\x{F9AC}"));
+    ok($obj->eq("\x{6075}", "\x{FA6B}"));
+    ok($obj->eq("\x{6081}", "\x{2F8A0}"));
+    ok($obj->eq("\x{6094}", "\x{FA3D}"));
+    ok($obj->eq("\x{6094}", "\x{2F8A3}"));
+    ok($obj->eq("\x{60C7}", "\x{2F8A5}"));
+    ok($obj->eq("\x{60D8}", "\x{FA86}"));
+    ok($obj->eq("\x{60E1}", "\x{F9B9}"));
+    ok($obj->eq("\x{6108}", "\x{FA88}"));
+    ok($obj->eq("\x{6144}", "\x{F9D9}"));
+    ok($obj->eq("\x{6148}", "\x{2F8A6}"));
+    ok($obj->eq("\x{614C}", "\x{2F8A7}"));
+    ok($obj->eq("\x{614C}", "\x{2F8A9}"));
+    ok($obj->eq("\x{614E}", "\x{FA87}"));
+    ok($obj->eq("\x{614E}", "\x{2F8A8}"));
+    ok($obj->eq("\x{6160}", "\x{FA8A}"));
+    ok($obj->eq("\x{6168}", "\x{FA3E}"));
+    ok($obj->eq("\x{617A}", "\x{2F8AA}"));
+    ok($obj->eq("\x{618E}", "\x{FA3F}"));
+    ok($obj->eq("\x{618E}", "\x{FA89}"));
+    ok($obj->eq("\x{618E}", "\x{2F8AB}"));
+    ok($obj->eq("\x{6190}", "\x{F98F}"));
+    ok($obj->eq("\x{61A4}", "\x{2F8AD}"));
+    ok($obj->eq("\x{61AF}", "\x{2F8AE}"));
+    ok($obj->eq("\x{61B2}", "\x{2F8AC}"));
+    ok($obj->eq("\x{61DE}", "\x{2F8AF}"));
+    ok($obj->eq("\x{61F2}", "\x{FA40}"));
+    ok($obj->eq("\x{61F2}", "\x{FA8B}"));
+    ok($obj->eq("\x{61F2}", "\x{2F8B0}"));
+    ok($obj->eq("\x{61F6}", "\x{F90D}"));
+    ok($obj->eq("\x{61F6}", "\x{2F8B1}"));
+    ok($obj->eq("\x{6200}", "\x{F990}"));
+    ok($obj->eq("\x{6210}", "\x{2F8B2}"));
+    ok($obj->eq("\x{621B}", "\x{2F8B3}"));
+    ok($obj->eq("\x{622E}", "\x{F9D2}"));
+    ok($obj->eq("\x{6234}", "\x{FA8C}"));
+    ok($obj->eq("\x{625D}", "\x{2F8B4}"));
+    ok($obj->eq("\x{62B1}", "\x{2F8B5}"));
+    ok($obj->eq("\x{62C9}", "\x{F925}"));
+    ok($obj->eq("\x{62CF}", "\x{F95B}"));
+    ok($obj->eq("\x{62D3}", "\x{FA02}"));
+    ok($obj->eq("\x{62D4}", "\x{2F8B6}"));
+    ok($obj->eq("\x{62FC}", "\x{2F8BA}"));
+    ok($obj->eq("\x{62FE}", "\x{F973}"));
+    ok($obj->eq("\x{633D}", "\x{2F8B9}"));
+    ok($obj->eq("\x{6350}", "\x{2F8B7}"));
+    ok($obj->eq("\x{6368}", "\x{2F8BB}"));
+    ok($obj->eq("\x{637B}", "\x{F9A4}"));
+    ok($obj->eq("\x{6383}", "\x{2F8BC}"));
+    ok($obj->eq("\x{63A0}", "\x{F975}"));
+    ok($obj->eq("\x{63A9}", "\x{2F8C1}"));
+    ok($obj->eq("\x{63C4}", "\x{FA8D}"));
+    ok($obj->eq("\x{63C5}", "\x{2F8C0}"));
+    ok($obj->eq("\x{63E4}", "\x{2F8BD}"));
+    ok($obj->eq("\x{641C}", "\x{FA8E}"));
+    ok($obj->eq("\x{6422}", "\x{2F8BF}"));
+    ok($obj->eq("\x{6452}", "\x{FA8F}"));
+    ok($obj->eq("\x{6469}", "\x{2F8C3}"));
+    ok($obj->eq("\x{6477}", "\x{2F8C6}"));
+    ok($obj->eq("\x{647E}", "\x{2F8C4}"));
+    ok($obj->eq("\x{649A}", "\x{F991}"));
+    ok($obj->eq("\x{649D}", "\x{2F8C5}"));
+    ok($obj->eq("\x{64C4}", "\x{F930}"));
+    ok($obj->eq("\x{654F}", "\x{FA41}"));
+    ok($obj->eq("\x{654F}", "\x{2F8C8}"));
+    ok($obj->eq("\x{6556}", "\x{FA90}"));
+    ok($obj->eq("\x{656C}", "\x{2F8C9}"));
+    ok($obj->eq("\x{6578}", "\x{F969}"));
+    ok($obj->eq("\x{6599}", "\x{F9BE}"));
+    ok($obj->eq("\x{65C5}", "\x{F983}"));
+    ok($obj->eq("\x{65E2}", "\x{FA42}"));
+    ok($obj->eq("\x{65E3}", "\x{2F8CB}"));
+    ok($obj->eq("\x{6613}", "\x{F9E0}"));
+    ok($obj->eq("\x{6649}", "\x{2F8CD}"));
+    ok($obj->eq("\x{6674}", "\x{FA12}"));
+    ok($obj->eq("\x{6674}", "\x{FA91}"));
+    ok($obj->eq("\x{6688}", "\x{F9C5}"));
+    ok($obj->eq("\x{6691}", "\x{FA43}"));
+    ok($obj->eq("\x{6691}", "\x{2F8CF}"));
+    ok($obj->eq("\x{669C}", "\x{2F8D5}"));
+    ok($obj->eq("\x{66B4}", "\x{FA06}"));
+    ok($obj->eq("\x{66C6}", "\x{F98B}"));
+    ok($obj->eq("\x{66F4}", "\x{F901}"));
+    ok($obj->eq("\x{66F8}", "\x{2F8CC}"));
+    ok($obj->eq("\x{6700}", "\x{2F8D4}"));
+    ok($obj->eq("\x{6717}", "\x{F929}"));
+    ok($obj->eq("\x{6717}", "\x{FA92}"));
+    ok($obj->eq("\x{6717}", "\x{2F8D8}"));
+    ok($obj->eq("\x{671B}", "\x{FA93}"));
+    ok($obj->eq("\x{671B}", "\x{2F8D9}"));
+    ok($obj->eq("\x{6721}", "\x{2F8DA}"));
+    ok($obj->eq("\x{674E}", "\x{F9E1}"));
+    ok($obj->eq("\x{6753}", "\x{2F8DC}"));
+    ok($obj->eq("\x{6756}", "\x{FA94}"));
+    ok($obj->eq("\x{675E}", "\x{2F8DB}"));
+    ok($obj->eq("\x{677B}", "\x{F9C8}"));
+    ok($obj->eq("\x{6785}", "\x{2F8E0}"));
+    ok($obj->eq("\x{6797}", "\x{F9F4}"));
+    ok($obj->eq("\x{67F3}", "\x{F9C9}"));
+    ok($obj->eq("\x{67FA}", "\x{2F8DF}"));
+    ok($obj->eq("\x{6817}", "\x{F9DA}"));
+    ok($obj->eq("\x{681F}", "\x{2F8E5}"));
+    ok($obj->eq("\x{6852}", "\x{2F8E1}"));
+    ok($obj->eq("\x{6881}", "\x{F97A}"));
+    ok($obj->eq("\x{6885}", "\x{FA44}"));
+    ok($obj->eq("\x{6885}", "\x{2F8E2}"));
+    ok($obj->eq("\x{688E}", "\x{2F8E4}"));
+    ok($obj->eq("\x{68A8}", "\x{F9E2}"));
+    ok($obj->eq("\x{6914}", "\x{2F8E6}"));
+    ok($obj->eq("\x{6942}", "\x{2F8E8}"));
+    ok($obj->eq("\x{69A3}", "\x{2F8E9}"));
+    ok($obj->eq("\x{69EA}", "\x{2F8EA}"));
+    ok($obj->eq("\x{6A02}", "\x{F914}"));
+    ok($obj->eq("\x{6A02}", "\x{F95C}"));
+    ok($obj->eq("\x{6A02}", "\x{F9BF}"));
+    ok($obj->eq("\x{6A13}", "\x{F94C}"));
+    ok($obj->eq("\x{6AA8}", "\x{2F8EB}"));
+    ok($obj->eq("\x{6AD3}", "\x{F931}"));
+    ok($obj->eq("\x{6ADB}", "\x{2F8ED}"));
+    ok($obj->eq("\x{6B04}", "\x{F91D}"));
+    ok($obj->eq("\x{6B21}", "\x{2F8EF}"));
+    ok($obj->eq("\x{6B54}", "\x{2F8F1}"));
+    ok($obj->eq("\x{6B72}", "\x{2F8F3}"));
+    ok($obj->eq("\x{6B77}", "\x{F98C}"));
+    ok($obj->eq("\x{6B79}", "\x{FA95}"));
+    ok($obj->eq("\x{6B9F}", "\x{2F8F4}"));
+    ok($obj->eq("\x{6BAE}", "\x{F9A5}"));
+    ok($obj->eq("\x{6BBA}", "\x{F970}"));
+    ok($obj->eq("\x{6BBA}", "\x{FA96}"));
+    ok($obj->eq("\x{6BBA}", "\x{2F8F5}"));
+    ok($obj->eq("\x{6BBB}", "\x{2F8F6}"));
+    ok($obj->eq("\x{6C4E}", "\x{2F8FA}"));
+    ok($obj->eq("\x{6C67}", "\x{2F8FE}"));
+    ok($obj->eq("\x{6C88}", "\x{F972}"));
+    ok($obj->eq("\x{6CBF}", "\x{2F8FC}"));
+    ok($obj->eq("\x{6CCC}", "\x{F968}"));
+    ok($obj->eq("\x{6CCD}", "\x{2F8FD}"));
+    ok($obj->eq("\x{6CE5}", "\x{F9E3}"));
+    ok($obj->eq("\x{6D16}", "\x{2F8FF}"));
+    ok($obj->eq("\x{6D1B}", "\x{F915}"));
+    ok($obj->eq("\x{6D1E}", "\x{FA05}"));
+    ok($obj->eq("\x{6D34}", "\x{2F907}"));
+    ok($obj->eq("\x{6D3E}", "\x{2F900}"));
+    ok($obj->eq("\x{6D41}", "\x{F9CA}"));
+    ok($obj->eq("\x{6D41}", "\x{FA97}"));
+    ok($obj->eq("\x{6D41}", "\x{2F902}"));
+    ok($obj->eq("\x{6D69}", "\x{2F903}"));
+    ok($obj->eq("\x{6D6A}", "\x{F92A}"));
+    ok($obj->eq("\x{6D77}", "\x{FA45}"));
+    ok($obj->eq("\x{6D77}", "\x{2F901}"));
+    ok($obj->eq("\x{6D78}", "\x{2F904}"));
+    ok($obj->eq("\x{6D85}", "\x{2F905}"));
+    ok($obj->eq("\x{6DCB}", "\x{F9F5}"));
+    ok($obj->eq("\x{6DDA}", "\x{F94D}"));
+    ok($obj->eq("\x{6DEA}", "\x{F9D6}"));
+    ok($obj->eq("\x{6DF9}", "\x{2F90E}"));
+    ok($obj->eq("\x{6E1A}", "\x{FA46}"));
+    ok($obj->eq("\x{6E2F}", "\x{2F908}"));
+    ok($obj->eq("\x{6E6E}", "\x{2F909}"));
+    ok($obj->eq("\x{6E9C}", "\x{F9CB}"));
+    ok($obj->eq("\x{6EBA}", "\x{F9EC}"));
+    ok($obj->eq("\x{6EC7}", "\x{2F90C}"));
+    ok($obj->eq("\x{6ECB}", "\x{FA99}"));
+    ok($obj->eq("\x{6ECB}", "\x{2F90B}"));
+    ok($obj->eq("\x{6ED1}", "\x{F904}"));
+    ok($obj->eq("\x{6EDB}", "\x{FA98}"));
+    ok($obj->eq("\x{6F0F}", "\x{F94E}"));
+    ok($obj->eq("\x{6F22}", "\x{FA47}"));
+    ok($obj->eq("\x{6F22}", "\x{FA9A}"));
+    ok($obj->eq("\x{6F23}", "\x{F992}"));
+    ok($obj->eq("\x{6F6E}", "\x{2F90F}"));
+    ok($obj->eq("\x{6FC6}", "\x{2F912}"));
+    ok($obj->eq("\x{6FEB}", "\x{F922}"));
+    ok($obj->eq("\x{6FFE}", "\x{F984}"));
+    ok($obj->eq("\x{701B}", "\x{2F915}"));
+    ok($obj->eq("\x{701E}", "\x{FA9B}"));
+    ok($obj->eq("\x{701E}", "\x{2F914}"));
+    ok($obj->eq("\x{7039}", "\x{2F913}"));
+    ok($obj->eq("\x{704A}", "\x{2F917}"));
+    ok($obj->eq("\x{7070}", "\x{2F835}"));
+    ok($obj->eq("\x{7077}", "\x{2F919}"));
+    ok($obj->eq("\x{707D}", "\x{2F918}"));
+    ok($obj->eq("\x{7099}", "\x{F9FB}"));
+    ok($obj->eq("\x{70AD}", "\x{2F91A}"));
+    ok($obj->eq("\x{70C8}", "\x{F99F}"));
+    ok($obj->eq("\x{70D9}", "\x{F916}"));
+    ok($obj->eq("\x{7145}", "\x{2F91C}"));
+    ok($obj->eq("\x{7149}", "\x{F993}"));
+    ok($obj->eq("\x{716E}", "\x{FA48}"));
+    ok($obj->eq("\x{716E}", "\x{FA9C}"));
+    ok($obj->eq("\x{719C}", "\x{2F91E}"));
+    ok($obj->eq("\x{71CE}", "\x{F9C0}"));
+    ok($obj->eq("\x{71D0}", "\x{F9EE}"));
+    ok($obj->eq("\x{7210}", "\x{F932}"));
+    ok($obj->eq("\x{721B}", "\x{F91E}"));
+    ok($obj->eq("\x{7228}", "\x{2F920}"));
+    ok($obj->eq("\x{722B}", "\x{FA49}"));
+    ok($obj->eq("\x{7235}", "\x{FA9E}"));
+    ok($obj->eq("\x{7235}", "\x{2F921}"));
+    ok($obj->eq("\x{7250}", "\x{2F922}"));
+    ok($obj->eq("\x{7262}", "\x{F946}"));
+    ok($obj->eq("\x{7280}", "\x{2F924}"));
+    ok($obj->eq("\x{7295}", "\x{2F925}"));
+    ok($obj->eq("\x{72AF}", "\x{FA9F}"));
+    ok($obj->eq("\x{72C0}", "\x{F9FA}"));
+    ok($obj->eq("\x{72FC}", "\x{F92B}"));
+    ok($obj->eq("\x{732A}", "\x{FA16}"));
+    ok($obj->eq("\x{732A}", "\x{FAA0}"));
+    ok($obj->eq("\x{7375}", "\x{F9A7}"));
+    ok($obj->eq("\x{737A}", "\x{2F928}"));
+    ok($obj->eq("\x{7387}", "\x{F961}"));
+    ok($obj->eq("\x{7387}", "\x{F9DB}"));
+    ok($obj->eq("\x{738B}", "\x{2F929}"));
+    ok($obj->eq("\x{73A5}", "\x{2F92B}"));
+    ok($obj->eq("\x{73B2}", "\x{F9AD}"));
+    ok($obj->eq("\x{73DE}", "\x{F917}"));
+    ok($obj->eq("\x{7406}", "\x{F9E4}"));
+    ok($obj->eq("\x{7409}", "\x{F9CC}"));
+    ok($obj->eq("\x{7422}", "\x{FA4A}"));
+    ok($obj->eq("\x{7447}", "\x{2F92E}"));
+    ok($obj->eq("\x{745C}", "\x{2F92F}"));
+    ok($obj->eq("\x{7469}", "\x{F9AE}"));
+    ok($obj->eq("\x{7471}", "\x{FAA1}"));
+    ok($obj->eq("\x{7471}", "\x{2F930}"));
+    ok($obj->eq("\x{7485}", "\x{2F931}"));
+    ok($obj->eq("\x{7489}", "\x{F994}"));
+    ok($obj->eq("\x{7498}", "\x{F9EF}"));
+    ok($obj->eq("\x{74CA}", "\x{2F932}"));
+    ok($obj->eq("\x{7506}", "\x{FAA2}"));
+    ok($obj->eq("\x{7524}", "\x{2F934}"));
+    ok($obj->eq("\x{753B}", "\x{FAA3}"));
+    ok($obj->eq("\x{753E}", "\x{2F936}"));
+    ok($obj->eq("\x{7559}", "\x{F9CD}"));
+    ok($obj->eq("\x{7565}", "\x{F976}"));
+    ok($obj->eq("\x{7570}", "\x{F962}"));
+    ok($obj->eq("\x{7570}", "\x{2F938}"));
+    ok($obj->eq("\x{75E2}", "\x{F9E5}"));
+    ok($obj->eq("\x{7610}", "\x{2F93A}"));
+    ok($obj->eq("\x{761D}", "\x{FAA4}"));
+    ok($obj->eq("\x{761F}", "\x{FAA5}"));
+    ok($obj->eq("\x{7642}", "\x{F9C1}"));
+    ok($obj->eq("\x{7669}", "\x{F90E}"));
+    ok($obj->eq("\x{76CA}", "\x{FA17}"));
+    ok($obj->eq("\x{76CA}", "\x{FAA6}"));
+    ok($obj->eq("\x{76DB}", "\x{FAA7}"));
+    ok($obj->eq("\x{76E7}", "\x{F933}"));
+    ok($obj->eq("\x{76F4}", "\x{FAA8}"));
+    ok($obj->eq("\x{76F4}", "\x{2F940}"));
+    ok($obj->eq("\x{7701}", "\x{F96D}"));
+    ok($obj->eq("\x{771E}", "\x{2F945}"));
+    ok($obj->eq("\x{771F}", "\x{2F946}"));
+    ok($obj->eq("\x{771F}", "\x{2F947}"));
+    ok($obj->eq("\x{7740}", "\x{FAAA}"));
+    ok($obj->eq("\x{774A}", "\x{FAA9}"));
+    ok($obj->eq("\x{774A}", "\x{2F948}"));
+    ok($obj->eq("\x{778B}", "\x{2F94A}"));
+    ok($obj->eq("\x{77A7}", "\x{FA9D}"));
+    ok($obj->eq("\x{784E}", "\x{2F94E}"));
+    ok($obj->eq("\x{786B}", "\x{F9CE}"));
+    ok($obj->eq("\x{788C}", "\x{F93B}"));
+    ok($obj->eq("\x{788C}", "\x{2F94F}"));
+    ok($obj->eq("\x{7891}", "\x{FA4B}"));
+    ok($obj->eq("\x{78CA}", "\x{F947}"));
+    ok($obj->eq("\x{78CC}", "\x{FAAB}"));
+    ok($obj->eq("\x{78CC}", "\x{2F950}"));
+    ok($obj->eq("\x{78FB}", "\x{F964}"));
+    ok($obj->eq("\x{792A}", "\x{F985}"));
+    ok($obj->eq("\x{793C}", "\x{FA18}"));
+    ok($obj->eq("\x{793E}", "\x{FA4C}"));
+    ok($obj->eq("\x{7948}", "\x{FA4E}"));
+    ok($obj->eq("\x{7949}", "\x{FA4D}"));
+    ok($obj->eq("\x{7950}", "\x{FA4F}"));
+    ok($obj->eq("\x{7956}", "\x{FA50}"));
+    ok($obj->eq("\x{7956}", "\x{2F953}"));
+    ok($obj->eq("\x{795D}", "\x{FA51}"));
+    ok($obj->eq("\x{795E}", "\x{FA19}"));
+    ok($obj->eq("\x{7965}", "\x{FA1A}"));
+    ok($obj->eq("\x{797F}", "\x{F93C}"));
+    ok($obj->eq("\x{798D}", "\x{FA52}"));
+    ok($obj->eq("\x{798E}", "\x{FA53}"));
+    ok($obj->eq("\x{798F}", "\x{FA1B}"));
+    ok($obj->eq("\x{798F}", "\x{2F956}"));
+    ok($obj->eq("\x{79AE}", "\x{F9B6}"));
+    ok($obj->eq("\x{79CA}", "\x{F995}"));
+    ok($obj->eq("\x{79EB}", "\x{2F957}"));
+    ok($obj->eq("\x{7A1C}", "\x{F956}"));
+    ok($obj->eq("\x{7A40}", "\x{FA54}"));
+    ok($obj->eq("\x{7A40}", "\x{2F959}"));
+    ok($obj->eq("\x{7A4A}", "\x{2F95A}"));
+    ok($obj->eq("\x{7A4F}", "\x{2F95B}"));
+    ok($obj->eq("\x{7A81}", "\x{FA55}"));
+    ok($obj->eq("\x{7AB1}", "\x{FAAC}"));
+    ok($obj->eq("\x{7ACB}", "\x{F9F7}"));
+    ok($obj->eq("\x{7AEE}", "\x{2F95F}"));
+    ok($obj->eq("\x{7B20}", "\x{F9F8}"));
+    ok($obj->eq("\x{7BC0}", "\x{FA56}"));
+    ok($obj->eq("\x{7BC0}", "\x{FAAD}"));
+    ok($obj->eq("\x{7BC6}", "\x{2F962}"));
+    ok($obj->eq("\x{7BC9}", "\x{2F963}"));
+    ok($obj->eq("\x{7C3E}", "\x{F9A6}"));
+    ok($obj->eq("\x{7C60}", "\x{F944}"));
+    ok($obj->eq("\x{7C7B}", "\x{FAAE}"));
+    ok($obj->eq("\x{7C92}", "\x{F9F9}"));
+    ok($obj->eq("\x{7CBE}", "\x{FA1D}"));
+    ok($obj->eq("\x{7CD2}", "\x{2F966}"));
+    ok($obj->eq("\x{7CD6}", "\x{FA03}"));
+    ok($obj->eq("\x{7CE3}", "\x{2F969}"));
+    ok($obj->eq("\x{7CE7}", "\x{F97B}"));
+    ok($obj->eq("\x{7CE8}", "\x{2F968}"));
+    ok($obj->eq("\x{7D00}", "\x{2F96A}"));
+    ok($obj->eq("\x{7D10}", "\x{F9CF}"));
+    ok($obj->eq("\x{7D22}", "\x{F96A}"));
+    ok($obj->eq("\x{7D2F}", "\x{F94F}"));
+    ok($obj->eq("\x{7D5B}", "\x{FAAF}"));
+    ok($obj->eq("\x{7D63}", "\x{2F96C}"));
+    ok($obj->eq("\x{7DA0}", "\x{F93D}"));
+    ok($obj->eq("\x{7DBE}", "\x{F957}"));
+    ok($obj->eq("\x{7DC7}", "\x{2F96E}"));
+    ok($obj->eq("\x{7DF4}", "\x{F996}"));
+    ok($obj->eq("\x{7DF4}", "\x{FA57}"));
+    ok($obj->eq("\x{7DF4}", "\x{FAB0}"));
+    ok($obj->eq("\x{7E02}", "\x{2F96F}"));
+    ok($obj->eq("\x{7E09}", "\x{FA58}"));
+    ok($obj->eq("\x{7E37}", "\x{F950}"));
+    ok($obj->eq("\x{7E41}", "\x{FA59}"));
+    ok($obj->eq("\x{7E45}", "\x{2F970}"));
+    ok($obj->eq("\x{7F3E}", "\x{FAB1}"));
+    ok($obj->eq("\x{7F72}", "\x{FA5A}"));
+    ok($obj->eq("\x{7F79}", "\x{F9E6}"));
+    ok($obj->eq("\x{7F7A}", "\x{2F976}"));
+    ok($obj->eq("\x{7F85}", "\x{F90F}"));
+    ok($obj->eq("\x{7F95}", "\x{2F978}"));
+    ok($obj->eq("\x{7F9A}", "\x{F9AF}"));
+    ok($obj->eq("\x{7FBD}", "\x{FA1E}"));
+    ok($obj->eq("\x{7FFA}", "\x{2F979}"));
+    ok($obj->eq("\x{8001}", "\x{F934}"));
+    ok($obj->eq("\x{8005}", "\x{FA5B}"));
+    ok($obj->eq("\x{8005}", "\x{FAB2}"));
+    ok($obj->eq("\x{8005}", "\x{2F97A}"));
+    ok($obj->eq("\x{8046}", "\x{F9B0}"));
+    ok($obj->eq("\x{8060}", "\x{2F97D}"));
+    ok($obj->eq("\x{806F}", "\x{F997}"));
+    ok($obj->eq("\x{8070}", "\x{2F97F}"));
+    ok($obj->eq("\x{807E}", "\x{F945}"));
+    ok($obj->eq("\x{808B}", "\x{F953}"));
+    ok($obj->eq("\x{80AD}", "\x{2F8D6}"));
+    ok($obj->eq("\x{80B2}", "\x{2F982}"));
+    ok($obj->eq("\x{8103}", "\x{2F983}"));
+    ok($obj->eq("\x{813E}", "\x{2F985}"));
+    ok($obj->eq("\x{81D8}", "\x{F926}"));
+    ok($obj->eq("\x{81E8}", "\x{F9F6}"));
+    ok($obj->eq("\x{81ED}", "\x{FA5C}"));
+    ok($obj->eq("\x{8201}", "\x{2F893}"));
+    ok($obj->eq("\x{8201}", "\x{2F98B}"));
+    ok($obj->eq("\x{8204}", "\x{2F98C}"));
+    ok($obj->eq("\x{8218}", "\x{FA6D}"));
+    ok($obj->eq("\x{826F}", "\x{F97C}"));
+    ok($obj->eq("\x{8279}", "\x{FA5D}"));
+    ok($obj->eq("\x{8279}", "\x{FA5E}"));
+    ok($obj->eq("\x{828B}", "\x{2F990}"));
+    ok($obj->eq("\x{8291}", "\x{2F98F}"));
+    ok($obj->eq("\x{829D}", "\x{2F991}"));
+    ok($obj->eq("\x{82B1}", "\x{2F993}"));
+    ok($obj->eq("\x{82B3}", "\x{2F994}"));
+    ok($obj->eq("\x{82BD}", "\x{2F995}"));
+    ok($obj->eq("\x{82E5}", "\x{F974}"));
+    ok($obj->eq("\x{82E5}", "\x{2F998}"));
+    ok($obj->eq("\x{82E6}", "\x{2F996}"));
+    ok($obj->eq("\x{831D}", "\x{2F999}"));
+    ok($obj->eq("\x{8323}", "\x{2F99C}"));
+    ok($obj->eq("\x{8336}", "\x{F9FE}"));
+    ok($obj->eq("\x{8352}", "\x{FAB3}"));
+    ok($obj->eq("\x{8353}", "\x{2F9A0}"));
+    ok($obj->eq("\x{8363}", "\x{2F99A}"));
+    ok($obj->eq("\x{83AD}", "\x{2F99B}"));
+    ok($obj->eq("\x{83BD}", "\x{2F99D}"));
+    ok($obj->eq("\x{83C9}", "\x{F93E}"));
+    ok($obj->eq("\x{83CA}", "\x{2F9A1}"));
+    ok($obj->eq("\x{83CC}", "\x{2F9A2}"));
+    ok($obj->eq("\x{83DC}", "\x{2F9A3}"));
+    ok($obj->eq("\x{83E7}", "\x{2F99E}"));
+    ok($obj->eq("\x{83EF}", "\x{FAB4}"));
+    ok($obj->eq("\x{83F1}", "\x{F958}"));
+    ok($obj->eq("\x{843D}", "\x{F918}"));
+    ok($obj->eq("\x{8449}", "\x{F96E}"));
+    ok($obj->eq("\x{8457}", "\x{FA5F}"));
+    ok($obj->eq("\x{8457}", "\x{2F99F}"));
+    ok($obj->eq("\x{84EE}", "\x{F999}"));
+    ok($obj->eq("\x{84F1}", "\x{2F9A8}"));
+    ok($obj->eq("\x{84F3}", "\x{2F9A9}"));
+    ok($obj->eq("\x{84FC}", "\x{F9C2}"));
+    ok($obj->eq("\x{8516}", "\x{2F9AA}"));
+    ok($obj->eq("\x{8564}", "\x{2F9AC}"));
+    ok($obj->eq("\x{85CD}", "\x{F923}"));
+    ok($obj->eq("\x{85FA}", "\x{F9F0}"));
+    ok($obj->eq("\x{8606}", "\x{F935}"));
+    ok($obj->eq("\x{8612}", "\x{FA20}"));
+    ok($obj->eq("\x{862D}", "\x{F91F}"));
+    ok($obj->eq("\x{863F}", "\x{F910}"));
+    ok($obj->eq("\x{8650}", "\x{2F9B3}"));
+    ok($obj->eq("\x{865C}", "\x{F936}"));
+    ok($obj->eq("\x{865C}", "\x{2F9B4}"));
+    ok($obj->eq("\x{8667}", "\x{2F9B5}"));
+    ok($obj->eq("\x{8669}", "\x{2F9B6}"));
+    ok($obj->eq("\x{8688}", "\x{2F9B8}"));
+    ok($obj->eq("\x{86A9}", "\x{2F9B7}"));
+    ok($obj->eq("\x{86E2}", "\x{2F9BA}"));
+    ok($obj->eq("\x{870E}", "\x{2F9B9}"));
+    ok($obj->eq("\x{8728}", "\x{2F9BC}"));
+    ok($obj->eq("\x{876B}", "\x{2F9BD}"));
+    ok($obj->eq("\x{8779}", "\x{FAB5}"));
+    ok($obj->eq("\x{8779}", "\x{2F9BB}"));
+    ok($obj->eq("\x{8786}", "\x{2F9BE}"));
+    ok($obj->eq("\x{87BA}", "\x{F911}"));
+    ok($obj->eq("\x{87E1}", "\x{2F9C0}"));
+    ok($obj->eq("\x{8801}", "\x{2F9C1}"));
+    ok($obj->eq("\x{881F}", "\x{F927}"));
+    ok($obj->eq("\x{884C}", "\x{FA08}"));
+    ok($obj->eq("\x{8860}", "\x{2F9C3}"));
+    ok($obj->eq("\x{8863}", "\x{2F9C4}"));
+    ok($obj->eq("\x{88C2}", "\x{F9A0}"));
+    ok($obj->eq("\x{88CF}", "\x{F9E7}"));
+    ok($obj->eq("\x{88D7}", "\x{2F9C6}"));
+    ok($obj->eq("\x{88DE}", "\x{2F9C7}"));
+    ok($obj->eq("\x{88E1}", "\x{F9E8}"));
+    ok($obj->eq("\x{88F8}", "\x{F912}"));
+    ok($obj->eq("\x{88FA}", "\x{2F9C9}"));
+    ok($obj->eq("\x{8910}", "\x{FA60}"));
+    ok($obj->eq("\x{8941}", "\x{FAB6}"));
+    ok($obj->eq("\x{8964}", "\x{F924}"));
+    ok($obj->eq("\x{8986}", "\x{FAB7}"));
+    ok($obj->eq("\x{898B}", "\x{FA0A}"));
+    ok($obj->eq("\x{8996}", "\x{FA61}"));
+    ok($obj->eq("\x{8996}", "\x{FAB8}"));
+    ok($obj->eq("\x{8AA0}", "\x{2F9CF}"));
+    ok($obj->eq("\x{8AAA}", "\x{F96F}"));
+    ok($obj->eq("\x{8AAA}", "\x{F9A1}"));
+    ok($obj->eq("\x{8ABF}", "\x{FAB9}"));
+    ok($obj->eq("\x{8ACB}", "\x{FABB}"));
+    ok($obj->eq("\x{8AD2}", "\x{F97D}"));
+    ok($obj->eq("\x{8AD6}", "\x{F941}"));
+    ok($obj->eq("\x{8AED}", "\x{FABE}"));
+    ok($obj->eq("\x{8AED}", "\x{2F9D0}"));
+    ok($obj->eq("\x{8AF8}", "\x{FA22}"));
+    ok($obj->eq("\x{8AF8}", "\x{FABA}"));
+    ok($obj->eq("\x{8AFE}", "\x{F95D}"));
+    ok($obj->eq("\x{8AFE}", "\x{FABD}"));
+    ok($obj->eq("\x{8B01}", "\x{FA62}"));
+    ok($obj->eq("\x{8B01}", "\x{FABC}"));
+    ok($obj->eq("\x{8B39}", "\x{FA63}"));
+    ok($obj->eq("\x{8B39}", "\x{FABF}"));
+    ok($obj->eq("\x{8B58}", "\x{F9FC}"));
+    ok($obj->eq("\x{8B80}", "\x{F95A}"));
+    ok($obj->eq("\x{8B8A}", "\x{FAC0}"));
+    ok($obj->eq("\x{8B8A}", "\x{2F9D1}"));
+    ok($obj->eq("\x{8C48}", "\x{F900}"));
+    ok($obj->eq("\x{8C55}", "\x{2F9D2}"));
+    ok($obj->eq("\x{8CAB}", "\x{2F9D4}"));
+    ok($obj->eq("\x{8CC1}", "\x{2F9D5}"));
+    ok($obj->eq("\x{8CC2}", "\x{F948}"));
+    ok($obj->eq("\x{8CC8}", "\x{F903}"));
+    ok($obj->eq("\x{8CD3}", "\x{FA64}"));
+    ok($obj->eq("\x{8D08}", "\x{FA65}"));
+    ok($obj->eq("\x{8D08}", "\x{FAC1}"));
+    ok($obj->eq("\x{8D1B}", "\x{2F9D6}"));
+    ok($obj->eq("\x{8D77}", "\x{2F9D7}"));
+    ok($obj->eq("\x{8DBC}", "\x{2F9DB}"));
+    ok($obj->eq("\x{8DCB}", "\x{2F9DA}"));
+    ok($obj->eq("\x{8DEF}", "\x{F937}"));
+    ok($obj->eq("\x{8DF0}", "\x{2F9DC}"));
+    ok($obj->eq("\x{8ECA}", "\x{F902}"));
+    ok($obj->eq("\x{8ED4}", "\x{2F9DE}"));
+    ok($obj->eq("\x{8F26}", "\x{F998}"));
+    ok($obj->eq("\x{8F2A}", "\x{F9D7}"));
+    ok($obj->eq("\x{8F38}", "\x{FAC2}"));
+    ok($obj->eq("\x{8F38}", "\x{2F9DF}"));
+    ok($obj->eq("\x{8F3B}", "\x{FA07}"));
+    ok($obj->eq("\x{8F62}", "\x{F98D}"));
+    ok($obj->eq("\x{8F9E}", "\x{2F98D}"));
+    ok($obj->eq("\x{8FB0}", "\x{F971}"));
+    ok($obj->eq("\x{8FB6}", "\x{FA66}"));
+    ok($obj->eq("\x{9023}", "\x{F99A}"));
+    ok($obj->eq("\x{9038}", "\x{FA25}"));
+    ok($obj->eq("\x{9038}", "\x{FA67}"));
+    ok($obj->eq("\x{9072}", "\x{FAC3}"));
+    ok($obj->eq("\x{907C}", "\x{F9C3}"));
+    ok($obj->eq("\x{908F}", "\x{F913}"));
+    ok($obj->eq("\x{9094}", "\x{2F9E2}"));
+    ok($obj->eq("\x{90CE}", "\x{F92C}"));
+    ok($obj->eq("\x{90DE}", "\x{FA2E}"));
+    ok($obj->eq("\x{90F1}", "\x{2F9E3}"));
+    ok($obj->eq("\x{90FD}", "\x{FA26}"));
+    ok($obj->eq("\x{9111}", "\x{2F9E4}"));
+    ok($obj->eq("\x{911B}", "\x{2F9E6}"));
+    ok($obj->eq("\x{916A}", "\x{F919}"));
+    ok($obj->eq("\x{9199}", "\x{FAC4}"));
+    ok($obj->eq("\x{91B4}", "\x{F9B7}"));
+    ok($obj->eq("\x{91CC}", "\x{F9E9}"));
+    ok($obj->eq("\x{91CF}", "\x{F97E}"));
+    ok($obj->eq("\x{91D1}", "\x{F90A}"));
+    ok($obj->eq("\x{9234}", "\x{F9B1}"));
+    ok($obj->eq("\x{9238}", "\x{2F9E7}"));
+    ok($obj->eq("\x{9276}", "\x{FAC5}"));
+    ok($obj->eq("\x{927C}", "\x{2F9EA}"));
+    ok($obj->eq("\x{92D7}", "\x{2F9E8}"));
+    ok($obj->eq("\x{92D8}", "\x{2F9E9}"));
+    ok($obj->eq("\x{9304}", "\x{F93F}"));
+    ok($obj->eq("\x{934A}", "\x{F99B}"));
+    ok($obj->eq("\x{93F9}", "\x{2F9EB}"));
+    ok($obj->eq("\x{9415}", "\x{2F9EC}"));
+    ok($obj->eq("\x{958B}", "\x{2F9EE}"));
+    ok($obj->eq("\x{95AD}", "\x{F986}"));
+    ok($obj->eq("\x{95B7}", "\x{2F9F0}"));
+    ok($obj->eq("\x{962E}", "\x{F9C6}"));
+    ok($obj->eq("\x{964B}", "\x{F951}"));
+    ok($obj->eq("\x{964D}", "\x{FA09}"));
+    ok($obj->eq("\x{9675}", "\x{F959}"));
+    ok($obj->eq("\x{9678}", "\x{F9D3}"));
+    ok($obj->eq("\x{967C}", "\x{FAC6}"));
+    ok($obj->eq("\x{9686}", "\x{F9DC}"));
+    ok($obj->eq("\x{96A3}", "\x{F9F1}"));
+    ok($obj->eq("\x{96B7}", "\x{FA2F}"));
+    ok($obj->eq("\x{96B8}", "\x{F9B8}"));
+    ok($obj->eq("\x{96C3}", "\x{2F9F3}"));
+    ok($obj->eq("\x{96E2}", "\x{F9EA}"));
+    ok($obj->eq("\x{96E3}", "\x{FA68}"));
+    ok($obj->eq("\x{96E3}", "\x{FAC7}"));
+    ok($obj->eq("\x{96F6}", "\x{F9B2}"));
+    ok($obj->eq("\x{96F7}", "\x{F949}"));
+    ok($obj->eq("\x{9723}", "\x{2F9F5}"));
+    ok($obj->eq("\x{9732}", "\x{F938}"));
+    ok($obj->eq("\x{9748}", "\x{F9B3}"));
+    ok($obj->eq("\x{9756}", "\x{FA1C}"));
+    ok($obj->eq("\x{9756}", "\x{FAC8}"));
+    ok($obj->eq("\x{97DB}", "\x{FAC9}"));
+    ok($obj->eq("\x{97E0}", "\x{2F9FA}"));
+    ok($obj->eq("\x{97FF}", "\x{FA69}"));
+    ok($obj->eq("\x{97FF}", "\x{FACA}"));
+    ok($obj->eq("\x{980B}", "\x{FACB}"));
+    ok($obj->eq("\x{980B}", "\x{2F9FE}"));
+    ok($obj->eq("\x{980B}", "\x{2F9FF}"));
+    ok($obj->eq("\x{9818}", "\x{F9B4}"));
+    ok($obj->eq("\x{9829}", "\x{2FA00}"));
+    ok($obj->eq("\x{983B}", "\x{FA6A}"));
+    ok($obj->eq("\x{983B}", "\x{FACC}"));
+    ok($obj->eq("\x{985E}", "\x{F9D0}"));
+    ok($obj->eq("\x{98E2}", "\x{2FA02}"));
+    ok($obj->eq("\x{98EF}", "\x{FA2A}"));
+    ok($obj->eq("\x{98FC}", "\x{FA2B}"));
+    ok($obj->eq("\x{9928}", "\x{FA2C}"));
+    ok($obj->eq("\x{9929}", "\x{2FA04}"));
+    ok($obj->eq("\x{99A7}", "\x{2FA05}"));
+    ok($obj->eq("\x{99C2}", "\x{2FA06}"));
+    ok($obj->eq("\x{99F1}", "\x{F91A}"));
+    ok($obj->eq("\x{99FE}", "\x{2FA07}"));
+    ok($obj->eq("\x{9A6A}", "\x{F987}"));
+    ok($obj->eq("\x{9B12}", "\x{FACD}"));
+    ok($obj->eq("\x{9B12}", "\x{2FA0A}"));
+    ok($obj->eq("\x{9B6F}", "\x{F939}"));
+    ok($obj->eq("\x{9C40}", "\x{2FA0B}"));
+    ok($obj->eq("\x{9C57}", "\x{F9F2}"));
+    ok($obj->eq("\x{9CFD}", "\x{2FA0C}"));
+    ok($obj->eq("\x{9D67}", "\x{2FA0F}"));
+    ok($obj->eq("\x{9DB4}", "\x{FA2D}"));
+    ok($obj->eq("\x{9DFA}", "\x{F93A}"));
+    ok($obj->eq("\x{9E1E}", "\x{F920}"));
+    ok($obj->eq("\x{9E7F}", "\x{F940}"));
+    ok($obj->eq("\x{9E97}", "\x{F988}"));
+    ok($obj->eq("\x{9E9F}", "\x{F9F3}"));
+    ok($obj->eq("\x{9EBB}", "\x{2FA15}"));
+    ok($obj->eq("\x{9ECE}", "\x{F989}"));
+    ok($obj->eq("\x{9EF9}", "\x{2FA17}"));
+    ok($obj->eq("\x{9EFE}", "\x{2FA18}"));
+    ok($obj->eq("\x{9F05}", "\x{2FA19}"));
+    ok($obj->eq("\x{9F0F}", "\x{2FA1A}"));
+    ok($obj->eq("\x{9F16}", "\x{2FA1B}"));
+    ok($obj->eq("\x{9F3B}", "\x{2FA1C}"));
+    ok($obj->eq("\x{9F43}", "\x{FAD8}"));
+    ok($obj->eq("\x{9F8D}", "\x{F9C4}"));
+    ok($obj->eq("\x{9F8E}", "\x{FAD9}"));
+    ok($obj->eq("\x{9F9C}", "\x{F907}"));
+    ok($obj->eq("\x{9F9C}", "\x{F908}"));
+    ok($obj->eq("\x{9F9C}", "\x{FACE}"));
+    ok($obj->eq("\x{349E}", "\x{2F80C}"));
+    ok($obj->eq("\x{34B9}", "\x{2F813}"));
+    ok($obj->eq("\x{34BB}", "\x{2F9CA}"));
+    ok($obj->eq("\x{34DF}", "\x{2F81F}"));
+    ok($obj->eq("\x{3515}", "\x{2F824}"));
+    ok($obj->eq("\x{36EE}", "\x{2F867}"));
+    ok($obj->eq("\x{36FC}", "\x{2F868}"));
+    ok($obj->eq("\x{3781}", "\x{2F876}"));
+    ok($obj->eq("\x{382F}", "\x{2F883}"));
+    ok($obj->eq("\x{3862}", "\x{2F888}"));
+    ok($obj->eq("\x{387C}", "\x{2F88A}"));
+    ok($obj->eq("\x{38C7}", "\x{2F896}"));
+    ok($obj->eq("\x{38E3}", "\x{2F89B}"));
+    ok($obj->eq("\x{391C}", "\x{2F8A2}"));
+    ok($obj->eq("\x{393A}", "\x{2F8A1}"));
+    ok($obj->eq("\x{3A2E}", "\x{2F8C2}"));
+    ok($obj->eq("\x{3A6C}", "\x{2F8C7}"));
+    ok($obj->eq("\x{3AE4}", "\x{2F8D1}"));
+    ok($obj->eq("\x{3B08}", "\x{2F8D0}"));
+    ok($obj->eq("\x{3B19}", "\x{2F8CE}"));
+    ok($obj->eq("\x{3B49}", "\x{2F8DE}"));
+    ok($obj->eq("\x{3B9D}", "\x{FAD2}"));
+    ok($obj->eq("\x{3B9D}", "\x{2F8E7}"));
+    ok($obj->eq("\x{3C18}", "\x{2F8EE}"));
+    ok($obj->eq("\x{3C4E}", "\x{2F8F2}"));
+    ok($obj->eq("\x{3D33}", "\x{2F90A}"));
+    ok($obj->eq("\x{3D96}", "\x{2F916}"));
+    ok($obj->eq("\x{3EAC}", "\x{2F92A}"));
+    ok($obj->eq("\x{3EB8}", "\x{2F92C}"));
+    ok($obj->eq("\x{3EB8}", "\x{2F92D}"));
+    ok($obj->eq("\x{3F1B}", "\x{2F933}"));
+    ok($obj->eq("\x{3FFC}", "\x{2F93E}"));
+    ok($obj->eq("\x{4008}", "\x{2F93F}"));
+    ok($obj->eq("\x{4018}", "\x{FAD3}"));
+    ok($obj->eq("\x{4039}", "\x{FAD4}"));
+    ok($obj->eq("\x{4039}", "\x{2F949}"));
+    ok($obj->eq("\x{4046}", "\x{2F94B}"));
+    ok($obj->eq("\x{4096}", "\x{2F94C}"));
+    ok($obj->eq("\x{40E3}", "\x{2F951}"));
+    ok($obj->eq("\x{412F}", "\x{2F958}"));
+    ok($obj->eq("\x{4202}", "\x{2F960}"));
+    ok($obj->eq("\x{4227}", "\x{2F964}"));
+    ok($obj->eq("\x{42A0}", "\x{2F967}"));
+    ok($obj->eq("\x{4301}", "\x{2F96D}"));
+    ok($obj->eq("\x{4334}", "\x{2F971}"));
+    ok($obj->eq("\x{4359}", "\x{2F974}"));
+    ok($obj->eq("\x{43D5}", "\x{2F981}"));
+    ok($obj->eq("\x{43D9}", "\x{2F8D7}"));
+    ok($obj->eq("\x{440B}", "\x{2F984}"));
+    ok($obj->eq("\x{446B}", "\x{2F98E}"));
+    ok($obj->eq("\x{452B}", "\x{2F9A7}"));
+    ok($obj->eq("\x{455D}", "\x{2F9AE}"));
+    ok($obj->eq("\x{4561}", "\x{2F9AF}"));
+    ok($obj->eq("\x{456B}", "\x{2F9B2}"));
+    ok($obj->eq("\x{45D7}", "\x{2F9BF}"));
+    ok($obj->eq("\x{45F9}", "\x{2F9C2}"));
+    ok($obj->eq("\x{4635}", "\x{2F9C8}"));
+    ok($obj->eq("\x{46BE}", "\x{2F9CD}"));
+    ok($obj->eq("\x{46C7}", "\x{2F9CE}"));
+    ok($obj->eq("\x{4995}", "\x{2F9EF}"));
+    ok($obj->eq("\x{49E6}", "\x{2F9F2}"));
+    ok($obj->eq("\x{4A6E}", "\x{2F9F8}"));
+    ok($obj->eq("\x{4A76}", "\x{2F9F9}"));
+    ok($obj->eq("\x{4AB2}", "\x{2F9FC}"));
+    ok($obj->eq("\x{4B33}", "\x{2FA03}"));
+    ok($obj->eq("\x{4BCE}", "\x{2FA08}"));
+    ok($obj->eq("\x{4CCE}", "\x{2FA0D}"));
+    ok($obj->eq("\x{4CED}", "\x{2FA0E}"));
+    ok($obj->eq("\x{4CF8}", "\x{2FA11}"));
+    ok($obj->eq("\x{4D56}", "\x{2FA16}"));
+    ok($obj->eq("\x{20122}", "\x{2F803}"));
+    ok($obj->eq("\x{2051C}", "\x{2F812}"));
+    ok($obj->eq("\x{20525}", "\x{2F91B}"));
+    ok($obj->eq("\x{2054B}", "\x{2F816}"));
+    ok($obj->eq("\x{2063A}", "\x{2F80D}"));
+    ok($obj->eq("\x{20804}", "\x{2F9D9}"));
+    ok($obj->eq("\x{208DE}", "\x{2F9DD}"));
+    ok($obj->eq("\x{20A2C}", "\x{2F834}"));
+    ok($obj->eq("\x{20B63}", "\x{2F838}"));
+    ok($obj->eq("\x{214E4}", "\x{2F859}"));
+    ok($obj->eq("\x{216A8}", "\x{2F860}"));
+    ok($obj->eq("\x{216EA}", "\x{2F861}"));
+    ok($obj->eq("\x{219C8}", "\x{2F86C}"));
+    ok($obj->eq("\x{21B18}", "\x{2F871}"));
+    ok($obj->eq("\x{21D0B}", "\x{2F8F8}"));
+    ok($obj->eq("\x{21DE4}", "\x{2F87B}"));
+    ok($obj->eq("\x{21DE6}", "\x{2F87D}"));
+    ok($obj->eq("\x{22183}", "\x{2F889}"));
+    ok($obj->eq("\x{2219F}", "\x{2F939}"));
+    ok($obj->eq("\x{22331}", "\x{2F891}"));
+    ok($obj->eq("\x{22331}", "\x{2F892}"));
+    ok($obj->eq("\x{226D4}", "\x{2F8A4}"));
+    ok($obj->eq("\x{22844}", "\x{FAD0}"));
+    ok($obj->eq("\x{2284A}", "\x{FACF}"));
+    ok($obj->eq("\x{22B0C}", "\x{2F8B8}"));
+    ok($obj->eq("\x{22BF1}", "\x{2F8BE}"));
+    ok($obj->eq("\x{2300A}", "\x{2F8CA}"));
+    ok($obj->eq("\x{232B8}", "\x{2F897}"));
+    ok($obj->eq("\x{2335F}", "\x{2F980}"));
+    ok($obj->eq("\x{23393}", "\x{2F989}"));
+    ok($obj->eq("\x{2339C}", "\x{2F98A}"));
+    ok($obj->eq("\x{233C3}", "\x{2F8DD}"));
+    ok($obj->eq("\x{233D5}", "\x{FAD1}"));
+    ok($obj->eq("\x{2346D}", "\x{2F8E3}"));
+    ok($obj->eq("\x{236A3}", "\x{2F8EC}"));
+    ok($obj->eq("\x{238A7}", "\x{2F8F0}"));
+    ok($obj->eq("\x{23A8D}", "\x{2F8F7}"));
+    ok($obj->eq("\x{23AFA}", "\x{2F8F9}"));
+    ok($obj->eq("\x{23CBC}", "\x{2F8FB}"));
+    ok($obj->eq("\x{23D1E}", "\x{2F906}"));
+    ok($obj->eq("\x{23ED1}", "\x{2F90D}"));
+    ok($obj->eq("\x{23F5E}", "\x{2F910}"));
+    ok($obj->eq("\x{23F8E}", "\x{2F911}"));
+    ok($obj->eq("\x{24263}", "\x{2F91D}"));
+    ok($obj->eq("\x{242EE}", "\x{FA6C}"));
+    ok($obj->eq("\x{243AB}", "\x{2F91F}"));
+    ok($obj->eq("\x{24608}", "\x{2F923}"));
+    ok($obj->eq("\x{24735}", "\x{2F926}"));
+    ok($obj->eq("\x{24814}", "\x{2F927}"));
+    ok($obj->eq("\x{24C36}", "\x{2F935}"));
+    ok($obj->eq("\x{24C92}", "\x{2F937}"));
+    ok($obj->eq("\x{24FA1}", "\x{2F93B}"));
+    ok($obj->eq("\x{24FB8}", "\x{2F93C}"));
+    ok($obj->eq("\x{25044}", "\x{2F93D}"));
+    ok($obj->eq("\x{250F2}", "\x{2F942}"));
+    ok($obj->eq("\x{250F3}", "\x{2F941}"));
+    ok($obj->eq("\x{25119}", "\x{2F943}"));
+    ok($obj->eq("\x{25133}", "\x{2F944}"));
+    ok($obj->eq("\x{25249}", "\x{FAD5}"));
+    ok($obj->eq("\x{2541D}", "\x{2F94D}"));
+    ok($obj->eq("\x{25626}", "\x{2F952}"));
+    ok($obj->eq("\x{2569A}", "\x{2F954}"));
+    ok($obj->eq("\x{256C5}", "\x{2F955}"));
+    ok($obj->eq("\x{2597C}", "\x{2F95C}"));
+    ok($obj->eq("\x{25AA7}", "\x{2F95D}"));
+    ok($obj->eq("\x{25AA7}", "\x{2F95E}"));
+    ok($obj->eq("\x{25BAB}", "\x{2F961}"));
+    ok($obj->eq("\x{25C80}", "\x{2F965}"));
+    ok($obj->eq("\x{25CD0}", "\x{FAD6}"));
+    ok($obj->eq("\x{25F86}", "\x{2F96B}"));
+    ok($obj->eq("\x{261DA}", "\x{2F898}"));
+    ok($obj->eq("\x{26228}", "\x{2F972}"));
+    ok($obj->eq("\x{26247}", "\x{2F973}"));
+    ok($obj->eq("\x{262D9}", "\x{2F975}"));
+    ok($obj->eq("\x{2633E}", "\x{2F977}"));
+    ok($obj->eq("\x{264DA}", "\x{2F97B}"));
+    ok($obj->eq("\x{26523}", "\x{2F97C}"));
+    ok($obj->eq("\x{265A8}", "\x{2F97E}"));
+    ok($obj->eq("\x{267A7}", "\x{2F987}"));
+    ok($obj->eq("\x{267B5}", "\x{2F988}"));
+    ok($obj->eq("\x{26B3C}", "\x{2F997}"));
+    ok($obj->eq("\x{26C36}", "\x{2F9A4}"));
+    ok($obj->eq("\x{26CD5}", "\x{2F9A6}"));
+    ok($obj->eq("\x{26D6B}", "\x{2F9A5}"));
+    ok($obj->eq("\x{26F2C}", "\x{2F9AD}"));
+    ok($obj->eq("\x{26FB1}", "\x{2F9B0}"));
+    ok($obj->eq("\x{270D2}", "\x{2F9B1}"));
+    ok($obj->eq("\x{273CA}", "\x{2F9AB}"));
+    ok($obj->eq("\x{27667}", "\x{2F9C5}"));
+    ok($obj->eq("\x{278AE}", "\x{2F9CB}"));
+    ok($obj->eq("\x{27966}", "\x{2F9CC}"));
+    ok($obj->eq("\x{27CA8}", "\x{2F9D3}"));
+    ok($obj->eq("\x{27ED3}", "\x{FAD7}"));
+    ok($obj->eq("\x{27F2F}", "\x{2F9D8}"));
+    ok($obj->eq("\x{285D2}", "\x{2F9E0}"));
+    ok($obj->eq("\x{285ED}", "\x{2F9E1}"));
+    ok($obj->eq("\x{2872E}", "\x{2F9E5}"));
+    ok($obj->eq("\x{28BFA}", "\x{2F9ED}"));
+    ok($obj->eq("\x{28D77}", "\x{2F9F1}"));
+    ok($obj->eq("\x{29145}", "\x{2F9F6}"));
+    ok($obj->eq("\x{291DF}", "\x{2F81C}"));
+    ok($obj->eq("\x{2921A}", "\x{2F9F7}"));
+    ok($obj->eq("\x{2940A}", "\x{2F9FB}"));
+    ok($obj->eq("\x{29496}", "\x{2F9FD}"));
+    ok($obj->eq("\x{295B6}", "\x{2FA01}"));
+    ok($obj->eq("\x{29B30}", "\x{2FA09}"));
+    ok($obj->eq("\x{2A0CE}", "\x{2FA10}"));
+    ok($obj->eq("\x{2A105}", "\x{2FA12}"));
+    ok($obj->eq("\x{2A20E}", "\x{2FA13}"));
+    ok($obj->eq("\x{2A291}", "\x{2FA14}"));
+    ok($obj->eq("\x{2A392}", "\x{2F88F}"));
+    ok($obj->eq("\x{2A600}", "\x{2FA1D}"));
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_ee.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_ee.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_ee.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,190 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..120\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 $objEe = Unicode::Collate::Locale->
+    new(locale => 'EE', normalization => undef);
+
+ok($objEe->getlocale, 'ee');
+
+# 2
+
+$objEe->change(level => 1);
+
+ok($objEe->lt("d", "d\x{292}"));
+ok($objEe->gt("dz","d\x{292}"));
+ok($objEe->lt("dz","\x{256}"));
+ok($objEe->gt("e", "\x{256}"));
+ok($objEe->lt("e", "\x{25B}"));
+ok($objEe->gt("f", "\x{25B}"));
+ok($objEe->lt("f", "\x{192}"));
+ok($objEe->gt("g", "\x{192}"));
+
+ok($objEe->lt("gz","gb"));
+ok($objEe->lt("gb","\x{263}"));
+ok($objEe->gt("h", "\x{263}"));
+ok($objEe->lt("h", "hz"));
+ok($objEe->lt("hz","x"));
+ok($objEe->lt("x", "i"));
+
+# 16
+
+ok($objEe->lt("kz","kp"));
+ok($objEe->lt("kp","l"));
+ok($objEe->lt("nz","ny"));
+ok($objEe->lt("ny","\x{14B}"));
+ok($objEe->gt("o", "\x{14B}"));
+ok($objEe->lt("o", "\x{254}"));
+ok($objEe->gt("p", "\x{254}"));
+
+ok($objEe->lt("tz","ts"));
+ok($objEe->lt("ts","u"));
+ok($objEe->lt("u", "v"));
+ok($objEe->lt("v", "\x{28B}"));
+ok($objEe->gt("w", "\x{28B}"));
+
+# 28
+
+ok($objEe->eq("\x{302}",  "\x{30C}"));
+ok($objEe->eq("a\x{302}", "a\x{30C}"));
+ok($objEe->eq("A\x{302}", "A\x{30C}"));
+ok($objEe->eq("e\x{302}", "e\x{30C}"));
+ok($objEe->eq("E\x{302}", "E\x{30C}"));
+ok($objEe->eq("i\x{302}", "i\x{30C}"));
+ok($objEe->eq("I\x{302}", "I\x{30C}"));
+ok($objEe->eq("o\x{302}", "o\x{30C}"));
+ok($objEe->eq("O\x{302}", "O\x{30C}"));
+ok($objEe->eq("u\x{302}", "u\x{30C}"));
+ok($objEe->eq("U\x{302}", "U\x{30C}"));
+ok($objEe->eq("y\x{302}", "y\x{30C}"));
+ok($objEe->eq("Y\x{302}", "Y\x{30C}"));
+
+# 41
+
+$objEe->change(level => 2);
+
+ok($objEe->gt("\x{302}",  "\x{30C}"));
+ok($objEe->gt("a\x{302}", "a\x{30C}"));
+ok($objEe->gt("A\x{302}", "A\x{30C}"));
+ok($objEe->gt("e\x{302}", "e\x{30C}"));
+ok($objEe->gt("E\x{302}", "E\x{30C}"));
+ok($objEe->gt("i\x{302}", "i\x{30C}"));
+ok($objEe->gt("I\x{302}", "I\x{30C}"));
+ok($objEe->gt("o\x{302}", "o\x{30C}"));
+ok($objEe->gt("O\x{302}", "O\x{30C}"));
+ok($objEe->gt("u\x{302}", "u\x{30C}"));
+ok($objEe->gt("U\x{302}", "U\x{30C}"));
+ok($objEe->gt("y\x{302}", "y\x{30C}"));
+ok($objEe->gt("Y\x{302}", "Y\x{30C}"));
+
+# 54
+
+ok($objEe->eq("dz", "Dz"));
+ok($objEe->eq("Dz", "DZ"));
+ok($objEe->eq("\x{256}", "\x{189}"));
+ok($objEe->eq("\x{25B}", "\x{190}"));
+ok($objEe->eq("\x{192}", "\x{191}"));
+ok($objEe->eq("gb", "Gb"));
+ok($objEe->eq("Gb", "GB"));
+ok($objEe->eq("\x{263}", "\x{194}"));
+ok($objEe->eq("x", "X"));
+ok($objEe->eq("kp", "Kp"));
+ok($objEe->eq("Kp", "KP"));
+ok($objEe->eq("ny", "Ny"));
+ok($objEe->eq("Ny", "NY"));
+ok($objEe->eq("\x{14B}", "\x{14A}"));
+ok($objEe->eq("\x{254}", "\x{186}"));
+ok($objEe->eq("ts", "Ts"));
+ok($objEe->eq("Ts", "TS"));
+ok($objEe->eq("\x{28B}", "\x{1B2}"));
+
+# 72
+
+$objEe->change(level => 3);
+
+ok($objEe->lt("dz", "Dz"));
+ok($objEe->lt("Dz", "DZ"));
+ok($objEe->lt("\x{256}", "\x{189}"));
+ok($objEe->lt("\x{25B}", "\x{190}"));
+ok($objEe->lt("\x{192}", "\x{191}"));
+ok($objEe->lt("gb", "Gb"));
+ok($objEe->lt("Gb", "GB"));
+ok($objEe->lt("\x{263}", "\x{194}"));
+ok($objEe->lt("x", "X"));
+ok($objEe->lt("kp", "Kp"));
+ok($objEe->lt("Kp", "KP"));
+ok($objEe->lt("ny", "Ny"));
+ok($objEe->lt("Ny", "NY"));
+ok($objEe->lt("\x{14B}", "\x{14A}"));
+ok($objEe->lt("\x{254}", "\x{186}"));
+ok($objEe->lt("ts", "Ts"));
+ok($objEe->lt("Ts", "TS"));
+ok($objEe->lt("\x{28B}", "\x{1B2}"));
+
+# 90
+
+ok($objEe->eq("a\x{302}", pack('U', 0xE2)));
+ok($objEe->eq("A\x{302}", pack('U', 0xC2)));
+ok($objEe->eq("e\x{302}", pack('U', 0xEA)));
+ok($objEe->eq("E\x{302}", pack('U', 0xCA)));
+ok($objEe->eq("i\x{302}", pack('U', 0xEE)));
+ok($objEe->eq("I\x{302}", pack('U', 0xCE)));
+ok($objEe->eq("o\x{302}", pack('U', 0xF4)));
+ok($objEe->eq("O\x{302}", pack('U', 0xD4)));
+ok($objEe->eq("u\x{302}", pack('U', 0xFB)));
+ok($objEe->eq("U\x{302}", pack('U', 0xDB)));
+ok($objEe->eq("y\x{302}", "\x{177}"));
+ok($objEe->eq("Y\x{302}", "\x{176}"));
+
+# 102
+
+$objEe->change(upper_before_lower => 1);
+
+ok($objEe->gt("dz", "Dz"));
+ok($objEe->gt("Dz", "DZ"));
+ok($objEe->gt("\x{256}", "\x{189}"));
+ok($objEe->gt("\x{25B}", "\x{190}"));
+ok($objEe->gt("\x{192}", "\x{191}"));
+ok($objEe->gt("gb", "Gb"));
+ok($objEe->gt("Gb", "GB"));
+ok($objEe->gt("\x{263}", "\x{194}"));
+ok($objEe->gt("x", "X"));
+ok($objEe->gt("kp", "Kp"));
+ok($objEe->gt("Kp", "KP"));
+ok($objEe->gt("ny", "Ny"));
+ok($objEe->gt("Ny", "NY"));
+ok($objEe->gt("\x{14B}", "\x{14A}"));
+ok($objEe->gt("\x{254}", "\x{186}"));
+ok($objEe->gt("ts", "Ts"));
+ok($objEe->gt("Ts", "TS"));
+ok($objEe->gt("\x{28B}", "\x{1B2}"));
+
+# 120

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_fa.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_fa.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_fa.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,155 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..90\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 $objFa = Unicode::Collate::Locale->
+    new(locale => 'FA', normalization => undef);
+
+ok($objFa->getlocale, 'fa');
+
+$objFa->change(level => 3);
+
+ok($objFa->eq("\x{622}", "\x{627}\x{653}"));
+ok($objFa->eq("\x{623}", "\x{627}\x{654}"));
+ok($objFa->eq("\x{625}", "\x{627}\x{655}"));
+ok($objFa->eq("\x{624}", "\x{648}\x{654}"));
+ok($objFa->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objFa->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objFa->eq("\x{6C0}", "\x{6D5}\x{654}"));
+ok($objFa->eq("\x{6D3}", "\x{6D2}\x{654}"));
+
+# 10
+
+ok($objFa->lt("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->lt("\x{649}\x{654}", "\x{626}"));
+
+$objFa->change(level => 2);
+
+ok($objFa->eq("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->eq("\x{649}\x{654}", "\x{626}"));
+
+# 14
+
+ok($objFa->lt("\x{64E}", "\x{650}"));
+ok($objFa->lt("\x{650}", "\x{64F}"));
+ok($objFa->lt("\x{64F}", "\x{64B}"));
+ok($objFa->lt("\x{64B}", "\x{64D}"));
+ok($objFa->lt("\x{64D}", "\x{64C}"));
+
+ok($objFa->lt("\x{627}", "\x{671}"));
+
+ok($objFa->lt("\x{621}", "\x{623}"));
+ok($objFa->lt("\x{623}", "\x{672}"));
+ok($objFa->lt("\x{672}", "\x{625}"));
+ok($objFa->lt("\x{625}", "\x{673}"));
+ok($objFa->lt("\x{673}", "\x{624}"));
+ok($objFa->lt("\x{624}", "\x{6CC}\x{654}"));
+
+ok($objFa->lt("\x{6A9}", "\x{6AA}"));
+ok($objFa->lt("\x{6AA}", "\x{6AB}"));
+ok($objFa->lt("\x{6AB}", "\x{643}"));
+ok($objFa->lt("\x{643}", "\x{6AC}"));
+ok($objFa->lt("\x{6AC}", "\x{6AD}"));
+ok($objFa->lt("\x{6AD}", "\x{6AE}"));
+
+ok($objFa->lt("\x{647}", "\x{6D5}"));
+ok($objFa->lt("\x{6D5}", "\x{6C1}"));
+ok($objFa->lt("\x{6C1}", "\x{629}"));
+ok($objFa->lt("\x{629}", "\x{6C3}"));
+ok($objFa->lt("\x{6C3}", "\x{6C0}"));
+ok($objFa->lt("\x{6C0}", "\x{6BE}"));
+
+ok($objFa->lt("\x{6CC}", "\x{649}"));
+ok($objFa->lt("\x{649}", "\x{6D2}"));
+ok($objFa->lt("\x{6D2}", "\x{64A}"));
+ok($objFa->lt("\x{64A}", "\x{6D0}"));
+ok($objFa->lt("\x{6D0}", "\x{6D1}"));
+ok($objFa->lt("\x{6D1}", "\x{6CD}"));
+ok($objFa->lt("\x{6CD}", "\x{6CE}"));
+
+# 45
+
+$objFa->change(level => 1);
+
+ok($objFa->eq("\x{64E}", "\x{650}"));
+ok($objFa->eq("\x{650}", "\x{64F}"));
+ok($objFa->eq("\x{64F}", "\x{64B}"));
+ok($objFa->eq("\x{64B}", "\x{64D}"));
+ok($objFa->eq("\x{64D}", "\x{64C}"));
+
+ok($objFa->eq("\x{627}", "\x{671}"));
+
+ok($objFa->eq("\x{621}", "\x{623}"));
+ok($objFa->eq("\x{623}", "\x{672}"));
+ok($objFa->eq("\x{672}", "\x{625}"));
+ok($objFa->eq("\x{625}", "\x{673}"));
+ok($objFa->eq("\x{673}", "\x{624}"));
+ok($objFa->eq("\x{624}", "\x{6CC}\x{654}"));
+
+ok($objFa->eq("\x{6A9}", "\x{6AA}"));
+ok($objFa->eq("\x{6AA}", "\x{6AB}"));
+ok($objFa->eq("\x{6AB}", "\x{643}"));
+ok($objFa->eq("\x{643}", "\x{6AC}"));
+ok($objFa->eq("\x{6AC}", "\x{6AD}"));
+ok($objFa->eq("\x{6AD}", "\x{6AE}"));
+
+ok($objFa->eq("\x{647}", "\x{6D5}"));
+ok($objFa->eq("\x{6D5}", "\x{6C1}"));
+ok($objFa->eq("\x{6C1}", "\x{629}"));
+ok($objFa->eq("\x{629}", "\x{6C3}"));
+ok($objFa->eq("\x{6C3}", "\x{6C0}"));
+ok($objFa->eq("\x{6C0}", "\x{6BE}"));
+
+ok($objFa->eq("\x{6CC}", "\x{649}"));
+ok($objFa->eq("\x{649}", "\x{6D2}"));
+ok($objFa->eq("\x{6D2}", "\x{64A}"));
+ok($objFa->eq("\x{64A}", "\x{6D0}"));
+ok($objFa->eq("\x{6D0}", "\x{6D1}"));
+ok($objFa->eq("\x{6D1}", "\x{6CD}"));
+ok($objFa->eq("\x{6CD}", "\x{6CE}"));
+
+# 76
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objFa->change(highestFFFF => 1) if $h;
+
+    ok($objFa->lt("\x{8AC}$t", "\x{622}"));
+    ok($objFa->lt("\x{622}$t", "\x{627}"));
+    ok($objFa->lt("\x{627}$t", "\x{621}"));
+    ok($objFa->lt("\x{621}$t", "\x{66E}"));
+    ok($objFa->lt("\x{66E}$t", "\x{628}"));
+
+    ok($objFa->lt("\x{6CF}$t", "\x{647}"));
+    ok($objFa->lt("\x{647}$t", "\x{778}"));
+}
+# 90

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_fiph.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_fiph.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_fiph.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,158 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..83\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 $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ae   = pack 'U', 0xE6;
+my $AE   = pack 'U', 0xC6;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+
+my $objFiPhone = Unicode::Collate::Locale->
+    new(locale => 'FI__phonebook', normalization => undef);
+
+ok($objFiPhone->getlocale, 'fi__phonebook');
+
+$objFiPhone->change(level => 1);
+
+ok($objFiPhone->lt('z', $arng));
+ok($objFiPhone->lt($arng, $auml));
+ok($objFiPhone->lt($auml, $ouml));
+ok($objFiPhone->lt($ouml, "\x{1C0}"));
+
+# 6
+
+ok($objFiPhone->lt('v', 'w'));
+ok($objFiPhone->gt('x', 'w'));
+
+ok($objFiPhone->eq("d\x{335}", "\x{111}"));
+ok($objFiPhone->eq("g\x{335}", "\x{1E5}"));
+ok($objFiPhone->eq("n\x{335}", "\x{14B}"));
+ok($objFiPhone->eq("t\x{335}", "\x{167}"));
+ok($objFiPhone->eq("z\x{335}", "\x{292}"));
+ok($objFiPhone->eq('y', $uuml));
+ok($objFiPhone->eq($auml, $ae));
+ok($objFiPhone->eq($ouml, $ostk));
+
+# 16
+
+$objFiPhone->change(level => 2);
+
+ok($objFiPhone->lt("d\x{335}", "\x{111}"));
+ok($objFiPhone->lt("g\x{335}", "\x{1E5}"));
+ok($objFiPhone->lt("n\x{335}", "\x{14B}"));
+ok($objFiPhone->lt("t\x{335}", "\x{167}"));
+ok($objFiPhone->lt("z\x{335}", "\x{292}"));
+ok($objFiPhone->lt('y', $uuml));
+ok($objFiPhone->lt($auml, $ae));
+ok($objFiPhone->lt($ouml, $ostk));
+
+# 24
+
+ok($objFiPhone->eq("\x{111}", "\x{110}"));
+ok($objFiPhone->eq("\x{1E5}", "\x{1E4}"));
+ok($objFiPhone->eq("\x{14B}", "\x{14A}"));
+ok($objFiPhone->eq("\x{167}", "\x{166}"));
+ok($objFiPhone->eq("\x{292}", "\x{1B7}"));
+ok($objFiPhone->eq('w',   'W'));
+ok($objFiPhone->eq($uuml, $Uuml));
+ok($objFiPhone->eq($arng, $Arng));
+ok($objFiPhone->eq($auml, $Auml));
+ok($objFiPhone->eq($ae,   $AE));
+ok($objFiPhone->eq($AE, "\x{1D2D}"));
+ok($objFiPhone->eq($ouml, $Ouml));
+ok($objFiPhone->eq($ostk, $Ostk));
+
+# 37
+
+$objFiPhone->change(level => 3);
+
+ok($objFiPhone->lt("\x{111}", "\x{110}"));
+ok($objFiPhone->lt("\x{1E5}", "\x{1E4}"));
+ok($objFiPhone->lt("\x{14B}", "\x{14A}"));
+ok($objFiPhone->lt("\x{167}", "\x{166}"));
+ok($objFiPhone->lt("\x{292}", "\x{1B7}"));
+ok($objFiPhone->lt('w',   'W'));
+ok($objFiPhone->lt($uuml, $Uuml));
+ok($objFiPhone->lt($arng, $Arng));
+ok($objFiPhone->lt($auml, $Auml));
+ok($objFiPhone->lt($ae,   $AE));
+ok($objFiPhone->lt($AE, "\x{1D2D}"));
+ok($objFiPhone->lt($ouml, $Ouml));
+ok($objFiPhone->lt($ostk, $Ostk));
+
+# 50
+
+ok($objFiPhone->eq("u\x{308}", $uuml));
+ok($objFiPhone->eq("U\x{308}", $Uuml));
+ok($objFiPhone->eq("\x{1EF}", "\x{292}\x{30C}"));
+ok($objFiPhone->eq("\x{1EE}", "\x{1B7}\x{30C}"));
+ok($objFiPhone->eq("a\x{30A}", $arng));
+ok($objFiPhone->eq("A\x{30A}", $Arng));
+ok($objFiPhone->eq("a\x{308}", $auml));
+ok($objFiPhone->eq("A\x{308}", $Auml));
+ok($objFiPhone->eq("o\x{308}", $ouml));
+ok($objFiPhone->eq("O\x{308}", $Ouml));
+ok($objFiPhone->eq("o\x{338}", $ostk));
+ok($objFiPhone->eq("O\x{338}", $Ostk));
+
+# 62
+
+ok($objFiPhone->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objFiPhone->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objFiPhone->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objFiPhone->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objFiPhone->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objFiPhone->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objFiPhone->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objFiPhone->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objFiPhone->eq("A\x{30A}", "\x{212B}"));
+ok($objFiPhone->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objFiPhone->eq("A\x{30A}\x{301}", "\x{1FA}"));
+ok($objFiPhone->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objFiPhone->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objFiPhone->eq("\x{1FD}", "$ae\x{301}"));
+ok($objFiPhone->eq("\x{1FC}", "$AE\x{301}"));
+ok($objFiPhone->eq("\x{1E3}", "$ae\x{304}"));
+ok($objFiPhone->eq("\x{1E2}", "$AE\x{304}"));
+ok($objFiPhone->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objFiPhone->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objFiPhone->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objFiPhone->eq("O\x{338}\x{301}", "\x{1FE}"));
+
+# 83

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_gu.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_gu.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_gu.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..10\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 $objGu = Unicode::Collate::Locale->
+    new(locale => 'GU', normalization => undef);
+
+ok($objGu->getlocale, 'gu');
+
+$objGu->change(level => 2);
+
+ok($objGu->lt("\x{A82}", "\x{A81}"));
+
+$objGu->change(level => 1);
+
+ok($objGu->eq("\x{A82}", "\x{A81}"));
+
+# 4
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objGu->change(highestFFFF => 1) if $h;
+
+    ok($objGu->lt("\x{AD0}$t", "\x{A82}"));
+    ok($objGu->lt("\x{A82}$t", "\x{A83}"));
+    ok($objGu->lt("\x{A83}$t", "\x{A85}"));
+}
+
+# 10

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_hi.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_hi.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_hi.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..10\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 $objHi = Unicode::Collate::Locale->
+    new(locale => 'HI', normalization => undef);
+
+ok($objHi->getlocale, 'hi');
+
+$objHi->change(level => 2);
+
+ok($objHi->lt("\x{902}", "\x{901}"));
+
+$objHi->change(level => 1);
+
+ok($objHi->eq("\x{902}", "\x{901}"));
+
+# 4
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objHi->change(highestFFFF => 1) if $h;
+
+    ok($objHi->lt("\x{950}$t", "\x{902}"));
+    ok($objHi->lt("\x{902}$t", "\x{903}"));
+    ok($objHi->lt("\x{903}$t", "\x{972}"));
+}
+
+# 10

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_kn.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_kn.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_kn.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,52 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..14\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 $objKn = Unicode::Collate::Locale->
+    new(locale => 'KN', normalization => undef);
+
+ok($objKn->getlocale, 'kn');
+
+$objKn->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objKn->change(highestFFFF => 1) if $h;
+
+    ok($objKn->lt("\x{C93}$t", "\x{C94}"));
+    ok($objKn->lt("\x{C94}$t", "\x{C82}"));
+    ok($objKn->lt("\x{C82}$t", "\x{C83}"));
+    ok($objKn->lt("\x{C83}$t", "\x{CF1}"));
+    ok($objKn->lt("\x{CF1}$t", "\x{CF2}"));
+    ok($objKn->lt("\x{CF2}$t", "\x{C95}"));
+}
+

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_kok.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_kok.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_kok.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..21\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 $objKok = Unicode::Collate::Locale->
+    new(locale => 'KOK', normalization => undef);
+
+ok($objKok->getlocale, 'kok');
+
+$objKok->change(level => 2);
+
+ok($objKok->lt("\x{902}", "\x{901}"));
+ok($objKok->lt("\x{933}", "\x{934}"));
+
+$objKok->change(level => 3);
+
+ok($objKok->eq("\x{933}\x{93C}", "\x{934}"));
+
+$objKok->change(level => 1);
+
+ok($objKok->eq("\x{902}", "\x{901}"));
+ok($objKok->eq("\x{933}", "\x{934}"));
+
+# 7
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objKok->change(highestFFFF => 1) if $h;
+
+    ok($objKok->lt("\x{950}$t", "\x{902}"));
+    ok($objKok->lt("\x{902}$t", "\x{903}"));
+    ok($objKok->lt("\x{903}$t", "\x{972}"));
+
+    ok($objKok->lt("\x{938}$t", "\x{939}"));
+    ok($objKok->lt("\x{939}$t", "\x{933}"));
+    ok($objKok->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+    ok($objKok->lt("\x{915}\x{94D}\x{937}$t", "\x{93D}"));
+}
+
+# 21

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_ln.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_ln.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_ln.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,79 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..23\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 $objLn = Unicode::Collate::Locale->
+    new(locale => 'LN', normalization => undef);
+
+ok($objLn->getlocale, 'ln');
+
+$objLn->change(level => 1);
+
+ok($objLn->gt("\x{25B}", "E"));
+ok($objLn->lt("\x{25B}", "F"));
+
+ok($objLn->eq("\x{254}", "O"));
+
+# 5
+
+$objLn->change(level => 2);
+
+ok($objLn->gt("\x{254}", "O"));
+
+ok($objLn->eq("\x{25B}", "\x{190}"));
+ok($objLn->eq("\x{254}", "\x{186}"));
+
+ok($objLn->eq("\x{25B}", "\x{2107}"));
+ok($objLn->eq("\x{25B}", "\x{1D4B}"));
+ok($objLn->eq("\x{254}", "\x{1D53}"));
+
+# 11
+
+$objLn->change(level => 3);
+
+ok($objLn->lt("\x{25B}", "\x{190}"));
+ok($objLn->lt("\x{25B}", "\x{2107}"));
+ok($objLn->lt("\x{254}", "\x{186}"));
+
+$objLn->change(upper_before_lower => 1);
+
+ok($objLn->gt("\x{25B}", "\x{190}"));
+ok($objLn->gt("\x{25B}", "\x{2107}"));
+ok($objLn->gt("\x{254}", "\x{186}"));
+
+for my $up_lo (0, 1) {
+  $objLn->change(upper_before_lower => $up_lo);
+  ok($objLn->lt("\x{190}", "\x{2107}"));
+  ok($objLn->lt("\x{25B}", "\x{1D4B}"));
+  ok($objLn->lt("\x{254}", "\x{1D53}"));
+}
+
+# 23

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_ml.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_ml.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_ml.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,94 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..36\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 $objMl = Unicode::Collate::Locale->
+    new(locale => 'ML', normalization => undef);
+
+ok($objMl->getlocale, 'ml');
+
+$objMl->change(level => 1);
+
+ok($objMl->lt("\x{D4B}", "\x{D57}"));
+
+# 3
+
+ok($objMl->eq("\x{D03}",        "\x{D3D}"));
+ok($objMl->eq("\x{D15}\x{D4D}", "\x{D15}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D23}\x{D4D}", "\x{D23}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D28}\x{D4D}", "\x{D28}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D30}\x{D4D}", "\x{D30}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D32}\x{D4D}", "\x{D32}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D33}\x{D4D}", "\x{D33}\x{D4D}\x{200D}"));
+ok($objMl->eq("\x{D2E}\x{D4D}", "\x{D02}"));
+
+# 11
+
+$objMl->change(level => 2);
+
+ok($objMl->lt("\x{D03}",        "\x{D3D}"));
+ok($objMl->lt("\x{D15}\x{D4D}", "\x{D15}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D23}\x{D4D}", "\x{D23}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D28}\x{D4D}", "\x{D28}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D30}\x{D4D}", "\x{D30}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D32}\x{D4D}", "\x{D32}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D33}\x{D4D}", "\x{D33}\x{D4D}\x{200D}"));
+ok($objMl->lt("\x{D2E}\x{D4D}", "\x{D02}"));
+
+# 19
+
+ok($objMl->eq("\x{D57}",                "\x{D4C}"));
+ok($objMl->eq("\x{D15}\x{D4D}\x{200D}", "\x{D7F}"));
+ok($objMl->eq("\x{D23}\x{D4D}\x{200D}", "\x{D7A}"));
+ok($objMl->eq("\x{D28}\x{D4D}\x{200D}", "\x{D7B}"));
+ok($objMl->eq("\x{D30}\x{D4D}\x{200D}", "\x{D7C}"));
+ok($objMl->eq("\x{D32}\x{D4D}\x{200D}", "\x{D7D}"));
+ok($objMl->eq("\x{D33}\x{D4D}\x{200D}", "\x{D7E}"));
+ok($objMl->eq("\x{D28}\x{D4D}",         "\x{D7B}\x{D4D}"));
+
+# 27
+
+$objMl->change(level => 3);
+
+ok($objMl->lt("\x{D57}",                "\x{D4C}"));
+ok($objMl->lt("\x{D15}\x{D4D}\x{200D}", "\x{D7F}"));
+ok($objMl->lt("\x{D23}\x{D4D}\x{200D}", "\x{D7A}"));
+ok($objMl->lt("\x{D28}\x{D4D}\x{200D}", "\x{D7B}"));
+ok($objMl->lt("\x{D30}\x{D4D}\x{200D}", "\x{D7C}"));
+ok($objMl->lt("\x{D32}\x{D4D}\x{200D}", "\x{D7D}"));
+ok($objMl->lt("\x{D33}\x{D4D}\x{200D}", "\x{D7E}"));
+ok($objMl->lt("\x{D28}\x{D4D}",         "\x{D7B}\x{D4D}"));
+
+# 35
+
+ok($objMl->eq("\x{D4C}", "\x{D46}\x{D57}"));
+
+# 36

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_mr.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_mr.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_mr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,70 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..23\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 $objMr = Unicode::Collate::Locale->
+    new(locale => 'MR', normalization => undef);
+
+ok($objMr->getlocale, 'mr');
+
+$objMr->change(level => 2);
+
+ok($objMr->lt("\x{902}", "\x{901}"));
+ok($objMr->lt("\x{933}", "\x{934}"));
+
+$objMr->change(level => 3);
+
+ok($objMr->eq("\x{933}\x{93C}", "\x{934}"));
+
+$objMr->change(level => 1);
+
+ok($objMr->eq("\x{902}", "\x{901}"));
+ok($objMr->eq("\x{933}", "\x{934}"));
+
+# 7
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objMr->change(highestFFFF => 1) if $h;
+
+    ok($objMr->lt("\x{950}$t", "\x{902}"));
+    ok($objMr->lt("\x{902}$t", "\x{903}"));
+    ok($objMr->lt("\x{903}$t", "\x{972}"));
+
+    ok($objMr->lt("\x{938}$t", "\x{939}"));
+    ok($objMr->lt("\x{939}$t", "\x{933}"));
+    ok($objMr->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+    ok($objMr->lt("\x{915}\x{94D}\x{937}$t", "\x{91C}\x{94D}\x{91E}"));
+    ok($objMr->lt("\x{91C}\x{94D}\x{91E}$t", "\x{93D}"));
+}
+
+# 23

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_or.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_or.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_or.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,64 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..20\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 $objOr = Unicode::Collate::Locale->
+    new(locale => 'OR', normalization => undef);
+
+ok($objOr->getlocale, 'or');
+
+$objOr->change(level => 2);
+
+ok($objOr->lt("\x{B2F}", "\x{B5F}"));
+
+$objOr->change(level => 1);
+
+ok($objOr->eq("\x{B2F}", "\x{B5F}"));
+
+# 4
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objOr->change(highestFFFF => 1) if $h;
+
+    ok($objOr->lt("\x{B13}$t", "\x{B14}"));
+    ok($objOr->lt("\x{B14}$t", "\x{B01}"));
+    ok($objOr->lt("\x{B01}$t", "\x{B02}"));
+    ok($objOr->lt("\x{B02}$t", "\x{B03}"));
+    ok($objOr->lt("\x{B03}$t", "\x{B15}"));
+
+    ok($objOr->lt("\x{B38}$t", "\x{B39}"));
+    ok($objOr->lt("\x{B39}$t", "\x{B15}\x{B4D}\x{B37}"));
+    ok($objOr->lt("\x{B15}\x{B4D}\x{B37}$t", "\x{B3D}"));
+}
+
+# 20

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_pa.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_pa.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_pa.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,96 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..41\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 $objPa = Unicode::Collate::Locale->
+    new(locale => 'PA', normalization => undef);
+
+my $default = Unicode::Collate::Locale->
+    new(normalization => undef);
+
+ok($objPa->getlocale, 'pa');
+ok($default->getlocale, 'default');
+
+$objPa->change(level => 1);
+
+ok($objPa->lt("\x{A5C}", "\x{A4D}"));
+ok($objPa->lt("\x{A4D}", "\x{A3E}"));
+
+# 5
+
+# RRA and Vowel Signs
+for my $o ($objPa, $default) {
+  ok($o->lt("\x{A5C}", "\x{A3E}"));
+  ok($o->lt("\x{A3E}", "\x{A3F}"));
+  ok($o->lt("\x{A3F}", "\x{A40}"));
+  ok($o->lt("\x{A40}", "\x{A41}"));
+  ok($o->lt("\x{A41}", "\x{A42}"));
+  ok($o->lt("\x{A42}", "\x{A47}"));
+  ok($o->lt("\x{A47}", "\x{A48}"));
+  ok($o->lt("\x{A48}", "\x{A4B}"));
+  ok($o->lt("\x{A4B}", "\x{A4C}"));
+}
+
+# 23
+
+ok($default->lt("\x{A4C}", "\x{A4D}"));
+
+# 24
+
+ok($objPa->eq("\x{A03}", ""));
+ok($objPa->eq("\x{A03}", "\x{A71}"));
+ok($objPa->eq("\x{A71}", "\x{A70}"));
+ok($objPa->eq("\x{A70}", "\x{A02}"));
+ok($objPa->eq("\x{A02}", "\x{A01}"));
+ok($objPa->eq("\x{A01}", "\x{A3C}"));
+
+# 30
+
+$objPa->change(level => 2);
+
+ok($objPa->lt("\x{A03}", "\x{A71}"));
+ok($objPa->lt("\x{A71}", "\x{A70}"));
+ok($objPa->lt("\x{A70}", "\x{A02}"));
+ok($objPa->lt("\x{A02}", "\x{A01}"));
+ok($objPa->lt("\x{A01}", "\x{A3C}"));
+
+# 35
+
+$objPa->change(level => 3);
+
+ok($objPa->eq("\x{A33}", "\x{A32}\x{A3C}"));
+ok($objPa->eq("\x{A36}", "\x{A38}\x{A3C}"));
+ok($objPa->eq("\x{A59}", "\x{A16}\x{A3C}"));
+ok($objPa->eq("\x{A5A}", "\x{A17}\x{A3C}"));
+ok($objPa->eq("\x{A5B}", "\x{A1C}\x{A3C}"));
+ok($objPa->eq("\x{A5E}", "\x{A2B}\x{A3C}"));
+
+# 41

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_sa.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_sa.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_sa.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,70 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..23\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 $objSa = Unicode::Collate::Locale->
+    new(locale => 'SA', normalization => undef);
+
+ok($objSa->getlocale, 'sa');
+
+$objSa->change(level => 2);
+
+ok($objSa->lt("\x{902}", "\x{901}"));
+ok($objSa->lt("\x{933}", "\x{934}"));
+
+$objSa->change(level => 3);
+
+ok($objSa->eq("\x{933}\x{93C}", "\x{934}"));
+
+$objSa->change(level => 1);
+
+ok($objSa->eq("\x{902}", "\x{901}"));
+ok($objSa->eq("\x{933}", "\x{934}"));
+
+# 7
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objSa->change(highestFFFF => 1) if $h;
+
+    ok($objSa->lt("\x{950}$t", "\x{902}"));
+    ok($objSa->lt("\x{902}$t", "\x{903}"));
+    ok($objSa->lt("\x{903}$t", "\x{972}"));
+
+    ok($objSa->lt("\x{938}$t", "\x{939}"));
+    ok($objSa->lt("\x{939}$t", "\x{933}"));
+    ok($objSa->lt("\x{933}$t", "\x{915}\x{94D}\x{937}"));
+    ok($objSa->lt("\x{915}\x{94D}\x{937}$t", "\x{91C}\x{94D}\x{91E}"));
+    ok($objSa->lt("\x{91C}\x{94D}\x{91E}$t", "\x{93D}"));
+}
+
+# 23

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_si.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_si.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_si.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..16\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 $objSi = Unicode::Collate::Locale->
+    new(locale => 'SI', normalization => undef);
+
+ok($objSi->getlocale, 'si');
+
+$objSi->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objSi->change(highestFFFF => 1) if $h;
+
+    ok($objSi->lt("\x{D95}$t", "\x{D96}"));
+    ok($objSi->lt("\x{D96}$t", "\x{D82}"));
+    ok($objSi->lt("\x{D82}$t", "\x{D83}"));
+    ok($objSi->lt("\x{D83}$t", "\x{D9A}"));
+
+    ok($objSi->lt("\x{DA3}$t", "\x{DA5}"));
+    ok($objSi->lt("\x{DA5}$t", "\x{DA4}"));
+    ok($objSi->lt("\x{DA4}$t", "\x{DA6}"));
+}
+

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_sidt.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_sidt.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_sidt.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,62 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..14\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 $objSiDict = Unicode::Collate::Locale->
+    new(locale => 'SI-dict', normalization => undef);
+
+ok($objSiDict->getlocale, 'si__dictionary');
+
+$objSiDict->change(level => 2);
+
+ok($objSiDict->gt("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+
+$objSiDict->change(level => 1);
+
+ok($objSiDict->eq("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+
+ok($objSiDict->lt("\x{DA2}", "\x{DA5}"));
+ok($objSiDict->lt("\x{DA5}", "\x{DA3}"));
+
+# 6
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objSiDict->change(highestFFFF => 1) if $h;
+
+    ok($objSiDict->lt("\x{D95}$t", "\x{D96}"));
+    ok($objSiDict->lt("\x{D96}$t", "\x{D82}"));
+    ok($objSiDict->lt("\x{D82}$t", "\x{D83}"));
+    ok($objSiDict->lt("\x{D83}$t", "\x{D9A}"));
+}
+
+# 14

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_srla.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_srla.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_srla.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,194 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..118\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 $objSrLatn = Unicode::Collate::Locale->
+    new(locale => 'SR-LATN', normalization => undef);
+
+ok($objSrLatn->getlocale, 'sr_Latn');
+
+$objSrLatn->change(level => 1);
+
+ok($objSrLatn->lt("c", "c\x{30C}"));
+ok($objSrLatn->lt("c\x{30C}", "c\x{301}"));
+ok($objSrLatn->gt("d", "c\x{301}"));
+ok($objSrLatn->lt("d", "dz\x{30C}"));
+ok($objSrLatn->lt("dzz", "dz\x{30C}"));
+ok($objSrLatn->lt("dz\x{30C}", "d\x{335}"));
+ok($objSrLatn->gt("e", "d\x{335}"));
+ok($objSrLatn->lt("l", "lj"));
+ok($objSrLatn->lt("lz","lj"));
+ok($objSrLatn->gt("m", "lj"));
+ok($objSrLatn->lt("n", "nj"));
+ok($objSrLatn->lt("nz","nj"));
+ok($objSrLatn->gt("o", "nj"));
+ok($objSrLatn->lt("s", "s\x{30C}"));
+ok($objSrLatn->lt("sz","s\x{30C}"));
+ok($objSrLatn->gt("t", "s\x{30C}"));
+ok($objSrLatn->lt("z", "z\x{30C}"));
+ok($objSrLatn->lt("zz","z\x{30C}"));
+ok($objSrLatn->lt("z\x{30C}", "\x{292}")); # U+0292 EZH
+
+# 21
+
+# not tailored
+ok($objSrLatn->lt("dZ\x{30C}","dz\x{30C}"));
+ok($objSrLatn->lt("lJ", "lj"));
+ok($objSrLatn->lt("nJ", "nj"));
+
+# 24
+
+$objSrLatn->change(level => 2);
+
+ok($objSrLatn->eq("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->eq("c\x{301}", "C\x{301}"));
+ok($objSrLatn->eq("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->eq("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->eq("d\x{335}", "D\x{335}"));
+ok($objSrLatn->eq("lj", "Lj"));
+ok($objSrLatn->eq("Lj", "LJ"));
+ok($objSrLatn->eq("nj", "Nj"));
+ok($objSrLatn->eq("Nj", "NJ"));
+ok($objSrLatn->eq("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->eq("z\x{30C}", "Z\x{30C}"));
+
+# 35
+
+ok($objSrLatn->eq("dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->eq("Dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->eq("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->eq("DZ\x{30C}", "\x{1C5}"));
+ok($objSrLatn->eq("DZ\x{30C}", "\x{1C4}"));
+
+ok($objSrLatn->eq("lj", "\x{1C9}"));
+ok($objSrLatn->eq("Lj", "\x{1C9}"));
+ok($objSrLatn->eq("Lj", "\x{1C8}"));
+ok($objSrLatn->eq("LJ", "\x{1C8}"));
+ok($objSrLatn->eq("LJ", "\x{1C7}"));
+
+ok($objSrLatn->eq("nj", "\x{1CC}"));
+ok($objSrLatn->eq("Nj", "\x{1CC}"));
+ok($objSrLatn->eq("Nj", "\x{1CB}"));
+ok($objSrLatn->eq("NJ", "\x{1CB}"));
+ok($objSrLatn->eq("NJ", "\x{1CA}"));
+
+# 50
+
+$objSrLatn->change(level => 3);
+
+ok($objSrLatn->lt("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->lt("c\x{301}", "C\x{301}"));
+ok($objSrLatn->lt("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->lt("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->lt("d\x{335}", "D\x{335}"));
+ok($objSrLatn->lt("lj", "Lj"));
+ok($objSrLatn->lt("Lj", "LJ"));
+ok($objSrLatn->lt("nj", "Nj"));
+ok($objSrLatn->lt("Nj", "NJ"));
+ok($objSrLatn->lt("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->lt("z\x{30C}", "Z\x{30C}"));
+
+# 61
+
+ok($objSrLatn->lt("dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->gt("Dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->gt("DZ\x{30C}", "\x{1C5}"));
+ok($objSrLatn->lt("DZ\x{30C}", "\x{1C4}"));
+
+ok($objSrLatn->lt("lj", "\x{1C9}"));
+ok($objSrLatn->gt("Lj", "\x{1C9}"));
+ok($objSrLatn->lt("Lj", "\x{1C8}"));
+ok($objSrLatn->gt("LJ", "\x{1C8}"));
+ok($objSrLatn->lt("LJ", "\x{1C7}"));
+
+ok($objSrLatn->lt("nj", "\x{1CC}"));
+ok($objSrLatn->gt("Nj", "\x{1CC}"));
+ok($objSrLatn->lt("Nj", "\x{1CB}"));
+ok($objSrLatn->gt("NJ", "\x{1CB}"));
+ok($objSrLatn->lt("NJ", "\x{1CA}"));
+
+# 76
+
+ok($objSrLatn->eq("c\x{30C}", "\x{10D}"));
+ok($objSrLatn->eq("C\x{30C}", "\x{10C}"));
+ok($objSrLatn->eq("c\x{301}", "\x{107}"));
+ok($objSrLatn->eq("c\x{341}", "\x{107}"));
+ok($objSrLatn->eq("C\x{301}", "\x{106}"));
+ok($objSrLatn->eq("C\x{341}", "\x{106}"));
+ok($objSrLatn->eq("dz\x{30C}", "d\x{17E}"));
+ok($objSrLatn->eq("dZ\x{30C}", "d\x{17D}"));
+ok($objSrLatn->eq("Dz\x{30C}", "D\x{17E}"));
+ok($objSrLatn->eq("DZ\x{30C}", "D\x{17D}"));
+ok($objSrLatn->eq("d\x{335}", "\x{111}"));
+ok($objSrLatn->eq("D\x{335}", "\x{110}"));
+ok($objSrLatn->eq("s\x{30C}", "\x{161}"));
+ok($objSrLatn->eq("S\x{30C}", "\x{160}"));
+ok($objSrLatn->eq("z\x{30C}", "\x{17E}"));
+ok($objSrLatn->eq("Z\x{30C}", "\x{17D}"));
+
+# 92
+
+$objSrLatn->change(upper_before_lower => 1);
+
+ok($objSrLatn->gt("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->gt("c\x{301}", "C\x{301}"));
+ok($objSrLatn->gt("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->gt("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->gt("d\x{335}", "D\x{335}"));
+ok($objSrLatn->gt("lj", "Lj"));
+ok($objSrLatn->gt("Lj", "LJ"));
+ok($objSrLatn->gt("nj", "Nj"));
+ok($objSrLatn->gt("Nj", "NJ"));
+ok($objSrLatn->gt("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->gt("z\x{30C}", "Z\x{30C}"));
+
+# 103
+
+ok($objSrLatn->lt("DZ\x{30C}", "\x{1C4}"));
+ok($objSrLatn->gt("Dz\x{30C}", "\x{1C4}"));
+ok($objSrLatn->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->gt("dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->lt("dz\x{30C}", "\x{1C6}"));
+
+ok($objSrLatn->lt("LJ", "\x{1C7}"));
+ok($objSrLatn->gt("Lj", "\x{1C7}"));
+ok($objSrLatn->lt("Lj", "\x{1C8}"));
+ok($objSrLatn->gt("lj", "\x{1C8}"));
+ok($objSrLatn->lt("lj", "\x{1C9}"));
+
+ok($objSrLatn->lt("NJ", "\x{1CA}"));
+ok($objSrLatn->gt("Nj", "\x{1CA}"));
+ok($objSrLatn->lt("Nj", "\x{1CB}"));
+ok($objSrLatn->gt("nj", "\x{1CB}"));
+ok($objSrLatn->lt("nj", "\x{1CC}"));
+
+# 118

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_svrf.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_svrf.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_svrf.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,201 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..115\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 $eth  = pack 'U', 0xF0;
+my $ETH  = pack 'U', 0xD0;
+my $thrn = pack 'U', 0xFE;
+my $THRN = pack 'U', 0xDE;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ae   = pack 'U', 0xE6;
+my $AE   = pack 'U', 0xC6;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $ocrc = pack 'U', 0xF4;
+my $Ocrc = pack 'U', 0xD4;
+
+my $objSvReform = Unicode::Collate::Locale->
+    new(locale => 'SV-reform', normalization => undef);
+
+ok($objSvReform->getlocale, 'sv__reformed');
+
+$objSvReform->change(level => 1);
+
+ok($objSvReform->lt('z', $arng));
+ok($objSvReform->lt($arng, $auml));
+ok($objSvReform->lt($auml, $ouml));
+ok($objSvReform->lt($ouml, "\x{1C0}"));
+
+# 6
+
+ok($objSvReform->lt('v', 'w'));
+ok($objSvReform->gt('x', 'w'));
+
+ok($objSvReform->eq('d', "\x{111}"));
+ok($objSvReform->eq("\x{111}", $eth));
+ok($objSvReform->eq('y', $uuml));
+ok($objSvReform->eq($uuml, "\x{171}"));
+
+ok($objSvReform->eq($auml, $ae));
+ok($objSvReform->eq($ae, "\x{119}"));
+ok($objSvReform->eq($ouml, $ostk));
+ok($objSvReform->eq($ostk, "\x{151}"));
+ok($objSvReform->eq("\x{151}", "\x{153}"));
+ok($objSvReform->eq("\x{153}", $ocrc));
+
+# 18
+
+$objSvReform->change(level => 2);
+
+ok($objSvReform->lt('d', "\x{111}"));
+ok($objSvReform->lt("\x{111}", $eth));
+ok($objSvReform->lt('y', $uuml));
+ok($objSvReform->lt($uuml, "\x{171}"));
+
+ok($objSvReform->lt($auml, $ae));
+ok($objSvReform->lt($ae, "\x{119}"));
+ok($objSvReform->lt($ouml, $ostk));
+ok($objSvReform->lt($ostk, "\x{151}"));
+ok($objSvReform->lt("\x{151}", "\x{153}"));
+ok($objSvReform->lt("\x{153}", $ocrc));
+
+# 28
+
+ok($objSvReform->eq("\x{111}", "\x{110}"));
+ok($objSvReform->eq($eth,  $ETH));
+ok($objSvReform->eq('th',  $thrn));
+ok($objSvReform->eq($thrn, 'TH'));
+ok($objSvReform->eq('TH',  $THRN));
+ok($objSvReform->eq('w',   'W'));
+ok($objSvReform->eq($uuml, $Uuml));
+ok($objSvReform->eq("\x{171}", "\x{170}"));
+ok($objSvReform->eq($arng, $Arng));
+ok($objSvReform->eq($auml, $Auml));
+ok($objSvReform->eq($ae,   $AE));
+ok($objSvReform->eq($AE, "\x{1D2D}"));
+ok($objSvReform->eq("\x{119}", "\x{118}"));
+ok($objSvReform->eq($ouml, $Ouml));
+ok($objSvReform->eq($ostk, $Ostk));
+ok($objSvReform->eq("\x{151}", "\x{150}"));
+ok($objSvReform->eq("\x{153}", "\x{152}"));
+ok($objSvReform->eq($ocrc, $Ocrc));
+
+# 46
+
+$objSvReform->change(level => 3);
+
+ok($objSvReform->lt("\x{111}", "\x{110}"));
+ok($objSvReform->lt($eth,  $ETH));
+ok($objSvReform->lt('th',  $thrn));
+ok($objSvReform->lt($thrn, 'TH'));
+ok($objSvReform->lt('TH',  $THRN));
+ok($objSvReform->lt('w',   'W'));
+ok($objSvReform->lt($uuml, $Uuml));
+ok($objSvReform->lt("\x{171}", "\x{170}"));
+ok($objSvReform->lt($arng, $Arng));
+ok($objSvReform->lt($auml, $Auml));
+ok($objSvReform->lt($ae,   $AE));
+ok($objSvReform->lt($AE, "\x{1D2D}"));
+ok($objSvReform->lt("\x{119}", "\x{118}"));
+ok($objSvReform->lt($ouml, $Ouml));
+ok($objSvReform->lt($ostk, $Ostk));
+ok($objSvReform->lt("\x{151}", "\x{150}"));
+ok($objSvReform->lt("\x{153}", "\x{152}"));
+ok($objSvReform->lt($ocrc, $Ocrc));
+
+# 64
+
+ok($objSvReform->eq("d\x{335}", "\x{111}"));
+ok($objSvReform->eq("D\x{335}", "\x{110}"));
+ok($objSvReform->eq("u\x{308}", $uuml));
+ok($objSvReform->eq("U\x{308}", $Uuml));
+ok($objSvReform->eq("u\x{30B}", "\x{171}"));
+ok($objSvReform->eq("U\x{30B}", "\x{170}"));
+ok($objSvReform->eq("a\x{30A}", $arng));
+ok($objSvReform->eq("A\x{30A}", $Arng));
+ok($objSvReform->eq("a\x{308}", $auml));
+ok($objSvReform->eq("A\x{308}", $Auml));
+ok($objSvReform->eq("e\x{328}", "\x{119}"));
+ok($objSvReform->eq("E\x{328}", "\x{118}"));
+ok($objSvReform->eq("o\x{308}", $ouml));
+ok($objSvReform->eq("O\x{308}", $Ouml));
+ok($objSvReform->eq("o\x{338}", $ostk));
+ok($objSvReform->eq("O\x{338}", $Ostk));
+ok($objSvReform->eq("o\x{30B}", "\x{151}"));
+ok($objSvReform->eq("O\x{30B}", "\x{150}"));
+ok($objSvReform->eq("o\x{302}", $ocrc));
+ok($objSvReform->eq("O\x{302}", $Ocrc));
+
+# 84
+
+ok($objSvReform->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objSvReform->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objSvReform->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objSvReform->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objSvReform->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objSvReform->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objSvReform->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objSvReform->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objSvReform->eq("A\x{30A}", "\x{212B}"));
+ok($objSvReform->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objSvReform->eq("A\x{30A}\x{301}", "\x{1FA}"));
+ok($objSvReform->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objSvReform->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objSvReform->eq("\x{1FD}", "$ae\x{301}"));
+ok($objSvReform->eq("\x{1FC}", "$AE\x{301}"));
+ok($objSvReform->eq("\x{1E3}", "$ae\x{304}"));
+ok($objSvReform->eq("\x{1E2}", "$AE\x{304}"));
+ok($objSvReform->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objSvReform->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objSvReform->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objSvReform->eq("O\x{338}\x{301}", "\x{1FE}"));
+
+# 105
+
+ok($objSvReform->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSvReform->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSvReform->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSvReform->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSvReform->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSvReform->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSvReform->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objSvReform->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objSvReform->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objSvReform->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 115

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_ta.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_ta.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_ta.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,99 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..104\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 $Kssa = "\x{B95}\x{BCD}\x{BB7}";
+my $v    = "\x{BCD}";
+
+my $objTa = Unicode::Collate::Locale->
+    new(locale => 'TA', normalization => undef);
+
+ok($objTa->getlocale, 'ta');
+
+$objTa->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objTa->change(highestFFFF => 1) if $h;
+
+    ok($objTa->lt("\x{B94}$t",   "\x{B82}"));
+    ok($objTa->lt("\x{B82}$t",   "\x{B83}"));
+    ok($objTa->lt("\x{B83}$t",   "\x{B95}$v"));
+    ok($objTa->lt("\x{B95}$v$t", "\x{B95}"));
+    ok($objTa->lt("\x{B95}$t",   "\x{B99}$v"));
+    ok($objTa->lt("\x{B99}$v$t", "\x{B99}"));
+    ok($objTa->lt("\x{B99}$t",   "\x{B9A}$v"));
+    ok($objTa->lt("\x{B9A}$v$t", "\x{B9A}"));
+    ok($objTa->lt("\x{B9A}$t",   "\x{B9E}$v"));
+    ok($objTa->lt("\x{B9E}$v$t", "\x{B9E}"));
+    ok($objTa->lt("\x{B9E}$t",   "\x{B9F}$v"));
+    ok($objTa->lt("\x{B9F}$v$t", "\x{B9F}"));
+    ok($objTa->lt("\x{B9F}$t",   "\x{BA3}$v"));
+    ok($objTa->lt("\x{BA3}$v$t", "\x{BA3}"));
+    ok($objTa->lt("\x{BA3}$t",   "\x{BA4}$v"));
+    ok($objTa->lt("\x{BA4}$v$t", "\x{BA4}"));
+    ok($objTa->lt("\x{BA4}$t",   "\x{BA8}$v"));
+    ok($objTa->lt("\x{BA8}$v$t", "\x{BA8}"));
+    ok($objTa->lt("\x{BA8}$t",   "\x{BAA}$v"));
+    ok($objTa->lt("\x{BAA}$v$t", "\x{BAA}"));
+    ok($objTa->lt("\x{BAA}$t",   "\x{BAE}$v"));
+    ok($objTa->lt("\x{BAE}$v$t", "\x{BAE}"));
+    ok($objTa->lt("\x{BAE}$t",   "\x{BAF}$v"));
+    ok($objTa->lt("\x{BAF}$v$t", "\x{BAF}"));
+    ok($objTa->lt("\x{BAF}$t",   "\x{BB0}$v"));
+    ok($objTa->lt("\x{BB0}$v$t", "\x{BB0}"));
+    ok($objTa->lt("\x{BB0}$t",   "\x{BB2}$v"));
+    ok($objTa->lt("\x{BB2}$v$t", "\x{BB2}"));
+    ok($objTa->lt("\x{BB2}$t",   "\x{BB5}$v"));
+    ok($objTa->lt("\x{BB5}$v$t", "\x{BB5}"));
+    ok($objTa->lt("\x{BB5}$t",   "\x{BB4}$v"));
+    ok($objTa->lt("\x{BB4}$v$t", "\x{BB4}"));
+    ok($objTa->lt("\x{BB4}$t",   "\x{BB3}$v"));
+    ok($objTa->lt("\x{BB3}$v$t", "\x{BB3}"));
+    ok($objTa->lt("\x{BB3}$t",   "\x{BB1}$v"));
+    ok($objTa->lt("\x{BB1}$v$t", "\x{BB1}"));
+    ok($objTa->lt("\x{BB1}$t",   "\x{BA9}$v"));
+    ok($objTa->lt("\x{BA9}$v$t", "\x{BA9}"));
+    ok($objTa->lt("\x{BA9}$t",   "\x{B9C}$v"));
+    ok($objTa->lt("\x{B9C}$v$t", "\x{B9C}"));
+    ok($objTa->lt("\x{B9C}$t",   "\x{BB6}$v"));
+    ok($objTa->lt("\x{BB6}$v$t", "\x{BB6}"));
+    ok($objTa->lt("\x{BB6}$t",   "\x{BB7}$v"));
+    ok($objTa->lt("\x{BB7}$v$t", "\x{BB7}"));
+    ok($objTa->lt("\x{BB7}$t",   "\x{BB8}$v"));
+    ok($objTa->lt("\x{BB8}$v$t", "\x{BB8}"));
+    ok($objTa->lt("\x{BB8}$t",   "\x{BB9}$v"));
+    ok($objTa->lt("\x{BB9}$v$t", "\x{BB9}"));
+    ok($objTa->lt("\x{BB9}$t",   "${Kssa}$v"));
+    ok($objTa->lt("${Kssa}$v$t", "${Kssa}"));
+    ok($objTa->lt("${Kssa}$t",   "\x{BBE}"));
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_te.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_te.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_te.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..12\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 $objTe = Unicode::Collate::Locale->
+    new(locale => 'TE', normalization => undef);
+
+ok($objTe->getlocale, 'te');
+
+$objTe->change(level => 1);
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objTe->change(highestFFFF => 1) if $h;
+
+    ok($objTe->lt("\x{C13}$t", "\x{C14}"));
+    ok($objTe->lt("\x{C14}$t", "\x{C01}"));
+    ok($objTe->lt("\x{C01}$t", "\x{C02}"));
+    ok($objTe->lt("\x{C02}$t", "\x{C03}"));
+    ok($objTe->lt("\x{C03}$t", "\x{C15}"));
+}

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_th.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_th.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_th.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,131 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..55\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 $objTh = Unicode::Collate::Locale->
+    new(locale => 'TH', normalization => undef);
+
+
+ok($objTh->getlocale, 'th');
+
+$objTh->change(level => 1);
+
+# shifted
+
+ok($objTh->eq("\x{E2F}", ""));
+ok($objTh->eq("\x{E46}", ""));
+ok($objTh->eq("\x{E4F}", ""));
+ok($objTh->eq("\x{E5A}", ""));
+ok($objTh->eq("\x{E5B}", ""));
+
+# 7
+
+ok($objTh->lt("\x{E2E}", "\x{E4D}"));
+ok($objTh->lt("\x{E4D}", "\x{E30}"));
+
+ok($objTh->lt("\x{E44}", "\x{E3A}"));
+
+# 10
+
+ok($objTh->eq("\x{E4E}", ""));
+ok($objTh->eq("\x{E4C}", ""));
+ok($objTh->eq("\x{E47}", ""));
+ok($objTh->eq("\x{E48}", ""));
+ok($objTh->eq("\x{E49}", ""));
+ok($objTh->eq("\x{E4A}", ""));
+ok($objTh->eq("\x{E4B}", ""));
+
+# 17
+
+$objTh->change(level => 2);
+
+ok($objTh->lt("\x{E4E}", "\x{E4C}"));
+ok($objTh->lt("\x{E4C}", "\x{E47}"));
+ok($objTh->lt("\x{E47}", "\x{E48}"));
+ok($objTh->lt("\x{E48}", "\x{E49}"));
+ok($objTh->lt("\x{E49}", "\x{E4A}"));
+ok($objTh->lt("\x{E4A}", "\x{E4B}"));
+
+ok($objTh->eq("\x{E32}", "\x{E45}"));
+ok($objTh->eq("\x{E32}\x{E4D}", "\x{E4D}\x{E32}"));
+ok($objTh->eq("\x{E4D}\x{E32}", "\x{E33}"));
+ok($objTh->eq("\x{E4D}\x{E45}", "\x{E45}\x{E4D}"));
+
+# 27
+
+$objTh->change(level => 3);
+
+ok($objTh->lt("\x{E32}", "\x{E45}"));
+ok($objTh->lt("\x{E32}\x{E4D}", "\x{E4D}\x{E32}"));
+ok($objTh->lt("\x{E4D}\x{E32}", "\x{E33}"));
+ok($objTh->lt("\x{E4D}\x{E45}", "\x{E45}\x{E4D}"));
+
+ok($objTh->eq("\x{E4F}", "\x{E2F}"));
+ok($objTh->eq("\x{E2F}", "\x{E5A}"));
+ok($objTh->eq("\x{E5A}", "\x{E5B}"));
+ok($objTh->eq("\x{E5B}", "\x{E46}"));
+
+# 35
+
+$objTh->change(level => 4);
+
+for my $t ("", "\x{E01}") {
+    ok($objTh->lt("\x{E4F}$t", "\x{E2F}$t"));
+    ok($objTh->lt("\x{E2F}$t", "\x{E5A}$t"));
+    ok($objTh->lt("\x{E5A}$t", "\x{E5B}$t"));
+    ok($objTh->lt("\x{E5B}$t", "\x{E46}$t"));
+}
+
+# 43
+
+$objTh->change(level => 1);
+
+ok($objTh->eq("\x{E4F}", "\x{E2F}"));
+ok($objTh->eq("\x{E2F}", "\x{E5A}"));
+ok($objTh->eq("\x{E5A}", "\x{E5B}"));
+ok($objTh->eq("\x{E5B}", "\x{E46}"));
+
+# 47
+
+$objTh->change(variable => "non-ignorable");
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objTh->change(highestFFFF => 1) if $h;
+
+    ok($objTh->lt("\x{E4F}$t", "\x{E2F}"));
+    ok($objTh->lt("\x{E2F}$t", "\x{E5A}"));
+    ok($objTh->lt("\x{E5A}$t", "\x{E5B}"));
+    ok($objTh->lt("\x{E5B}$t", "\x{E46}"));
+}
+
+# 55

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_ur.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_ur.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_ur.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,171 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..166\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 $objUr = Unicode::Collate::Locale->
+    new(locale => 'UR', normalization => undef);
+
+ok($objUr->getlocale, 'ur');
+
+$objUr->change(level => 3);
+
+ok($objUr->eq("\x{623}", "\x{627}\x{654}"));
+ok($objUr->eq("\x{622}", "\x{627}\x{653}"));
+ok($objUr->eq("\x{624}", "\x{648}\x{654}"));
+ok($objUr->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objUr->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objUr->eq("\x{6D3}", "\x{6D2}\x{654}"));
+
+# 8
+
+$objUr->change(level => 2);
+
+ok($objUr->lt("\x{627}", "\x{623}"));
+ok($objUr->lt("\x{648}", "\x{624}"));
+ok($objUr->lt("\x{6C1}", "\x{6C2}"));
+ok($objUr->lt("\x{6CC}", "\x{626}"));
+ok($objUr->lt("\x{6D2}", "\x{6D3}"));
+
+# 13
+
+ok($objUr->lt("\x{652}", "\x{64E}"));
+ok($objUr->lt("\x{64E}", "\x{650}"));
+ok($objUr->lt("\x{650}", "\x{64F}"));
+ok($objUr->lt("\x{64F}", "\x{670}"));
+ok($objUr->lt("\x{670}", "\x{656}"));
+ok($objUr->lt("\x{656}", "\x{657}"));
+ok($objUr->lt("\x{657}", "\x{64B}"));
+ok($objUr->lt("\x{64B}", "\x{64D}"));
+ok($objUr->lt("\x{64D}", "\x{64C}"));
+ok($objUr->lt("\x{64C}", "\x{654}"));
+ok($objUr->lt("\x{654}", "\x{651}"));
+ok($objUr->lt("\x{651}", "\x{658}"));
+ok($objUr->lt("\x{658}", "\x{653}"));
+ok($objUr->lt("\x{653}", "\x{655}"));
+
+# 27
+
+$objUr->change(level => 1);
+
+ok($objUr->eq("\x{627}", "\x{623}"));
+ok($objUr->eq("\x{648}", "\x{624}"));
+ok($objUr->eq("\x{6C1}", "\x{6C2}"));
+ok($objUr->eq("\x{6CC}", "\x{626}"));
+ok($objUr->eq("\x{6D2}", "\x{6D3}"));
+
+# 32
+
+ok($objUr->eq("\x{652}", "\x{64E}"));
+ok($objUr->eq("\x{64E}", "\x{650}"));
+ok($objUr->eq("\x{650}", "\x{64F}"));
+ok($objUr->eq("\x{64F}", "\x{670}"));
+ok($objUr->eq("\x{670}", "\x{656}"));
+ok($objUr->eq("\x{656}", "\x{657}"));
+ok($objUr->eq("\x{657}", "\x{64B}"));
+ok($objUr->eq("\x{64B}", "\x{64D}"));
+ok($objUr->eq("\x{64D}", "\x{64C}"));
+ok($objUr->eq("\x{64C}", "\x{654}"));
+ok($objUr->eq("\x{654}", "\x{651}"));
+ok($objUr->eq("\x{651}", "\x{658}"));
+ok($objUr->eq("\x{658}", "\x{653}"));
+ok($objUr->eq("\x{653}", "\x{655}"));
+
+# 46
+
+for my $h (0, 1) {
+    no warnings 'utf8';
+    my $t = $h ? pack('U', 0xFFFF) : "";
+    $objUr->change(highestFFFF => 1) if $h;
+
+    ok($objUr->lt("\x{627}$t",        "\x{622}"));
+    ok($objUr->lt("\x{622}$t",        "\x{628}"));
+    ok($objUr->lt("\x{628}$t",        "\x{628}\x{6BE}"));
+    ok($objUr->lt("\x{628}\x{6BE}$t", "\x{67E}"));
+    ok($objUr->lt("\x{67E}$t",        "\x{67E}\x{6BE}"));
+    ok($objUr->lt("\x{67E}\x{6BE}$t", "\x{62A}"));
+    ok($objUr->lt("\x{62A}$t",        "\x{62A}\x{6BE}"));
+    ok($objUr->lt("\x{62A}\x{6BE}$t", "\x{679}"));
+    ok($objUr->lt("\x{679}$t",        "\x{679}\x{6BE}"));
+    ok($objUr->lt("\x{679}\x{6BE}$t", "\x{62B}"));
+    ok($objUr->lt("\x{62B}$t",        "\x{62C}"));
+    ok($objUr->lt("\x{62C}$t",        "\x{62C}\x{6BE}"));
+    ok($objUr->lt("\x{62C}\x{6BE}$t", "\x{686}"));
+    ok($objUr->lt("\x{686}$t",        "\x{686}\x{6BE}"));
+    ok($objUr->lt("\x{686}\x{6BE}$t", "\x{62D}"));
+    ok($objUr->lt("\x{62D}$t",        "\x{62E}"));
+    ok($objUr->lt("\x{62E}$t",        "\x{62F}"));
+    ok($objUr->lt("\x{62F}$t",        "\x{62F}\x{6BE}"));
+    ok($objUr->lt("\x{62F}\x{6BE}$t", "\x{688}"));
+    ok($objUr->lt("\x{688}$t",        "\x{688}\x{6BE}"));
+    ok($objUr->lt("\x{688}\x{6BE}$t", "\x{630}"));
+    ok($objUr->lt("\x{630}$t",        "\x{631}"));
+    ok($objUr->lt("\x{631}$t",        "\x{631}\x{6BE}"));
+    ok($objUr->lt("\x{631}\x{6BE}$t", "\x{691}"));
+    ok($objUr->lt("\x{691}$t",        "\x{691}\x{6BE}"));
+    ok($objUr->lt("\x{691}\x{6BE}$t", "\x{632}"));
+    ok($objUr->lt("\x{632}$t",        "\x{698}"));
+    ok($objUr->lt("\x{698}$t",        "\x{633}"));
+    ok($objUr->lt("\x{633}$t",        "\x{634}"));
+    ok($objUr->lt("\x{634}$t",        "\x{635}"));
+    ok($objUr->lt("\x{635}$t",        "\x{636}"));
+    ok($objUr->lt("\x{636}$t",        "\x{637}"));
+    ok($objUr->lt("\x{637}$t",        "\x{638}"));
+    ok($objUr->lt("\x{638}$t",        "\x{639}"));
+    ok($objUr->lt("\x{639}$t",        "\x{63A}"));
+    ok($objUr->lt("\x{63A}$t",        "\x{641}"));
+    ok($objUr->lt("\x{641}$t",        "\x{642}"));
+    ok($objUr->lt("\x{642}$t",        "\x{6A9}"));
+    ok($objUr->lt("\x{6A9}$t",        "\x{6A9}\x{6BE}"));
+    ok($objUr->lt("\x{6A9}\x{6BE}$t", "\x{6AF}"));
+    ok($objUr->lt("\x{6AF}$t",        "\x{6AF}\x{6BE}"));
+    ok($objUr->lt("\x{6AF}\x{6BE}$t", "\x{644}"));
+    ok($objUr->lt("\x{644}$t",        "\x{644}\x{6BE}"));
+    ok($objUr->lt("\x{644}\x{6BE}$t", "\x{645}"));
+    ok($objUr->lt("\x{645}$t",        "\x{645}\x{6BE}"));
+    ok($objUr->lt("\x{645}\x{6BE}$t", "\x{646}"));
+    ok($objUr->lt("\x{646}$t",        "\x{646}\x{6BE}"));
+    ok($objUr->lt("\x{646}\x{6BE}$t", "\x{6BA}"));
+    ok($objUr->lt("\x{6BA}$t",        "\x{6BA}\x{6BE}"));
+    ok($objUr->lt("\x{6BA}\x{6BE}$t", "\x{648}"));
+    ok($objUr->lt("\x{648}$t",        "\x{648}\x{6BE}"));
+    ok($objUr->lt("\x{648}\x{6BE}$t", "\x{6C1}"));
+    ok($objUr->lt("\x{6C1}$t",        "\x{6BE}"));
+    ok($objUr->lt("\x{6BE}$t",        "\x{6C3}"));
+    ok($objUr->lt("\x{6C3}$t",        "\x{621}"));
+    ok($objUr->lt("\x{621}$t",        "\x{6CC}"));
+    ok($objUr->lt("\x{6CC}$t",        "\x{6CC}\x{6BE}"));
+    ok($objUr->lt("\x{6CC}\x{6BE}$t", "\x{6D2}"));
+    ok($objUr->lt("\x{6D2}$t",        "\x{66E}"));
+    ok($objUr->lt("\x{66E}$t",        "\x{67B}"));
+}
+
+# 166
+

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_wae.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_wae.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_wae.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,146 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..78\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 $objWae = Unicode::Collate::Locale->
+    new(locale => 'WAE', normalization => undef);
+
+ok($objWae->getlocale, 'wae');
+
+$objWae->change(level => 1);
+
+ok($objWae->lt("aa", "a9"));
+ok($objWae->gt("aA", "a9"));
+ok($objWae->gt("Aa", "a9"));
+ok($objWae->gt("AA", "a9"));
+ok($objWae->lt("ee", "e9"));
+ok($objWae->gt("eE", "e9"));
+ok($objWae->gt("Ee", "e9"));
+ok($objWae->gt("EE", "e9"));
+ok($objWae->lt("ii", "i9"));
+ok($objWae->gt("iI", "i9"));
+ok($objWae->gt("Ii", "i9"));
+ok($objWae->gt("II", "i9"));
+ok($objWae->lt("oo", "o9"));
+ok($objWae->gt("oO", "o9"));
+ok($objWae->gt("Oo", "o9"));
+ok($objWae->gt("OO", "o9"));
+ok($objWae->lt("uu", "u9"));
+ok($objWae->gt("uU", "u9"));
+ok($objWae->gt("Uu", "u9"));
+ok($objWae->gt("UU", "u9"));
+
+# 22
+
+ok($objWae->lt("ch", "c9"));
+ok($objWae->gt("cH", "c9"));
+ok($objWae->gt("Ch", "c9"));
+ok($objWae->gt("CH", "c9"));
+
+ok($objWae->lt("sch", "s9"));
+ok($objWae->gt("scH", "s9"));
+ok($objWae->gt("sCh", "s9"));
+ok($objWae->gt("sCH", "s9"));
+ok($objWae->gt("Sch", "s9"));
+ok($objWae->gt("ScH", "s9"));
+ok($objWae->gt("SCh", "s9"));
+ok($objWae->gt("SCH", "s9"));
+
+# 34
+
+ok($objWae->lt("a\x{308}a\x{308}", "a9"));
+ok($objWae->gt("a\x{308}A\x{308}", "a9"));
+ok($objWae->gt("A\x{308}a\x{308}", "a9"));
+ok($objWae->gt("A\x{308}A\x{308}", "a9"));
+ok($objWae->lt("o\x{308}o\x{308}", "o9"));
+ok($objWae->gt("o\x{308}O\x{308}", "o9"));
+ok($objWae->gt("O\x{308}o\x{308}", "o9"));
+ok($objWae->gt("O\x{308}O\x{308}", "o9"));
+ok($objWae->lt("u\x{308}u\x{308}", "u9"));
+ok($objWae->gt("u\x{308}U\x{308}", "u9"));
+ok($objWae->gt("U\x{308}u\x{308}", "u9"));
+ok($objWae->gt("U\x{308}U\x{308}", "u9"));
+
+# 46
+
+$objWae->change(level => 3);
+
+ok($objWae->eq("a\x{301}", pack('U', 0xE1)));
+ok($objWae->eq("e\x{301}", pack('U', 0xE9)));
+ok($objWae->eq("i\x{301}", pack('U', 0xED)));
+ok($objWae->eq("o\x{301}", pack('U', 0xF3)));
+ok($objWae->eq("u\x{301}", pack('U', 0xFA)));
+ok($objWae->eq("a\x{301}", "aa"));
+ok($objWae->eq("e\x{301}", "ee"));
+ok($objWae->eq("i\x{301}", "ii"));
+ok($objWae->eq("o\x{301}", "oo"));
+ok($objWae->eq("u\x{301}", "uu"));
+
+# 56
+
+ok($objWae->eq("c\x{30C}", "\x{10D}"));
+ok($objWae->eq("s\x{30C}", "\x{161}"));
+ok($objWae->eq("c\x{30C}", "ch"));
+ok($objWae->eq("s\x{30C}", "sch"));
+
+# 60
+
+my $a1 = pack('U', 0xE4);
+my $o1 = pack('U', 0xF6);
+my $u1 = pack('U', 0xFC);
+my $a2 = "a\x{308}";
+my $o2 = "o\x{308}";
+my $u2 = "u\x{308}";
+
+ok($objWae->eq($a1, $a2));
+ok($objWae->eq($o1, $o2));
+ok($objWae->eq($u1, $u2));
+
+ok($objWae->eq("a\x{303}", pack('U', 0xE3)));
+ok($objWae->eq("o\x{303}", pack('U', 0xF5)));
+ok($objWae->eq("u\x{303}", "\x{169}"));
+
+# 66
+
+ok($objWae->eq("a\x{303}", $a1.$a1));
+ok($objWae->eq("a\x{303}", $a1.$a2));
+ok($objWae->eq("a\x{303}", $a2.$a1));
+ok($objWae->eq("a\x{303}", $a2.$a2));
+ok($objWae->eq("o\x{303}", $o1.$o1));
+ok($objWae->eq("o\x{303}", $o1.$o2));
+ok($objWae->eq("o\x{303}", $o2.$o1));
+ok($objWae->eq("o\x{303}", $o2.$o2));
+ok($objWae->eq("u\x{303}", $u1.$u1));
+ok($objWae->eq("u\x{303}", $u1.$u2));
+ok($objWae->eq("u\x{303}", $u2.$u1));
+ok($objWae->eq("u\x{303}", $u2.$u2));
+
+# 78

Added: vendor/perl/dist/cpan/Unicode-Collate/t/loc_zhzy.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/loc_zhzy.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/loc_zhzy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,381 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..308\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 $objZhZ = Unicode::Collate::Locale->
+    new(locale => 'ZH__zhuyin', normalization => undef);
+
+ok($objZhZ->getlocale, 'zh__zhuyin');
+
+$objZhZ->change(level => 1);
+
+ok($objZhZ->eq("a\x{304}", "a\x{301}"));
+ok($objZhZ->eq("a\x{301}", "a\x{30C}"));
+ok($objZhZ->eq("a\x{30C}", "a\x{300}"));
+ok($objZhZ->eq("a\x{300}", "a"));
+ok($objZhZ->eq("e\x{304}", "e\x{301}"));
+ok($objZhZ->eq("e\x{301}", "e\x{30C}"));
+ok($objZhZ->eq("e\x{30C}", "e\x{300}"));
+ok($objZhZ->eq("e\x{300}", "e"));
+ok($objZhZ->eq("e\x{302}\x{304}", "e\x{302}\x{301}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "e\x{302}\x{30C}"));
+ok($objZhZ->eq("e\x{302}\x{30C}", "e\x{302}\x{300}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "e\x{302}"));
+ok($objZhZ->eq("i\x{304}", "i\x{301}"));
+ok($objZhZ->eq("i\x{301}", "i\x{30C}"));
+ok($objZhZ->eq("i\x{30C}", "i\x{300}"));
+ok($objZhZ->eq("i\x{300}", "i"));
+ok($objZhZ->eq("m\x{304}", "m\x{301}"));
+ok($objZhZ->eq("m\x{301}", "m\x{30C}"));
+ok($objZhZ->eq("m\x{30C}", "m\x{300}"));
+ok($objZhZ->eq("m\x{300}", "m"));
+ok($objZhZ->eq("n\x{304}", "n\x{301}"));
+ok($objZhZ->eq("n\x{301}", "n\x{30C}"));
+ok($objZhZ->eq("n\x{30C}", "n\x{300}"));
+ok($objZhZ->eq("n\x{300}", "n"));
+ok($objZhZ->eq("o\x{304}", "o\x{301}"));
+ok($objZhZ->eq("o\x{301}", "o\x{30C}"));
+ok($objZhZ->eq("o\x{30C}", "o\x{300}"));
+ok($objZhZ->eq("o\x{300}", "o"));
+ok($objZhZ->eq("u\x{304}", "u\x{301}"));
+ok($objZhZ->eq("u\x{301}", "u\x{30C}"));
+ok($objZhZ->eq("u\x{30C}", "u\x{300}"));
+ok($objZhZ->eq("u\x{300}", "u"));
+ok($objZhZ->eq("u\x{308}\x{304}", "u\x{308}\x{301}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "u\x{308}\x{30C}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", "u\x{308}\x{300}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "u\x{308}"));
+
+# 38
+
+$objZhZ->change(level => 2);
+
+ok($objZhZ->lt("a\x{304}", "a\x{301}"));
+ok($objZhZ->lt("a\x{301}", "a\x{30C}"));
+ok($objZhZ->lt("a\x{30C}", "a\x{300}"));
+ok($objZhZ->lt("a\x{300}", "a"));
+ok($objZhZ->lt("e\x{304}", "e\x{301}"));
+ok($objZhZ->lt("e\x{301}", "e\x{30C}"));
+ok($objZhZ->lt("e\x{30C}", "e\x{300}"));
+ok($objZhZ->lt("e\x{300}", "e"));
+ok($objZhZ->lt("e\x{302}\x{304}", "e\x{302}\x{301}"));
+ok($objZhZ->lt("e\x{302}\x{301}", "e\x{302}\x{30C}"));
+ok($objZhZ->lt("e\x{302}\x{30C}", "e\x{302}\x{300}"));
+ok($objZhZ->lt("e\x{302}\x{300}", "e\x{302}"));
+ok($objZhZ->lt("i\x{304}", "i\x{301}"));
+ok($objZhZ->lt("i\x{301}", "i\x{30C}"));
+ok($objZhZ->lt("i\x{30C}", "i\x{300}"));
+ok($objZhZ->lt("i\x{300}", "i"));
+ok($objZhZ->lt("m\x{304}", "m\x{301}"));
+ok($objZhZ->lt("m\x{301}", "m\x{30C}"));
+ok($objZhZ->lt("m\x{30C}", "m\x{300}"));
+ok($objZhZ->lt("m\x{300}", "m"));
+ok($objZhZ->lt("n\x{304}", "n\x{301}"));
+ok($objZhZ->lt("n\x{301}", "n\x{30C}"));
+ok($objZhZ->lt("n\x{30C}", "n\x{300}"));
+ok($objZhZ->lt("n\x{300}", "n"));
+ok($objZhZ->lt("o\x{304}", "o\x{301}"));
+ok($objZhZ->lt("o\x{301}", "o\x{30C}"));
+ok($objZhZ->lt("o\x{30C}", "o\x{300}"));
+ok($objZhZ->lt("o\x{300}", "o"));
+ok($objZhZ->lt("u\x{304}", "u\x{301}"));
+ok($objZhZ->lt("u\x{301}", "u\x{30C}"));
+ok($objZhZ->lt("u\x{30C}", "u\x{300}"));
+ok($objZhZ->lt("u\x{300}", "u"));
+ok($objZhZ->lt("u\x{308}\x{304}", "u\x{308}\x{301}"));
+ok($objZhZ->lt("u\x{308}\x{301}", "u\x{308}\x{30C}"));
+ok($objZhZ->lt("u\x{308}\x{30C}", "u\x{308}\x{300}"));
+ok($objZhZ->lt("u\x{308}\x{300}", "u\x{308}"));
+
+# 74
+
+ok($objZhZ->eq("a\x{304}", "A\x{304}"));
+ok($objZhZ->eq("a\x{301}", "A\x{301}"));
+ok($objZhZ->eq("a\x{30C}", "A\x{30C}"));
+ok($objZhZ->eq("a\x{300}", "A\x{300}"));
+ok($objZhZ->eq("e\x{304}", "E\x{304}"));
+ok($objZhZ->eq("e\x{301}", "E\x{301}"));
+ok($objZhZ->eq("e\x{30C}", "E\x{30C}"));
+ok($objZhZ->eq("e\x{300}", "E\x{300}"));
+ok($objZhZ->eq("e\x{302}\x{304}", "E\x{302}\x{304}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "E\x{302}\x{301}"));
+ok($objZhZ->eq("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "E\x{302}\x{300}"));
+ok($objZhZ->eq("e\x{302}", "E\x{302}"));
+ok($objZhZ->eq("i\x{304}", "I\x{304}"));
+ok($objZhZ->eq("i\x{301}", "I\x{301}"));
+ok($objZhZ->eq("i\x{30C}", "I\x{30C}"));
+ok($objZhZ->eq("i\x{300}", "I\x{300}"));
+ok($objZhZ->eq("m\x{304}", "M\x{304}"));
+ok($objZhZ->eq("m\x{301}", "M\x{301}"));
+ok($objZhZ->eq("m\x{30C}", "M\x{30C}"));
+ok($objZhZ->eq("m\x{300}", "M\x{300}"));
+ok($objZhZ->eq("n\x{304}", "N\x{304}"));
+ok($objZhZ->eq("n\x{301}", "N\x{301}"));
+ok($objZhZ->eq("n\x{30C}", "N\x{30C}"));
+ok($objZhZ->eq("n\x{300}", "N\x{300}"));
+ok($objZhZ->eq("o\x{304}", "O\x{304}"));
+ok($objZhZ->eq("o\x{301}", "O\x{301}"));
+ok($objZhZ->eq("o\x{30C}", "O\x{30C}"));
+ok($objZhZ->eq("o\x{300}", "O\x{300}"));
+ok($objZhZ->eq("u\x{304}", "U\x{304}"));
+ok($objZhZ->eq("u\x{301}", "U\x{301}"));
+ok($objZhZ->eq("u\x{30C}", "U\x{30C}"));
+ok($objZhZ->eq("u\x{300}", "U\x{300}"));
+ok($objZhZ->eq("u\x{308}\x{304}", "U\x{308}\x{304}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "U\x{308}\x{301}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "U\x{308}\x{300}"));
+ok($objZhZ->eq("u\x{308}", "U\x{308}"));
+
+# 112
+
+$objZhZ->change(level => 3);
+
+ok($objZhZ->lt("a\x{304}", "A\x{304}"));
+ok($objZhZ->lt("a\x{301}", "A\x{301}"));
+ok($objZhZ->lt("a\x{30C}", "A\x{30C}"));
+ok($objZhZ->lt("a\x{300}", "A\x{300}"));
+ok($objZhZ->lt("e\x{304}", "E\x{304}"));
+ok($objZhZ->lt("e\x{301}", "E\x{301}"));
+ok($objZhZ->lt("e\x{30C}", "E\x{30C}"));
+ok($objZhZ->lt("e\x{300}", "E\x{300}"));
+ok($objZhZ->lt("e\x{302}\x{304}", "E\x{302}\x{304}"));
+ok($objZhZ->lt("e\x{302}\x{301}", "E\x{302}\x{301}"));
+ok($objZhZ->lt("e\x{302}\x{30C}", "E\x{302}\x{30C}"));
+ok($objZhZ->lt("e\x{302}\x{300}", "E\x{302}\x{300}"));
+ok($objZhZ->lt("e\x{302}", "E\x{302}"));
+ok($objZhZ->lt("i\x{304}", "I\x{304}"));
+ok($objZhZ->lt("i\x{301}", "I\x{301}"));
+ok($objZhZ->lt("i\x{30C}", "I\x{30C}"));
+ok($objZhZ->lt("i\x{300}", "I\x{300}"));
+ok($objZhZ->lt("m\x{304}", "M\x{304}"));
+ok($objZhZ->lt("m\x{301}", "M\x{301}"));
+ok($objZhZ->lt("m\x{30C}", "M\x{30C}"));
+ok($objZhZ->lt("m\x{300}", "M\x{300}"));
+ok($objZhZ->lt("n\x{304}", "N\x{304}"));
+ok($objZhZ->lt("n\x{301}", "N\x{301}"));
+ok($objZhZ->lt("n\x{30C}", "N\x{30C}"));
+ok($objZhZ->lt("n\x{300}", "N\x{300}"));
+ok($objZhZ->lt("o\x{304}", "O\x{304}"));
+ok($objZhZ->lt("o\x{301}", "O\x{301}"));
+ok($objZhZ->lt("o\x{30C}", "O\x{30C}"));
+ok($objZhZ->lt("o\x{300}", "O\x{300}"));
+ok($objZhZ->lt("u\x{304}", "U\x{304}"));
+ok($objZhZ->lt("u\x{301}", "U\x{301}"));
+ok($objZhZ->lt("u\x{30C}", "U\x{30C}"));
+ok($objZhZ->lt("u\x{300}", "U\x{300}"));
+ok($objZhZ->lt("u\x{308}\x{304}", "U\x{308}\x{304}"));
+ok($objZhZ->lt("u\x{308}\x{301}", "U\x{308}\x{301}"));
+ok($objZhZ->lt("u\x{308}\x{30C}", "U\x{308}\x{30C}"));
+ok($objZhZ->lt("u\x{308}\x{300}", "U\x{308}\x{300}"));
+ok($objZhZ->lt("u\x{308}", "U\x{308}"));
+
+# 150
+
+ok($objZhZ->eq("a\x{304}", "\x{101}"));
+ok($objZhZ->eq("A\x{304}", "\x{100}"));
+ok($objZhZ->eq("a\x{301}", pack('U', 0xE1)));
+ok($objZhZ->eq("a\x{301}", "a\x{341}"));
+ok($objZhZ->eq("A\x{301}", pack('U', 0xC1)));
+ok($objZhZ->eq("A\x{301}", "A\x{341}"));
+ok($objZhZ->eq("a\x{30C}", "\x{1CE}"));
+ok($objZhZ->eq("A\x{30C}", "\x{1CD}"));
+ok($objZhZ->eq("a\x{300}", pack('U', 0xE0)));
+ok($objZhZ->eq("a\x{300}", "a\x{340}"));
+ok($objZhZ->eq("A\x{300}", pack('U', 0xC0)));
+ok($objZhZ->eq("A\x{300}", "A\x{340}"));
+ok($objZhZ->eq("e\x{304}", "\x{113}"));
+ok($objZhZ->eq("E\x{304}", "\x{112}"));
+ok($objZhZ->eq("e\x{301}", pack('U', 0xE9)));
+ok($objZhZ->eq("e\x{301}", "e\x{341}"));
+ok($objZhZ->eq("E\x{301}", pack('U', 0xC9)));
+ok($objZhZ->eq("E\x{301}", "E\x{341}"));
+ok($objZhZ->eq("e\x{30C}", "\x{11B}"));
+ok($objZhZ->eq("E\x{30C}", "\x{11A}"));
+ok($objZhZ->eq("e\x{300}", pack('U', 0xE8)));
+ok($objZhZ->eq("e\x{300}", "e\x{340}"));
+ok($objZhZ->eq("E\x{300}", pack('U', 0xC8)));
+ok($objZhZ->eq("E\x{300}", "E\x{340}"));
+ok($objZhZ->eq("e\x{302}\x{304}", pack('U*', 0xEA, 0x304)));
+ok($objZhZ->eq("E\x{302}\x{304}", pack('U*', 0xCA, 0x304)));
+ok($objZhZ->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objZhZ->eq("e\x{302}\x{301}", "e\x{302}\x{341}"));
+ok($objZhZ->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objZhZ->eq("E\x{302}\x{301}", "E\x{302}\x{341}"));
+ok($objZhZ->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x301)));
+ok($objZhZ->eq("e\x{302}\x{301}", pack('U*', 0xEA, 0x341)));
+ok($objZhZ->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x301)));
+ok($objZhZ->eq("E\x{302}\x{301}", pack('U*', 0xCA, 0x341)));
+ok($objZhZ->eq("e\x{302}\x{30C}", pack('U*', 0xEA, 0x30C)));
+ok($objZhZ->eq("E\x{302}\x{30C}", pack('U*', 0xCA, 0x30C)));
+ok($objZhZ->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objZhZ->eq("e\x{302}\x{300}", "e\x{302}\x{340}"));
+ok($objZhZ->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objZhZ->eq("E\x{302}\x{300}", "E\x{302}\x{340}"));
+ok($objZhZ->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x300)));
+ok($objZhZ->eq("e\x{302}\x{300}", pack('U*', 0xEA, 0x340)));
+ok($objZhZ->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x300)));
+ok($objZhZ->eq("E\x{302}\x{300}", pack('U*', 0xCA, 0x340)));
+ok($objZhZ->eq("e\x{302}", pack('U', 0xEA)));
+ok($objZhZ->eq("E\x{302}", pack('U', 0xCA)));
+ok($objZhZ->eq("i\x{304}", "\x{12B}"));
+ok($objZhZ->eq("I\x{304}", "\x{12A}"));
+ok($objZhZ->eq("i\x{301}", pack('U', 0xED)));
+ok($objZhZ->eq("i\x{301}", "i\x{341}"));
+ok($objZhZ->eq("I\x{301}", pack('U', 0xCD)));
+ok($objZhZ->eq("I\x{301}", "I\x{341}"));
+ok($objZhZ->eq("i\x{30C}", "\x{1D0}"));
+ok($objZhZ->eq("I\x{30C}", "\x{1CF}"));
+ok($objZhZ->eq("i\x{300}", pack('U', 0xEC)));
+ok($objZhZ->eq("i\x{300}", "i\x{340}"));
+ok($objZhZ->eq("I\x{300}", pack('U', 0xCC)));
+ok($objZhZ->eq("I\x{300}", "I\x{340}"));
+ok($objZhZ->eq("m\x{301}", "\x{1E3F}"));
+ok($objZhZ->eq("m\x{301}", "m\x{341}"));
+ok($objZhZ->eq("M\x{301}", "\x{1E3E}"));
+ok($objZhZ->eq("M\x{301}", "M\x{341}"));
+ok($objZhZ->eq("m\x{300}", "m\x{340}"));
+ok($objZhZ->eq("M\x{300}", "M\x{340}"));
+ok($objZhZ->eq("n\x{301}", "\x{144}"));
+ok($objZhZ->eq("n\x{301}", "n\x{341}"));
+ok($objZhZ->eq("N\x{301}", "\x{143}"));
+ok($objZhZ->eq("N\x{301}", "N\x{341}"));
+ok($objZhZ->eq("n\x{30C}", "\x{148}"));
+ok($objZhZ->eq("N\x{30C}", "\x{147}"));
+ok($objZhZ->eq("n\x{300}", "\x{1F9}"));
+ok($objZhZ->eq("n\x{300}", "n\x{340}"));
+ok($objZhZ->eq("N\x{300}", "\x{1F8}"));
+ok($objZhZ->eq("N\x{300}", "N\x{340}"));
+ok($objZhZ->eq("o\x{304}", "\x{14D}"));
+ok($objZhZ->eq("O\x{304}", "\x{14C}"));
+ok($objZhZ->eq("o\x{301}", pack('U', 0xF3)));
+ok($objZhZ->eq("o\x{301}", "o\x{341}"));
+ok($objZhZ->eq("O\x{301}", pack('U', 0xD3)));
+ok($objZhZ->eq("O\x{301}", "O\x{341}"));
+ok($objZhZ->eq("o\x{30C}", "\x{1D2}"));
+ok($objZhZ->eq("O\x{30C}", "\x{1D1}"));
+ok($objZhZ->eq("o\x{300}", pack('U', 0xF2)));
+ok($objZhZ->eq("o\x{300}", "o\x{340}"));
+ok($objZhZ->eq("O\x{300}", pack('U', 0xD2)));
+ok($objZhZ->eq("O\x{300}", "O\x{340}"));
+ok($objZhZ->eq("u\x{304}", "\x{16B}"));
+ok($objZhZ->eq("U\x{304}", "\x{16A}"));
+ok($objZhZ->eq("u\x{301}", pack('U', 0xFA)));
+ok($objZhZ->eq("u\x{301}", "u\x{341}"));
+ok($objZhZ->eq("U\x{301}", pack('U', 0xDA)));
+ok($objZhZ->eq("U\x{301}", "U\x{341}"));
+ok($objZhZ->eq("u\x{30C}", "\x{1D4}"));
+ok($objZhZ->eq("U\x{30C}", "\x{1D3}"));
+ok($objZhZ->eq("u\x{300}", pack('U', 0xF9)));
+ok($objZhZ->eq("u\x{300}", "u\x{340}"));
+ok($objZhZ->eq("U\x{300}", pack('U', 0xD9)));
+ok($objZhZ->eq("U\x{300}", "U\x{340}"));
+ok($objZhZ->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objZhZ->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objZhZ->eq("u\x{308}\x{304}", pack('U*', 0xFC, 0x304)));
+ok($objZhZ->eq("U\x{308}\x{304}", pack('U*', 0xDC, 0x304)));
+ok($objZhZ->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objZhZ->eq("u\x{308}\x{301}", "u\x{308}\x{341}"));
+ok($objZhZ->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objZhZ->eq("U\x{308}\x{301}", "U\x{308}\x{341}"));
+ok($objZhZ->eq("u\x{308}\x{301}", pack('U*', 0xFC, 0x301)));
+ok($objZhZ->eq("u\x{308}\x{301}", pack('U*', 0xFC, 0x341)));
+ok($objZhZ->eq("U\x{308}\x{301}", pack('U*', 0xDC, 0x301)));
+ok($objZhZ->eq("U\x{308}\x{301}", pack('U*', 0xDC, 0x341)));
+ok($objZhZ->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objZhZ->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objZhZ->eq("u\x{308}\x{30C}", pack('U*', 0xFC, 0x30C)));
+ok($objZhZ->eq("U\x{308}\x{30C}", pack('U*', 0xDC, 0x30C)));
+ok($objZhZ->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objZhZ->eq("u\x{308}\x{300}", "u\x{308}\x{340}"));
+ok($objZhZ->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objZhZ->eq("U\x{308}\x{300}", "U\x{308}\x{340}"));
+ok($objZhZ->eq("u\x{308}\x{300}", pack('U*', 0xFC, 0x300)));
+ok($objZhZ->eq("u\x{308}\x{300}", pack('U*', 0xFC, 0x340)));
+ok($objZhZ->eq("U\x{308}\x{300}", pack('U*', 0xDC, 0x300)));
+ok($objZhZ->eq("U\x{308}\x{300}", pack('U*', 0xDC, 0x340)));
+ok($objZhZ->eq("u\x{308}", pack('U', 0xFC)));
+ok($objZhZ->eq("U\x{308}", pack('U', 0xDC)));
+
+# 274
+
+ok($objZhZ->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objZhZ->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objZhZ->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objZhZ->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objZhZ->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objZhZ->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+# 280
+
+$objZhZ->change(level => 1);
+
+ok($objZhZ->lt("\x{A000}", "\x{516B}"));
+ok($objZhZ->lt("\x{516B}", "\x{628A}"));
+ok($objZhZ->lt("\x{628A}", "\x{5DF4}"));
+ok($objZhZ->lt("\x{5DF4}", "\x{767D}"));
+ok($objZhZ->lt("\x{767D}", "\x{5317}"));
+ok($objZhZ->lt("\x{5317}", "\x{9F3B}"));
+ok($objZhZ->lt("\x{9F3B}", "\x{4E0D}"));
+ok($objZhZ->lt("\x{4E0D}", "\x{547D}"));
+ok($objZhZ->lt("\x{547D}", "\x{6BCD}"));
+ok($objZhZ->lt("\x{6BCD}", "\x{6253}"));
+ok($objZhZ->lt("\x{6253}", "\x{7530}"));
+ok($objZhZ->lt("\x{7530}", "\x{52AA}"));
+ok($objZhZ->lt("\x{52AA}", "\x{529B}"));
+ok($objZhZ->lt("\x{529B}", "\x{5375}"));
+ok($objZhZ->lt("\x{5375}", "\x{5149}"));
+ok($objZhZ->lt("\x{5149}", "\x{5915}"));
+ok($objZhZ->lt("\x{5915}", "\x{4E09}"));
+ok($objZhZ->lt("\x{4E09}", "\x{4E00}"));
+ok($objZhZ->lt("\x{4E00}", "\x{7528}"));
+
+# 299
+
+$objZhZ->change(variable => 'non-ignorable');
+
+ok($objZhZ->eq("\x{300}", "\x{2C9}"));
+ok($objZhZ->lt("\x{2C9}", "\x{2CA}"));
+ok($objZhZ->lt("\x{2CA}", "\x{2C7}"));
+ok($objZhZ->lt("\x{2C7}", "\x{2CB}"));
+ok($objZhZ->lt("\x{2CB}", "\x{2D9}"));
+ok($objZhZ->lt("\x{2D9}", "\x{2EA}"));
+ok($objZhZ->lt("\x{2EA}", "\x{2EB}"));
+ok($objZhZ->lt("\x{2EB}", "\ "));
+
+# 307
+
+$objZhZ->change(level => 2);
+
+ok($objZhZ->lt("\x{300}", "\x{2C9}"));
+
+# 308

Added: vendor/perl/dist/cpan/Unicode-Collate/t/notable.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/notable.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/notable.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,140 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..32\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;
+
+ok(1);
+
+#########################
+
+{
+    # Table is undefined, then no entry is defined.
+    my $undef_table = Unicode::Collate->new(
+	table => undef,
+	normalization => undef,
+	level => 1,
+    );
+
+    # in the Unicode code point order
+    ok($undef_table->lt('', 'A'));
+    ok($undef_table->lt('ABC', 'B'));
+
+    # Hangul should be decomposed (even w/o Unicode::Normalize).
+    ok($undef_table->lt("Perl", "\x{AC00}"));
+    ok($undef_table->eq("\x{AC00}", "\x{1100}\x{1161}"));
+    ok($undef_table->eq("\x{AE00}", "\x{1100}\x{1173}\x{11AF}"));
+    ok($undef_table->lt("\x{AE00}", "\x{3042}"));
+
+    # U+AC00: Hangul GA
+    # U+AE00: Hangul GEUL
+    # U+3042: Hiragana A
+
+    # Weight for CJK Ideographs is defined, though.
+    ok($undef_table->lt("", "\x{4E00}"));
+    ok($undef_table->lt("\x{4E8C}","ABC"));
+    ok($undef_table->lt("\x{4E00}","\x{3042}"));
+    ok($undef_table->lt("\x{4E00}","\x{4E8C}"));
+
+# 11
+
+    # U+4E00: Ideograph "ONE"
+    # U+4E8C: Ideograph "TWO"
+
+    for my $v ('', 8, 9, 11, 14) {
+	$undef_table->change(UCA_Version => $v) if $v;
+	ok($undef_table->lt("\x{4E00}","\0"));
+    }
+}
+
+# 16
+
+{
+    my $onlyABC = Unicode::Collate->new(
+	table => undef,
+	normalization => undef,
+	entry => << 'ENTRIES',
+0061 ; [.0101.0020.0002.0061] # LATIN SMALL LETTER A
+0041 ; [.0101.0020.0008.0041] # LATIN CAPITAL LETTER A
+0062 ; [.0102.0020.0002.0062] # LATIN SMALL LETTER B
+0042 ; [.0102.0020.0008.0042] # LATIN CAPITAL LETTER B
+0063 ; [.0103.0020.0002.0063] # LATIN SMALL LETTER C
+0043 ; [.0103.0020.0008.0043] # LATIN CAPITAL LETTER C
+ENTRIES
+    );
+    ok(
+	join(':', $onlyABC->sort( qw/ ABA BAC cc A Ab cAc aB / ) ),
+	join(':',                 qw/ A aB Ab ABA BAC cAc cc / ),
+    );
+}
+
+# 17
+
+{
+    my $few_entries = Unicode::Collate->new(
+	entry => <<'ENTRIES',
+0050 ; [.0101.0020.0002.0050]  # P
+0045 ; [.0102.0020.0002.0045]  # E
+0052 ; [.0103.0020.0002.0052]  # R
+004C ; [.0104.0020.0002.004C]  # L
+1100 ; [.0105.0020.0002.1100]  # Hangul Jamo initial G
+1175 ; [.0106.0020.0002.1175]  # Hangul Jamo middle I
+5B57 ; [.0107.0020.0002.5B57]  # CJK Ideograph "Letter"
+ENTRIES
+	table => undef,
+	normalization => undef,
+    );
+    # defined before undefined
+    my $sortABC = join '',
+	$few_entries->sort(split //, "ABCDEFGHIJKLMNOPQRSTUVWXYZ ");
+
+    ok($sortABC eq "PERL ABCDFGHIJKMNOQSTUVWXYZ");
+
+    ok($few_entries->lt('E', 'D'));
+    ok($few_entries->lt("\x{5B57}", "\x{4E00}"));
+    ok($few_entries->lt("\x{AE30}", "\x{AC00}"));
+
+    # Hangul must be decomposed.
+    ok($few_entries->eq("\x{AC00}", "\x{1100}\x{1161}"));
+}
+
+# 22
+
+{
+    my $highestNUL = Unicode::Collate->new(
+	table => undef,
+	normalization => undef,
+	level => 1,
+	entry => '0000 ; [.FFFE.0020.0005.0000]',
+    );
+
+    for my $v ('', 8, 9, 11, 14) {
+	$highestNUL->change(UCA_Version => $v) if $v;
+	ok($highestNUL->lt("abc\x{4E00}", "abc\0"));
+	ok($highestNUL->lt("abc\x{E0000}","abc\0"));
+    }
+}
+
+# 32

Added: vendor/perl/dist/cpan/Unicode-Collate/t/rewrite.t
===================================================================
--- vendor/perl/dist/cpan/Unicode-Collate/t/rewrite.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Unicode-Collate/t/rewrite.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,100 @@
+
+BEGIN {
+    unless ("A" eq pack('U', 0x41)) {
+	print "1..0 # Unicode::Collate " .
+	    "cannot stringify 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..17\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;
+
+ok(1);
+
+#########################
+
+my $code = sub {
+    my $line = shift;
+    $line =~ s/\[\.0000\..{4}\..{4}\./[.0000.0000.0000./g;
+    return $line;
+  };
+
+#####
+
+my $Collator = Unicode::Collate->new(
+  table => 'keys.txt', normalization => undef, rewrite => $code,
+);
+
+ok($Collator->eq("camel", "came\x{300}l"));
+ok($Collator->eq("camel", "ca\x{300}me\x{301}l"));
+ok($Collator->lt("camel", "Camel"));
+{
+  my $s = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l.";
+  $Collator->gsubst($s, "camel", sub { "=$_[0]=" });
+  ok($s, "Camel donkey zebra =came\x{301}l= CAMEL horse =cam\0e\0l=.");
+}
+
+# 5
+
+my $rewriteDUCET = Unicode::Collate->new(
+  normalization => undef, rewrite => $code,
+);
+
+ok($rewriteDUCET->eq("camel", "came\x{300}l"));
+ok($rewriteDUCET->eq("camel", "ca\x{300}me\x{301}l"));
+ok($rewriteDUCET->lt("camel", "Camel"));
+{
+  my $s = "Camel donkey zebra came\x{301}l CAMEL horse cam\0e\0l.";
+  $rewriteDUCET->gsubst($s, "camel", sub { "=$_[0]=" });
+  ok($s, "Camel donkey zebra =came\x{301}l= CAMEL horse =cam\0e\0l=.");
+}
+
+# 9
+
+my $undef_hira = Unicode::Collate->new(
+  table => 'keys.txt',
+  normalization => undef,
+  level => 1,
+  rewrite => sub {
+    my $line = shift;
+    return '' if $line =~ /HIRAGANA/;
+    return $line;
+  },
+);
+
+my $hiragana = "\x{3042}\x{3044}";
+my $katakana = "\x{30A2}\x{30A4}";
+my $cjkkanji = "\x{4E00}";
+
+# HIRAGANA are undefined via rewrite
+# So they are after CJK Unified Ideographs.
+
+ok($undef_hira->lt("abc", "perl"));
+ok($undef_hira->lt("", "ABC"));
+ok($undef_hira->lt($katakana, $hiragana));
+ok($undef_hira->lt($katakana, $cjkkanji));
+ok($undef_hira->lt($cjkkanji, $hiragana));
+
+$Collator->change(level => 1);
+ok($Collator->eq($katakana, $hiragana));
+ok($Collator->lt($katakana, $cjkkanji));
+ok($Collator->gt($cjkkanji, $hiragana));
+
+# 17

Added: vendor/perl/dist/cpan/Win32/t/CodePage.t
===================================================================
--- vendor/perl/dist/cpan/Win32/t/CodePage.t	                        (rev 0)
+++ vendor/perl/dist/cpan/Win32/t/CodePage.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+use strict;
+use Test;
+use Win32;
+
+plan tests => 8;
+
+my $ansicp = Win32::GetACP();
+ok($ansicp > 0 && $ansicp <= 65001);
+
+my $inputcp = Win32::GetConsoleCP();
+ok($inputcp > 0 && $inputcp <= 65001);
+
+my $outputcp = Win32::GetConsoleOutputCP();
+ok($outputcp > 0 && $outputcp <= 65001);
+
+my $oemcp = Win32::GetOEMCP();
+ok($oemcp > 0 && $oemcp <= 65001);
+
+ok(Win32::SetConsoleCP($ansicp));
+ok(Win32::GetConsoleCP() == $ansicp);
+
+ok(Win32::SetConsoleOutputCP($ansicp));
+ok(Win32::GetConsoleOutputCP() == $ansicp);
+
+# Reset things when we're done.
+Win32::SetConsoleCP($inputcp);
+Win32::SetConsoleOutputCP($outputcp);

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pm
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pm	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+package perlfaq;
+{
+  $perlfaq::VERSION = '5.0150042';
+}
+
+0; # not is it supposed to be loaded

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1373 @@
+=head1 NAME
+
+perlfaq - frequently asked questions about Perl
+
+=head1 DESCRIPTION
+
+The perlfaq comprises several documents that answer the most commonly
+asked questions about Perl and Perl programming. It's divided by topic
+into nine major sections outlined in this document.
+
+=head2 Where to find the perlfaq
+
+The perlfaq is an evolving document.  Read the latest version at
+L<http://learn.perl.org/faq/>.  It is also included in the standard Perl
+distribution.
+
+=head2 How to use the perlfaq
+
+The C<perldoc> command line tool is part of the standard Perl distribution. To
+read the perlfaq:
+
+    $ perldoc perlfaq
+
+To search the perlfaq question headings:
+
+    $ perldoc -q open
+
+=head2 How to contribute to the perlfaq
+
+Review L<https://github.com/perl-doc-cats/perlfaq/wiki>.  If you don't find
+your suggestion create an issue or pull request against
+L<https://github.com/perl-doc-cats/perlfaq>.
+
+Once approved, changes are merged into L<https://github.com/tpf/perlfaq>, the
+repository which drives L<http://learn.perl.org/faq/>, and they are
+distributed with the next Perl 5 release.
+
+=head2 What if my question isn't answered in the FAQ?
+
+Try the resources in L<perlfaq2>.
+
+=head1 TABLE OF CONTENTS
+
+=over 4
+
+=item perlfaq1 - General Questions About Perl
+
+=item perlfaq2 - Obtaining and Learning about Perl
+
+=item perlfaq3 - Programming Tools
+
+=item perlfaq4 - Data Manipulation
+
+=item perlfaq5 - Files and Formats
+
+=item perlfaq6 - Regular Expressions
+
+=item perlfaq7 - General Perl Language Issues
+
+=item perlfaq8 - System Interaction
+
+=item perlfaq9 - Web, Email and Networking
+
+=back
+
+=head1 THE QUESTIONS
+
+=head2 L<perlfaq1>: General Questions About Perl
+
+This section of the FAQ answers very general, high-level questions about Perl.
+
+=over 4
+
+=item *
+
+What is Perl?
+
+=item *
+
+Who supports Perl? Who develops it? Why is it free?
+
+=item *
+
+Which version of Perl should I use?
+
+=item *
+
+What are Perl 4, Perl 5, or Perl 6?
+
+=item *
+
+What is Perl 6?
+
+=item *
+
+How stable is Perl?
+
+=item *
+
+Is Perl difficult to learn?
+
+=item *
+
+How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
+
+=item *
+
+Can I do [task] in Perl?
+
+=item *
+
+When shouldn't I program in Perl?
+
+=item *
+
+What's the difference between "perl" and "Perl"?
+
+=item *
+
+What is a JAPH?
+
+=item *
+
+How can I convince others to use Perl?
+
+=back
+
+
+=head2 L<perlfaq2>: Obtaining and Learning about Perl
+
+This section of the FAQ answers questions about where to find source and documentation for Perl, support, and related matters.
+
+=over 4
+
+=item *
+
+What machines support Perl? Where do I get it?
+
+=item *
+
+How can I get a binary version of Perl?
+
+=item *
+
+I don't have a C compiler. How can I build my own Perl interpreter?
+
+=item *
+
+I copied the Perl binary from one machine to another, but scripts don't work.
+
+=item *
+
+I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
+
+=item *
+
+What modules and extensions are available for Perl? What is CPAN?
+
+=item *
+
+Where can I get information on Perl?
+
+=item *
+
+What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
+
+=item *
+
+Where can I post questions?
+
+=item *
+
+Perl Books
+
+=item *
+
+Which magazines have Perl content?
+
+=item *
+
+Which Perl blogs should I read?
+
+=item *
+
+What mailing lists are there for Perl?
+
+=item *
+
+Where can I buy a commercial version of Perl?
+
+=item *
+
+Where do I send bug reports?
+
+=back
+
+
+=head2 L<perlfaq3>: Programming Tools
+
+This section of the FAQ answers questions related to programmer tools and programming support.
+
+=over 4
+
+=item *
+
+How do I do (anything)?
+
+=item *
+
+How can I use Perl interactively?
+
+=item *
+
+How do I find which modules are installed on my system?
+
+=item *
+
+How do I debug my Perl programs?
+
+=item *
+
+How do I profile my Perl programs?
+
+=item *
+
+How do I cross-reference my Perl programs?
+
+=item *
+
+Is there a pretty-printer (formatter) for Perl?
+
+=item *
+
+Is there an IDE or Windows Perl Editor?
+
+=item *
+
+Where can I get Perl macros for vi?
+
+=item *
+
+Where can I get perl-mode or cperl-mode for emacs?
+
+=item *
+
+How can I use curses with Perl?
+
+=item *
+
+How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
+
+=item *
+
+How can I make my Perl program run faster?
+
+=item *
+
+How can I make my Perl program take less memory?
+
+=item *
+
+Is it safe to return a reference to local or lexical data?
+
+=item *
+
+How can I free an array or hash so my program shrinks?
+
+=item *
+
+How can I make my CGI script more efficient?
+
+=item *
+
+How can I hide the source for my Perl program?
+
+=item *
+
+How can I compile my Perl program into byte code or C?
+
+=item *
+
+How can I get C<#!perl> to work on [MS-DOS,NT,...]?
+
+=item *
+
+Can I write useful Perl programs on the command line?
+
+=item *
+
+Why don't Perl one-liners work on my DOS/Mac/VMS system?
+
+=item *
+
+Where can I learn about CGI or Web programming in Perl?
+
+=item *
+
+Where can I learn about object-oriented Perl programming?
+
+=item *
+
+Where can I learn about linking C with Perl?
+
+=item *
+
+I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?
+
+=item *
+
+When I tried to run my script, I got this message. What does it mean?
+
+=item *
+
+What's MakeMaker?
+
+=back
+
+
+=head2 L<perlfaq4>: Data Manipulation
+
+This section of the FAQ answers questions related to manipulating numbers, dates, strings, arrays, hashes, and miscellaneous data issues.
+
+=over 4
+
+=item *
+
+Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
+
+=item *
+
+Why is int() broken?
+
+=item *
+
+Why isn't my octal data interpreted correctly?
+
+=item *
+
+Does Perl have a round() function? What about ceil() and floor()? Trig functions?
+
+=item *
+
+How do I convert between numeric representations/bases/radixes?
+
+=item *
+
+Why doesn't & work the way I want it to?
+
+=item *
+
+How do I multiply matrices?
+
+=item *
+
+How do I perform an operation on a series of integers?
+
+=item *
+
+How can I output Roman numerals?
+
+=item *
+
+Why aren't my random numbers random?
+
+=item *
+
+How do I get a random number between X and Y?
+
+=item *
+
+How do I find the day or week of the year?
+
+=item *
+
+How do I find the current century or millennium?
+
+=item *
+
+How can I compare two dates and find the difference?
+
+=item *
+
+How can I take a string and turn it into epoch seconds?
+
+=item *
+
+How can I find the Julian Day?
+
+=item *
+
+How do I find yesterday's date?
+
+=item *
+
+Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?
+
+=item *
+
+How do I validate input?
+
+=item *
+
+How do I unescape a string?
+
+=item *
+
+How do I remove consecutive pairs of characters?
+
+=item *
+
+How do I expand function calls in a string?
+
+=item *
+
+How do I find matching/nesting anything?
+
+=item *
+
+How do I reverse a string?
+
+=item *
+
+How do I expand tabs in a string?
+
+=item *
+
+How do I reformat a paragraph?
+
+=item *
+
+How can I access or change N characters of a string?
+
+=item *
+
+How do I change the Nth occurrence of something?
+
+=item *
+
+How can I count the number of occurrences of a substring within a string?
+
+=item *
+
+How do I capitalize all the words on one line?
+
+=item *
+
+How can I split a [character]-delimited string except when inside [character]?
+
+=item *
+
+How do I strip blank space from the beginning/end of a string?
+
+=item *
+
+How do I pad a string with blanks or pad a number with zeroes?
+
+=item *
+
+How do I extract selected columns from a string?
+
+=item *
+
+How do I find the soundex value of a string?
+
+=item *
+
+How can I expand variables in text strings?
+
+=item *
+
+What's wrong with always quoting "$vars"?
+
+=item *
+
+Why don't my E<lt>E<lt>HERE documents work?
+
+=item *
+
+What is the difference between a list and an array?
+
+=item *
+
+What is the difference between $array[1] and @array[1]?
+
+=item *
+
+How can I remove duplicate elements from a list or array?
+
+=item *
+
+How can I tell whether a certain element is contained in a list or array?
+
+=item *
+
+How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
+
+=item *
+
+How do I test whether two arrays or hashes are equal?
+
+=item *
+
+How do I find the first array element for which a condition is true?
+
+=item *
+
+How do I handle linked lists?
+
+=item *
+
+How do I handle circular lists?
+
+=item *
+
+How do I shuffle an array randomly?
+
+=item *
+
+How do I process/modify each element of an array?
+
+=item *
+
+How do I select a random element from an array?
+
+=item *
+
+How do I permute N elements of a list?
+
+=item *
+
+How do I sort an array by (anything)?
+
+=item *
+
+How do I manipulate arrays of bits?
+
+=item *
+
+Why does defined() return true on empty arrays and hashes?
+
+=item *
+
+How do I process an entire hash?
+
+=item *
+
+How do I merge two hashes?
+
+=item *
+
+What happens if I add or remove keys from a hash while iterating over it?
+
+=item *
+
+How do I look up a hash element by value?
+
+=item *
+
+How can I know how many entries are in a hash?
+
+=item *
+
+How do I sort a hash (optionally by value instead of key)?
+
+=item *
+
+How can I always keep my hash sorted?
+
+=item *
+
+What's the difference between "delete" and "undef" with hashes?
+
+=item *
+
+Why don't my tied hashes make the defined/exists distinction?
+
+=item *
+
+How do I reset an each() operation part-way through?
+
+=item *
+
+How can I get the unique keys from two hashes?
+
+=item *
+
+How can I store a multidimensional array in a DBM file?
+
+=item *
+
+How can I make my hash remember the order I put elements into it?
+
+=item *
+
+Why does passing a subroutine an undefined element in a hash create it?
+
+=item *
+
+How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
+
+=item *
+
+How can I use a reference as a hash key?
+
+=item *
+
+How can I check if a key exists in a multilevel hash?
+
+=item *
+
+How can I prevent addition of unwanted keys into a hash?
+
+=item *
+
+How do I handle binary data correctly?
+
+=item *
+
+How do I determine whether a scalar is a number/whole/integer/float?
+
+=item *
+
+How do I keep persistent data across program calls?
+
+=item *
+
+How do I print out or copy a recursive data structure?
+
+=item *
+
+How do I define methods for every class/object?
+
+=item *
+
+How do I verify a credit card checksum?
+
+=item *
+
+How do I pack arrays of doubles or floats for XS code?
+
+=back
+
+
+=head2 L<perlfaq5>: Files and Formats
+
+This section deals with I/O and the "f" issues: filehandles, flushing, formats, and footers.
+
+=over 4
+
+=item *
+
+How do I flush/unbuffer an output filehandle? Why must I do this?
+
+=item *
+
+How do I change, delete, or insert a line in a file, or append to the beginning of a file?
+
+=item *
+
+How do I count the number of lines in a file?
+
+=item *
+
+How do I delete the last N lines from a file?
+
+=item *
+
+How can I use Perl's C<-i> option from within a program?
+
+=item *
+
+How can I copy a file?
+
+=item *
+
+How do I make a temporary file name?
+
+=item *
+
+How can I manipulate fixed-record-length files?
+
+=item *
+
+How can I make a filehandle local to a subroutine? How do I pass filehandles between subroutines? How do I make an array of filehandles?
+
+=item *
+
+How can I use a filehandle indirectly?
+
+=item *
+
+How can I set up a footer format to be used with write()?
+
+=item *
+
+How can I write() into a string?
+
+=item *
+
+How can I open a filehandle to a string?
+
+=item *
+
+How can I output my numbers with commas added?
+
+=item *
+
+How can I translate tildes (~) in a filename?
+
+=item *
+
+How come when I open a file read-write it wipes it out?
+
+=item *
+
+Why do I sometimes get an "Argument list too long" when I use E<lt>*E<gt>?
+
+=item *
+
+How can I open a file with a leading "E<gt>" or trailing blanks?
+
+=item *
+
+How can I reliably rename a file?
+
+=item *
+
+How can I lock a file?
+
+=item *
+
+Why can't I just open(FH, "E<gt>file.lock")?
+
+=item *
+
+I still don't get locking. I just want to increment the number in the file. How can I do this?
+
+=item *
+
+All I want to do is append a small amount of text to the end of a file. Do I still have to use locking?
+
+=item *
+
+How do I randomly update a binary file?
+
+=item *
+
+How do I get a file's timestamp in perl?
+
+=item *
+
+How do I set a file's timestamp in perl?
+
+=item *
+
+How do I print to more than one file at once?
+
+=item *
+
+How can I read in an entire file all at once?
+
+=item *
+
+How can I read in a file by paragraphs?
+
+=item *
+
+How can I read a single character from a file? From the keyboard?
+
+=item *
+
+How can I tell whether there's a character waiting on a filehandle?
+
+=item *
+
+How do I do a C<tail -f> in perl?
+
+=item *
+
+How do I dup() a filehandle in Perl?
+
+=item *
+
+How do I close a file descriptor by number?
+
+=item *
+
+Why can't I use "C:\temp\foo" in DOS paths? Why doesn't `C:\temp\foo.exe` work?
+
+=item *
+
+Why doesn't glob("*.*") get all the files?
+
+=item *
+
+Why does Perl let me delete read-only files? Why does C<-i> clobber protected files? Isn't this a bug in Perl?
+
+=item *
+
+How do I select a random line from a file?
+
+=item *
+
+Why do I get weird spaces when I print an array of lines?
+
+=item *
+
+How do I traverse a directory tree?
+
+=item *
+
+How do I delete a directory tree?
+
+=item *
+
+How do I copy an entire directory?
+
+=back
+
+
+=head2 L<perlfaq6>: Regular Expressions
+
+This section is surprisingly small because the rest of the FAQ is littered with answers involving regular expressions. For example, decoding a URL and checking whether something is a number can be handled with regular expressions, but those answers are found elsewhere in this document (in perlfaq9 : "How do I decode or create those %-encodings on the web" and perlfaq4 : "How do I determine whether a scalar is a number/whole/integer/float", to be precise).
+
+=over 4
+
+=item *
+
+How can I hope to use regular expressions without creating illegible and unmaintainable code?
+
+=item *
+
+I'm having trouble matching over more than one line. What's wrong?
+
+=item *
+
+How can I pull out lines between two patterns that are themselves on different lines?
+
+=item *
+
+How do I match XML, HTML, or other nasty, ugly things with a regex?
+
+=item *
+
+I put a regular expression into $/ but it didn't work. What's wrong?
+
+=item *
+
+How do I substitute case-insensitively on the LHS while preserving case on the RHS?
+
+=item *
+
+How can I make C<\w> match national character sets?
+
+=item *
+
+How can I match a locale-smart version of C</[a-zA-Z]/> ?
+
+=item *
+
+How can I quote a variable to use in a regex?
+
+=item *
+
+What is C</o> really for?
+
+=item *
+
+How do I use a regular expression to strip C-style comments from a file?
+
+=item *
+
+Can I use Perl regular expressions to match balanced text?
+
+=item *
+
+What does it mean that regexes are greedy? How can I get around it?
+
+=item *
+
+How do I process each word on each line?
+
+=item *
+
+How can I print out a word-frequency or line-frequency summary?
+
+=item *
+
+How can I do approximate matching?
+
+=item *
+
+How do I efficiently match many regular expressions at once?
+
+=item *
+
+Why don't word-boundary searches with C<\b> work for me?
+
+=item *
+
+Why does using $&, $`, or $' slow my program down?
+
+=item *
+
+What good is C<\G> in a regular expression?
+
+=item *
+
+Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
+
+=item *
+
+What's wrong with using grep in a void context?
+
+=item *
+
+How can I match strings with multibyte characters?
+
+=item *
+
+How do I match a regular expression that's in a variable?
+
+=back
+
+
+=head2 L<perlfaq7>: General Perl Language Issues
+
+This section deals with general Perl language issues that don't clearly fit into any of the other sections.
+
+=over 4
+
+=item *
+
+Can I get a BNF/yacc/RE for the Perl language?
+
+=item *
+
+What are all these $@%&* punctuation signs, and how do I know when to use them?
+
+=item *
+
+Do I always/never have to quote my strings or use semicolons and commas?
+
+=item *
+
+How do I skip some return values?
+
+=item *
+
+How do I temporarily block warnings?
+
+=item *
+
+What's an extension?
+
+=item *
+
+Why do Perl operators have different precedence than C operators?
+
+=item *
+
+How do I declare/create a structure?
+
+=item *
+
+How do I create a module?
+
+=item *
+
+How do I adopt or take over a module already on CPAN?
+
+=item *
+
+How do I create a class?
+
+=item *
+
+How can I tell if a variable is tainted?
+
+=item *
+
+What's a closure?
+
+=item *
+
+What is variable suicide and how can I prevent it?
+
+=item *
+
+How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
+
+=item *
+
+How do I create a static variable?
+
+=item *
+
+What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
+
+=item *
+
+How can I access a dynamic variable while a similarly named lexical is in scope?
+
+=item *
+
+What's the difference between deep and shallow binding?
+
+=item *
+
+Why doesn't "my($foo) = E<lt>$fhE<gt>;" work right?
+
+=item *
+
+How do I redefine a builtin function, operator, or method?
+
+=item *
+
+What's the difference between calling a function as &foo and foo()?
+
+=item *
+
+How do I create a switch or case statement?
+
+=item *
+
+How can I catch accesses to undefined variables, functions, or methods?
+
+=item *
+
+Why can't a method included in this same file be found?
+
+=item *
+
+How can I find out my current or calling package?
+
+=item *
+
+How can I comment out a large block of Perl code?
+
+=item *
+
+How do I clear a package?
+
+=item *
+
+How can I use a variable as a variable name?
+
+=item *
+
+What does "bad interpreter" mean?
+
+=back
+
+
+=head2 L<perlfaq8>: System Interaction
+
+This section of the Perl FAQ covers questions involving operating system interaction. Topics include interprocess communication (IPC), control over the user-interface (keyboard, screen and pointing devices), and most anything else not related to data manipulation.
+
+=over 4
+
+=item *
+
+How do I find out which operating system I'm running under?
+
+=item *
+
+How come exec() doesn't return?
+
+=item *
+
+How do I do fancy stuff with the keyboard/screen/mouse?
+
+=item *
+
+How do I print something out in color?
+
+=item *
+
+How do I read just one key without waiting for a return key?
+
+=item *
+
+How do I check whether input is ready on the keyboard?
+
+=item *
+
+How do I clear the screen?
+
+=item *
+
+How do I get the screen size?
+
+=item *
+
+How do I ask the user for a password?
+
+=item *
+
+How do I read and write the serial port?
+
+=item *
+
+How do I decode encrypted password files?
+
+=item *
+
+How do I start a process in the background?
+
+=item *
+
+How do I trap control characters/signals?
+
+=item *
+
+How do I modify the shadow password file on a Unix system?
+
+=item *
+
+How do I set the time and date?
+
+=item *
+
+How can I sleep() or alarm() for under a second?
+
+=item *
+
+How can I measure time under a second?
+
+=item *
+
+How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
+
+=item *
+
+Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
+
+=item *
+
+How can I call my system's unique C functions from Perl?
+
+=item *
+
+Where do I get the include files to do ioctl() or syscall()?
+
+=item *
+
+Why do setuid perl scripts complain about kernel problems?
+
+=item *
+
+How can I open a pipe both to and from a command?
+
+=item *
+
+Why can't I get the output of a command with system()?
+
+=item *
+
+How can I capture STDERR from an external command?
+
+=item *
+
+Why doesn't open() return an error when a pipe open fails?
+
+=item *
+
+What's wrong with using backticks in a void context?
+
+=item *
+
+How can I call backticks without shell processing?
+
+=item *
+
+Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
+
+=item *
+
+How can I convert my shell script to perl?
+
+=item *
+
+Can I use perl to run a telnet or ftp session?
+
+=item *
+
+How can I write expect in Perl?
+
+=item *
+
+Is there a way to hide perl's command line from programs such as "ps"?
+
+=item *
+
+I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
+
+=item *
+
+How do I close a process's filehandle without waiting for it to complete?
+
+=item *
+
+How do I fork a daemon process?
+
+=item *
+
+How do I find out if I'm running interactively or not?
+
+=item *
+
+How do I timeout a slow event?
+
+=item *
+
+How do I set CPU limits?
+
+=item *
+
+How do I avoid zombies on a Unix system?
+
+=item *
+
+How do I use an SQL database?
+
+=item *
+
+How do I make a system() exit on control-C?
+
+=item *
+
+How do I open a file without blocking?
+
+=item *
+
+How do I tell the difference between errors from the shell and perl?
+
+=item *
+
+How do I install a module from CPAN?
+
+=item *
+
+What's the difference between require and use?
+
+=item *
+
+How do I keep my own module/library directory?
+
+=item *
+
+How do I add the directory my program lives in to the module/library search path?
+
+=item *
+
+How do I add a directory to my include path (@INC) at runtime?
+
+=item *
+
+What is socket.ph and where do I get it?
+
+=back
+
+
+=head2 L<perlfaq9>: Web, Email and Networking
+
+This section deals with questions related to running web sites, sending and receiving email as well as general networking.
+
+=over 4
+
+=item *
+
+Should I use a web framework?
+
+=item *
+
+Which web framework should I use?
+
+=item *
+
+What is Plack and PSGI?
+
+=item *
+
+How do I remove HTML from a string?
+
+=item *
+
+How do I extract URLs?
+
+=item *
+
+How do I fetch an HTML file?
+
+=item *
+
+How do I automate an HTML form submission?
+
+=item *
+
+How do I decode or create those %-encodings on the web?
+
+=item *
+
+How do I redirect to another page?
+
+=item *
+
+How do I put a password on my web pages?
+
+=item *
+
+How do I make sure users can't enter values into a form that causes my CGI script to do bad things?
+
+=item *
+
+How do I parse a mail header?
+
+=item *
+
+How do I check a valid mail address?
+
+=item *
+
+How do I decode a MIME/BASE64 string?
+
+=item *
+
+How do I find the user's mail address?
+
+=item *
+
+How do I send email?
+
+=item *
+
+How do I use MIME to make an attachment to a mail message?
+
+=item *
+
+How do I read email?
+
+=item *
+
+How do I find out my hostname, domainname, or IP address?
+
+=item *
+
+How do I fetch/put an (S)FTP file?
+
+=item *
+
+How can I do RPC in Perl?
+
+=back
+
+
+
+=head1 CREDITS
+
+Tom Christiansen wrote the original perlfaq then expanded it with the
+help of Nat Torkington. brian d foy substantialy edited and expanded
+the perlfaq. perlfaq-workers and others have also supplied feedback,
+patches and corrections over the years.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Tom Christiansen wrote the original version of this document.
+brian d foy C<< <bdfoy at cpan.org> >> wrote this version. See the
+individual perlfaq documents for additional copyright information.
+
+This document is available under the same terms as Perl itself. Code
+examples in all the perlfaq documents are in the public domain. Use
+them as you see fit (and at your own risk with no warranty from anyone).

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq1.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq1.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq1.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,332 @@
+=head1 NAME
+
+perlfaq1 - General Questions About Perl
+
+=head1 DESCRIPTION
+
+This section of the FAQ answers very general, high-level questions
+about Perl.
+
+=head2 What is Perl?
+
+Perl is a high-level programming language with an eclectic heritage
+written by Larry Wall and a cast of thousands.
+
+Perl's process, file, and text manipulation facilities make it
+particularly well-suited for tasks involving quick prototyping, system
+utilities, software tools, system management tasks, database access,
+graphical programming, networking, and web programming.
+
+Perl derives from the ubiquitous C programming language and to a
+lesser extent from sed, awk, the Unix shell, and many other tools
+and languages.
+
+These strengths make it especially popular with web developers
+and system administrators. Mathematicians, geneticists, journalists,
+managers and many other people also use Perl.
+
+=head2 Who supports Perl? Who develops it? Why is it free?
+
+The original culture of the pre-populist Internet and the deeply-held
+beliefs of Perl's author, Larry Wall, gave rise to the free and open
+distribution policy of Perl. Perl is supported by its users. The
+core, the standard Perl library, the optional modules, and the
+documentation you're reading now were all written by volunteers.
+
+The core development team (known as the Perl Porters)
+are a group of highly altruistic individuals committed to
+producing better software for free than you could hope to purchase for
+money. You may snoop on pending developments via the
+L<archives|http://www.nntp.perl.org/group/perl.perl5.porters/>
+or read the L<faq|http://dev.perl.org/perl5/docs/p5p-faq.html>,
+or you can subscribe to the mailing list by sending
+perl5-porters-subscribe at perl.org a subscription request
+(an empty message with no subject is fine).
+
+While the GNU project includes Perl in its distributions, there's no
+such thing as "GNU Perl". Perl is not produced nor maintained by the
+Free Software Foundation. Perl's licensing terms are also more open
+than GNU software's tend to be.
+
+You can get commercial support of Perl if you wish, although for most
+users the informal support will more than suffice. See the answer to
+"Where can I buy a commercial version of Perl?" for more information.
+
+=head2 Which version of Perl should I use?
+
+(contributed by brian d foy)
+
+There is often a matter of opinion and taste, and there isn't any one
+answer that fits everyone. In general, you want to use either the current
+stable release, or the stable release immediately prior to that one.
+Currently, those are perl5.14.x and perl5.12.x, respectively.
+
+Beyond that, you have to consider several things and decide which is best
+for you.
+
+=over 4
+
+=item *
+
+If things aren't broken, upgrading perl may break them (or at least issue
+new warnings).
+
+=item *
+
+The latest versions of perl have more bug fixes.
+
+=item *
+
+The Perl community is geared toward supporting the most recent releases,
+so you'll have an easier time finding help for those.
+
+=item *
+
+Versions prior to perl5.004 had serious security problems with buffer
+overflows, and in some cases have CERT advisories (for instance,
+L<http://www.cert.org/advisories/CA-1997-17.html> ).
+
+=item *
+
+The latest versions are probably the least deployed and widely tested, so
+you may want to wait a few months after their release and see what
+problems others have if you are risk averse.
+
+=item *
+
+The immediate, previous releases (i.e. perl5.8.x ) are usually maintained
+for a while, although not at the same level as the current releases.
+
+=item *
+
+No one is actively supporting Perl 4. Ten years ago it was a dead
+camel carcass (according to this document). Now it's barely a skeleton
+as its whitewashed bones have fractured or eroded.
+
+=item *
+
+The current leading implementation of Perl 6, Rakudo, released a "useful,
+usable, 'early adopter'" distribution of Perl 6 (called Rakudo Star) in July of
+2010. Please see L<http://rakudo.org/> for more information.
+
+=item *
+
+There are really two tracks of perl development: a maintenance version
+and an experimental version. The maintenance versions are stable, and
+have an even number as the minor release (i.e. perl5.10.x, where 10 is the
+minor release). The experimental versions may include features that
+don't make it into the stable versions, and have an odd number as the
+minor release (i.e. perl5.9.x, where 9 is the minor release).
+
+=back
+
+=head2 What are Perl 4, Perl 5, or Perl 6?
+
+In short, Perl 4 is the parent to both Perl 5 and Perl 6. Perl 5 is the older
+sibling, and though they are different languages, someone who knows one will
+spot many similarities in the other.
+
+The number after Perl (i.e. the 5 after Perl 5) is the major release
+of the perl interpreter as well as the version of the language. Each
+major version has significant differences that earlier versions cannot
+support.
+
+The current major release of Perl is Perl 5, first released in
+1994. It can run scripts from the previous major release, Perl 4
+(March 1991), but has significant differences.
+
+Perl 6 is a reinvention of Perl, it is a language in the same lineage but
+not compatible. The two are complementary, not mutually exclusive. Perl 6 is
+not meant to replace Perl 5, and vice versa. See L</"What is Perl 6?"> below
+to find out more.
+
+See L<perlhist> for a history of Perl revisions.
+
+=head2 What is Perl 6?
+
+Perl 6 was I<originally> described as the community's rewrite of Perl 5.
+Development started in 2002; syntax and design work continue to this day.
+As the language has evolved, it has become clear that it is a separate
+language, incompatible with Perl 5 but in the same language family.
+
+Contrary to popular belief, Perl 6 and Perl 5 peacefully coexist with one
+another. Perl 6 has proven to be a fascinating source of ideas for those
+using Perl 5 (the L<Moose> object system is a well-known example). There is
+overlap in the communities, and this overlap fosters the tradition of sharing
+and borrowing that have been instrumental to Perl's success. The current
+leading implementation of Perl 6 is Rakudo, and you can learn more about
+it at L<http://rakudo.org>.
+
+If you want to learn more about Perl 6, or have a desire to help in
+the crusade to make Perl a better place then read the Perl 6 developers
+page at L<http://www.perl6.org/> and get involved.
+
+"We're really serious about reinventing everything that needs reinventing."
+--Larry Wall
+
+=head2 How stable is Perl?
+
+Production releases, which incorporate bug fixes and new functionality,
+are widely tested before release. Since the 5.000 release, we have
+averaged about one production release per year.
+
+The Perl development team occasionally make changes to the
+internal core of the language, but all possible efforts are made toward
+backward compatibility.
+
+=head2 Is Perl difficult to learn?
+
+No, Perl is easy to start L<learning|http://learn.perl.org/> --and easy to keep learning. It looks
+like most programming languages you're likely to have experience
+with, so if you've ever written a C program, an awk script, a shell
+script, or even a BASIC program, you're already partway there.
+
+Most tasks only require a small subset of the Perl language. One of
+the guiding mottos for Perl development is "there's more than one way
+to do it" (TMTOWTDI, sometimes pronounced "tim toady"). Perl's
+learning curve is therefore shallow (easy to learn) and long (there's
+a whole lot you can do if you really want).
+
+Finally, because Perl is frequently (but not always, and certainly not by
+definition) an interpreted language, you can write your programs and test
+them without an intermediate compilation step, allowing you to experiment
+and test/debug quickly and easily. This ease of experimentation flattens
+the learning curve even more.
+
+Things that make Perl easier to learn: Unix experience, almost any kind
+of programming experience, an understanding of regular expressions, and
+the ability to understand other people's code. If there's something you
+need to do, then it's probably already been done, and a working example is
+usually available for free. Don't forget Perl modules, either.
+They're discussed in Part 3 of this FAQ, along with L<CPAN|http://www.cpan.org/>, which is
+discussed in Part 2.
+
+=head2 How does Perl compare with other languages like Java, Python, REXX, Scheme, or Tcl?
+
+Perl can be used for almost any coding problem, even ones which require
+integrating specialist C code for extra speed. As with any tool it can
+be used well or badly. Perl has many strengths, and a few weaknesses,
+precisely which areas are good and bad is often a personal choice.
+
+When choosing a language you should also be influenced by the
+L<resources|http://www.cpan.org/>, L<testing culture|http://www.cpantesters.org/>
+and L<community|http://www.perl.org/community.html> which surrounds it.
+
+For comparisons to a specific language it is often best to create
+a small project in both languages and compare the results, make sure
+to use all the L<resources|http://www.cpan.org/> of each language,
+as a language is far more than just it's syntax.
+
+=head2 Can I do [task] in Perl?
+
+Perl is flexible and extensible enough for you to use on virtually any
+task, from one-line file-processing tasks to large, elaborate systems.
+
+For many people, Perl serves as a great replacement for shell scripting.
+For others, it serves as a convenient, high-level replacement for most of
+what they'd program in low-level languages like C or C++. It's ultimately
+up to you (and possibly your management) which tasks you'll use Perl
+for and which you won't.
+
+If you have a library that provides an API, you can make any component
+of it available as just another Perl function or variable using a Perl
+extension written in C or C++ and dynamically linked into your main
+perl interpreter. You can also go the other direction, and write your
+main program in C or C++, and then link in some Perl code on the fly,
+to create a powerful application. See L<perlembed>.
+
+That said, there will always be small, focused, special-purpose
+languages dedicated to a specific problem domain that are simply more
+convenient for certain kinds of problems. Perl tries to be all things
+to all people, but nothing special to anyone. Examples of specialized
+languages that come to mind include prolog and matlab.
+
+=head2 When shouldn't I program in Perl?
+
+One good reason is when you already have an existing
+application written in another language that's all done (and done
+well), or you have an application language specifically designed for a
+certain task (e.g. prolog, make).
+
+If you find that you need to speed up a specific part of a Perl
+application (not something you often need) you may want to use C,
+but you can access this from your Perl code with L<perlxs>.
+
+=head2 What's the difference between "perl" and "Perl"?
+
+"Perl" is the name of the language. Only the "P" is capitalized.
+The name of the interpreter (the program which runs the Perl script)
+is "perl" with a lowercase "p".
+
+You may or may not choose to follow this usage. But never write "PERL",
+because perl is not an acronym.
+
+=head2 What is a JAPH?
+
+(contributed by brian d foy)
+
+JAPH stands for "Just another Perl hacker,", which Randal Schwartz used
+to sign email and usenet messages starting in the late 1980s. He
+previously used the phrase with many subjects ("Just another x hacker,"),
+so to distinguish his JAPH, he started to write them as Perl programs:
+
+    print "Just another Perl hacker,";
+
+Other people picked up on this and started to write clever or obfuscated
+programs to produce the same output, spinning things quickly out of
+control while still providing hours of amusement for their creators and
+readers.
+
+CPAN has several JAPH programs at L<http://www.cpan.org/misc/japh>.
+
+=head2 How can I convince others to use Perl?
+
+(contributed by brian d foy)
+
+Appeal to their self interest! If Perl is new (and thus scary) to them,
+find something that Perl can do to solve one of their problems. That
+might mean that Perl either saves them something (time, headaches, money)
+or gives them something (flexibility, power, testability).
+
+In general, the benefit of a language is closely related to the skill of
+the people using that language. If you or your team can be faster,
+better, and stronger through Perl, you'll deliver more value. Remember,
+people often respond better to what they get out of it. If you run
+into resistance, figure out what those people get out of the other
+choice and how Perl might satisfy that requirement.
+
+You don't have to worry about finding or paying for Perl; it's freely
+available and several popular operating systems come with Perl. Community
+support in places such as Perlmonks ( L<http://www.perlmonks.com> )
+and the various Perl mailing lists ( L<http://lists.perl.org> ) means that
+you can usually get quick answers to your problems.
+
+Finally, keep in mind that Perl might not be the right tool for every
+job. You're a much better advocate if your claims are reasonable and
+grounded in reality. Dogmatically advocating anything tends to make
+people discount your message. Be honest about possible disadvantages
+to your choice of Perl since any choice has trade-offs.
+
+You might find these links useful:
+
+=over 4
+
+=item * L<http://www.perl.org/about.html>
+
+=item * L<http://perltraining.com.au/whyperl.html>
+
+=back
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples here are in the public
+domain. You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit. A simple comment in the code giving credit to the FAQ would
+be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq2.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq2.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq2.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,246 @@
+=head1 NAME
+
+perlfaq2 - Obtaining and Learning about Perl
+
+=head1 DESCRIPTION
+
+This section of the FAQ answers questions about where to find
+source and documentation for Perl, support, and
+related matters.
+
+=head2 What machines support Perl? Where do I get it?
+
+The standard release of Perl (the one maintained by the Perl
+development team) is distributed only in source code form. You
+can find the latest releases at L<http://www.cpan.org/src/>.
+
+Perl builds and runs on a bewildering number of platforms. Virtually
+all known and current Unix derivatives are supported (perl's native
+platform), as are other systems like VMS, DOS, OS/2, Windows,
+QNX, BeOS, OS X, MPE/iX and the Amiga.
+
+Binary distributions for some proprietary platforms can be found
+L<http://www.cpan.org/ports/> directory. Because these are not part of
+the standard distribution, they may and in fact do differ from the
+base perl port in a variety of ways. You'll have to check their
+respective release notes to see just what the differences are. These
+differences can be either positive (e.g. extensions for the features
+of the particular platform that are not supported in the source
+release of perl) or negative (e.g. might be based upon a less current
+source release of perl).
+
+=head2 How can I get a binary version of Perl?
+
+See L<CPAN Ports|http://www.cpan.org/ports/>
+
+=head2 I don't have a C compiler. How can I build my own Perl interpreter?
+
+For Windows, use a binary version of Perl,
+L<Strawberry Perl|http://strawberryperl.com/> and
+L<ActivePerl|http://www.activestate.com/activeperl> come with a
+bundled C compiler.
+
+Otherwise if you really do want to build Perl, you need to get a
+binary version of C<gcc> for your system first. Use a search
+engine to find out how to do this for your operating system.
+
+=head2 I copied the Perl binary from one machine to another, but scripts don't work.
+
+That's probably because you forgot libraries, or library paths differ.
+You really should build the whole distribution on the machine it will
+eventually live on, and then type C<make install>. Most other
+approaches are doomed to failure.
+
+One simple way to check that things are in the right place is to print out
+the hard-coded C<@INC> that perl looks through for libraries:
+
+    % perl -le 'print for @INC'
+
+If this command lists any paths that don't exist on your system, then you
+may need to move the appropriate libraries to these locations, or create
+symbolic links, aliases, or shortcuts appropriately. C<@INC> is also printed as
+part of the output of
+
+    % perl -V
+
+You might also want to check out
+L<perlfaq8/"How do I keep my own module/library directory?">.
+
+=head2 I grabbed the sources and tried to compile but gdbm/dynamic loading/malloc/linking/... failed. How do I make it work?
+
+Read the F<INSTALL> file, which is part of the source distribution.
+It describes in detail how to cope with most idiosyncrasies that the
+C<Configure> script can't work around for any given system or
+architecture.
+
+=head2 What modules and extensions are available for Perl? What is CPAN?
+
+CPAN stands for Comprehensive Perl Archive Network, a multi-gigabyte
+archive replicated on hundreds of machines all over the world. CPAN
+contains tens of thousands of modules and extensions, source code
+and documentation, designed for I<everything> from commercial
+database interfaces to keyboard/screen control and running large web sites.
+
+You can search CPAN on L<http://metacpan.org> or
+L<http://search.cpan.org/>.
+
+The master web site for CPAN is L<http://www.cpan.org/>,
+L<http://www.cpan.org/SITES.html> lists all mirrors.
+
+See the CPAN FAQ at L<http://www.cpan.org/misc/cpan-faq.html> for answers
+to the most frequently asked questions about CPAN.
+
+The L<Task::Kensho> module has a list of recommended modules which
+you should review as a good starting point.
+
+=head2 Where can I get information on Perl?
+
+=over 4
+
+=item * L<http://www.perl.org/>
+
+=item * L<http://perldoc.perl.org/>
+
+=item * L<http://learn.perl.org/>
+
+=back
+
+The complete Perl documentation is available with the Perl distribution.
+If you have Perl installed locally, you probably have the documentation
+installed as well: type C<perldoc perl> in a terminal or
+L<view online|http://perldoc.perl.org/perl.html>.
+
+(Some operating system distributions may ship the documentation in a different
+package; for instance, on Debian, you need to install the C<perl-doc> package.)
+
+Many good books have been written about Perl--see the section later in
+L<perlfaq2> for more details.
+
+=head2 What is perl.com? Perl Mongers? pm.org? perl.org? cpan.org?
+
+L<Perl.com|http://www.perl.com/> used to be part of the O'Reilly
+Network, a subsidiary of O'Reilly Media. Although it retains most of
+the original content from its O'Reilly Network, it is now hosted by
+L<The Perl Foundation|http://www.perlfoundation.org/>.
+
+The Perl Foundation is an advocacy organization for the Perl language
+which maintains the web site L<http://www.perl.org/> as a general
+advocacy site for the Perl language. It uses the domain to provide
+general support services to the Perl community, including the hosting
+of mailing lists, web sites, and other services. There are also many
+other sub-domains for special topics like learning Perl and jobs in Perl,
+such as:
+
+=over 4
+
+=item * L<http://www.perl.org/>
+
+=item * L<http://learn.perl.org/>
+
+=item * L<http://jobs.perl.org/>
+
+=item * L<http://lists.perl.org/>
+
+=back
+
+L<Perl Mongers|http://www.pm.org/> uses the pm.org domain for services
+related to local Perl user groups, including the hosting of mailing lists
+and web sites. See the L<Perl Mongers web site|http://www.pm.org/> for more
+information about joining, starting, or requesting services for a
+Perl user group.
+
+CPAN, or the Comprehensive Perl Archive Network L<http://www.cpan.org/>,
+is a replicated, worldwide repository of Perl software.
+See L<What is CPAN?|/"What modules and extensions are available for Perl? What is CPAN?">.
+
+=head2 Where can I post questions?
+
+There are many Perl L<mailing lists|lists.perl.org> for various
+topics, specifically the L<beginners list|http://lists.perl.org/list/beginners.html>
+may be of use.
+
+Other places to ask questions are on the
+L<PerlMonks site|http://www.perlmonks.org/> or
+L<stackoverflow|http://stackoverflow.com/questions/tagged/perl>.
+
+=head2 Perl Books
+
+There are many good L<books on Perl|http://www.perl.org/books/library.html>.
+
+=head2 Which magazines have Perl content?
+
+There's also I<$foo Magazin>, a German magazine dedicated to Perl, at
+( L<http://www.foo-magazin.de> ). The I<Perl-Zeitung> is another
+German-speaking magazine for Perl beginners (see
+L<http://perl-zeitung.at.tf> ).
+
+Several unix/linux releated magazines frequently includes articles on Perl.
+
+=head2 Which Perl blogs should I read?
+
+L<Perl News|http://perlnews.org/> covers some of the major events in the Perl
+world, L<Perl Weekly|http://perlweekly.com/> is a weekly e-mail
+(and RSS feed) of hand-picked Perl articles.
+
+L<http://blogs.perl.org/> hosts many Perl blogs, there are also
+several blog aggregators: L<Perlsphere|http://perlsphere.net/> and
+L<IronMan|http://ironman.enlightenedperl.org/> are two of them.
+
+=head2 What mailing lists are there for Perl?
+
+A comprehensive list of Perl-related mailing lists can be found at
+L<http://lists.perl.org/>
+
+=head2 Where can I buy a commercial version of Perl?
+
+Perl already I<is> commercial software: it has a license
+that you can grab and carefully read to your manager. It is distributed
+in releases and comes in well-defined packages. There is a very large
+and supportive user community and an extensive literature.
+
+If you still need commercial support
+L<ActiveState|http://www.activestate.com/activeperl> offers
+this.
+
+=head2 Where do I send bug reports?
+
+(contributed by brian d foy)
+
+First, ensure that you've found an actual bug. Second, ensure you've
+found an actual bug.
+
+If you've found a bug with the perl interpreter or one of the modules
+in the standard library (those that come with Perl), you can use the
+L<perlbug> utility that comes with Perl (>= 5.004). It collects
+information about your installation to include with your message, then
+sends the message to the right place.
+
+To determine if a module came with your version of Perl, you can
+install and use the L<Module::CoreList> module. It has the information
+about the modules (with their versions) included with each release
+of Perl.
+
+Every CPAN module has a bug tracker set up in RT, L<http://rt.cpan.org>.
+You can submit bugs to RT either through its web interface or by
+email. To email a bug report, send it to
+bug-E<lt>distribution-nameE<gt>@rt.cpan.org . For example, if you
+wanted to report a bug in L<Business::ISBN>, you could send a message to
+bug-Business-ISBN at rt.cpan.org .
+
+Some modules might have special reporting requirements, such as a
+Github or Google Code tracking system, so you should check the
+module documentation too.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples here are in the public
+domain. You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit. A simple comment in the code giving credit to the FAQ would
+be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq3.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq3.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq3.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1167 @@
+=head1 NAME
+
+perlfaq3 - Programming Tools
+
+=head1 DESCRIPTION
+
+This section of the FAQ answers questions related to programmer tools
+and programming support.
+
+=head2 How do I do (anything)?
+
+Have you looked at CPAN (see L<perlfaq2>)? The chances are that
+someone has already written a module that can solve your problem.
+Have you read the appropriate manpages? Here's a brief index:
+
+=over 4
+
+=item Basics
+
+=over 4
+
+=item L<perldata> - Perl data types
+
+=item L<perlvar> - Perl pre-defined variables
+
+=item L<perlsyn> - Perl syntax
+
+=item L<perlop> - Perl operators and precedence
+
+=item L<perlsub> - Perl subroutines
+
+=back
+
+
+=item Execution
+
+=over 4
+
+=item L<perlrun> - how to execute the Perl interpreter
+
+=item L<perldebug> - Perl debugging
+
+=back
+
+
+=item Functions
+
+=over 4
+
+=item L<perlfunc> - Perl builtin functions
+
+=back
+
+=item Objects
+
+=over 4
+
+=item L<perlref> - Perl references and nested data structures
+
+=item L<perlmod> - Perl modules (packages and symbol tables)
+
+=item L<perlobj> - Perl objects
+
+=item L<perltie> - how to hide an object class in a simple variable
+
+=back
+
+
+=item Data Structures
+
+=over 4
+
+=item L<perlref> - Perl references and nested data structures
+
+=item L<perllol> - Manipulating arrays of arrays in Perl
+
+=item L<perldsc> - Perl Data Structures Cookbook
+
+=back
+
+=item Modules
+
+=over 4
+
+=item L<perlmod> - Perl modules (packages and symbol tables)
+
+=item L<perlmodlib> - constructing new Perl modules and finding existing ones
+
+=back
+
+
+=item Regexes
+
+=over 4
+
+=item L<perlre> - Perl regular expressions
+
+=item L<perlfunc> - Perl builtin functions>
+
+=item L<perlop> - Perl operators and precedence
+
+=item L<perllocale> - Perl locale handling (internationalization and localization)
+
+=back
+
+
+=item Moving to perl5
+
+=over 4
+
+=item L<perltrap> - Perl traps for the unwary
+
+=item L<perl>
+
+=back
+
+
+=item Linking with C
+
+=over 4
+
+=item L<perlxstut> - Tutorial for writing XSUBs
+
+=item L<perlxs> - XS language reference manual
+
+=item L<perlcall> - Perl calling conventions from C
+
+=item L<perlguts> - Introduction to the Perl API
+
+=item L<perlembed> - how to embed perl in your C program
+
+=back
+
+=item Various
+
+L<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz>
+(not a man-page but still useful, a collection of various essays on
+Perl techniques)
+
+=back
+
+A crude table of contents for the Perl manpage set is found in L<perltoc>.
+
+=head2 How can I use Perl interactively?
+
+The typical approach uses the Perl debugger, described in the
+L<perldebug(1)> manpage, on an "empty" program, like this:
+
+    perl -de 42
+
+Now just type in any legal Perl code, and it will be immediately
+evaluated. You can also examine the symbol table, get stack
+backtraces, check variable values, set breakpoints, and other
+operations typically found in symbolic debuggers.
+
+You can also use L<Devel::REPL> which is an interactive shell for Perl,
+commonly known as a REPL - Read, Evaluate, Print, Loop. It provides
+various handy features.
+
+=head2 How do I find which modules are installed on my system?
+
+From the command line, you can use the C<cpan> command's C<-l> switch:
+
+    $ cpan -l
+
+You can also use C<cpan>'s C<-a> switch to create an autobundle file
+that C<CPAN.pm> understands and can use to re-install every module:
+
+    $ cpan -a
+
+Inside a Perl program, you can use the L<ExtUtils::Installed> module to
+show all installed distributions, although it can take awhile to do
+its magic. The standard library which comes with Perl just shows up
+as "Perl" (although you can get those with L<Module::CoreList>).
+
+    use ExtUtils::Installed;
+
+    my $inst    = ExtUtils::Installed->new();
+    my @modules = $inst->modules();
+
+If you want a list of all of the Perl module filenames, you
+can use L<File::Find::Rule>:
+
+    use File::Find::Rule;
+
+    my @files = File::Find::Rule->
+        extras({follow => 1})->
+        file()->
+        name( '*.pm' )->
+        in( @INC )
+        ;
+
+If you do not have that module, you can do the same thing
+with L<File::Find> which is part of the standard library:
+
+    use File::Find;
+    my @files;
+
+    find(
+        {
+        wanted => sub {
+            push @files, $File::Find::fullname
+            if -f $File::Find::fullname && /\.pm$/
+        },
+        follow => 1,
+        follow_skip => 2,
+        },
+        @INC
+    );
+
+    print join "\n", @files;
+
+If you simply need to check quickly to see if a module is
+available, you can check for its documentation. If you can
+read the documentation the module is most likely installed.
+If you cannot read the documentation, the module might not
+have any (in rare cases):
+
+    $ perldoc Module::Name
+
+You can also try to include the module in a one-liner to see if
+perl finds it:
+
+    $ perl -MModule::Name -e1
+
+(If you don't receive a "Can't locate ... in @INC" error message, then Perl
+found the module name you asked for.)
+
+=head2 How do I debug my Perl programs?
+
+(contributed by brian d foy)
+
+Before you do anything else, you can help yourself by ensuring that
+you let Perl tell you about problem areas in your code. By turning
+on warnings and strictures, you can head off many problems before
+they get too big. You can find out more about these in L<strict>
+and L<warnings>.
+
+    #!/usr/bin/perl
+    use strict;
+    use warnings;
+
+Beyond that, the simplest debugger is the C<print> function. Use it
+to look at values as you run your program:
+
+    print STDERR "The value is [$value]\n";
+
+The L<Data::Dumper> module can pretty-print Perl data structures:
+
+    use Data::Dumper qw( Dumper );
+    print STDERR "The hash is " . Dumper( \%hash ) . "\n";
+
+Perl comes with an interactive debugger, which you can start with the
+C<-d> switch. It's fully explained in L<perldebug>.
+
+If you'd like a graphical user interface and you have L<Tk>, you can use
+C<ptkdb>. It's on CPAN and available for free.
+
+If you need something much more sophisticated and controllable, Leon
+Brocard's L<Devel::ebug> (which you can call with the C<-D> switch as C<-Debug>)
+gives you the programmatic hooks into everything you need to write your
+own (without too much pain and suffering).
+
+You can also use a commercial debugger such as Affrus (Mac OS X), Komodo
+from Activestate (Windows and Mac OS X), or EPIC (most platforms).
+
+=head2 How do I profile my Perl programs?
+
+(contributed by brian d foy, updated Fri Jul 25 12:22:26 PDT 2008)
+
+The C<Devel> namespace has several modules which you can use to
+profile your Perl programs.
+
+The L<Devel::NYTProf> (New York Times Profiler) does both statement
+and subroutine profiling. It's available from CPAN and you also invoke
+it with the C<-d> switch:
+
+    perl -d:NYTProf some_perl.pl
+
+It creates a database of the profile information that you can turn into
+reports. The C<nytprofhtml> command turns the data into an HTML report
+similar to the L<Devel::Cover> report:
+
+    nytprofhtml
+
+You might also be interested in using the L<Benchmark> to
+measure and compare code snippets.
+
+You can read more about profiling in I<Programming Perl>, chapter 20,
+or I<Mastering Perl>, chapter 5.
+
+L<perldebguts> documents creating a custom debugger if you need to
+create a special sort of profiler. brian d foy describes the process
+in I<The Perl Journal>, "Creating a Perl Debugger",
+L<http://www.ddj.com/184404522> , and "Profiling in Perl"
+L<http://www.ddj.com/184404580> .
+
+Perl.com has two interesting articles on profiling: "Profiling Perl",
+by Simon Cozens, L<http://www.perl.com/lpt/a/850> and "Debugging and
+Profiling mod_perl Applications", by Frank Wiles,
+L<http://www.perl.com/pub/a/2006/02/09/debug_mod_perl.html> .
+
+Randal L. Schwartz writes about profiling in "Speeding up Your Perl
+Programs" for I<Unix Review>,
+L<http://www.stonehenge.com/merlyn/UnixReview/col49.html> , and "Profiling
+in Template Toolkit via Overriding" for I<Linux Magazine>,
+L<http://www.stonehenge.com/merlyn/LinuxMag/col75.html> .
+
+=head2 How do I cross-reference my Perl programs?
+
+The L<B::Xref> module can be used to generate cross-reference reports
+for Perl programs.
+
+    perl -MO=Xref[,OPTIONS] scriptname.plx
+
+=head2 Is there a pretty-printer (formatter) for Perl?
+
+L<Perl::Tidy> comes with a perl script L<perltidy> which indents and
+reformats Perl scripts to make them easier to read by trying to follow
+the rules of the L<perlstyle>. If you write Perl, or spend much time reading
+Perl, you will probably find it useful.
+
+Of course, if you simply follow the guidelines in L<perlstyle>,
+you shouldn't need to reformat. The habit of formatting your code
+as you write it will help prevent bugs. Your editor can and should
+help you with this. The perl-mode or newer cperl-mode for emacs
+can provide remarkable amounts of help with most (but not all)
+code, and even less programmable editors can provide significant
+assistance. Tom Christiansen and many other VI users swear by
+the following settings in vi and its clones:
+
+    set ai sw=4
+    map! ^O {^M}^[O^T
+
+Put that in your F<.exrc> file (replacing the caret characters
+with control characters) and away you go. In insert mode, ^T is
+for indenting, ^D is for undenting, and ^O is for blockdenting--as
+it were. A more complete example, with comments, can be found at
+L<http://www.cpan.org/authors/id/TOMC/scripts/toms.exrc.gz>
+
+=head2 Is there an IDE or Windows Perl Editor?
+
+Perl programs are just plain text, so any editor will do.
+
+If you're on Unix, you already have an IDE--Unix itself. The Unix
+philosophy is the philosophy of several small tools that each do one
+thing and do it well. It's like a carpenter's toolbox.
+
+If you want an IDE, check the following (in alphabetical order, not
+order of preference):
+
+=over 4
+
+=item Eclipse
+
+L<http://e-p-i-c.sf.net/>
+
+The Eclipse Perl Integration Project integrates Perl
+editing/debugging with Eclipse.
+
+=item Enginsite
+
+L<http://www.enginsite.com/>
+
+Perl Editor by EngInSite is a complete integrated development
+environment (IDE) for creating, testing, and  debugging  Perl scripts;
+the tool runs on Windows 9x/NT/2000/XP or later.
+
+=item Kephra
+
+L<http://kephra.sf.net>
+
+GUI Editor written in Perl using wxWidgets and Scintilla with lots of smaller features.
+Aims for an UI based on Perls principles like TIMTWTDI and "easy thinkd should be ..".
+
+=item Komodo
+
+L<http://www.ActiveState.com/Products/Komodo/>
+
+ActiveState's cross-platform (as of October 2004, that's Windows, Linux,
+and Solaris), multi-language IDE has Perl support, including a regular expression
+debugger and remote debugging.
+
+=item Notepad++
+
+L<http://notepad-plus.sourceforge.net/>
+
+=item Open Perl IDE
+
+L<http://open-perl-ide.sourceforge.net/>
+
+Open Perl IDE is an integrated development environment for writing
+and debugging Perl scripts with ActiveState's ActivePerl distribution
+under Windows 95/98/NT/2000.
+
+=item OptiPerl
+
+L<http://www.optiperl.com/>
+
+OptiPerl is a Windows IDE with simulated CGI environment, including
+debugger and syntax-highlighting editor.
+
+=item Padre
+
+L<http://padre.perlide.org/>
+
+Padre is cross-platform IDE for Perl written in Perl using wxWidgets to provide
+a native look and feel. It's open source under the Artistic License. It
+is one of the newer Perl IDEs.
+
+=item PerlBuilder
+
+L<http://www.solutionsoft.com/perl.htm>
+
+PerlBuilder is an integrated development environment for Windows that
+supports Perl development.
+
+=item visiPerl+
+
+L<http://helpconsulting.net/visiperl/index.html>
+
+From Help Consulting, for Windows.
+
+=item Visual Perl
+
+L<http://www.activestate.com/Products/Visual_Perl/>
+
+Visual Perl is a Visual Studio.NET plug-in from ActiveState.
+
+=item Zeus
+
+L<http://www.zeusedit.com/lookmain.html>
+
+Zeus for Windows is another Win32 multi-language editor/IDE
+that comes with support for Perl.
+
+=back
+
+For editors: if you're on Unix you probably have vi or a vi clone
+already, and possibly an emacs too, so you may not need to download
+anything. In any emacs the cperl-mode (M-x cperl-mode) gives you
+perhaps the best available Perl editing mode in any editor.
+
+If you are using Windows, you can use any editor that lets you work
+with plain text, such as NotePad or WordPad. Word processors, such as
+Microsoft Word or WordPerfect, typically do not work since they insert
+all sorts of behind-the-scenes information, although some allow you to
+save files as "Text Only". You can also download text editors designed
+specifically for programming, such as Textpad (
+L<http://www.textpad.com/> ) and UltraEdit ( L<http://www.ultraedit.com/> ),
+among others.
+
+If you are using MacOS, the same concerns apply. MacPerl (for Classic
+environments) comes with a simple editor. Popular external editors are
+BBEdit ( L<http://www.bbedit.com/> ) or Alpha (
+L<http://www.his.com/~jguyer/Alpha/Alpha8.html> ). MacOS X users can use
+Unix editors as well.
+
+=over 4
+
+=item GNU Emacs
+
+L<http://www.gnu.org/software/emacs/windows/ntemacs.html>
+
+=item MicroEMACS
+
+L<http://www.microemacs.de/>
+
+=item XEmacs
+
+L<http://www.xemacs.org/Download/index.html>
+
+=item Jed
+
+L<http://space.mit.edu/~davis/jed/>
+
+=back
+
+or a vi clone such as
+
+=over 4
+
+=item Vim
+
+L<http://www.vim.org/>
+
+=item Vile
+
+L<http://dickey.his.com/vile/vile.html>
+
+=back
+
+The following are Win32 multilanguage editor/IDEs that support Perl:
+
+=over 4
+
+=item Codewright
+
+L<http://www.borland.com/codewright/>
+
+=item MultiEdit
+
+L<http://www.MultiEdit.com/>
+
+=item SlickEdit
+
+L<http://www.slickedit.com/>
+
+=item ConTEXT
+
+L<http://www.contexteditor.org/>
+
+=back
+
+There is also a toyedit Text widget based editor written in Perl
+that is distributed with the Tk module on CPAN. The ptkdb
+( L<http://ptkdb.sourceforge.net/> ) is a Perl/Tk-based debugger that
+acts as a development environment of sorts. Perl Composer
+( L<http://perlcomposer.sourceforge.net/> ) is an IDE for Perl/Tk
+GUI creation.
+
+In addition to an editor/IDE you might be interested in a more
+powerful shell environment for Win32. Your options include
+
+=over 4
+
+=item Bash
+
+from the Cygwin package ( L<http://sources.redhat.com/cygwin/> )
+
+=item Ksh
+
+from the MKS Toolkit ( L<http://www.mkssoftware.com/> ), or the Bourne shell of
+the U/WIN environment ( L<http://www.research.att.com/sw/tools/uwin/> )
+
+=item Tcsh
+
+L<ftp://ftp.astron.com/pub/tcsh/> , see also
+L<http://www.primate.wisc.edu/software/csh-tcsh-book/>
+
+=item Zsh
+
+L<http://www.zsh.org/>
+
+=back
+
+MKS and U/WIN are commercial (U/WIN is free for educational and
+research purposes), Cygwin is covered by the GNU General Public
+License (but that shouldn't matter for Perl use). The Cygwin, MKS,
+and U/WIN all contain (in addition to the shells) a comprehensive set
+of standard Unix toolkit utilities.
+
+If you're transferring text files between Unix and Windows using FTP
+be sure to transfer them in ASCII mode so the ends of lines are
+appropriately converted.
+
+On Mac OS the MacPerl Application comes with a simple 32k text editor
+that behaves like a rudimentary IDE. In contrast to the MacPerl Application
+the MPW Perl tool can make use of the MPW Shell itself as an editor (with
+no 32k limit).
+
+=over 4
+
+=item Affrus
+
+is a full Perl development environment with full debugger support
+( L<http://www.latenightsw.com> ).
+
+=item Alpha
+
+is an editor, written and extensible in Tcl, that nonetheless has
+built-in support for several popular markup and programming languages,
+including Perl and HTML ( L<http://www.his.com/~jguyer/Alpha/Alpha8.html> ).
+
+=item BBEdit and BBEdit Lite
+
+are text editors for Mac OS that have a Perl sensitivity mode
+( L<http://web.barebones.com/> ).
+
+=back
+
+=head2 Where can I get Perl macros for vi?
+
+For a complete version of Tom Christiansen's vi configuration file,
+see L<http://www.cpan.org/authors/Tom_Christiansen/scripts/toms.exrc.gz> ,
+the standard benchmark file for vi emulators. The file runs best with nvi,
+the current version of vi out of Berkeley, which incidentally can be built
+with an embedded Perl interpreter--see L<http://www.cpan.org/src/misc/> .
+
+=head2 Where can I get perl-mode or cperl-mode for emacs?
+X<emacs>
+
+Since Emacs version 19 patchlevel 22 or so, there have been both a
+perl-mode.el and support for the Perl debugger built in. These should
+come with the standard Emacs 19 distribution.
+
+Note that the perl-mode of emacs will have fits with C<"main'foo">
+(single quote), and mess up the indentation and highlighting. You
+are probably using C<"main::foo"> in new Perl code anyway, so this
+shouldn't be an issue.
+
+For CPerlMode, see L<http://www.emacswiki.org/cgi-bin/wiki/CPerlMode>
+
+=head2 How can I use curses with Perl?
+
+The Curses module from CPAN provides a dynamically loadable object
+module interface to a curses library. A small demo can be found at the
+directory L<http://www.cpan.org/authors/Tom_Christiansen/scripts/rep.gz> ;
+this program repeats a command and updates the screen as needed, rendering
+B<rep ps axu> similar to B<top>.
+
+=head2 How can I write a GUI (X, Tk, Gtk, etc.) in Perl?
+X<GUI> X<Tk> X<Wx> X<WxWidgets> X<Gtk> X<Gtk2> X<CamelBones> X<Qt>
+
+(contributed by Ben Morrow)
+
+There are a number of modules which let you write GUIs in Perl. Most
+GUI toolkits have a perl interface: an incomplete list follows.
+
+=over 4
+
+=item Tk
+
+This works under Unix and Windows, and the current version doesn't
+look half as bad under Windows as it used to. Some of the gui elements
+still don't 'feel' quite right, though. The interface is very natural
+and 'perlish', making it easy to use in small scripts that just need a
+simple gui. It hasn't been updated in a while.
+
+=item Wx
+
+This is a Perl binding for the cross-platform wxWidgets toolkit
+( L<http://www.wxwidgets.org> ). It works under Unix, Win32 and Mac OS X,
+using native widgets (Gtk under Unix). The interface follows the C++
+interface closely, but the documentation is a little sparse for someone
+who doesn't know the library, mostly just referring you to the C++
+documentation.
+
+=item Gtk and Gtk2
+
+These are Perl bindings for the Gtk toolkit ( L<http://www.gtk.org> ). The
+interface changed significantly between versions 1 and 2 so they have
+separate Perl modules. It runs under Unix, Win32 and Mac OS X (currently
+it requires an X server on Mac OS, but a 'native' port is underway), and
+the widgets look the same on every platform: i.e., they don't match the
+native widgets. As with Wx, the Perl bindings follow the C API closely,
+and the documentation requires you to read the C documentation to
+understand it.
+
+=item Win32::GUI
+
+This provides access to most of the Win32 GUI widgets from Perl.
+Obviously, it only runs under Win32, and uses native widgets. The Perl
+interface doesn't really follow the C interface: it's been made more
+Perlish, and the documentation is pretty good. More advanced stuff may
+require familiarity with the C Win32 APIs, or reference to MSDN.
+
+=item CamelBones
+
+CamelBones ( L<http://camelbones.sourceforge.net> ) is a Perl interface to
+Mac OS X's Cocoa GUI toolkit, and as such can be used to produce native
+GUIs on Mac OS X. It's not on CPAN, as it requires frameworks that
+CPAN.pm doesn't know how to install, but installation is via the
+standard OSX package installer. The Perl API is, again, very close to
+the ObjC API it's wrapping, and the documentation just tells you how to
+translate from one to the other.
+
+=item Qt
+
+There is a Perl interface to TrollTech's Qt toolkit, but it does not
+appear to be maintained.
+
+=item Athena
+
+Sx is an interface to the Athena widget set which comes with X, but
+again it appears not to be much used nowadays.
+
+=back
+
+=head2 How can I make my Perl program run faster?
+
+The best way to do this is to come up with a better algorithm. This
+can often make a dramatic difference. Jon Bentley's book
+I<Programming Pearls> (that's not a misspelling!)  has some good tips
+on optimization, too. Advice on benchmarking boils down to: benchmark
+and profile to make sure you're optimizing the right part, look for
+better algorithms instead of microtuning your code, and when all else
+fails consider just buying faster hardware. You will probably want to
+read the answer to the earlier question "How do I profile my Perl
+programs?" if you haven't done so already.
+
+A different approach is to autoload seldom-used Perl code. See the
+AutoSplit and AutoLoader modules in the standard distribution for
+that. Or you could locate the bottleneck and think about writing just
+that part in C, the way we used to take bottlenecks in C code and
+write them in assembler. Similar to rewriting in C, modules that have
+critical sections can be written in C (for instance, the PDL module
+from CPAN).
+
+If you're currently linking your perl executable to a shared
+I<libc.so>, you can often gain a 10-25% performance benefit by
+rebuilding it to link with a static libc.a instead. This will make a
+bigger perl executable, but your Perl programs (and programmers) may
+thank you for it. See the F<INSTALL> file in the source distribution
+for more information.
+
+The undump program was an ancient attempt to speed up Perl program by
+storing the already-compiled form to disk. This is no longer a viable
+option, as it only worked on a few architectures, and wasn't a good
+solution anyway.
+
+=head2 How can I make my Perl program take less memory?
+
+When it comes to time-space tradeoffs, Perl nearly always prefers to
+throw memory at a problem. Scalars in Perl use more memory than
+strings in C, arrays take more than that, and hashes use even more. While
+there's still a lot to be done, recent releases have been addressing
+these issues. For example, as of 5.004, duplicate hash keys are
+shared amongst all hashes using them, so require no reallocation.
+
+In some cases, using substr() or vec() to simulate arrays can be
+highly beneficial. For example, an array of a thousand booleans will
+take at least 20,000 bytes of space, but it can be turned into one
+125-byte bit vector--a considerable memory savings. The standard
+Tie::SubstrHash module can also help for certain types of data
+structure. If you're working with specialist data structures
+(matrices, for instance) modules that implement these in C may use
+less memory than equivalent Perl modules.
+
+Another thing to try is learning whether your Perl was compiled with
+the system malloc or with Perl's builtin malloc. Whichever one it
+is, try using the other one and see whether this makes a difference.
+Information about malloc is in the F<INSTALL> file in the source
+distribution. You can find out whether you are using perl's malloc by
+typing C<perl -V:usemymalloc>.
+
+Of course, the best way to save memory is to not do anything to waste
+it in the first place. Good programming practices can go a long way
+toward this:
+
+=over 4
+
+=item Don't slurp!
+
+Don't read an entire file into memory if you can process it line
+by line. Or more concretely, use a loop like this:
+
+    #
+    # Good Idea
+    #
+    while (my $line = <$file_handle>) {
+       # ...
+    }
+
+instead of this:
+
+    #
+    # Bad Idea
+    #
+    my @data = <$file_handle>;
+    foreach (@data) {
+        # ...
+    }
+
+When the files you're processing are small, it doesn't much matter which
+way you do it, but it makes a huge difference when they start getting
+larger.
+
+=item Use map and grep selectively
+
+Remember that both map and grep expect a LIST argument, so doing this:
+
+        @wanted = grep {/pattern/} <$file_handle>;
+
+will cause the entire file to be slurped. For large files, it's better
+to loop:
+
+        while (<$file_handle>) {
+                push(@wanted, $_) if /pattern/;
+        }
+
+=item Avoid unnecessary quotes and stringification
+
+Don't quote large strings unless absolutely necessary:
+
+        my $copy = "$large_string";
+
+makes 2 copies of $large_string (one for $copy and another for the
+quotes), whereas
+
+        my $copy = $large_string;
+
+only makes one copy.
+
+Ditto for stringifying large arrays:
+
+    {
+    local $, = "\n";
+    print @big_array;
+    }
+
+is much more memory-efficient than either
+
+    print join "\n", @big_array;
+
+or
+
+    {
+    local $" = "\n";
+    print "@big_array";
+    }
+
+
+=item Pass by reference
+
+Pass arrays and hashes by reference, not by value. For one thing, it's
+the only way to pass multiple lists or hashes (or both) in a single
+call/return. It also avoids creating a copy of all the contents. This
+requires some judgement, however, because any changes will be propagated
+back to the original data. If you really want to mangle (er, modify) a
+copy, you'll have to sacrifice the memory needed to make one.
+
+=item Tie large variables to disk
+
+For "big" data stores (i.e. ones that exceed available memory) consider
+using one of the DB modules to store it on disk instead of in RAM. This
+will incur a penalty in access time, but that's probably better than
+causing your hard disk to thrash due to massive swapping.
+
+=back
+
+=head2 Is it safe to return a reference to local or lexical data?
+
+Yes. Perl's garbage collection system takes care of this so
+everything works out right.
+
+    sub makeone {
+        my @a = ( 1 .. 10 );
+        return \@a;
+    }
+
+    for ( 1 .. 10 ) {
+        push @many, makeone();
+    }
+
+    print $many[4][5], "\n";
+
+    print "@many\n";
+
+=head2 How can I free an array or hash so my program shrinks?
+
+(contributed by Michael Carman)
+
+You usually can't. Memory allocated to lexicals (i.e. my() variables)
+cannot be reclaimed or reused even if they go out of scope. It is
+reserved in case the variables come back into scope. Memory allocated
+to global variables can be reused (within your program) by using
+undef() and/or delete().
+
+On most operating systems, memory allocated to a program can never be
+returned to the system. That's why long-running programs sometimes re-
+exec themselves. Some operating systems (notably, systems that use
+mmap(2) for allocating large chunks of memory) can reclaim memory that
+is no longer used, but on such systems, perl must be configured and
+compiled to use the OS's malloc, not perl's.
+
+In general, memory allocation and de-allocation isn't something you can
+or should be worrying about much in Perl.
+
+See also "How can I make my Perl program take less memory?"
+
+=head2 How can I make my CGI script more efficient?
+
+Beyond the normal measures described to make general Perl programs
+faster or smaller, a CGI program has additional issues. It may be run
+several times per second. Given that each time it runs it will need
+to be re-compiled and will often allocate a megabyte or more of system
+memory, this can be a killer. Compiling into C B<isn't going to help
+you> because the process start-up overhead is where the bottleneck is.
+
+There are three popular ways to avoid this overhead. One solution
+involves running the Apache HTTP server (available from
+L<http://www.apache.org/> ) with either of the mod_perl or mod_fastcgi
+plugin modules.
+
+With mod_perl and the Apache::Registry module (distributed with
+mod_perl), httpd will run with an embedded Perl interpreter which
+pre-compiles your script and then executes it within the same address
+space without forking. The Apache extension also gives Perl access to
+the internal server API, so modules written in Perl can do just about
+anything a module written in C can. For more on mod_perl, see
+L<http://perl.apache.org/>
+
+With the FCGI module (from CPAN) and the mod_fastcgi
+module (available from L<http://www.fastcgi.com/> ) each of your Perl
+programs becomes a permanent CGI daemon process.
+
+Finally, L<Plack> is a Perl module and toolkit that contains PSGI middleware,
+helpers and adapters to web servers, allowing you to easily deploy scripts which
+can continue running, and provides flexibility with regards to which web server
+you use. It can allow existing CGI scripts to enjoy this flexibility and
+performance with minimal changes, or can be used along with modern Perl web
+frameworks to make writing and deploying web services with Perl a breeze.
+
+These solutions can have far-reaching effects on your system and on the way you
+write your CGI programs, so investigate them with care.
+
+See also
+L<http://www.cpan.org/modules/by-category/15_World_Wide_Web_HTML_HTTP_CGI/> .
+
+=head2 How can I hide the source for my Perl program?
+
+Delete it. :-) Seriously, there are a number of (mostly
+unsatisfactory) solutions with varying levels of "security".
+
+First of all, however, you I<can't> take away read permission, because
+the source code has to be readable in order to be compiled and
+interpreted. (That doesn't mean that a CGI script's source is
+readable by people on the web, though--only by people with access to
+the filesystem.)  So you have to leave the permissions at the socially
+friendly 0755 level.
+
+Some people regard this as a security problem. If your program does
+insecure things and relies on people not knowing how to exploit those
+insecurities, it is not secure. It is often possible for someone to
+determine the insecure things and exploit them without viewing the
+source. Security through obscurity, the name for hiding your bugs
+instead of fixing them, is little security indeed.
+
+You can try using encryption via source filters (Starting from Perl
+5.8 the Filter::Simple and Filter::Util::Call modules are included in
+the standard distribution), but any decent programmer will be able to
+decrypt it. You can try using the byte code compiler and interpreter
+described later in L<perlfaq3>, but the curious might still be able to
+de-compile it. You can try using the native-code compiler described
+later, but crackers might be able to disassemble it. These pose
+varying degrees of difficulty to people wanting to get at your code,
+but none can definitively conceal it (true of every language, not just
+Perl).
+
+It is very easy to recover the source of Perl programs. You simply
+feed the program to the perl interpreter and use the modules in
+the B:: hierarchy. The B::Deparse module should be able to
+defeat most attempts to hide source. Again, this is not
+unique to Perl.
+
+If you're concerned about people profiting from your code, then the
+bottom line is that nothing but a restrictive license will give you
+legal security. License your software and pepper it with threatening
+statements like "This is unpublished proprietary software of XYZ Corp.
+Your access to it does not give you permission to use it blah blah
+blah."  We are not lawyers, of course, so you should see a lawyer if
+you want to be sure your license's wording will stand up in court.
+
+=head2 How can I compile my Perl program into byte code or C?
+
+(contributed by brian d foy)
+
+In general, you can't do this. There are some things that may work
+for your situation though. People usually ask this question
+because they want to distribute their works without giving away
+the source code, and most solutions trade disk space for convenience.
+You probably won't see much of a speed increase either, since most
+solutions simply bundle a Perl interpreter in the final product
+(but see L<How can I make my Perl program run faster?>).
+
+The Perl Archive Toolkit ( L<http://par.perl.org/> ) is Perl's
+analog to Java's JAR. It's freely available and on CPAN (
+L<http://search.cpan.org/dist/PAR/> ).
+
+There are also some commercial products that may work for you, although
+you have to buy a license for them.
+
+The Perl Dev Kit ( L<http://www.activestate.com/Products/Perl_Dev_Kit/> )
+from ActiveState can "Turn your Perl programs into ready-to-run
+executables for HP-UX, Linux, Solaris and Windows."
+
+Perl2Exe ( L<http://www.indigostar.com/perl2exe.htm> ) is a command line
+program for converting perl scripts to executable files. It targets both
+Windows and Unix platforms.
+
+=head2 How can I get C<#!perl> to work on [MS-DOS,NT,...]?
+
+For OS/2 just use
+
+    extproc perl -S -your_switches
+
+as the first line in C<*.cmd> file (C<-S> due to a bug in cmd.exe's
+"extproc" handling). For DOS one should first invent a corresponding
+batch file and codify it in C<ALTERNATE_SHEBANG> (see the
+F<dosish.h> file in the source distribution for more information).
+
+The Win95/NT installation, when using the ActiveState port of Perl,
+will modify the Registry to associate the C<.pl> extension with the
+perl interpreter. If you install another port, perhaps even building
+your own Win95/NT Perl from the standard sources by using a Windows port
+of gcc (e.g., with cygwin or mingw32), then you'll have to modify
+the Registry yourself. In addition to associating C<.pl> with the
+interpreter, NT people can use: C<SET PATHEXT=%PATHEXT%;.PL> to let them
+run the program C<install-linux.pl> merely by typing C<install-linux>.
+
+Under "Classic" MacOS, a perl program will have the appropriate Creator and
+Type, so that double-clicking them will invoke the MacPerl application.
+Under Mac OS X, clickable apps can be made from any C<#!> script using Wil
+Sanchez' DropScript utility: L<http://www.wsanchez.net/software/> .
+
+I<IMPORTANT!>: Whatever you do, PLEASE don't get frustrated, and just
+throw the perl interpreter into your cgi-bin directory, in order to
+get your programs working for a web server. This is an EXTREMELY big
+security risk. Take the time to figure out how to do it correctly.
+
+=head2 Can I write useful Perl programs on the command line?
+
+Yes. Read L<perlrun> for more information. Some examples follow.
+(These assume standard Unix shell quoting rules.)
+
+    # sum first and last fields
+    perl -lane 'print $F[0] + $F[-1]' *
+
+    # identify text files
+    perl -le 'for(@ARGV) {print if -f && -T _}' *
+
+    # remove (most) comments from C program
+    perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c
+
+    # make file a month younger than today, defeating reaper daemons
+    perl -e '$X=24*60*60; utime(time(),time() + 30 * $X, at ARGV)' *
+
+    # find first unused uid
+    perl -le '$i++ while getpwuid($i); print $i'
+
+    # display reasonable manpath
+    echo $PATH | perl -nl -072 -e '
+    s![^/+]*$!man!&&-d&&!$s{$_}++&&push at m,$_;END{print"@m"}'
+
+OK, the last one was actually an Obfuscated Perl Contest entry. :-)
+
+=head2 Why don't Perl one-liners work on my DOS/Mac/VMS system?
+
+The problem is usually that the command interpreters on those systems
+have rather different ideas about quoting than the Unix shells under
+which the one-liners were created. On some systems, you may have to
+change single-quotes to double ones, which you must I<NOT> do on Unix
+or Plan9 systems. You might also have to change a single % to a %%.
+
+For example:
+
+    # Unix (including Mac OS X)
+    perl -e 'print "Hello world\n"'
+
+    # DOS, etc.
+    perl -e "print \"Hello world\n\""
+
+    # Mac Classic
+    print "Hello world\n"
+     (then Run "Myscript" or Shift-Command-R)
+
+    # MPW
+    perl -e 'print "Hello world\n"'
+
+    # VMS
+    perl -e "print ""Hello world\n"""
+
+The problem is that none of these examples are reliable: they depend on the
+command interpreter. Under Unix, the first two often work. Under DOS,
+it's entirely possible that neither works. If 4DOS was the command shell,
+you'd probably have better luck like this:
+
+  perl -e "print <Ctrl-x>"Hello world\n<Ctrl-x>""
+
+Under the Mac, it depends which environment you are using. The MacPerl
+shell, or MPW, is much like Unix shells in its support for several
+quoting variants, except that it makes free use of the Mac's non-ASCII
+characters as control characters.
+
+Using qq(), q(), and qx(), instead of "double quotes", 'single
+quotes', and `backticks`, may make one-liners easier to write.
+
+There is no general solution to all of this. It is a mess.
+
+[Some of this answer was contributed by Kenneth Albanowski.]
+
+=head2 Where can I learn about CGI or Web programming in Perl?
+
+For modules, get the CGI or LWP modules from CPAN. For textbooks,
+see the two especially dedicated to web stuff in the question on
+books. For problems and questions related to the web, like "Why
+do I get 500 Errors" or "Why doesn't it run from the browser right
+when it runs fine on the command line", see the troubleshooting
+guides and references in L<perlfaq9> or in the CGI MetaFAQ:
+
+    L<http://www.perl.org/CGI_MetaFAQ.html>
+
+Looking in to L<Plack> and modern Perl web frameworks is highly recommended,
+though; web programming in Perl has evolved a long way from the old days of
+simple CGI scripts.
+
+=head2 Where can I learn about object-oriented Perl programming?
+
+A good place to start is L<perltoot>, and you can use L<perlobj>,
+L<perlboot>, L<perltoot>, L<perltooc>, and L<perlbot> for reference.
+
+A good book on OO on Perl is the "Object-Oriented Perl"
+by Damian Conway from Manning Publications, or "Intermediate Perl"
+by Randal Schwartz, brian d foy, and Tom Phoenix from O'Reilly Media.
+
+=head2 Where can I learn about linking C with Perl?
+
+If you want to call C from Perl, start with L<perlxstut>,
+moving on to L<perlxs>, L<xsubpp>, and L<perlguts>. If you want to
+call Perl from C, then read L<perlembed>, L<perlcall>, and
+L<perlguts>. Don't forget that you can learn a lot from looking at
+how the authors of existing extension modules wrote their code and
+solved their problems.
+
+You might not need all the power of XS. The Inline::C module lets
+you put C code directly in your Perl source. It handles all the
+magic to make it work. You still have to learn at least some of
+the perl API but you won't have to deal with the complexity of the
+XS support files.
+
+=head2 I've read perlembed, perlguts, etc., but I can't embed perl in my C program; what am I doing wrong?
+
+Download the ExtUtils::Embed kit from CPAN and run `make test'. If
+the tests pass, read the pods again and again and again. If they
+fail, see L<perlbug> and send a bug report with the output of
+C<make test TEST_VERBOSE=1> along with C<perl -V>.
+
+=head2 When I tried to run my script, I got this message. What does it mean?
+
+A complete list of Perl's error messages and warnings with explanatory
+text can be found in L<perldiag>. You can also use the splain program
+(distributed with Perl) to explain the error messages:
+
+    perl program 2>diag.out
+    splain [-v] [-p] diag.out
+
+or change your program to explain the messages for you:
+
+    use diagnostics;
+
+or
+
+    use diagnostics -verbose;
+
+=head2 What's MakeMaker?
+
+(contributed by brian d foy)
+
+The L<ExtUtils::MakeMaker> module, better known simply as "MakeMaker",
+turns a Perl script, typically called C<Makefile.PL>, into a Makefile.
+The Unix tool C<make> uses this file to manage dependencies and actions
+to process and install a Perl distribution.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples here are in the public
+domain. You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit. A simple comment in the code giving credit to the FAQ would
+be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq4.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq4.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq4.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2679 @@
+=head1 NAME
+
+perlfaq4 - Data Manipulation
+
+=head1 DESCRIPTION
+
+This section of the FAQ answers questions related to manipulating
+numbers, dates, strings, arrays, hashes, and miscellaneous data issues.
+
+=head1 Data: Numbers
+
+=head2 Why am I getting long decimals (eg, 19.9499999999999) instead of the numbers I should be getting (eg, 19.95)?
+
+For the long explanation, see David Goldberg's "What Every Computer
+Scientist Should Know About Floating-Point Arithmetic"
+(L<http://web.cse.msu.edu/~cse320/Documents/FloatingPoint.pdf>).
+
+Internally, your computer represents floating-point numbers in binary.
+Digital (as in powers of two) computers cannot store all numbers
+exactly. Some real numbers lose precision in the process. This is a
+problem with how computers store numbers and affects all computer
+languages, not just Perl.
+
+L<perlnumber> shows the gory details of number representations and
+conversions.
+
+To limit the number of decimal places in your numbers, you can use the
+C<printf> or C<sprintf> function. See
+L<perlop/"Floating-point Arithmetic"> for more details.
+
+    printf "%.2f", 10/3;
+
+    my $number = sprintf "%.2f", 10/3;
+
+=head2 Why is int() broken?
+
+Your C<int()> is most probably working just fine. It's the numbers that
+aren't quite what you think.
+
+First, see the answer to "Why am I getting long decimals
+(eg, 19.9499999999999) instead of the numbers I should be getting
+(eg, 19.95)?".
+
+For example, this
+
+    print int(0.6/0.2-2), "\n";
+
+will in most computers print 0, not 1, because even such simple
+numbers as 0.6 and 0.2 cannot be presented exactly by floating-point
+numbers. What you think in the above as 'three' is really more like
+2.9999999999999995559.
+
+=head2 Why isn't my octal data interpreted correctly?
+
+(contributed by brian d foy)
+
+You're probably trying to convert a string to a number, which Perl only
+converts as a decimal number. When Perl converts a string to a number, it
+ignores leading spaces and zeroes, then assumes the rest of the digits
+are in base 10:
+
+    my $string = '0644';
+
+    print $string + 0;  # prints 644
+
+    print $string + 44; # prints 688, certainly not octal!
+
+This problem usually involves one of the Perl built-ins that has the
+same name a Unix command that uses octal numbers as arguments on the
+command line. In this example, C<chmod> on the command line knows that
+its first argument is octal because that's what it does:
+
+    %prompt> chmod 644 file
+
+If you want to use the same literal digits (644) in Perl, you have to tell
+Perl to treat them as octal numbers either by prefixing the digits with
+a C<0> or using C<oct>:
+
+    chmod(     0644, $filename );  # right, has leading zero
+    chmod( oct(644), $filename );  # also correct
+
+The problem comes in when you take your numbers from something that Perl
+thinks is a string, such as a command line argument in C<@ARGV>:
+
+    chmod( $ARGV[0],      $filename );  # wrong, even if "0644"
+
+    chmod( oct($ARGV[0]), $filename );  # correct, treat string as octal
+
+You can always check the value you're using by printing it in octal
+notation to ensure it matches what you think it should be. Print it
+in octal  and decimal format:
+
+    printf "0%o %d", $number, $number;
+
+=head2 Does Perl have a round() function? What about ceil() and floor()? Trig functions?
+
+Remember that C<int()> merely truncates toward 0. For rounding to a
+certain number of digits, C<sprintf()> or C<printf()> is usually the
+easiest route.
+
+    printf("%.3f", 3.1415926535);   # prints 3.142
+
+The L<POSIX> module (part of the standard Perl distribution)
+implements C<ceil()>, C<floor()>, and a number of other mathematical
+and trigonometric functions.
+
+    use POSIX;
+    my $ceil   = ceil(3.5);   # 4
+    my $floor  = floor(3.5);  # 3
+
+In 5.000 to 5.003 perls, trigonometry was done in the L<Math::Complex>
+module. With 5.004, the L<Math::Trig> module (part of the standard Perl
+distribution) implements the trigonometric functions. Internally it
+uses the L<Math::Complex> module and some functions can break out from
+the real axis into the complex plane, for example the inverse sine of
+2.
+
+Rounding in financial applications can have serious implications, and
+the rounding method used should be specified precisely. In these
+cases, it probably pays not to trust whichever system of rounding is
+being used by Perl, but instead to implement the rounding function you
+need yourself.
+
+To see why, notice how you'll still have an issue on half-way-point
+alternation:
+
+    for (my $i = 0; $i < 1.01; $i += 0.05) { printf "%.1f ",$i}
+
+    0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7
+    0.8 0.8 0.9 0.9 1.0 1.0
+
+Don't blame Perl. It's the same as in C. IEEE says we have to do
+this. Perl numbers whose absolute values are integers under 2**31 (on
+32-bit machines) will work pretty much like mathematical integers.
+Other numbers are not guaranteed.
+
+=head2 How do I convert between numeric representations/bases/radixes?
+
+As always with Perl there is more than one way to do it. Below are a
+few examples of approaches to making common conversions between number
+representations. This is intended to be representational rather than
+exhaustive.
+
+Some of the examples later in L<perlfaq4> use the L<Bit::Vector>
+module from CPAN. The reason you might choose L<Bit::Vector> over the
+perl built-in functions is that it works with numbers of ANY size,
+that it is optimized for speed on some operations, and for at least
+some programmers the notation might be familiar.
+
+=over 4
+
+=item How do I convert hexadecimal into decimal
+
+Using perl's built in conversion of C<0x> notation:
+
+    my $dec = 0xDEADBEEF;
+
+Using the C<hex> function:
+
+    my $dec = hex("DEADBEEF");
+
+Using C<pack>:
+
+    my $dec = unpack("N", pack("H8", substr("0" x 8 . "DEADBEEF", -8)));
+
+Using the CPAN module C<Bit::Vector>:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new_Hex(32, "DEADBEEF");
+    my $dec = $vec->to_Dec();
+
+=item How do I convert from decimal to hexadecimal
+
+Using C<sprintf>:
+
+    my $hex = sprintf("%X", 3735928559); # upper case A-F
+    my $hex = sprintf("%x", 3735928559); # lower case a-f
+
+Using C<unpack>:
+
+    my $hex = unpack("H*", pack("N", 3735928559));
+
+Using L<Bit::Vector>:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new_Dec(32, -559038737);
+    my $hex = $vec->to_Hex();
+
+And L<Bit::Vector> supports odd bit counts:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new_Dec(33, 3735928559);
+    $vec->Resize(32); # suppress leading 0 if unwanted
+    my $hex = $vec->to_Hex();
+
+=item How do I convert from octal to decimal
+
+Using Perl's built in conversion of numbers with leading zeros:
+
+    my $dec = 033653337357; # note the leading 0!
+
+Using the C<oct> function:
+
+    my $dec = oct("33653337357");
+
+Using L<Bit::Vector>:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new(32);
+    $vec->Chunk_List_Store(3, split(//, reverse "33653337357"));
+    my $dec = $vec->to_Dec();
+
+=item How do I convert from decimal to octal
+
+Using C<sprintf>:
+
+    my $oct = sprintf("%o", 3735928559);
+
+Using L<Bit::Vector>:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new_Dec(32, -559038737);
+    my $oct = reverse join('', $vec->Chunk_List_Read(3));
+
+=item How do I convert from binary to decimal
+
+Perl 5.6 lets you write binary numbers directly with
+the C<0b> notation:
+
+    my $number = 0b10110110;
+
+Using C<oct>:
+
+    my $input = "10110110";
+    my $decimal = oct( "0b$input" );
+
+Using C<pack> and C<ord>:
+
+    my $decimal = ord(pack('B8', '10110110'));
+
+Using C<pack> and C<unpack> for larger strings:
+
+    my $int = unpack("N", pack("B32",
+    substr("0" x 32 . "11110101011011011111011101111", -32)));
+    my $dec = sprintf("%d", $int);
+
+    # substr() is used to left-pad a 32-character string with zeros.
+
+Using L<Bit::Vector>:
+
+    my $vec = Bit::Vector->new_Bin(32, "11011110101011011011111011101111");
+    my $dec = $vec->to_Dec();
+
+=item How do I convert from decimal to binary
+
+Using C<sprintf> (perl 5.6+):
+
+    my $bin = sprintf("%b", 3735928559);
+
+Using C<unpack>:
+
+    my $bin = unpack("B*", pack("N", 3735928559));
+
+Using L<Bit::Vector>:
+
+    use Bit::Vector;
+    my $vec = Bit::Vector->new_Dec(32, -559038737);
+    my $bin = $vec->to_Bin();
+
+The remaining transformations (e.g. hex -> oct, bin -> hex, etc.)
+are left as an exercise to the inclined reader.
+
+=back
+
+=head2 Why doesn't & work the way I want it to?
+
+The behavior of binary arithmetic operators depends on whether they're
+used on numbers or strings. The operators treat a string as a series
+of bits and work with that (the string C<"3"> is the bit pattern
+C<00110011>). The operators work with the binary form of a number
+(the number C<3> is treated as the bit pattern C<00000011>).
+
+So, saying C<11 & 3> performs the "and" operation on numbers (yielding
+C<3>). Saying C<"11" & "3"> performs the "and" operation on strings
+(yielding C<"1">).
+
+Most problems with C<&> and C<|> arise because the programmer thinks
+they have a number but really it's a string or vice versa. To avoid this,
+stringify the arguments explicitly (using C<""> or C<qq()>) or convert them
+to numbers explicitly (using C<0+$arg>). The rest arise because
+the programmer says:
+
+    if ("\020\020" & "\101\101") {
+        # ...
+    }
+
+but a string consisting of two null bytes (the result of C<"\020\020"
+& "\101\101">) is not a false value in Perl. You need:
+
+    if ( ("\020\020" & "\101\101") !~ /[^\000]/) {
+        # ...
+    }
+
+=head2 How do I multiply matrices?
+
+Use the L<Math::Matrix> or L<Math::MatrixReal> modules (available from CPAN)
+or the L<PDL> extension (also available from CPAN).
+
+=head2 How do I perform an operation on a series of integers?
+
+To call a function on each element in an array, and collect the
+results, use:
+
+    my @results = map { my_func($_) } @array;
+
+For example:
+
+    my @triple = map { 3 * $_ } @single;
+
+To call a function on each element of an array, but ignore the
+results:
+
+    foreach my $iterator (@array) {
+        some_func($iterator);
+    }
+
+To call a function on each integer in a (small) range, you B<can> use:
+
+    my @results = map { some_func($_) } (5 .. 25);
+
+but you should be aware that in this form, the C<..> operator
+creates a list of all integers in the range, which can take a lot of
+memory for large ranges. However, the problem does not occur when
+using C<..> within a C<for> loop, because in that case the range
+operator is optimized to I<iterate> over the range, without creating
+the entire list. So
+
+    my @results = ();
+    for my $i (5 .. 500_005) {
+        push(@results, some_func($i));
+    }
+
+or even
+
+   push(@results, some_func($_)) for 5 .. 500_005;
+
+will not create an intermediate list of 500,000 integers.
+
+=head2 How can I output Roman numerals?
+
+Get the L<http://www.cpan.org/modules/by-module/Roman> module.
+
+=head2 Why aren't my random numbers random?
+
+If you're using a version of Perl before 5.004, you must call C<srand>
+once at the start of your program to seed the random number generator.
+
+     BEGIN { srand() if $] < 5.004 }
+
+5.004 and later automatically call C<srand> at the beginning. Don't
+call C<srand> more than once--you make your numbers less random,
+rather than more.
+
+Computers are good at being predictable and bad at being random
+(despite appearances caused by bugs in your programs :-). The
+F<random> article in the "Far More Than You Ever Wanted To Know"
+collection in L<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz>, courtesy
+of Tom Phoenix, talks more about this. John von Neumann said, "Anyone
+who attempts to generate random numbers by deterministic means is, of
+course, living in a state of sin."
+
+Perl relies on the underlying system for the implementation of
+C<rand> and C<srand>; on some systems, the generated numbers are
+not random enough (especially on Windows : see
+L<http://www.perlmonks.org/?node_id=803632>).
+Several CPAN modules in the C<Math> namespace implement better
+pseudorandom generators; see for example
+L<Math::Random::MT> ("Mersenne Twister", fast), or
+L<Math::TrulyRandom> (uses the imperfections in the system's
+timer to generate random numbers, which is rather slow).
+More algorithms for random numbers are described in
+"Numerical Recipes in C" at L<http://www.nr.com/>
+
+=head2 How do I get a random number between X and Y?
+
+To get a random number between two values, you can use the C<rand()>
+built-in to get a random number between 0 and 1. From there, you shift
+that into the range that you want.
+
+C<rand($x)> returns a number such that C<< 0 <= rand($x) < $x >>. Thus
+what you want to have perl figure out is a random number in the range
+from 0 to the difference between your I<X> and I<Y>.
+
+That is, to get a number between 10 and 15, inclusive, you want a
+random number between 0 and 5 that you can then add to 10.
+
+    my $number = 10 + int rand( 15-10+1 ); # ( 10,11,12,13,14, or 15 )
+
+Hence you derive the following simple function to abstract
+that. It selects a random integer between the two given
+integers (inclusive), For example: C<random_int_between(50,120)>.
+
+    sub random_int_between {
+        my($min, $max) = @_;
+        # Assumes that the two arguments are integers themselves!
+        return $min if $min == $max;
+        ($min, $max) = ($max, $min)  if  $min > $max;
+        return $min + int rand(1 + $max - $min);
+    }
+
+=head1 Data: Dates
+
+=head2 How do I find the day or week of the year?
+
+The day of the year is in the list returned
+by the C<localtime> function. Without an
+argument C<localtime> uses the current time.
+
+    my $day_of_year = (localtime)[7];
+
+The L<POSIX> module can also format a date as the day of the year or
+week of the year.
+
+    use POSIX qw/strftime/;
+    my $day_of_year  = strftime "%j", localtime;
+    my $week_of_year = strftime "%W", localtime;
+
+To get the day of year for any date, use L<POSIX>'s C<mktime> to get
+a time in epoch seconds for the argument to C<localtime>.
+
+    use POSIX qw/mktime strftime/;
+    my $week_of_year = strftime "%W",
+        localtime( mktime( 0, 0, 0, 18, 11, 87 ) );
+
+You can also use L<Time::Piece>, which comes with Perl and provides a
+C<localtime> that returns an object:
+
+    use Time::Piece;
+    my $day_of_year  = localtime->yday;
+    my $week_of_year = localtime->week;
+
+The L<Date::Calc> module provides two functions to calculate these, too:
+
+    use Date::Calc;
+    my $day_of_year  = Day_of_Year(  1987, 12, 18 );
+    my $week_of_year = Week_of_Year( 1987, 12, 18 );
+
+=head2 How do I find the current century or millennium?
+
+Use the following simple functions:
+
+    sub get_century    {
+        return int((((localtime(shift || time))[5] + 1999))/100);
+    }
+
+    sub get_millennium {
+        return 1+int((((localtime(shift || time))[5] + 1899))/1000);
+    }
+
+On some systems, the L<POSIX> module's C<strftime()> function has been
+extended in a non-standard way to use a C<%C> format, which they
+sometimes claim is the "century". It isn't, because on most such
+systems, this is only the first two digits of the four-digit year, and
+thus cannot be used to determine reliably the current century or
+millennium.
+
+=head2 How can I compare two dates and find the difference?
+
+(contributed by brian d foy)
+
+You could just store all your dates as a number and then subtract.
+Life isn't always that simple though.
+
+The L<Time::Piece> module, which comes with Perl, replaces L<localtime>
+with a version that returns an object. It also overloads the comparison
+operators so you can compare them directly:
+
+    use Time::Piece;
+    my $date1 = localtime( $some_time );
+    my $date2 = localtime( $some_other_time );
+
+    if( $date1 < $date2 ) {
+        print "The date was in the past\n";
+    }
+
+You can also get differences with a subtraction, which returns a
+L<Time::Seconds> object:
+
+    my $diff = $date1 - $date2;
+    print "The difference is ", $date_diff->days, " days\n";
+
+If you want to work with formatted dates, the L<Date::Manip>,
+L<Date::Calc>, or L<DateTime> modules can help you.
+
+=head2 How can I take a string and turn it into epoch seconds?
+
+If it's a regular enough string that it always has the same format,
+you can split it up and pass the parts to C<timelocal> in the standard
+L<Time::Local> module. Otherwise, you should look into the L<Date::Calc>,
+L<Date::Parse>, and L<Date::Manip> modules from CPAN.
+
+=head2 How can I find the Julian Day?
+
+(contributed by brian d foy and Dave Cross)
+
+You can use the L<Time::Piece> module, part of the Standard Library,
+which can convert a date/time to a Julian Day:
+
+    $ perl -MTime::Piece -le 'print localtime->julian_day'
+    2455607.7959375
+
+Or the modified Julian Day:
+
+    $ perl -MTime::Piece -le 'print localtime->mjd'
+    55607.2961226851
+
+Or even the day of the year (which is what some people think of as a
+Julian day):
+
+    $ perl -MTime::Piece -le 'print localtime->yday'
+    45
+
+You can also do the same things with the L<DateTime> module:
+
+    $ perl -MDateTime -le'print DateTime->today->jd'
+    2453401.5
+    $ perl -MDateTime -le'print DateTime->today->mjd'
+    53401
+    $ perl -MDateTime -le'print DateTime->today->doy'
+    31
+
+You can use the L<Time::JulianDay> module available on CPAN. Ensure
+that you really want to find a Julian day, though, as many people have
+different ideas about Julian days (see L<http://www.hermetic.ch/cal_stud/jdn.htm>
+for instance):
+
+    $  perl -MTime::JulianDay -le 'print local_julian_day( time )'
+    55608
+
+=head2 How do I find yesterday's date?
+X<date> X<yesterday> X<DateTime> X<Date::Calc> X<Time::Local>
+X<daylight saving time> X<day> X<Today_and_Now> X<localtime>
+X<timelocal>
+
+(contributed by brian d foy)
+
+To do it correctly, you can use one of the C<Date> modules since they
+work with calendars instead of times. The L<DateTime> module makes it
+simple, and give you the same time of day, only the day before,
+despite daylight saving time changes:
+
+    use DateTime;
+
+    my $yesterday = DateTime->now->subtract( days => 1 );
+
+    print "Yesterday was $yesterday\n";
+
+You can also use the L<Date::Calc> module using its C<Today_and_Now>
+function.
+
+    use Date::Calc qw( Today_and_Now Add_Delta_DHMS );
+
+    my @date_time = Add_Delta_DHMS( Today_and_Now(), -1, 0, 0, 0 );
+
+    print "@date_time\n";
+
+Most people try to use the time rather than the calendar to figure out
+dates, but that assumes that days are twenty-four hours each. For
+most people, there are two days a year when they aren't: the switch to
+and from summer time throws this off. For example, the rest of the
+suggestions will be wrong sometimes:
+
+Starting with Perl 5.10, L<Time::Piece> and L<Time::Seconds> are part
+of the standard distribution, so you might think that you could do
+something like this:
+
+    use Time::Piece;
+    use Time::Seconds;
+
+    my $yesterday = localtime() - ONE_DAY; # WRONG
+    print "Yesterday was $yesterday\n";
+
+The L<Time::Piece> module exports a new C<localtime> that returns an
+object, and L<Time::Seconds> exports the C<ONE_DAY> constant that is a
+set number of seconds. This means that it always gives the time 24
+hours ago, which is not always yesterday. This can cause problems
+around the end of daylight saving time when there's one day that is 25
+hours long.
+
+You have the same problem with L<Time::Local>, which will give the wrong
+answer for those same special cases:
+
+    # contributed by Gunnar Hjalmarsson
+     use Time::Local;
+     my $today = timelocal 0, 0, 12, ( localtime )[3..5];
+     my ($d, $m, $y) = ( localtime $today-86400 )[3..5]; # WRONG
+     printf "Yesterday: %d-%02d-%02d\n", $y+1900, $m+1, $d;
+
+=head2 Does Perl have a Year 2000 or 2038 problem? Is Perl Y2K compliant?
+
+(contributed by brian d foy)
+
+Perl itself never had a Y2K problem, although that never stopped people
+from creating Y2K problems on their own. See the documentation for
+C<localtime> for its proper use.
+
+Starting with Perl 5.12, C<localtime> and C<gmtime> can handle dates past
+03:14:08 January 19, 2038, when a 32-bit based time would overflow. You
+still might get a warning on a 32-bit C<perl>:
+
+    % perl5.12 -E 'say scalar localtime( 0x9FFF_FFFFFFFF )'
+    Integer overflow in hexadecimal number at -e line 1.
+    Wed Nov  1 19:42:39 5576711
+
+On a 64-bit C<perl>, you can get even larger dates for those really long
+running projects:
+
+    % perl5.12 -E 'say scalar gmtime( 0x9FFF_FFFFFFFF )'
+    Thu Nov  2 00:42:39 5576711
+
+You're still out of luck if you need to keep track of decaying protons
+though.
+
+=head1 Data: Strings
+
+=head2 How do I validate input?
+
+(contributed by brian d foy)
+
+There are many ways to ensure that values are what you expect or
+want to accept. Besides the specific examples that we cover in the
+perlfaq, you can also look at the modules with "Assert" and "Validate"
+in their names, along with other modules such as L<Regexp::Common>.
+
+Some modules have validation for particular types of input, such
+as L<Business::ISBN>, L<Business::CreditCard>, L<Email::Valid>,
+and L<Data::Validate::IP>.
+
+=head2 How do I unescape a string?
+
+It depends just what you mean by "escape". URL escapes are dealt
+with in L<perlfaq9>. Shell escapes with the backslash (C<\>)
+character are removed with
+
+    s/\\(.)/$1/g;
+
+This won't expand C<"\n"> or C<"\t"> or any other special escapes.
+
+=head2 How do I remove consecutive pairs of characters?
+
+(contributed by brian d foy)
+
+You can use the substitution operator to find pairs of characters (or
+runs of characters) and replace them with a single instance. In this
+substitution, we find a character in C<(.)>. The memory parentheses
+store the matched character in the back-reference C<\g1> and we use
+that to require that the same thing immediately follow it. We replace
+that part of the string with the character in C<$1>.
+
+    s/(.)\g1/$1/g;
+
+We can also use the transliteration operator, C<tr///>. In this
+example, the search list side of our C<tr///> contains nothing, but
+the C<c> option complements that so it contains everything. The
+replacement list also contains nothing, so the transliteration is
+almost a no-op since it won't do any replacements (or more exactly,
+replace the character with itself). However, the C<s> option squashes
+duplicated and consecutive characters in the string so a character
+does not show up next to itself
+
+    my $str = 'Haarlem';   # in the Netherlands
+    $str =~ tr///cs;       # Now Harlem, like in New York
+
+=head2 How do I expand function calls in a string?
+
+(contributed by brian d foy)
+
+This is documented in L<perlref>, and although it's not the easiest
+thing to read, it does work. In each of these examples, we call the
+function inside the braces used to dereference a reference. If we
+have more than one return value, we can construct and dereference an
+anonymous array. In this case, we call the function in list context.
+
+    print "The time values are @{ [localtime] }.\n";
+
+If we want to call the function in scalar context, we have to do a bit
+more work. We can really have any code we like inside the braces, so
+we simply have to end with the scalar reference, although how you do
+that is up to you, and you can use code inside the braces. Note that
+the use of parens creates a list context, so we need C<scalar> to
+force the scalar context on the function:
+
+    print "The time is ${\(scalar localtime)}.\n"
+
+    print "The time is ${ my $x = localtime; \$x }.\n";
+
+If your function already returns a reference, you don't need to create
+the reference yourself.
+
+    sub timestamp { my $t = localtime; \$t }
+
+    print "The time is ${ timestamp() }.\n";
+
+The C<Interpolation> module can also do a lot of magic for you. You can
+specify a variable name, in this case C<E>, to set up a tied hash that
+does the interpolation for you. It has several other methods to do this
+as well.
+
+    use Interpolation E => 'eval';
+    print "The time values are $E{localtime()}.\n";
+
+In most cases, it is probably easier to simply use string concatenation,
+which also forces scalar context.
+
+    print "The time is " . localtime() . ".\n";
+
+=head2 How do I find matching/nesting anything?
+
+To find something between two single
+characters, a pattern like C</x([^x]*)x/> will get the intervening
+bits in $1. For multiple ones, then something more like
+C</alpha(.*?)omega/> would be needed. For nested patterns
+and/or balanced expressions, see the so-called
+L<< (?PARNO)|perlre/C<(?PARNO)> C<(?-PARNO)> C<(?+PARNO)> C<(?R)> C<(?0)> >>
+construct (available since perl 5.10).
+The CPAN module L<Regexp::Common> can help to build such
+regular expressions (see in particular
+L<Regexp::Common::balanced> and L<Regexp::Common::delimited>).
+
+More complex cases will require to write a parser, probably
+using a parsing module from CPAN, like
+L<Regexp::Grammars>, L<Parse::RecDescent>, L<Parse::Yapp>,
+L<Text::Balanced>, or L<Marpa::XS>.
+
+=head2 How do I reverse a string?
+
+Use C<reverse()> in scalar context, as documented in
+L<perlfunc/reverse>.
+
+    my $reversed = reverse $string;
+
+=head2 How do I expand tabs in a string?
+
+You can do it yourself:
+
+    1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
+
+Or you can just use the L<Text::Tabs> module (part of the standard Perl
+distribution).
+
+    use Text::Tabs;
+    my @expanded_lines = expand(@lines_with_tabs);
+
+=head2 How do I reformat a paragraph?
+
+Use L<Text::Wrap> (part of the standard Perl distribution):
+
+    use Text::Wrap;
+    print wrap("\t", '  ', @paragraphs);
+
+The paragraphs you give to L<Text::Wrap> should not contain embedded
+newlines. L<Text::Wrap> doesn't justify the lines (flush-right).
+
+Or use the CPAN module L<Text::Autoformat>. Formatting files can be
+easily done by making a shell alias, like so:
+
+    alias fmt="perl -i -MText::Autoformat -n0777 \
+        -e 'print autoformat $_, {all=>1}' $*"
+
+See the documentation for L<Text::Autoformat> to appreciate its many
+capabilities.
+
+=head2 How can I access or change N characters of a string?
+
+You can access the first characters of a string with substr().
+To get the first character, for example, start at position 0
+and grab the string of length 1.
+
+
+    my $string = "Just another Perl Hacker";
+    my $first_char = substr( $string, 0, 1 );  #  'J'
+
+To change part of a string, you can use the optional fourth
+argument which is the replacement string.
+
+    substr( $string, 13, 4, "Perl 5.8.0" );
+
+You can also use substr() as an lvalue.
+
+    substr( $string, 13, 4 ) =  "Perl 5.8.0";
+
+=head2 How do I change the Nth occurrence of something?
+
+You have to keep track of N yourself. For example, let's say you want
+to change the fifth occurrence of C<"whoever"> or C<"whomever"> into
+C<"whosoever"> or C<"whomsoever">, case insensitively. These
+all assume that $_ contains the string to be altered.
+
+    $count = 0;
+    s{((whom?)ever)}{
+    ++$count == 5       # is it the 5th?
+        ? "${2}soever"  # yes, swap
+        : $1            # renege and leave it there
+        }ige;
+
+In the more general case, you can use the C</g> modifier in a C<while>
+loop, keeping count of matches.
+
+    $WANT = 3;
+    $count = 0;
+    $_ = "One fish two fish red fish blue fish";
+    while (/(\w+)\s+fish\b/gi) {
+        if (++$count == $WANT) {
+            print "The third fish is a $1 one.\n";
+        }
+    }
+
+That prints out: C<"The third fish is a red one.">  You can also use a
+repetition count and repeated pattern like this:
+
+    /(?:\w+\s+fish\s+){2}(\w+)\s+fish/i;
+
+=head2 How can I count the number of occurrences of a substring within a string?
+
+There are a number of ways, with varying efficiency. If you want a
+count of a certain single character (X) within a string, you can use the
+C<tr///> function like so:
+
+    my $string = "ThisXlineXhasXsomeXx'sXinXit";
+    my $count = ($string =~ tr/X//);
+    print "There are $count X characters in the string";
+
+This is fine if you are just looking for a single character. However,
+if you are trying to count multiple character substrings within a
+larger string, C<tr///> won't work. What you can do is wrap a while()
+loop around a global pattern match. For example, let's count negative
+integers:
+
+    my $string = "-9 55 48 -2 23 -76 4 14 -44";
+    my $count = 0;
+    while ($string =~ /-\d+/g) { $count++ }
+    print "There are $count negative numbers in the string";
+
+Another version uses a global match in list context, then assigns the
+result to a scalar, producing a count of the number of matches.
+
+    my $count = () = $string =~ /-\d+/g;
+
+=head2 How do I capitalize all the words on one line?
+X<Text::Autoformat> X<capitalize> X<case, title> X<case, sentence>
+
+(contributed by brian d foy)
+
+Damian Conway's L<Text::Autoformat> handles all of the thinking
+for you.
+
+    use Text::Autoformat;
+    my $x = "Dr. Strangelove or: How I Learned to Stop ".
+      "Worrying and Love the Bomb";
+
+    print $x, "\n";
+    for my $style (qw( sentence title highlight )) {
+        print autoformat($x, { case => $style }), "\n";
+    }
+
+How do you want to capitalize those words?
+
+    FRED AND BARNEY'S LODGE        # all uppercase
+    Fred And Barney's Lodge        # title case
+    Fred and Barney's Lodge        # highlight case
+
+It's not as easy a problem as it looks. How many words do you think
+are in there? Wait for it... wait for it.... If you answered 5
+you're right. Perl words are groups of C<\w+>, but that's not what
+you want to capitalize. How is Perl supposed to know not to capitalize
+that C<s> after the apostrophe? You could try a regular expression:
+
+    $string =~ s/ (
+                 (^\w)    #at the beginning of the line
+                   |      # or
+                 (\s\w)   #preceded by whitespace
+                   )
+                /\U$1/xg;
+
+    $string =~ s/([\w']+)/\u\L$1/g;
+
+Now, what if you don't want to capitalize that "and"? Just use
+L<Text::Autoformat> and get on with the next problem. :)
+
+=head2 How can I split a [character]-delimited string except when inside [character]?
+
+Several modules can handle this sort of parsing--L<Text::Balanced>,
+L<Text::CSV>, L<Text::CSV_XS>, and L<Text::ParseWords>, among others.
+
+Take the example case of trying to split a string that is
+comma-separated into its different fields. You can't use C<split(/,/)>
+because you shouldn't split if the comma is inside quotes. For
+example, take a data line like this:
+
+    SAR001,"","Cimetrix, Inc","Bob Smith","CAM",N,8,1,0,7,"Error, Core Dumped"
+
+Due to the restriction of the quotes, this is a fairly complex
+problem. Thankfully, we have Jeffrey Friedl, author of
+I<Mastering Regular Expressions>, to handle these for us. He
+suggests (assuming your string is contained in C<$text>):
+
+     my @new = ();
+     push(@new, $+) while $text =~ m{
+         "([^\"\\]*(?:\\.[^\"\\]*)*)",? # groups the phrase inside the quotes
+        | ([^,]+),?
+        | ,
+     }gx;
+     push(@new, undef) if substr($text,-1,1) eq ',';
+
+If you want to represent quotation marks inside a
+quotation-mark-delimited field, escape them with backslashes (eg,
+C<"like \"this\"">.
+
+Alternatively, the L<Text::ParseWords> module (part of the standard
+Perl distribution) lets you say:
+
+    use Text::ParseWords;
+    @new = quotewords(",", 0, $text);
+
+For parsing or generating CSV, though, using L<Text::CSV> rather than
+implementing it yourself is highly recommended; you'll save yourself odd bugs
+popping up later by just using code which has already been tried and tested in
+production for years.
+
+=head2 How do I strip blank space from the beginning/end of a string?
+
+(contributed by brian d foy)
+
+A substitution can do this for you. For a single line, you want to
+replace all the leading or trailing whitespace with nothing. You
+can do that with a pair of substitutions:
+
+    s/^\s+//;
+    s/\s+$//;
+
+You can also write that as a single substitution, although it turns
+out the combined statement is slower than the separate ones. That
+might not matter to you, though:
+
+    s/^\s+|\s+$//g;
+
+In this regular expression, the alternation matches either at the
+beginning or the end of the string since the anchors have a lower
+precedence than the alternation. With the C</g> flag, the substitution
+makes all possible matches, so it gets both. Remember, the trailing
+newline matches the C<\s+>, and  the C<$> anchor can match to the
+absolute end of the string, so the newline disappears too. Just add
+the newline to the output, which has the added benefit of preserving
+"blank" (consisting entirely of whitespace) lines which the C<^\s+>
+would remove all by itself:
+
+    while( <> ) {
+        s/^\s+|\s+$//g;
+        print "$_\n";
+    }
+
+For a multi-line string, you can apply the regular expression to each
+logical line in the string by adding the C</m> flag (for
+"multi-line"). With the C</m> flag, the C<$> matches I<before> an
+embedded newline, so it doesn't remove it. This pattern still removes
+the newline at the end of the string:
+
+    $string =~ s/^\s+|\s+$//gm;
+
+Remember that lines consisting entirely of whitespace will disappear,
+since the first part of the alternation can match the entire string
+and replace it with nothing. If you need to keep embedded blank lines,
+you have to do a little more work. Instead of matching any whitespace
+(since that includes a newline), just match the other whitespace:
+
+    $string =~ s/^[\t\f ]+|[\t\f ]+$//mg;
+
+=head2 How do I pad a string with blanks or pad a number with zeroes?
+
+In the following examples, C<$pad_len> is the length to which you wish
+to pad the string, C<$text> or C<$num> contains the string to be padded,
+and C<$pad_char> contains the padding character. You can use a single
+character string constant instead of the C<$pad_char> variable if you
+know what it is in advance. And in the same way you can use an integer in
+place of C<$pad_len> if you know the pad length in advance.
+
+The simplest method uses the C<sprintf> function. It can pad on the left
+or right with blanks and on the left with zeroes and it will not
+truncate the result. The C<pack> function can only pad strings on the
+right with blanks and it will truncate the result to a maximum length of
+C<$pad_len>.
+
+    # Left padding a string with blanks (no truncation):
+    my $padded = sprintf("%${pad_len}s", $text);
+    my $padded = sprintf("%*s", $pad_len, $text);  # same thing
+
+    # Right padding a string with blanks (no truncation):
+    my $padded = sprintf("%-${pad_len}s", $text);
+    my $padded = sprintf("%-*s", $pad_len, $text); # same thing
+
+    # Left padding a number with 0 (no truncation):
+    my $padded = sprintf("%0${pad_len}d", $num);
+    my $padded = sprintf("%0*d", $pad_len, $num); # same thing
+
+    # Right padding a string with blanks using pack (will truncate):
+    my $padded = pack("A$pad_len",$text);
+
+If you need to pad with a character other than blank or zero you can use
+one of the following methods. They all generate a pad string with the
+C<x> operator and combine that with C<$text>. These methods do
+not truncate C<$text>.
+
+Left and right padding with any character, creating a new string:
+
+    my $padded = $pad_char x ( $pad_len - length( $text ) ) . $text;
+    my $padded = $text . $pad_char x ( $pad_len - length( $text ) );
+
+Left and right padding with any character, modifying C<$text> directly:
+
+    substr( $text, 0, 0 ) = $pad_char x ( $pad_len - length( $text ) );
+    $text .= $pad_char x ( $pad_len - length( $text ) );
+
+=head2 How do I extract selected columns from a string?
+
+(contributed by brian d foy)
+
+If you know the columns that contain the data, you can
+use C<substr> to extract a single column.
+
+    my $column = substr( $line, $start_column, $length );
+
+You can use C<split> if the columns are separated by whitespace or
+some other delimiter, as long as whitespace or the delimiter cannot
+appear as part of the data.
+
+    my $line    = ' fred barney   betty   ';
+    my @columns = split /\s+/, $line;
+        # ( '', 'fred', 'barney', 'betty' );
+
+    my $line    = 'fred||barney||betty';
+    my @columns = split /\|/, $line;
+        # ( 'fred', '', 'barney', '', 'betty' );
+
+If you want to work with comma-separated values, don't do this since
+that format is a bit more complicated. Use one of the modules that
+handle that format, such as L<Text::CSV>, L<Text::CSV_XS>, or
+L<Text::CSV_PP>.
+
+If you want to break apart an entire line of fixed columns, you can use
+C<unpack> with the A (ASCII) format. By using a number after the format
+specifier, you can denote the column width. See the C<pack> and C<unpack>
+entries in L<perlfunc> for more details.
+
+    my @fields = unpack( $line, "A8 A8 A8 A16 A4" );
+
+Note that spaces in the format argument to C<unpack> do not denote literal
+spaces. If you have space separated data, you may want C<split> instead.
+
+=head2 How do I find the soundex value of a string?
+
+(contributed by brian d foy)
+
+You can use the C<Text::Soundex> module. If you want to do fuzzy or close
+matching, you might also try the L<String::Approx>, and
+L<Text::Metaphone>, and L<Text::DoubleMetaphone> modules.
+
+=head2 How can I expand variables in text strings?
+
+(contributed by brian d foy)
+
+If you can avoid it, don't, or if you can use a templating system,
+such as L<Text::Template> or L<Template> Toolkit, do that instead. You
+might even be able to get the job done with C<sprintf> or C<printf>:
+
+    my $string = sprintf 'Say hello to %s and %s', $foo, $bar;
+
+However, for the one-off simple case where I don't want to pull out a
+full templating system, I'll use a string that has two Perl scalar
+variables in it. In this example, I want to expand C<$foo> and C<$bar>
+to their variable's values:
+
+    my $foo = 'Fred';
+    my $bar = 'Barney';
+    $string = 'Say hello to $foo and $bar';
+
+One way I can do this involves the substitution operator and a double
+C</e> flag. The first C</e> evaluates C<$1> on the replacement side and
+turns it into C<$foo>. The second /e starts with C<$foo> and replaces
+it with its value. C<$foo>, then, turns into 'Fred', and that's finally
+what's left in the string:
+
+    $string =~ s/(\$\w+)/$1/eeg; # 'Say hello to Fred and Barney'
+
+The C</e> will also silently ignore violations of strict, replacing
+undefined variable names with the empty string. Since I'm using the
+C</e> flag (twice even!), I have all of the same security problems I
+have with C<eval> in its string form. If there's something odd in
+C<$foo>, perhaps something like C<@{[ system "rm -rf /" ]}>, then
+I could get myself in trouble.
+
+To get around the security problem, I could also pull the values from
+a hash instead of evaluating variable names. Using a single C</e>, I
+can check the hash to ensure the value exists, and if it doesn't, I
+can replace the missing value with a marker, in this case C<???> to
+signal that I missed something:
+
+    my $string = 'This has $foo and $bar';
+
+    my %Replacements = (
+        foo  => 'Fred',
+        );
+
+    # $string =~ s/\$(\w+)/$Replacements{$1}/g;
+    $string =~ s/\$(\w+)/
+        exists $Replacements{$1} ? $Replacements{$1} : '???'
+        /eg;
+
+    print $string;
+
+=head2 What's wrong with always quoting "$vars"?
+
+The problem is that those double-quotes force
+stringification--coercing numbers and references into strings--even
+when you don't want them to be strings. Think of it this way:
+double-quote expansion is used to produce new strings. If you already
+have a string, why do you need more?
+
+If you get used to writing odd things like these:
+
+    print "$var";       # BAD
+    my $new = "$old";       # BAD
+    somefunc("$var");    # BAD
+
+You'll be in trouble. Those should (in 99.8% of the cases) be
+the simpler and more direct:
+
+    print $var;
+    my $new = $old;
+    somefunc($var);
+
+Otherwise, besides slowing you down, you're going to break code when
+the thing in the scalar is actually neither a string nor a number, but
+a reference:
+
+    func(\@array);
+    sub func {
+        my $aref = shift;
+        my $oref = "$aref";  # WRONG
+    }
+
+You can also get into subtle problems on those few operations in Perl
+that actually do care about the difference between a string and a
+number, such as the magical C<++> autoincrement operator or the
+syscall() function.
+
+Stringification also destroys arrays.
+
+    my @lines = `command`;
+    print "@lines";     # WRONG - extra blanks
+    print @lines;       # right
+
+=head2 Why don't my E<lt>E<lt>HERE documents work?
+
+Here documents are found in L<perlop>. Check for these three things:
+
+=over 4
+
+=item There must be no space after the E<lt>E<lt> part.
+
+=item There (probably) should be a semicolon at the end of the opening token
+
+=item You can't (easily) have any space in front of the tag.
+
+=item There needs to be at least a line separator after the end token.
+
+=back
+
+If you want to indent the text in the here document, you
+can do this:
+
+    # all in one
+    (my $VAR = <<HERE_TARGET) =~ s/^\s+//gm;
+        your text
+        goes here
+    HERE_TARGET
+
+But the HERE_TARGET must still be flush against the margin.
+If you want that indented also, you'll have to quote
+in the indentation.
+
+    (my $quote = <<'    FINIS') =~ s/^\s+//gm;
+            ...we will have peace, when you and all your works have
+            perished--and the works of your dark master to whom you
+            would deliver us. You are a liar, Saruman, and a corrupter
+            of men's hearts. --Theoden in /usr/src/perl/taint.c
+        FINIS
+    $quote =~ s/\s+--/\n--/;
+
+A nice general-purpose fixer-upper function for indented here documents
+follows. It expects to be called with a here document as its argument.
+It looks to see whether each line begins with a common substring, and
+if so, strips that substring off. Otherwise, it takes the amount of leading
+whitespace found on the first line and removes that much off each
+subsequent line.
+
+    sub fix {
+        local $_ = shift;
+        my ($white, $leader);  # common whitespace and common leading string
+        if (/^\s*(?:([^\w\s]+)(\s*).*\n)(?:\s*\g1\g2?.*\n)+$/) {
+            ($white, $leader) = ($2, quotemeta($1));
+        } else {
+            ($white, $leader) = (/^(\s+)/, '');
+        }
+        s/^\s*?$leader(?:$white)?//gm;
+        return $_;
+    }
+
+This works with leading special strings, dynamically determined:
+
+    my $remember_the_main = fix<<'    MAIN_INTERPRETER_LOOP';
+    @@@ int
+    @@@ runops() {
+    @@@     SAVEI32(runlevel);
+    @@@     runlevel++;
+    @@@     while ( op = (*op->op_ppaddr)() );
+    @@@     TAINT_NOT;
+    @@@     return 0;
+    @@@ }
+    MAIN_INTERPRETER_LOOP
+
+Or with a fixed amount of leading whitespace, with remaining
+indentation correctly preserved:
+
+    my $poem = fix<<EVER_ON_AND_ON;
+       Now far ahead the Road has gone,
+      And I must follow, if I can,
+       Pursuing it with eager feet,
+      Until it joins some larger way
+       Where many paths and errands meet.
+      And whither then? I cannot say.
+        --Bilbo in /usr/src/perl/pp_ctl.c
+    EVER_ON_AND_ON
+
+=head1 Data: Arrays
+
+=head2 What is the difference between a list and an array?
+
+(contributed by brian d foy)
+
+A list is a fixed collection of scalars. An array is a variable that
+holds a variable collection of scalars. An array can supply its collection
+for list operations, so list operations also work on arrays:
+
+    # slices
+    ( 'dog', 'cat', 'bird' )[2,3];
+    @animals[2,3];
+
+    # iteration
+    foreach ( qw( dog cat bird ) ) { ... }
+    foreach ( @animals ) { ... }
+
+    my @three = grep { length == 3 } qw( dog cat bird );
+    my @three = grep { length == 3 } @animals;
+
+    # supply an argument list
+    wash_animals( qw( dog cat bird ) );
+    wash_animals( @animals );
+
+Array operations, which change the scalars, rearrange them, or add
+or subtract some scalars, only work on arrays. These can't work on a
+list, which is fixed. Array operations include C<shift>, C<unshift>,
+C<push>, C<pop>, and C<splice>.
+
+An array can also change its length:
+
+    $#animals = 1;  # truncate to two elements
+    $#animals = 10000; # pre-extend to 10,001 elements
+
+You can change an array element, but you can't change a list element:
+
+    $animals[0] = 'Rottweiler';
+    qw( dog cat bird )[0] = 'Rottweiler'; # syntax error!
+
+    foreach ( @animals ) {
+        s/^d/fr/;  # works fine
+    }
+
+    foreach ( qw( dog cat bird ) ) {
+        s/^d/fr/;  # Error! Modification of read only value!
+    }
+
+However, if the list element is itself a variable, it appears that you
+can change a list element. However, the list element is the variable, not
+the data. You're not changing the list element, but something the list
+element refers to. The list element itself doesn't change: it's still
+the same variable.
+
+You also have to be careful about context. You can assign an array to
+a scalar to get the number of elements in the array. This only works
+for arrays, though:
+
+    my $count = @animals;  # only works with arrays
+
+If you try to do the same thing with what you think is a list, you
+get a quite different result. Although it looks like you have a list
+on the righthand side, Perl actually sees a bunch of scalars separated
+by a comma:
+
+    my $scalar = ( 'dog', 'cat', 'bird' );  # $scalar gets bird
+
+Since you're assigning to a scalar, the righthand side is in scalar
+context. The comma operator (yes, it's an operator!) in scalar
+context evaluates its lefthand side, throws away the result, and
+evaluates it's righthand side and returns the result. In effect,
+that list-lookalike assigns to C<$scalar> it's rightmost value. Many
+people mess this up because they choose a list-lookalike whose
+last element is also the count they expect:
+
+    my $scalar = ( 1, 2, 3 );  # $scalar gets 3, accidentally
+
+=head2 What is the difference between $array[1] and @array[1]?
+
+(contributed by brian d foy)
+
+The difference is the sigil, that special character in front of the
+array name. The C<$> sigil means "exactly one item", while the C<@>
+sigil means "zero or more items". The C<$> gets you a single scalar,
+while the C<@> gets you a list.
+
+The confusion arises because people incorrectly assume that the sigil
+denotes the variable type.
+
+The C<$array[1]> is a single-element access to the array. It's going
+to return the item in index 1 (or undef if there is no item there).
+If you intend to get exactly one element from the array, this is the
+form you should use.
+
+The C<@array[1]> is an array slice, although it has only one index.
+You can pull out multiple elements simultaneously by specifying
+additional indices as a list, like C<@array[1,4,3,0]>.
+
+Using a slice on the lefthand side of the assignment supplies list
+context to the righthand side. This can lead to unexpected results.
+For instance, if you want to read a single line from a filehandle,
+assigning to a scalar value is fine:
+
+    $array[1] = <STDIN>;
+
+However, in list context, the line input operator returns all of the
+lines as a list. The first line goes into C<@array[1]> and the rest
+of the lines mysteriously disappear:
+
+    @array[1] = <STDIN>;  # most likely not what you want
+
+Either the C<use warnings> pragma or the B<-w> flag will warn you when
+you use an array slice with a single index.
+
+=head2 How can I remove duplicate elements from a list or array?
+
+(contributed by brian d foy)
+
+Use a hash. When you think the words "unique" or "duplicated", think
+"hash keys".
+
+If you don't care about the order of the elements, you could just
+create the hash then extract the keys. It's not important how you
+create that hash: just that you use C<keys> to get the unique
+elements.
+
+    my %hash   = map { $_, 1 } @array;
+    # or a hash slice: @hash{ @array } = ();
+    # or a foreach: $hash{$_} = 1 foreach ( @array );
+
+    my @unique = keys %hash;
+
+If you want to use a module, try the C<uniq> function from
+L<List::MoreUtils>. In list context it returns the unique elements,
+preserving their order in the list. In scalar context, it returns the
+number of unique elements.
+
+    use List::MoreUtils qw(uniq);
+
+    my @unique = uniq( 1, 2, 3, 4, 4, 5, 6, 5, 7 ); # 1,2,3,4,5,6,7
+    my $unique = uniq( 1, 2, 3, 4, 4, 5, 6, 5, 7 ); # 7
+
+You can also go through each element and skip the ones you've seen
+before. Use a hash to keep track. The first time the loop sees an
+element, that element has no key in C<%Seen>. The C<next> statement
+creates the key and immediately uses its value, which is C<undef>, so
+the loop continues to the C<push> and increments the value for that
+key. The next time the loop sees that same element, its key exists in
+the hash I<and> the value for that key is true (since it's not 0 or
+C<undef>), so the next skips that iteration and the loop goes to the
+next element.
+
+    my @unique = ();
+    my %seen   = ();
+
+    foreach my $elem ( @array ) {
+        next if $seen{ $elem }++;
+        push @unique, $elem;
+    }
+
+You can write this more briefly using a grep, which does the
+same thing.
+
+    my %seen = ();
+    my @unique = grep { ! $seen{ $_ }++ } @array;
+
+=head2 How can I tell whether a certain element is contained in a list or array?
+
+(portions of this answer contributed by Anno Siegel and brian d foy)
+
+Hearing the word "in" is an I<in>dication that you probably should have
+used a hash, not a list or array, to store your data. Hashes are
+designed to answer this question quickly and efficiently. Arrays aren't.
+
+That being said, there are several ways to approach this. In Perl 5.10
+and later, you can use the smart match operator to check that an item is
+contained in an array or a hash:
+
+    use 5.010;
+
+    if( $item ~~ @array ) {
+        say "The array contains $item"
+    }
+
+    if( $item ~~ %hash ) {
+        say "The hash contains $item"
+    }
+
+With earlier versions of Perl, you have to do a bit more work. If you
+are going to make this query many times over arbitrary string values,
+the fastest way is probably to invert the original array and maintain a
+hash whose keys are the first array's values:
+
+    my @blues = qw/azure cerulean teal turquoise lapis-lazuli/;
+    my %is_blue = ();
+    for (@blues) { $is_blue{$_} = 1 }
+
+Now you can check whether C<$is_blue{$some_color}>. It might have
+been a good idea to keep the blues all in a hash in the first place.
+
+If the values are all small integers, you could use a simple indexed
+array. This kind of an array will take up less space:
+
+    my @primes = (2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31);
+    my @is_tiny_prime = ();
+    for (@primes) { $is_tiny_prime[$_] = 1 }
+    # or simply  @istiny_prime[@primes] = (1) x @primes;
+
+Now you check whether $is_tiny_prime[$some_number].
+
+If the values in question are integers instead of strings, you can save
+quite a lot of space by using bit strings instead:
+
+    my @articles = ( 1..10, 150..2000, 2017 );
+    undef $read;
+    for (@articles) { vec($read,$_,1) = 1 }
+
+Now check whether C<vec($read,$n,1)> is true for some C<$n>.
+
+These methods guarantee fast individual tests but require a re-organization
+of the original list or array. They only pay off if you have to test
+multiple values against the same array.
+
+If you are testing only once, the standard module L<List::Util> exports
+the function C<first> for this purpose. It works by stopping once it
+finds the element. It's written in C for speed, and its Perl equivalent
+looks like this subroutine:
+
+    sub first (&@) {
+        my $code = shift;
+        foreach (@_) {
+            return $_ if &{$code}();
+        }
+        undef;
+    }
+
+If speed is of little concern, the common idiom uses grep in scalar context
+(which returns the number of items that passed its condition) to traverse the
+entire list. This does have the benefit of telling you how many matches it
+found, though.
+
+    my $is_there = grep $_ eq $whatever, @array;
+
+If you want to actually extract the matching elements, simply use grep in
+list context.
+
+    my @matches = grep $_ eq $whatever, @array;
+
+=head2 How do I compute the difference of two arrays? How do I compute the intersection of two arrays?
+
+Use a hash. Here's code to do both and more. It assumes that each
+element is unique in a given array:
+
+    my (@union, @intersection, @difference);
+    my %count = ();
+    foreach my $element (@array1, @array2) { $count{$element}++ }
+    foreach my $element (keys %count) {
+        push @union, $element;
+        push @{ $count{$element} > 1 ? \@intersection : \@difference }, $element;
+    }
+
+Note that this is the I<symmetric difference>, that is, all elements
+in either A or in B but not in both. Think of it as an xor operation.
+
+=head2 How do I test whether two arrays or hashes are equal?
+
+With Perl 5.10 and later, the smart match operator can give you the answer
+with the least amount of work:
+
+    use 5.010;
+
+    if( @array1 ~~ @array2 ) {
+        say "The arrays are the same";
+    }
+
+    if( %hash1 ~~ %hash2 ) # doesn't check values!  {
+        say "The hash keys are the same";
+    }
+
+The following code works for single-level arrays. It uses a
+stringwise comparison, and does not distinguish defined versus
+undefined empty strings. Modify if you have other needs.
+
+    $are_equal = compare_arrays(\@frogs, \@toads);
+
+    sub compare_arrays {
+        my ($first, $second) = @_;
+        no warnings;  # silence spurious -w undef complaints
+        return 0 unless @$first == @$second;
+        for (my $i = 0; $i < @$first; $i++) {
+            return 0 if $first->[$i] ne $second->[$i];
+        }
+        return 1;
+    }
+
+For multilevel structures, you may wish to use an approach more
+like this one. It uses the CPAN module L<FreezeThaw>:
+
+    use FreezeThaw qw(cmpStr);
+    my @a = my @b = ( "this", "that", [ "more", "stuff" ] );
+
+    printf "a and b contain %s arrays\n",
+        cmpStr(\@a, \@b) == 0
+        ? "the same"
+        : "different";
+
+This approach also works for comparing hashes. Here we'll demonstrate
+two different answers:
+
+    use FreezeThaw qw(cmpStr cmpStrHard);
+
+    my %a = my %b = ( "this" => "that", "extra" => [ "more", "stuff" ] );
+    $a{EXTRA} = \%b;
+    $b{EXTRA} = \%a;
+
+    printf "a and b contain %s hashes\n",
+    cmpStr(\%a, \%b) == 0 ? "the same" : "different";
+
+    printf "a and b contain %s hashes\n",
+    cmpStrHard(\%a, \%b) == 0 ? "the same" : "different";
+
+
+The first reports that both those the hashes contain the same data,
+while the second reports that they do not. Which you prefer is left as
+an exercise to the reader.
+
+=head2 How do I find the first array element for which a condition is true?
+
+To find the first array element which satisfies a condition, you can
+use the C<first()> function in the L<List::Util> module, which comes
+with Perl 5.8. This example finds the first element that contains
+"Perl".
+
+    use List::Util qw(first);
+
+    my $element = first { /Perl/ } @array;
+
+If you cannot use L<List::Util>, you can make your own loop to do the
+same thing. Once you find the element, you stop the loop with last.
+
+    my $found;
+    foreach ( @array ) {
+        if( /Perl/ ) { $found = $_; last }
+    }
+
+If you want the array index, use the C<firstidx()> function from
+C<List::MoreUtils>:
+
+    use List::MoreUtils qw(firstidx);
+    my $index = firstidx { /Perl/ } @array;
+
+Or write it yourself, iterating through the indices
+and checking the array element at each index until you find one
+that satisfies the condition:
+
+    my( $found, $index ) = ( undef, -1 );
+    for( $i = 0; $i < @array; $i++ ) {
+        if( $array[$i] =~ /Perl/ ) {
+            $found = $array[$i];
+            $index = $i;
+            last;
+        }
+    }
+
+=head2 How do I handle linked lists?
+
+(contributed by brian d foy)
+
+Perl's arrays do not have a fixed size, so you don't need linked lists
+if you just want to add or remove items. You can use array operations
+such as C<push>, C<pop>, C<shift>, C<unshift>, or C<splice> to do
+that.
+
+Sometimes, however, linked lists can be useful in situations where you
+want to "shard" an array so you have have many small arrays instead of
+a single big array. You can keep arrays longer than Perl's largest
+array index, lock smaller arrays separately in threaded programs,
+reallocate less memory, or quickly insert elements in the middle of
+the chain.
+
+Steve Lembark goes through the details in his YAPC::NA 2009 talk "Perly
+Linked Lists" ( L<http://www.slideshare.net/lembark/perly-linked-lists> ),
+although you can just use his L<LinkedList::Single> module.
+
+=head2 How do I handle circular lists?
+X<circular> X<array> X<Tie::Cycle> X<Array::Iterator::Circular>
+X<cycle> X<modulus>
+
+(contributed by brian d foy)
+
+If you want to cycle through an array endlessly, you can increment the
+index modulo the number of elements in the array:
+
+    my @array = qw( a b c );
+    my $i = 0;
+
+    while( 1 ) {
+        print $array[ $i++ % @array ], "\n";
+        last if $i > 20;
+    }
+
+You can also use L<Tie::Cycle> to use a scalar that always has the
+next element of the circular array:
+
+    use Tie::Cycle;
+
+    tie my $cycle, 'Tie::Cycle', [ qw( FFFFFF 000000 FFFF00 ) ];
+
+    print $cycle; # FFFFFF
+    print $cycle; # 000000
+    print $cycle; # FFFF00
+
+The L<Array::Iterator::Circular> creates an iterator object for
+circular arrays:
+
+    use Array::Iterator::Circular;
+
+    my $color_iterator = Array::Iterator::Circular->new(
+        qw(red green blue orange)
+        );
+
+    foreach ( 1 .. 20 ) {
+        print $color_iterator->next, "\n";
+    }
+
+=head2 How do I shuffle an array randomly?
+
+If you either have Perl 5.8.0 or later installed, or if you have
+Scalar-List-Utils 1.03 or later installed, you can say:
+
+    use List::Util 'shuffle';
+
+    @shuffled = shuffle(@list);
+
+If not, you can use a Fisher-Yates shuffle.
+
+    sub fisher_yates_shuffle {
+        my $deck = shift;  # $deck is a reference to an array
+        return unless @$deck; # must not be empty!
+
+        my $i = @$deck;
+        while (--$i) {
+            my $j = int rand ($i+1);
+            @$deck[$i,$j] = @$deck[$j,$i];
+        }
+    }
+
+    # shuffle my mpeg collection
+    #
+    my @mpeg = <audio/*/*.mp3>;
+    fisher_yates_shuffle( \@mpeg );    # randomize @mpeg in place
+    print @mpeg;
+
+Note that the above implementation shuffles an array in place,
+unlike the C<List::Util::shuffle()> which takes a list and returns
+a new shuffled list.
+
+You've probably seen shuffling algorithms that work using splice,
+randomly picking another element to swap the current element with
+
+    srand;
+    @new = ();
+    @old = 1 .. 10;  # just a demo
+    while (@old) {
+        push(@new, splice(@old, rand @old, 1));
+    }
+
+This is bad because splice is already O(N), and since you do it N
+times, you just invented a quadratic algorithm; that is, O(N**2).
+This does not scale, although Perl is so efficient that you probably
+won't notice this until you have rather largish arrays.
+
+=head2 How do I process/modify each element of an array?
+
+Use C<for>/C<foreach>:
+
+    for (@lines) {
+        s/foo/bar/;    # change that word
+        tr/XZ/ZX/;    # swap those letters
+    }
+
+Here's another; let's compute spherical volumes:
+
+    my @volumes = @radii;
+    for (@volumes) {   # @volumes has changed parts
+        $_ **= 3;
+        $_ *= (4/3) * 3.14159;  # this will be constant folded
+    }
+
+which can also be done with C<map()> which is made to transform
+one list into another:
+
+    my @volumes = map {$_ ** 3 * (4/3) * 3.14159} @radii;
+
+If you want to do the same thing to modify the values of the
+hash, you can use the C<values> function. As of Perl 5.6
+the values are not copied, so if you modify $orbit (in this
+case), you modify the value.
+
+    for my $orbit ( values %orbits ) {
+        ($orbit **= 3) *= (4/3) * 3.14159;
+    }
+
+Prior to perl 5.6 C<values> returned copies of the values,
+so older perl code often contains constructions such as
+C<@orbits{keys %orbits}> instead of C<values %orbits> where
+the hash is to be modified.
+
+=head2 How do I select a random element from an array?
+
+Use the C<rand()> function (see L<perlfunc/rand>):
+
+    my $index   = rand @array;
+    my $element = $array[$index];
+
+Or, simply:
+
+    my $element = $array[ rand @array ];
+
+=head2 How do I permute N elements of a list?
+X<List::Permutor> X<permute> X<Algorithm::Loops> X<Knuth>
+X<The Art of Computer Programming> X<Fischer-Krause>
+
+Use the L<List::Permutor> module on CPAN. If the list is actually an
+array, try the L<Algorithm::Permute> module (also on CPAN). It's
+written in XS code and is very efficient:
+
+    use Algorithm::Permute;
+
+    my @array = 'a'..'d';
+    my $p_iterator = Algorithm::Permute->new ( \@array );
+
+    while (my @perm = $p_iterator->next) {
+       print "next permutation: (@perm)\n";
+    }
+
+For even faster execution, you could do:
+
+    use Algorithm::Permute;
+
+    my @array = 'a'..'d';
+
+    Algorithm::Permute::permute {
+        print "next permutation: (@array)\n";
+    } @array;
+
+Here's a little program that generates all permutations of all the
+words on each line of input. The algorithm embodied in the
+C<permute()> function is discussed in Volume 4 (still unpublished) of
+Knuth's I<The Art of Computer Programming> and will work on any list:
+
+    #!/usr/bin/perl -n
+    # Fischer-Krause ordered permutation generator
+
+    sub permute (&@) {
+        my $code = shift;
+        my @idx = 0..$#_;
+        while ( $code->(@_[@idx]) ) {
+            my $p = $#idx;
+            --$p while $idx[$p-1] > $idx[$p];
+            my $q = $p or return;
+            push @idx, reverse splice @idx, $p;
+            ++$q while $idx[$p-1] > $idx[$q];
+            @idx[$p-1,$q]=@idx[$q,$p-1];
+        }
+    }
+
+    permute { print "@_\n" } split;
+
+The L<Algorithm::Loops> module also provides the C<NextPermute> and
+C<NextPermuteNum> functions which efficiently find all unique permutations
+of an array, even if it contains duplicate values, modifying it in-place:
+if its elements are in reverse-sorted order then the array is reversed,
+making it sorted, and it returns false; otherwise the next
+permutation is returned.
+
+C<NextPermute> uses string order and C<NextPermuteNum> numeric order, so
+you can enumerate all the permutations of C<0..9> like this:
+
+    use Algorithm::Loops qw(NextPermuteNum);
+
+    my @list= 0..9;
+    do { print "@list\n" } while NextPermuteNum @list;
+
+=head2 How do I sort an array by (anything)?
+
+Supply a comparison function to sort() (described in L<perlfunc/sort>):
+
+    @list = sort { $a <=> $b } @list;
+
+The default sort function is cmp, string comparison, which would
+sort C<(1, 2, 10)> into C<(1, 10, 2)>. C<< <=> >>, used above, is
+the numerical comparison operator.
+
+If you have a complicated function needed to pull out the part you
+want to sort on, then don't do it inside the sort function. Pull it
+out first, because the sort BLOCK can be called many times for the
+same element. Here's an example of how to pull out the first word
+after the first number on each item, and then sort those words
+case-insensitively.
+
+    my @idx;
+    for (@data) {
+        my $item;
+        ($item) = /\d+\s*(\S+)/;
+        push @idx, uc($item);
+    }
+    my @sorted = @data[ sort { $idx[$a] cmp $idx[$b] } 0 .. $#idx ];
+
+which could also be written this way, using a trick
+that's come to be known as the Schwartzian Transform:
+
+    my @sorted = map  { $_->[0] }
+        sort { $a->[1] cmp $b->[1] }
+        map  { [ $_, uc( (/\d+\s*(\S+)/)[0]) ] } @data;
+
+If you need to sort on several fields, the following paradigm is useful.
+
+    my @sorted = sort {
+        field1($a) <=> field1($b) ||
+        field2($a) cmp field2($b) ||
+        field3($a) cmp field3($b)
+    } @data;
+
+This can be conveniently combined with precalculation of keys as given
+above.
+
+See the F<sort> article in the "Far More Than You Ever Wanted
+To Know" collection in L<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz> for
+more about this approach.
+
+See also the question later in L<perlfaq4> on sorting hashes.
+
+=head2 How do I manipulate arrays of bits?
+
+Use C<pack()> and C<unpack()>, or else C<vec()> and the bitwise
+operations.
+
+For example, you don't have to store individual bits in an array
+(which would mean that you're wasting a lot of space). To convert an
+array of bits to a string, use C<vec()> to set the right bits. This
+sets C<$vec> to have bit N set only if C<$ints[N]> was set:
+
+    my @ints = (...); # array of bits, e.g. ( 1, 0, 0, 1, 1, 0 ... )
+    my $vec = '';
+    foreach( 0 .. $#ints ) {
+        vec($vec,$_,1) = 1 if $ints[$_];
+    }
+
+The string C<$vec> only takes up as many bits as it needs. For
+instance, if you had 16 entries in C<@ints>, C<$vec> only needs two
+bytes to store them (not counting the scalar variable overhead).
+
+Here's how, given a vector in C<$vec>, you can get those bits into
+your C<@ints> array:
+
+    sub bitvec_to_list {
+        my $vec = shift;
+        my @ints;
+        # Find null-byte density then select best algorithm
+        if ($vec =~ tr/\0// / length $vec > 0.95) {
+            use integer;
+            my $i;
+
+            # This method is faster with mostly null-bytes
+            while($vec =~ /[^\0]/g ) {
+                $i = -9 + 8 * pos $vec;
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+                push @ints, $i if vec($vec, ++$i, 1);
+            }
+        }
+        else {
+            # This method is a fast general algorithm
+            use integer;
+            my $bits = unpack "b*", $vec;
+            push @ints, 0 if $bits =~ s/^(\d)// && $1;
+            push @ints, pos $bits while($bits =~ /1/g);
+        }
+
+        return \@ints;
+    }
+
+This method gets faster the more sparse the bit vector is.
+(Courtesy of Tim Bunce and Winfried Koenig.)
+
+You can make the while loop a lot shorter with this suggestion
+from Benjamin Goldberg:
+
+    while($vec =~ /[^\0]+/g ) {
+        push @ints, grep vec($vec, $_, 1), $-[0] * 8 .. $+[0] * 8;
+    }
+
+Or use the CPAN module L<Bit::Vector>:
+
+    my $vector = Bit::Vector->new($num_of_bits);
+    $vector->Index_List_Store(@ints);
+    my @ints = $vector->Index_List_Read();
+
+L<Bit::Vector> provides efficient methods for bit vector, sets of
+small integers and "big int" math.
+
+Here's a more extensive illustration using vec():
+
+    # vec demo
+    my $vector = "\xff\x0f\xef\xfe";
+    print "Ilya's string \\xff\\x0f\\xef\\xfe represents the number ",
+    unpack("N", $vector), "\n";
+    my $is_set = vec($vector, 23, 1);
+    print "Its 23rd bit is ", $is_set ? "set" : "clear", ".\n";
+    pvec($vector);
+
+    set_vec(1,1,1);
+    set_vec(3,1,1);
+    set_vec(23,1,1);
+
+    set_vec(3,1,3);
+    set_vec(3,2,3);
+    set_vec(3,4,3);
+    set_vec(3,4,7);
+    set_vec(3,8,3);
+    set_vec(3,8,7);
+
+    set_vec(0,32,17);
+    set_vec(1,32,17);
+
+    sub set_vec {
+        my ($offset, $width, $value) = @_;
+        my $vector = '';
+        vec($vector, $offset, $width) = $value;
+        print "offset=$offset width=$width value=$value\n";
+        pvec($vector);
+    }
+
+    sub pvec {
+        my $vector = shift;
+        my $bits = unpack("b*", $vector);
+        my $i = 0;
+        my $BASE = 8;
+
+        print "vector length in bytes: ", length($vector), "\n";
+        @bytes = unpack("A8" x length($vector), $bits);
+        print "bits are: @bytes\n\n";
+    }
+
+=head2 Why does defined() return true on empty arrays and hashes?
+
+The short story is that you should probably only use defined on scalars or
+functions, not on aggregates (arrays and hashes). See L<perlfunc/defined>
+in the 5.004 release or later of Perl for more detail.
+
+=head1 Data: Hashes (Associative Arrays)
+
+=head2 How do I process an entire hash?
+
+(contributed by brian d foy)
+
+There are a couple of ways that you can process an entire hash. You
+can get a list of keys, then go through each key, or grab a one
+key-value pair at a time.
+
+To go through all of the keys, use the C<keys> function. This extracts
+all of the keys of the hash and gives them back to you as a list. You
+can then get the value through the particular key you're processing:
+
+    foreach my $key ( keys %hash ) {
+        my $value = $hash{$key}
+        ...
+    }
+
+Once you have the list of keys, you can process that list before you
+process the hash elements. For instance, you can sort the keys so you
+can process them in lexical order:
+
+    foreach my $key ( sort keys %hash ) {
+        my $value = $hash{$key}
+        ...
+    }
+
+Or, you might want to only process some of the items. If you only want
+to deal with the keys that start with C<text:>, you can select just
+those using C<grep>:
+
+    foreach my $key ( grep /^text:/, keys %hash ) {
+        my $value = $hash{$key}
+        ...
+    }
+
+If the hash is very large, you might not want to create a long list of
+keys. To save some memory, you can grab one key-value pair at a time using
+C<each()>, which returns a pair you haven't seen yet:
+
+    while( my( $key, $value ) = each( %hash ) ) {
+        ...
+    }
+
+The C<each> operator returns the pairs in apparently random order, so if
+ordering matters to you, you'll have to stick with the C<keys> method.
+
+The C<each()> operator can be a bit tricky though. You can't add or
+delete keys of the hash while you're using it without possibly
+skipping or re-processing some pairs after Perl internally rehashes
+all of the elements. Additionally, a hash has only one iterator, so if
+you mix C<keys>, C<values>, or C<each> on the same hash, you risk resetting
+the iterator and messing up your processing. See the C<each> entry in
+L<perlfunc> for more details.
+
+=head2 How do I merge two hashes?
+X<hash> X<merge> X<slice, hash>
+
+(contributed by brian d foy)
+
+Before you decide to merge two hashes, you have to decide what to do
+if both hashes contain keys that are the same and if you want to leave
+the original hashes as they were.
+
+If you want to preserve the original hashes, copy one hash (C<%hash1>)
+to a new hash (C<%new_hash>), then add the keys from the other hash
+(C<%hash2> to the new hash. Checking that the key already exists in
+C<%new_hash> gives you a chance to decide what to do with the
+duplicates:
+
+    my %new_hash = %hash1; # make a copy; leave %hash1 alone
+
+    foreach my $key2 ( keys %hash2 ) {
+        if( exists $new_hash{$key2} ) {
+            warn "Key [$key2] is in both hashes!";
+            # handle the duplicate (perhaps only warning)
+            ...
+            next;
+        }
+        else {
+            $new_hash{$key2} = $hash2{$key2};
+        }
+    }
+
+If you don't want to create a new hash, you can still use this looping
+technique; just change the C<%new_hash> to C<%hash1>.
+
+    foreach my $key2 ( keys %hash2 ) {
+        if( exists $hash1{$key2} ) {
+            warn "Key [$key2] is in both hashes!";
+            # handle the duplicate (perhaps only warning)
+            ...
+            next;
+        }
+        else {
+            $hash1{$key2} = $hash2{$key2};
+        }
+      }
+
+If you don't care that one hash overwrites keys and values from the other, you
+could just use a hash slice to add one hash to another. In this case, values
+from C<%hash2> replace values from C<%hash1> when they have keys in common:
+
+    @hash1{ keys %hash2 } = values %hash2;
+
+=head2 What happens if I add or remove keys from a hash while iterating over it?
+
+(contributed by brian d foy)
+
+The easy answer is "Don't do that!"
+
+If you iterate through the hash with each(), you can delete the key
+most recently returned without worrying about it. If you delete or add
+other keys, the iterator may skip or double up on them since perl
+may rearrange the hash table. See the
+entry for C<each()> in L<perlfunc>.
+
+=head2 How do I look up a hash element by value?
+
+Create a reverse hash:
+
+    my %by_value = reverse %by_key;
+    my $key = $by_value{$value};
+
+That's not particularly efficient. It would be more space-efficient
+to use:
+
+    while (my ($key, $value) = each %by_key) {
+        $by_value{$value} = $key;
+    }
+
+If your hash could have repeated values, the methods above will only find
+one of the associated keys.  This may or may not worry you. If it does
+worry you, you can always reverse the hash into a hash of arrays instead:
+
+    while (my ($key, $value) = each %by_key) {
+         push @{$key_list_by_value{$value}}, $key;
+    }
+
+=head2 How can I know how many entries are in a hash?
+
+(contributed by brian d foy)
+
+This is very similar to "How do I process an entire hash?", also in
+L<perlfaq4>, but a bit simpler in the common cases.
+
+You can use the C<keys()> built-in function in scalar context to find out
+have many entries you have in a hash:
+
+    my $key_count = keys %hash; # must be scalar context!
+
+If you want to find out how many entries have a defined value, that's
+a bit different. You have to check each value. A C<grep> is handy:
+
+    my $defined_value_count = grep { defined } values %hash;
+
+You can use that same structure to count the entries any way that
+you like. If you want the count of the keys with vowels in them,
+you just test for that instead:
+
+    my $vowel_count = grep { /[aeiou]/ } keys %hash;
+
+The C<grep> in scalar context returns the count. If you want the list
+of matching items, just use it in list context instead:
+
+    my @defined_values = grep { defined } values %hash;
+
+The C<keys()> function also resets the iterator, which means that you may
+see strange results if you use this between uses of other hash operators
+such as C<each()>.
+
+=head2 How do I sort a hash (optionally by value instead of key)?
+
+(contributed by brian d foy)
+
+To sort a hash, start with the keys. In this example, we give the list of
+keys to the sort function which then compares them ASCIIbetically (which
+might be affected by your locale settings). The output list has the keys
+in ASCIIbetical order. Once we have the keys, we can go through them to
+create a report which lists the keys in ASCIIbetical order.
+
+    my @keys = sort { $a cmp $b } keys %hash;
+
+    foreach my $key ( @keys ) {
+        printf "%-20s %6d\n", $key, $hash{$key};
+    }
+
+We could get more fancy in the C<sort()> block though. Instead of
+comparing the keys, we can compute a value with them and use that
+value as the comparison.
+
+For instance, to make our report order case-insensitive, we use
+C<lc> to lowercase the keys before comparing them:
+
+    my @keys = sort { lc $a cmp lc $b } keys %hash;
+
+Note: if the computation is expensive or the hash has many elements,
+you may want to look at the Schwartzian Transform to cache the
+computation results.
+
+If we want to sort by the hash value instead, we use the hash key
+to look it up. We still get out a list of keys, but this time they
+are ordered by their value.
+
+    my @keys = sort { $hash{$a} <=> $hash{$b} } keys %hash;
+
+From there we can get more complex. If the hash values are the same,
+we can provide a secondary sort on the hash key.
+
+    my @keys = sort {
+        $hash{$a} <=> $hash{$b}
+            or
+        "\L$a" cmp "\L$b"
+    } keys %hash;
+
+=head2 How can I always keep my hash sorted?
+X<hash tie sort DB_File Tie::IxHash>
+
+You can look into using the C<DB_File> module and C<tie()> using the
+C<$DB_BTREE> hash bindings as documented in L<DB_File/"In Memory
+Databases">. The L<Tie::IxHash> module from CPAN might also be
+instructive. Although this does keep your hash sorted, you might not
+like the slowdown you suffer from the tie interface. Are you sure you
+need to do this? :)
+
+=head2 What's the difference between "delete" and "undef" with hashes?
+
+Hashes contain pairs of scalars: the first is the key, the
+second is the value. The key will be coerced to a string,
+although the value can be any kind of scalar: string,
+number, or reference. If a key C<$key> is present in
+%hash, C<exists($hash{$key})> will return true. The value
+for a given key can be C<undef>, in which case
+C<$hash{$key}> will be C<undef> while C<exists $hash{$key}>
+will return true. This corresponds to (C<$key>, C<undef>)
+being in the hash.
+
+Pictures help... Here's the C<%hash> table:
+
+      keys  values
+    +------+------+
+    |  a   |  3   |
+    |  x   |  7   |
+    |  d   |  0   |
+    |  e   |  2   |
+    +------+------+
+
+And these conditions hold
+
+    $hash{'a'}                       is true
+    $hash{'d'}                       is false
+    defined $hash{'d'}               is true
+    defined $hash{'a'}               is true
+    exists $hash{'a'}                is true (Perl 5 only)
+    grep ($_ eq 'a', keys %hash)     is true
+
+If you now say
+
+    undef $hash{'a'}
+
+your table now reads:
+
+
+      keys  values
+    +------+------+
+    |  a   | undef|
+    |  x   |  7   |
+    |  d   |  0   |
+    |  e   |  2   |
+    +------+------+
+
+and these conditions now hold; changes in caps:
+
+    $hash{'a'}                       is FALSE
+    $hash{'d'}                       is false
+    defined $hash{'d'}               is true
+    defined $hash{'a'}               is FALSE
+    exists $hash{'a'}                is true (Perl 5 only)
+    grep ($_ eq 'a', keys %hash)     is true
+
+Notice the last two: you have an undef value, but a defined key!
+
+Now, consider this:
+
+    delete $hash{'a'}
+
+your table now reads:
+
+      keys  values
+    +------+------+
+    |  x   |  7   |
+    |  d   |  0   |
+    |  e   |  2   |
+    +------+------+
+
+and these conditions now hold; changes in caps:
+
+    $hash{'a'}                       is false
+    $hash{'d'}                       is false
+    defined $hash{'d'}               is true
+    defined $hash{'a'}               is false
+    exists $hash{'a'}                is FALSE (Perl 5 only)
+    grep ($_ eq 'a', keys %hash)     is FALSE
+
+See, the whole entry is gone!
+
+=head2 Why don't my tied hashes make the defined/exists distinction?
+
+This depends on the tied hash's implementation of EXISTS().
+For example, there isn't the concept of undef with hashes
+that are tied to DBM* files. It also means that exists() and
+defined() do the same thing with a DBM* file, and what they
+end up doing is not what they do with ordinary hashes.
+
+=head2 How do I reset an each() operation part-way through?
+
+(contributed by brian d foy)
+
+You can use the C<keys> or C<values> functions to reset C<each>. To
+simply reset the iterator used by C<each> without doing anything else,
+use one of them in void context:
+
+    keys %hash; # resets iterator, nothing else.
+    values %hash; # resets iterator, nothing else.
+
+See the documentation for C<each> in L<perlfunc>.
+
+=head2 How can I get the unique keys from two hashes?
+
+First you extract the keys from the hashes into lists, then solve
+the "removing duplicates" problem described above. For example:
+
+    my %seen = ();
+    for my $element (keys(%foo), keys(%bar)) {
+        $seen{$element}++;
+    }
+    my @uniq = keys %seen;
+
+Or more succinctly:
+
+    my @uniq = keys %{{%foo,%bar}};
+
+Or if you really want to save space:
+
+    my %seen = ();
+    while (defined ($key = each %foo)) {
+        $seen{$key}++;
+    }
+    while (defined ($key = each %bar)) {
+        $seen{$key}++;
+    }
+    my @uniq = keys %seen;
+
+=head2 How can I store a multidimensional array in a DBM file?
+
+Either stringify the structure yourself (no fun), or else
+get the MLDBM (which uses Data::Dumper) module from CPAN and layer
+it on top of either DB_File or GDBM_File. You might also try DBM::Deep, but
+it can be a bit slow.
+
+=head2 How can I make my hash remember the order I put elements into it?
+
+Use the L<Tie::IxHash> from CPAN.
+
+    use Tie::IxHash;
+
+    tie my %myhash, 'Tie::IxHash';
+
+    for (my $i=0; $i<20; $i++) {
+        $myhash{$i} = 2*$i;
+    }
+
+    my @keys = keys %myhash;
+    # @keys = (0,1,2,3,...)
+
+=head2 Why does passing a subroutine an undefined element in a hash create it?
+
+(contributed by brian d foy)
+
+Are you using a really old version of Perl?
+
+Normally, accessing a hash key's value for a nonexistent key will
+I<not> create the key.
+
+    my %hash  = ();
+    my $value = $hash{ 'foo' };
+    print "This won't print\n" if exists $hash{ 'foo' };
+
+Passing C<$hash{ 'foo' }> to a subroutine used to be a special case, though.
+Since you could assign directly to C<$_[0]>, Perl had to be ready to
+make that assignment so it created the hash key ahead of time:
+
+    my_sub( $hash{ 'foo' } );
+    print "This will print before 5.004\n" if exists $hash{ 'foo' };
+
+    sub my_sub {
+        # $_[0] = 'bar'; # create hash key in case you do this
+        1;
+    }
+
+Since Perl 5.004, however, this situation is a special case and Perl
+creates the hash key only when you make the assignment:
+
+    my_sub( $hash{ 'foo' } );
+    print "This will print, even after 5.004\n" if exists $hash{ 'foo' };
+
+    sub my_sub {
+        $_[0] = 'bar';
+    }
+
+However, if you want the old behavior (and think carefully about that
+because it's a weird side effect), you can pass a hash slice instead.
+Perl 5.004 didn't make this a special case:
+
+    my_sub( @hash{ qw/foo/ } );
+
+=head2 How can I make the Perl equivalent of a C structure/C++ class/hash or array of hashes or arrays?
+
+Usually a hash ref, perhaps like this:
+
+    $record = {
+        NAME   => "Jason",
+        EMPNO  => 132,
+        TITLE  => "deputy peon",
+        AGE    => 23,
+        SALARY => 37_000,
+        PALS   => [ "Norbert", "Rhys", "Phineas"],
+    };
+
+References are documented in L<perlref> and L<perlreftut>.
+Examples of complex data structures are given in L<perldsc> and
+L<perllol>. Examples of structures and object-oriented classes are
+in L<perltoot>.
+
+=head2 How can I use a reference as a hash key?
+
+(contributed by brian d foy and Ben Morrow)
+
+Hash keys are strings, so you can't really use a reference as the key.
+When you try to do that, perl turns the reference into its stringified
+form (for instance, C<HASH(0xDEADBEEF)>). From there you can't get
+back the reference from the stringified form, at least without doing
+some extra work on your own.
+
+Remember that the entry in the hash will still be there even if
+the referenced variable  goes out of scope, and that it is entirely
+possible for Perl to subsequently allocate a different variable at
+the same address. This will mean a new variable might accidentally
+be associated with the value for an old.
+
+If you have Perl 5.10 or later, and you just want to store a value
+against the reference for lookup later, you can use the core
+Hash::Util::Fieldhash module. This will also handle renaming the
+keys if you use multiple threads (which causes all variables to be
+reallocated at new addresses, changing their stringification), and
+garbage-collecting the entries when the referenced variable goes out
+of scope.
+
+If you actually need to be able to get a real reference back from
+each hash entry, you can use the Tie::RefHash module, which does the
+required work for you.
+
+=head2 How can I check if a key exists in a multilevel hash?
+
+(contributed by brian d foy)
+
+The trick to this problem is avoiding accidental autovivification. If
+you want to check three keys deep, you might naE<0xEF>vely try this:
+
+    my %hash;
+    if( exists $hash{key1}{key2}{key3} ) {
+        ...;
+    }
+
+Even though you started with a completely empty hash, after that call to
+C<exists> you've created the structure you needed to check for C<key3>:
+
+    %hash = (
+              'key1' => {
+                          'key2' => {}
+                        }
+            );
+
+That's autovivification. You can get around this in a few ways. The
+easiest way is to just turn it off. The lexical C<autovivification>
+pragma is available on CPAN. Now you don't add to the hash:
+
+    {
+        no autovivification;
+        my %hash;
+        if( exists $hash{key1}{key2}{key3} ) {
+            ...;
+        }
+    }
+
+The L<Data::Diver> module on CPAN can do it for you too. Its C<Dive>
+subroutine can tell you not only if the keys exist but also get the
+value:
+
+    use Data::Diver qw(Dive);
+
+    my @exists = Dive( \%hash, qw(key1 key2 key3) );
+    if(  ! @exists  ) {
+        ...; # keys do not exist
+    }
+    elsif(  ! defined $exists[0]  ) {
+        ...; # keys exist but value is undef
+    }
+
+You can easily do this yourself too by checking each level of the hash
+before you move onto the next level. This is essentially what
+L<Data::Diver> does for you:
+
+    if( check_hash( \%hash, qw(key1 key2 key3) ) ) {
+        ...;
+    }
+
+    sub check_hash {
+       my( $hash, @keys ) = @_;
+
+       return unless @keys;
+
+       foreach my $key ( @keys ) {
+           return unless eval { exists $hash->{$key} };
+           $hash = $hash->{$key};
+        }
+
+       return 1;
+    }
+
+=head2 How can I prevent addition of unwanted keys into a hash?
+
+Since version 5.8.0, hashes can be I<restricted> to a fixed number
+of given keys. Methods for creating and dealing with restricted hashes
+are exported by the L<Hash::Util> module.
+
+=head1 Data: Misc
+
+=head2 How do I handle binary data correctly?
+
+Perl is binary-clean, so it can handle binary data just fine.
+On Windows or DOS, however, you have to use C<binmode> for binary
+files to avoid conversions for line endings. In general, you should
+use C<binmode> any time you want to work with binary data.
+
+Also see L<perlfunc/"binmode"> or L<perlopentut>.
+
+If you're concerned about 8-bit textual data then see L<perllocale>.
+If you want to deal with multibyte characters, however, there are
+some gotchas. See the section on Regular Expressions.
+
+=head2 How do I determine whether a scalar is a number/whole/integer/float?
+
+Assuming that you don't care about IEEE notations like "NaN" or
+"Infinity", you probably just want to use a regular expression:
+
+    use 5.010;
+
+    given( $number ) {
+        when( /\D/ )
+            { say "\thas nondigits"; continue }
+        when( /^\d+\z/ )
+            { say "\tis a whole number"; continue }
+        when( /^-?\d+\z/ )
+            { say "\tis an integer"; continue }
+        when( /^[+-]?\d+\z/ )
+            { say "\tis a +/- integer"; continue }
+        when( /^-?(?:\d+\.?|\.\d)\d*\z/ )
+            { say "\tis a real number"; continue }
+        when( /^[+-]?(?=\.?\d)\d*\.?\d*(?:e[+-]?\d+)?\z/i)
+            { say "\tis a C float" }
+    }
+
+There are also some commonly used modules for the task.
+L<Scalar::Util> (distributed with 5.8) provides access to perl's
+internal function C<looks_like_number> for determining whether a
+variable looks like a number. L<Data::Types> exports functions that
+validate data types using both the above and other regular
+expressions. Thirdly, there is L<Regexp::Common> which has regular
+expressions to match various types of numbers. Those three modules are
+available from the CPAN.
+
+If you're on a POSIX system, Perl supports the C<POSIX::strtod>
+function for converting strings to doubles (and also C<POSIX::strtol>
+for longs). Its semantics are somewhat cumbersome, so here's a
+C<getnum> wrapper function for more convenient access. This function
+takes a string and returns the number it found, or C<undef> for input
+that isn't a C float. The C<is_numeric> function is a front end to
+C<getnum> if you just want to say, "Is this a float?"
+
+    sub getnum {
+        use POSIX qw(strtod);
+        my $str = shift;
+        $str =~ s/^\s+//;
+        $str =~ s/\s+$//;
+        $! = 0;
+        my($num, $unparsed) = strtod($str);
+        if (($str eq '') || ($unparsed != 0) || $!) {
+                return undef;
+        }
+        else {
+            return $num;
+        }
+    }
+
+    sub is_numeric { defined getnum($_[0]) }
+
+Or you could check out the L<String::Scanf> module on the CPAN
+instead.
+
+=head2 How do I keep persistent data across program calls?
+
+For some specific applications, you can use one of the DBM modules.
+See L<AnyDBM_File>. More generically, you should consult the L<FreezeThaw>
+or L<Storable> modules from CPAN. Starting from Perl 5.8, L<Storable> is part
+of the standard distribution. Here's one example using L<Storable>'s C<store>
+and C<retrieve> functions:
+
+    use Storable;
+    store(\%hash, "filename");
+
+    # later on...
+    $href = retrieve("filename");        # by ref
+    %hash = %{ retrieve("filename") };   # direct to hash
+
+=head2 How do I print out or copy a recursive data structure?
+
+The L<Data::Dumper> module on CPAN (or the 5.005 release of Perl) is great
+for printing out data structures. The L<Storable> module on CPAN (or the
+5.8 release of Perl), provides a function called C<dclone> that recursively
+copies its argument.
+
+    use Storable qw(dclone);
+    $r2 = dclone($r1);
+
+Where C<$r1> can be a reference to any kind of data structure you'd like.
+It will be deeply copied. Because C<dclone> takes and returns references,
+you'd have to add extra punctuation if you had a hash of arrays that
+you wanted to copy.
+
+    %newhash = %{ dclone(\%oldhash) };
+
+=head2 How do I define methods for every class/object?
+
+(contributed by Ben Morrow)
+
+You can use the C<UNIVERSAL> class (see L<UNIVERSAL>). However, please
+be very careful to consider the consequences of doing this: adding
+methods to every object is very likely to have unintended
+consequences. If possible, it would be better to have all your object
+inherit from some common base class, or to use an object system like
+Moose that supports roles.
+
+=head2 How do I verify a credit card checksum?
+
+Get the L<Business::CreditCard> module from CPAN.
+
+=head2 How do I pack arrays of doubles or floats for XS code?
+
+The arrays.h/arrays.c code in the L<PGPLOT> module on CPAN does just this.
+If you're doing a lot of float or double processing, consider using
+the L<PDL> module from CPAN instead--it makes number-crunching easy.
+
+See L<http://search.cpan.org/dist/PGPLOT> for the code.
+
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain. You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit. A simple comment in the code giving
+credit would be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq5.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq5.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq5.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1574 @@
+=head1 NAME
+
+perlfaq5 - Files and Formats
+
+=head1 DESCRIPTION
+
+This section deals with I/O and the "f" issues: filehandles, flushing,
+formats, and footers.
+
+=head2 How do I flush/unbuffer an output filehandle? Why must I do this?
+X<flush> X<buffer> X<unbuffer> X<autoflush>
+
+(contributed by brian d foy)
+
+You might like to read Mark Jason Dominus's "Suffering From Buffering"
+at L<http://perl.plover.com/FAQs/Buffering.html> .
+
+Perl normally buffers output so it doesn't make a system call for every
+bit of output. By saving up output, it makes fewer expensive system calls.
+For instance, in this little bit of code, you want to print a dot to the
+screen for every line you process to watch the progress of your program.
+Instead of seeing a dot for every line, Perl buffers the output and you
+have a long wait before you see a row of 50 dots all at once:
+
+    # long wait, then row of dots all at once
+    while( <> ) {
+        print ".";
+        print "\n" unless ++$count % 50;
+
+        #... expensive line processing operations
+    }
+
+To get around this, you have to unbuffer the output filehandle, in this
+case, C<STDOUT>. You can set the special variable C<$|> to a true value
+(mnemonic: making your filehandles "piping hot"):
+
+    $|++;
+
+    # dot shown immediately
+    while( <> ) {
+        print ".";
+        print "\n" unless ++$count % 50;
+
+        #... expensive line processing operations
+    }
+
+The C<$|> is one of the per-filehandle special variables, so each
+filehandle has its own copy of its value. If you want to merge
+standard output and standard error for instance, you have to unbuffer
+each (although STDERR might be unbuffered by default):
+
+    {
+        my $previous_default = select(STDOUT);  # save previous default
+        $|++;                                   # autoflush STDOUT
+        select(STDERR);
+        $|++;                                   # autoflush STDERR, to be sure
+        select($previous_default);              # restore previous default
+    }
+
+    # now should alternate . and +
+    while( 1 ) {
+        sleep 1;
+        print STDOUT ".";
+        print STDERR "+";
+        print STDOUT "\n" unless ++$count % 25;
+    }
+
+Besides the C<$|> special variable, you can use C<binmode> to give
+your filehandle a C<:unix> layer, which is unbuffered:
+
+    binmode( STDOUT, ":unix" );
+
+    while( 1 ) {
+        sleep 1;
+        print ".";
+        print "\n" unless ++$count % 50;
+    }
+
+For more information on output layers, see the entries for C<binmode>
+and L<open> in L<perlfunc>, and the L<PerlIO> module documentation.
+
+If you are using L<IO::Handle> or one of its subclasses, you can
+call the C<autoflush> method to change the settings of the
+filehandle:
+
+    use IO::Handle;
+    open my( $io_fh ), ">", "output.txt";
+    $io_fh->autoflush(1);
+
+The L<IO::Handle> objects also have a C<flush> method. You can flush
+the buffer any time you want without auto-buffering
+
+    $io_fh->flush;
+
+=head2 How do I change, delete, or insert a line in a file, or append to the beginning of a file?
+X<file, editing>
+
+(contributed by brian d foy)
+
+The basic idea of inserting, changing, or deleting a line from a text
+file involves reading and printing the file to the point you want to
+make the change, making the change, then reading and printing the rest
+of the file. Perl doesn't provide random access to lines (especially
+since the record input separator, C<$/>, is mutable), although modules
+such as L<Tie::File> can fake it.
+
+A Perl program to do these tasks takes the basic form of opening a
+file, printing its lines, then closing the file:
+
+    open my $in,  '<',  $file      or die "Can't read old file: $!";
+    open my $out, '>', "$file.new" or die "Can't write new file: $!";
+
+    while( <$in> ) {
+            print $out $_;
+    }
+
+    close $out;
+
+Within that basic form, add the parts that you need to insert, change,
+or delete lines.
+
+To prepend lines to the beginning, print those lines before you enter
+the loop that prints the existing lines.
+
+    open my $in,  '<',  $file      or die "Can't read old file: $!";
+    open my $out, '>', "$file.new" or die "Can't write new file: $!";
+
+    print $out "# Add this line to the top\n"; # <--- HERE'S THE MAGIC
+
+    while( <$in> ) {
+            print $out $_;
+    }
+
+    close $out;
+
+To change existing lines, insert the code to modify the lines inside
+the C<while> loop. In this case, the code finds all lowercased
+versions of "perl" and uppercases them. The happens for every line, so
+be sure that you're supposed to do that on every line!
+
+    open my $in,  '<',  $file      or die "Can't read old file: $!";
+    open my $out, '>', "$file.new" or die "Can't write new file: $!";
+
+    print $out "# Add this line to the top\n";
+
+    while( <$in> ) {
+        s/\b(perl)\b/Perl/g;
+        print $out $_;
+    }
+
+    close $out;
+
+To change only a particular line, the input line number, C<$.>, is
+useful. First read and print the lines up to the one you  want to
+change. Next, read the single line you want to change, change it, and
+print it. After that, read the rest of the lines and print those:
+
+    while( <$in> ) { # print the lines before the change
+        print $out $_;
+        last if $. == 4; # line number before change
+    }
+
+    my $line = <$in>;
+    $line =~ s/\b(perl)\b/Perl/g;
+    print $out $line;
+
+    while( <$in> ) { # print the rest of the lines
+        print $out $_;
+    }
+
+To skip lines, use the looping controls. The C<next> in this example
+skips comment lines, and the C<last> stops all processing once it
+encounters either C<__END__> or C<__DATA__>.
+
+    while( <$in> ) {
+        next if /^\s+#/;             # skip comment lines
+        last if /^__(END|DATA)__$/;  # stop at end of code marker
+        print $out $_;
+    }
+
+Do the same sort of thing to delete a particular line by using C<next>
+to skip the lines you don't want to show up in the output. This
+example skips every fifth line:
+
+    while( <$in> ) {
+        next unless $. % 5;
+        print $out $_;
+    }
+
+If, for some odd reason, you really want to see the whole file at once
+rather than processing line-by-line, you can slurp it in (as long as
+you can fit the whole thing in memory!):
+
+    open my $in,  '<',  $file      or die "Can't read old file: $!"
+    open my $out, '>', "$file.new" or die "Can't write new file: $!";
+
+    my $content = do { local $/; <$in> }; # slurp!
+
+        # do your magic here
+
+    print $out $content;
+
+Modules such as L<File::Slurp> and L<Tie::File> can help with that
+too. If you can, however, avoid reading the entire file at once. Perl
+won't give that memory back to the operating system until the process
+finishes.
+
+You can also use Perl one-liners to modify a file in-place. The
+following changes all 'Fred' to 'Barney' in F<inFile.txt>, overwriting
+the file with the new contents. With the C<-p> switch, Perl wraps a
+C<while> loop around the code you specify with C<-e>, and C<-i> turns
+on in-place editing. The current line is in C<$_>. With C<-p>, Perl
+automatically prints the value of C<$_> at the end of the loop. See
+L<perlrun> for more details.
+
+    perl -pi -e 's/Fred/Barney/' inFile.txt
+
+To make a backup of C<inFile.txt>, give C<-i> a file extension to add:
+
+    perl -pi.bak -e 's/Fred/Barney/' inFile.txt
+
+To change only the fifth line, you can add a test checking C<$.>, the
+input line number, then only perform the operation when the test
+passes:
+
+    perl -pi -e 's/Fred/Barney/ if $. == 5' inFile.txt
+
+To add lines before a certain line, you can add a line (or lines!)
+before Perl prints C<$_>:
+
+    perl -pi -e 'print "Put before third line\n" if $. == 3' inFile.txt
+
+You can even add a line to the beginning of a file, since the current
+line prints at the end of the loop:
+
+    perl -pi -e 'print "Put before first line\n" if $. == 1' inFile.txt
+
+To insert a line after one already in the file, use the C<-n> switch.
+It's just like C<-p> except that it doesn't print C<$_> at the end of
+the loop, so you have to do that yourself. In this case, print C<$_>
+first, then print the line that you want to add.
+
+    perl -ni -e 'print; print "Put after fifth line\n" if $. == 5' inFile.txt
+
+To delete lines, only print the ones that you want.
+
+    perl -ni -e 'print if /d/' inFile.txt
+
+=head2 How do I count the number of lines in a file?
+X<file, counting lines> X<lines> X<line>
+
+(contributed by brian d foy)
+
+Conceptually, the easiest way to count the lines in a file is to
+simply read them and count them:
+
+    my $count = 0;
+    while( <$fh> ) { $count++; }
+
+You don't really have to count them yourself, though, since Perl
+already does that with the C<$.> variable, which is the current line
+number from the last filehandle read:
+
+    1 while( <$fh> );
+    my $count = $.;
+
+If you want to use C<$.>, you can reduce it to a simple one-liner,
+like one of these:
+
+    % perl -lne '} print $.; {'    file
+
+    % perl -lne 'END { print $. }' file
+
+Those can be rather inefficient though. If they aren't fast enough for
+you, you might just read chunks of data and count the number of
+newlines:
+
+    my $lines = 0;
+    open my($fh), '<:raw', $filename or die "Can't open $filename: $!";
+    while( sysread $fh, $buffer, 4096 ) {
+        $lines += ( $buffer =~ tr/\n// );
+    }
+    close FILE;
+
+However, that doesn't work if the line ending isn't a newline. You
+might change that C<tr///> to a C<s///> so you can count the number of
+times the input record separator, C<$/>, shows up:
+
+    my $lines = 0;
+    open my($fh), '<:raw', $filename or die "Can't open $filename: $!";
+    while( sysread $fh, $buffer, 4096 ) {
+        $lines += ( $buffer =~ s|$/||g; );
+    }
+    close FILE;
+
+If you don't mind shelling out, the C<wc> command is usually the
+fastest, even with the extra interprocess overhead. Ensure that you
+have an untainted filename though:
+
+    #!perl -T
+
+    $ENV{PATH} = undef;
+
+    my $lines;
+    if( $filename =~ /^([0-9a-z_.]+)\z/ ) {
+        $lines = `/usr/bin/wc -l $1`
+        chomp $lines;
+    }
+
+=head2 How do I delete the last N lines from a file?
+X<lines> X<file>
+
+(contributed by brian d foy)
+
+The easiest conceptual solution is to count the lines in the
+file then start at the beginning and print the number of lines
+(minus the last N) to a new file.
+
+Most often, the real question is how you can delete the last N lines
+without making more than one pass over the file, or how to do it
+without a lot of copying. The easy concept is the hard reality when
+you might have millions of lines in your file.
+
+One trick is to use L<File::ReadBackwards>, which starts at the end of
+the file. That module provides an object that wraps the real filehandle
+to make it easy for you to move around the file. Once you get to the
+spot you need, you can get the actual filehandle and work with it as
+normal. In this case, you get the file position at the end of the last
+line you want to keep and truncate the file to that point:
+
+    use File::ReadBackwards;
+
+    my $filename = 'test.txt';
+    my $Lines_to_truncate = 2;
+
+    my $bw = File::ReadBackwards->new( $filename )
+        or die "Could not read backwards in [$filename]: $!";
+
+    my $lines_from_end = 0;
+    until( $bw->eof or $lines_from_end == $Lines_to_truncate ) {
+        print "Got: ", $bw->readline;
+        $lines_from_end++;
+    }
+
+    truncate( $filename, $bw->tell );
+
+The L<File::ReadBackwards> module also has the advantage of setting
+the input record separator to a regular expression.
+
+You can also use the L<Tie::File> module which lets you access
+the lines through a tied array. You can use normal array operations
+to modify your file, including setting the last index and using
+C<splice>.
+
+=head2 How can I use Perl's C<-i> option from within a program?
+X<-i> X<in-place>
+
+C<-i> sets the value of Perl's C<$^I> variable, which in turn affects
+the behavior of C<< <> >>; see L<perlrun> for more details. By
+modifying the appropriate variables directly, you can get the same
+behavior within a larger program. For example:
+
+    # ...
+    {
+        local($^I, @ARGV) = ('.orig', glob("*.c"));
+        while (<>) {
+            if ($. == 1) {
+                print "This line should appear at the top of each file\n";
+            }
+            s/\b(p)earl\b/${1}erl/i;        # Correct typos, preserving case
+            print;
+            close ARGV if eof;              # Reset $.
+        }
+    }
+    # $^I and @ARGV return to their old values here
+
+This block modifies all the C<.c> files in the current directory,
+leaving a backup of the original data from each file in a new
+C<.c.orig> file.
+
+=head2 How can I copy a file?
+X<copy> X<file, copy> X<File::Copy>
+
+(contributed by brian d foy)
+
+Use the L<File::Copy> module. It comes with Perl and can do a
+true copy across file systems, and it does its magic in
+a portable fashion.
+
+    use File::Copy;
+
+    copy( $original, $new_copy ) or die "Copy failed: $!";
+
+If you can't use L<File::Copy>, you'll have to do the work yourself:
+open the original file, open the destination file, then print
+to the destination file as you read the original. You also have to
+remember to copy the permissions, owner, and group to the new file.
+
+=head2 How do I make a temporary file name?
+X<file, temporary>
+
+If you don't need to know the name of the file, you can use C<open()>
+with C<undef> in place of the file name. In Perl 5.8 or later, the
+C<open()> function creates an anonymous temporary file:
+
+    open my $tmp, '+>', undef or die $!;
+
+Otherwise, you can use the File::Temp module.
+
+    use File::Temp qw/ tempfile tempdir /;
+
+    my $dir = tempdir( CLEANUP => 1 );
+    ($fh, $filename) = tempfile( DIR => $dir );
+
+    # or if you don't need to know the filename
+
+    my $fh = tempfile( DIR => $dir );
+
+The File::Temp has been a standard module since Perl 5.6.1. If you
+don't have a modern enough Perl installed, use the C<new_tmpfile>
+class method from the IO::File module to get a filehandle opened for
+reading and writing. Use it if you don't need to know the file's name:
+
+    use IO::File;
+    my $fh = IO::File->new_tmpfile()
+        or die "Unable to make new temporary file: $!";
+
+If you're committed to creating a temporary file by hand, use the
+process ID and/or the current time-value. If you need to have many
+temporary files in one process, use a counter:
+
+    BEGIN {
+        use Fcntl;
+        my $temp_dir = -d '/tmp' ? '/tmp' : $ENV{TMPDIR} || $ENV{TEMP};
+        my $base_name = sprintf "%s/%d-%d-0000", $temp_dir, $$, time;
+
+        sub temp_file {
+            my $fh;
+            my $count = 0;
+            until( defined(fileno($fh)) || $count++ > 100 ) {
+                $base_name =~ s/-(\d+)$/"-" . (1 + $1)/e;
+                # O_EXCL is required for security reasons.
+                sysopen $fh, $base_name, O_WRONLY|O_EXCL|O_CREAT;
+            }
+
+            if( defined fileno($fh) ) {
+                return ($fh, $base_name);
+            }
+            else {
+                return ();
+            }
+        }
+    }
+
+=head2 How can I manipulate fixed-record-length files?
+X<fixed-length> X<file, fixed-length records>
+
+The most efficient way is using L<pack()|perlfunc/"pack"> and
+L<unpack()|perlfunc/"unpack">. This is faster than using
+L<substr()|perlfunc/"substr"> when taking many, many strings. It is
+slower for just a few.
+
+Here is a sample chunk of code to break up and put back together again
+some fixed-format input lines, in this case from the output of a normal,
+Berkeley-style ps:
+
+    # sample input line:
+    #   15158 p5  T      0:00 perl /home/tchrist/scripts/now-what
+    my $PS_T = 'A6 A4 A7 A5 A*';
+    open my $ps, '-|', 'ps';
+    print scalar <$ps>;
+    my @fields = qw( pid tt stat time command );
+    while (<$ps>) {
+        my %process;
+        @process{@fields} = unpack($PS_T, $_);
+        for my $field ( @fields ) {
+            print "$field: <$process{$field}>\n";
+        }
+        print 'line=', pack($PS_T, @process{@fields} ), "\n";
+    }
+
+We've used a hash slice in order to easily handle the fields of each row.
+Storing the keys in an array makes it easy to operate on them as a
+group or loop over them with C<for>. It also avoids polluting the program
+with global variables and using symbolic references.
+
+=head2 How can I make a filehandle local to a subroutine? How do I pass filehandles between subroutines? How do I make an array of filehandles?
+X<filehandle, local> X<filehandle, passing> X<filehandle, reference>
+
+As of perl5.6, open() autovivifies file and directory handles
+as references if you pass it an uninitialized scalar variable.
+You can then pass these references just like any other scalar,
+and use them in the place of named handles.
+
+    open my    $fh, $file_name;
+
+    open local $fh, $file_name;
+
+    print $fh "Hello World!\n";
+
+    process_file( $fh );
+
+If you like, you can store these filehandles in an array or a hash.
+If you access them directly, they aren't simple scalars and you
+need to give C<print> a little help by placing the filehandle
+reference in braces. Perl can only figure it out on its own when
+the filehandle reference is a simple scalar.
+
+    my @fhs = ( $fh1, $fh2, $fh3 );
+
+    for( $i = 0; $i <= $#fhs; $i++ ) {
+        print {$fhs[$i]} "just another Perl answer, \n";
+    }
+
+Before perl5.6, you had to deal with various typeglob idioms
+which you may see in older code.
+
+    open FILE, "> $filename";
+    process_typeglob(   *FILE );
+    process_reference( \*FILE );
+
+    sub process_typeglob  { local *FH = shift; print FH  "Typeglob!" }
+    sub process_reference { local $fh = shift; print $fh "Reference!" }
+
+If you want to create many anonymous handles, you should
+check out the Symbol or IO::Handle modules.
+
+=head2 How can I use a filehandle indirectly?
+X<filehandle, indirect>
+
+An indirect filehandle is the use of something other than a symbol
+in a place that a filehandle is expected. Here are ways
+to get indirect filehandles:
+
+    $fh =   SOME_FH;       # bareword is strict-subs hostile
+    $fh =  "SOME_FH";      # strict-refs hostile; same package only
+    $fh =  *SOME_FH;       # typeglob
+    $fh = \*SOME_FH;       # ref to typeglob (bless-able)
+    $fh =  *SOME_FH{IO};   # blessed IO::Handle from *SOME_FH typeglob
+
+Or, you can use the C<new> method from one of the IO::* modules to
+create an anonymous filehandle and store that in a scalar variable.
+
+    use IO::Handle;                     # 5.004 or higher
+    my $fh = IO::Handle->new();
+
+Then use any of those as you would a normal filehandle. Anywhere that
+Perl is expecting a filehandle, an indirect filehandle may be used
+instead. An indirect filehandle is just a scalar variable that contains
+a filehandle. Functions like C<print>, C<open>, C<seek>, or
+the C<< <FH> >> diamond operator will accept either a named filehandle
+or a scalar variable containing one:
+
+    ($ifh, $ofh, $efh) = (*STDIN, *STDOUT, *STDERR);
+    print $ofh "Type it: ";
+    my $got = <$ifh>
+    print $efh "What was that: $got";
+
+If you're passing a filehandle to a function, you can write
+the function in two ways:
+
+    sub accept_fh {
+        my $fh = shift;
+        print $fh "Sending to indirect filehandle\n";
+    }
+
+Or it can localize a typeglob and use the filehandle directly:
+
+    sub accept_fh {
+        local *FH = shift;
+        print  FH "Sending to localized filehandle\n";
+    }
+
+Both styles work with either objects or typeglobs of real filehandles.
+(They might also work with strings under some circumstances, but this
+is risky.)
+
+    accept_fh(*STDOUT);
+    accept_fh($handle);
+
+In the examples above, we assigned the filehandle to a scalar variable
+before using it. That is because only simple scalar variables, not
+expressions or subscripts of hashes or arrays, can be used with
+built-ins like C<print>, C<printf>, or the diamond operator. Using
+something other than a simple scalar variable as a filehandle is
+illegal and won't even compile:
+
+    my @fd = (*STDIN, *STDOUT, *STDERR);
+    print $fd[1] "Type it: ";                           # WRONG
+    my $got = <$fd[0]>                                  # WRONG
+    print $fd[2] "What was that: $got";                 # WRONG
+
+With C<print> and C<printf>, you get around this by using a block and
+an expression where you would place the filehandle:
+
+    print  { $fd[1] } "funny stuff\n";
+    printf { $fd[1] } "Pity the poor %x.\n", 3_735_928_559;
+    # Pity the poor deadbeef.
+
+That block is a proper block like any other, so you can put more
+complicated code there. This sends the message out to one of two places:
+
+    my $ok = -x "/bin/cat";
+    print { $ok ? $fd[1] : $fd[2] } "cat stat $ok\n";
+    print { $fd[ 1+ ($ok || 0) ]  } "cat stat $ok\n";
+
+This approach of treating C<print> and C<printf> like object methods
+calls doesn't work for the diamond operator. That's because it's a
+real operator, not just a function with a comma-less argument. Assuming
+you've been storing typeglobs in your structure as we did above, you
+can use the built-in function named C<readline> to read a record just
+as C<< <> >> does. Given the initialization shown above for @fd, this
+would work, but only because readline() requires a typeglob. It doesn't
+work with objects or strings, which might be a bug we haven't fixed yet.
+
+    $got = readline($fd[0]);
+
+Let it be noted that the flakiness of indirect filehandles is not
+related to whether they're strings, typeglobs, objects, or anything else.
+It's the syntax of the fundamental operators. Playing the object
+game doesn't help you at all here.
+
+=head2 How can I set up a footer format to be used with write()?
+X<footer>
+
+There's no builtin way to do this, but L<perlform> has a couple of
+techniques to make it possible for the intrepid hacker.
+
+=head2 How can I write() into a string?
+X<write, into a string>
+
+(contributed by brian d foy)
+
+If you want to C<write> into a string, you just have to <open> a
+filehandle to a string, which Perl has been able to do since Perl 5.6:
+
+    open FH, '>', \my $string;
+    write( FH );
+
+Since you want to be a good programmer, you probably want to use a lexical
+filehandle, even though formats are designed to work with bareword filehandles
+since the default format names take the filehandle name. However, you can
+control this with some Perl special per-filehandle variables: C<$^>, which
+names the top-of-page format, and C<$~> which shows the line format. You have
+to change the default filehandle to set these variables:
+
+    open my($fh), '>', \my $string;
+
+    { # set per-filehandle variables
+        my $old_fh = select( $fh );
+        $~ = 'ANIMAL';
+        $^ = 'ANIMAL_TOP';
+        select( $old_fh );
+    }
+
+    format ANIMAL_TOP =
+     ID  Type    Name
+    .
+
+    format ANIMAL =
+    @##   @<<<    @<<<<<<<<<<<<<<
+    $id,  $type,  $name
+    .
+
+Although write can work with lexical or package variables, whatever variables
+you use have to scope in the format. That most likely means you'll want to
+localize some package variables:
+
+    {
+        local( $id, $type, $name ) = qw( 12 cat Buster );
+        write( $fh );
+    }
+
+    print $string;
+
+There are also some tricks that you can play with C<formline> and the
+accumulator variable C<$^A>, but you lose a lot of the value of formats
+since C<formline> won't handle paging and so on. You end up reimplementing
+formats when you use them.
+
+=head2 How can I open a filehandle to a string?
+X<string> X<open> X<IO::String> X<filehandle>
+
+(contributed by Peter J. Holzer, hjp-usenet2 at hjp.at)
+
+Since Perl 5.8.0 a file handle referring to a string can be created by
+calling open with a reference to that string instead of the filename.
+This file handle can then be used to read from or write to the string:
+
+    open(my $fh, '>', \$string) or die "Could not open string for writing";
+    print $fh "foo\n";
+    print $fh "bar\n";    # $string now contains "foo\nbar\n"
+
+    open(my $fh, '<', \$string) or die "Could not open string for reading";
+    my $x = <$fh>;    # $x now contains "foo\n"
+
+With older versions of Perl, the L<IO::String> module provides similar
+functionality.
+
+=head2 How can I output my numbers with commas added?
+X<number, commify>
+
+(contributed by brian d foy and Benjamin Goldberg)
+
+You can use L<Number::Format> to separate places in a number.
+It handles locale information for those of you who want to insert
+full stops instead (or anything else that they want to use,
+really).
+
+This subroutine will add commas to your number:
+
+    sub commify {
+        local $_  = shift;
+        1 while s/^([-+]?\d+)(\d{3})/$1,$2/;
+        return $_;
+    }
+
+This regex from Benjamin Goldberg will add commas to numbers:
+
+    s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1,/g;
+
+It is easier to see with comments:
+
+    s/(
+        ^[-+]?             # beginning of number.
+        \d+?               # first digits before first comma
+        (?=                # followed by, (but not included in the match) :
+            (?>(?:\d{3})+) # some positive multiple of three digits.
+            (?!\d)         # an *exact* multiple, not x * 3 + 1 or whatever.
+        )
+        |                  # or:
+        \G\d{3}            # after the last group, get three digits
+        (?=\d)             # but they have to have more digits after them.
+    )/$1,/xg;
+
+=head2 How can I translate tildes (~) in a filename?
+X<tilde> X<tilde expansion>
+
+Use the E<lt>E<gt> (C<glob()>) operator, documented in L<perlfunc>.
+Versions of Perl older than 5.6 require that you have a shell
+installed that groks tildes. Later versions of Perl have this feature
+built in. The L<File::KGlob> module (available from CPAN) gives more
+portable glob functionality.
+
+Within Perl, you may use this directly:
+
+    $filename =~ s{
+      ^ ~             # find a leading tilde
+      (               # save this in $1
+          [^/]        # a non-slash character
+                *     # repeated 0 or more times (0 means me)
+      )
+    }{
+      $1
+          ? (getpwnam($1))[7]
+          : ( $ENV{HOME} || $ENV{LOGDIR} )
+    }ex;
+
+=head2 How come when I open a file read-write it wipes it out?
+X<clobber> X<read-write> X<clobbering> X<truncate> X<truncating>
+
+Because you're using something like this, which truncates the file
+I<then> gives you read-write access:
+
+    open my $fh, '+>', '/path/name'; # WRONG (almost always)
+
+Whoops. You should instead use this, which will fail if the file
+doesn't exist:
+
+    open my $fh, '+<', '/path/name'; # open for update
+
+Using ">" always clobbers or creates. Using "<" never does
+either. The "+" doesn't change this.
+
+Here are examples of many kinds of file opens. Those using C<sysopen>
+all assume that you've pulled in the constants from L<Fcntl>:
+
+    use Fcntl;
+
+To open file for reading:
+
+    open my $fh, '<', $path                               or die $!;
+    sysopen my $fh, $path, O_RDONLY                       or die $!;
+
+To open file for writing, create new file if needed or else truncate old file:
+
+    open my $fh, '>', $path                               or die $!;
+    sysopen my $fh, $path, O_WRONLY|O_TRUNC|O_CREAT       or die $!;
+    sysopen my $fh, $path, O_WRONLY|O_TRUNC|O_CREAT, 0666 or die $!;
+
+To open file for writing, create new file, file must not exist:
+
+    sysopen my $fh, $path, O_WRONLY|O_EXCL|O_CREAT        or die $!;
+    sysopen my $fh, $path, O_WRONLY|O_EXCL|O_CREAT, 0666  or die $!;
+
+To open file for appending, create if necessary:
+
+    open my $fh, '>>' $path                               or die $!;
+    sysopen my $fh, $path, O_WRONLY|O_APPEND|O_CREAT      or die $!;
+    sysopen my $fh, $path, O_WRONLY|O_APPEND|O_CREAT, 0666 or die $!;
+
+To open file for appending, file must exist:
+
+    sysopen my $fh, $path, O_WRONLY|O_APPEND              or die $!;
+
+To open file for update, file must exist:
+
+    open my $fh, '+<', $path                              or die $!;
+    sysopen my $fh, $path, O_RDWR                         or die $!;
+
+To open file for update, create file if necessary:
+
+    sysopen my $fh, $path, O_RDWR|O_CREAT                 or die $!;
+    sysopen my $fh, $path, O_RDWR|O_CREAT, 0666           or die $!;
+
+To open file for update, file must not exist:
+
+    sysopen my $fh, $path, O_RDWR|O_EXCL|O_CREAT          or die $!;
+    sysopen my $fh, $path, O_RDWR|O_EXCL|O_CREAT, 0666    or die $!;
+
+To open a file without blocking, creating if necessary:
+
+    sysopen my $fh, '/foo/somefile', O_WRONLY|O_NDELAY|O_CREAT
+        or die "can't open /foo/somefile: $!":
+
+Be warned that neither creation nor deletion of files is guaranteed to
+be an atomic operation over NFS. That is, two processes might both
+successfully create or unlink the same file! Therefore O_EXCL
+isn't as exclusive as you might wish.
+
+See also L<perlopentut>.
+
+=head2 Why do I sometimes get an "Argument list too long" when I use E<lt>*E<gt>?
+X<argument list too long>
+
+The C<< <> >> operator performs a globbing operation (see above).
+In Perl versions earlier than v5.6.0, the internal glob() operator forks
+csh(1) to do the actual glob expansion, but
+csh can't handle more than 127 items and so gives the error message
+C<Argument list too long>. People who installed tcsh as csh won't
+have this problem, but their users may be surprised by it.
+
+To get around this, either upgrade to Perl v5.6.0 or later, do the glob
+yourself with readdir() and patterns, or use a module like L<File::Glob>,
+one that doesn't use the shell to do globbing.
+
+=head2 How can I open a file with a leading ">" or trailing blanks?
+X<filename, special characters>
+
+(contributed by Brian McCauley)
+
+The special two-argument form of Perl's open() function ignores
+trailing blanks in filenames and infers the mode from certain leading
+characters (or a trailing "|"). In older versions of Perl this was the
+only version of open() and so it is prevalent in old code and books.
+
+Unless you have a particular reason to use the two-argument form you
+should use the three-argument form of open() which does not treat any
+characters in the filename as special.
+
+    open my $fh, "<", "  file  ";  # filename is "   file   "
+    open my $fh, ">", ">file";     # filename is ">file"
+
+=head2 How can I reliably rename a file?
+X<rename> X<mv> X<move> X<file, rename>
+
+If your operating system supports a proper mv(1) utility or its
+functional equivalent, this works:
+
+    rename($old, $new) or system("mv", $old, $new);
+
+It may be more portable to use the L<File::Copy> module instead.
+You just copy to the new file to the new name (checking return
+values), then delete the old one. This isn't really the same
+semantically as a C<rename()>, which preserves meta-information like
+permissions, timestamps, inode info, etc.
+
+=head2 How can I lock a file?
+X<lock> X<file, lock> X<flock>
+
+Perl's builtin flock() function (see L<perlfunc> for details) will call
+flock(2) if that exists, fcntl(2) if it doesn't (on perl version 5.004 and
+later), and lockf(3) if neither of the two previous system calls exists.
+On some systems, it may even use a different form of native locking.
+Here are some gotchas with Perl's flock():
+
+=over 4
+
+=item 1
+
+Produces a fatal error if none of the three system calls (or their
+close equivalent) exists.
+
+=item 2
+
+lockf(3) does not provide shared locking, and requires that the
+filehandle be open for writing (or appending, or read/writing).
+
+=item 3
+
+Some versions of flock() can't lock files over a network (e.g. on NFS file
+systems), so you'd need to force the use of fcntl(2) when you build Perl.
+But even this is dubious at best. See the flock entry of L<perlfunc>
+and the F<INSTALL> file in the source distribution for information on
+building Perl to do this.
+
+Two potentially non-obvious but traditional flock semantics are that
+it waits indefinitely until the lock is granted, and that its locks are
+I<merely advisory>. Such discretionary locks are more flexible, but
+offer fewer guarantees. This means that files locked with flock() may
+be modified by programs that do not also use flock(). Cars that stop
+for red lights get on well with each other, but not with cars that don't
+stop for red lights. See the perlport manpage, your port's specific
+documentation, or your system-specific local manpages for details. It's
+best to assume traditional behavior if you're writing portable programs.
+(If you're not, you should as always feel perfectly free to write
+for your own system's idiosyncrasies (sometimes called "features").
+Slavish adherence to portability concerns shouldn't get in the way of
+your getting your job done.)
+
+For more information on file locking, see also
+L<perlopentut/"File Locking"> if you have it (new for 5.6).
+
+=back
+
+=head2 Why can't I just open(FH, "E<gt>file.lock")?
+X<lock, lockfile race condition>
+
+A common bit of code B<NOT TO USE> is this:
+
+    sleep(3) while -e 'file.lock';    # PLEASE DO NOT USE
+    open my $lock, '>', 'file.lock'; # THIS BROKEN CODE
+
+This is a classic race condition: you take two steps to do something
+which must be done in one. That's why computer hardware provides an
+atomic test-and-set instruction. In theory, this "ought" to work:
+
+    sysopen my $fh, "file.lock", O_WRONLY|O_EXCL|O_CREAT
+        or die "can't open  file.lock: $!";
+
+except that lamentably, file creation (and deletion) is not atomic
+over NFS, so this won't work (at least, not every time) over the net.
+Various schemes involving link() have been suggested, but
+these tend to involve busy-wait, which is also less than desirable.
+
+=head2 I still don't get locking. I just want to increment the number in the file. How can I do this?
+X<counter> X<file, counter>
+
+Didn't anyone ever tell you web-page hit counters were useless?
+They don't count number of hits, they're a waste of time, and they serve
+only to stroke the writer's vanity. It's better to pick a random number;
+they're more realistic.
+
+Anyway, this is what you can do if you can't help yourself.
+
+    use Fcntl qw(:DEFAULT :flock);
+    sysopen my $fh, "numfile", O_RDWR|O_CREAT or die "can't open numfile: $!";
+    flock $fh, LOCK_EX                        or die "can't flock numfile: $!";
+    my $num = <$fh> || 0;
+    seek $fh, 0, 0                            or die "can't rewind numfile: $!";
+    truncate $fh, 0                           or die "can't truncate numfile: $!";
+    (print $fh $num+1, "\n")                  or die "can't write numfile: $!";
+    close $fh                                 or die "can't close numfile: $!";
+
+Here's a much better web-page hit counter:
+
+    $hits = int( (time() - 850_000_000) / rand(1_000) );
+
+If the count doesn't impress your friends, then the code might. :-)
+
+=head2 All I want to do is append a small amount of text to the end of a file. Do I still have to use locking?
+X<append> X<file, append>
+
+If you are on a system that correctly implements C<flock> and you use
+the example appending code from "perldoc -f flock" everything will be
+OK even if the OS you are on doesn't implement append mode correctly
+(if such a system exists). So if you are happy to restrict yourself to
+OSs that implement C<flock> (and that's not really much of a
+restriction) then that is what you should do.
+
+If you know you are only going to use a system that does correctly
+implement appending (i.e. not Win32) then you can omit the C<seek>
+from the code in the previous answer.
+
+If you know you are only writing code to run on an OS and filesystem
+that does implement append mode correctly (a local filesystem on a
+modern Unix for example), and you keep the file in block-buffered mode
+and you write less than one buffer-full of output between each manual
+flushing of the buffer then each bufferload is almost guaranteed to be
+written to the end of the file in one chunk without getting
+intermingled with anyone else's output. You can also use the
+C<syswrite> function which is simply a wrapper around your system's
+C<write(2)> system call.
+
+There is still a small theoretical chance that a signal will interrupt
+the system-level C<write()> operation before completion. There is also
+a possibility that some STDIO implementations may call multiple system
+level C<write()>s even if the buffer was empty to start. There may be
+some systems where this probability is reduced to zero, and this is
+not a concern when using C<:perlio> instead of your system's STDIO.
+
+=head2 How do I randomly update a binary file?
+X<file, binary patch>
+
+If you're just trying to patch a binary, in many cases something as
+simple as this works:
+
+    perl -i -pe 's{window manager}{window mangler}g' /usr/bin/emacs
+
+However, if you have fixed sized records, then you might do something more
+like this:
+
+    my $RECSIZE = 220; # size of record, in bytes
+    my $recno   = 37;  # which record to update
+    open my $fh, '+<', 'somewhere' or die "can't update somewhere: $!";
+    seek $fh, $recno * $RECSIZE, 0;
+    read $fh, $record, $RECSIZE == $RECSIZE or die "can't read record $recno: $!";
+    # munge the record
+    seek $fh, -$RECSIZE, 1;
+    print $fh $record;
+    close $fh;
+
+Locking and error checking are left as an exercise for the reader.
+Don't forget them or you'll be quite sorry.
+
+=head2 How do I get a file's timestamp in perl?
+X<timestamp> X<file, timestamp>
+
+If you want to retrieve the time at which the file was last read,
+written, or had its meta-data (owner, etc) changed, you use the B<-A>,
+B<-M>, or B<-C> file test operations as documented in L<perlfunc>.
+These retrieve the age of the file (measured against the start-time of
+your program) in days as a floating point number. Some platforms may
+not have all of these times. See L<perlport> for details. To retrieve
+the "raw" time in seconds since the epoch, you would call the stat
+function, then use C<localtime()>, C<gmtime()>, or
+C<POSIX::strftime()> to convert this into human-readable form.
+
+Here's an example:
+
+    my $write_secs = (stat($file))[9];
+    printf "file %s updated at %s\n", $file,
+        scalar localtime($write_secs);
+
+If you prefer something more legible, use the File::stat module
+(part of the standard distribution in version 5.004 and later):
+
+    # error checking left as an exercise for reader.
+    use File::stat;
+    use Time::localtime;
+    my $date_string = ctime(stat($file)->mtime);
+    print "file $file updated at $date_string\n";
+
+The POSIX::strftime() approach has the benefit of being,
+in theory, independent of the current locale. See L<perllocale>
+for details.
+
+=head2 How do I set a file's timestamp in perl?
+X<timestamp> X<file, timestamp>
+
+You use the utime() function documented in L<perlfunc/utime>.
+By way of example, here's a little program that copies the
+read and write times from its first argument to all the rest
+of them.
+
+    if (@ARGV < 2) {
+        die "usage: cptimes timestamp_file other_files ...\n";
+    }
+    my $timestamp = shift;
+    my($atime, $mtime) = (stat($timestamp))[8,9];
+    utime $atime, $mtime, @ARGV;
+
+Error checking is, as usual, left as an exercise for the reader.
+
+The perldoc for utime also has an example that has the same
+effect as touch(1) on files that I<already exist>.
+
+Certain file systems have a limited ability to store the times
+on a file at the expected level of precision. For example, the
+FAT and HPFS filesystem are unable to create dates on files with
+a finer granularity than two seconds. This is a limitation of
+the filesystems, not of utime().
+
+=head2 How do I print to more than one file at once?
+X<print, to multiple files>
+
+To connect one filehandle to several output filehandles,
+you can use the L<IO::Tee> or L<Tie::FileHandle::Multiplex> modules.
+
+If you only have to do this once, you can print individually
+to each filehandle.
+
+    for my $fh ($fh1, $fh2, $fh3) { print $fh "whatever\n" }
+
+=head2 How can I read in an entire file all at once?
+X<slurp> X<file, slurping>
+
+The customary Perl approach for processing all the lines in a file is to
+do so one line at a time:
+
+    open my $input, '<', $file or die "can't open $file: $!";
+    while (<$input>) {
+        chomp;
+        # do something with $_
+    }
+    close $input or die "can't close $file: $!";
+
+This is tremendously more efficient than reading the entire file into
+memory as an array of lines and then processing it one element at a time,
+which is often--if not almost always--the wrong approach. Whenever
+you see someone do this:
+
+    my @lines = <INPUT>;
+
+You should think long and hard about why you need everything loaded at
+once. It's just not a scalable solution.
+
+If you "mmap" the file with the File::Map module from
+CPAN, you can virtually load the entire file into a
+string without actually storing it in memory:
+
+    use File::Map qw(map_file);
+
+    map_file my $string, $filename;
+
+Once mapped, you can treat C<$string> as you would any other string.
+Since you don't necessarily have to load the data, mmap-ing can be
+very fast and may not increase your memory footprint.
+
+You might also find it more
+fun to use the standard L<Tie::File> module, or the L<DB_File> module's
+C<$DB_RECNO> bindings, which allow you to tie an array to a file so that
+accessing an element of the array actually accesses the corresponding
+line in the file.
+
+If you want to load the entire file, you can use the L<File::Slurp>
+module to do it in one one simple and efficient step:
+
+    use File::Slurp;
+
+    my $all_of_it = read_file($filename); # entire file in scalar
+    my @all_lines = read_file($filename); # one line per element
+
+Or you can read the entire file contents into a scalar like this:
+
+    my $var;
+    {
+        local $/;
+        open my $fh, '<', $file or die "can't open $file: $!";
+        $var = <$fh>;
+    }
+
+That temporarily undefs your record separator, and will automatically
+close the file at block exit. If the file is already open, just use this:
+
+    my $var = do { local $/; <$fh> };
+
+You can also use a localized C<@ARGV> to eliminate the C<open>:
+
+    my $var = do { local( @ARGV, $/ ) = $file; <> };
+
+For ordinary files you can also use the C<read> function.
+
+    read( $fh, $var, -s $fh );
+
+That third argument tests the byte size of the data on the C<$fh> filehandle
+and reads that many bytes into the buffer C<$var>.
+
+=head2 How can I read in a file by paragraphs?
+X<file, reading by paragraphs>
+
+Use the C<$/> variable (see L<perlvar> for details). You can either
+set it to C<""> to eliminate empty paragraphs (C<"abc\n\n\n\ndef">,
+for instance, gets treated as two paragraphs and not three), or
+C<"\n\n"> to accept empty paragraphs.
+
+Note that a blank line must have no blanks in it. Thus
+S<C<"fred\n \nstuff\n\n">> is one paragraph, but C<"fred\n\nstuff\n\n"> is two.
+
+=head2 How can I read a single character from a file? From the keyboard?
+X<getc> X<file, reading one character at a time>
+
+You can use the builtin C<getc()> function for most filehandles, but
+it won't (easily) work on a terminal device. For STDIN, either use
+the Term::ReadKey module from CPAN or use the sample code in
+L<perlfunc/getc>.
+
+If your system supports the portable operating system programming
+interface (POSIX), you can use the following code, which you'll note
+turns off echo processing as well.
+
+    #!/usr/bin/perl -w
+    use strict;
+    $| = 1;
+    for (1..4) {
+        print "gimme: ";
+        my $got = getone();
+        print "--> $got\n";
+    }
+    exit;
+
+    BEGIN {
+        use POSIX qw(:termios_h);
+
+        my ($term, $oterm, $echo, $noecho, $fd_stdin);
+
+        my $fd_stdin = fileno(STDIN);
+
+        $term     = POSIX::Termios->new();
+        $term->getattr($fd_stdin);
+        $oterm     = $term->getlflag();
+
+        $echo     = ECHO | ECHOK | ICANON;
+        $noecho   = $oterm & ~$echo;
+
+        sub cbreak {
+            $term->setlflag($noecho);
+            $term->setcc(VTIME, 1);
+            $term->setattr($fd_stdin, TCSANOW);
+        }
+
+        sub cooked {
+            $term->setlflag($oterm);
+            $term->setcc(VTIME, 0);
+            $term->setattr($fd_stdin, TCSANOW);
+        }
+
+        sub getone {
+            my $key = '';
+            cbreak();
+            sysread(STDIN, $key, 1);
+            cooked();
+            return $key;
+        }
+    }
+
+    END { cooked() }
+
+The Term::ReadKey module from CPAN may be easier to use. Recent versions
+include also support for non-portable systems as well.
+
+    use Term::ReadKey;
+    open my $tty, '<', '/dev/tty';
+    print "Gimme a char: ";
+    ReadMode "raw";
+    my $key = ReadKey 0, $tty;
+    ReadMode "normal";
+    printf "\nYou said %s, char number %03d\n",
+        $key, ord $key;
+
+=head2 How can I tell whether there's a character waiting on a filehandle?
+
+The very first thing you should do is look into getting the Term::ReadKey
+extension from CPAN. As we mentioned earlier, it now even has limited
+support for non-portable (read: not open systems, closed, proprietary,
+not POSIX, not Unix, etc.) systems.
+
+You should also check out the Frequently Asked Questions list in
+comp.unix.* for things like this: the answer is essentially the same.
+It's very system-dependent. Here's one solution that works on BSD
+systems:
+
+    sub key_ready {
+        my($rin, $nfd);
+        vec($rin, fileno(STDIN), 1) = 1;
+        return $nfd = select($rin,undef,undef,0);
+    }
+
+If you want to find out how many characters are waiting, there's
+also the FIONREAD ioctl call to be looked at. The I<h2ph> tool that
+comes with Perl tries to convert C include files to Perl code, which
+can be C<require>d. FIONREAD ends up defined as a function in the
+I<sys/ioctl.ph> file:
+
+    require 'sys/ioctl.ph';
+
+    $size = pack("L", 0);
+    ioctl(FH, FIONREAD(), $size)    or die "Couldn't call ioctl: $!\n";
+    $size = unpack("L", $size);
+
+If I<h2ph> wasn't installed or doesn't work for you, you can
+I<grep> the include files by hand:
+
+    % grep FIONREAD /usr/include/*/*
+    /usr/include/asm/ioctls.h:#define FIONREAD      0x541B
+
+Or write a small C program using the editor of champions:
+
+    % cat > fionread.c
+    #include <sys/ioctl.h>
+    main() {
+        printf("%#08x\n", FIONREAD);
+    }
+    ^D
+    % cc -o fionread fionread.c
+    % ./fionread
+    0x4004667f
+
+And then hard-code it, leaving porting as an exercise to your successor.
+
+    $FIONREAD = 0x4004667f;         # XXX: opsys dependent
+
+    $size = pack("L", 0);
+    ioctl(FH, $FIONREAD, $size)     or die "Couldn't call ioctl: $!\n";
+    $size = unpack("L", $size);
+
+FIONREAD requires a filehandle connected to a stream, meaning that sockets,
+pipes, and tty devices work, but I<not> files.
+
+=head2 How do I do a C<tail -f> in perl?
+X<tail> X<IO::Handle> X<File::Tail> X<clearerr>
+
+First try
+
+    seek($gw_fh, 0, 1);
+
+The statement C<seek($gw_fh, 0, 1)> doesn't change the current position,
+but it does clear the end-of-file condition on the handle, so that the
+next C<< <$gw_fh> >> makes Perl try again to read something.
+
+If that doesn't work (it relies on features of your stdio implementation),
+then you need something more like this:
+
+    for (;;) {
+      for ($curpos = tell($gw_fh); <$gw_fh>; $curpos =tell($gw_fh)) {
+        # search for some stuff and put it into files
+      }
+      # sleep for a while
+      seek($gw_fh, $curpos, 0);  # seek to where we had been
+    }
+
+If this still doesn't work, look into the C<clearerr> method
+from L<IO::Handle>, which resets the error and end-of-file states
+on the handle.
+
+There's also a L<File::Tail> module from CPAN.
+
+=head2 How do I dup() a filehandle in Perl?
+X<dup>
+
+If you check L<perlfunc/open>, you'll see that several of the ways
+to call open() should do the trick. For example:
+
+    open my $log, '>>', '/foo/logfile';
+    open STDERR, '>&', $log;
+
+Or even with a literal numeric descriptor:
+
+    my $fd = $ENV{MHCONTEXTFD};
+    open $mhcontext, "<&=$fd";  # like fdopen(3S)
+
+Note that "<&STDIN" makes a copy, but "<&=STDIN" makes
+an alias. That means if you close an aliased handle, all
+aliases become inaccessible. This is not true with
+a copied one.
+
+Error checking, as always, has been left as an exercise for the reader.
+
+=head2 How do I close a file descriptor by number?
+X<file, closing file descriptors> X<POSIX> X<close>
+
+If, for some reason, you have a file descriptor instead of a
+filehandle (perhaps you used C<POSIX::open>), you can use the
+C<close()> function from the L<POSIX> module:
+
+    use POSIX ();
+
+    POSIX::close( $fd );
+
+This should rarely be necessary, as the Perl C<close()> function is to be
+used for things that Perl opened itself, even if it was a dup of a
+numeric descriptor as with C<MHCONTEXT> above. But if you really have
+to, you may be able to do this:
+
+    require 'sys/syscall.ph';
+    my $rc = syscall(SYS_close(), $fd + 0);  # must force numeric
+    die "can't sysclose $fd: $!" unless $rc == -1;
+
+Or, just use the fdopen(3S) feature of C<open()>:
+
+    {
+        open my $fh, "<&=$fd" or die "Cannot reopen fd=$fd: $!";
+        close $fh;
+    }
+
+=head2 Why can't I use "C:\temp\foo" in DOS paths? Why doesn't `C:\temp\foo.exe` work?
+X<filename, DOS issues>
+
+Whoops!  You just put a tab and a formfeed into that filename!
+Remember that within double quoted strings ("like\this"), the
+backslash is an escape character. The full list of these is in
+L<perlop/Quote and Quote-like Operators>. Unsurprisingly, you don't
+have a file called "c:(tab)emp(formfeed)oo" or
+"c:(tab)emp(formfeed)oo.exe" on your legacy DOS filesystem.
+
+Either single-quote your strings, or (preferably) use forward slashes.
+Since all DOS and Windows versions since something like MS-DOS 2.0 or so
+have treated C</> and C<\> the same in a path, you might as well use the
+one that doesn't clash with Perl--or the POSIX shell, ANSI C and C++,
+awk, Tcl, Java, or Python, just to mention a few. POSIX paths
+are more portable, too.
+
+=head2 Why doesn't glob("*.*") get all the files?
+X<glob>
+
+Because even on non-Unix ports, Perl's glob function follows standard
+Unix globbing semantics. You'll need C<glob("*")> to get all (non-hidden)
+files. This makes glob() portable even to legacy systems. Your
+port may include proprietary globbing functions as well. Check its
+documentation for details.
+
+=head2 Why does Perl let me delete read-only files? Why does C<-i> clobber protected files? Isn't this a bug in Perl?
+
+This is elaborately and painstakingly described in the
+F<file-dir-perms> article in the "Far More Than You Ever Wanted To
+Know" collection in L<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz> .
+
+The executive summary: learn how your filesystem works. The
+permissions on a file say what can happen to the data in that file.
+The permissions on a directory say what can happen to the list of
+files in that directory. If you delete a file, you're removing its
+name from the directory (so the operation depends on the permissions
+of the directory, not of the file). If you try to write to the file,
+the permissions of the file govern whether you're allowed to.
+
+=head2 How do I select a random line from a file?
+X<file, selecting a random line>
+
+Short of loading the file into a database or pre-indexing the lines in
+the file, there are a couple of things that you can do.
+
+Here's a reservoir-sampling algorithm from the Camel Book:
+
+    srand;
+    rand($.) < 1 && ($line = $_) while <>;
+
+This has a significant advantage in space over reading the whole file
+in. You can find a proof of this method in I<The Art of Computer
+Programming>, Volume 2, Section 3.4.2, by Donald E. Knuth.
+
+You can use the L<File::Random> module which provides a function
+for that algorithm:
+
+    use File::Random qw/random_line/;
+    my $line = random_line($filename);
+
+Another way is to use the L<Tie::File> module, which treats the entire
+file as an array. Simply access a random array element.
+
+=head2 Why do I get weird spaces when I print an array of lines?
+
+(contributed by brian d foy)
+
+If you are seeing spaces between the elements of your array when
+you print the array, you are probably interpolating the array in
+double quotes:
+
+    my @animals = qw(camel llama alpaca vicuna);
+    print "animals are: @animals\n";
+
+It's the double quotes, not the C<print>, doing this. Whenever you
+interpolate an array in a double quote context, Perl joins the
+elements with spaces (or whatever is in C<$">, which is a space by
+default):
+
+    animals are: camel llama alpaca vicuna
+
+This is different than printing the array without the interpolation:
+
+    my @animals = qw(camel llama alpaca vicuna);
+    print "animals are: ", @animals, "\n";
+
+Now the output doesn't have the spaces between the elements because
+the elements of C<@animals> simply become part of the list to
+C<print>:
+
+    animals are: camelllamaalpacavicuna
+
+You might notice this when each of the elements of C<@array> end with
+a newline. You expect to print one element per line, but notice that
+every line after the first is indented:
+
+    this is a line
+     this is another line
+     this is the third line
+
+That extra space comes from the interpolation of the array. If you
+don't want to put anything between your array elements, don't use the
+array in double quotes. You can send it to print without them:
+
+    print @lines;
+
+=head2 How do I traverse a directory tree?
+
+(contributed by brian d foy)
+
+The L<File::Find> module, which comes with Perl, does all of the hard
+work to traverse a directory structure. It comes with Perl. You simply
+call the C<find> subroutine with a callback subroutine and the
+directories you want to traverse:
+
+    use File::Find;
+
+    find( \&wanted, @directories );
+
+    sub wanted {
+        # full path in $File::Find::name
+        # just filename in $_
+        ... do whatever you want to do ...
+    }
+
+The L<File::Find::Closures>, which you can download from CPAN, provides
+many ready-to-use subroutines that you can use with L<File::Find>.
+
+The L<File::Finder>, which you can download from CPAN, can help you
+create the callback subroutine using something closer to the syntax of
+the C<find> command-line utility:
+
+    use File::Find;
+    use File::Finder;
+
+    my $deep_dirs = File::Finder->depth->type('d')->ls->exec('rmdir','{}');
+
+    find( $deep_dirs->as_options, @places );
+
+The L<File::Find::Rule> module, which you can download from CPAN, has
+a similar interface, but does the traversal for you too:
+
+    use File::Find::Rule;
+
+    my @files = File::Find::Rule->file()
+                             ->name( '*.pm' )
+                             ->in( @INC );
+
+=head2 How do I delete a directory tree?
+
+(contributed by brian d foy)
+
+If you have an empty directory, you can use Perl's built-in C<rmdir>.
+If the directory is not empty (so, no files or subdirectories), you
+either have to empty it yourself (a lot of work) or use a module to
+help you.
+
+The L<File::Path> module, which comes with Perl, has a C<remove_tree>
+which can take care of all of the hard work for you:
+
+    use File::Path qw(remove_tree);
+
+    remove_tree( @directories );
+
+The L<File::Path> module also has a legacy interface to the older
+C<rmtree> subroutine.
+
+=head2 How do I copy an entire directory?
+
+(contributed by Shlomi Fish)
+
+To do the equivalent of C<cp -R> (i.e. copy an entire directory tree
+recursively) in portable Perl, you'll either need to write something yourself
+or find a good CPAN module such as  L<File::Copy::Recursive>.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples here are in the public
+domain. You are permitted and encouraged to use this code and any
+derivatives thereof in your own programs for fun or for profit as you
+see fit. A simple comment in the code giving credit to the FAQ would
+be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq6.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq6.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq6.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1124 @@
+=head1 NAME
+
+perlfaq6 - Regular Expressions
+
+=head1 DESCRIPTION
+
+This section is surprisingly small because the rest of the FAQ is
+littered with answers involving regular expressions. For example,
+decoding a URL and checking whether something is a number can be handled
+with regular expressions, but those answers are found elsewhere in
+this document (in L<perlfaq9>: "How do I decode or create those %-encodings
+on the web" and L<perlfaq4>: "How do I determine whether a scalar is
+a number/whole/integer/float", to be precise).
+
+=head2 How can I hope to use regular expressions without creating illegible and unmaintainable code?
+X<regex, legibility> X<regexp, legibility>
+X<regular expression, legibility> X</x>
+
+Three techniques can make regular expressions maintainable and
+understandable.
+
+=over 4
+
+=item Comments Outside the Regex
+
+Describe what you're doing and how you're doing it, using normal Perl
+comments.
+
+    # turn the line into the first word, a colon, and the
+    # number of characters on the rest of the line
+    s/^(\w+)(.*)/ lc($1) . ":" . length($2) /meg;
+
+=item Comments Inside the Regex
+
+The C</x> modifier causes whitespace to be ignored in a regex pattern
+(except in a character class and a few other places), and also allows you to
+use normal comments there, too. As you can imagine, whitespace and comments
+help a lot.
+
+C</x> lets you turn this:
+
+    s{<(?:[^>'"]*|".*?"|'.*?')+>}{}gs;
+
+into this:
+
+    s{ <                    # opening angle bracket
+        (?:                 # Non-backreffing grouping paren
+            [^>'"] *        # 0 or more things that are neither > nor ' nor "
+                |           #    or else
+            ".*?"           # a section between double quotes (stingy match)
+                |           #    or else
+            '.*?'           # a section between single quotes (stingy match)
+        ) +                 #   all occurring one or more times
+        >                   # closing angle bracket
+    }{}gsx;                 # replace with nothing, i.e. delete
+
+It's still not quite so clear as prose, but it is very useful for
+describing the meaning of each part of the pattern.
+
+=item Different Delimiters
+
+While we normally think of patterns as being delimited with C</>
+characters, they can be delimited by almost any character. L<perlre>
+describes this. For example, the C<s///> above uses braces as
+delimiters. Selecting another delimiter can avoid quoting the
+delimiter within the pattern:
+
+    s/\/usr\/local/\/usr\/share/g;    # bad delimiter choice
+    s#/usr/local#/usr/share#g;        # better
+
+Using logically paired delimiters can be even more readable:
+
+    s{/usr/local/}{/usr/share}g;      # better still
+
+=back
+
+=head2 I'm having trouble matching over more than one line. What's wrong?
+X<regex, multiline> X<regexp, multiline> X<regular expression, multiline>
+
+Either you don't have more than one line in the string you're looking
+at (probably), or else you aren't using the correct modifier(s) on
+your pattern (possibly).
+
+There are many ways to get multiline data into a string. If you want
+it to happen automatically while reading input, you'll want to set $/
+(probably to '' for paragraphs or C<undef> for the whole file) to
+allow you to read more than one line at a time.
+
+Read L<perlre> to help you decide which of C</s> and C</m> (or both)
+you might want to use: C</s> allows dot to include newline, and C</m>
+allows caret and dollar to match next to a newline, not just at the
+end of the string. You do need to make sure that you've actually
+got a multiline string in there.
+
+For example, this program detects duplicate words, even when they span
+line breaks (but not paragraph ones). For this example, we don't need
+C</s> because we aren't using dot in a regular expression that we want
+to cross line boundaries. Neither do we need C</m> because we don't
+want caret or dollar to match at any point inside the record next
+to newlines. But it's imperative that $/ be set to something other
+than the default, or else we won't actually ever have a multiline
+record read in.
+
+    $/ = '';          # read in whole paragraph, not just one line
+    while ( <> ) {
+        while ( /\b([\w'-]+)(\s+\g1)+\b/gi ) {     # word starts alpha
+            print "Duplicate $1 at paragraph $.\n";
+        }
+    }
+
+Here's some code that finds sentences that begin with "From " (which would
+be mangled by many mailers):
+
+    $/ = '';          # read in whole paragraph, not just one line
+    while ( <> ) {
+        while ( /^From /gm ) { # /m makes ^ match next to \n
+        print "leading from in paragraph $.\n";
+        }
+    }
+
+Here's code that finds everything between START and END in a paragraph:
+
+    undef $/;          # read in whole file, not just one line or paragraph
+    while ( <> ) {
+        while ( /START(.*?)END/sgm ) { # /s makes . cross line boundaries
+            print "$1\n";
+        }
+    }
+
+=head2 How can I pull out lines between two patterns that are themselves on different lines?
+X<..>
+
+You can use Perl's somewhat exotic C<..> operator (documented in
+L<perlop>):
+
+    perl -ne 'print if /START/ .. /END/' file1 file2 ...
+
+If you wanted text and not lines, you would use
+
+    perl -0777 -ne 'print "$1\n" while /START(.*?)END/gs' file1 file2 ...
+
+But if you want nested occurrences of C<START> through C<END>, you'll
+run up against the problem described in the question in this section
+on matching balanced text.
+
+Here's another example of using C<..>:
+
+    while (<>) {
+        my $in_header =   1  .. /^$/;
+        my $in_body   = /^$/ .. eof;
+    # now choose between them
+    } continue {
+        $. = 0 if eof;    # fix $.
+    }
+
+=head2 How do I match XML, HTML, or other nasty, ugly things with a regex?
+X<regex, XML> X<regex, HTML> X<XML> X<HTML> X<pain> X<frustration>
+X<sucking out, will to live>
+
+Do not use regexes. Use a module and forget about the
+regular expressions. The L<XML::LibXML>, L<HTML::TokeParser> and
+L<HTML::TreeBuilder> modules are good starts, although each namespace
+has other parsing modules specialized for certain tasks and different
+ways of doing it. Start at CPAN Search ( L<http://metacpan.org/> )
+and wonder at all the work people have done for you already! :)
+
+=head2 I put a regular expression into $/ but it didn't work. What's wrong?
+X<$/, regexes in> X<$INPUT_RECORD_SEPARATOR, regexes in>
+X<$RS, regexes in>
+
+$/ has to be a string. You can use these examples if you really need to
+do this.
+
+If you have L<File::Stream>, this is easy.
+
+    use File::Stream;
+
+    my $stream = File::Stream->new(
+        $filehandle,
+        separator => qr/\s*,\s*/,
+        );
+
+    print "$_\n" while <$stream>;
+
+If you don't have File::Stream, you have to do a little more work.
+
+You can use the four-argument form of sysread to continually add to
+a buffer. After you add to the buffer, you check if you have a
+complete line (using your regular expression).
+
+    local $_ = "";
+    while( sysread FH, $_, 8192, length ) {
+        while( s/^((?s).*?)your_pattern// ) {
+            my $record = $1;
+            # do stuff here.
+        }
+    }
+
+You can do the same thing with foreach and a match using the
+c flag and the \G anchor, if you do not mind your entire file
+being in memory at the end.
+
+    local $_ = "";
+    while( sysread FH, $_, 8192, length ) {
+        foreach my $record ( m/\G((?s).*?)your_pattern/gc ) {
+            # do stuff here.
+        }
+        substr( $_, 0, pos ) = "" if pos;
+    }
+
+
+=head2 How do I substitute case-insensitively on the LHS while preserving case on the RHS?
+X<replace, case preserving> X<substitute, case preserving>
+X<substitution, case preserving> X<s, case preserving>
+
+Here's a lovely Perlish solution by Larry Rosler. It exploits
+properties of bitwise xor on ASCII strings.
+
+    $_= "this is a TEsT case";
+
+    $old = 'test';
+    $new = 'success';
+
+    s{(\Q$old\E)}
+    { uc $new | (uc $1 ^ $1) .
+        (uc(substr $1, -1) ^ substr $1, -1) x
+        (length($new) - length $1)
+    }egi;
+
+    print;
+
+And here it is as a subroutine, modeled after the above:
+
+    sub preserve_case {
+        my ($old, $new) = @_;
+        my $mask = uc $old ^ $old;
+
+        uc $new | $mask .
+            substr($mask, -1) x (length($new) - length($old))
+    }
+
+    $string = "this is a TEsT case";
+    $string =~ s/(test)/preserve_case($1, "success")/egi;
+    print "$string\n";
+
+This prints:
+
+    this is a SUcCESS case
+
+As an alternative, to keep the case of the replacement word if it is
+longer than the original, you can use this code, by Jeff Pinyan:
+
+    sub preserve_case {
+        my ($from, $to) = @_;
+        my ($lf, $lt) = map length, @_;
+
+        if ($lt < $lf) { $from = substr $from, 0, $lt }
+        else { $from .= substr $to, $lf }
+
+        return uc $to | ($from ^ uc $from);
+    }
+
+This changes the sentence to "this is a SUcCess case."
+
+Just to show that C programmers can write C in any programming language,
+if you prefer a more C-like solution, the following script makes the
+substitution have the same case, letter by letter, as the original.
+(It also happens to run about 240% slower than the Perlish solution runs.)
+If the substitution has more characters than the string being substituted,
+the case of the last character is used for the rest of the substitution.
+
+    # Original by Nathan Torkington, massaged by Jeffrey Friedl
+    #
+    sub preserve_case
+    {
+        my ($old, $new) = @_;
+        my $state = 0; # 0 = no change; 1 = lc; 2 = uc
+        my ($i, $oldlen, $newlen, $c) = (0, length($old), length($new));
+        my $len = $oldlen < $newlen ? $oldlen : $newlen;
+
+        for ($i = 0; $i < $len; $i++) {
+            if ($c = substr($old, $i, 1), $c =~ /[\W\d_]/) {
+                $state = 0;
+            } elsif (lc $c eq $c) {
+                substr($new, $i, 1) = lc(substr($new, $i, 1));
+                $state = 1;
+            } else {
+                substr($new, $i, 1) = uc(substr($new, $i, 1));
+                $state = 2;
+            }
+        }
+        # finish up with any remaining new (for when new is longer than old)
+        if ($newlen > $oldlen) {
+            if ($state == 1) {
+                substr($new, $oldlen) = lc(substr($new, $oldlen));
+            } elsif ($state == 2) {
+                substr($new, $oldlen) = uc(substr($new, $oldlen));
+            }
+        }
+        return $new;
+    }
+
+=head2 How can I make C<\w> match national character sets?
+X<\w>
+
+Put C<use locale;> in your script. The \w character class is taken
+from the current locale.
+
+See L<perllocale> for details.
+
+=head2 How can I match a locale-smart version of C</[a-zA-Z]/>?
+X<alpha>
+
+You can use the POSIX character class syntax C</[[:alpha:]]/>
+documented in L<perlre>.
+
+No matter which locale you are in, the alphabetic characters are
+the characters in \w without the digits and the underscore.
+As a regex, that looks like C</[^\W\d_]/>. Its complement,
+the non-alphabetics, is then everything in \W along with
+the digits and the underscore, or C</[\W\d_]/>.
+
+=head2 How can I quote a variable to use in a regex?
+X<regex, escaping> X<regexp, escaping> X<regular expression, escaping>
+
+The Perl parser will expand $variable and @variable references in
+regular expressions unless the delimiter is a single quote. Remember,
+too, that the right-hand side of a C<s///> substitution is considered
+a double-quoted string (see L<perlop> for more details). Remember
+also that any regex special characters will be acted on unless you
+precede the substitution with \Q. Here's an example:
+
+    $string = "Placido P. Octopus";
+    $regex  = "P.";
+
+    $string =~ s/$regex/Polyp/;
+    # $string is now "Polypacido P. Octopus"
+
+Because C<.> is special in regular expressions, and can match any
+single character, the regex C<P.> here has matched the <Pl> in the
+original string.
+
+To escape the special meaning of C<.>, we use C<\Q>:
+
+    $string = "Placido P. Octopus";
+    $regex  = "P.";
+
+    $string =~ s/\Q$regex/Polyp/;
+    # $string is now "Placido Polyp Octopus"
+
+The use of C<\Q> causes the <.> in the regex to be treated as a
+regular character, so that C<P.> matches a C<P> followed by a dot.
+
+=head2 What is C</o> really for?
+X</o, regular expressions> X<compile, regular expressions>
+
+(contributed by brian d foy)
+
+The C</o> option for regular expressions (documented in L<perlop> and
+L<perlreref>) tells Perl to compile the regular expression only once.
+This is only useful when the pattern contains a variable. Perls 5.6
+and later handle this automatically if the pattern does not change.
+
+Since the match operator C<m//>, the substitution operator C<s///>,
+and the regular expression quoting operator C<qr//> are double-quotish
+constructs, you can interpolate variables into the pattern. See the
+answer to "How can I quote a variable to use in a regex?" for more
+details.
+
+This example takes a regular expression from the argument list and
+prints the lines of input that match it:
+
+    my $pattern = shift @ARGV;
+
+    while( <> ) {
+        print if m/$pattern/;
+    }
+
+Versions of Perl prior to 5.6 would recompile the regular expression
+for each iteration, even if C<$pattern> had not changed. The C</o>
+would prevent this by telling Perl to compile the pattern the first
+time, then reuse that for subsequent iterations:
+
+    my $pattern = shift @ARGV;
+
+    while( <> ) {
+        print if m/$pattern/o; # useful for Perl < 5.6
+    }
+
+In versions 5.6 and later, Perl won't recompile the regular expression
+if the variable hasn't changed, so you probably don't need the C</o>
+option. It doesn't hurt, but it doesn't help either. If you want any
+version of Perl to compile the regular expression only once even if
+the variable changes (thus, only using its initial value), you still
+need the C</o>.
+
+You can watch Perl's regular expression engine at work to verify for
+yourself if Perl is recompiling a regular expression. The C<use re
+'debug'> pragma (comes with Perl 5.005 and later) shows the details.
+With Perls before 5.6, you should see C<re> reporting that its
+compiling the regular expression on each iteration. With Perl 5.6 or
+later, you should only see C<re> report that for the first iteration.
+
+    use re 'debug';
+
+    my $regex = 'Perl';
+    foreach ( qw(Perl Java Ruby Python) ) {
+        print STDERR "-" x 73, "\n";
+        print STDERR "Trying $_...\n";
+        print STDERR "\t$_ is good!\n" if m/$regex/;
+    }
+
+=head2 How do I use a regular expression to strip C-style comments from a file?
+
+While this actually can be done, it's much harder than you'd think.
+For example, this one-liner
+
+    perl -0777 -pe 's{/\*.*?\*/}{}gs' foo.c
+
+will work in many but not all cases. You see, it's too simple-minded for
+certain kinds of C programs, in particular, those with what appear to be
+comments in quoted strings. For that, you'd need something like this,
+created by Jeffrey Friedl and later modified by Fred Curtis.
+
+    $/ = undef;
+    $_ = <>;
+    s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $2 ? $2 : ""#gse;
+    print;
+
+This could, of course, be more legibly written with the C</x> modifier, adding
+whitespace and comments. Here it is expanded, courtesy of Fred Curtis.
+
+    s{
+       /\*         ##  Start of /* ... */ comment
+       [^*]*\*+    ##  Non-* followed by 1-or-more *'s
+       (
+         [^/*][^*]*\*+
+       )*          ##  0-or-more things which don't start with /
+                   ##    but do end with '*'
+       /           ##  End of /* ... */ comment
+
+     |         ##     OR  various things which aren't comments:
+
+       (
+         "           ##  Start of " ... " string
+         (
+           \\.           ##  Escaped char
+         |               ##    OR
+           [^"\\]        ##  Non "\
+         )*
+         "           ##  End of " ... " string
+
+       |         ##     OR
+
+         '           ##  Start of ' ... ' string
+         (
+           \\.           ##  Escaped char
+         |               ##    OR
+           [^'\\]        ##  Non '\
+         )*
+         '           ##  End of ' ... ' string
+
+       |         ##     OR
+
+         .           ##  Anything other char
+         [^/"'\\]*   ##  Chars which doesn't start a comment, string or escape
+       )
+     }{defined $2 ? $2 : ""}gxse;
+
+A slight modification also removes C++ comments, possibly spanning multiple lines
+using a continuation character:
+
+ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//([^\\]|[^\n][\n]?)*?\n|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $3 ? $3 : ""#gse;
+
+=head2 Can I use Perl regular expressions to match balanced text?
+X<regex, matching balanced test> X<regexp, matching balanced test>
+X<regular expression, matching balanced test> X<possessive> X<PARNO>
+X<Text::Balanced> X<Regexp::Common> X<backtracking> X<recursion>
+
+(contributed by brian d foy)
+
+Your first try should probably be the L<Text::Balanced> module, which
+is in the Perl standard library since Perl 5.8. It has a variety of
+functions to deal with tricky text. The L<Regexp::Common> module can
+also help by providing canned patterns you can use.
+
+As of Perl 5.10, you can match balanced text with regular expressions
+using recursive patterns. Before Perl 5.10, you had to resort to
+various tricks such as using Perl code in C<(??{})> sequences.
+
+Here's an example using a recursive regular expression. The goal is to
+capture all of the text within angle brackets, including the text in
+nested angle brackets. This sample text has two "major" groups: a
+group with one level of nesting and a group with two levels of
+nesting. There are five total groups in angle brackets:
+
+    I have some <brackets in <nested brackets> > and
+    <another group <nested once <nested twice> > >
+    and that's it.
+
+The regular expression to match the balanced text uses two new (to
+Perl 5.10) regular expression features. These are covered in L<perlre>
+and this example is a modified version of one in that documentation.
+
+First, adding the new possessive C<+> to any quantifier finds the
+longest match and does not backtrack. That's important since you want
+to handle any angle brackets through the recursion, not backtracking.
+The group C<< [^<>]++ >> finds one or more non-angle brackets without
+backtracking.
+
+Second, the new C<(?PARNO)> refers to the sub-pattern in the
+particular capture group given by C<PARNO>. In the following regex,
+the first capture group finds (and remembers) the balanced text, and
+you need that same pattern within the first buffer to get past the
+nested text. That's the recursive part. The C<(?1)> uses the pattern
+in the outer capture group as an independent part of the regex.
+
+Putting it all together, you have:
+
+    #!/usr/local/bin/perl5.10.0
+
+    my $string =<<"HERE";
+    I have some <brackets in <nested brackets> > and
+    <another group <nested once <nested twice> > >
+    and that's it.
+    HERE
+
+    my @groups = $string =~ m/
+            (                   # start of capture group 1
+            <                   # match an opening angle bracket
+                (?:
+                    [^<>]++     # one or more non angle brackets, non backtracking
+                      |
+                    (?1)        # found < or >, so recurse to capture group 1
+                )*
+            >                   # match a closing angle bracket
+            )                   # end of capture group 1
+            /xg;
+
+    $" = "\n\t";
+    print "Found:\n\t at groups\n";
+
+The output shows that Perl found the two major groups:
+
+    Found:
+        <brackets in <nested brackets> >
+        <another group <nested once <nested twice> > >
+
+With a little extra work, you can get the all of the groups in angle
+brackets even if they are in other angle brackets too. Each time you
+get a balanced match, remove its outer delimiter (that's the one you
+just matched so don't match it again) and add it to a queue of strings
+to process. Keep doing that until you get no matches:
+
+    #!/usr/local/bin/perl5.10.0
+
+    my @queue =<<"HERE";
+    I have some <brackets in <nested brackets> > and
+    <another group <nested once <nested twice> > >
+    and that's it.
+    HERE
+
+    my $regex = qr/
+            (                   # start of bracket 1
+            <                   # match an opening angle bracket
+                (?:
+                    [^<>]++     # one or more non angle brackets, non backtracking
+                      |
+                    (?1)        # recurse to bracket 1
+                )*
+            >                   # match a closing angle bracket
+            )                   # end of bracket 1
+            /x;
+
+    $" = "\n\t";
+
+    while( @queue ) {
+        my $string = shift @queue;
+
+        my @groups = $string =~ m/$regex/g;
+        print "Found:\n\t at groups\n\n" if @groups;
+
+        unshift @queue, map { s/^<//; s/>$//; $_ } @groups;
+    }
+
+The output shows all of the groups. The outermost matches show up
+first and the nested matches so up later:
+
+    Found:
+        <brackets in <nested brackets> >
+        <another group <nested once <nested twice> > >
+
+    Found:
+        <nested brackets>
+
+    Found:
+        <nested once <nested twice> >
+
+    Found:
+        <nested twice>
+
+=head2 What does it mean that regexes are greedy? How can I get around it?
+X<greedy> X<greediness>
+
+Most people mean that greedy regexes match as much as they can.
+Technically speaking, it's actually the quantifiers (C<?>, C<*>, C<+>,
+C<{}>) that are greedy rather than the whole pattern; Perl prefers local
+greed and immediate gratification to overall greed. To get non-greedy
+versions of the same quantifiers, use (C<??>, C<*?>, C<+?>, C<{}?>).
+
+An example:
+
+    my $s1 = my $s2 = "I am very very cold";
+    $s1 =~ s/ve.*y //;      # I am cold
+    $s2 =~ s/ve.*?y //;     # I am very cold
+
+Notice how the second substitution stopped matching as soon as it
+encountered "y ". The C<*?> quantifier effectively tells the regular
+expression engine to find a match as quickly as possible and pass
+control on to whatever is next in line, as you would if you were
+playing hot potato.
+
+=head2 How do I process each word on each line?
+X<word>
+
+Use the split function:
+
+    while (<>) {
+        foreach my $word ( split ) {
+            # do something with $word here
+        }
+    }
+
+Note that this isn't really a word in the English sense; it's just
+chunks of consecutive non-whitespace characters.
+
+To work with only alphanumeric sequences (including underscores), you
+might consider
+
+    while (<>) {
+        foreach $word (m/(\w+)/g) {
+            # do something with $word here
+        }
+    }
+
+=head2 How can I print out a word-frequency or line-frequency summary?
+
+To do this, you have to parse out each word in the input stream. We'll
+pretend that by word you mean chunk of alphabetics, hyphens, or
+apostrophes, rather than the non-whitespace chunk idea of a word given
+in the previous question:
+
+    my (%seen);
+    while (<>) {
+        while ( /(\b[^\W_\d][\w'-]+\b)/g ) {   # misses "`sheep'"
+            $seen{$1}++;
+        }
+    }
+
+    while ( my ($word, $count) = each %seen ) {
+        print "$count $word\n";
+    }
+
+If you wanted to do the same thing for lines, you wouldn't need a
+regular expression:
+
+    my (%seen);
+
+    while (<>) {
+        $seen{$_}++;
+    }
+
+    while ( my ($line, $count) = each %seen ) {
+        print "$count $line";
+    }
+
+If you want these output in a sorted order, see L<perlfaq4>: "How do I
+sort a hash (optionally by value instead of key)?".
+
+=head2 How can I do approximate matching?
+X<match, approximate> X<matching, approximate>
+
+See the module L<String::Approx> available from CPAN.
+
+=head2 How do I efficiently match many regular expressions at once?
+X<regex, efficiency> X<regexp, efficiency>
+X<regular expression, efficiency>
+
+(contributed by brian d foy)
+
+If you have Perl 5.10 or later, this is almost trivial. You just smart
+match against an array of regular expression objects:
+
+    my @patterns = ( qr/Fr.d/, qr/B.rn.y/, qr/W.lm./ );
+
+    if( $string ~~ @patterns ) {
+        ...
+    };
+
+The smart match stops when it finds a match, so it doesn't have to try
+every expression.
+
+Earlier than Perl 5.10, you have a bit of work to do. You want to
+avoid compiling a regular expression every time you want to match it.
+In this example, perl must recompile the regular expression for every
+iteration of the C<foreach> loop since it has no way to know what
+C<$pattern> will be:
+
+    my @patterns = qw( foo bar baz );
+
+    LINE: while( <DATA> ) {
+        foreach $pattern ( @patterns ) {
+            if( /\b$pattern\b/i ) {
+                print;
+                next LINE;
+            }
+        }
+    }
+
+The C<qr//> operator showed up in perl 5.005. It compiles a regular
+expression, but doesn't apply it. When you use the pre-compiled
+version of the regex, perl does less work. In this example, I inserted
+a C<map> to turn each pattern into its pre-compiled form. The rest of
+the script is the same, but faster:
+
+    my @patterns = map { qr/\b$_\b/i } qw( foo bar baz );
+
+    LINE: while( <> ) {
+        foreach $pattern ( @patterns ) {
+            if( /$pattern/ ) {
+                print;
+                next LINE;
+            }
+        }
+    }
+
+In some cases, you may be able to make several patterns into a single
+regular expression. Beware of situations that require backtracking
+though.
+
+    my $regex = join '|', qw( foo bar baz );
+
+    LINE: while( <> ) {
+        print if /\b(?:$regex)\b/i;
+    }
+
+For more details on regular expression efficiency, see I<Mastering
+Regular Expressions> by Jeffrey Friedl. He explains how the regular
+expressions engine works and why some patterns are surprisingly
+inefficient. Once you understand how perl applies regular expressions,
+you can tune them for individual situations.
+
+=head2 Why don't word-boundary searches with C<\b> work for me?
+X<\b>
+
+(contributed by brian d foy)
+
+Ensure that you know what \b really does: it's the boundary between a
+word character, \w, and something that isn't a word character. That
+thing that isn't a word character might be \W, but it can also be the
+start or end of the string.
+
+It's not (not!) the boundary between whitespace and non-whitespace,
+and it's not the stuff between words we use to create sentences.
+
+In regex speak, a word boundary (\b) is a "zero width assertion",
+meaning that it doesn't represent a character in the string, but a
+condition at a certain position.
+
+For the regular expression, /\bPerl\b/, there has to be a word
+boundary before the "P" and after the "l". As long as something other
+than a word character precedes the "P" and succeeds the "l", the
+pattern will match. These strings match /\bPerl\b/.
+
+    "Perl"    # no word char before P or after l
+    "Perl "   # same as previous (space is not a word char)
+    "'Perl'"  # the ' char is not a word char
+    "Perl's"  # no word char before P, non-word char after "l"
+
+These strings do not match /\bPerl\b/.
+
+    "Perl_"   # _ is a word char!
+    "Perler"  # no word char before P, but one after l
+
+You don't have to use \b to match words though. You can look for
+non-word characters surrounded by word characters. These strings
+match the pattern /\b'\b/.
+
+    "don't"   # the ' char is surrounded by "n" and "t"
+    "qep'a'"  # the ' char is surrounded by "p" and "a"
+
+These strings do not match /\b'\b/.
+
+    "foo'"    # there is no word char after non-word '
+
+You can also use the complement of \b, \B, to specify that there
+should not be a word boundary.
+
+In the pattern /\Bam\B/, there must be a word character before the "a"
+and after the "m". These patterns match /\Bam\B/:
+
+    "llama"   # "am" surrounded by word chars
+    "Samuel"  # same
+
+These strings do not match /\Bam\B/
+
+    "Sam"      # no word boundary before "a", but one after "m"
+    "I am Sam" # "am" surrounded by non-word chars
+
+
+=head2 Why does using $&, $`, or $' slow my program down?
+X<$MATCH> X<$&> X<$POSTMATCH> X<$'> X<$PREMATCH> X<$`>
+
+(contributed by Anno Siegel)
+
+Once Perl sees that you need one of these variables anywhere in the
+program, it provides them on each and every pattern match. That means
+that on every pattern match the entire string will be copied, part of it
+to $`, part to $&, and part to $'. Thus the penalty is most severe with
+long strings and patterns that match often. Avoid $&, $', and $` if you
+can, but if you can't, once you've used them at all, use them at will
+because you've already paid the price. Remember that some algorithms
+really appreciate them. As of the 5.005 release, the $& variable is no
+longer "expensive" the way the other two are.
+
+Since Perl 5.6.1 the special variables @- and @+ can functionally replace
+$`, $& and $'. These arrays contain pointers to the beginning and end
+of each match (see perlvar for the full story), so they give you
+essentially the same information, but without the risk of excessive
+string copying.
+
+Perl 5.10 added three specials, C<${^MATCH}>, C<${^PREMATCH}>, and
+C<${^POSTMATCH}> to do the same job but without the global performance
+penalty. Perl 5.10 only sets these variables if you compile or execute the
+regular expression with the C</p> modifier.
+
+=head2 What good is C<\G> in a regular expression?
+X<\G>
+
+You use the C<\G> anchor to start the next match on the same
+string where the last match left off. The regular
+expression engine cannot skip over any characters to find
+the next match with this anchor, so C<\G> is similar to the
+beginning of string anchor, C<^>. The C<\G> anchor is typically
+used with the C<g> flag. It uses the value of C<pos()>
+as the position to start the next match. As the match
+operator makes successive matches, it updates C<pos()> with the
+position of the next character past the last match (or the
+first character of the next match, depending on how you like
+to look at it). Each string has its own C<pos()> value.
+
+Suppose you want to match all of consecutive pairs of digits
+in a string like "1122a44" and stop matching when you
+encounter non-digits. You want to match C<11> and C<22> but
+the letter <a> shows up between C<22> and C<44> and you want
+to stop at C<a>. Simply matching pairs of digits skips over
+the C<a> and still matches C<44>.
+
+    $_ = "1122a44";
+    my @pairs = m/(\d\d)/g;   # qw( 11 22 44 )
+
+If you use the C<\G> anchor, you force the match after C<22> to
+start with the C<a>. The regular expression cannot match
+there since it does not find a digit, so the next match
+fails and the match operator returns the pairs it already
+found.
+
+    $_ = "1122a44";
+    my @pairs = m/\G(\d\d)/g; # qw( 11 22 )
+
+You can also use the C<\G> anchor in scalar context. You
+still need the C<g> flag.
+
+    $_ = "1122a44";
+    while( m/\G(\d\d)/g ) {
+        print "Found $1\n";
+    }
+
+After the match fails at the letter C<a>, perl resets C<pos()>
+and the next match on the same string starts at the beginning.
+
+    $_ = "1122a44";
+    while( m/\G(\d\d)/g ) {
+        print "Found $1\n";
+    }
+
+    print "Found $1 after while" if m/(\d\d)/g; # finds "11"
+
+You can disable C<pos()> resets on fail with the C<c> flag, documented
+in L<perlop> and L<perlreref>. Subsequent matches start where the last
+successful match ended (the value of C<pos()>) even if a match on the
+same string has failed in the meantime. In this case, the match after
+the C<while()> loop starts at the C<a> (where the last match stopped),
+and since it does not use any anchor it can skip over the C<a> to find
+C<44>.
+
+    $_ = "1122a44";
+    while( m/\G(\d\d)/gc ) {
+        print "Found $1\n";
+    }
+
+    print "Found $1 after while" if m/(\d\d)/g; # finds "44"
+
+Typically you use the C<\G> anchor with the C<c> flag
+when you want to try a different match if one fails,
+such as in a tokenizer. Jeffrey Friedl offers this example
+which works in 5.004 or later.
+
+    while (<>) {
+        chomp;
+        PARSER: {
+            m/ \G( \d+\b    )/gcx   && do { print "number: $1\n";  redo; };
+            m/ \G( \w+      )/gcx   && do { print "word:   $1\n";  redo; };
+            m/ \G( \s+      )/gcx   && do { print "space:  $1\n";  redo; };
+            m/ \G( [^\w\d]+ )/gcx   && do { print "other:  $1\n";  redo; };
+        }
+    }
+
+For each line, the C<PARSER> loop first tries to match a series
+of digits followed by a word boundary. This match has to
+start at the place the last match left off (or the beginning
+of the string on the first match). Since C<m/ \G( \d+\b
+)/gcx> uses the C<c> flag, if the string does not match that
+regular expression, perl does not reset pos() and the next
+match starts at the same position to try a different
+pattern.
+
+=head2 Are Perl regexes DFAs or NFAs? Are they POSIX compliant?
+X<DFA> X<NFA> X<POSIX>
+
+While it's true that Perl's regular expressions resemble the DFAs
+(deterministic finite automata) of the egrep(1) program, they are in
+fact implemented as NFAs (non-deterministic finite automata) to allow
+backtracking and backreferencing. And they aren't POSIX-style either,
+because those guarantee worst-case behavior for all cases. (It seems
+that some people prefer guarantees of consistency, even when what's
+guaranteed is slowness.) See the book "Mastering Regular Expressions"
+(from O'Reilly) by Jeffrey Friedl for all the details you could ever
+hope to know on these matters (a full citation appears in
+L<perlfaq2>).
+
+=head2 What's wrong with using grep in a void context?
+X<grep>
+
+The problem is that grep builds a return list, regardless of the context.
+This means you're making Perl go to the trouble of building a list that
+you then just throw away. If the list is large, you waste both time and space.
+If your intent is to iterate over the list, then use a for loop for this
+purpose.
+
+In perls older than 5.8.1, map suffers from this problem as well.
+But since 5.8.1, this has been fixed, and map is context aware - in void
+context, no lists are constructed.
+
+=head2 How can I match strings with multibyte characters?
+X<regex, and multibyte characters> X<regexp, and multibyte characters>
+X<regular expression, and multibyte characters> X<martian> X<encoding, Martian>
+
+Starting from Perl 5.6 Perl has had some level of multibyte character
+support. Perl 5.8 or later is recommended. Supported multibyte
+character repertoires include Unicode, and legacy encodings
+through the Encode module. See L<perluniintro>, L<perlunicode>,
+and L<Encode>.
+
+If you are stuck with older Perls, you can do Unicode with the
+L<Unicode::String> module, and character conversions using the
+L<Unicode::Map8> and L<Unicode::Map> modules. If you are using
+Japanese encodings, you might try using the jperl 5.005_03.
+
+Finally, the following set of approaches was offered by Jeffrey
+Friedl, whose article in issue #5 of The Perl Journal talks about
+this very matter.
+
+Let's suppose you have some weird Martian encoding where pairs of
+ASCII uppercase letters encode single Martian letters (i.e. the two
+bytes "CV" make a single Martian letter, as do the two bytes "SG",
+"VS", "XX", etc.). Other bytes represent single characters, just like
+ASCII.
+
+So, the string of Martian "I am CVSGXX!" uses 12 bytes to encode the
+nine characters 'I', ' ', 'a', 'm', ' ', 'CV', 'SG', 'XX', '!'.
+
+Now, say you want to search for the single character C</GX/>. Perl
+doesn't know about Martian, so it'll find the two bytes "GX" in the "I
+am CVSGXX!" string, even though that character isn't there: it just
+looks like it is because "SG" is next to "XX", but there's no real
+"GX". This is a big problem.
+
+Here are a few ways, all painful, to deal with it:
+
+    # Make sure adjacent "martian" bytes are no longer adjacent.
+    $martian =~ s/([A-Z][A-Z])/ $1 /g;
+
+    print "found GX!\n" if $martian =~ /GX/;
+
+Or like this:
+
+    my @chars = $martian =~ m/([A-Z][A-Z]|[^A-Z])/g;
+    # above is conceptually similar to:     my @chars = $text =~ m/(.)/g;
+    #
+    foreach my $char (@chars) {
+        print "found GX!\n", last if $char eq 'GX';
+    }
+
+Or like this:
+
+    while ($martian =~ m/\G([A-Z][A-Z]|.)/gs) {  # \G probably unneeded
+        if ($1 eq 'GX') {
+            print "found GX!\n";
+            last;
+        }
+    }
+
+Here's another, slightly less painful, way to do it from Benjamin
+Goldberg, who uses a zero-width negative look-behind assertion.
+
+    print "found GX!\n" if    $martian =~ m/
+        (?<![A-Z])
+        (?:[A-Z][A-Z])*?
+        GX
+        /x;
+
+This succeeds if the "martian" character GX is in the string, and fails
+otherwise. If you don't like using (?<!), a zero-width negative
+look-behind assertion, you can replace (?<![A-Z]) with (?:^|[^A-Z]).
+
+It does have the drawback of putting the wrong thing in $-[0] and $+[0],
+but this usually can be worked around.
+
+=head2 How do I match a regular expression that's in a variable?
+X<regex, in variable> X<eval> X<regex> X<quotemeta> X<\Q, regex>
+X<\E, regex> X<qr//>
+
+(contributed by brian d foy)
+
+We don't have to hard-code patterns into the match operator (or
+anything else that works with regular expressions). We can put the
+pattern in a variable for later use.
+
+The match operator is a double quote context, so you can interpolate
+your variable just like a double quoted string. In this case, you
+read the regular expression as user input and store it in C<$regex>.
+Once you have the pattern in C<$regex>, you use that variable in the
+match operator.
+
+    chomp( my $regex = <STDIN> );
+
+    if( $string =~ m/$regex/ ) { ... }
+
+Any regular expression special characters in C<$regex> are still
+special, and the pattern still has to be valid or Perl will complain.
+For instance, in this pattern there is an unpaired parenthesis.
+
+    my $regex = "Unmatched ( paren";
+
+    "Two parens to bind them all" =~ m/$regex/;
+
+When Perl compiles the regular expression, it treats the parenthesis
+as the start of a memory match. When it doesn't find the closing
+parenthesis, it complains:
+
+    Unmatched ( in regex; marked by <-- HERE in m/Unmatched ( <-- HERE  paren/ at script line 3.
+
+You can get around this in several ways depending on our situation.
+First, if you don't want any of the characters in the string to be
+special, you can escape them with C<quotemeta> before you use the string.
+
+    chomp( my $regex = <STDIN> );
+    $regex = quotemeta( $regex );
+
+    if( $string =~ m/$regex/ ) { ... }
+
+You can also do this directly in the match operator using the C<\Q>
+and C<\E> sequences. The C<\Q> tells Perl where to start escaping
+special characters, and the C<\E> tells it where to stop (see L<perlop>
+for more details).
+
+    chomp( my $regex = <STDIN> );
+
+    if( $string =~ m/\Q$regex\E/ ) { ... }
+
+Alternately, you can use C<qr//>, the regular expression quote operator (see
+L<perlop> for more details). It quotes and perhaps compiles the pattern,
+and you can apply regular expression flags to the pattern.
+
+    chomp( my $input = <STDIN> );
+
+    my $regex = qr/$input/is;
+
+    $string =~ m/$regex/  # same as m/$input/is;
+
+You might also want to trap any errors by wrapping an C<eval> block
+around the whole thing.
+
+    chomp( my $input = <STDIN> );
+
+    eval {
+        if( $string =~ m/\Q$input\E/ ) { ... }
+    };
+    warn $@ if $@;
+
+Or...
+
+    my $regex = eval { qr/$input/is };
+    if( defined $regex ) {
+        $string =~ m/$regex/;
+    }
+    else {
+        warn $@;
+    }
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain. You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit. A simple comment in the code giving
+credit would be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq7.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq7.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq7.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1061 @@
+=head1 NAME
+
+perlfaq7 - General Perl Language Issues
+
+=head1 DESCRIPTION
+
+This section deals with general Perl language issues that don't
+clearly fit into any of the other sections.
+
+=head2 Can I get a BNF/yacc/RE for the Perl language?
+
+There is no BNF, but you can paw your way through the yacc grammar in
+perly.y in the source distribution if you're particularly brave. The
+grammar relies on very smart tokenizing code, so be prepared to
+venture into toke.c as well.
+
+In the words of Chaim Frenkel: "Perl's grammar can not be reduced to BNF.
+The work of parsing perl is distributed between yacc, the lexer, smoke
+and mirrors."
+
+=head2 What are all these $@%&* punctuation signs, and how do I know when to use them?
+
+They are type specifiers, as detailed in L<perldata>:
+
+    $ for scalar values (number, string or reference)
+    @ for arrays
+    % for hashes (associative arrays)
+    & for subroutines (aka functions, procedures, methods)
+    * for all types of that symbol name. In version 4 you used them like
+      pointers, but in modern perls you can just use references.
+
+There are a couple of other symbols that
+you're likely to encounter that aren't
+really type specifiers:
+
+    <> are used for inputting a record from a filehandle.
+    \  takes a reference to something.
+
+Note that <FILE> is I<neither> the type specifier for files
+nor the name of the handle. It is the C<< <> >> operator applied
+to the handle FILE. It reads one line (well, record--see
+L<perlvar/$E<sol>>) from the handle FILE in scalar context, or I<all> lines
+in list context. When performing open, close, or any other operation
+besides C<< <> >> on files, or even when talking about the handle, do
+I<not> use the brackets. These are correct: C<eof(FH)>, C<seek(FH, 0,
+2)> and "copying from STDIN to FILE".
+
+=head2 Do I always/never have to quote my strings or use semicolons and commas?
+
+Normally, a bareword doesn't need to be quoted, but in most cases
+probably should be (and must be under C<use strict>). But a hash key
+consisting of a simple word and the left-hand
+operand to the C<< => >> operator both
+count as though they were quoted:
+
+    This                    is like this
+    ------------            ---------------
+    $foo{line}              $foo{'line'}
+    bar => stuff            'bar' => stuff
+
+The final semicolon in a block is optional, as is the final comma in a
+list. Good style (see L<perlstyle>) says to put them in except for
+one-liners:
+
+    if ($whoops) { exit 1 }
+    my @nums = (1, 2, 3);
+
+    if ($whoops) {
+        exit 1;
+    }
+
+    my @lines = (
+        "There Beren came from mountains cold",
+        "And lost he wandered under leaves",
+    );
+
+=head2 How do I skip some return values?
+
+One way is to treat the return values as a list and index into it:
+
+    $dir = (getpwnam($user))[7];
+
+Another way is to use undef as an element on the left-hand-side:
+
+    ($dev, $ino, undef, undef, $uid, $gid) = stat($file);
+
+You can also use a list slice to select only the elements that
+you need:
+
+    ($dev, $ino, $uid, $gid) = ( stat($file) )[0,1,4,5];
+
+=head2 How do I temporarily block warnings?
+
+If you are running Perl 5.6.0 or better, the C<use warnings> pragma
+allows fine control of what warnings are produced.
+See L<perllexwarn> for more details.
+
+    {
+        no warnings;          # temporarily turn off warnings
+        $x = $y + $z;         # I know these might be undef
+    }
+
+Additionally, you can enable and disable categories of warnings.
+You turn off the categories you want to ignore and you can still
+get other categories of warnings. See L<perllexwarn> for the
+complete details, including the category names and hierarchy.
+
+    {
+        no warnings 'uninitialized';
+        $x = $y + $z;
+    }
+
+If you have an older version of Perl, the C<$^W> variable (documented
+in L<perlvar>) controls runtime warnings for a block:
+
+    {
+        local $^W = 0;        # temporarily turn off warnings
+        $x = $y + $z;         # I know these might be undef
+    }
+
+Note that like all the punctuation variables, you cannot currently
+use my() on C<$^W>, only local().
+
+=head2 What's an extension?
+
+An extension is a way of calling compiled C code from Perl. Reading
+L<perlxstut> is a good place to learn more about extensions.
+
+=head2 Why do Perl operators have different precedence than C operators?
+
+Actually, they don't. All C operators that Perl copies have the same
+precedence in Perl as they do in C. The problem is with operators that C
+doesn't have, especially functions that give a list context to everything
+on their right, eg. print, chmod, exec, and so on. Such functions are
+called "list operators" and appear as such in the precedence table in
+L<perlop>.
+
+A common mistake is to write:
+
+    unlink $file || die "snafu";
+
+This gets interpreted as:
+
+    unlink ($file || die "snafu");
+
+To avoid this problem, either put in extra parentheses or use the
+super low precedence C<or> operator:
+
+    (unlink $file) || die "snafu";
+    unlink $file or die "snafu";
+
+The "English" operators (C<and>, C<or>, C<xor>, and C<not>)
+deliberately have precedence lower than that of list operators for
+just such situations as the one above.
+
+Another operator with surprising precedence is exponentiation. It
+binds more tightly even than unary minus, making C<-2**2> produce a
+negative four and not a positive one. It is also right-associating, meaning
+that C<2**3**2> is two raised to the ninth power, not eight squared.
+
+Although it has the same precedence as in C, Perl's C<?:> operator
+produces an lvalue. This assigns $x to either $if_true or $if_false, depending
+on the trueness of $maybe:
+
+    ($maybe ? $if_true : $if_false) = $x;
+
+=head2 How do I declare/create a structure?
+
+In general, you don't "declare" a structure. Just use a (probably
+anonymous) hash reference. See L<perlref> and L<perldsc> for details.
+Here's an example:
+
+    $person = {};                   # new anonymous hash
+    $person->{AGE}  = 24;           # set field AGE to 24
+    $person->{NAME} = "Nat";        # set field NAME to "Nat"
+
+If you're looking for something a bit more rigorous, try L<perltoot>.
+
+=head2 How do I create a module?
+
+L<perlnewmod> is a good place to start, ignore the bits
+about uploading to CPAN if you don't want to make your
+module publicly available.
+
+L<ExtUtils::ModuleMaker> and L<Module::Starter> are also
+good places to start. Many CPAN authors now use L<Dist::Zilla>
+to automate as much as possible.
+
+Detailed documentation about modules can be found at:
+L<perlmod>, L<perlmodlib>, L<perlmodstyle>.
+
+If you need to include C code or C library interfaces 
+use h2xs. h2xs will create the module distribution structure 
+and the initial interface files.
+L<perlxs> and L<perlxstut> explain the details.
+
+=head2 How do I adopt or take over a module already on CPAN?
+
+Ask the current maintainer to make you a co-maintainer or
+transfer the module to you.
+
+If you can not reach the author for some reason contact
+the PAUSE admins at modules at perl.org who may be able to help,
+but each case it treated seperatly.
+
+=over 4
+
+=item *
+
+Get a login for the Perl Authors Upload Server (PAUSE) if you don't
+already have one: L<http://pause.perl.org>
+
+=item *
+
+Write to modules at perl.org explaining what you did to contact the
+current maintainer. The PAUSE admins will also try to reach the
+maintainer.
+
+=item *
+
+Post a public message in a heavily trafficked site announcing your
+intention to take over the module.
+
+=item *
+
+Wait a bit. The PAUSE admins don't want to act too quickly in case
+the current maintainer is on holiday. If there's no response to
+private communication or the public post, a PAUSE admin can transfer
+it to you.
+
+=back
+
+=head2 How do I create a class?
+X<class, creation> X<package>
+
+(contributed by brian d foy)
+
+In Perl, a class is just a package, and methods are just subroutines.
+Perl doesn't get more formal than that and lets you set up the package
+just the way that you like it (that is, it doesn't set up anything for
+you).
+
+The Perl documentation has several tutorials that cover class
+creation, including L<perlboot> (Barnyard Object Oriented Tutorial),
+L<perltoot> (Tom's Object Oriented Tutorial), L<perlbot> (Bag o'
+Object Tricks), and L<perlobj>.
+
+=head2 How can I tell if a variable is tainted?
+
+You can use the tainted() function of the Scalar::Util module, available
+from CPAN (or included with Perl since release 5.8.0).
+See also L<perlsec/"Laundering and Detecting Tainted Data">.
+
+=head2 What's a closure?
+
+Closures are documented in L<perlref>.
+
+I<Closure> is a computer science term with a precise but
+hard-to-explain meaning. Usually, closures are implemented in Perl as
+anonymous subroutines with lasting references to lexical variables
+outside their own scopes. These lexicals magically refer to the
+variables that were around when the subroutine was defined (deep
+binding).
+
+Closures are most often used in programming languages where you can
+have the return value of a function be itself a function, as you can
+in Perl. Note that some languages provide anonymous functions but are
+not capable of providing proper closures: the Python language, for
+example. For more information on closures, check out any textbook on
+functional programming. Scheme is a language that not only supports
+but encourages closures.
+
+Here's a classic non-closure function-generating function:
+
+    sub add_function_generator {
+        return sub { shift() + shift() };
+    }
+
+    my $add_sub = add_function_generator();
+    my $sum = $add_sub->(4,5);                # $sum is 9 now.
+
+The anonymous subroutine returned by add_function_generator() isn't
+technically a closure because it refers to no lexicals outside its own
+scope. Using a closure gives you a I<function template> with some
+customization slots left out to be filled later.
+
+Contrast this with the following make_adder() function, in which the
+returned anonymous function contains a reference to a lexical variable
+outside the scope of that function itself. Such a reference requires
+that Perl return a proper closure, thus locking in for all time the
+value that the lexical had when the function was created.
+
+    sub make_adder {
+        my $addpiece = shift;
+        return sub { shift() + $addpiece };
+    }
+
+    my $f1 = make_adder(20);
+    my $f2 = make_adder(555);
+
+Now C<< $f1->($n) >> is always 20 plus whatever $n you pass in, whereas
+C<< $f2->($n) >> is always 555 plus whatever $n you pass in. The $addpiece
+in the closure sticks around.
+
+Closures are often used for less esoteric purposes. For example, when
+you want to pass in a bit of code into a function:
+
+    my $line;
+    timeout( 30, sub { $line = <STDIN> } );
+
+If the code to execute had been passed in as a string,
+C<< '$line = <STDIN>' >>, there would have been no way for the
+hypothetical timeout() function to access the lexical variable
+$line back in its caller's scope.
+
+Another use for a closure is to make a variable I<private> to a
+named subroutine, e.g. a counter that gets initialized at creation
+time of the sub and can only be modified from within the sub.
+This is sometimes used with a BEGIN block in package files to make
+sure a variable doesn't get meddled with during the lifetime of the
+package:
+
+    BEGIN {
+        my $id = 0;
+        sub next_id { ++$id }
+    }
+
+This is discussed in more detail in L<perlsub>; see the entry on
+I<Persistent Private Variables>.
+
+=head2 What is variable suicide and how can I prevent it?
+
+This problem was fixed in perl 5.004_05, so preventing it means upgrading
+your version of perl. ;)
+
+Variable suicide is when you (temporarily or permanently) lose the value
+of a variable. It is caused by scoping through my() and local()
+interacting with either closures or aliased foreach() iterator variables
+and subroutine arguments. It used to be easy to inadvertently lose a
+variable's value this way, but now it's much harder. Take this code:
+
+    my $f = 'foo';
+    sub T {
+        while ($i++ < 3) { my $f = $f; $f .= "bar"; print $f, "\n" }
+    }
+
+    T;
+    print "Finally $f\n";
+
+If you are experiencing variable suicide, that C<my $f> in the subroutine
+doesn't pick up a fresh copy of the C<$f> whose value is C<'foo'>. The
+output shows that inside the subroutine the value of C<$f> leaks through
+when it shouldn't, as in this output:
+
+    foobar
+    foobarbar
+    foobarbarbar
+    Finally foo
+
+The $f that has "bar" added to it three times should be a new C<$f>
+C<my $f> should create a new lexical variable each time through the loop.
+The expected output is:
+
+    foobar
+    foobar
+    foobar
+    Finally foo
+
+=head2 How can I pass/return a {Function, FileHandle, Array, Hash, Method, Regex}?
+
+You need to pass references to these objects. See L<perlsub/"Pass by
+Reference"> for this particular question, and L<perlref> for
+information on references.
+
+=over 4
+
+=item Passing Variables and Functions
+
+Regular variables and functions are quite easy to pass: just pass in a
+reference to an existing or anonymous variable or function:
+
+    func( \$some_scalar );
+
+    func( \@some_array  );
+    func( [ 1 .. 10 ]   );
+
+    func( \%some_hash   );
+    func( { this => 10, that => 20 }   );
+
+    func( \&some_func   );
+    func( sub { $_[0] ** $_[1] }   );
+
+=item Passing Filehandles
+
+As of Perl 5.6, you can represent filehandles with scalar variables
+which you treat as any other scalar.
+
+    open my $fh, $filename or die "Cannot open $filename! $!";
+    func( $fh );
+
+    sub func {
+        my $passed_fh = shift;
+
+        my $line = <$passed_fh>;
+    }
+
+Before Perl 5.6, you had to use the C<*FH> or C<\*FH> notations.
+These are "typeglobs"--see L<perldata/"Typeglobs and Filehandles">
+and especially L<perlsub/"Pass by Reference"> for more information.
+
+=item Passing Regexes
+
+Here's an example of how to pass in a string and a regular expression
+for it to match against. You construct the pattern with the C<qr//>
+operator:
+
+    sub compare {
+        my ($val1, $regex) = @_;
+        my $retval = $val1 =~ /$regex/;
+        return $retval;
+    }
+    $match = compare("old McDonald", qr/d.*D/i);
+
+=item Passing Methods
+
+To pass an object method into a subroutine, you can do this:
+
+    call_a_lot(10, $some_obj, "methname")
+    sub call_a_lot {
+        my ($count, $widget, $trick) = @_;
+        for (my $i = 0; $i < $count; $i++) {
+            $widget->$trick();
+        }
+    }
+
+Or, you can use a closure to bundle up the object, its
+method call, and arguments:
+
+    my $whatnot = sub { $some_obj->obfuscate(@args) };
+    func($whatnot);
+    sub func {
+        my $code = shift;
+        &$code();
+    }
+
+You could also investigate the can() method in the UNIVERSAL class
+(part of the standard perl distribution).
+
+=back
+
+=head2 How do I create a static variable?
+
+(contributed by brian d foy)
+
+In Perl 5.10, declare the variable with C<state>. The C<state>
+declaration creates the lexical variable that persists between calls
+to the subroutine:
+
+    sub counter { state $count = 1; $count++ }
+
+You can fake a static variable by using a lexical variable which goes
+out of scope. In this example, you define the subroutine C<counter>, and
+it uses the lexical variable C<$count>. Since you wrap this in a BEGIN
+block, C<$count> is defined at compile-time, but also goes out of
+scope at the end of the BEGIN block. The BEGIN block also ensures that
+the subroutine and the value it uses is defined at compile-time so the
+subroutine is ready to use just like any other subroutine, and you can
+put this code in the same place as other subroutines in the program
+text (i.e. at the end of the code, typically). The subroutine
+C<counter> still has a reference to the data, and is the only way you
+can access the value (and each time you do, you increment the value).
+The data in chunk of memory defined by C<$count> is private to
+C<counter>.
+
+    BEGIN {
+        my $count = 1;
+        sub counter { $count++ }
+    }
+
+    my $start = counter();
+
+    .... # code that calls counter();
+
+    my $end = counter();
+
+In the previous example, you created a function-private variable
+because only one function remembered its reference. You could define
+multiple functions while the variable is in scope, and each function
+can share the "private" variable. It's not really "static" because you
+can access it outside the function while the lexical variable is in
+scope, and even create references to it. In this example,
+C<increment_count> and C<return_count> share the variable. One
+function adds to the value and the other simply returns the value.
+They can both access C<$count>, and since it has gone out of scope,
+there is no other way to access it.
+
+    BEGIN {
+        my $count = 1;
+        sub increment_count { $count++ }
+        sub return_count    { $count }
+    }
+
+To declare a file-private variable, you still use a lexical variable.
+A file is also a scope, so a lexical variable defined in the file
+cannot be seen from any other file.
+
+See L<perlsub/"Persistent Private Variables"> for more information.
+The discussion of closures in L<perlref> may help you even though we
+did not use anonymous subroutines in this answer. See
+L<perlsub/"Persistent Private Variables"> for details.
+
+=head2 What's the difference between dynamic and lexical (static) scoping? Between local() and my()?
+
+C<local($x)> saves away the old value of the global variable C<$x>
+and assigns a new value for the duration of the subroutine I<which is
+visible in other functions called from that subroutine>. This is done
+at run-time, so is called dynamic scoping. local() always affects global
+variables, also called package variables or dynamic variables.
+
+C<my($x)> creates a new variable that is only visible in the current
+subroutine. This is done at compile-time, so it is called lexical or
+static scoping. my() always affects private variables, also called
+lexical variables or (improperly) static(ly scoped) variables.
+
+For instance:
+
+    sub visible {
+        print "var has value $var\n";
+    }
+
+    sub dynamic {
+        local $var = 'local';    # new temporary value for the still-global
+        visible();              #   variable called $var
+    }
+
+    sub lexical {
+        my $var = 'private';    # new private variable, $var
+        visible();              # (invisible outside of sub scope)
+    }
+
+    $var = 'global';
+
+    visible();              # prints global
+    dynamic();              # prints local
+    lexical();              # prints global
+
+Notice how at no point does the value "private" get printed. That's
+because $var only has that value within the block of the lexical()
+function, and it is hidden from the called subroutine.
+
+In summary, local() doesn't make what you think of as private, local
+variables. It gives a global variable a temporary value. my() is
+what you're looking for if you want private variables.
+
+See L<perlsub/"Private Variables via my()"> and
+L<perlsub/"Temporary Values via local()"> for excruciating details.
+
+=head2 How can I access a dynamic variable while a similarly named lexical is in scope?
+
+If you know your package, you can just mention it explicitly, as in
+$Some_Pack::var. Note that the notation $::var is B<not> the dynamic $var
+in the current package, but rather the one in the "main" package, as
+though you had written $main::var.
+
+    use vars '$var';
+    local $var = "global";
+    my    $var = "lexical";
+
+    print "lexical is $var\n";
+    print "global  is $main::var\n";
+
+Alternatively you can use the compiler directive our() to bring a
+dynamic variable into the current lexical scope.
+
+    require 5.006; # our() did not exist before 5.6
+    use vars '$var';
+
+    local $var = "global";
+    my $var    = "lexical";
+
+    print "lexical is $var\n";
+
+    {
+        our $var;
+        print "global  is $var\n";
+    }
+
+=head2 What's the difference between deep and shallow binding?
+
+In deep binding, lexical variables mentioned in anonymous subroutines
+are the same ones that were in scope when the subroutine was created.
+In shallow binding, they are whichever variables with the same names
+happen to be in scope when the subroutine is called. Perl always uses
+deep binding of lexical variables (i.e., those created with my()).
+However, dynamic variables (aka global, local, or package variables)
+are effectively shallowly bound. Consider this just one more reason
+not to use them. See the answer to L<"What's a closure?">.
+
+=head2 Why doesn't "my($foo) = E<lt>$fhE<gt>;" work right?
+
+C<my()> and C<local()> give list context to the right hand side
+of C<=>. The <$fh> read operation, like so many of Perl's
+functions and operators, can tell which context it was called in and
+behaves appropriately. In general, the scalar() function can help.
+This function does nothing to the data itself (contrary to popular myth)
+but rather tells its argument to behave in whatever its scalar fashion is.
+If that function doesn't have a defined scalar behavior, this of course
+doesn't help you (such as with sort()).
+
+To enforce scalar context in this particular case, however, you need
+merely omit the parentheses:
+
+    local($foo) = <$fh>;        # WRONG
+    local($foo) = scalar(<$fh>);   # ok
+    local $foo  = <$fh>;        # right
+
+You should probably be using lexical variables anyway, although the
+issue is the same here:
+
+    my($foo) = <$fh>;    # WRONG
+    my $foo  = <$fh>;    # right
+
+=head2 How do I redefine a builtin function, operator, or method?
+
+Why do you want to do that? :-)
+
+If you want to override a predefined function, such as open(),
+then you'll have to import the new definition from a different
+module. See L<perlsub/"Overriding Built-in Functions">.
+
+If you want to overload a Perl operator, such as C<+> or C<**>,
+then you'll want to use the C<use overload> pragma, documented
+in L<overload>.
+
+If you're talking about obscuring method calls in parent classes,
+see L<perltoot/"Overridden Methods">.
+
+=head2 What's the difference between calling a function as &foo and foo()?
+
+(contributed by brian d foy)
+
+Calling a subroutine as C<&foo> with no trailing parentheses ignores
+the prototype of C<foo> and passes it the current value of the argument
+list, C<@_>. Here's an example; the C<bar> subroutine calls C<&foo>,
+which prints its arguments list:
+
+    sub bar { &foo }
+
+    sub foo { print "Args in foo are: @_\n" }
+
+    bar( qw( a b c ) );
+
+When you call C<bar> with arguments, you see that C<foo> got the same C<@_>:
+
+    Args in foo are: a b c
+
+Calling the subroutine with trailing parentheses, with or without arguments,
+does not use the current C<@_> and respects the subroutine prototype. Changing
+the example to put parentheses after the call to C<foo> changes the program:
+
+    sub bar { &foo() }
+
+    sub foo { print "Args in foo are: @_\n" }
+
+    bar( qw( a b c ) );
+
+Now the output shows that C<foo> doesn't get the C<@_> from its caller.
+
+    Args in foo are:
+
+The main use of the C<@_> pass-through feature is to write subroutines
+whose main job it is to call other subroutines for you. For further
+details, see L<perlsub>.
+
+=head2 How do I create a switch or case statement?
+
+In Perl 5.10, use the C<given-when> construct described in L<perlsyn>:
+
+    use 5.010;
+
+    given ( $string ) {
+        when( 'Fred' )        { say "I found Fred!" }
+        when( 'Barney' )      { say "I found Barney!" }
+        when( /Bamm-?Bamm/ )  { say "I found Bamm-Bamm!" }
+        default               { say "I don't recognize the name!" }
+    };
+
+If one wants to use pure Perl and to be compatible with Perl versions
+prior to 5.10, the general answer is to use C<if-elsif-else>:
+
+    for ($variable_to_test) {
+        if    (/pat1/)  { }     # do something
+        elsif (/pat2/)  { }     # do something else
+        elsif (/pat3/)  { }     # do something else
+        else            { }     # default
+    }
+
+Here's a simple example of a switch based on pattern matching,
+lined up in a way to make it look more like a switch statement.
+We'll do a multiway conditional based on the type of reference stored
+in $whatchamacallit:
+
+    SWITCH: for (ref $whatchamacallit) {
+
+        /^$/           && die "not a reference";
+
+        /SCALAR/       && do {
+                        print_scalar($$ref);
+                        last SWITCH;
+                      };
+
+        /ARRAY/        && do {
+                        print_array(@$ref);
+                        last SWITCH;
+                      };
+
+        /HASH/        && do {
+                        print_hash(%$ref);
+                        last SWITCH;
+                      };
+
+        /CODE/        && do {
+                        warn "can't print function ref";
+                        last SWITCH;
+                      };
+
+        # DEFAULT
+
+        warn "User defined type skipped";
+
+    }
+
+See L<perlsyn> for other examples in this style.
+
+Sometimes you should change the positions of the constant and the variable.
+For example, let's say you wanted to test which of many answers you were
+given, but in a case-insensitive way that also allows abbreviations.
+You can use the following technique if the strings all start with
+different characters or if you want to arrange the matches so that
+one takes precedence over another, as C<"SEND"> has precedence over
+C<"STOP"> here:
+
+    chomp($answer = <>);
+    if    ("SEND"  =~ /^\Q$answer/i) { print "Action is send\n"  }
+    elsif ("STOP"  =~ /^\Q$answer/i) { print "Action is stop\n"  }
+    elsif ("ABORT" =~ /^\Q$answer/i) { print "Action is abort\n" }
+    elsif ("LIST"  =~ /^\Q$answer/i) { print "Action is list\n"  }
+    elsif ("EDIT"  =~ /^\Q$answer/i) { print "Action is edit\n"  }
+
+A totally different approach is to create a hash of function references.
+
+    my %commands = (
+        "happy" => \&joy,
+        "sad",  => \&sullen,
+        "done"  => sub { die "See ya!" },
+        "mad"   => \&angry,
+    );
+
+    print "How are you? ";
+    chomp($string = <STDIN>);
+    if ($commands{$string}) {
+        $commands{$string}->();
+    } else {
+        print "No such command: $string\n";
+    }
+
+Starting from Perl 5.8, a source filter module, C<Switch>, can also be
+used to get switch and case. Its use is now discouraged, because it's
+not fully compatible with the native switch of Perl 5.10, and because,
+as it's implemented as a source filter, it doesn't always work as intended
+when complex syntax is involved.
+
+=head2 How can I catch accesses to undefined variables, functions, or methods?
+
+The AUTOLOAD method, discussed in L<perlsub/"Autoloading"> and
+L<perltoot/"AUTOLOAD: Proxy Methods">, lets you capture calls to
+undefined functions and methods.
+
+When it comes to undefined variables that would trigger a warning
+under C<use warnings>, you can promote the warning to an error.
+
+    use warnings FATAL => qw(uninitialized);
+
+=head2 Why can't a method included in this same file be found?
+
+Some possible reasons: your inheritance is getting confused, you've
+misspelled the method name, or the object is of the wrong type. Check
+out L<perltoot> for details about any of the above cases. You may
+also use C<print ref($object)> to find out the class C<$object> was
+blessed into.
+
+Another possible reason for problems is that you've used the
+indirect object syntax (eg, C<find Guru "Samy">) on a class name
+before Perl has seen that such a package exists. It's wisest to make
+sure your packages are all defined before you start using them, which
+will be taken care of if you use the C<use> statement instead of
+C<require>. If not, make sure to use arrow notation (eg.,
+C<< Guru->find("Samy") >>) instead. Object notation is explained in
+L<perlobj>.
+
+Make sure to read about creating modules in L<perlmod> and
+the perils of indirect objects in L<perlobj/"Method Invocation">.
+
+=head2 How can I find out my current or calling package?
+
+(contributed by brian d foy)
+
+To find the package you are currently in, use the special literal
+C<__PACKAGE__>, as documented in L<perldata>. You can only use the
+special literals as separate tokens, so you can't interpolate them
+into strings like you can with variables:
+
+    my $current_package = __PACKAGE__;
+    print "I am in package $current_package\n";
+
+If you want to find the package calling your code, perhaps to give better
+diagnostics as L<Carp> does, use the C<caller> built-in:
+
+    sub foo {
+        my @args = ...;
+        my( $package, $filename, $line ) = caller;
+
+        print "I was called from package $package\n";
+        );
+
+By default, your program starts in package C<main>, so you will
+always be in some package.
+
+This is different from finding out the package an object is blessed
+into, which might not be the current package. For that, use C<blessed>
+from L<Scalar::Util>, part of the Standard Library since Perl 5.8:
+
+    use Scalar::Util qw(blessed);
+    my $object_package = blessed( $object );
+
+Most of the time, you shouldn't care what package an object is blessed
+into, however, as long as it claims to inherit from that class:
+
+    my $is_right_class = eval { $object->isa( $package ) }; # true or false
+
+And, with Perl 5.10 and later, you don't have to check for an
+inheritance to see if the object can handle a role. For that, you can
+use C<DOES>, which comes from C<UNIVERSAL>:
+
+    my $class_does_it = eval { $object->DOES( $role ) }; # true or false
+
+You can safely replace C<isa> with C<DOES> (although the converse is not true).
+
+=head2 How can I comment out a large block of Perl code?
+
+(contributed by brian d foy)
+
+The quick-and-dirty way to comment out more than one line of Perl is
+to surround those lines with Pod directives. You have to put these
+directives at the beginning of the line and somewhere where Perl
+expects a new statement (so not in the middle of statements like the C<#>
+comments). You end the comment with C<=cut>, ending the Pod section:
+
+    =pod
+
+    my $object = NotGonnaHappen->new();
+
+    ignored_sub();
+
+    $wont_be_assigned = 37;
+
+    =cut
+
+The quick-and-dirty method only works well when you don't plan to
+leave the commented code in the source. If a Pod parser comes along,
+your multiline comment is going to show up in the Pod translation.
+A better way hides it from Pod parsers as well.
+
+The C<=begin> directive can mark a section for a particular purpose.
+If the Pod parser doesn't want to handle it, it just ignores it. Label
+the comments with C<comment>. End the comment using C<=end> with the
+same label. You still need the C<=cut> to go back to Perl code from
+the Pod comment:
+
+    =begin comment
+
+    my $object = NotGonnaHappen->new();
+
+    ignored_sub();
+
+    $wont_be_assigned = 37;
+
+    =end comment
+
+    =cut
+
+For more information on Pod, check out L<perlpod> and L<perlpodspec>.
+
+=head2 How do I clear a package?
+
+Use this code, provided by Mark-Jason Dominus:
+
+    sub scrub_package {
+        no strict 'refs';
+        my $pack = shift;
+        die "Shouldn't delete main package"
+            if $pack eq "" || $pack eq "main";
+        my $stash = *{$pack . '::'}{HASH};
+        my $name;
+        foreach $name (keys %$stash) {
+            my $fullname = $pack . '::' . $name;
+            # Get rid of everything with that name.
+            undef $$fullname;
+            undef @$fullname;
+            undef %$fullname;
+            undef &$fullname;
+            undef *$fullname;
+        }
+    }
+
+Or, if you're using a recent release of Perl, you can
+just use the Symbol::delete_package() function instead.
+
+=head2 How can I use a variable as a variable name?
+
+Beginners often think they want to have a variable contain the name
+of a variable.
+
+    $fred    = 23;
+    $varname = "fred";
+    ++$$varname;         # $fred now 24
+
+This works I<sometimes>, but it is a very bad idea for two reasons.
+
+The first reason is that this technique I<only works on global
+variables>. That means that if $fred is a lexical variable created
+with my() in the above example, the code wouldn't work at all: you'd
+accidentally access the global and skip right over the private lexical
+altogether. Global variables are bad because they can easily collide
+accidentally and in general make for non-scalable and confusing code.
+
+Symbolic references are forbidden under the C<use strict> pragma.
+They are not true references and consequently are not reference-counted
+or garbage-collected.
+
+The other reason why using a variable to hold the name of another
+variable is a bad idea is that the question often stems from a lack of
+understanding of Perl data structures, particularly hashes. By using
+symbolic references, you are just using the package's symbol-table hash
+(like C<%main::>) instead of a user-defined hash. The solution is to
+use your own hash or a real reference instead.
+
+    $USER_VARS{"fred"} = 23;
+    my $varname = "fred";
+    $USER_VARS{$varname}++;  # not $$varname++
+
+There we're using the %USER_VARS hash instead of symbolic references.
+Sometimes this comes up in reading strings from the user with variable
+references and wanting to expand them to the values of your perl
+program's variables. This is also a bad idea because it conflates the
+program-addressable namespace and the user-addressable one. Instead of
+reading a string and expanding it to the actual contents of your program's
+own variables:
+
+    $str = 'this has a $fred and $barney in it';
+    $str =~ s/(\$\w+)/$1/eeg;          # need double eval
+
+it would be better to keep a hash around like %USER_VARS and have
+variable references actually refer to entries in that hash:
+
+    $str =~ s/\$(\w+)/$USER_VARS{$1}/g;   # no /e here at all
+
+That's faster, cleaner, and safer than the previous approach. Of course,
+you don't need to use a dollar sign. You could use your own scheme to
+make it less confusing, like bracketed percent symbols, etc.
+
+    $str = 'this has a %fred% and %barney% in it';
+    $str =~ s/%(\w+)%/$USER_VARS{$1}/g;   # no /e here at all
+
+Another reason that folks sometimes think they want a variable to
+contain the name of a variable is that they don't know how to build
+proper data structures using hashes. For example, let's say they
+wanted two hashes in their program: %fred and %barney, and that they
+wanted to use another scalar variable to refer to those by name.
+
+    $name = "fred";
+    $$name{WIFE} = "wilma";     # set %fred
+
+    $name = "barney";
+    $$name{WIFE} = "betty";    # set %barney
+
+This is still a symbolic reference, and is still saddled with the
+problems enumerated above. It would be far better to write:
+
+    $folks{"fred"}{WIFE}   = "wilma";
+    $folks{"barney"}{WIFE} = "betty";
+
+And just use a multilevel hash to start with.
+
+The only times that you absolutely I<must> use symbolic references are
+when you really must refer to the symbol table. This may be because it's
+something that one can't take a real reference to, such as a format name.
+Doing so may also be important for method calls, since these always go
+through the symbol table for resolution.
+
+In those cases, you would turn off C<strict 'refs'> temporarily so you
+can play around with the symbol table. For example:
+
+    @colors = qw(red blue green yellow orange purple violet);
+    for my $name (@colors) {
+        no strict 'refs';  # renege for the block
+        *$name = sub { "<FONT COLOR='$name'>@_</FONT>" };
+    }
+
+All those functions (red(), blue(), green(), etc.) appear to be separate,
+but the real code in the closure actually was compiled only once.
+
+So, sometimes you might want to use symbolic references to manipulate
+the symbol table directly. This doesn't matter for formats, handles, and
+subroutines, because they are always global--you can't use my() on them.
+For scalars, arrays, and hashes, though--and usually for subroutines--
+you probably only want to use hard references.
+
+=head2 What does "bad interpreter" mean?
+
+(contributed by brian d foy)
+
+The "bad interpreter" message comes from the shell, not perl. The
+actual message may vary depending on your platform, shell, and locale
+settings.
+
+If you see "bad interpreter - no such file or directory", the first
+line in your perl script (the "shebang" line) does not contain the
+right path to perl (or any other program capable of running scripts).
+Sometimes this happens when you move the script from one machine to
+another and each machine has a different path to perl--/usr/bin/perl
+versus /usr/local/bin/perl for instance. It may also indicate
+that the source machine has CRLF line terminators and the
+destination machine has LF only: the shell tries to find
+/usr/bin/perl<CR>, but can't.
+
+If you see "bad interpreter: Permission denied", you need to make your
+script executable.
+
+In either case, you should still be able to run the scripts with perl
+explicitly:
+
+    % perl script.pl
+
+If you get a message like "perl: command not found", perl is not in
+your PATH, which might also mean that the location of perl is not
+where you expect it so you need to adjust your shebang line.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain. You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit. A simple comment in the code giving
+credit would be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq8.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq8.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq8.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1422 @@
+=head1 NAME
+
+perlfaq8 - System Interaction
+
+=head1 DESCRIPTION
+
+This section of the Perl FAQ covers questions involving operating
+system interaction. Topics include interprocess communication (IPC),
+control over the user-interface (keyboard, screen and pointing
+devices), and most anything else not related to data manipulation.
+
+Read the FAQs and documentation specific to the port of perl to your
+operating system (eg, L<perlvms>, L<perlplan9>, ...). These should
+contain more detailed information on the vagaries of your perl.
+
+=head2 How do I find out which operating system I'm running under?
+
+The C<$^O> variable (C<$OSNAME> if you use C<English>) contains an
+indication of the name of the operating system (not its release
+number) that your perl binary was built for.
+
+=head2 How come exec() doesn't return?
+X<exec> X<system> X<fork> X<open> X<pipe>
+
+(contributed by brian d foy)
+
+The C<exec> function's job is to turn your process into another
+command and never to return. If that's not what you want to do, don't
+use C<exec>. :)
+
+If you want to run an external command and still keep your Perl process
+going, look at a piped C<open>, C<fork>, or C<system>.
+
+=head2 How do I do fancy stuff with the keyboard/screen/mouse?
+
+How you access/control keyboards, screens, and pointing devices
+("mice") is system-dependent. Try the following modules:
+
+=over 4
+
+=item Keyboard
+
+    Term::Cap               Standard perl distribution
+    Term::ReadKey           CPAN
+    Term::ReadLine::Gnu     CPAN
+    Term::ReadLine::Perl    CPAN
+    Term::Screen            CPAN
+
+=item Screen
+
+    Term::Cap               Standard perl distribution
+    Curses                  CPAN
+    Term::ANSIColor         CPAN
+
+=item Mouse
+
+    Tk                      CPAN
+    Wx                      CPAN
+    Gtk2                    CPAN
+    Qt4                     kdebindings4 package
+
+=back
+
+Some of these specific cases are shown as examples in other answers
+in this section of the perlfaq.
+
+=head2 How do I print something out in color?
+
+In general, you don't, because you don't know whether
+the recipient has a color-aware display device. If you
+know that they have an ANSI terminal that understands
+color, you can use the L<Term::ANSIColor> module from CPAN:
+
+    use Term::ANSIColor;
+    print color("red"), "Stop!\n", color("reset");
+    print color("green"), "Go!\n", color("reset");
+
+Or like this:
+
+    use Term::ANSIColor qw(:constants);
+    print RED, "Stop!\n", RESET;
+    print GREEN, "Go!\n", RESET;
+
+=head2 How do I read just one key without waiting for a return key?
+
+Controlling input buffering is a remarkably system-dependent matter.
+On many systems, you can just use the B<stty> command as shown in
+L<perlfunc/getc>, but as you see, that's already getting you into
+portability snags.
+
+    open(TTY, "+</dev/tty") or die "no tty: $!";
+    system "stty  cbreak </dev/tty >/dev/tty 2>&1";
+    $key = getc(TTY);        # perhaps this works
+    # OR ELSE
+    sysread(TTY, $key, 1);    # probably this does
+    system "stty -cbreak </dev/tty >/dev/tty 2>&1";
+
+The L<Term::ReadKey> module from CPAN offers an easy-to-use interface that
+should be more efficient than shelling out to B<stty> for each key.
+It even includes limited support for Windows.
+
+    use Term::ReadKey;
+    ReadMode('cbreak');
+    $key = ReadKey(0);
+    ReadMode('normal');
+
+However, using the code requires that you have a working C compiler
+and can use it to build and install a CPAN module. Here's a solution
+using the standard L<POSIX> module, which is already on your system
+(assuming your system supports POSIX).
+
+    use HotKey;
+    $key = readkey();
+
+And here's the C<HotKey> module, which hides the somewhat mystifying calls
+to manipulate the POSIX termios structures.
+
+    # HotKey.pm
+    package HotKey;
+
+    use strict;
+    use warnings;
+
+    use parent 'Exporter';
+    our @EXPORT = qw(cbreak cooked readkey);
+
+    use POSIX qw(:termios_h);
+    my ($term, $oterm, $echo, $noecho, $fd_stdin);
+
+    $fd_stdin = fileno(STDIN);
+    $term     = POSIX::Termios->new();
+    $term->getattr($fd_stdin);
+    $oterm     = $term->getlflag();
+
+    $echo     = ECHO | ECHOK | ICANON;
+    $noecho   = $oterm & ~$echo;
+
+    sub cbreak {
+        $term->setlflag($noecho);  # ok, so i don't want echo either
+        $term->setcc(VTIME, 1);
+        $term->setattr($fd_stdin, TCSANOW);
+    }
+
+    sub cooked {
+        $term->setlflag($oterm);
+        $term->setcc(VTIME, 0);
+        $term->setattr($fd_stdin, TCSANOW);
+    }
+
+    sub readkey {
+        my $key = '';
+        cbreak();
+        sysread(STDIN, $key, 1);
+        cooked();
+        return $key;
+    }
+
+    END { cooked() }
+
+    1;
+
+=head2 How do I check whether input is ready on the keyboard?
+
+The easiest way to do this is to read a key in nonblocking mode with the
+L<Term::ReadKey> module from CPAN, passing it an argument of -1 to indicate
+not to block:
+
+    use Term::ReadKey;
+
+    ReadMode('cbreak');
+
+    if (defined (my $char = ReadKey(-1)) ) {
+        # input was waiting and it was $char
+    } else {
+        # no input was waiting
+    }
+
+    ReadMode('normal');                  # restore normal tty settings
+
+=head2 How do I clear the screen?
+
+(contributed by brian d foy)
+
+To clear the screen, you just have to print the special sequence
+that tells the terminal to clear the screen. Once you have that
+sequence, output it when you want to clear the screen.
+
+You can use the L<Term::ANSIScreen> module to get the special
+sequence. Import the C<cls> function (or the C<:screen> tag):
+
+    use Term::ANSIScreen qw(cls);
+    my $clear_screen = cls();
+
+    print $clear_screen;
+
+The L<Term::Cap> module can also get the special sequence if you want
+to deal with the low-level details of terminal control. The C<Tputs>
+method returns the string for the given capability:
+
+    use Term::Cap;
+
+    my $terminal = Term::Cap->Tgetent( { OSPEED => 9600 } );
+    my $clear_string = $terminal->Tputs('cl');
+
+    print $clear_screen;
+
+On Windows, you can use the L<Win32::Console> module. After creating
+an object for the output filehandle you want to affect, call the
+C<Cls> method:
+
+    Win32::Console;
+
+    my $OUT = Win32::Console->new(STD_OUTPUT_HANDLE);
+    my $clear_string = $OUT->Cls;
+
+    print $clear_screen;
+
+If you have a command-line program that does the job, you can call
+it in backticks to capture whatever it outputs so you can use it
+later:
+
+    my $clear_string = `clear`;
+
+    print $clear_string;
+
+=head2 How do I get the screen size?
+
+If you have L<Term::ReadKey> module installed from CPAN,
+you can use it to fetch the width and height in characters
+and in pixels:
+
+    use Term::ReadKey;
+    my ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize();
+
+This is more portable than the raw C<ioctl>, but not as
+illustrative:
+
+    require 'sys/ioctl.ph';
+    die "no TIOCGWINSZ " unless defined &TIOCGWINSZ;
+    open(my $tty_fh, "+</dev/tty")                     or die "No tty: $!";
+    unless (ioctl($tty_fh, &TIOCGWINSZ, $winsize='')) {
+        die sprintf "$0: ioctl TIOCGWINSZ (%08x: $!)\n", &TIOCGWINSZ;
+    }
+    my ($row, $col, $xpixel, $ypixel) = unpack('S4', $winsize);
+    print "(row,col) = ($row,$col)";
+    print "  (xpixel,ypixel) = ($xpixel,$ypixel)" if $xpixel || $ypixel;
+    print "\n";
+
+=head2 How do I ask the user for a password?
+
+(This question has nothing to do with the web. See a different
+FAQ for that.)
+
+There's an example of this in L<perlfunc/crypt>). First, you put the
+terminal into "no echo" mode, then just read the password normally.
+You may do this with an old-style C<ioctl()> function, POSIX terminal
+control (see L<POSIX> or its documentation the Camel Book), or a call
+to the B<stty> program, with varying degrees of portability.
+
+You can also do this for most systems using the L<Term::ReadKey> module
+from CPAN, which is easier to use and in theory more portable.
+
+    use Term::ReadKey;
+
+    ReadMode('noecho');
+    my $password = ReadLine(0);
+
+=head2 How do I read and write the serial port?
+
+This depends on which operating system your program is running on. In
+the case of Unix, the serial ports will be accessible through files in
+C</dev>; on other systems, device names will doubtless differ.
+Several problem areas common to all device interaction are the
+following:
+
+=over 4
+
+=item lockfiles
+
+Your system may use lockfiles to control multiple access. Make sure
+you follow the correct protocol. Unpredictable behavior can result
+from multiple processes reading from one device.
+
+=item open mode
+
+If you expect to use both read and write operations on the device,
+you'll have to open it for update (see L<perlfunc/"open"> for
+details). You may wish to open it without running the risk of
+blocking by using C<sysopen()> and C<O_RDWR|O_NDELAY|O_NOCTTY> from the
+L<Fcntl> module (part of the standard perl distribution). See
+L<perlfunc/"sysopen"> for more on this approach.
+
+=item end of line
+
+Some devices will be expecting a "\r" at the end of each line rather
+than a "\n". In some ports of perl, "\r" and "\n" are different from
+their usual (Unix) ASCII values of "\015" and "\012". You may have to
+give the numeric values you want directly, using octal ("\015"), hex
+("0x0D"), or as a control-character specification ("\cM").
+
+    print DEV "atv1\012";    # wrong, for some devices
+    print DEV "atv1\015";    # right, for some devices
+
+Even though with normal text files a "\n" will do the trick, there is
+still no unified scheme for terminating a line that is portable
+between Unix, DOS/Win, and Macintosh, except to terminate I<ALL> line
+ends with "\015\012", and strip what you don't need from the output.
+This applies especially to socket I/O and autoflushing, discussed
+next.
+
+=item flushing output
+
+If you expect characters to get to your device when you C<print()> them,
+you'll want to autoflush that filehandle. You can use C<select()>
+and the C<$|> variable to control autoflushing (see L<perlvar/$E<verbar>>
+and L<perlfunc/select>, or L<perlfaq5>, "How do I flush/unbuffer an
+output filehandle? Why must I do this?"):
+
+    my $old_handle = select($dev_fh);
+    $| = 1;
+    select($old_handle);
+
+You'll also see code that does this without a temporary variable, as in
+
+    select((select($deb_handle), $| = 1)[0]);
+
+Or if you don't mind pulling in a few thousand lines
+of code just because you're afraid of a little C<$|> variable:
+
+    use IO::Handle;
+    $dev_fh->autoflush(1);
+
+As mentioned in the previous item, this still doesn't work when using
+socket I/O between Unix and Macintosh. You'll need to hard code your
+line terminators, in that case.
+
+=item non-blocking input
+
+If you are doing a blocking C<read()> or C<sysread()>, you'll have to
+arrange for an alarm handler to provide a timeout (see
+L<perlfunc/alarm>). If you have a non-blocking open, you'll likely
+have a non-blocking read, which means you may have to use a 4-arg
+C<select()> to determine whether I/O is ready on that device (see
+L<perlfunc/"select">.
+
+=back
+
+While trying to read from his caller-id box, the notorious Jamie
+Zawinski C<< <jwz at netscape.com> >>, after much gnashing of teeth and
+fighting with C<sysread>, C<sysopen>, POSIX's C<tcgetattr> business,
+and various other functions that go bump in the night, finally came up
+with this:
+
+    sub open_modem {
+        use IPC::Open2;
+        my $stty = `/bin/stty -g`;
+        open2( \*MODEM_IN, \*MODEM_OUT, "cu -l$modem_device -s2400 2>&1");
+        # starting cu hoses /dev/tty's stty settings, even when it has
+        # been opened on a pipe...
+        system("/bin/stty $stty");
+        $_ = <MODEM_IN>;
+        chomp;
+        if ( !m/^Connected/ ) {
+            print STDERR "$0: cu printed `$_' instead of `Connected'\n";
+        }
+    }
+
+=head2 How do I decode encrypted password files?
+
+You spend lots and lots of money on dedicated hardware, but this is
+bound to get you talked about.
+
+Seriously, you can't if they are Unix password files--the Unix
+password system employs one-way encryption. It's more like hashing
+than encryption. The best you can do is check whether something else
+hashes to the same string. You can't turn a hash back into the
+original string. Programs like Crack can forcibly (and intelligently)
+try to guess passwords, but don't (can't) guarantee quick success.
+
+If you're worried about users selecting bad passwords, you should
+proactively check when they try to change their password (by modifying
+L<passwd(1)>, for example).
+
+=head2 How do I start a process in the background?
+
+(contributed by brian d foy)
+
+There's not a single way to run code in the background so you don't
+have to wait for it to finish before your program moves on to other
+tasks. Process management depends on your particular operating system,
+and many of the techniques are covered in L<perlipc>.
+
+Several CPAN modules may be able to help, including L<IPC::Open2> or
+L<IPC::Open3>, L<IPC::Run>, L<Parallel::Jobs>,
+L<Parallel::ForkManager>, L<POE>, L<Proc::Background>, and
+L<Win32::Process>. There are many other modules you might use, so
+check those namespaces for other options too.
+
+If you are on a Unix-like system, you might be able to get away with a
+system call where you put an C<&> on the end of the command:
+
+    system("cmd &")
+
+You can also try using C<fork>, as described in L<perlfunc> (although
+this is the same thing that many of the modules will do for you).
+
+=over 4
+
+=item STDIN, STDOUT, and STDERR are shared
+
+Both the main process and the backgrounded one (the "child" process)
+share the same STDIN, STDOUT and STDERR filehandles. If both try to
+access them at once, strange things can happen. You may want to close
+or reopen these for the child. You can get around this with
+C<open>ing a pipe (see L<perlfunc/"open">) but on some systems this
+means that the child process cannot outlive the parent.
+
+=item Signals
+
+You'll have to catch the SIGCHLD signal, and possibly SIGPIPE too.
+SIGCHLD is sent when the backgrounded process finishes. SIGPIPE is
+sent when you write to a filehandle whose child process has closed (an
+untrapped SIGPIPE can cause your program to silently die). This is
+not an issue with C<system("cmd&")>.
+
+=item Zombies
+
+You have to be prepared to "reap" the child process when it finishes.
+
+    $SIG{CHLD} = sub { wait };
+
+    $SIG{CHLD} = 'IGNORE';
+
+You can also use a double fork. You immediately C<wait()> for your
+first child, and the init daemon will C<wait()> for your grandchild once
+it exits.
+
+    unless ($pid = fork) {
+        unless (fork) {
+            exec "what you really wanna do";
+            die "exec failed!";
+        }
+        exit 0;
+    }
+    waitpid($pid, 0);
+
+See L<perlipc/"Signals"> for other examples of code to do this.
+Zombies are not an issue with C<system("prog &")>.
+
+=back
+
+=head2 How do I trap control characters/signals?
+
+You don't actually "trap" a control character. Instead, that character
+generates a signal which is sent to your terminal's currently
+foregrounded process group, which you then trap in your process.
+Signals are documented in L<perlipc/"Signals"> and the
+section on "Signals" in the Camel.
+
+You can set the values of the C<%SIG> hash to be the functions you want
+to handle the signal. After perl catches the signal, it looks in C<%SIG>
+for a key with the same name as the signal, then calls the subroutine
+value for that key.
+
+    # as an anonymous subroutine
+
+    $SIG{INT} = sub { syswrite(STDERR, "ouch\n", 5 ) };
+
+    # or a reference to a function
+
+    $SIG{INT} = \&ouch;
+
+    # or the name of the function as a string
+
+    $SIG{INT} = "ouch";
+
+Perl versions before 5.8 had in its C source code signal handlers which
+would catch the signal and possibly run a Perl function that you had set
+in C<%SIG>. This violated the rules of signal handling at that level
+causing perl to dump core. Since version 5.8.0, perl looks at C<%SIG>
+B<after> the signal has been caught, rather than while it is being caught.
+Previous versions of this answer were incorrect.
+
+=head2 How do I modify the shadow password file on a Unix system?
+
+If perl was installed correctly and your shadow library was written
+properly, the C<getpw*()> functions described in L<perlfunc> should in
+theory provide (read-only) access to entries in the shadow password
+file. To change the file, make a new shadow password file (the format
+varies from system to system--see L<passwd(1)> for specifics) and use
+C<pwd_mkdb(8)> to install it (see L<pwd_mkdb(8)> for more details).
+
+=head2 How do I set the time and date?
+
+Assuming you're running under sufficient permissions, you should be
+able to set the system-wide date and time by running the C<date(1)>
+program. (There is no way to set the time and date on a per-process
+basis.)  This mechanism will work for Unix, MS-DOS, Windows, and NT;
+the VMS equivalent is C<set time>.
+
+However, if all you want to do is change your time zone, you can
+probably get away with setting an environment variable:
+
+    $ENV{TZ} = "MST7MDT";           # Unixish
+    $ENV{'SYS$TIMEZONE_DIFFERENTIAL'}="-5" # vms
+    system('trn', 'comp.lang.perl.misc');
+
+=head2 How can I sleep() or alarm() for under a second?
+X<Time::HiRes> X<BSD::Itimer> X<sleep> X<select>
+
+If you want finer granularity than the 1 second that the C<sleep()>
+function provides, the easiest way is to use the C<select()> function as
+documented in L<perlfunc/"select">. Try the L<Time::HiRes> and
+the L<BSD::Itimer> modules (available from CPAN, and starting from
+Perl 5.8 L<Time::HiRes> is part of the standard distribution).
+
+=head2 How can I measure time under a second?
+X<Time::HiRes> X<BSD::Itimer> X<sleep> X<select>
+
+(contributed by brian d foy)
+
+The L<Time::HiRes> module (part of the standard distribution as of
+Perl 5.8) measures time with the C<gettimeofday()> system call, which
+returns the time in microseconds since the epoch. If you can't install
+L<Time::HiRes> for older Perls and you are on a Unixish system, you
+may be able to call C<gettimeofday(2)> directly. See
+L<perlfunc/syscall>.
+
+=head2 How can I do an atexit() or setjmp()/longjmp()? (Exception handling)
+
+You can use the C<END> block to simulate C<atexit()>. Each package's
+C<END> block is called when the program or thread ends. See the L<perlmod>
+manpage for more details about C<END> blocks.
+
+For example, you can use this to make sure your filter program managed
+to finish its output without filling up the disk:
+
+    END {
+        close(STDOUT) || die "stdout close failed: $!";
+    }
+
+The C<END> block isn't called when untrapped signals kill the program,
+though, so if you use C<END> blocks you should also use
+
+    use sigtrap qw(die normal-signals);
+
+Perl's exception-handling mechanism is its C<eval()> operator. You
+can use C<eval()> as C<setjmp> and C<die()> as C<longjmp>. For
+details of this, see the section on signals, especially the time-out
+handler for a blocking C<flock()> in L<perlipc/"Signals"> or the
+section on "Signals" in I<Programming Perl>.
+
+If exception handling is all you're interested in, use one of the
+many CPAN modules that handle exceptions, such as L<Try::Tiny>.
+
+If you want the C<atexit()> syntax (and an C<rmexit()> as well), try the
+C<AtExit> module available from CPAN.
+
+=head2 Why doesn't my sockets program work under System V (Solaris)? What does the error message "Protocol not supported" mean?
+
+Some Sys-V based systems, notably Solaris 2.X, redefined some of the
+standard socket constants. Since these were constant across all
+architectures, they were often hardwired into perl code. The proper
+way to deal with this is to "use Socket" to get the correct values.
+
+Note that even though SunOS and Solaris are binary compatible, these
+values are different. Go figure.
+
+=head2 How can I call my system's unique C functions from Perl?
+
+In most cases, you write an external module to do it--see the answer
+to "Where can I learn about linking C with Perl? [h2xs, xsubpp]".
+However, if the function is a system call, and your system supports
+C<syscall()>, you can use the C<syscall> function (documented in
+L<perlfunc>).
+
+Remember to check the modules that came with your distribution, and
+CPAN as well--someone may already have written a module to do it. On
+Windows, try L<Win32::API>. On Macs, try L<Mac::Carbon>. If no module
+has an interface to the C function, you can inline a bit of C in your
+Perl source with L<Inline::C>.
+
+=head2 Where do I get the include files to do ioctl() or syscall()?
+
+Historically, these would be generated by the L<h2ph> tool, part of the
+standard perl distribution. This program converts C<cpp(1)> directives
+in C header files to files containing subroutine definitions, like
+C<SYS_getitimer()>, which you can use as arguments to your functions.
+It doesn't work perfectly, but it usually gets most of the job done.
+Simple files like F<errno.h>, F<syscall.h>, and F<socket.h> were fine,
+but the hard ones like F<ioctl.h> nearly always need to be hand-edited.
+Here's how to install the *.ph files:
+
+    1. Become the super-user
+    2. cd /usr/include
+    3. h2ph *.h */*.h
+
+If your system supports dynamic loading, for reasons of portability and
+sanity you probably ought to use L<h2xs> (also part of the standard perl
+distribution). This tool converts C header files to Perl extensions.
+See L<perlxstut> for how to get started with L<h2xs>.
+
+If your system doesn't support dynamic loading, you still probably
+ought to use L<h2xs>. See L<perlxstut> and L<ExtUtils::MakeMaker> for
+more information (in brief, just use B<make perl> instead of a plain
+B<make> to rebuild perl with a new static extension).
+
+=head2 Why do setuid perl scripts complain about kernel problems?
+
+Some operating systems have bugs in the kernel that make setuid
+scripts inherently insecure. Perl gives you a number of options
+(described in L<perlsec>) to work around such systems.
+
+=head2 How can I open a pipe both to and from a command?
+
+The L<IPC::Open2> module (part of the standard perl distribution) is
+an easy-to-use approach that internally uses C<pipe()>, C<fork()>, and
+C<exec()> to do the job. Make sure you read the deadlock warnings in
+its documentation, though (see L<IPC::Open2>). See
+L<perlipc/"Bidirectional Communication with Another Process"> and
+L<perlipc/"Bidirectional Communication with Yourself">
+
+You may also use the L<IPC::Open3> module (part of the standard perl
+distribution), but be warned that it has a different order of
+arguments from L<IPC::Open2> (see L<IPC::Open3>).
+
+=head2 Why can't I get the output of a command with system()?
+
+You're confusing the purpose of C<system()> and backticks (``). C<system()>
+runs a command and returns exit status information (as a 16 bit value:
+the low 7 bits are the signal the process died from, if any, and
+the high 8 bits are the actual exit value). Backticks (``) run a
+command and return what it sent to STDOUT.
+
+    my $exit_status   = system("mail-users");
+    my $output_string = `ls`;
+
+=head2 How can I capture STDERR from an external command?
+
+There are three basic ways of running external commands:
+
+    system $cmd;        # using system()
+    my $output = `$cmd`;        # using backticks (``)
+    open (my $pipe_fh, "$cmd |");    # using open()
+
+With C<system()>, both STDOUT and STDERR will go the same place as the
+script's STDOUT and STDERR, unless the C<system()> command redirects them.
+Backticks and C<open()> read B<only> the STDOUT of your command.
+
+You can also use the C<open3()> function from L<IPC::Open3>. Benjamin
+Goldberg provides some sample code:
+
+To capture a program's STDOUT, but discard its STDERR:
+
+    use IPC::Open3;
+    use File::Spec;
+    use Symbol qw(gensym);
+    open(NULL, ">", File::Spec->devnull);
+    my $pid = open3(gensym, \*PH, ">&NULL", "cmd");
+    while( <PH> ) { }
+    waitpid($pid, 0);
+
+To capture a program's STDERR, but discard its STDOUT:
+
+    use IPC::Open3;
+    use File::Spec;
+    use Symbol qw(gensym);
+    open(NULL, ">", File::Spec->devnull);
+    my $pid = open3(gensym, ">&NULL", \*PH, "cmd");
+    while( <PH> ) { }
+    waitpid($pid, 0);
+
+To capture a program's STDERR, and let its STDOUT go to our own STDERR:
+
+    use IPC::Open3;
+    use Symbol qw(gensym);
+    my $pid = open3(gensym, ">&STDERR", \*PH, "cmd");
+    while( <PH> ) { }
+    waitpid($pid, 0);
+
+To read both a command's STDOUT and its STDERR separately, you can
+redirect them to temp files, let the command run, then read the temp
+files:
+
+    use IPC::Open3;
+    use Symbol qw(gensym);
+    use IO::File;
+    local *CATCHOUT = IO::File->new_tmpfile;
+    local *CATCHERR = IO::File->new_tmpfile;
+    my $pid = open3(gensym, ">&CATCHOUT", ">&CATCHERR", "cmd");
+    waitpid($pid, 0);
+    seek $_, 0, 0 for \*CATCHOUT, \*CATCHERR;
+    while( <CATCHOUT> ) {}
+    while( <CATCHERR> ) {}
+
+But there's no real need for B<both> to be tempfiles... the following
+should work just as well, without deadlocking:
+
+    use IPC::Open3;
+    use Symbol qw(gensym);
+    use IO::File;
+    local *CATCHERR = IO::File->new_tmpfile;
+    my $pid = open3(gensym, \*CATCHOUT, ">&CATCHERR", "cmd");
+    while( <CATCHOUT> ) {}
+    waitpid($pid, 0);
+    seek CATCHERR, 0, 0;
+    while( <CATCHERR> ) {}
+
+And it'll be faster, too, since we can begin processing the program's
+stdout immediately, rather than waiting for the program to finish.
+
+With any of these, you can change file descriptors before the call:
+
+    open(STDOUT, ">logfile");
+    system("ls");
+
+or you can use Bourne shell file-descriptor redirection:
+
+    $output = `$cmd 2>some_file`;
+    open (PIPE, "cmd 2>some_file |");
+
+You can also use file-descriptor redirection to make STDERR a
+duplicate of STDOUT:
+
+    $output = `$cmd 2>&1`;
+    open (PIPE, "cmd 2>&1 |");
+
+Note that you I<cannot> simply open STDERR to be a dup of STDOUT
+in your Perl program and avoid calling the shell to do the redirection.
+This doesn't work:
+
+    open(STDERR, ">&STDOUT");
+    $alloutput = `cmd args`;  # stderr still escapes
+
+This fails because the C<open()> makes STDERR go to where STDOUT was
+going at the time of the C<open()>. The backticks then make STDOUT go to
+a string, but don't change STDERR (which still goes to the old
+STDOUT).
+
+Note that you I<must> use Bourne shell (C<sh(1)>) redirection syntax in
+backticks, not C<csh(1)>!  Details on why Perl's C<system()> and backtick
+and pipe opens all use the Bourne shell are in the
+F<versus/csh.whynot> article in the "Far More Than You Ever Wanted To
+Know" collection in L<http://www.cpan.org/misc/olddoc/FMTEYEWTK.tgz> . To
+capture a command's STDERR and STDOUT together:
+
+    $output = `cmd 2>&1`;                       # either with backticks
+    $pid = open(PH, "cmd 2>&1 |");              # or with an open pipe
+    while (<PH>) { }                            #    plus a read
+
+To capture a command's STDOUT but discard its STDERR:
+
+    $output = `cmd 2>/dev/null`;                # either with backticks
+    $pid = open(PH, "cmd 2>/dev/null |");       # or with an open pipe
+    while (<PH>) { }                            #    plus a read
+
+To capture a command's STDERR but discard its STDOUT:
+
+    $output = `cmd 2>&1 1>/dev/null`;           # either with backticks
+    $pid = open(PH, "cmd 2>&1 1>/dev/null |");  # or with an open pipe
+    while (<PH>) { }                            #    plus a read
+
+To exchange a command's STDOUT and STDERR in order to capture the STDERR
+but leave its STDOUT to come out our old STDERR:
+
+    $output = `cmd 3>&1 1>&2 2>&3 3>&-`;        # either with backticks
+    $pid = open(PH, "cmd 3>&1 1>&2 2>&3 3>&-|");# or with an open pipe
+    while (<PH>) { }                            #    plus a read
+
+To read both a command's STDOUT and its STDERR separately, it's easiest
+to redirect them separately to files, and then read from those files
+when the program is done:
+
+    system("program args 1>program.stdout 2>program.stderr");
+
+Ordering is important in all these examples. That's because the shell
+processes file descriptor redirections in strictly left to right order.
+
+    system("prog args 1>tmpfile 2>&1");
+    system("prog args 2>&1 1>tmpfile");
+
+The first command sends both standard out and standard error to the
+temporary file. The second command sends only the old standard output
+there, and the old standard error shows up on the old standard out.
+
+=head2 Why doesn't open() return an error when a pipe open fails?
+
+If the second argument to a piped C<open()> contains shell
+metacharacters, perl C<fork()>s, then C<exec()>s a shell to decode the
+metacharacters and eventually run the desired program. If the program
+couldn't be run, it's the shell that gets the message, not Perl. All
+your Perl program can find out is whether the shell itself could be
+successfully started. You can still capture the shell's STDERR and
+check it for error messages. See L<"How can I capture STDERR from an
+external command?"> elsewhere in this document, or use the
+L<IPC::Open3> module.
+
+If there are no shell metacharacters in the argument of C<open()>, Perl
+runs the command directly, without using the shell, and can correctly
+report whether the command started.
+
+=head2 What's wrong with using backticks in a void context?
+
+Strictly speaking, nothing. Stylistically speaking, it's not a good
+way to write maintainable code. Perl has several operators for
+running external commands. Backticks are one; they collect the output
+from the command for use in your program. The C<system> function is
+another; it doesn't do this.
+
+Writing backticks in your program sends a clear message to the readers
+of your code that you wanted to collect the output of the command.
+Why send a clear message that isn't true?
+
+Consider this line:
+
+    `cat /etc/termcap`;
+
+You forgot to check C<$?> to see whether the program even ran
+correctly. Even if you wrote
+
+    print `cat /etc/termcap`;
+
+this code could and probably should be written as
+
+    system("cat /etc/termcap") == 0
+    or die "cat program failed!";
+
+which will echo the cat command's output as it is generated, instead
+of waiting until the program has completed to print it out. It also
+checks the return value.
+
+C<system> also provides direct control over whether shell wildcard
+processing may take place, whereas backticks do not.
+
+=head2 How can I call backticks without shell processing?
+
+This is a bit tricky. You can't simply write the command
+like this:
+
+    @ok = `grep @opts '$search_string' @filenames`;
+
+As of Perl 5.8.0, you can use C<open()> with multiple arguments.
+Just like the list forms of C<system()> and C<exec()>, no shell
+escapes happen.
+
+    open( GREP, "-|", 'grep', @opts, $search_string, @filenames );
+    chomp(@ok = <GREP>);
+    close GREP;
+
+You can also:
+
+    my @ok = ();
+    if (open(GREP, "-|")) {
+        while (<GREP>) {
+            chomp;
+            push(@ok, $_);
+        }
+        close GREP;
+    } else {
+        exec 'grep', @opts, $search_string, @filenames;
+    }
+
+Just as with C<system()>, no shell escapes happen when you C<exec()> a
+list. Further examples of this can be found in L<perlipc/"Safe Pipe
+Opens">.
+
+Note that if you're using Windows, no solution to this vexing issue is
+even possible. Even though Perl emulates C<fork()>, you'll still be
+stuck, because Windows does not have an argc/argv-style API.
+
+=head2 Why can't my script read from STDIN after I gave it EOF (^D on Unix, ^Z on MS-DOS)?
+
+This happens only if your perl is compiled to use stdio instead of
+perlio, which is the default. Some (maybe all?) stdios set error and
+eof flags that you may need to clear. The L<POSIX> module defines
+C<clearerr()> that you can use. That is the technically correct way to
+do it. Here are some less reliable workarounds:
+
+=over 4
+
+=item 1
+
+Try keeping around the seekpointer and go there, like this:
+
+    my $where = tell($log_fh);
+    seek($log_fh, $where, 0);
+
+=item 2
+
+If that doesn't work, try seeking to a different part of the file and
+then back.
+
+=item 3
+
+If that doesn't work, try seeking to a different part of
+the file, reading something, and then seeking back.
+
+=item 4
+
+If that doesn't work, give up on your stdio package and use sysread.
+
+=back
+
+=head2 How can I convert my shell script to perl?
+
+Learn Perl and rewrite it. Seriously, there's no simple converter.
+Things that are awkward to do in the shell are easy to do in Perl, and
+this very awkwardness is what would make a shell->perl converter
+nigh-on impossible to write. By rewriting it, you'll think about what
+you're really trying to do, and hopefully will escape the shell's
+pipeline datastream paradigm, which while convenient for some matters,
+causes many inefficiencies.
+
+=head2 Can I use perl to run a telnet or ftp session?
+
+Try the L<Net::FTP>, L<TCP::Client>, and L<Net::Telnet> modules
+(available from CPAN).
+L<http://www.cpan.org/scripts/netstuff/telnet.emul.shar> will also help
+for emulating the telnet protocol, but L<Net::Telnet> is quite
+probably easier to use.
+
+If all you want to do is pretend to be telnet but don't need
+the initial telnet handshaking, then the standard dual-process
+approach will suffice:
+
+    use IO::Socket;             # new in 5.004
+    my $handle = IO::Socket::INET->new('www.perl.com:80')
+        or die "can't connect to port 80 on www.perl.com $!";
+    $handle->autoflush(1);
+    if (fork()) {               # XXX: undef means failure
+        select($handle);
+        print while <STDIN>;    # everything from stdin to socket
+    } else {
+        print while <$handle>;  # everything from socket to stdout
+    }
+    close $handle;
+    exit;
+
+=head2 How can I write expect in Perl?
+
+Once upon a time, there was a library called F<chat2.pl> (part of the
+standard perl distribution), which never really got finished. If you
+find it somewhere, I<don't use it>. These days, your best bet is to
+look at the L<Expect> module available from CPAN, which also requires two
+other modules from CPAN, L<IO::Pty> and L<IO::Stty>.
+
+=head2 Is there a way to hide perl's command line from programs such as "ps"?
+
+First of all note that if you're doing this for security reasons (to
+avoid people seeing passwords, for example) then you should rewrite
+your program so that critical information is never given as an
+argument. Hiding the arguments won't make your program completely
+secure.
+
+To actually alter the visible command line, you can assign to the
+variable $0 as documented in L<perlvar>. This won't work on all
+operating systems, though. Daemon programs like sendmail place their
+state there, as in:
+
+    $0 = "orcus [accepting connections]";
+
+=head2 I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
+
+=over 4
+
+=item Unix
+
+In the strictest sense, it can't be done--the script executes as a
+different process from the shell it was started from. Changes to a
+process are not reflected in its parent--only in any children
+created after the change. There is shell magic that may allow you to
+fake it by C<eval()>ing the script's output in your shell; check out the
+comp.unix.questions FAQ for details.
+
+=back
+
+=head2 How do I close a process's filehandle without waiting for it to complete?
+
+Assuming your system supports such things, just send an appropriate signal
+to the process (see L<perlfunc/"kill">). It's common to first send a TERM
+signal, wait a little bit, and then send a KILL signal to finish it off.
+
+=head2 How do I fork a daemon process?
+
+If by daemon process you mean one that's detached (disassociated from
+its tty), then the following process is reported to work on most
+Unixish systems. Non-Unix users should check their Your_OS::Process
+module for other solutions.
+
+=over 4
+
+=item *
+
+Open /dev/tty and use the TIOCNOTTY ioctl on it. See L<tty(1)>
+for details. Or better yet, you can just use the C<POSIX::setsid()>
+function, so you don't have to worry about process groups.
+
+=item *
+
+Change directory to /
+
+=item *
+
+Reopen STDIN, STDOUT, and STDERR so they're not connected to the old
+tty.
+
+=item *
+
+Background yourself like this:
+
+    fork && exit;
+
+=back
+
+The L<Proc::Daemon> module, available from CPAN, provides a function to
+perform these actions for you.
+
+=head2 How do I find out if I'm running interactively or not?
+
+(contributed by brian d foy)
+
+This is a difficult question to answer, and the best answer is
+only a guess.
+
+What do you really want to know? If you merely want to know if one of
+your filehandles is connected to a terminal, you can try the C<-t>
+file test:
+
+    if( -t STDOUT ) {
+        print "I'm connected to a terminal!\n";
+    }
+
+However, you might be out of luck if you expect that means there is a
+real person on the other side. With the L<Expect> module, another
+program can pretend to be a person. The program might even come close
+to passing the Turing test.
+
+The L<IO::Interactive> module does the best it can to give you an
+answer. Its C<is_interactive> function returns an output filehandle;
+that filehandle points to standard output if the module thinks the
+session is interactive. Otherwise, the filehandle is a null handle
+that simply discards the output:
+
+    use IO::Interactive;
+
+    print { is_interactive } "I might go to standard output!\n";
+
+This still doesn't guarantee that a real person is answering your
+prompts or reading your output.
+
+If you want to know how to handle automated testing for your
+distribution, you can check the environment. The CPAN
+Testers, for instance, set the value of C<AUTOMATED_TESTING>:
+
+    unless( $ENV{AUTOMATED_TESTING} ) {
+        print "Hello interactive tester!\n";
+    }
+
+=head2 How do I timeout a slow event?
+
+Use the C<alarm()> function, probably in conjunction with a signal
+handler, as documented in L<perlipc/"Signals"> and the section on
+"Signals" in the Camel. You may instead use the more flexible
+L<Sys::AlarmCall> module available from CPAN.
+
+The C<alarm()> function is not implemented on all versions of Windows.
+Check the documentation for your specific version of Perl.
+
+=head2 How do I set CPU limits?
+X<BSD::Resource> X<limit> X<CPU>
+
+(contributed by Xho)
+
+Use the L<BSD::Resource> module from CPAN. As an example:
+
+    use BSD::Resource;
+    setrlimit(RLIMIT_CPU,10,20) or die $!;
+
+This sets the soft and hard limits to 10 and 20 seconds, respectively.
+After 10 seconds of time spent running on the CPU (not "wall" time),
+the process will be sent a signal (XCPU on some systems) which, if not
+trapped, will cause the process to terminate. If that signal is
+trapped, then after 10 more seconds (20 seconds in total) the process
+will be killed with a non-trappable signal.
+
+See the L<BSD::Resource> and your systems documentation for the gory
+details.
+
+=head2 How do I avoid zombies on a Unix system?
+
+Use the reaper code from L<perlipc/"Signals"> to call C<wait()> when a
+SIGCHLD is received, or else use the double-fork technique described
+in L<perlfaq8/"How do I start a process in the background?">.
+
+=head2 How do I use an SQL database?
+
+The L<DBI> module provides an abstract interface to most database
+servers and types, including Oracle, DB2, Sybase, mysql, Postgresql,
+ODBC, and flat files. The DBI module accesses each database type
+through a database driver, or DBD. You can see a complete list of
+available drivers on CPAN: L<http://www.cpan.org/modules/by-module/DBD/> .
+You can read more about DBI on L<http://dbi.perl.org/> .
+
+Other modules provide more specific access: L<Win32::ODBC>, L<Alzabo>,
+C<iodbc>, and others found on CPAN Search: L<http://search.cpan.org/> .
+
+=head2 How do I make a system() exit on control-C?
+
+You can't. You need to imitate the C<system()> call (see L<perlipc> for
+sample code) and then have a signal handler for the INT signal that
+passes the signal on to the subprocess. Or you can check for it:
+
+    $rc = system($cmd);
+    if ($rc & 127) { die "signal death" }
+
+=head2 How do I open a file without blocking?
+
+If you're lucky enough to be using a system that supports
+non-blocking reads (most Unixish systems do), you need only to use the
+C<O_NDELAY> or C<O_NONBLOCK> flag from the C<Fcntl> module in conjunction with
+C<sysopen()>:
+
+    use Fcntl;
+    sysopen(my $fh, "/foo/somefile", O_WRONLY|O_NDELAY|O_CREAT, 0644)
+        or die "can't open /foo/somefile: $!":
+
+=head2 How do I tell the difference between errors from the shell and perl?
+
+(answer contributed by brian d foy)
+
+When you run a Perl script, something else is running the script for you,
+and that something else may output error messages. The script might
+emit its own warnings and error messages. Most of the time you cannot
+tell who said what.
+
+You probably cannot fix the thing that runs perl, but you can change how
+perl outputs its warnings by defining a custom warning and die functions.
+
+Consider this script, which has an error you may not notice immediately.
+
+    #!/usr/locl/bin/perl
+
+    print "Hello World\n";
+
+I get an error when I run this from my shell (which happens to be
+bash). That may look like perl forgot it has a C<print()> function,
+but my shebang line is not the path to perl, so the shell runs the
+script, and I get the error.
+
+    $ ./test
+    ./test: line 3: print: command not found
+
+A quick and dirty fix involves a little bit of code, but this may be all
+you need to figure out the problem.
+
+    #!/usr/bin/perl -w
+
+    BEGIN {
+        $SIG{__WARN__} = sub{ print STDERR "Perl: ", @_; };
+        $SIG{__DIE__}  = sub{ print STDERR "Perl: ", @_; exit 1};
+    }
+
+    $a = 1 + undef;
+    $x / 0;
+    __END__
+
+The perl message comes out with "Perl" in front. The C<BEGIN> block
+works at compile time so all of the compilation errors and warnings
+get the "Perl:" prefix too.
+
+    Perl: Useless use of division (/) in void context at ./test line 9.
+    Perl: Name "main::a" used only once: possible typo at ./test line 8.
+    Perl: Name "main::x" used only once: possible typo at ./test line 9.
+    Perl: Use of uninitialized value in addition (+) at ./test line 8.
+    Perl: Use of uninitialized value in division (/) at ./test line 9.
+    Perl: Illegal division by zero at ./test line 9.
+    Perl: Illegal division by zero at -e line 3.
+
+If I don't see that "Perl:", it's not from perl.
+
+You could also just know all the perl errors, and although there are
+some people who may know all of them, you probably don't. However, they
+all should be in the L<perldiag> manpage. If you don't find the error in
+there, it probably isn't a perl error.
+
+Looking up every message is not the easiest way, so let perl to do it
+for you. Use the diagnostics pragma with turns perl's normal messages
+into longer discussions on the topic.
+
+    use diagnostics;
+
+If you don't get a paragraph or two of expanded discussion, it
+might not be perl's message.
+
+=head2 How do I install a module from CPAN?
+
+(contributed by brian d foy)
+
+The easiest way is to have a module also named CPAN do it for you by using
+the C<cpan> command that comes with Perl. You can give it a list of modules
+to install:
+
+    $ cpan IO::Interactive Getopt::Whatever
+
+If you prefer C<CPANPLUS>, it's just as easy:
+
+    $ cpanp i IO::Interactive Getopt::Whatever
+
+If you want to install a distribution from the current directory, you can
+tell C<CPAN.pm> to install C<.> (the full stop):
+
+    $ cpan .
+
+See the documentation for either of those commands to see what else
+you can do.
+
+If you want to try to install a distribution by yourself, resolving
+all dependencies on your own, you follow one of two possible build
+paths.
+
+For distributions that use I<Makefile.PL>:
+
+    $ perl Makefile.PL
+    $ make test install
+
+For distributions that use I<Build.PL>:
+
+    $ perl Build.PL
+    $ ./Build test
+    $ ./Build install
+
+Some distributions may need to link to libraries or other third-party
+code and their build and installation sequences may be more complicated.
+Check any I<README> or I<INSTALL> files that you may find.
+
+=head2 What's the difference between require and use?
+
+(contributed by brian d foy)
+
+Perl runs C<require> statement at run-time. Once Perl loads, compiles,
+and runs the file, it doesn't do anything else. The C<use> statement
+is the same as a C<require> run at compile-time, but Perl also calls the
+C<import> method for the loaded package. These two are the same:
+
+    use MODULE qw(import list);
+
+    BEGIN {
+        require MODULE;
+        MODULE->import(import list);
+    }
+
+However, you can suppress the C<import> by using an explicit, empty
+import list. Both of these still happen at compile-time:
+
+    use MODULE ();
+
+    BEGIN {
+        require MODULE;
+    }
+
+Since C<use> will also call the C<import> method, the actual value
+for C<MODULE> must be a bareword. That is, C<use> cannot load files
+by name, although C<require> can:
+
+    require "$ENV{HOME}/lib/Foo.pm"; # no @INC searching!
+
+See the entry for C<use> in L<perlfunc> for more details.
+
+=head2 How do I keep my own module/library directory?
+
+When you build modules, tell Perl where to install the modules.
+
+If you want to install modules for your own use, the easiest way might
+be L<local::lib>, which you can download from CPAN. It sets various
+installation settings for you, and uses those same settings within
+your programs.
+
+If you want more flexibility, you need to configure your CPAN client
+for your particular situation.
+
+For C<Makefile.PL>-based distributions, use the INSTALL_BASE option
+when generating Makefiles:
+
+    perl Makefile.PL INSTALL_BASE=/mydir/perl
+
+You can set this in your C<CPAN.pm> configuration so modules
+automatically install in your private library directory when you use
+the CPAN.pm shell:
+
+    % cpan
+    cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
+    cpan> o conf commit
+
+For C<Build.PL>-based distributions, use the --install_base option:
+
+    perl Build.PL --install_base /mydir/perl
+
+You can configure C<CPAN.pm> to automatically use this option too:
+
+    % cpan
+    cpan> o conf mbuild_arg "--install_base /mydir/perl"
+    cpan> o conf commit
+
+INSTALL_BASE tells these tools to put your modules into
+F</mydir/perl/lib/perl5>. See L<How do I add a directory to my
+include path (@INC) at runtime?> for details on how to run your newly
+installed modules.
+
+There is one caveat with INSTALL_BASE, though, since it acts
+differently from the PREFIX and LIB settings that older versions of
+L<ExtUtils::MakeMaker> advocated. INSTALL_BASE does not support
+installing modules for multiple versions of Perl or different
+architectures under the same directory. You should consider whether you
+really want that and, if you do, use the older PREFIX and LIB
+settings. See the L<ExtUtils::Makemaker> documentation for more details.
+
+=head2 How do I add the directory my program lives in to the module/library search path?
+
+(contributed by brian d foy)
+
+If you know the directory already, you can add it to C<@INC> as you would
+for any other directory. You might <use lib> if you know the directory
+at compile time:
+
+    use lib $directory;
+
+The trick in this task is to find the directory. Before your script does
+anything else (such as a C<chdir>), you can get the current working
+directory with the C<Cwd> module, which comes with Perl:
+
+    BEGIN {
+        use Cwd;
+        our $directory = cwd;
+    }
+
+    use lib $directory;
+
+You can do a similar thing with the value of C<$0>, which holds the
+script name. That might hold a relative path, but C<rel2abs> can turn
+it into an absolute path. Once you have the
+
+    BEGIN {
+        use File::Spec::Functions qw(rel2abs);
+        use File::Basename qw(dirname);
+
+        my $path   = rel2abs( $0 );
+        our $directory = dirname( $path );
+    }
+
+    use lib $directory;
+
+The L<FindBin> module, which comes with Perl, might work. It finds the
+directory of the currently running script and puts it in C<$Bin>, which
+you can then use to construct the right library path:
+
+    use FindBin qw($Bin);
+
+You can also use L<local::lib> to do much of the same thing. Install
+modules using L<local::lib>'s settings then use the module in your
+program:
+
+     use local::lib; # sets up a local lib at ~/perl5
+
+See the L<local::lib> documentation for more details.
+
+=head2 How do I add a directory to my include path (@INC) at runtime?
+
+Here are the suggested ways of modifying your include path, including
+environment variables, run-time switches, and in-code statements:
+
+=over 4
+
+=item the C<PERLLIB> environment variable
+
+    $ export PERLLIB=/path/to/my/dir
+    $ perl program.pl
+
+=item the C<PERL5LIB> environment variable
+
+    $ export PERL5LIB=/path/to/my/dir
+    $ perl program.pl
+
+=item the C<perl -Idir> command line flag
+
+    $ perl -I/path/to/my/dir program.pl
+
+=item the C<lib> pragma:
+
+    use lib "$ENV{HOME}/myown_perllib";
+
+=item the L<local::lib> module:
+
+    use local::lib;
+
+    use local::lib "~/myown_perllib";
+
+=back
+
+The last is particularly useful because it knows about machine-dependent
+architectures. The C<lib.pm> pragmatic module was first
+included with the 5.002 release of Perl.
+
+=head2 What is socket.ph and where do I get it?
+
+It's a Perl 4 style file defining values for system networking
+constants. Sometimes it is built using L<h2ph> when Perl is installed,
+but other times it is not. Modern programs should use C<use Socket;>
+instead.
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain. You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit. A simple comment in the code giving
+credit would be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlfaq9.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlfaq9.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlfaq9.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,426 @@
+=head1 NAME
+
+perlfaq9 - Web, Email and Networking
+
+=head1 DESCRIPTION
+
+This section deals with questions related to running web sites,
+sending and receiving email as well as general networking.
+
+=head2 Should I use a web framework?
+
+Yes. If you are building a web site with any level of interactivity
+(forms / users / databases), you
+will want to use a framework to make handling requests
+and responses easier.
+
+If there is no interactivity then you may still want
+to look at using something like L<Template Toolkit|https://metacpan.org/module/Template>
+or L<Plack::Middleware::TemplateToolkit>
+so maintenance of your HTML files (and other assets) is easier.
+
+=head2 Which web framework should I use?
+X<framework> X<CGI.pm> X<CGI> X<Catalyst> X<Dancer>
+
+There is no simple answer to this question. Perl frameworks can run everything
+from basic file servers and small scale intranets to massive multinational
+multilingual websites that are the core to international businesses.
+
+Below is a list of a few frameworks with comments which might help you in 
+making a decision, depending on your specific requirements. Start by reading
+the docs, then ask questions on the relevant mailing list or IRC channel.
+
+=over 4
+
+=item L<Catalyst>
+
+Strongly object-oriented and fully-featured with a long development history and
+a large community and addon ecosystem. It is excellent for large and complex
+applications, where you have full control over the server.
+
+=item L<Dancer>
+
+Young and free of legacy weight, providing a lightweight and easy to learn API.
+Has a growing addon ecosystem. It is best used for smaller projects and
+very easy to learn for beginners.
+
+=item L<Mojolicious>
+
+Fairly young with a focus on HTML5 and real-time web technologies such as
+WebSockets.
+
+=item L<Web::Simple>
+
+Currently experimental, strongly object-oriented, built for speed and intended
+as a toolkit for building micro web apps, custom frameworks or for tieing
+together existing Plack-compatible web applications with one central dispatcher.
+
+=back
+
+All of these interact with or use L<Plack> which is worth understanding
+the basics of when building a website in Perl (there is a lot of useful
+L<Plack::Middleware|https://metacpan.org/search?q=plack%3A%3Amiddleware>).
+
+=head2 What is Plack and PSGI?
+
+L<PSGI> is the Perl Web Server Gateway Interface Specification, it is
+a standard that many Perl web frameworks use, you should not need to
+understand it to build a web site, the part you might want to use is L<Plack>.
+
+L<Plack> is a set of tools for using the PSGI stack. It contains
+L<middleware|https://metacpan.org/search?q=plack%3A%3Amiddleware>
+components, a reference server and utilities for Web application frameworks.
+Plack is like Ruby's Rack or Python's Paste for WSGI.
+
+You could build a web site using L<Plack> and your own code,
+but for anything other than a very basic web site, using a web framework
+(that uses L<Plack>) is a better option.
+
+=head2 How do I remove HTML from a string?
+
+Use L<HTML::Strip>, or L<HTML::FormatText> which not only removes HTML
+but also attempts to do a little simple formatting of the resulting
+plain text.
+
+=head2 How do I extract URLs?
+
+L<HTML::SimpleLinkExtor> will extract URLs from HTML, it handles anchors,
+images, objects, frames, and many other tags that can contain a URL.
+If you need anything more complex, you can create your own subclass of
+L<HTML::LinkExtor> or L<HTML::Parser>. You might even use
+L<HTML::SimpleLinkExtor> as an example for something specifically
+suited to your needs.
+
+You can use L<URI::Find> to extract URLs from an arbitrary text document.
+
+=head2 How do I fetch an HTML file?
+
+(contributed by brian d foy)
+
+Use the libwww-perl distribution. The L<LWP::Simple> module can fetch web
+resources and give their content back to you as a string:
+
+    use LWP::Simple qw(get);
+
+    my $html = get( "http://www.example.com/index.html" );
+
+It can also store the resource directly in a file:
+
+    use LWP::Simple qw(getstore);
+
+    getstore( "http://www.example.com/index.html", "foo.html" );
+
+If you need to do something more complicated, you can use
+L<LWP::UserAgent> module to create your own user-agent (e.g. browser)
+to get the job done. If you want to simulate an interactive web
+browser, you can use the L<WWW::Mechanize> module.
+
+=head2 How do I automate an HTML form submission?
+
+If you are doing something complex, such as moving through many pages
+and forms or a web site, you can use L<WWW::Mechanize>. See its
+documentation for all the details.
+
+If you're submitting values using the GET method, create a URL and encode
+the form using the C<query_form> method:
+
+    use LWP::Simple;
+    use URI::URL;
+
+    my $url = url('L<http://www.perl.com/cgi-bin/cpan_mod')>;
+    $url->query_form(module => 'DB_File', readme => 1);
+    $content = get($url);
+
+If you're using the POST method, create your own user agent and encode
+the content appropriately.
+
+    use HTTP::Request::Common qw(POST);
+    use LWP::UserAgent;
+
+    my $ua = LWP::UserAgent->new();
+    my $req = POST 'L<http://www.perl.com/cgi-bin/cpan_mod'>,
+                   [ module => 'DB_File', readme => 1 ];
+    my $content = $ua->request($req)->as_string;
+
+=head2 How do I decode or create those %-encodings on the web?
+X<URI> X<URI::Escape> X<RFC 2396>
+
+Most of the time you should not need to do this as
+your web framework, or if you are making a request,
+the L<LWP> or other module would handle it for you.
+
+To encode a string yourself, use the L<URI::Escape> module. The C<uri_escape>
+function returns the escaped string:
+
+    my $original = "Colon : Hash # Percent %";
+
+    my $escaped = uri_escape( $original );
+
+    print "$escaped\n"; # 'Colon%20%3A%20Hash%20%23%20Percent%20%25'
+
+To decode the string, use the C<uri_unescape> function:
+
+    my $unescaped = uri_unescape( $escaped );
+
+    print $unescaped; # back to original
+
+Remember not to encode a full URI, you need to escape each
+component separately and then join them together.
+
+=head2 How do I redirect to another page?
+
+Most Perl Web Frameworks will have a mechanism for doing this,
+using the L<Catalyst> framework it would be:
+
+    $c->res->redirect($url);
+    $c->detach();
+
+If you are using Plack (which most frameworks do), then
+L<Plack::Middleware::Rewrite> is worth looking at if you
+are migrating from Apache or have URL's you want to always
+redirect.
+
+=head2 How do I put a password on my web pages?
+
+See if the web framework you are using has an
+authentication system and if that fits your needs.
+
+Alternativly look at L<Plack::Middleware::Auth::Basic>,
+or one of the other L<Plack authentication|https://metacpan.org/search?q=plack+auth>
+options.
+
+=head2 How do I make sure users can't enter values into a form that causes my CGI script to do bad things?
+
+(contributed by brian d foy)
+
+You can't prevent people from sending your script bad data. Even if
+you add some client-side checks, people may disable them or bypass
+them completely. For instance, someone might use a module such as
+L<LWP> to submit to your web site. If you want to prevent data that
+try to use SQL injection or other sorts of attacks (and you should
+want to), you have to not trust any data that enter your program.
+
+The L<perlsec> documentation has general advice about data security.
+If you are using the L<DBI> module, use placeholder to fill in data.
+If you are running external programs with C<system> or C<exec>, use
+the list forms. There are many other precautions that you should take,
+too many to list here, and most of them fall under the category of not
+using any data that you don't intend to use. Trust no one.
+
+=head2 How do I parse a mail header?
+
+Use the L<Email::MIME> module. It's well-tested and supports all the
+craziness that you'll see in the real world (comment-folding whitespace,
+encodings, comments, etc.).
+
+  use Email::MIME;
+
+  my $message = Email::MIME->new($rfc2822);
+  my $subject = $message->header('Subject');
+  my $from    = $message->header('From');
+
+If you've already got some other kind of email object, consider passing
+it to L<Email::Abstract> and then using its cast method to get an
+L<Email::MIME> object:
+
+  my $mail_message_object = read_message();
+  my $abstract = Email::Abstract->new($mail_message_object);
+  my $email_mime_object = $abstract->cast('Email::MIME');
+
+=head2 How do I check a valid mail address?
+
+(partly contributed by Aaron Sherman)
+
+This isn't as simple a question as it sounds. There are two parts:
+
+a) How do I verify that an email address is correctly formatted?
+
+b) How do I verify that an email address targets a valid recipient?
+
+Without sending mail to the address and seeing whether there's a human
+on the other end to answer you, you cannot fully answer part I<b>, but
+the L<Email::Valid> module will do both part I<a> and part I<b> as far
+as you can in real-time.
+
+Our best advice for verifying a person's mail address is to have them
+enter their address twice, just as you normally do to change a
+password. This usually weeds out typos. If both versions match, send
+mail to that address with a personal message. If you get the message
+back and they've followed your directions, you can be reasonably
+assured that it's real.
+
+A related strategy that's less open to forgery is to give them a PIN
+(personal ID number). Record the address and PIN (best that it be a
+random one) for later processing. In the mail you send, include a link to
+your site with the PIN included. If the mail bounces, you know it's not
+valid. If they don't click on the link, either they forged the address or
+(assuming they got the message) following through wasn't important so you
+don't need to worry about it.
+
+=head2 How do I decode a MIME/BASE64 string?
+
+The L<MIME::Base64> package handles this as well as the MIME/QP encoding.
+Decoding base 64 becomes as simple as:
+
+    use MIME::Base64;
+    my $decoded = decode_base64($encoded);
+
+The L<Email::MIME> module can decode base 64-encoded email message parts
+transparently so the developer doesn't need to worry about it.
+
+=head2 How do I find the user's mail address?
+
+Ask them for it. There are so many email providers available that it's
+unlikely the local system has any idea how to determine a user's email address.
+
+The exception is for organization-specific email (e.g. foo at yourcompany.com)
+where policy can be codified in your program. In that case, you could look at
+$ENV{USER}, $ENV{LOGNAME}, and getpwuid($<) in scalar context, like so:
+
+  my $user_name = getpwuid($<)
+
+But you still cannot make assumptions about whether this is correct, unless
+your policy says it is. You really are best off asking the user.
+
+=head2 How do I send email?
+
+Use the L<Email::MIME> and L<Email::Sender::Simple> modules, like so:
+
+  # first, create your message
+  my $message = Email::MIME->create(
+    header_str => [
+      From    => 'you at example.com',
+      To      => 'friend at example.com',
+      Subject => 'Happy birthday!',
+    ],
+    attributes => {
+      encoding => 'quoted-printable',
+      charset  => 'utf-8',
+    },
+    body_str => "Happy birthday to you!\n",
+  );
+
+  use Email::Sender::Simple qw(sendmail);
+  sendmail($message);
+
+By default, L<Email::Sender::Simple> will try `sendmail` first, if it exists
+in your $PATH. This generally isn't the case. If there's a remote mail
+server you use to send mail, consider investigating one of the Transport
+classes. At time of writing, the available transports include:
+
+=over 4
+
+=item L<Email::Sender::Transport::Sendmail>
+
+This is the default. If you can use the L<mail(1)> or L<mailx(1)>
+program to send mail from the machine where your code runs, you should
+be able to use this.
+
+=item L<Email::Sender::Transport::SMTP>
+
+This transport contacts a remote SMTP server over TCP. It optionally
+uses SSL and can authenticate to the server via SASL.
+
+=item L<Email::Sender::Transport::SMTP::TLS>
+
+This is like the SMTP transport, but uses TLS security. You can
+authenticate with this module as well, using any mechanisms your server
+supports after STARTTLS.
+
+=back
+
+Telling L<Email::Sender::Simple> to use your transport is straightforward.
+
+  sendmail(
+    $message,
+    {
+      transport => $email_sender_transport_object,
+    }
+  );
+
+=head2 How do I use MIME to make an attachment to a mail message?
+
+L<Email::MIME> directly supports multipart messages. L<Email::MIME>
+objects themselves are parts and can be attached to other L<Email::MIME>
+objects. Consult the L<Email::MIME> documentation for more information,
+including all of the supported methods and examples of their use.
+
+=head2 How do I read email?
+
+Use the L<Email::Folder> module, like so:
+
+  use Email::Folder;
+
+  my $folder = Email::Folder->new('/path/to/email/folder');
+  while(my $message = $folder->next_message) {
+    # next_message returns Email::Simple objects, but we want
+    # Email::MIME objects as they're more robust
+    my $mime = Email::MIME->new($message->as_string);
+  }
+
+There are different classes in the L<Email::Folder> namespace for
+supporting various mailbox types. Note that these modules are generally
+rather limited and only support B<reading> rather than writing.
+
+=head2 How do I find out my hostname, domainname, or IP address?
+X<hostname, domainname, IP address, host, domain, hostfqdn, inet_ntoa,
+gethostbyname, Socket, Net::Domain, Sys::Hostname>
+
+(contributed by brian d foy)
+
+The L<Net::Domain> module, which is part of the Standard Library starting
+in Perl 5.7.3, can get you the fully qualified domain name (FQDN), the host
+name, or the domain name.
+
+    use Net::Domain qw(hostname hostfqdn hostdomain);
+
+    my $host = hostfqdn();
+
+The L<Sys::Hostname> module, part of the Standard Library, can also get the
+hostname:
+
+    use Sys::Hostname;
+
+    $host = hostname();
+
+
+The L<Sys::Hostname::Long> module takes a different approach and tries
+harder to return the fully qualified hostname:
+
+  use Sys::Hostname::Long 'hostname_long';
+
+  my $hostname = hostname_long();
+
+To get the IP address, you can use the C<gethostbyname> built-in function
+to turn the name into a number. To turn that number into the dotted octet
+form (a.b.c.d) that most people expect, use the C<inet_ntoa> function
+from the L<Socket> module, which also comes with perl.
+
+    use Socket;
+
+    my $address = inet_ntoa(
+        scalar gethostbyname( $host || 'localhost' )
+    );
+
+=head2 How do I fetch/put an (S)FTP file?
+
+L<Net::FTP>, and L<Net::SFTP> allow you to interact with FTP and SFTP (Secure
+FTP) servers.
+
+=head2 How can I do RPC in Perl?
+
+Use one of the RPC modules( L<https://metacpan.org/search?q=RPC> ).
+
+=head1 AUTHOR AND COPYRIGHT
+
+Copyright (c) 1997-2010 Tom Christiansen, Nathan Torkington, and
+other authors as noted. All rights reserved.
+
+This documentation is free; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+Irrespective of its distribution, all code examples in this file
+are hereby placed into the public domain. You are permitted and
+encouraged to use this code in your own programs for fun
+or for profit as you see fit. A simple comment in the code giving
+credit would be courteous but is not required.

Added: vendor/perl/dist/cpan/perlfaq/lib/perlglossary.pod
===================================================================
--- vendor/perl/dist/cpan/perlfaq/lib/perlglossary.pod	                        (rev 0)
+++ vendor/perl/dist/cpan/perlfaq/lib/perlglossary.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3786 @@
+
+=encoding utf8
+
+=head1 NAME
+
+perlglossary - Perl Glossary
+
+=head1 DESCRIPTION
+
+A glossary of terms (technical and otherwise) used in the Perl
+documentation, derived from the Glossary of I<Programming
+Perl>, Fourth Edition.  Words or phrases in bold are defined elsewhere in
+this glossary.
+
+Other useful sources include the Unicode Glossary L<http://unicode.org/glossary/>,
+the Free On-Line Dictionary of Computing L<http://foldoc.org/>,
+the Jargon File L<http://catb.org/~esr/jargon/>,
+and Wikipedia L<http://www.wikipedia.org/>.
+
+=head2 A
+
+=over 4
+
+=item accessor methods
+
+A B<X<accessor methods, defined>X<methods, accessor>method> used to
+indirectly inspect or update an B<object>’s state (its B<instance
+variables>).
+
+=item actual arguments
+
+The B<X<actual arguments>X<arguments, actual>scalar values> that you supply
+to a B<function> or B<subroutine> when you call it. For instance, when you
+call C<power("puff")>, the string C<"puff"> is the actual argument. See also
+B<argument> and B<formal arguments>.
+
+=item address operator
+
+Some X<address operator>languages work directly with the memory addresses of
+values, but this can be like playing with fire. Perl provides a set of
+asbestos gloves for handling all memory management. The closest to an
+address operator in Perl is the backslash operator, but it gives you a
+B<hard reference>, which is much safer than a memory address.
+
+=item algorithm
+
+A X<algorithms (term)>well-defined sequence of steps, explained clearly
+enough that even a computer could do them.
+
+=item alias
+
+A X<aliases, defined>nickname for something, which behaves in all ways as
+though you’d used the original name instead of the nickname. Temporary
+aliases are implicitly created in the loop variable for C<foreach> loops, in
+the C<$_> variable for C<map> or C<grep> operators, in C<$a> and C<$b>
+during C<sort>’s comparison function, and in each element of C<@_> for the
+B<actual arguments> of a subroutine call. Permanent aliases are explicitly
+created in B<packages> by B<importing> symbols or by assignment to
+B<typeglobs>. Lexically scoped aliases for package variables are explicitly
+created by the C<our> declaration.
+
+=item alphabetic
+
+The X<alphabetic sort>sort of characters we put into words. In Unicode, this
+is all letters including all ideographs and certain diacritics, letter
+numbers like Roman numerals, and various combining marks.
+
+=item alternatives
+
+A X<alternative characters>list of possible choices from which you may
+select only one, as in, “Would you like door A, B, or C?” Alternatives in
+regular expressions are separated with a single vertical bar: C<|>.
+Alternatives in normal Perl expressions are separated with a double vertical
+bar: C<||>. Logical alternatives in B<Boolean> expressions are separated
+with either C<||> or C<or>.
+
+=item anonymous
+
+Used to X<anonymous referents>X<referents, anonymous>describe a B<referent>
+that is not directly accessible through a named B<variable>. Such a referent
+must be indirectly accessible through at least one B<hard reference>. When
+the last hard reference goes away, the anonymous referent is destroyed
+without pity.
+
+=item application
+
+A X<applications (term)>bigger, fancier sort of B<program> with a fancier
+name so people don’t realize they are using a program.
+
+=item architecture
+
+The kind of X<architecture>computer you’re working on, where one “kind of
+computer” means all those computers sharing a compatible machine language.
+Since Perl programs are (typically) simple text files, not executable
+images, a Perl program is much less sensitive to the architecture it’s
+running on than programs in other languages, such as C, that are B<compiled>
+into machine code. See also B<platform> and B<operating system>.
+
+=item argument
+
+A X<arguments, defined>piece of data supplied to a B<program>,
+B<subroutine>, B<function>, or B<method> to tell it what it’s supposed to
+do. Also called a “parameter”.
+
+=item ARGV
+
+The name of the X<ARGV filehandle>array containing the B<argument> B<vector>
+from the command line. If you use the empty C<E<lt>E<gt>> operator, C<ARGV>
+is the name of both the B<filehandle> used to traverse the arguments and the
+B<scalar> containing the name of the current input file.
+
+=item arithmetical operator
+
+A B<X<arithmetic operators, about>symbol> such as C<+> or C</> that tells
+Perl to do the arithmetic you were supposed to learn in grade school.
+
+=item array
+
+An X<arrays, defined>ordered sequence of B<values>, stored such that you can
+easily access any of the values using an I<integer subscript> that specifies
+the value’s B<offset> in the sequence.
+
+=item array context
+
+An archaic X<array context>expression for what is more correctly referred to
+as B<list context>.
+
+=item Artistic License
+
+The open X<Artistic License>source license that X<Wall, Larry>Larry Wall
+created for Perl, maximizing Perl’s usefulness, availability, and
+modifiability. The current version is 2. (L<http://www.opensource.org/licenses/artistic-license.php>).
+
+=item ASCII
+
+The X<ASCII (American Standard Code for Information Interchange)>X<American
+Standard Code for Information Interchange (ASCII)>American Standard Code for
+Information Interchange (a 7-bit character set adequate only for poorly
+representing English text). Often used loosely to describe the lowest 128
+values of the various ISO-8859-X character sets, a bunch of mutually
+incompatible 8-bit codes best described as half ASCII. See also B<Unicode>.
+
+=item assertion
+
+A X<assertions (in regexes), defined>X<regular expressions, assertions
+in>component of a B<regular expression> that must be true for the pattern to
+match but does not necessarily match any characters itself. Often used
+specifically to mean a B<zero-width> assertion.
+
+=item assignment
+
+An X<assignments, defined>B<operator> whose assigned mission in life is to
+change the value of a B<variable>.
+
+=item assignment operator
+
+Either a X<assignment operators, about>regular B<assignment> or a compound
+B<operator> composed of an ordinary assignment and some other operator, that
+changes the value of a variable in place; that is, relative to its old
+value. For example, C<$a += 2> adds C<2> to C<$a>.
+
+=item associative array
+
+See B<hash>. X<associative arrays>Please. The term associative array is the
+old Perl 4 term for a B<hash>. Some languages call it a dictionary.
+
+=item associativity
+
+Determines X<associativity>whether you do the left B<operator> first or the
+right B<operator> first when you have “A B<operator> B B<operator> C”, and
+the two operators are of the same precedence. Operators like C<+> are left
+associative, while operators like C<**> are right associative. See Camel
+chapter 3, “Unary and Binary Operators” for a list of operators and their
+associativity.
+
+=item asynchronous
+
+Said of X<asynchronous event processing>events or activities whose relative
+temporal ordering is indeterminate because too many things are going on at
+once. Hence, an asynchronous event is one you didn’t know when to expect.
+
+=item atom
+
+A B<regular X<atoms>expression> component potentially matching a
+B<substring> containing one or more characters and treated as an indivisible
+syntactic unit by any following B<quantifier>. (Contrast with an
+B<assertion> that matches something of B<zero width> and may not be quantified.)
+
+=item atomic operation
+
+When X<atomic operation>Democritus gave the word “atom” to the indivisible
+bits of matter, he meant literally something that could not be cut: I<ἀ->
+(not) + I<-τομος> (cuttable). An atomic operation is an action that can’t be
+interrupted, not one forbidden in a nuclear-free zone.
+
+=item attribute
+
+A new X<attribute feature>feature that allows the declaration of
+B<variables> and B<subroutines> with modifiers, as in C<sub foo : locked
+method>. Also another name for an B<instance variable> of an B<object>.
+
+=item autogeneration
+
+A X<autogeneration, about>feature of B<operator overloading> of B<objects>,
+whereby the behavior of certain B<operators> can be reasonably deduced using
+more fundamental operators. This assumes that the overloaded operators will
+often have the same relationships as the regular operators. See Camel
+chapter 13, “Overloading”.
+
+=item autoincrement
+
+To X<autoincrement (term)>add one to something automatically, hence the name
+of the C<++> operator. To instead subtract one from something automatically
+is known as an “autodecrement”.
+
+=item autoload
+
+To X<autoloading, defined>load on demand. (Also called “lazy” loading.)
+Specifically, to call an C<AUTOLOAD> subroutine on behalf of an undefined
+subroutine.
+
+=item autosplit
+
+To X<autosplit (term)>split a string automatically, as the I<–a> B<switch>
+does when running under I<–p> or I<–n> in order to emulate B<awk>. (See also
+the C<AutoSplit>X<AutoSplit module> module, which has nothing to do with the
+C<–a> switch but a lot to do with autoloading.)
+
+=item autovivification
+
+A X<autovivification>Graeco-Roman word meaning “to bring oneself to life”.
+In Perl, storage locations (B<lvalues>) spontaneously generate themselves as
+needed, including the creation of any B<hard reference> values to point to
+the next level of storage. The assignment C<$a[5][5][5][5][5] = "quintet">
+potentially creates five scalar storage locations, plus four references (in
+the first four scalar locations) pointing to four new anonymous arrays (to
+hold the last four scalar locations). But the point of autovivification is
+that you don’t have to worry about it.
+
+=item AV
+
+Short X<AV (array value)>X<array value (AV)>X<values, array>for “array
+value”, which refers to one of Perl’s internal data types that holds an
+B<array>. The C<AV> type is a subclass of B<SV>.
+
+=item awk
+
+Descriptive X<awk (editing term)>editing term—short for “awkward”. Also
+coincidentally refers to a venerable text-processing language from which
+Perl derived some of its high-level ideas.
+
+=back
+
+=head2 B
+
+=over 4
+
+=item backreference
+
+A X<backreferences, about>X<references, backreferences>substring B<captured>
+by a subpattern within unadorned parentheses in a B<regex>. Backslashed
+decimal numbers (C<\1>, C<\2>, etc.) later in the same pattern refer back to
+the corresponding subpattern in the current match. Outside the pattern, the
+numbered variables (C<$1>, C<$2>, etc.) continue to refer to these same
+values, as long as the pattern was the last successful match of the current
+B<dynamic scope>.
+
+=item backtracking
+
+The X<backtracking>practice of saying, “If I had to do it all over, I’d do
+it differently,” and then actually going back and doing it all over
+differently. Mathematically speaking, it’s returning from an unsuccessful
+recursion on a tree of possibilities. Perl backtracks when it attempts to
+match patterns with a B<regular expression>, and its earlier attempts don’t
+pan out. See the section “The Little Engine That /Couldn(n’t)” in Camel
+chapter 5, “Pattern Matching”.
+
+=item backward compatibility
+
+Means X<backward compatibility, defined>you can still run your old program
+because we didn’t break any of the features or bugs it was relying on.
+
+=item bareword
+
+A word X<barewords, about>sufficiently ambiguous to be deemed illegal under
+C<use strict 'subs'>. In the absence of that stricture, a bareword is
+treated as if quotes were around it.
+
+=item base class
+
+A X<base classes>X<classes, base>generic B<object> type; that is, a B<class>
+from which other, more specific classes are derived genetically by
+B<inheritance>. Also called aX<superclasses>X<classes, superclasses>
+“superclass” by people who respect their ancestors.
+
+=item big-endian
+
+From X<big–endian, defined>X<endianness, big–endian>Swift: someone who
+eats eggs big end first. Also used of computers that store the most
+significant B<byte> of a word at a lower byte address than the least
+significant byte. Often considered superior to little-endian machines. See
+also B<little-endian>.
+
+=item binary
+
+Having X<binary (term)>to do with numbers represented in base 2. That means
+there’s basically two numbers: 0 and 1. Also used to describe a file of
+“nontext”, presumably because such a file makes full use of all the binary
+bits in its bytes. With the advent of B<Unicode>, this distinction, already
+suspect, loses even more of its meaning.
+
+=item binary operator
+
+An B<X<binary operators, about>operator> that takes two B<operands>.
+
+=item bind
+
+To X<bind (term)>assign a specific B<network address> to a B<socket>.
+
+=item bit
+
+An X<bits, defined>integer in the range from 0 to 1, inclusive. The smallest
+possible unit of information storage. An eighth of a B<byte> or of a dollar.
+(The term “Pieces of Eight” comes from being able to split the old Spanish
+dollar into 8 bits, each of which still counted for money. That’s why a 25-
+cent piece today is still “two bits”.)
+
+=item bit shift
+
+The X<bit–shift operators, defined>movement of bits left or right in a
+computer word, which has the effect of multiplying or dividing by a
+power of 2.
+
+=item bit string
+
+A X<bit string>sequence of B<bits> that is actually being thought of as a
+sequence of bits, for once.
+
+=item bless
+
+In X<bless function, about>X<bless (term)>corporate life, to grant official
+approval to a thing, as in, “The VP of Engineering has blessed our
+WebCruncher project.” Similarly, in Perl, to grant official approval to a
+B<referent> so that it can function as an B<object>, such as a WebCruncher
+object. See the C<bless> function in Camel chapter 27, “Functions”.
+
+=item block
+
+What X<blocks, defined>a B<process> does when it has to wait for something:
+“My process blocked waiting for the disk.” As an unrelated noun, it refers
+to a large chunk of data, of a size that the B<operating system> likes to
+deal with (normally a power of 2 such as 512 or 8192). Typically refers to
+a chunk of data that’s coming from or going to a disk file.
+
+=item BLOCK
+
+A X<BLOCK construct, about>X<constructs, BLOCK>syntactic construct
+consisting of a sequence of Perl B<statements> that is delimited by braces.
+The C<if> and C<while> statements are defined in terms of I<C<BLOCK>>s, for
+instance. Sometimes we also say “block” to mean a lexical scope; that is, a
+sequence of statements that acts like a I<C<BLOCK>>, such as within an
+C<eval> or a file, even though the statements aren’t delimited by braces.
+
+=item block buffering
+
+A X<block buffering>X<buffering, block>method of making input and output
+efficient by passing one B<block> at a time. By default, Perl does block
+buffering to disk files. See B<buffer> and B<command buffering>.
+
+=item Boolean
+
+A X<Boolean values>X<values, Boolean>value that is either B<true> or
+B<false>.
+
+=item Boolean context
+
+A X<Boolean context, about>X<context, Boolean>special kind of B<scalar
+context> used in conditionals to decide whether the B<scalar value> returned
+by an expression is B<true> or B<false>. Does not evaluate as either a
+string or a number. See B<context>.
+
+=item breakpoint
+
+A X<breakpoints, defined>spot in your program where you’ve told the debugger
+to stop B<execution> so you can poke around and see whether anything is
+wrong yet.
+
+=item broadcast
+
+To X<broadcast (networking term)>send a B<datagram> to multiple destinations
+simultaneously.
+
+=item BSD
+
+A X<BSD (Berkeley Standard Distribution)>X<Berkeley Standard Distribution
+(BSD)>psychoactive drug, popular in the ’80s, probably developed at UC
+Berkeley or thereabouts. Similar in many ways to the prescription-only
+medication called “System V”, but infinitely more useful. (Or, at least,
+more fun.) The full chemical name is “Berkeley Standard Distribution”.
+
+=item bucket
+
+A X<buckets (term)>location in a B<hash table> containing (potentially)
+multiple entries whose keys “hash” to the same hash value according to its
+hash function. (As internal policy, you don’t have to worry about it unless
+you’re into internals, or policy.)
+
+=item buffer
+
+A X<buffers, defined>temporary holding location for data. Data that are
+B<Block buffering> means that the data is passed on to its destination
+whenever the buffer is full. B<Line buffering> means that it’s passed on
+whenever a complete line is received. B<Command buffering> means that it’s
+passed every time you do a C<print> command (or equivalent). If your output
+is unbuffered, the system processes it one byte at a time without the use of
+a holding area. This can be rather inefficient.
+
+=item built-in
+
+A B<X<built–in functions, about>function> that is predefined in the
+language. Even when hidden by B<overriding>, you can always get at a built-
+in function by B<qualifying> its name with the C<CORE::> pseudopackage.
+
+=item bundle
+
+A X<bundles (term)>group of related modules on B<CPAN>. (Also sometimes
+refers to a group of command-line switches grouped into one B<switch
+cluster>.)
+
+=item byte
+
+A X<bytes (term)>piece of data worth eight B<bits> in most places.
+
+=item bytecode
+
+A pidgin-like lingo spoken among ’droids when they don’t wish to reveal
+their orientation (see B<endian>). Named after some similar languages spoken
+(for similar reasons) between compilers and interpreters in the late 20ᵗʰ
+century. These languages are characterized by representing everything as a
+nonarchitecture-dependent sequence of bytes.
+
+=back
+
+=head2 C
+
+=over 4
+
+=item C
+
+A X<C language, about>language beloved by many for its inside-out B<type>
+definitions, inscrutable B<precedence> rules, and heavy B<overloading> of
+the function-call mechanism. (Well, actually, people first switched to C
+because they found lowercase identifiers easier to read than upper.) Perl is
+written in C, so it’s not surprising that Perl borrowed a few ideas from it.
+
+=item cache
+
+A X<cache (term)>data repository. Instead of computing expensive answers
+several times, compute it once and save the result.
+
+=item callback
+
+A B<X<callbacks>handler> that you register with some other part of your
+program in the hope that the other part of your program will B<trigger> your
+handler when some event of interest transpires.
+
+=item call by reference
+
+An B<argument>-passing X<call by reference>X<references, call by reference
+mechanism>mechanism in which the B<formal arguments> refer directly to the
+B<actual arguments>, and the B<subroutine> can change the actual arguments
+by changing the formal arguments. That is, the formal argument is an
+B<alias> for the actual argument. See also B<call by value>.
+
+=item call by value
+
+An B<X<call by value>argument>-passing mechanism in which the B<formal
+arguments> refer to a copy of the B<actual arguments>, and the
+B<subroutine> cannot change the actual arguments by changing the formal
+arguments. See also B<call by reference>.
+
+=item canonical
+
+Reduced X<canonical (term)>to a standard form to facilitate comparison.
+
+=item capture variables
+
+The X<capture variables>X<variables, capture>variables—such as C<$1> and
+C<$2>, and C<%+> and C<%– >—that hold the text remembered in a pattern
+match. See Camel chapter 5, “Pattern Matching”.
+
+=item capturing
+
+The X<capturing in pattern matching>X<subpatterns, capturing>X<pattern
+matching, capturing in>use of parentheses around a B<subpattern> in a
+B<regular expression> to store the matched B<substring> as a
+B<backreference>. (Captured strings are also returned as a list in B<list
+context>.) See Camel chapter 5, “Pattern Matching”.
+
+=item cargo cult
+
+Copying X<cargo cult>and pasting code without understanding it, while
+superstitiously believing in its value. This term originated from
+preindustrial cultures dealing with the detritus of explorers and colonizers
+of technologically advanced cultures. See I<The Gods Must Be Crazy>.
+
+=item case
+
+A X<case (character)>X<characters, case considerations>property of certain
+characters. Originally, typesetter stored capital letters in the upper of
+two cases and small letters in the lower one. Unicode recognizes three
+cases: B<lowercase> (B<character property> C<\p{lower}>), B<titlecase>
+(C<\p{title}>), and B<uppercase> (C<\p{upper}>). A fourth casemapping called
+B<foldcase> is not itself a distinct case, but it is used internally to
+implement B<casefolding>. Not all letters have case, and some nonletters
+have case.
+
+=item casefolding
+
+Comparing X<casefolding>or matching a string case-insensitively. In Perl, it
+is implemented with the C</i> pattern modifier, the C<fc> function, and the
+C<\F> double-quote translation escape.
+
+=item casemapping
+
+The X<casemapping>process of converting a string to one of the four Unicode
+B<casemaps>; in Perl, it is implemented with the C<fc>, C<lc>, C<ucfirst>,
+and C<uc> functions.
+
+=item character
+
+The X<characters, defined>smallest individual element of a string. Computers
+store characters as integers, but Perl lets you operate on them as text. The
+integer used to represent a particular character is called that character’s
+B<codepoint>.
+
+=item character class
+
+A X<character classes, about>X<classes, character>square-bracketed list of
+characters used in a B<regular expression> to indicate that any character
+of the set may occur at a given point. Loosely, any predefined set of
+characters so used.
+
+=item character property
+
+A X<character property>predefined B<character class> matchable by the C<\p>
+or C<\P> B<metasymbol>. B<Unicode> defines hundreds of standard properties
+for every possible codepoint, and Perl defines a few of its own, too.
+
+=item circumfix operator
+
+An X<circumfix operator>B<operator> that surrounds its B<operand>, like the
+angle operator, or parentheses, or a hug.
+
+=item class
+
+A X<classes, defined>user-defined B<type>, implemented in Perl via a
+B<package> that provides (either directly or by inheritance) B<methods>
+(that is, B<subroutines>) to handle B<instances> of the class (its
+B<objects>). See also B<inheritance>.
+
+=item class method
+
+A B<X<class methods>X<methods, class>method> whose B<invocant> is a
+B<package> name, not an B<object> reference. A method associated with the
+class as a whole. Also see B<instance method>.
+
+=item client
+
+In X<clients, defined>X<processes, client>networking, a B<process> that
+initiates contact with a B<server> process in order to exchange data and
+perhaps receive a service.
+
+=item closure
+
+An B<X<closure subroutines>X<subroutines, closure>anonymous> subroutine
+that, when a reference to it is generated at runtime, keeps track of the
+identities of externally visible B<lexical variables>, even after those
+lexical variables have supposedly gone out of B<scope>. They’re called
+“closures” because this sort of behavior gives mathematicians a sense of
+closure.
+
+=item cluster
+
+A X<clusters, defined>X<subpatterns, cluster>parenthesized B<subpattern>
+used to group parts of a B<regular expression> into a single B<atom>.
+
+=item CODE
+
+The X<CODE (ref function)>X<ref function, about>word returned by the C<ref>
+function when you apply it to a reference to a subroutine. See also B<CV>.
+
+=item code generator
+
+A X<code generators, defined>system that writes code for you in a low-level
+language, such as code to implement the backend of a compiler. See B<program
+generator>.
+
+=item codepoint
+
+The X<codepoints, about>integer a computer uses to represent a given
+character. ASCII codepoints are in the range 0 to 127; Unicode codepoints
+are in the range 0 to 0x1F_FFFF; and Perl codepoints are in the range 0 to
+2³²−1 or 0 to 2⁶⁴−1, depending on your native integer size. In Perl Culture,
+sometimes called B<ordinals>.
+
+=item code subpattern
+
+A B<X<code subpatterns>X<subpatterns, code>regular expression> subpattern
+whose real purpose is to execute some Perl code—for example, the C<(?{...})>
+and C<(??{...})> subpatterns.
+
+=item collating sequence
+
+The X<collating sequence>X<collating sequence>order into which B<characters>
+sort. This is used by B<string> comparison routines to decide, for example,
+where in this glossary to put “collating sequence”.
+
+=item co-maintainer
+
+A X<co–maintainers>person with permissions to index a B<namespace> in
+B<PAUSE>. Anyone can upload any namespace, but only primary and
+co-maintainers get their contributions indexed.
+
+=item combining character
+
+Any X<combining characters>X<characters, combining>character with the
+General Category of Combining Mark (C<\p{GC=M}>), which may be spacing or
+nonspacing. Some are even invisible. A sequence of combining characters
+following a grapheme base character together make up a single user-visible
+character called a B<grapheme>. Most but not all diacritics are combining
+characters, and vice versa.
+
+=item command
+
+In B<shell> X<commands, defined>programming, the syntactic combination of a
+program name and its arguments. More loosely, anything you type to a shell
+(a command interpreter) that starts it doing something. Even more loosely, a
+Perl B<statement>, which might start with a B<label> and typically ends with
+a semicolon.
+
+=item command buffering
+
+A X<command buffering>X<buffering, command>mechanism in Perl that lets you
+store up the output of each Perl B<command> and then flush it out as a
+single request to the B<operating system>. It’s enabled by setting the C<$|>
+(C<$AUTOFLUSH>) variable to a true value. It’s used when you don’t want data
+sitting around, not going where it’s supposed to, which may happen because
+the default on a B<file> or B<pipe> is to use B<block buffering>.
+
+=item command-line arguments
+
+The X<command–line arguments>B<X<arguments, command–line>values> you supply
+along with a program name when you tell a B<shell> to execute a B<command>.
+These values are passed to a Perl program through C<@ARGV>.
+
+=item command name
+
+The X<command names>name of the program currently executing, as typed on the
+command line. In C, the B<command> name is passed to the program as the
+first command-line argument. In Perl, it comes in separately as C<$0>.
+
+=item comment
+
+A X<comments, defined>remark that doesn’t affect the meaning of the program.
+In Perl, a comment is introduced by a C<#> character and continues to the
+end of the line.
+
+=item compilation unit
+
+The X<compilation units>B<file> (or B<string>, in the case of C<eval>) that
+is currently being B<compiled>.
+
+=item compile
+
+The process of turning source code into a machine-usable form. See B<compile
+phase>.
+
+=item compile phase
+
+Any X<compile phase, defined>time before Perl starts running your main
+program. See also B<run phase>. Compile phase is mostly spent in B<compile
+time>, but may also be spent in B<runtime> when C<BEGIN> blocks, C<use> or
+C<no> declarations, or constant subexpressions are being evaluated. The
+startup and import code of any C<use> declaration is also run during
+compile phase.
+
+=item compiler
+
+Strictly X<compilers and compiling, about>speaking, a program that munches
+up another program and spits out yet another file containing the program in
+a “more executable” form, typically containing native machine instructions.
+The I<perl> program is not a compiler by this definition, but it does
+contain a kind of compiler that takes a program and turns it into a more
+executable form (B<syntax trees>) within the I<perl> process itself, which
+the B<interpreter> then interprets. There are, however, extension B<modules>
+to get Perl to act more like a “real” compiler. See Camel chapter 16,
+“Compiling”.
+
+=item compile time
+
+The X<compile time, defined>time when Perl is trying to make sense of your
+code, as opposed to when it thinks it knows what your code means and is
+merely trying to do what it thinks your code says to do, which is B<runtime>.
+
+=item composer
+
+A “constructor” X<composers, about>for a B<referent> that isn’t really an
+B<object>, like an anonymous array or a hash (or a sonata, for that matter).
+For example, a pair of braces acts as a composer for a hash, and a pair of
+brackets acts as a composer for an array. See the section “Creating
+References” in Camel chapter 8, “References”.
+
+=item concatenation
+
+The X<concatenating strings>X<strings, concatenating>process of gluing one
+cat’s nose to another cat’s tail. Also a similar operation on two
+B<strings>.
+
+=item conditional
+
+SomethingX<conditional (term)> “iffy”. See B<Boolean context>.
+
+=item connection
+
+In X<connections (term)>telephony, the temporary electrical circuit between
+the caller’s and the callee’s phone. In networking, the same kind of
+temporary circuit between a B<client> and a B<server>.
+
+=item construct
+
+As a X<constructs, defined>noun, a piece of syntax made up of smaller
+pieces. As a transitive verb, to create an B<object> using a B<constructor>.
+
+=item constructor
+
+AnyX<constructors, defined> B<class method>, B<instance>, or B<subroutine>
+that composes, initializes, blesses, and returns an B<object>. Sometimes we
+use the term loosely to mean a B<composer>.
+
+=item context
+
+The X<context, about>surroundings or environment. The context given by the
+surrounding code determines what kind of data a particular B<expression> is
+expected to return. The three primary contexts are B<list context>,
+B<scalar>, and B<void context>. Scalar context is sometimes subdivided into
+B<Boolean context>, B<numeric context>, B<string context>, and B<void
+context>. There’s also a “don’t care” context (which is dealt with in Camel
+chapter 2, “Bits and Pieces”, if you care).
+
+=item continuation
+
+The X<continuation lines>treatment of more than one physical B<line> as a
+single logical line. B<Makefile> lines are continued by putting a backslash
+before the B<newline>. Mail headers, as defined by X<RFC 822>RFC 822, are
+continued by putting a space or tab I<after> the newline. In general, lines
+in Perl do not need any form of continuation mark, because B<whitespace>
+(including newlines) is gleefully ignored. Usually.
+
+=item core dump
+
+The X<core dump>corpse of a B<process>, in the form of a file left in the
+B<working directory> of the process, usually as a result of certain kinds
+of fatal errors.
+
+=item CPAN
+
+The X<Comprehensive Perl Archive Network>X<CPAN (Comprehensive Perl Archive
+Network), about>Comprehensive Perl Archive Network. (See the Camel Preface
+and Camel chapter 19, “CPAN” for details.)
+
+=item C preprocessor
+
+The X<C preprocessor>typical C compiler’s first pass, which processes lines
+beginning with C<#> for conditional compilation and macro definition, and
+does various manipulations of the program text based on the current
+definitions. Also known as I<cpp>(1).
+
+=item cracker
+
+Someone X<crackers>who breaks security on computer systems. A cracker may
+be a true B<hacker> or only a B<script kiddie>.
+
+=item currently selected output channel
+
+The X<currently selected output channel>last B<filehandle> that was
+designated with C<select(FILEHANDLE)>; C<STDOUT>, if no filehandle has
+been selected.
+
+=item current package
+
+The B<package> X<current package>in which the current statement is
+B<compiled>. Scan backward in the text of your program through the current
+B<lexical scope> or any enclosing lexical scopes until you find a package
+declaration. That’s your current package name.
+
+=item current working directory
+
+SeeX<current working directory> B<working directory>.
+
+=item CV
+
+In academia, a curriculum vitæ, a fancy kind of résumé. In Perl, an X<CV
+(code value)>X<code value (CV)>internal “code value” typedef holding a
+B<subroutine>. The C<CV> type is a subclass of B<SV>.
+
+=back
+
+=head2 D
+
+=over 4
+
+=item dangling statement
+
+A bare, single B<X<dangling statements>X<statements, dangling>statement>,
+without any braces, hanging off an C<if> or C<while> conditional. C allows
+them. Perl doesn’t.
+
+=item datagram
+
+A packet of X<datagrams, defined>data, such as a B<UDP> message, that (from
+the viewpoint of the programs involved) can be sent independently over the
+network. (In fact, all packets are sent independently at the B<IP> level,
+but B<stream> protocols such as B<TCP> hide this from your program.)
+
+=item data structure
+
+How your X<data structures, defined>various pieces of data relate to each
+other and what shape they make when you put them all together, as in a
+rectangular table or a triangular tree.
+
+=item data type
+
+A set of X<data types, defined>possible values, together with all the
+operations that know how to deal with those values. For example, a numeric
+data type has a certain set of numbers that you can work with, as well as
+various mathematical operations that you can do on the numbers, but would
+make little sense on, say, a string such as C<"Kilroy">. Strings have their
+own operations, such as B<concatenation>. Compound types made of a number of
+smaller pieces generally have operations to compose and decompose them, and
+perhaps to rearrange them. B<Objects> that model things in the real world
+often have operations that correspond to real activities. For instance, if
+you model an elevator, your elevator object might have an C<open_door>
+B<method>.
+
+=item DBM
+
+Stands for X<DBM (Database Management) routines>X<Database Management (DBM)
+routines>“Database Management” routines, a set of routines that emulate an
+B<associative array> using disk files. The routines use a dynamic hashing
+scheme to locate any entry with only two disk accesses. DBM files allow a
+Perl program to keep a persistent B<hash> across multiple invocations. You
+can C<tie> your hash variables to various DBM implementations.
+
+=item declaration
+
+An B<assertion> X<declarations, defined>that states something exists and
+perhaps describes what it’s like, without giving any commitment as to how
+or where you’ll use it. A declaration is like the part of your recipe that
+says, “two cups flour, one large egg, four or five tadpoles…” See
+B<statement> for its opposite. Note that some declarations also function
+as statements. Subroutine declarations also act as definitions if a body
+is supplied.
+
+=item declarator
+
+Something X<declarators>that tells your program what sort of variable
+you’d like. Perl doesn’t require you to declare variables, but you can use
+C<my>, C<our>, or C<state> to denote that you want something other than
+the default.
+
+=item decrement
+
+To X<decrementing values>X<values, decrementing>subtract a value from a
+variable, as in “decrement C<$x>” (meaning to remove 1 from its value) or
+“decrement C<$x> by 3”.
+
+=item default
+
+A B<value> X<default values>X<values, default>chosen for you if you don’t
+supply a value of your own.
+
+=item defined
+
+Having a X<defined (term)>meaning. Perl thinks that some of the things
+people try to do are devoid of meaning; in particular, making use of
+variables that have never been given a B<value> and performing certain
+operations on data that isn’t there. For example, if you try to read data
+past the end of a file, Perl will hand you back an undefined value. See also
+B<false> and the C<defined> entry in Camel chapter 27, “Functions”.
+
+=item delimiter
+
+A B<character> X<delimiters (term)>or B<string> that sets bounds to an
+arbitrarily sized textual object, not to be confused with a B<separator> or
+B<terminator>. “To delimit” really just means “to surround” or “to enclose”
+(like these parentheses are doing).
+
+=item dereference
+
+A fancy X<dereference (term)>X<references, dereference>computer science term
+meaning “to follow a B<reference> to what it points to”. The “de” part of it
+refers to the fact that you’re taking away one level of B<indirection>.
+
+=item derived class
+
+A B<class> that X<derived classes>X<classes, derived>X<subclasses>X<classes,
+subclasses>defines some of its B<methods> in terms of a more generic class,
+called a B<base class>. Note that classes aren’t classified exclusively into
+base classes or derived classes: a class can function as both a derived
+class and a base class simultaneously, which is kind of classy.
+
+=item descriptor
+
+See B<file descriptor>.
+
+=item destroy
+
+To deallocate the X<destroy (term)>memory of a B<referent> (first triggering
+its C<DESTROY> method, if it has one).
+
+=item destructor
+
+A special B<method> X<destructor method>X<methods, destructor>that is called
+when an B<object> is thinking about B<destroying> itself. A Perl program’s
+C<DESTROY> method doesn’t do the actual destruction; Perl just B<triggers>
+the method in case the B<class> wants to do any associated cleanup.
+
+=item device
+
+A whiz-bang X<devices (term)>hardware gizmo (like a disk or tape drive or a
+modem or a joystick or a mouse) attached to your computer, which the
+B<operating system> tries to make look like a B<file> (or a bunch of files).
+Under Unix, these fake files tend to live in the I</dev> directory.
+
+=item directive
+
+A B<pod> X<directives, defined>directive. See Camel chapter 23, “Plain Old
+Documentation”.
+
+=item directory
+
+A special X<directories, defined>file that contains other files. Some
+B<operating systems> call these “folders”, “drawers”, “catalogues”, or
+“catalogs”.
+
+=item directory handle
+
+A name X<directory handle>that represents a particular instance of opening a
+directory to read it, until you close it. See the C<opendir> function.
+
+=item discipline
+
+Some X<discipline (I/O layer)>people need this and some people avoid it.
+For Perl, it’s an old way to say B<I/O layer>.
+
+=item dispatch
+
+To send X<dispatching>something to its correct destination. Often used
+metaphorically to indicate a transfer of programmatic control to a
+destination selected algorithmically, often by lookup in a table of function
+B<references> or, in the case of object B<methods>, by traversing the
+inheritance tree looking for the most specific definition for the method.
+
+=item distribution
+
+A standard, X<distributions, defined>bundled release of a system of
+software. The default usage implies source code is included. If that is not
+the case, it will be called a “binary-only” distribution.
+
+=item dual-lived
+
+Some X<dual–lived modules>X<modules, dual–lived>modules live both in the
+B<Standard Library> and on B<CPAN>. These modules might be developed on two
+tracks as people modify either version. The trend currently is to untangle
+these situations.
+
+=item dweomer
+
+An enchantment, illusion, X<dweomer>phantasm, or jugglery. Said when Perl’s
+magical B<dwimmer> effects don’t do what you expect, but rather seem to be
+the product of arcane I<dweomercraft>, sorcery, or wonder working. [From
+Middle English.]
+
+=item dwimmer
+
+DWIM X<DWIM (Do What I Mean) principle>X<Do What I Mean (DWIM) principle>is
+an acronym for X<dwimming>“Do What I Mean”, the principle that something
+should just do what you want it to do without an undue amount of fuss. A bit
+of code that does “dwimming” is a “dwimmer”. Dwimming can require a great
+deal of behind-the-scenes magic, which (if it doesn’t stay properly behind
+the scenes) is called a B<dweomer> instead.
+
+=item dynamic scoping
+
+Dynamic X<dynamic scope>X<scopes, dynamic>scoping works over a B<dynamic
+scope>, making variables visible throughout the rest of the B<block> in
+which they are first used and in any B<subroutines> that are called by the
+rest of the block. Dynamically scoped variables can have their values
+temporarily changed (and implicitly restored later) by a C<local> operator.
+(Compare B<lexical scoping>.) Used more loosely to mean how a subroutine
+that is in the middle of calling another subroutine “contains” that
+subroutine at B<runtime>.
+
+=back
+
+=head2 E
+
+=over 4
+
+=item eclectic
+
+Derived X<eclectic (term)>from many sources. Some would say I<too> many.
+
+=item element
+
+A basic X<elements, about>building block. When you’re talking about an
+B<array>, it’s one of the items that make up the array.
+
+=item embedding
+
+When X<embedding (term)>something is contained in something else,
+particularly when that might be considered surprising: “I’ve embedded a
+complete Perl interpreter in my editor!”
+
+=item empty subclass test
+
+The notion X<empty subclass test>that an empty B<derived class> should
+behave exactly like its B<base class>.
+
+=item encapsulation
+
+The veil of X<encapsulation (term)>abstraction separating the B<interface>
+from the B<implementation> (whether enforced or not), which mandates that
+all access to an B<object>’s state be through B<methods> alone.
+
+=item endian
+
+See B<little-endian> and B<big-endian>.
+
+=item en passant
+
+When you X<en passant (term)>change a B<value> as it is being copied. [From
+French “in passing”, as in the exotic pawn-capturing maneuver in chess.]
+
+=item environment
+
+The collectiveX<environment (term)> set of B<environment variables> your
+B<process> inherits from its parent. Accessed via C<%ENV>.
+
+=item environment variable
+
+A mechanism X<environment variables>X<variables, environment>X<environment
+variables>by which some high-level agent such as a user can pass its
+preferences down to its future offspring (child B<processes>, grandchild
+processes, great-grandchild processes, and so on). Each environment
+variable is a B<key>/B<value> pair, like one entry in a B<hash>.
+
+=item EOF
+
+End of File. X<End of File (EOF)>X<EOF (End of File)>Sometimes used
+metaphorically as the terminating string of a B<here document>.
+
+=item errno
+
+The X<errno (error number)>X<error number (errno)>error number returned by a
+B<syscall> when it fails. Perl refers to the error by the name C<$!> (or
+C<$OS_ERROR> if you use the English module).
+
+=item error
+
+See B<exception> or B<fatal error>.
+
+=item escape sequence
+
+See B<metasymbol>.
+
+=item exception
+
+A fancy term for an error. See B<fatal error>.
+
+=item exception handling
+
+The X<exception handling, defined>way a program responds to an error. The
+exception-handling mechanism in Perl is the C<eval> operator.
+
+=item exec
+
+To X<exec function>throw away the current B<process>’s program and replace
+it with another, without exiting the process or relinquishing any resources
+held (apart from the old memory image).
+
+=item executable file
+
+A B<file> X<executable files>X<files, executable>that is specially marked to
+tell the B<operating system> that it’s okay to run this file as a program.
+Usually shortened to “executable”.
+
+=item execute
+
+To run X<execute (term)>a B<program> or B<subroutine>. (Has nothing to do
+with the C<kill> built-in, unless you’re trying to run a B<signal handler>.)
+
+=item execute bit
+
+The X<execute bit>special mark that tells the operating system it can run
+this program. There are actually three execute bits under Unix, and which
+bit gets used depends on whether you own the file singularly, collectively,
+or not at all.
+
+=item exit status
+
+See B<status>.
+
+=item exploit
+
+Used X<exploits, security>as a noun in this case, this refers to a known way
+to compromise a program to get it to do something the author didn’t intend.
+Your task is to write unexploitable programs.
+
+=item export
+
+To make X<exporting, defined>symbols from a B<module> available for
+B<import> by other modules.
+
+=item expression
+
+Anything X<expressions, defined>X<expressions>you can legally say in a spot
+where a B<value> is required. Typically composed of B<literals>,
+B<variables>, B<operators>, B<functions>, and B<subroutine> calls, not
+necessarily in that order.
+
+=item extension
+
+A Perl module X<extensions, defined>that also pulls in B<compiled> C or C++
+code. More generally, any experimental option that can be B<compiled> into
+Perl, such as multithreading.
+
+=back
+
+=head2 F
+
+=over 4
+
+=item false
+
+In Perl, any value X<false values>X<values, false>that would look like C<"">
+or C<"0"> if evaluated in a string context. Since undefined values evaluate
+to C<"">, all undefined values are false, but not all false values are
+undefined.
+
+=item FAQ
+
+Frequently Asked QuestionX<FAQ (Frequently Asked
+Question)>X<Frequently Asked Question (FAQ)> (although not necessarily
+frequently answered, especially if the answer appears in the Perl FAQ
+shipped standard with Perl).
+
+=item fatal error
+
+An uncaught B<exception>, X<fatal errors>which causes termination of the
+B<process> after printing a message on your B<standard error> stream. Errors
+that happen inside an C<eval> are not fatal. Instead, the C<eval> terminates
+after placing the exception message in the C<$@> (C<$EVAL_ERROR>) variable.
+You can try to provoke a fatal error with the C<die> operator (known as
+throwing or raising an exception), but this may be caught by a dynamically
+enclosing C<eval>. If not caught, the C<die> becomes a fatal error.
+
+=item feeping creaturism
+
+A spoonerism X<feeping creaturism>X<creeping featurism>of “creeping
+featurism”, noting the biological urge to add just one more feature to
+a program.
+
+=item field
+
+A single X<fields (term)>piece of numeric or string data that is part of a
+longer B<string>, B<record>, or B<line>. Variable-width fields are usually
+split up by B<separators> (so use C<split> to extract the fields), while
+fixed-width fields are usually at fixed positions (so use C<unpack>).
+B<Instance variables> are also known as “fields”.
+
+=item FIFO
+
+First In, First Out.X<First In, First Out (FIFO)>X<FIFO (First In, First
+Out)> See also B<LIFO>. Also a nickname for a B<named pipe>.
+
+=item file
+
+A named X<files, defined>collection of data, usually stored on disk in a
+B<directory> in a B<filesystem>. Roughly like a document, if you’re into
+office metaphors. In modern filesystems, you can actually give a file more
+than one name. Some files have special properties, like directories and
+devices.
+
+=item file descriptor
+
+The little X<file descriptors>X<descriptors, file>number the B<operating
+system> uses to keep track of which opened B<file> you’re talking about.
+Perl hides the file descriptor inside a B<standard I/O> stream and then
+attaches the stream to a B<filehandle>.
+
+=item fileglob
+
+A “wildcard” X<fileglobs>match on B<filenames>. See the C<glob> function.
+
+=item filehandle
+
+An identifier X<filehandles, about>(not necessarily related to the real
+name of a file) that represents a particular instance of opening a file,
+until you close it. If you’re going to open and close several different
+files in succession, it’s fine to open each of them with the same
+filehandle, so you don’t have to write out separate code to process each
+file.
+
+=item filename
+
+One name for a X<filenames, about>file. This name is listed in a
+B<directory>. You can use it in an C<open> to tell the B<operating system>
+exactly which file you want to open, and associate the file with a
+B<filehandle>, which will carry the subsequent identity of that file in
+your program, until you close it.
+
+=item filesystem
+
+A set X<filesystems, defined>of B<directories> and B<files> residing on a
+partition of the disk. Sometimes known as a “partition”. You can change the
+file’s name or even move a file around from directory to directory within a
+filesystem without actually moving the file itself, at least under Unix.
+
+=item file test operator
+
+A built-in X<file test operators, about>unary operator that you use to
+determine whether something is B<true> about a file, such as C<–o
+$filename> to test whether you’re the owner of the file.
+
+=item filter
+
+A X<filters, defined>program designed to take a B<stream> of input and
+transform it into a stream of output.
+
+=item first-come
+
+The X<first–come permissions>X<permissions, first–come>first B<PAUSE>
+author to upload a B<namespace> automatically becomes the B<primary
+maintainer> for that namespace. The “first come” permissions distinguish a
+B<primary maintainer> who was assigned that role from one who received it
+automatically.
+
+=item flag
+
+We X<flags (term)>tend to avoid this term because it means so many things.
+It may mean a command-line B<switch> that takes no argument itself (such as
+Perl’s C<–n> and C<–p> flags) or, less frequently, a single-bit indicator
+(such as the C<O_CREAT> and C<O_EXCL> flags used in C<sysopen>). Sometimes
+informally used to refer to certain regex modifiers.
+
+=item floating point
+
+A X<floating point methods>X<methods, floating point>method of storing
+numbers in “scientific notation”, such that the precision of the number is
+independent of its magnitude (the decimal point “floats”). Perl does its
+numeric work with floating-point numbers (sometimes called “floats”) when
+it can’t get away with using B<integers>. Floating-point numbers are mere
+approximations of real numbers.
+
+=item flush
+
+The act of X<flushing buffers>X<buffers, flushing>emptying a B<buffer>,
+often before it’s full.
+
+=item FMTEYEWTK
+
+Far More Than Everything You Ever Wanted To KnowX<FMTEYEWTK acronym>. An
+exhaustive treatise on one narrow topic, something of a super-B<FAQ>. See
+Tom for far more.
+
+=item foldcase
+
+The casemap X<foldcase (term)>used in Unicode when comparing or matching
+without regard to case. Comparing lower-, title-, or uppercase are all
+unreliable due to Unicode’s complex, one-to-many case mappings. Foldcase is
+a B<lowercase> variant (using a partially decomposed B<normalization> form
+for certain codepoints) created specifically to resolve this.
+
+=item fork
+
+To create a X<forking processes>X<processes, forking>child B<process>
+identical to the parent process at its moment of conception, at least until
+it gets ideas of its own. A thread with protected memory.
+
+=item formal arguments
+
+The X<formal arguments>X<arguments, formal>generic names by which a
+B<subroutine> knows its B<arguments>. In many languages, formal arguments
+are always given individual names; in Perl, the formal arguments are just
+the elements of an array. The formal arguments to a Perl program are
+C<$ARGV[0]>, C<$ARGV[1]>, and so on. Similarly, the formal arguments to a
+Perl subroutine are C<$_[0]>, C<$_[1]>, and so on. You may give the
+arguments individual names by assigning the values to a C<my> list. See
+also B<actual arguments>.
+
+=item format
+
+A X<formats, defined>specification of how many spaces and digits and things
+to put somewhere so that whatever you’re printing comes out nice and
+pretty.
+
+=item freely available
+
+Means X<freely available (term)>you don’t have to pay money to get it, but
+the copyright on it may still belong to someone else (like Larry).
+
+=item freely redistributable
+
+Means X<freely redistributable (term)>you’re not in legal trouble if you
+give a bootleg copy of it to your friends and we find out about it. In
+fact, we’d rather you gave a copy to all your friends.
+
+=item freeware
+
+Historically, X<freeware (term)>any software that you give away,
+particularly if you make the source code available as well. Now often
+called B<open source software>. Recently there has been a trend to use the
+term in contradistinction to B<open source software>, to refer only to free
+software released under the X<Free Software Foundation>Free Software
+Foundation’s GPL (General Public License), but this is difficult to justify
+etymologically.
+
+=item function
+
+Mathematically, X<functions, about>a mapping of each of a set of input
+values to a particular output value. In computers, refers to a
+B<subroutine> or B<operator> that returns a B<value>. It may or may not
+have input values (called B<arguments>).
+
+=item funny character
+
+Someone X<funny characters>X<characters, funny>like Larry, or one of his
+peculiar friends. Also refers to the strange prefixes that Perl requires as
+noun markers on its variables.
+
+=back
+
+=head2 G
+
+=over 4
+
+=item garbage collection
+
+A misnamed feature—X<garbage collection, defined>it should be called,
+“expecting your mother to pick up after you”. Strictly speaking, Perl
+doesn’t do this, but it relies on a reference-counting mechanism to keep
+things tidy. However, we rarely speak strictly and will often refer to the
+reference-counting scheme as a form of garbage collection. (If it’s any
+comfort, when your interpreter exits, a “real” garbage collector runs to
+make sure everything is cleaned up if you’ve been messy with circular
+references and such.)
+
+=item GID
+
+Group ID—in Unix, X<GID (Group ID)>X<Group ID (GID)>the numeric group ID
+that the B<operating system> uses to identify you and members of your
+B<group>.
+
+=item glob
+
+Strictly, the X<glob (* character)>shell’s C<*> character, which will match
+a “glob” of characters when you’re trying to generate a list of filenames.
+Loosely, the act of using globs and similar symbols to do pattern matching.
+See also B<fileglob> and B<typeglob>.
+
+=item global
+
+Something X<global (term)>you can see from anywhere, usually used of
+B<variables> and B<subroutines> that are visible everywhere in your
+program.  In Perl, only certain special variables are truly global—most
+variables (and all subroutines) exist only in the current B<package>.
+Global variables can be declared with C<our>. See “Global Declarations” in
+Camel chapter 4, “Statements and Declarations”.
+
+=item global destruction
+
+The B<garbage X<global destruction>collection> of globals (and the running
+of any associated object destructors) that takes place when a Perl
+B<interpreter> is being shut down. Global destruction should not be
+confused with the Apocalypse, except perhaps when it should.
+
+=item glue language
+
+A language X<glue language>such as Perl that is good at hooking things
+together that weren’t intended to be hooked together.
+
+=item granularity
+
+The size of the X<granularity>pieces you’re dealing with, mentally
+speaking.
+
+=item grapheme
+
+A graphene is X<graphemes, defined>an allotrope of carbon arranged in a
+hexagonal crystal lattice one atom thick. A B<grapheme>, or more fully, a
+I<grapheme cluster string> is a single user-visible B<character>, which may
+in turn be several characters (B<codepoints>) long. For example, a carriage
+return plus a line feed is a single grapheme but two characters, while a
+“ȫ” is a single grapheme but one, two, or even three characters, depending
+on B<normalization>.
+
+=item greedy
+
+A B<subpattern> X<greedy subpatterns>X<subpatterns, greedy>whose
+B<quantifier> wants to match as many things as possible.
+
+=item grep
+
+Originally X<grep function>from the old Unix editor command for “Globally
+search for a Regular Expression and Print it”, now used in the general
+sense of any kind of search, especially text searches. Perl has a built-in
+C<grep> function that searches a list for elements matching any given
+criterion, whereas the B<grep>(1) program searches for lines matching a
+B<regular expression> in one or more files.
+
+=item group
+
+A set of users X<groups, defined>of which you are a member. In some
+operating systems (like Unix), you can give certain file access permissions
+to other members of your group.
+
+=item GV
+
+An internal “glob value” X<GV (glob value)>X<glob value (GV)>typedef,
+holding a B<typeglob>. The C<GV> type is a subclass of B<SV>.
+
+=back
+
+=head2 H
+
+=over 4
+
+=item hacker
+
+Someone X<hackers>who is brilliantly persistent in solving technical
+problems, whether these involve golfing, fighting orcs, or programming.
+Hacker is a neutral term, morally speaking. Good hackers are not to be
+confused with evil B<crackers> or clueless B<script kiddies>. If you
+confuse them, we will presume that you are either evil or clueless.
+
+=item handler
+
+A B<subroutine> X<handlers, defined>or B<method> that Perl calls when your
+program needs to respond to some internal event, such as a B<signal>, or an
+encounter with an operator subject to B<operator overloading>. See also
+B<callback>.
+
+=item hard reference
+
+A B<scalar> B<value> X<hard references, about>X<references, hard>containing
+the actual address of a B<referent>, such that the referent’s B<reference>
+count accounts for it. (Some hard references are held internally, such as
+the implicit reference from one of a B<typeglob>’s variable slots to its
+corresponding referent.) A hard reference is different from a B<symbolic
+reference>.
+
+=item hash
+
+An unordered X<hashes, about>association of B<key>/B<value> X<key/value
+pairs, about>pairs, stored such that you can easily use a string B<key> to
+look up its associated data B<value>. This glossary is like a hash, where
+the word to be defined is the key and the definition is the value. A hash
+is also sometimes septisyllabically called an “associative array”, which is
+a pretty good reason for simply calling it a “hash” instead.
+
+=item hash table
+
+A data X<hash tables>structure used internally by Perl for implementing
+associative arrays (hashes) efficiently. See also B<bucket>.
+
+=item header file
+
+A file X<header files>X<files, header>containing certain required
+definitions that you must include “ahead” of the rest of your program to do
+certain obscure operations. A C header file has a I<.h> extension. Perl
+doesn’t really have header files, though historically Perl has sometimes
+used translated I<.h> files with a I<.ph> extension. See C<require> in
+Camel chapter 27, “Functions”. (Header files have been superseded by the
+B<module> mechanism.)
+
+=item here document
+
+So X<here documents>called because of a similar construct in B<shells> that
+pretends that the B<lines> following the B<command> are a separate B<file>
+to be fed to the command, up to some terminating string. In Perl, however,
+it’s just a fancy form of quoting.
+
+=item hexadecimal
+
+A X<hexadecimals>number in base 16, “hex” for short. The digits for 10
+through 15 are customarily represented by the letters C<a> through C<f>.
+Hexadecimal constants in Perl start with C<0x>. See also the C<hex>
+function in Camel chapter 27, “Functions”.
+
+=item home directory
+
+The X<home directory>X<directories, home>directory you are put into when
+you log in. On a Unix system, the name is often placed into C<$ENV{HOME}>
+or C<$ENV{LOGDIR}> by I<login>, but you can also find it with
+C<(get>C<pwuid($E<lt>))[7]>. (Some platforms do not have a concept of a
+home directory.)
+
+=item host
+
+The computer X<host computers>on which a program or other data resides.
+
+=item hubris
+
+Excessive pride, X<hubris quality>the sort of thing for which Zeus zaps
+you.  Also the quality that makes you write (and maintain) programs that
+other people won’t want to say bad things about. Hence, the third great
+virtue of a programmer. See also B<laziness> and B<impatience>.
+
+=item HV
+
+Short for a “hash value” X<HV (hash value)>X<hash value (HV)>typedef, which
+holds Perl’s internal representation of a hash. The C<HV> type is a
+subclass of B<SV>.
+
+=back
+
+=head2 I
+
+=over 4
+
+=item identifier
+
+A legally X<identifiers, defined>formed name for most anything in which a
+computer program might be interested. Many languages (including Perl) allow
+identifiers to start with an alphabetic character, and then contain
+alphabetics and digits. Perl also allows connector punctuation like the
+underscore character wherever it allows alphabetics. (Perl also has more
+complicated names, like B<qualified> names.)
+
+=item impatience
+
+The anger X<impatience quality>you feel when the computer is being lazy.
+This makes you write programs that don’t just react to your needs, but
+actually anticipate them. Or at least that pretend to. Hence, the second
+great virtue of a programmer. See also B<laziness> and B<hubris>.
+
+=item implementation
+
+How a X<implementation (term)>piece of code actually goes about doing its
+job. Users of the code should not count on implementation details staying
+the same unless they are part of the published B<interface>.
+
+=item import
+
+To gain X<import (term)>access to symbols that are exported from another
+module. See C<use> in Camel chapter 27, “Functions”.
+
+=item increment
+
+To increase the X<incrementing values>X<values, incrementing>value of
+something by 1 (or by some other number, if so specified).
+
+=item indexing
+
+In olden days, X<indexing (term)>the act of looking up a B<key> in an
+actual index (such as a phone book). But now it's merely the act of using
+any kind of key or position to find the corresponding B<value>, even if no
+index is involved. Things have degenerated to the point that Perl’s
+C<index> function merely locates the position (index) of one string in
+another.
+
+=item indirect filehandle
+
+An B<expression> X<indirect filehandles>X<filehandles, indirect>that
+evaluates to something that can be used as a B<filehandle>: a B<string>
+(filehandle name), a B<typeglob>, a typeglob B<reference>, or a low-level
+B<IO> object.
+
+=item indirection
+
+If something in a X<indirection (term)>program isn’t the value you’re
+looking for but indicates where the value is, that’s indirection. This can
+be done with either B<symbolic references> or B<hard>.
+
+=item indirect object
+
+In English grammar, X<indirect objects, defined>X<objects, indirect>a short
+noun phrase between a verb and its direct object indicating the beneficiary
+or recipient of the action. In Perl, C<print STDOUT "$foo\n";> can be
+understood as “verb indirect-object object”, where C<STDOUT> is the
+recipient of the C<print> action, and C<"$foo"> is the object being
+printed.  Similarly, when invoking a B<method>, you might place the
+invocant in the dative slot between the method and its arguments:
+
+    $gollum = new Pathetic::Creature "Sméagol";
+    give $gollum "Fisssssh!";
+    give $gollum "Precious!";
+
+=item indirect object slot
+
+The syntactic X<indirect object slot>position falling between a method call
+and its arguments when using the indirect object invocation syntax. (The
+slot is distinguished by the absence of a comma between it and the next
+argument.) C<STDERR> is in the indirect object slot here:
+
+    print STDERR "Awake! Awake! Fear, Fire, Foes! Awake!\n";
+
+=item infix
+
+An B<operator> that X<infix operators>comes in between its B<operands>,
+such as multiplication in C<24 * 7>.
+
+=item inheritance
+
+What you get from your X<inheritance, defined>ancestors, genetically or
+otherwise. If you happen to be a B<class>, your ancestors are called B<base
+classes> and your descendants are called B<derived classes>. See B<single
+inheritance> and B<multiple inheritance>.
+
+=item instance
+
+Short for “an instance of a class”, X<instances (term)>meaning an B<object>
+of that B<class>.
+
+=item instance data
+
+SeeX<instance data> B<instance variable>.
+
+=item instance method
+
+A B<method> of X<instance methods>X<methods, instance>an B<object>, as
+opposed to a B<class method>.
+
+A B<method> whose B<invocant> is an B<object>, not a B<package> name. Every
+object of a class shares all the methods of that class, so an instance
+method applies to all instances of the class, rather than applying to a
+particular instance. Also see B<class method>.
+
+=item instance variable
+
+An B<attribute> of an B<object>; X<instance variables, defined>X<variables,
+instance>data stored with the particular object rather than with the class
+as a whole.
+
+=item integer
+
+A number X<integers (term)>with no fractional (decimal) part. A counting
+number, like 1, 2, 3, and so on, but including 0 and the negatives.
+
+=item interface
+
+The services X<interfaces (term)>a piece of code promises to provide
+forever, in contrast to its B<implementation>, which it should feel free to
+change whenever it likes.
+
+=item interpolation
+
+The insertion of X<interpolation, defined>a scalar or list value somewhere
+in the middle of another value, such that it appears to have been there all
+along. In Perl, variable interpolation happens in double-quoted strings and
+patterns, and list interpolation occurs when constructing the list of
+values to pass to a list operator or other such construct that takes a
+I<C<LIST>>.
+
+=item interpreter
+
+Strictly speaking, X<interpreters, defined>a program that reads a second
+program and does what the second program says directly without turning the
+program into a different form first, which is what B<compilers> do. Perl is
+not an interpreter by this definition, because it contains a kind of
+compiler that takes a program and turns it into a more executable form
+(B<syntax trees>) within the I<perl> process itself, which the Perl
+B<runtime> system then interprets.
+
+=item invocant
+
+The agent on X<invocants, defined>whose behalf a B<method> is invoked. In a
+B<class> method, the invocant is a package name. In an B<instance> method,
+the invocant is an object reference.
+
+=item invocation
+
+The act of X<invocation, method>calling up a deity, daemon, program,
+method, subroutine, or function to get it to do what you think it’s
+supposed to do.  We usually “call” subroutines but “invoke” methods, since
+it sounds cooler.
+
+=item I/O
+
+Input from, or X<I/O (Input/Output), defined>X<Input/Output (I/O),
+defined>output to, a B<file> or B<device>.
+
+=item IO
+
+An internal I/O object. Can also mean B<indirect object>.
+
+=item I/O layer
+
+One of the X<I/O layer>filters between the data and what you get as input
+or what you end up with as output.
+
+=item IPA
+
+India Pale Ale. Also the X<International Phonetic Alphabet (IPA)>X<IPA
+(International Phonetic Alphabet)>International Phonetic Alphabet, the
+standard alphabet used for phonetic notation worldwide. Draws heavily on
+Unicode, including many combining characters.
+
+=item IP
+
+Internet ProtocolX<Internet Protocol (IP)>X<IP (Internet Protocol)>, or
+X<IP (Intellectual Property)>X<Intellectual Property (IP)>Intellectual
+Property.
+
+=item IPC
+
+Interprocess X<Interprocess Communication>X<IPC (Interprocess
+Communication), about>X<communication>Communication.
+
+=item is-a
+
+A rX<is–a relationship>elationship between two B<objects> in which one
+object is considered to be a more specific version of the other, generic
+object: “A camel is a mammal.” Since the generic object really only exists
+in a Platonic sense, we usually add a little abstraction to the notion of
+objects and think of the relationship as being between a generic B<base
+class> and a specific B<derived class>. Oddly enough, Platonic classes
+don’t always have Platonic relationships—see B<inheritance>.
+
+=item iteration
+
+Doing X<iteration>something repeatedly.
+
+=item iterator
+
+A special X<iterators>programming gizmo that keeps track of where you are
+in something that you’re trying to iterate over. The C<foreach> loop in
+Perl contains an iterator; so does a hash, allowing you to C<each> through
+it.
+
+=item IV
+
+The integer X<IV (Integer Value)>X<Integer Value (IV)>four, not to be
+confused with six, Tom’s favorite editor. IV also means an internal Integer
+Value of the type a B<scalar> can hold, not to be confused with an B<NV>.
+
+=back
+
+=head2 J
+
+=over 4
+
+=item JAPH
+
+“Just Another Perl Hacker”, a X<JAPH acronym>clever but cryptic bit of Perl
+code that, when executed, evaluates to that string. Often used to
+illustrate a particular Perl feature, and something of an ongoing
+Obfuscated Perl Contest seen in USENET signatures.
+
+=back
+
+=head2 K
+
+=over 4
+
+=item key
+
+The X<keys, defined>string index to a B<hash>, used to look up the B<value>
+associated with that key.
+
+=item keyword
+
+See B<reserved words>.
+
+=back
+
+=head2 L
+
+=over 4
+
+=item label
+
+A X<labels, defined>name you give to a B<statement> so that you can talk
+about that statement elsewhere in the program.
+
+=item laziness
+
+The X<laziness quality>quality that makes you go to great effort to reduce
+overall energy expenditure. It makes you write labor-saving programs that
+other people will find useful, and then document what you wrote so you
+don’t have to answer so many questions about it. Hence, the first great
+virtue of a programmer. Also hence, this book. See also B<impatience> and
+B<hubris>.
+
+=item leftmost longest
+
+The X<leftmost longest preference>X<regular expressions, leftmost longest
+preference>preference of the B<regular expression> engine to match the
+leftmost occurrence of a B<pattern>, then given a position at which a match
+will occur, the preference for the longest match (presuming the use of a
+B<greedy> quantifier). See Camel chapter 5, “Pattern Matching” for I<much>
+more on this subject.
+
+=item left shift
+
+A B<bit shift> that X<left shift (E<lt>E<lt>) bit operator>X<bit–shift
+operators, left shift>X<E<lt>E<lt> (left shift) bit operator>multiplies the
+number by some power of 2.
+
+=item lexeme
+
+Fancy X<lexeme (token)>term for a B<token>.
+
+=item lexer
+
+Fancy X<lexer (tokener)>term for a B<tokener>.
+
+=item lexical analysis
+
+Fancy X<lexical analysis>term for B<tokenizing>.
+
+=item lexical scoping
+
+Looking X<lexical scopes, defined>X<scopes>at your I<Oxford English
+Dictionary> through a microscope. (Also known as B<static scoping>, because
+dictionaries don’t change very fast.) Similarly, looking at variables
+stored in a private dictionary (namespace) for each scope, which are
+visible only from their point of declaration down to the end of theX<static
+scopes>X<scopes, static> lexical scope in which they are declared. —Syn.
+B<static scoping>. —Ant. B<dynamic scoping>.
+
+=item lexical variable
+
+A B<variable> X<lexical variables, about>X<variables, lexical>subject to
+B<lexical scoping>, declared by C<my>. Often just called a “lexical”. (The
+C<our> declaration declares a lexically scoped name for a global variable,
+which is not itself a lexical variable.)
+
+=item library
+
+Generally, a X<libraries, defined>collection of procedures. In ancient
+days, referred to a collection of subroutines in a I<.pl> file. In modern
+times, refers more often to the entire collection of Perl B<modules> on
+your system.
+
+=item LIFO
+
+Last In, First OutX<Last In, First Out (LIFO)>X<LIFO (Last In, First
+Out)>X<stacks, defined>. See also B<FIFO>. A LIFO is usually called a
+B<stack>.
+
+=item line
+
+In Unix, a X<line (term)>sequence of zero or more nonnewline characters
+terminated with a B<newline> character. On non-Unix machines, this is
+emulated by the C library even if the underlying B<operating system> has
+different ideas.
+
+=item linebreak
+
+A B<grapheme> X<linebreaks>consisting of either a carriage return followed
+by a line feed or any character with the Unicode Vertical Space B<character
+property>.
+
+=item line buffering
+
+Used by X<line buffering>X<buffering, line>a B<standard I/O> output stream that
+flushes its B<buffer> after every B<newline>. Many standard I/O libraries
+automatically set up line buffering on output that is going to the terminal.
+
+=item line number
+
+The number X<line number>of lines read previous to this one, plus 1. Perl
+keeps a separate line number for each source or input file it opens. The
+current source file’s line number is represented by C<__LINE__>. The
+current input line number (for the file that was most recently read via
+C<E<lt>FHE<gt>>) is represented by the C<$.> (C<$INPUT_LINE_NUMBER>)
+variable. Many error messages report both values, if available.
+
+=item link
+
+Used as a X<links, defined>noun, a name in a B<directory> that represents a
+B<file>. A given file can have multiple links to it. It’s like having the
+same phone number listed in the phone directory under different names. As a
+verb, to resolve a partially B<compiled> file’s unresolved symbols into a
+(nearly) executable image. Linking can generally be static or dynamic,
+which has nothing to do with static or dynamic scoping.
+
+=item LIST
+
+A syntactic X<LIST construct>X<constructs, LIST>construct representing a
+comma- separated list of expressions, evaluated to produce a B<list value>.
+Each B<expression> in a I<C<LIST>> is evaluated in B<list context> and
+interpolated into the list value.
+
+=item list
+
+An ordered X<lists, defined>set of scalar values.
+
+=item list context
+
+The situation X<list context>X<context, list>in which an B<expression> is
+expected by its surroundings (the code calling it) to return a list of
+values rather than a single value. Functions that want a I<C<LIST>> of
+arguments tell those arguments that they should produce a list value. See
+also B<context>.
+
+=item list operator
+
+An B<operator> that X<list operators, about>does something with a list of
+values, such as C<join> or C<grep>. Usually used for named built-in
+operators (such as C<print>, C<unlink>, and C<system>) that do not require
+parentheses around their B<argument> list.
+
+=item list value
+
+An unnamed X<list values, about>X<values, list>list of temporary scalar
+values that may be passed around within a program from any list-generating
+function to any function or construct that provides a B<list context>.
+
+=item literal
+
+A token X<literals, defined>in a programming language, such as a number or
+B<string>, that gives you an actual B<value> instead of merely representing
+possible values as a B<variable> does.
+
+=item little-endian
+
+From Swift: X<little–endian, defined>X<endianness, little–endian>someone
+who eats eggs little end first. Also used of computers that store the least
+significant B<byte> of a word at a lower byte address than the most
+significant byte. Often considered superior to big-endian machines. See
+also B<big-endian>.
+
+=item local
+
+Not meaning X<local operator, about>the same thing everywhere. A global
+variable in Perl can be localized inside a B<dynamic scope> via the
+C<local> operator.
+
+=item logical operator
+
+Symbols X<logical operators, about>representing the concepts “and”, “or”,
+“xor”, and “not”.
+
+=item lookahead
+
+An B<assertion> that X<lookahead assertions>X<assertions (in regexes),
+lookahead>peeks at the string to the right of the current match location.
+
+=item lookbehind
+
+An B<assertion> X<lookbehind assertions>X<assertions (in regexes),
+lookbehind>that peeks at the string to the left of the current match
+location.
+
+=item loop
+
+A construct X<loop constructs and statements, about>X<constructs, loop>that
+performs something repeatedly, like a roller coaster.
+
+=item loop control statement
+
+Any statement X<statements, loop control>within the body of a loop that can
+make a loop prematurely stop looping or skip an B<iteration>. Generally,
+you shouldn’t try this on roller coasters.
+
+=item loop label
+
+A kind X<loop labels>X<labels, loop>of key or name attached to a loop (or
+roller coaster) so that loop control statements can talk about which loop
+they want to control.
+
+=item lowercase
+
+In Unicode, X<lowercase characters>X<characters, lowercase>not just
+characters with the General Category of Lowercase Letter, but any character
+with the Lowercase property, including Modifier Letters, Letter Numbers,
+some Other Symbols, and one Combining Mark.
+
+=item lvaluable
+
+Able to X<lvaluable function>X<functions, lvaluable>serve as an B<lvalue>.
+
+=item lvalue
+
+Term used by X<lvalue (term)>X<values, lvalue>language lawyers for a
+storage location you can assign a new B<value> to, such as a B<variable> or
+an element of an B<array>. The “l” is short for “left”, as in the left side
+of an assignment, a typical place for lvalues. An B<lvaluable> function or
+expression is one to which a value may be assigned, as in C<pos($x) = 10>.
+
+=item lvalue modifier
+
+An X<lvalue modifier>X<modifiers, lvalue>adjectival pseudofunction that
+warps the meaning of an B<lvalue> in some declarative fashion. Currently
+there are three lvalue modifiers: C<my>, C<our>, and C<local>.
+
+=back
+
+=head2 M
+
+=over 4
+
+=item magic
+
+Technically X<magic (term)>speaking, any extra semantics attached to a
+variable such as C<$!>, C<$0>, C<%ENV>, or C<%SIG>, or to any tied
+variable.  Magical things happen when you diddle those variables.
+
+=item magical increment
+
+An B<increment> X<magical increment operator>operator that knows how to
+bump up ASCII alphabetics as well as numbers.
+
+=item magical variables
+
+Special variables X<magical variables>X<variables, magical>that have side
+effects when you access them or assign to them. For example, in Perl,
+changing elements of the C<%ENV> array also changes the corresponding
+environment variables that subprocesses will use. Reading the C<$!>
+variable gives you the current system error number or message.
+
+=item Makefile
+
+A file that X<Makefile>controls the compilation of a program. Perl programs
+don’t usually need a B<Makefile> because the Perl compiler has plenty of
+self-control.
+
+=item man
+
+The Unix X<man program (Unix)>program that displays online documentation
+(manual pages) for you.
+
+=item manpage
+
+A “page” from the X<manpages, defined>manuals, typically accessed via the
+I<man>(1) command. A manpage contains a SYNOPSIS, a DESCRIPTION, a list of
+BUGS, and so on, and is typically longer than a page. There are manpages
+documenting B<commands>, B<syscalls>, B<library> B<functions>, B<devices>,
+B<protocols>, B<files>, and such. In this book, we call any piece of
+standard Perl documentation (like L<perlop> or L<perldelta>) a manpage, no
+matter what format it’s installed in on your system.
+
+=item matching
+
+SeeX<matching> B<pattern matching>.
+
+=item member data
+
+SeeX<member data> B<instance variable>.
+
+=item memory
+
+This X<memory, defined>always means your main memory, not your disk.
+Clouding the issue is the fact that your machine may implement
+B<virtual> memory; that is, it will pretend that it has more memory than
+it really does, and it’ll use disk space to hold inactive bits. This can
+make it seem like you have a little more memory than you really do, but
+it’s not a substitute for real memory. The best thing that can be said
+about virtual memory is that it lets your performance degrade gradually
+rather than suddenly when you run out of real memory. But your program
+can die when you run out of virtual memory, too—if you haven’t thrashed
+your disk to death first.
+
+=item metacharacter
+
+A B<character> that X<metacharacters, about>X<characters, regex
+metacharacters>is I<not> supposed to be treated normally. Which characters
+are to be treated specially as metacharacters varies greatly from context to
+context. Your B<shell> will have certain metacharacters, double-quoted Perl
+B<strings> have other metacharacters,X<regular expressions, metacharacters and>
+and B<regular expression> patterns have all the double-quote metacharacters plus
+some extra ones of their own.
+
+=item metasymbol
+
+Something we’d call X<metasymbols, about>X<escape sequences>a
+B<metacharacter> except that it’s a sequence of more than one character.
+Generally, the first character in the sequence must be a true metacharacter
+to get the other characters in the metasymbol to misbehave along with it.
+
+=item method
+
+A kind of X<methods, defined>action that an B<object> can take if you tell
+it to. See Camel chapter 12, “Objects”.
+
+=item method resolution order
+
+The path X<method resolution order (mro)>X<mro (method resolution
+order)>Perl takes through C<@INC>. By default, this is a double depth first
+search, once looking for defined methods and once for C<AUTOLOAD>. However,
+Perl lets you configure this with C<mro>.
+
+=item minicpan
+
+A CPAN X<minicpan, defined>X<CPAN (Comprehensive Perl Archive Network),
+minicpan and>mirror that includes just the latest versions for each
+distribution, probably created with C<CPAN::Mini>X<CPAN::Mini module>. See
+Camel chapter 19, “CPAN”.
+
+=item minimalism
+
+The belief X<minimalism>that “small is beautiful”. Paradoxically, if you
+say something in a small language, it turns out big, and if you say it in a
+big language, it turns out small. Go figure.
+
+=item mode
+
+In the X<mode>context of the I<stat>(2) syscall, refers to the field
+holding the B<permission bits> and the type of the B<file>.
+
+=item modifier
+
+SeeX<modifiers, defined> B<statement modifier>, B<regular expression>, and
+B<lvalue>, not necessarily in that order.
+
+=item module
+
+A B<file> that X<modules, defined>defines a B<package> of (almost) the same
+name, which can either B<export> symbols or function as an B<object> class.
+(A module’s main I<.pm> file may also load in other files in support of the
+module.) See the C<use> built-in.
+
+=item modulus
+
+An integer X<modulus (%) operator>X<% (modulus) operator>divisor when
+you’re interested in the remainder instead of the quotient.
+
+=item mojibake
+
+When you X<mojibake>speak one language and the computer thinks you’re
+speaking another. You’ll see odd translations when you send UTF‑8, for
+instance, but the computer thinks you sent Latin-1, showing all sorts of
+weird characters instead. The term is written 「文字化け」in Japanese and
+means “character rot”, an apt description. Pronounced [C<modʑibake>] in
+standard B<IPA> phonetics, or approximately “moh-jee-bah-keh”.
+
+=item monger
+
+Short for X<mongers, Perl>X<Perl mongers>one member of B<Perl mongers>, a
+purveyor of Perl.
+
+=item mortal
+
+A temporary X<mortal value>X<values, mortal>value scheduled to die when the
+current statement finishes.
+
+=item mro
+
+See B<method resolution order>.
+
+=item multidimensional array
+
+An array X<multidimensional arrays>X<arrays, multidimensional>with multiple
+subscripts for finding a single element. Perl implements these using
+B<references>—see Camel chapter 9, “Data Structures”.
+
+=item multiple inheritance
+
+The features X<multiple inheritance>X<inheritance, multiple>you got from
+your mother and father, mixed together unpredictably. (See also
+B<inheritance> and B<single inheritance>.) In computer languages (including
+Perl), it is the notion that a given class may have multiple direct
+ancestors or B<base classes>.
+
+=back
+
+=head2 N
+
+=over 4
+
+=item named pipe
+
+A B<pipe> X<named pipes>X<pipes, names>with a name embedded in the
+B<filesystem> so that it can be accessed by two unrelated B<processes>.
+
+=item namespace
+
+A domain of X<namespaces, about>names. You needn’t worry about whether the
+names in one such domain have been used in another. See B<package>.
+
+=item NaN
+
+Not a number. X<NaN (not a number)>X<not a number (NaN)>The value Perl uses
+for certain invalid or inexpressible floating-point operations.
+
+=item network address
+
+The most X<network address>important attribute of a socket, like your
+telephone’s telephone number. Typically an IP address. See also B<port>.
+
+=item newline
+
+A single X<newline character>X<characters, newline>character that
+represents the end of a line, with the ASCII value of 012 octal under Unix
+(but 015 on a Mac), and represented by C<\n> in Perl strings. For Windows
+machines writing text files, and for certain physical devices like
+terminals, the single newline gets automatically translated by your C
+library into a line feed and a carriage return, but normally, no
+translation is done.
+
+=item NFS
+
+Network File System, X<NFS (Network File System)>X<Network File System
+(NFS)>which allows you to mount a remote filesystem as if it were local.
+
+=item normalization
+
+Converting a X<normalization>text string into an alternate but equivalent
+B<canonical> (or compatible) representation that can then be compared for
+equivalence. Unicode recognizes four different normalization forms: NFD,
+NFC, NFKD, and NFKC.
+
+=item null character
+
+A character X<null character>X<characters, null>with the numeric value of
+zero. It’s used by C to terminate strings, but Perl allows strings to
+contain a null.
+
+=item null list
+
+A B<list value> with X<null lists>X<lists, null>zero elements, represented
+in Perl by C<()>.
+
+=item null string
+
+A B<string> X<null strings>X<strings, null>containing no characters, not to
+be confused with a string containing a B<null character>, which has a
+positive length and is B<true>.
+
+=item numeric context
+
+The situation X<numeric context>X<context, numeric>in which an expression
+is expected by its surroundings (the code calling it) to return a number.
+See also B<context> and B<string context>.
+
+=item numification
+
+(Sometimes spelled I<nummification> and I<nummify>.) X<numification>Perl lingo
+for implicit conversion into a number; the related verb is I<numify>.
+I<Numification> is intended to rhyme with I<mummification>, and I<numify> with
+I<mummify>. It is unrelated to English I<numen>, I<numina>, I<numinous>. We
+originally forgot the extra I<m> a long time ago, and some people got used to
+our funny spelling, and so just as with C<HTTP_REFERER>’s own missing letter,
+our weird spelling has stuck around.
+
+=item NV
+
+Short for Nevada, X<Numeric Value (NV)>X<NV (Numeric Value)>no part of
+which will ever be confused with civilization. NV also means an internal
+floating- point Numeric Value of the type a B<scalar> can hold, not to be
+confused with an B<IV>.
+
+=item nybble
+
+Half a B<byte>, X<nybble>equivalent to one B<hexadecimal> digit, and worth
+four B<bits>.
+
+=back
+
+=head2 O
+
+=over 4
+
+=item object
+
+An B<instance> X<objects, defined>of a B<class>. Something that “knows”
+what user-defined type (class) it is, and what it can do because of what
+class it is. Your program can request an object to do things, but the
+object gets to decide whether it wants to do them or not. Some objects are
+more accommodating than others.
+
+=item octal
+
+A number X<octals>in base 8. Only the digits 0 through 7 are allowed. Octal
+constants in Perl start with 0, as in 013. See also the C<oct> function.
+
+=item offset
+
+How many X<offsets in strings>X<strings, offsets in>things you have to skip
+over when moving from the beginning of a string or array to a specific
+position within it. Thus, the minimum offset is zero, not one, because you
+don’t skip anything to get to the first item.
+
+=item one-liner
+
+An entire X<one–liner programs>computer program crammed into one line of
+text.
+
+=item open source software
+
+Programs X<open source software>for which the source code is freely
+available and freely redistributable, with no commercial strings attached.
+For a more detailed definition, see L<http://www.opensource.org/osd.html>.
+
+=item operand
+
+An B<expression> X<operands (term)>that yields a B<value> that an
+B<operator> operates on. See also B<precedence>.
+
+=item operating system
+
+A special X<operating systems, defined>program that runs on the bare
+machine and hides the gory details of managing B<processes> and B<devices>.
+Usually used in a looser sense to indicate a particular culture of
+programming. The loose sense can be used at varying levels of specificity.
+At one extreme, you might say that all versions of Unix and Unix-lookalikes
+are the same operating system (upsetting many people, especially lawyers
+and other advocates). At the other extreme, you could say this particular
+version of this particular vendor’s operating system is different from any
+other version of this or any other vendor’s operating system. Perl is much
+more portable across operating systems than many other languages. See also
+B<architecture> and B<platform>.
+
+=item operator
+
+A gizmo X<operators, about>that transforms some number of input values to
+some number of output values, often built into a language with a special
+syntax or symbol. A given operator may have specific expectations about
+what B<types> of data you give as its arguments (B<operands>) and what type
+of data you want back from it.
+
+=item operator overloading
+
+A kind X<operator overloading, about>X<overloading, operator>of
+B<overloading> that you can do on built-in B<operators> to make them work
+on B<objects> as if the objects were ordinary scalar values, but with the
+actual semantics supplied by the object class. This is set up with the
+overload B<pragma>—see Camel chapter 13, “Overloading”.
+
+=item options
+
+See X<options>either B<switches> or B<regular expression modifiers>.
+
+=item ordinal
+
+An X<ordinals (term)>abstract character’s integer value. Same thing as
+B<codepoint>.
+
+=item overloading
+
+Giving X<overloading, defined>additional meanings to a symbol or construct.
+Actually, all languages do overloading to one extent or another, since
+people are good at figuring out things from B<context>.
+
+=item overriding
+
+Hiding or X<overriding, defined>invalidating some other definition of the
+same name. (Not to be confused with B<overloading>, which adds definitions
+that must be disambiguated some other way.) To confuse the issue further,
+we use the word with two overloaded definitions: to describe how you can
+define your own B<subroutine> to hide a built-in B<function> of the same
+name (see the section “Overriding Built-in Functions” in Camel chapter 11,
+“Modules”), and to describe how you can define a replacement B<method> in a
+B<derived class> to hide a B<base class>’s method of the same name (see
+Camel chapter 12, “Objects”).
+
+=item owner
+
+The one X<ownership, file>X<files, ownership of>user (apart from the
+superuser) who has absolute control over a B<file>. A file may also have a
+B<group> of users who may exercise joint ownership if the real owner
+permits it. See B<permission bits>.
+
+=back
+
+=head2 P
+
+=over 4
+
+=item package
+
+A B<namespace> for X<packages, defined>global B<variables>, B<subroutines>,
+and the like, such that they can be kept separate from like-named
+B<symbols> in other namespaces. In a sense, only the package is global,
+since the symbols in the package’s symbol table are only accessible from
+code B<compiled> outside the package by naming the package. But in another
+sense, all package symbols are also globals—they’re just well-organized
+globals.
+
+=item pad
+
+Short X<pads (scratchpads)>for B<scratchpad>.
+
+=item parameter
+
+SeeX<parameters> B<argument>.
+
+=item parent class
+
+SeeX<parent classes>X<classes, parent> B<base class>.
+
+=item parse tree
+
+SeeX<parse tree> B<syntax tree>.
+
+=item parsing
+
+The X<parsing, about>subtle but sometimes brutal art of attempting to turn
+your possibly malformed program into a valid B<syntax tree>.
+
+=item patch
+
+To X<patches>fix by applying one, as it were. In the realm of hackerdom, a
+listing of the differences between two versions of a program as might be
+applied by the B<patch>(1) program when you want to fix a bug or upgrade
+your old version.
+
+=item PATH
+
+The X<PATH environment variable>X<variables, environment>list of
+B<directories> the system searches to find a program you want to
+B<execute>.  The list is stored as one of your B<environment variables>,
+accessible in Perl as C<$ENV{PATH}>.
+
+=item pathname
+
+A X<pathname>fully qualified filename such as I</usr/bin/perl>. Sometimes
+confused with C<PATH>.
+
+=item pattern
+
+A X<patterns, defined>template used in B<pattern matching>.
+
+=item pattern matching
+
+Taking a X<pattern matching, about>pattern, usually a B<regular
+expression>, and trying the pattern various ways on a string to see whether
+there’s any way to make it fit. Often used to pick interesting tidbits out
+of a file.
+
+=item PAUSE
+
+The X<Perl Authors Upload SErver (PAUSE)>X<PAUSE (Perl Authors Upload
+SErver)>Perl Authors Upload SErver (L<http://pause.perl.org>), the gateway
+for B<modules> on their way to B<CPAN>.
+
+=item Perl mongers
+
+A X<Perl mongers>X<mongers, Perl>Perl user group, taking the form of its
+name from the New York Perl mongers, the first Perl user group. Find one
+near you at L<http://www.pm.org>.
+
+=item permission bits
+
+Bits X<permission bits>X<bits, permission>that the B<owner> of a file sets
+or unsets to allow or disallow access to other people. These flag bits are
+part of the B<mode> word returned by the C<stat> built-in when you ask
+about a file. On Unix systems, you can check the I<ls>(1) manpage for more
+information.
+
+=item Pern
+
+What you get X<Pern (term)>when you do C<Perl++> twice. Doing it only once
+will curl your hair. You have to increment it eight times to shampoo your
+hair. Lather, rinse, iterate.
+
+=item pipe
+
+A X<pipes, defined>direct B<connection> that carries the output of one
+B<process> to the input of another without an intermediate temporary file.
+Once the pipe is set up, the two processes in question can read and write
+as if they were talking to a normal file, with some caveats.
+
+=item pipeline
+
+A X<pipeline>series of B<processes> all in a row, linked by B<pipes>, where
+each passes its output stream to the next.
+
+=item platform
+
+The X<platforms, defined>entire hardware and software context in which a
+program runs. A program written in a platform-dependent language might
+break if you change any of the following: machine, operating system,
+libraries, compiler, or system configuration. The I<perl> interpreter has
+to be B<compiled> differently for each platform because it is implemented
+in C, but programs written in the Perl language are largely platform
+independent.
+
+=item pod
+
+The X<pod (plain old documentation), about>X<plain old documentation>markup
+used to embed documentation into your Perl code. Pod stands for “Plain old
+documentation”. See Camel chapter 23, “Plain Old Documentation”.
+
+=item pod command
+
+A X<pod commands>X<commands, pod>sequence, such as C<=head1>, that denotes
+the start of a B<pod> section.
+
+=item pointer
+
+A B<variable> X<pointers>in a language like C that contains the exact
+memory location of some other item. Perl handles pointers internally so you
+don’t have to worry about them. Instead, you just use symbolic pointers in
+the form of B<keys> and B<variable> names, or B<hard references>, which
+aren’t pointers (but act like pointers and do in fact contain pointers).
+
+=item polymorphism
+
+The notion X<polymorphism>that you can tell an B<object> to do something
+generic, and the object will interpret the command in different ways
+depending on its type. [E<lt> Greek πολυ- + μορϕή, many forms.]
+
+=item port
+
+The X<ports (term)>part of the address of a TCP or UDP socket that directs
+packets to the correct process after finding the right machine, something
+like the phone extension you give when you reach the company operator. Also
+the result of converting code to run on a different platform than
+originally intended, or the verb denoting this conversion.
+
+=item portable
+
+Once X<portability, about>upon a time, C code compilable under both BSD and
+SysV. In general, code that can be easily converted to run on another
+B<platform>, where “easily” can be defined however you like, and usually
+is.  Anything may be considered portable if you try hard enough, such as a
+mobile home or London Bridge.
+
+=item porter
+
+Someone X<porters>who “carries” software from one B<platform> to another.
+Porting programs written in platform-dependent languages such as C can be
+difficult work, but porting programs like Perl is very much worth the
+agony.
+
+=item possessive
+
+Said of X<possessive (term)>quantifiers and groups in patterns that refuse
+to give up anything once they’ve gotten their mitts on it. Catchier and
+easier to say than the even more formal I<nonbacktrackable>.
+
+=item POSIX
+
+The X<Portable Operating System Interface (POSIX), about>X<POSIX (Portable
+Operating System Interface), about>Portable Operating System Interface
+specification.
+
+=item postfix
+
+An B<operator> X<postfix operator>that follows its B<operand>, as in
+C<$x++>.
+
+=item pp
+
+An X<pp (push–pop) code>X<push–pop (pp) code>internal shorthand for a
+“push- pop” code; that is, C code implementing Perl’s stack machine.
+
+=item pragma
+
+A X<pragmas, about>X<modules>standard module whose practical hints and
+suggestions are received (and possibly ignored) at compile time. Pragmas
+are named in all lowercase.
+
+=item precedence
+
+The X<precedence rules, about>X<operators, precedence rules>rules of
+conduct that, in the absence of other guidance, determine what should
+happen first.  For example, in the absence of parentheses, you always do
+multiplication before addition.
+
+=item prefix
+
+An B<operator> X<prefix operators>that precedes its B<operand>, as in
+C<++$x>.
+
+=item preprocessing
+
+What X<preprocessing>some helper B<process> did to transform the incoming
+data into a form more suitable for the current process. Often done with an
+incoming B<pipe>. See also B<C preprocessor>.
+
+=item primary maintainer
+
+The X<primary maintainer>author that PAUSE allows to assign B<co-maintainer> 
+permissions to a B<namespace>. A primary maintainer can give up this
+distinction by assigning it to another PAUSE author. See Camel chapter 19,
+“CPAN”.
+
+=item procedure
+
+AX<procedures, defined> B<subroutine>.
+
+=item process
+
+An X<processes, defined>instance of a running program. Under multitasking
+systems like Unix, two or more separate processes could be running the same
+program independently at the same time—in fact, the C<fork> function is
+designed to bring about this happy state of affairs. Under other operating
+systems, processes are sometimes called “threads”, “tasks”, or “jobs”,
+often with slight nuances in meaning.
+
+=item program
+
+See B<script>.
+
+=item program generator
+
+A system X<program generators>that algorithmically writes code for you in a
+high-level language. See also B<code generator>.
+
+=item progressive matching
+
+B<Pattern matching> X<progressive matching>X<pattern matching, progressive
+matching> matching>that picks up where it left off before.
+
+=item property
+
+See X<property>either B<instance variable> or B<character property>.
+
+=item protocol
+
+In X<protocols (term)>networking, an agreed-upon way of sending messages
+back and forth so that neither correspondent will get too confused.
+
+=item prototype
+
+An X<prototypes, about>optional part of a B<subroutine> declaration telling
+the Perl compiler how many and what flavor of arguments may be passed as
+B<actual arguments>, so you can write subroutine calls that parse much like
+built-in functions. (Or don’t parse, as the case may be.)
+
+=item pseudofunction
+
+A X<pseudofunctions>X<constructs, pseudofunctions>X<functions,
+pseudofunctions>construct that sometimes looks like a function but really
+isn’t. Usually reserved for B<lvalue> modifiers like C<my>, for B<context>
+modifiers like C<scalar>, and for the pick-your-own-quotes constructs,
+C<q//>, C<qq//>, C<qx//>, C<qw//>, C<qr//>, C<m//>, C<s///>, C<y///>, and
+C<tr///>.
+
+=item pseudohash
+
+Formerly, a reference X<pseudohashes>X<hashes, pseudohashes>to an array
+whose initial element happens to hold a reference to a hash. You used to be
+able to treat a pseudohash reference as either an array reference or a hash
+reference. Pseduohashes are no longer supported.
+
+=item pseudoliteral
+
+An B<operator> X<pseudoliterals>XC<that looks something like a B<literal>,
+such as the output-grabbing operator, <literal
+moreinfo="none">`>I<C<command>>C<`>.
+
+=item public domain
+
+Something X<public domain>not owned by anybody. Perl is copyrighted and is
+thus I<not> in the public domain—it’s just B<freely available> and B<freely
+redistributable>.
+
+=item pumpkin
+
+A X<pumpkin (term)>notional “baton” handed around the Perl community
+indicating who is the lead integrator in some arena of development.
+
+=item pumpking
+
+A B<X<pumpking>pumpkin> holder, the person in charge of pumping the pump,
+or at least priming it. Must be willing to play the part of the Great
+Pumpkin now and then.
+
+=item PV
+
+A “X<PV (pointer value)>X<pointer value (PV)>pointer value”, which is Perl
+Internals Talk for a C<char*>.
+
+=back
+
+=head2 Q
+
+=over 4
+
+=item qualified
+
+Possessing a X<qualified (term)>complete name. The symbol C<$Ent::moot> is
+qualified; C<$moot> is unqualified. A fully qualified filename is specified
+from the top-level directory.
+
+=item quantifier
+
+A X<quantifiers, about>component of a B<regular expression> specifying how
+many times the foregoing B<atom> may occur.
+
+=back
+
+=head2 R
+
+=over 4
+
+=item race condition
+
+A X<race conditions, defined>race condition exists when the result of
+several interrelated events depends on the ordering of those events, but
+that order cannot be guaranteed due to nondeterministic timing effects. If
+two or more programs, or parts of the same program, try to go through the
+same series of events, one might interrupt the work of the other. This is a
+good way to find an B<exploit>.
+
+=item readable
+
+With X<readable (term)>respect to files, one that has the proper permission
+bit set to let you access the file. With respect to computer programs, one
+that’s written well enough that someone has a chance of figuring out what
+it’s trying to do.
+
+=item reaping
+
+The last X<reaping zombie processes>rites performed by a parent B<process>
+on behalf of a deceased child process so that it doesn’t remain a
+B<zombie>.  See the C<wait> and C<waitpid> function calls.
+
+=item record
+
+A set of X<records, defined>related data values in a B<file> or B<stream>,
+often associated with a unique B<key> field. In Unix, often commensurate
+with a B<line>, or a blank-line–terminated set of lines (a “paragraph”).
+Each line of the I</etc/passwd> file is a record, keyed on login name,
+containing information about that user.
+
+=item recursion
+
+The art of X<recursion, defined>defining something (at least partly) in
+terms of itself, which is a naughty no-no in dictionaries but often works
+out okay in computer programs if you’re careful not to recurse forever
+(which is like an infinite loop with more spectacular failure modes).
+
+=item reference
+
+Where you X<references, about>look to find a pointer to information
+somewhere else. (See B<indirection>.) References come in two flavors:
+B<symbolic references> and B<hard references>.
+
+=item referent
+
+Whatever a X<referents, defined>reference refers to, which may or may not
+have a name. Common types of referents include scalars, arrays, hashes, and
+subroutines.
+
+=item regex
+
+See B<regular expression>.
+
+=item regular expression
+
+A single X<regular expressions, defined>entity with various
+interpretations, like an elephant. To a computer scientist, it’s a grammar
+for a little language in which some strings are legal and others aren’t. To
+normal people, it’s a pattern you can use to find what you’re looking for
+when it varies from case to case. Perl’s regular expressions are far from
+regular in the theoretical sense, but in regular use they work quite well.
+Here’s a regular expression: C</Oh s.*t./>. This will match strings like
+“C<Oh say can you see by the dawn's early light>” and “C<Oh sit!>”. See
+Camel chapter 5, “Pattern Matching”.
+
+=item regular expression modifier
+
+An option on a X<regular expression modifiers>X<modifiers, regular
+expression>pattern or substitution, such as C</i> to render the pattern
+case- insensitive.
+
+=item regular file
+
+A B<file> that’s X<regular files>X<files, regular>not a B<directory>, a
+B<device>, a named B<pipe> or B<socket>, or a B<symbolic link>. Perl uses
+the C<–f> file test operator to identify regular files. Sometimes called a
+“plain” file.
+
+=item relational operator
+
+An B<operator> that X<relational operators>says whether a particular
+ordering relationship is B<true> about a pair of B<operands>. Perl has both
+numeric and string relational operators. See B<collating sequence>.
+
+=item reserved words
+
+A word with a X<reserved words>X<keywords (term)>specific, built-in meaning
+to a B<compiler>, such as C<if> or C<delete>. In many languages (not Perl),
+it’s illegal to use reserved words to name anything else. (Which is why
+they’re reserved, after all.) In Perl, you just can’t use them to name
+B<labels> or B<filehandles>. Also called “keywords”.
+
+=item return value
+
+The B<value> produced X<return values>X<values, return>by a B<subroutine>
+or B<expression> when evaluated. In Perl, a return value may be either a
+B<list> or a B<scalar>.
+
+=item RFC
+
+Request For Comment, X<Request For Comment (RFC)>X<RFC (Request For
+Comment)>which despite the timid connotations is the name of a series of
+important standards documents.
+
+=item right shift
+
+A B<bit shift> X<right shift (E<gt>E<gt>) bit operator>X<bit–shift
+operators, right shift>X<E<gt>E<gt> (right shift) bit operator>that divides
+a number by some power of 2.
+
+=item role
+
+A name X<roles (term)>for a concrete set of behaviors. A role is a way to
+add behavior to a class without inheritance.
+
+=item root
+
+The X<root (term)>superuser (C<UID> == 0). Also the top-level directory of
+the filesystem.
+
+=item RTFM
+
+What X<RTFM acronym>you are told when someone thinks you should Read The
+Fine Manual.
+
+=item run phase
+
+Any X<run phase, defined>time after Perl starts running your main program.
+See also B<compile phase>. Run phase is mostly spent in B<runtime> but may
+also be spent in B<compile time> when C<require>, C<do> I<C<FILE>>, or
+C<eval> I<C<STRING>> operators are executed, or when a substitution uses
+the C</ee> modifier.
+
+=item runtime
+
+The time X<runtime (term), defined>when Perl is actually doing what your
+code says to do, as opposed to the earlier period of time when it was
+trying to figure out whether what you said made any sense whatsoever, which
+is B<compile time>.
+
+=item runtime pattern
+
+A X<runtime patterns>X<patterns, runtime>pattern that contains one or more
+variables to be interpolated before parsing the pattern as a B<regular
+expression>, and that therefore cannot be analyzed at compile time, but
+must be reanalyzed each time the pattern match operator is evaluated.
+Runtime patterns are useful but expensive.
+
+=item RV
+
+A X<Reference Value (RV)>X<RV (Reference Value)>recreational vehicle, not
+to be confused with vehicular recreation. RV also means an internal
+Reference Value of the type a B<scalar> can hold. See also B<IV> and B<NV>
+if you’re not confused yet.
+
+=item rvalue
+
+A B<value> that X<rvalue (term)>X<values, rvalue>you might find on the
+right side of an B<assignment>. See also B<lvalue>.
+
+=back
+
+=head2 S
+
+=over 4
+
+=item sandbox
+
+A X<sandbox, defined>walled off area that’s not supposed to affect beyond
+its walls. You let kids play in the sandbox instead of running in the road.
+See Camel chapter 20, “Security”.
+
+=item scalar
+
+A X<scalars, defined>simple, singular value; a number, B<string>, or
+B<reference>.
+
+=item scalar context
+
+The X<scalar context, about>X<context, scalar>situation in which an
+B<expression> is expected by its surroundings (the code calling it) to
+return a single B<value> rather than a B<list> of values. See also
+B<context> and B<list context>. A scalar context sometimes imposes
+additional constraints on the return value—see B<string context> and
+B<numeric context>. Sometimes we talk about a B<Boolean context> inside
+conditionals, but this imposes no additional constraints, since any scalar
+value, whether numeric or B<string>, is already true or false.
+
+=item scalar literal
+
+A X<scalar literals>X<literals, scalar>number or quoted B<string>—an actual
+B<value> in the text of your program, as opposed to a B<variable>.
+
+=item scalar value
+
+A X<scalar values, about>X<values, scalar>X<SV>value that happens to be a
+B<scalar> as opposed to a B<list>.
+
+=item scalar variable
+
+A B<variable> X<scalar variables, defined>X<variables, scalar>prefixed with
+C<$> that holds a single value.
+
+=item scope
+
+From X<scopes, defined>how far away you can see a variable, looking through
+one. Perl has two visibility mechanisms. It does B<dynamic scoping> of
+C<local> B<variables>, meaning that the rest of the B<block>, and any
+B<subroutines> that are called by the rest of the block, can see the
+variables that are local to the block. Perl does B<lexical scoping> of
+C<my> variables, meaning that the rest of the block can see the variable,
+but other subroutines called by the block I<cannot> see the variable.
+
+=item scratchpad
+
+The X<scratchpads>area in which a particular invocation of a particular
+file or subroutine keeps some of its temporary values, including any
+lexically scoped variables.
+
+=item script
+
+A X<scripts (term)>X<programs, defined>text B<file> that is a program
+intended to be B<executed> directly rather than B<compiled> to another form
+of file before B<execution>.
+
+Also, in the context of B<Unicode>, a writing system for a particular
+language or group of languages, such as Greek, Bengali, or Tengwar.
+
+=item script kiddie
+
+A B<cracker> X<script kiddie>who is not a B<hacker> but knows just enough
+to run canned scripts. A B<cargo-cult> programmer.
+
+=item sed
+
+A venerable Stream EDitor X<sed (Stream EDitor)>X<Stream EDitor (sed)>from
+which Perl derives some of its ideas.
+
+=item semaphore
+
+A fancy X<semaphore>kind of interlock that prevents multiple B<threads> or
+B<processes> from using up the same resources simultaneously.
+
+=item separator
+
+A B<character> X<separators>X<characters, separators>X<strings,
+separators>or B<string> that keeps two surrounding strings from being
+confused with each other. The C<split> function X<split function,
+separators and>works on separators. Not to be confused with B<delimiters>
+or B<terminators>. The “or” in the previous sentence separated the two
+alternatives.
+
+=item serialization
+
+Putting a X<serialization>X<marshalling (term)>fancy B<data structure> into
+linear order so that it can be stored as a B<string> in a disk file or
+database, or sent through a B<pipe>. Also called marshalling.
+
+=item server
+
+In networking, X<servers, defined>X<processes, server>a B<process> that
+either advertises a B<service> or just hangs around at a known location and
+waits for B<clients> who need service to get in touch with it.
+
+=item service
+
+Something X<services (term)>you do for someone else to make them happy,
+like giving them the time of day (or of their life). On some machines,
+well-known services are listed by theX<getservent function> C<getservent>
+function.
+
+=item setgid
+
+Same as B<setuid>, X<setgid program, about>only having to do with giving
+away B<group> privileges.
+
+=item setuid
+
+Said of a program X<setuid program, about>that runs with the privileges of
+its B<owner> rather than (as is usually the case) the privileges of whoever
+is running it. Also describes the bit in the mode word (B<permission bits>)
+that controls the feature. This bit must be explicitly set by the owner to
+enable this feature, and the program must be carefully written not to give
+away more privileges than it ought to.
+
+=item shared memory
+
+A piece of B<memory> X<shared memory>X<memory, shared>accessible by two
+different B<processes> who otherwise would not see each other’s memory.
+
+=item shebang
+
+Irish for the X<shebang (term)>whole McGillicuddy. In Perl culture, a
+portmanteau of “sharp” and “bang”, meaning the C<#!> sequence that tells
+the system where to find the interpreter.
+
+=item shell
+
+A B<command>-X<shell program, defined>line B<interpreter>. The program that
+interactively gives you a prompt, accepts one or more B<lines> of input,
+and executes the programs you mentioned, feeding each of them their proper
+B<arguments> and input data. Shells can also execute scripts containing
+such commands. Under Unix, typical shells include the Bourne shell
+(I</bin/sh>), the C shell (I</bin/csh>), and the Korn shell (I</bin/ksh>).
+Perl is not strictly a shell because it’s not interactive (although Perl
+programs can be interactive).
+
+=item side effects
+
+Something extra X<side effects>that happens when you evaluate an
+B<expression>. Nowadays it can refer to almost anything. For example,
+evaluating a simple assignment statement typically has the “side effect” of
+assigning a value to a variable. (And you thought assigning the value was
+your primary intent in the first place!) Likewise, assigning a value to the
+special variable C<$|> (C<$AUTOFLUSH>) has the side effect of forcing a
+flush after every C<write> or C<print> on the currently selected
+filehandle.
+
+=item sigil
+
+A glyph X<sigils, defined>used in magic. Or, for Perl, the symbol in front
+of a variable name, such as C<$>, C<@>, and C<%>.
+
+=item signal
+
+A bolt X<signals and signal handling, about>out of the blue; that is, an
+event triggered by the B<operating system>, probably when you’re least
+expecting it.
+
+=item signal handler
+
+A B<subroutine> that, X<handlers, signal>instead of being content to be
+called in the normal fashion, sits around waiting for a bolt out of the
+blue before it will deign to B<execute>. Under Perl, bolts out of the blue
+are called signals, and you send them with the C<kill> built-in. See the
+C<%SIG> hash in Camel chapter 25, “Special Names” and the section “Signals”
+in Camel chapter 15, “Interprocess Communication”.
+
+=item single inheritance
+
+The features X<single inheritance>X<inheritance, single>you got from your
+mother, if she told you that you don’t have a father. (See also
+B<inheritance> and B<multiple inheritance>.) In computer languages, the
+idea that B<classes> reproduce asexually so that a given class can only
+have one direct ancestor or B<base class>. Perl supplies no such
+restriction, though you may certainly program Perl that way if you like.
+
+=item slice
+
+A selection X<slices of elements>X<elements, slices of>of any number of
+B<elements> from a B<list>, B<array>, or B<hash>.
+
+=item slurp
+
+To read an X<slurp (term)>entire B<file> into a B<string> in one operation.
+
+=item socket
+
+An endpoint for X<sockets, defined>network communication among multiple
+B<processes> that works much like a telephone or a post office box. The
+most important thing about a socket is its B<network address> (like a phone
+number). Different kinds of sockets have different kinds of addresses—some
+look like filenames, and some don’t.
+
+=item soft reference
+
+SeeX<soft references>X<references, soft> B<symbolic reference>.
+
+=item source filter
+
+A special X<source filters>X<filters, source>kind of B<module> that does
+B<preprocessing> on your script just before it gets to the B<tokener>.
+
+=item stack
+
+A X<stacks, defined>device you can put things on the top of, and later take
+them back off in the opposite order in which you put them on. See B<LIFO>.
+
+=item standard
+
+Included X<standard (term)>in the official Perl distribution, as in a
+standard module, a standard tool, or a standard Perl B<manpage>.
+
+=item standard error
+
+The default output B<stream> for nasty remarks that don’t belong in
+B<standard output>. Represented within a Perl program by theX<STDERR
+filehandle, about> output>  B<filehandle> C<STDERR>. You can use this
+stream explicitly, but the C<die> and C<warn> built-ins write to your
+standard error stream automatically (unless trapped or otherwise
+intercepted).
+
+=item standard input
+
+The X<STDIN filehandle, about>default input B<stream> for your program,
+which if possible shouldn’t care where its data is coming from. Represented
+within a Perl program by the B<filehandle> C<STDIN>.
+
+=item standard I/O
+
+A X<standard I/O>X<I/O (Input/Output), standard>X<Input/Output (I/O),
+standard>X<STDIO filehandle>standard C library for doing B<buffered> input
+and output to the B<operating system>. (The “standard” of standard I/O is
+at most marginally related to the “standard” of standard input and output.)
+In general, Perl relies on whatever implementation of standard I/O a given
+operating system supplies, so the buffering characteristics of a Perl
+program on one machine may not exactly match those on another machine.
+Normally this only influences efficiency, not semantics. If your standard
+I/O package is doing block buffering and you want it to B<flush> the buffer
+more often, just set the C<$|> variable to a true value.
+
+=item Standard Library
+
+Everything X<Standard Perl Library, about>that comes with the official
+I<perl> distribution. Some vendor versions of I<perl> change their
+distributions, leaving out some parts or including extras. See also
+B<dual-lived>.
+
+=item standard output
+
+The X<STDOUT filehandle, about>default output B<stream> for your program,
+which if possible shouldn’t care where its data is going. Represented
+within a Perl program by the B<filehandle> C<STDOUT>.
+
+=item statement
+
+A B<command> to X<statements, about>the computer about what to do next,
+like a step in a recipe: “Add marmalade to batter and mix until mixed.” A
+statement is distinguished from a B<declaration>, which doesn’t tell the
+computer to do anything, but just to learn something.
+
+=item statement modifier
+
+A B<conditional> X<statement modifiers, about>X<modifiers, statement>or
+B<loop> that you put after the B<statement> instead of before, if you know
+what we mean.
+
+=item static
+
+Varying X<static (term)>slowly compared to something else. (Unfortunately,
+everything is relatively stable compared to something else, except for
+certain elementary particles, and we’re not so sure about them.) In
+computers, where things are supposed to vary rapidly, “static” has a
+derogatory connotation, indicating a slightly dysfunctional B<variable>,
+B<subroutine>, or B<method>. In Perl culture, the word is politely avoided.
+
+If you’re a C or C++ programmer, you might be looking for Perl’s C<state>
+keyword.
+
+=item static method
+
+No such X<static methods>X<methods, static>thing. See B<class method>.
+
+=item static scoping
+
+No such thing. See B<lexical scoping>.
+
+=item static variable
+
+No such X<static variables>X<variables, static>thing. Just use a B<lexical
+variable> in a scope larger than your B<subroutine>, or declare it with
+C<state> instead of with C<my>.
+
+=item stat structure
+
+A special X<stat structure>X<data structures, stat structure>internal spot
+in which Perl keeps the information about the last B<file> on which you
+requested information.
+
+=item status
+
+The B<value> X<status value>X<values, status>X<exit status>returned to the
+parent B<process> when one of its child processes dies. This value is
+placed in the special variable C<$?>. Its upper eight B<bits> are the exit
+status of the defunct process, and its lower eight bits identify the signal
+(if any) that the process died from. On Unix systems, this status value is
+the same as the status word returned by I<wait>(2). See C<system> in Camel
+chapter 27, “Functions”.
+
+=item STDERR
+
+See B<standard error>.
+
+=item STDIN
+
+See B<standard input>.
+
+=item STDIO
+
+See B<standard I/O>.
+
+=item STDOUT
+
+See B<standard output>.
+
+=item stream
+
+A flow X<streaming data>X<processes, streaming data>of data into or out of
+a process as a steady sequence of bytes or characters, without the
+appearance of being broken up into packets. This is a kind of
+B<interface>—the underlying B<implementation> may well break your data up
+into separate packets for delivery, but this is hidden from you.
+
+=item string
+
+A sequence X<strings, defined>of characters such as “He said !@#*&%@#*?!”.
+A string does not have to be entirely printable.
+
+=item string context
+
+The situation X<string context>X<context, string>in which an expression is
+expected by its surroundings (the code calling it) to return a B<string>.
+See also B<context> and B<numeric context>.
+
+=item stringification
+
+The process X<stringification>of producing a B<string> representation of an
+abstract object.
+
+=item struct
+
+C keyword X<struct keyword>introducing a structure definition or name.
+
+=item structure
+
+SeeX<structures> B<data structure>.
+
+=item subclass
+
+See B<derived class>.
+
+=item subpattern
+
+A X<subpatterns, defined>component of a B<regular expression> pattern.
+
+=item subroutine
+
+A X<subroutines, defined>named or otherwise accessible piece of program
+that can be invoked from elsewhere in the program in order to accomplish
+some subgoal of the program. A subroutine is often parameterized to
+accomplish different but related things depending on its input
+B<arguments>. If the subroutine returns a meaningful B<value>, it is also
+called a B<function>.
+
+=item subscript
+
+A B<value> X<subscripts>that indicates the position of a particular
+B<array> B<element> in an array.
+
+=item substitution
+
+Changing X<substitution (s///) operator, about>X<strings, substitution
+in>X<s/// (substitution) operator, about>parts of a string via the C<s///>
+operator. (We avoid use of this term to mean B<variable interpolation>.)
+
+=item substring
+
+A portion of a B<string>, X<substrings (term)>starting at a certain
+B<character> position (B<offset>) and proceeding for a certain number of
+characters.
+
+=item superclass
+
+See B<base class>.
+
+=item superuser
+
+The X<superusers>person whom the B<operating system> will let do almost
+anything. Typically your system administrator or someone pretending to be
+your system administrator. On Unix systems, the B<root> user. On Windows
+systems, usually the Administrator user.
+
+=item SV
+
+Short X<scalar values, about>X<values, scalar>for “scalar value”. But
+within the Perl interpreter, every B<referent> is treated as a member of a
+class derived from SV, in an object-oriented sort of way. Every B<value>
+inside Perl is passed around as a C language C<SV*> pointer. The SV
+B<struct> knows its own “referent type”, and the code is smart enough (we
+hope) not to try to call a B<hash> function on a B<subroutine>.
+
+=item switch
+
+An X<switches, about>X<switches>option you give on a command line to
+influence the way your program works, usually introduced with a minus sign.
+The word is also used as a nickname for a B<switch statement>.
+
+=item switch cluster
+
+The X<switch clusters>X<clusters, switch>combination of multiple command-
+line switches (I<e.g.>, C<–a –b –c>) into one switch (I<e.g.>, C<–abc>).
+Any switch with an additional B<argument> must be the last switch in a
+cluster.
+
+=item switch statement
+
+A X<switch statement>X<statements, switch>program technique that lets you
+evaluate an B<expression> and then, based on the value of the expression,
+do a multiway branch to the appropriate piece of code for that value. Also
+called a “case structure”, named after the similar Pascal construct. Most
+switch statements in Perl are spelled C<given>. See “The C<given>
+statement” in Camel chapter 4, “Statements and Declarations”.
+
+=item symbol
+
+Generally, X<symbols>X<symbols>any B<token> or B<metasymbol>. Often used
+more specifically to mean the sort of name you might find in a B<symbol
+table>.
+
+=item symbolic debugger
+
+A program X<symbolic debugger>X<debugger, about>that lets you step through
+the B<execution> of your program, stopping or printing things out here and
+there to see whether anything has gone wrong, and, if so, what. The
+“symbolic” part just means that you can talk to the debugger using the same
+symbols with which your program is written.
+
+=item symbolic link
+
+An alternate X<symbolic links>X<links, symbolic>filename that points to the
+real B<filename>, which in turn points to the real B<file>. Whenever the
+B<operating system> is trying to parse a B<pathname> containing a symbolic
+link, it merely substitutes the new name and continues parsing.
+
+=item symbolic reference
+
+A variable X<symbolic references>X<references, symbolic>whose value is the
+name of another variable or subroutine. By B<dereferencing> the first
+variable, you can get at the second one. Symbolic references are illegal
+under C<use strict "refs">.
+
+=item symbol table
+
+Where X<symbol tables, about>a B<compiler> remembers symbols. A program
+like Perl must somehow remember all the names of all the B<variables>,
+B<filehandles>, and B<subroutines> you’ve used. It does this by placing the
+names in a symbol table, which is implemented in Perl using a B<hash
+table>. There is a separate symbol table for each B<package> to give each
+package its own B<namespace>.
+
+=item synchronous
+
+Programming X<synchronous (term)>in which the orderly sequence of events
+can be determined; that is, when things happen one after the other, not at
+the same time.
+
+=item syntactic sugar
+
+An X<syntactic sugar>alternative way of writing something more easily; a
+shortcut.
+
+=item syntax
+
+From X<syntax, about>Greek σύνταξις, “with-arrangement”. How things
+(particularly symbols) are put together with each other.
+
+=item syntax tree
+
+An internal X<syntax tree>representation of your program wherein
+lower-level B<constructs> dangle off the higher-level constructs enclosing
+them.
+
+=item syscall
+
+A B<function> X<syscall function, about>call directly to the B<operating
+system>. Many of the important subroutines and functions you use aren’t
+direct system calls, but are built up in one or more layers above the
+system call level. In general, Perl programmers don’t need to worry about
+the distinction. However, if you do happen to know which Perl functions are
+really syscalls, you can predict which of these will set the C<$!>
+(C<$ERRNO>) variable on failure. Unfortunately, beginning programmers often
+confusingly employ the term “system call” to mean what happens when you
+call the Perl C<system> function, which actually involves many syscalls. To
+avoid any confusion, we nearly always say “syscall” for something you could
+call indirectly via Perl’s C<syscall> function, and never for something you
+would call with Perl’s C<system> function.
+
+=back
+
+=head2 T
+
+=over 4
+
+=item taint checks
+
+The X<taint checks, about>special bookkeeping Perl does to track the flow
+of external data through your program and disallow their use in system
+commands.
+
+=item tainted
+
+Said of X<tainted data, about>data derived from the grubby hands of a user,
+and thus unsafe for a secure program to rely on. Perl does taint checks if
+you run a B<setuid> (or B<setgid>) program, or if you use the C<–T> switch.
+
+=item taint mode
+
+Running X<taint mode>under the C<–T> switch, marking all external data as
+suspect and refusing to use it with system commands. See Camel chapter 20,
+“Security”.
+
+=item TCP
+
+Short for X<TCP (Transmission Control Protocol)>X<Transmission Control
+Protocol (TCP)>Transmission Control Protocol. A protocol wrapped around the
+Internet Protocol to make an unreliable packet transmission mechanism
+appear to the application program to be a reliable B<stream> of bytes.
+(Usually.)
+
+=item term
+
+Short for X<terms, defined>a “terminal”—that is, a leaf node of a B<syntax
+tree>. A thing that functions grammatically as an B<operand> for the
+operators in an expression.
+
+=item terminator
+
+A B<character> X<terminators (term)>X<characters, terminators>X<strings,
+terminators in>or B<string> that marks the end of another string. The C<$/>
+variable contains the string that terminates a C<readline> operation, which
+C<chomp> deletes from the end. Not to be confused with B<delimiters> or
+B<separators>. The period at the end of this sentence is a terminator.
+
+=item ternary
+
+An B<operator> X<ternary operators>taking three B<operands>. Sometimes
+pronounced B<trinary>.
+
+=item text
+
+A B<string> or B<file> X<text, defined>X<strings, text>X<files,
+text>X<text>containing primarily printable characters.
+
+=item thread
+
+Like a X<threads (term)>forked process, but without B<fork>’s inherent
+memory protection. A thread is lighter weight than a full process, in that
+a process could have multiple threads running around in it, all fighting
+over the same process’s memory space unless steps are taken to protect
+threads from one another.
+
+=item tie
+
+The bond X<tied variables, about>between a magical variable and its
+implementation class. See the C<tie> function in Camel chapter 27,
+“Functions” and Camel chapter 14, “Tied Variables”.
+
+=item titlecase
+
+The case X<titlecase characters>X<characters, titlecase>used for capitals
+that are followed by lowercase characters instead of by more capitals.
+Sometimes called sentence case or headline case. English doesn’t use
+Unicode titlecase, but casing rules for English titles are more complicated
+than simply capitalizing each word’s first character.
+
+=item TMTOWTDI
+
+There’s More Than One Way To Do It, the Perl MottoX<TMTOWTDI acronym>. The
+notion that there can be more than one valid path to solving a programming
+problem in context. (This doesn’t mean that more ways are always better or
+that all possible paths are equally desirable—just that there need not be
+One True Way.)
+
+=item token
+
+A morpheme X<tokens, defined>in a programming language, the smallest unit
+of text with semantic significance.
+
+=item tokener
+
+A module that X<tokeners, defined>breaks a program text into a sequence of
+B<tokens> for later analysis by a parser.
+
+=item tokenizing
+
+Splitting up a X<tokenizing>program text into B<tokens>. Also known as
+“lexing”, in which case you get “lexemes” instead of tokens.
+
+=item toolbox approach
+
+The notion that, X<toolbox approach>with a complete set of simple tools
+that work well together, you can build almost anything you want. Which is
+fine if you’re assembling a tricycle, but if you’re building a
+defranishizing comboflux regurgalator, you really want your own machine
+shop in which to build special tools. Perl is sort of a machine shop.
+
+=item topic
+
+The thing you’re X<topics (term)>working on. Structures like
+C<while(E<lt>E<gt>)>, C<for>, C<foreach>, and C<given> set the topic for
+you by assigning to C<$_>, the default (I<topic>) variable.
+
+=item transliterate
+
+To turn one X<tr/// (transliteration) operator, about>X<strings,
+transliteration of>X<transliteration (tr///) operator, about>string
+representation into another by mapping each character of the source string
+to its corresponding character in the result string. Not to be confused
+with translation: for example, Greek I<πολύχρωμος> transliterates into
+I<polychromos> but translates into I<many-colored>. See the C<tr///>
+operator in Camel chapter 5, “Pattern Matching”.
+
+=item trigger
+
+An event X<triggers (term)>that causes a B<handler> to be run.
+
+=item trinary
+
+Not a X<trinary operators>stellar system with three stars, but an
+B<operator> taking three B<operands>. Sometimes pronounced B<ternary>.
+
+=item troff
+
+A venerable X<troff language>typesetting language from which Perl derives
+the name of its C<$%> variable and which is secretly used in the production
+of Camel books.
+
+=item true
+
+Any X<true values>X<values, true>scalar value that doesn’t evaluate to 0 or
+C<"">.
+
+=item truncating
+
+Emptying a X<truncate function>X<files, truncating>file of existing
+contents, either automatically when opening a file for writing or
+explicitly via the C<truncate> function.
+
+=item type
+
+SeeX<type> B<data type> and B<class>.
+
+=item type casting
+
+Converting X<type casting>data from one type to another. C permits this.
+Perl does not need it. Nor want it.
+
+=item typedef
+
+A type X<typedef>definition in the C and C++ languages.
+
+=item typed lexical
+
+A B<lexical variable> X<typed lexicals>X<lexical variables, typed
+lexicals>X<variables, variable> lexical>that is declared with a B<class>
+type: C<my Pony $bill>.
+
+=item typeglob
+
+Use of X<typeglobs, defined>a single identifier, prefixed with C<*>. For
+example, C<*name> stands for any or all of C<$name>, C<@name>, C<%name>,
+C<&name>, or just C<name>. How you use it determines whether it is
+interpreted as all or only one of them. See “Typeglobs and Filehandles” in
+Camel chapter 2, “Bits and Pieces”.
+
+=item typemap
+
+A description of X<typemap>how C types may be transformed to and from Perl
+types within an B<extension> module written in B<XS>.
+
+=back
+
+=head2 U
+
+=over 4
+
+=item UDP
+
+User Datagram Protocol, the X<User Datagram Protocol (UDP)>X<UDP (User
+Datagram Protocol)>X<datagrams, UDP support>typical way to send
+B<datagrams> over the Internet.
+
+=item UID
+
+A user ID. X<UID (user ID)>X<user ID (UID)>Often used in the context of
+B<file> or B<process> ownership.
+
+=item umask
+
+A X<umask function>mask of those B<permission bits> that should be forced
+off when creating files or directories, in order to establish a policy of
+whom you’ll ordinarily deny access to. See the C<umask> function.
+
+=item unary operator
+
+An X<unary operators, about>operator with only one B<operand>, like C<!> or
+C<chdir>. Unary operators are usually prefix operators; that is, they
+precede their operand. The C<++> and C<––> operators can be either prefix
+or postfix. (Their position I<does> change their meanings.)
+
+=item Unicode
+
+A character set X<Unicode, about>comprising all the major character sets of
+the world, more or less. See L<http://www.unicode.org>.
+
+=item Unix
+
+A very large X<Unix language>and constantly evolving language with several
+alternative and largely incompatible syntaxes, in which anyone can define
+anything any way they choose, and usually do. Speakers of this language
+think it’s easy to learn because it’s so easily twisted to one’s own ends,
+but dialectical differences make tribal intercommunication nearly
+impossible, and travelers are often reduced to a pidgin-like subset of the
+language. To be universally understood, a Unix shell programmer must spend
+years of study in the art. Many have abandoned this discipline and now
+communicate via an Esperanto-like language called Perl.
+
+In ancient times, Unix was also used to refer to some code that a couple of
+people at Bell Labs wrote to make use of a PDP-7 computer that wasn’t doing
+much of anything else at the time.
+
+=item uppercase
+
+In Unicode, X<uppercase characters>X<characters, uppercase>not just
+characters with the General Category of Uppercase Letter, but any character
+with the Uppercase property, including some Letter Numbers and Symbols. Not
+to be confused with B<titlecase>.
+
+=back
+
+=head2 V
+
+=over 4
+
+=item value
+
+An actual piece X<values, defined>of data, in contrast to all the
+variables, references, keys, indices, operators, and whatnot that you need
+to access the value.
+
+=item variable
+
+A named storage X<variables, defined>X<variables>location that can hold any
+of various kinds of B<value>, as your program sees fit.
+
+=item variable interpolation
+
+TheX<variable interpolation>X<interpolation, variable> B<interpolation> of
+a scalar or array variable into a string.
+
+=item variadic
+
+Said of X<variadic (term)>a B<function> that happily receives an
+indeterminate number of B<actual arguments>.
+
+=item vector
+
+Mathematical X<vectors>jargon for a list of B<scalar values>.
+
+=item virtual
+
+Providing the X<virtual (term)>appearance of something without the reality,
+as in: virtual memory is not real memory. (See also B<memory>.) The
+opposite of “virtual” is “transparent”, which means providing the reality
+of something without the appearance, as in: Perl handles the
+variable-length UTF‑8 character encoding transparently.
+
+=item void context
+
+A form X<void context>X<context, void>of B<scalar context> in which an
+B<expression> is not expected to return any B<value> at all and is
+evaluated for its B<side effects> alone.
+
+=item v-string
+
+A “version” or “vector”X<v–strings>X<strings, v–strings> B<string>
+specified with a C<v> followed by a series of decimal integers in dot
+notation, for instance, C<v1.20.300.4000>. Each number turns into a
+B<character> with the specified ordinal value. (The C<v> is optional when
+there are at least three integers.)
+
+=back
+
+=head2 W
+
+=over 4
+
+=item warning
+
+A message X<warning messages>X<STDERR filehandle, warning messages
+and>printed to the C<STDERR> stream to the effect that something might be
+wrong but isn’t worth blowing up over. See C<warn> in Camel chapter 27,
+“Functions” and the C<warnings> pragma in Camel chapter 28, “Pragmantic
+Modules”.
+
+=item watch expression
+
+An expression which, X<watch expression>X<expressions, watch>when its value
+changes, causes a breakpoint in the Perl debugger.
+
+=item weak reference
+
+A X<weak references>X<references, weak>reference that doesn’t get counted
+normally. When all the normal references to data disappear, the data
+disappears. These are useful for circular references that would never
+disappear otherwise.
+
+=item whitespace
+
+A B<character> X<whitespace characters>X<characters, whitespace>that moves
+your cursor but doesn’t otherwise put anything on your screen. Typically
+refers to any of: space, tab, line feed, carriage return, or form feed. In
+Unicode, matches many other characters that Unicode considers whitespace,
+including the ɴ-ʙʀ .
+
+=item word
+
+In normal “computerese”, the X<words (term)>piece of data of the size most
+efficiently handled by your computer, typically 32 bits or so, give or take a
+few powers of 2. In Perl culture, it more often refers to an alphanumeric
+B<identifier> (including underscores), or to a string of nonwhitespace
+B<characters> bounded by whitespace or string boundaries.
+
+=item working directory
+
+Your X<working directory>X<directories, working>current B<directory>, from
+which relative pathnames are interpreted by the B<operating system>. The
+operating system knows your current directory because you told it with a
+C<chdir>, or because you started out in the place where your parent
+B<process> was when you were born.
+
+=item wrapper
+
+A program X<wrappers (term)>or subroutine that runs some other program or
+subroutine for you, modifying some of its input or output to better suit
+your purposes.
+
+=item WYSIWYG
+
+What X<WYSIWYG acronym>You See Is What You Get. Usually used when something
+that appears on the screen matches how it will eventually look, like Perl’s
+C<format> declarations. Also used to mean the opposite of magic because
+everything works exactly as it appears, as in the three- argument form of
+C<open>.
+
+=back
+
+=head2 X
+
+=over 4
+
+=item XS
+
+An X<XS (eXternal Subroutine)>X<eXternal Subroutine (XS)>extraordinarily
+exported, expeditiously excellent, expressly eXternal Subroutine, executed
+in existing C or C++ or in an exciting extension language called
+(exasperatingly) XS.
+
+=item XSUB
+
+An X<XSUB (term)>external B<subroutine> defined in B<XS>.
+
+=back
+
+=head2 Y
+
+=over 4
+
+=item yacc
+
+Yet X<yacc acronym>Another Compiler Compiler. A parser generator without
+which Perl probably would not have existed. See the file I<perly.y> in the
+Perl source distribution.
+
+=back
+
+=head2 Z
+
+=over 4
+
+=item zero width
+
+A X<zero–width assertions>X<subpatterns, zero–width assertions>X<assertions
+(in regexes), zero–width>subpattern B<assertion> matching the B<null
+string> between B<characters>.
+
+=item zombie
+
+A process X<zombie processes>X<processes, zombie>that has died (exited) but
+whose parent has not yet received proper notification of its demise by
+virtue of having called C<wait> or C<waitpid>. If you C<fork>, you must
+clean up after your child processes when they exit; otherwise, the process
+table will fill up and your system administrator will Not Be Happy with
+you.
+
+=back
+
+=head1 AUTHOR AND COPYRIGHT
+
+Based on the Glossary of I<Programming Perl>, Fourth Edition,
+by Tom Christiansen, brian d foy, Larry Wall, & Jon Orwant.
+Copyright (c) 2000, 1996, 1991, 2012 O'Reilly Media, Inc.
+This document may be distributed under the same terms as Perl itself.

Added: vendor/perl/dist/dist/B-Deparse/t/core.t
===================================================================
--- vendor/perl/dist/dist/B-Deparse/t/core.t	                        (rev 0)
+++ vendor/perl/dist/dist/B-Deparse/t/core.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,622 @@
+#!./perl
+
+# Test the core keywords.
+#
+# Initially this test file just checked that CORE::foo got correctly
+# deparsed as CORE::foo, hence the name. It's since been expanded
+# to fully test both CORE:: verses none, plus that any arguments
+# are correctly deparsed. It also cross-checks against regen/keywords.pl
+# to make sure we've tested all keywords, and with the correct strength.
+#
+# A keyword can be either weak or strong. Strong keywords can never be
+# overridden, while weak ones can. So deparsing of weak keywords depends
+# on whether a sub of that name has been created:
+#
+# for both:         keyword(..) deparsed as keyword(..)
+# for weak:   CORE::keyword(..) deparsed as CORE::keyword(..)
+# for strong: CORE::keyword(..) deparsed as keyword(..)
+#
+# Three permutations of lex/nonlex args are checked for:
+#
+#   foo($a,$b,$c,...)
+#   foo(my $a,$b,$c,...)
+#   my ($a,$b,$c,...); foo($a,$b,$c,...)
+#
+# Note that tests for prefixing feature.pm-enabled keywords with CORE:: when
+# feature.pm is not enabled are in deparse.t, as they fit that format better.
+
+
+BEGIN {
+    require Config;
+    if (($Config::Config{extensions} !~ /\bB\b/) ){
+        print "1..0 # Skip -- Perl configured without B module\n";
+        exit 0;
+    }
+}
+
+use strict;
+use Test::More;
+plan tests => 2063;
+
+use feature (sprintf(":%vd", $^V)); # to avoid relying on the feature
+                                    # logic to add CORE::
+use B::Deparse;
+my $deparse = new B::Deparse;
+
+my %SEEN;
+my %SEEN_STRENGH;
+
+# for a given keyword, create a sub of that name, then
+# deparse "() = $expr", and see if it matches $expected_expr
+
+sub testit {
+    my ($keyword, $expr, $expected_expr) = @_;
+
+    $expected_expr //= $expr;
+    $SEEN{$keyword} = 1;
+
+
+    # lex=0:   () = foo($a,$b,$c)
+    # lex=1:   my ($a,$b); () = foo($a,$b,$c)
+    # lex=2:   () = foo(my $a,$b,$c)
+    for my $lex (0, 1, 2) {
+	if ($lex) {
+	    next if $keyword =~ /local|our|state|my/;
+	    # XXX glob(my $x) incorrectly becomes <my $x>
+	    next if $keyword eq 'glob';
+	}
+	my $vars = $lex == 1 ? 'my($a, $b, $c, $d, $e);' . "\n    " : "";
+
+	if ($lex == 2) {
+	    my $repl = 'my $a';
+	    if ($expr =~ /\bmap\(\$a|CORE::(chomp|chop|lstat|stat)\b/) {
+		# for some reason only these do:
+		#  'foo my $a, $b,' => foo my($a), $b, ...
+		#  the rest don't parenthesize the my var.
+		$repl = 'my($a)';
+	    }
+	    s/\$a/$repl/ for $expr, $expected_expr;
+	}
+
+	my $desc = "$keyword: lex=$lex $expr => $expected_expr";
+
+
+	my $code_ref;
+	{
+	    package test;
+	    use subs ();
+	    import subs $keyword;
+	    $code_ref = eval "no strict 'vars'; sub { ${vars}() = $expr }"
+			    or die "$@ in $expr";
+	}
+
+	my $got_text = $deparse->coderef2text($code_ref);
+
+	unless ($got_text =~ /^{
+    package test;
+    use strict 'refs', 'subs';
+    use feature [^\n]+
+    \Q$vars\E\(\) = (.*)
+}/s) {
+	    ::fail($desc);
+	    ::diag("couldn't extract line from boilerplate\n");
+	    ::diag($got_text);
+	    return;
+	}
+
+	my $got_expr = $1;
+	is $got_expr, $expected_expr, $desc;
+    }
+}
+
+
+# Deparse can't distinguish 'and' from '&&' etc
+my %infix_map = qw(and && or ||);
+
+
+# test a keyword that is a binary infix operator, like 'cmp'.
+# $parens - "$a op $b" is deparsed as "($a op $b)"
+# $strong - keyword is strong
+
+sub do_infix_keyword {
+    my ($keyword, $parens, $strong) = @_;
+    $SEEN_STRENGH{$keyword} = $strong;
+    my $expr = "(\$a $keyword \$b)";
+    my $nkey = $infix_map{$keyword} // $keyword;
+    my $expr = "(\$a $keyword \$b)";
+    my $exp = "\$a $nkey \$b";
+    $exp = "($exp)" if $parens;
+    $exp .= ";";
+    # with infix notation, a keyword is always interpreted as core,
+    # so no need for Deparse to disambiguate with CORE::
+    testit $keyword, "(\$a CORE::$keyword \$b)", $exp;
+    testit $keyword, "(\$a $keyword \$b)", $exp;
+    if (!$strong) {
+	testit $keyword, "$keyword(\$a, \$b)", "$keyword(\$a, \$b);";
+    }
+}
+
+# test a keyword that is as tandard op/function, like 'index(...)'.
+# narg    - how many args to test it with
+# $parens - "foo $a, $b" is deparsed as "foo($a, $b)"
+# $dollar - an extra '$_' arg will appear in the deparsed output
+# $strong - keyword is strong
+
+
+sub do_std_keyword {
+    my ($keyword, $narg, $parens, $dollar, $strong) = @_;
+
+    $SEEN_STRENGH{$keyword} = $strong;
+
+    for my $core (0,1) { # if true, add CORE:: to keyword being deparsed
+	my @code;
+	for my $do_exp(0, 1) { # first create expr, then expected-expr
+	    my @args = map "\$$_", (undef,"a".."z")[1..$narg];
+	    push @args, '$_' if $dollar && $do_exp && ($strong || $core);
+	    my $args = join(', ', @args);
+	    $args = ((!$core && !$strong) || $parens)
+			? "($args)"
+			:  @args ? " $args" : "";
+	    push @code, (($core && !($do_exp && $strong)) ? "CORE::" : "")
+						       	. "$keyword$args;";
+	}
+	testit $keyword, @code; # code[0]: to run; code[1]: expected
+    }
+}
+
+
+while (<DATA>) {
+    chomp;
+    s/#.*//;
+    next unless /\S/;
+
+    my @fields = split;
+    die "not 3 fields" unless @fields == 3;
+    my ($keyword, $args, $flags) = @fields;
+
+    $args = '012' if $args eq '@';
+
+    my $parens  = $flags =~ s/p//;
+    my $invert1 = $flags =~ s/1//;
+    my $dollar  = $flags =~ s/\$//;
+    my $strong  = $flags =~ s/\+//;
+    die "unrecognised flag(s): '$flags'" unless $flags =~ /^-?$/;
+
+    if ($args eq 'B') { # binary infix
+	die "$keyword: binary (B) op can't have '\$' flag\\n" if $dollar;
+	die "$keyword: binary (B) op can't have '1' flag\\n" if $invert1;
+	do_infix_keyword($keyword, $parens, $strong);
+    }
+    else {
+	my @narg = split //, $args;
+	for my $n (0..$#narg) {
+	    my $narg = $narg[$n];
+	    my $p = $parens;
+	    $p = !$p if ($n == 0 && $invert1);
+	    do_std_keyword($keyword, $narg, $p, (!$n && $dollar), $strong);
+	}
+    }
+}
+
+
+# Special cases
+
+testit dbmopen  => 'CORE::dbmopen(%foo, $bar, $baz);';
+testit dbmclose => 'CORE::dbmclose %foo;';
+
+testit delete   => 'CORE::delete $h{\'foo\'};', 'delete $h{\'foo\'};';
+testit delete   => 'delete $h{\'foo\'};',       'delete $h{\'foo\'};';
+
+# do is listed as strong, but only do { block } is strong;
+# do $file is weak,  so test it separately here
+testit do       => 'CORE::do $a;';
+testit do       => 'do $a;',                     'do($a);';
+testit do       => 'CORE::do { 1 }',
+		   "do {\n        1\n    };";
+testit do       => 'do { 1 };',
+		   "do {\n        1\n    };";
+
+testit each     => 'CORE::each %bar;';
+
+testit eof      => 'CORE::eof();';
+
+testit exists   => 'CORE::exists $h{\'foo\'};', 'exists $h{\'foo\'};';
+testit exists   => 'exists $h{\'foo\'};',       'exists $h{\'foo\'};';
+
+testit exec     => 'CORE::exec($foo $bar);';
+
+# glob($x) gets deparsed as glob("$x").
+# Whether this is correct, I don't know; but I didn't want
+# to start messing with the whole glob/readline/<> mess - DAPM.
+testit glob     => 'glob;',                       'glob("$_");';
+testit glob     => 'CORE::glob;',                 'glob("$_");';
+testit glob     => 'glob $a;',                    'glob("$a");';
+testit glob     => 'CORE::glob $a;',              'glob("$a");';
+
+testit grep     => 'CORE::grep { $a } $b, $c',    'grep({$a;} $b, $c);';
+
+testit keys     => 'CORE::keys %bar;';
+
+testit map      => 'CORE::map { $a } $b, $c',    'map({$a;} $b, $c);';
+
+testit not      => '3 unless CORE::not $a && $b;';
+
+testit readline => 'CORE::readline $a . $b;';
+
+testit readpipe => 'CORE::readpipe $a + $b;';
+
+testit reverse  => 'CORE::reverse sort(@foo);';
+
+# note that the test does '() = split...' which is why the
+# limit is optimised to 1
+testit split    => 'split;',                     q{split(' ', $_, 1);};
+testit split    => 'CORE::split;',               q{split(' ', $_, 1);};
+testit split    => 'split $a;',                  q{split(/$a/u, $_, 1);};
+testit split    => 'CORE::split $a;',            q{split(/$a/u, $_, 1);};
+testit split    => 'split $a, $b;',              q{split(/$a/u, $b, 1);};
+testit split    => 'CORE::split $a, $b;',        q{split(/$a/u, $b, 1);};
+testit split    => 'split $a, $b, $c;',          q{split(/$a/u, $b, $c);};
+testit split    => 'CORE::split $a, $b, $c;',    q{split(/$a/u, $b, $c);};
+
+testit sub      => 'CORE::sub { $a, $b }',
+			"sub {\n        \$a, \$b;\n    }\n    ;";
+
+testit system   => 'CORE::system($foo $bar);';
+
+testit values   => 'CORE::values %bar;';
+
+
+# XXX These are deparsed wrapped in parens.
+# whether they should be, I don't know!
+
+testit dump     => '(CORE::dump);';
+testit dump     => '(CORE::dump FOO);';
+testit goto     => '(CORE::goto);',     '(goto);';
+testit goto     => '(CORE::goto FOO);', '(goto FOO);';
+testit last     => '(CORE::last);',     '(last);';
+testit last     => '(CORE::last FOO);', '(last FOO);';
+testit next     => '(CORE::next);',     '(next);';
+testit next     => '(CORE::next FOO);', '(next FOO);';
+testit redo     => '(CORE::redo);',     '(redo);';
+testit redo     => '(CORE::redo FOO);', '(redo FOO);';
+testit redo     => '(CORE::redo);',     '(redo);';
+testit redo     => '(CORE::redo FOO);', '(redo FOO);';
+testit return   => '(return);',         '(return);';
+testit return   => '(CORE::return);',   '(return);';
+
+# these are the keywords I couldn't think how to test within this framework
+
+my %not_tested = map { $_ => 1} qw(
+    __DATA__
+    __END__
+    __FILE__
+    __LINE__
+    __PACKAGE__
+    __SUB__
+    AUTOLOAD
+    BEGIN
+    CHECK
+    CORE
+    DESTROY
+    END
+    INIT
+    UNITCHECK
+    default
+    else
+    elsif
+    for
+    foreach
+    format
+    given
+    if
+    m
+    no
+    package
+    q
+    qq
+    qr
+    qw
+    qx
+    require
+    s
+    tr
+    unless
+    until
+    use
+    when
+    while
+    y
+);
+
+
+
+# Sanity check against keyword data:
+# make sure we haven't missed any keywords,
+# and that we got the strength right.
+
+SKIP:
+{
+    skip "sanity checks when not PERL_CORE", 1 unless defined $ENV{PERL_CORE};
+    my $count = 0;
+    my $file = '../../regen/keywords.pl';
+    my $pass = 1;
+    if (open my $fh, '<', $file) {
+	while (<$fh>) {
+	    last if /^__END__$/;
+	}
+	while (<$fh>) {
+	    next unless /^([+\-])(\w+)$/;
+	    my ($strength, $key) = ($1, $2);
+	    $strength = ($strength eq '+') ? 1 : 0;
+	    $count++;
+	    if (!$SEEN{$key} && !$not_tested{$key}) {
+		diag("keyword '$key' seen in $file, but not tested here!!");
+		$pass = 0;
+	    }
+	    if (exists $SEEN_STRENGH{$key} and $SEEN_STRENGH{$key} != $strength) {
+		diag("keyword '$key' strengh as seen in $file doen't match here!!");
+		$pass = 0;
+	    }
+	}
+    }
+    else {
+	diag("Can't open $file: $!");
+	$pass = 0;
+    }
+    # insanity check
+    if ($count < 200) {
+	diag("Saw $count keywords: less than 200!");
+	$pass = 0;
+    }
+    ok($pass, "sanity checks");
+}
+
+
+
+__DATA__
+#
+# format:
+#   keyword args flags
+#
+# args consists of:
+#  * one of more digits indictating which lengths of args the function accepts,
+#  * or 'B' to indiate a binary infix operator,
+#  * or '@' to indicate a list function.
+#
+# Flags consists of the following (or '-' if no flags):
+#    + : strong keyword: can't be overrriden
+#    p : the args are parenthesised on deparsing;
+#    1 : parenthesising of 1st arg length is inverted
+#        so '234 p1' means: foo a1,a2;  foo(a1,a2,a3); foo(a1,a2,a3,a4)
+#    $ : on the first argument length, there is an implicit extra
+#        '$_' arg which will appear on deparsing;
+#        e.g. 12p$  will be tested as: foo(a1);     foo(a1,a2);
+#                     and deparsed as: foo(a1, $_); foo(a1,a2);
+#
+# XXX Note that we really should get this data from regen/keywords.pl
+# and regen/opcodes (augmented if necessary), rather than duplicating it
+# here.
+
+__SUB__          0     -
+abs              01    $
+accept           2     p
+alarm            01    $
+and              B     -
+atan2            2     p
+bind             2     p
+binmode          12    p
+bless            1     p
+break            0     -
+caller           0     -
+chdir            01    -
+chmod            @     p1
+chomp            @     $
+chop             @     $
+chown            @     p1
+chr              01    $
+chroot           01    $
+close            01    -
+closedir         1     -
+cmp              B     -
+connect          2     p
+continue         0     -
+cos              01    $
+crypt            2     p
+# dbmopen  handled specially
+# dbmclose handled specially
+defined          01    $+
+# delete handled specially
+die              @     p1
+# do handled specially
+# dump handled specially
+each             1     - # also tested specially
+endgrent         0     -
+endhostent       0     -
+endnetent        0     -
+endprotoent      0     -
+endpwent         0     -
+endservent       0     -
+eof              01    - # also tested specially
+eq               B     -
+eval             01    $+
+evalbytes        01    $
+exec             @     p1 # also tested specially
+# exists handled specially
+exit             01    -
+exp              01    $
+fc               01    $
+fcntl            3     p
+fileno           1     -
+flock            2     p
+fork             0     -
+formline         2     p
+ge               B     -
+getc             01    -
+getgrent         0     -
+getgrgid         1     -
+getgrnam         1     -
+gethostbyaddr    2     p
+gethostbyname    1     -
+gethostent       0     -
+getlogin         0     -
+getnetbyaddr     2     p
+getnetbyname     1     -
+getnetent        0     -
+getpeername      1     -
+getpgrp          1     -
+getppid          0     -
+getpriority      2     p
+getprotobyname   1     -
+getprotobynumber 1     p
+getprotoent      0     -
+getpwent         0     -
+getpwnam         1     -
+getpwuid         1     -
+getservbyname    2     p
+getservbyport    2     p
+getservent       0     -
+getsockname      1     -
+getsockopt       3     p
+# given handled specially
+grep             123   p+ # also tested specially
+# glob handled specially
+# goto handled specially
+gmtime           01    -
+gt               B     -
+hex              01    $
+index            23    p
+int              01    $
+ioctl            3     p
+join             123   p
+keys             1     - # also tested specially
+kill             123   p
+# last handled specially
+lc               01    $
+lcfirst          01    $
+le               B     -
+length           01    $
+link             2     p
+listen           2     p
+local            1     p+
+localtime        01    -
+lock             1     -
+log              01    $
+lstat            01    $
+lt               B     -
+map              123   p+ # also tested specially
+mkdir            @     p$
+msgctl           3     p
+msgget           2     p
+msgrcv           5     p
+msgsnd           3     p
+my               123   p+ # skip with 0 args, as my() => ()
+ne               B     -
+# next handled specially
+# not handled specially
+oct              01    $
+open             12345 p
+opendir          2     p
+or               B     -
+ord              01    $
+our              123   p+ # skip with 0 args, as our() => ()
+pack             123   p
+pipe             2     p
+pop              01    1
+pos              01    $+
+print            @     p$+
+printf           @     p$+
+prototype        1     +
+push             123   p
+quotemeta        01    $
+rand             01    -
+read             34    p
+readdir          1     -
+# readline handled specially
+readlink         01    $
+# readpipe handled specially
+recv             4     p
+# redo handled specially
+ref              01    $
+rename           2     p
+# XXX This code prints 'Undefined subroutine &main::require called':
+#   use subs (); import subs 'require';
+#   eval q[no strict 'vars'; sub { () = require; }]; print $@;
+# so disable for now
+#require          01    $+
+reset            01    -
+# return handled specially
+reverse          @     p1 # also tested specially
+rewinddir        1     -
+rindex           23    p
+rmdir            01    $
+say              @     p$+
+scalar           1     +
+seek             3     p
+seekdir          2     p
+select           014   p1
+semctl           4     p
+semget           3     p
+semop            2     p
+send             34    p
+setgrent         0     -
+sethostent       1     -
+setnetent        1     -
+setpgrp          2     p
+setpriority      3     p
+setprotoent      1     -
+setpwent         0     -
+setservent       1     -
+setsockopt       4     p
+shift            01    1
+shmctl           3     p
+shmget           3     p
+shmread          4     p
+shmwrite         4     p
+shutdown         2     p
+sin              01    $
+sleep            01    -
+socket           4     p
+socketpair       5     p
+sort             @     p+
+# split handled specially
+splice           12345 p
+sprintf          123   p
+sqrt             01    $
+srand            01    -
+stat             01    $
+state            123   p+ # skip with 0 args, as state() => ()
+study            01    $+
+# sub handled specially
+substr           234   p
+symlink          2     p
+syscall          2     p
+sysopen          34    p
+sysread          34    p
+sysseek          3     p
+system           @     p1 # also tested specially
+syswrite         234   p
+tell             01    -
+telldir          1     -
+tie              234   p
+tied             1     -
+time             0     -
+times            0     -
+truncate         2     p
+uc               01    $
+ucfirst          01    $
+umask            01    -
+undef            01    +
+unlink           @     p$
+unpack           12    p$
+unshift          1     p
+untie            1     -
+utime            @     p1
+values           1     - # also tested specially
+vec              3     p
+wait             0     -
+waitpid          2     p
+wantarray        0     -
+warn             @     p1
+write            01    -
+x                B     -
+xor              B     p

Added: vendor/perl/dist/dist/Carp/Makefile.PL
===================================================================
--- vendor/perl/dist/dist/Carp/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+use warnings;
+use strict;
+
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+	NAME => "Carp",
+	VERSION_FROM => "lib/Carp.pm",
+	ABSTRACT_FROM => "lib/Carp.pm",
+	PREREQ_PM => {
+		"Exporter" => 0,
+		"IPC::Open3" => "1.0103",
+		"Test::More" => 0,
+		"strict" => 0,
+		"warnings" => 0,
+	},
+	LICENSE => "perl",
+	INSTALLDIRS => "$]" < 5.011 ? "perl" : "site",
+);
+
+1;

Added: vendor/perl/dist/dist/Carp/lib/Carp/Heavy.pm
===================================================================
--- vendor/perl/dist/dist/Carp/lib/Carp/Heavy.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/lib/Carp/Heavy.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+package Carp::Heavy;
+
+use Carp ();
+
+our $VERSION = '1.29';
+
+1;
+
+# Most of the machinery of Carp used to be here.
+# It has been moved in Carp.pm now, but this placeholder remains for
+# the benefit of modules that like to preload Carp::Heavy directly.
+# This must load Carp, because some modules rely on the historical
+# behaviour of Carp::Heavy loading Carp.

Added: vendor/perl/dist/dist/Carp/lib/Carp.pm
===================================================================
--- vendor/perl/dist/dist/Carp/lib/Carp.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/lib/Carp.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,709 @@
+package Carp;
+
+{ use 5.006; }
+use strict;
+use warnings;
+
+BEGIN {
+    no strict "refs";
+    if(exists($::{"utf8::"}) && exists(*{$::{"utf8::"}}{HASH}->{"is_utf8"}) &&
+	    defined(*{*{$::{"utf8::"}}{HASH}->{"is_utf8"}}{CODE})) {
+	*is_utf8 = \&{"utf8::is_utf8"};
+    } else {
+	*is_utf8 = sub { 0 };
+    }
+}
+
+BEGIN {
+    no strict "refs";
+    if(exists($::{"utf8::"}) && exists(*{$::{"utf8::"}}{HASH}->{"downgrade"}) &&
+	    defined(*{*{$::{"utf8::"}}{HASH}->{"downgrade"}}{CODE})) {
+	*downgrade = \&{"utf8::downgrade"};
+    } else {
+	*downgrade = sub {};
+    }
+}
+
+our $VERSION = '1.29';
+
+our $MaxEvalLen = 0;
+our $Verbose    = 0;
+our $CarpLevel  = 0;
+our $MaxArgLen  = 64;    # How much of each argument to print. 0 = all.
+our $MaxArgNums = 8;     # How many arguments to print. 0 = all.
+
+require Exporter;
+our @ISA       = ('Exporter');
+our @EXPORT    = qw(confess croak carp);
+our @EXPORT_OK = qw(cluck verbose longmess shortmess);
+our @EXPORT_FAIL = qw(verbose);    # hook to enable verbose mode
+
+# The members of %Internal are packages that are internal to perl.
+# Carp will not report errors from within these packages if it
+# can.  The members of %CarpInternal are internal to Perl's warning
+# system.  Carp will not report errors from within these packages
+# either, and will not report calls *to* these packages for carp and
+# croak.  They replace $CarpLevel, which is deprecated.    The
+# $Max(EvalLen|(Arg(Len|Nums)) variables are used to specify how the eval
+# text and function arguments should be formatted when printed.
+
+our %CarpInternal;
+our %Internal;
+
+# disable these by default, so they can live w/o require Carp
+$CarpInternal{Carp}++;
+$CarpInternal{warnings}++;
+$Internal{Exporter}++;
+$Internal{'Exporter::Heavy'}++;
+
+# if the caller specifies verbose usage ("perl -MCarp=verbose script.pl")
+# then the following method will be called by the Exporter which knows
+# to do this thanks to @EXPORT_FAIL, above.  $_[1] will contain the word
+# 'verbose'.
+
+sub export_fail { shift; $Verbose = shift if $_[0] eq 'verbose'; @_ }
+
+sub _cgc {
+    no strict 'refs';
+    return \&{"CORE::GLOBAL::caller"} if defined &{"CORE::GLOBAL::caller"};
+    return;
+}
+
+sub longmess {
+    # Icky backwards compatibility wrapper. :-(
+    #
+    # The story is that the original implementation hard-coded the
+    # number of call levels to go back, so calls to longmess were off
+    # by one.  Other code began calling longmess and expecting this
+    # behaviour, so the replacement has to emulate that behaviour.
+    my $cgc = _cgc();
+    my $call_pack = $cgc ? $cgc->() : caller();
+    if ( $Internal{$call_pack} or $CarpInternal{$call_pack} ) {
+        return longmess_heavy(@_);
+    }
+    else {
+        local $CarpLevel = $CarpLevel + 1;
+        return longmess_heavy(@_);
+    }
+}
+
+our @CARP_NOT;
+
+sub shortmess {
+    my $cgc = _cgc();
+
+    # Icky backwards compatibility wrapper. :-(
+    local @CARP_NOT = $cgc ? $cgc->() : caller();
+    shortmess_heavy(@_);
+}
+
+sub croak   { die shortmess @_ }
+sub confess { die longmess @_ }
+sub carp    { warn shortmess @_ }
+sub cluck   { warn longmess @_ }
+
+BEGIN {
+    if("$]" >= 5.015002 || ("$]" >= 5.014002 && "$]" < 5.015) ||
+	    ("$]" >= 5.012005 && "$]" < 5.013)) {
+	*CALLER_OVERRIDE_CHECK_OK = sub () { 1 };
+    } else {
+	*CALLER_OVERRIDE_CHECK_OK = sub () { 0 };
+    }
+}
+
+sub caller_info {
+    my $i = shift(@_) + 1;
+    my %call_info;
+    my $cgc = _cgc();
+    {
+	# Some things override caller() but forget to implement the
+	# @DB::args part of it, which we need.  We check for this by
+	# pre-populating @DB::args with a sentinel which no-one else
+	# has the address of, so that we can detect whether @DB::args
+	# has been properly populated.  However, on earlier versions
+	# of perl this check tickles a bug in CORE::caller() which
+	# leaks memory.  So we only check on fixed perls.
+        @DB::args = \$i if CALLER_OVERRIDE_CHECK_OK;
+        package DB;
+        @call_info{
+            qw(pack file line sub has_args wantarray evaltext is_require) }
+            = $cgc ? $cgc->($i) : caller($i);
+    }
+
+    unless ( defined $call_info{file} ) {
+        return ();
+    }
+
+    my $sub_name = Carp::get_subname( \%call_info );
+    if ( $call_info{has_args} ) {
+        my @args;
+        if (CALLER_OVERRIDE_CHECK_OK && @DB::args == 1
+            && ref $DB::args[0] eq ref \$i
+            && $DB::args[0] == \$i ) {
+            @DB::args = ();    # Don't let anyone see the address of $i
+            local $@;
+            my $where = eval {
+                my $func    = $cgc or return '';
+                my $gv      =
+                    *{
+                        ( $::{"B::"} || return '')       # B stash
+                          ->{svref_2object} || return '' # entry in stash
+                     }{CODE}                             # coderef in entry
+                        ->($func)->GV;
+                my $package = $gv->STASH->NAME;
+                my $subname = $gv->NAME;
+                return unless defined $package && defined $subname;
+
+                # returning CORE::GLOBAL::caller isn't useful for tracing the cause:
+                return if $package eq 'CORE::GLOBAL' && $subname eq 'caller';
+                " in &${package}::$subname";
+            } || '';
+            @args
+                = "** Incomplete caller override detected$where; \@DB::args were not set **";
+        }
+        else {
+            @args = @DB::args;
+            my $overflow;
+            if ( $MaxArgNums and @args > $MaxArgNums )
+            {    # More than we want to show?
+                $#args = $MaxArgNums;
+                $overflow = 1;
+            }
+
+            @args = map { Carp::format_arg($_) } @args;
+
+            if ($overflow) {
+                push @args, '...';
+            }
+        }
+
+        # Push the args onto the subroutine
+        $sub_name .= '(' . join( ', ', @args ) . ')';
+    }
+    $call_info{sub_name} = $sub_name;
+    return wantarray() ? %call_info : \%call_info;
+}
+
+# Transform an argument to a function into a string.
+sub format_arg {
+    my $arg = shift;
+    if ( ref($arg) ) {
+        $arg = defined($overload::VERSION) ? overload::StrVal($arg) : "$arg";
+    }
+    if ( defined($arg) ) {
+        $arg =~ s/'/\\'/g;
+        $arg = str_len_trim( $arg, $MaxArgLen );
+
+        # Quote it?
+        # Downgrade, and use [0-9] rather than \d, to avoid loading
+        # Unicode tables, which would be liable to fail if we're
+        # processing a syntax error.
+        downgrade($arg, 1);
+        $arg = "'$arg'" unless $arg =~ /^-?[0-9.]+\z/;
+    }
+    else {
+        $arg = 'undef';
+    }
+
+    # The following handling of "control chars" is direct from
+    # the original code - it is broken on Unicode though.
+    # Suggestions?
+    is_utf8($arg)
+        or $arg =~ s/([[:cntrl:]]|[[:^ascii:]])/sprintf("\\x{%x}",ord($1))/eg;
+    return $arg;
+}
+
+# Takes an inheritance cache and a package and returns
+# an anon hash of known inheritances and anon array of
+# inheritances which consequences have not been figured
+# for.
+sub get_status {
+    my $cache = shift;
+    my $pkg   = shift;
+    $cache->{$pkg} ||= [ { $pkg => $pkg }, [ trusts_directly($pkg) ] ];
+    return @{ $cache->{$pkg} };
+}
+
+# Takes the info from caller() and figures out the name of
+# the sub/require/eval
+sub get_subname {
+    my $info = shift;
+    if ( defined( $info->{evaltext} ) ) {
+        my $eval = $info->{evaltext};
+        if ( $info->{is_require} ) {
+            return "require $eval";
+        }
+        else {
+            $eval =~ s/([\\\'])/\\$1/g;
+            return "eval '" . str_len_trim( $eval, $MaxEvalLen ) . "'";
+        }
+    }
+
+    # this can happen on older perls when the sub (or the stash containing it)
+    # has been deleted
+    if ( !defined( $info->{sub} ) ) {
+        return '__ANON__::__ANON__';
+    }
+
+    return ( $info->{sub} eq '(eval)' ) ? 'eval {...}' : $info->{sub};
+}
+
+# Figures out what call (from the point of view of the caller)
+# the long error backtrace should start at.
+sub long_error_loc {
+    my $i;
+    my $lvl = $CarpLevel;
+    {
+        ++$i;
+        my $cgc = _cgc();
+        my @caller = $cgc ? $cgc->($i) : caller($i);
+        my $pkg = $caller[0];
+        unless ( defined($pkg) ) {
+
+            # This *shouldn't* happen.
+            if (%Internal) {
+                local %Internal;
+                $i = long_error_loc();
+                last;
+            }
+            elsif (defined $caller[2]) {
+                # this can happen when the stash has been deleted
+                # in that case, just assume that it's a reasonable place to
+                # stop (the file and line data will still be intact in any
+                # case) - the only issue is that we can't detect if the
+                # deleted package was internal (so don't do that then)
+                # -doy
+                redo unless 0 > --$lvl;
+                last;
+            }
+            else {
+                return 2;
+            }
+        }
+        redo if $CarpInternal{$pkg};
+        redo unless 0 > --$lvl;
+        redo if $Internal{$pkg};
+    }
+    return $i - 1;
+}
+
+sub longmess_heavy {
+    return @_ if ref( $_[0] );    # don't break references as exceptions
+    my $i = long_error_loc();
+    return ret_backtrace( $i, @_ );
+}
+
+# Returns a full stack backtrace starting from where it is
+# told.
+sub ret_backtrace {
+    my ( $i, @error ) = @_;
+    my $mess;
+    my $err = join '', @error;
+    $i++;
+
+    my $tid_msg = '';
+    if ( defined &threads::tid ) {
+        my $tid = threads->tid;
+        $tid_msg = " thread $tid" if $tid;
+    }
+
+    my %i = caller_info($i);
+    $mess = "$err at $i{file} line $i{line}$tid_msg";
+    if( defined $. ) {
+        local $@ = '';
+        local $SIG{__DIE__};
+        eval {
+            CORE::die;
+        };
+        if($@ =~ /^Died at .*(, <.*?> line \d+).$/ ) {
+            $mess .= $1;
+        }
+    }
+    $mess .= "\.\n";
+
+    while ( my %i = caller_info( ++$i ) ) {
+        $mess .= "\t$i{sub_name} called at $i{file} line $i{line}$tid_msg\n";
+    }
+
+    return $mess;
+}
+
+sub ret_summary {
+    my ( $i, @error ) = @_;
+    my $err = join '', @error;
+    $i++;
+
+    my $tid_msg = '';
+    if ( defined &threads::tid ) {
+        my $tid = threads->tid;
+        $tid_msg = " thread $tid" if $tid;
+    }
+
+    my %i = caller_info($i);
+    return "$err at $i{file} line $i{line}$tid_msg\.\n";
+}
+
+sub short_error_loc {
+    # You have to create your (hash)ref out here, rather than defaulting it
+    # inside trusts *on a lexical*, as you want it to persist across calls.
+    # (You can default it on $_[2], but that gets messy)
+    my $cache = {};
+    my $i     = 1;
+    my $lvl   = $CarpLevel;
+    {
+        my $cgc = _cgc();
+        my $called = $cgc ? $cgc->($i) : caller($i);
+        $i++;
+        my $caller = $cgc ? $cgc->($i) : caller($i);
+
+        if (!defined($caller)) {
+            my @caller = $cgc ? $cgc->($i) : caller($i);
+            if (@caller) {
+                # if there's no package but there is other caller info, then
+                # the package has been deleted - treat this as a valid package
+                # in this case
+                redo if defined($called) && $CarpInternal{$called};
+                redo unless 0 > --$lvl;
+                last;
+            }
+            else {
+                return 0;
+            }
+        }
+        redo if $Internal{$caller};
+        redo if $CarpInternal{$caller};
+        redo if $CarpInternal{$called};
+        redo if trusts( $called, $caller, $cache );
+        redo if trusts( $caller, $called, $cache );
+        redo unless 0 > --$lvl;
+    }
+    return $i - 1;
+}
+
+sub shortmess_heavy {
+    return longmess_heavy(@_) if $Verbose;
+    return @_ if ref( $_[0] );    # don't break references as exceptions
+    my $i = short_error_loc();
+    if ($i) {
+        ret_summary( $i, @_ );
+    }
+    else {
+        longmess_heavy(@_);
+    }
+}
+
+# If a string is too long, trims it with ...
+sub str_len_trim {
+    my $str = shift;
+    my $max = shift || 0;
+    if ( 2 < $max and $max < length($str) ) {
+        substr( $str, $max - 3 ) = '...';
+    }
+    return $str;
+}
+
+# Takes two packages and an optional cache.  Says whether the
+# first inherits from the second.
+#
+# Recursive versions of this have to work to avoid certain
+# possible endless loops, and when following long chains of
+# inheritance are less efficient.
+sub trusts {
+    my $child  = shift;
+    my $parent = shift;
+    my $cache  = shift;
+    my ( $known, $partial ) = get_status( $cache, $child );
+
+    # Figure out consequences until we have an answer
+    while ( @$partial and not exists $known->{$parent} ) {
+        my $anc = shift @$partial;
+        next if exists $known->{$anc};
+        $known->{$anc}++;
+        my ( $anc_knows, $anc_partial ) = get_status( $cache, $anc );
+        my @found = keys %$anc_knows;
+        @$known{@found} = ();
+        push @$partial, @$anc_partial;
+    }
+    return exists $known->{$parent};
+}
+
+# Takes a package and gives a list of those trusted directly
+sub trusts_directly {
+    my $class = shift;
+    no strict 'refs';
+    no warnings 'once';
+    return @{"$class\::CARP_NOT"}
+        ? @{"$class\::CARP_NOT"}
+        : @{"$class\::ISA"};
+}
+
+if(!defined($warnings::VERSION) ||
+	do { no warnings "numeric"; $warnings::VERSION < 1.03 }) {
+    # Very old versions of warnings.pm import from Carp.  This can go
+    # wrong due to the circular dependency.  If Carp is invoked before
+    # warnings, then Carp starts by loading warnings, then warnings
+    # tries to import from Carp, and gets nothing because Carp is in
+    # the process of loading and hasn't defined its import method yet.
+    # So we work around that by manually exporting to warnings here.
+    no strict "refs";
+    *{"warnings::$_"} = \&$_ foreach @EXPORT;
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Carp - alternative warn and die for modules
+
+=head1 SYNOPSIS
+
+    use Carp;
+
+    # warn user (from perspective of caller)
+    carp "string trimmed to 80 chars";
+
+    # die of errors (from perspective of caller)
+    croak "We're outta here!";
+
+    # die of errors with stack backtrace
+    confess "not implemented";
+
+    # cluck, longmess and shortmess not exported by default
+    use Carp qw(cluck longmess shortmess);
+    cluck "This is how we got here!";
+    $long_message   = longmess( "message from cluck() or confess()" );
+    $short_message  = shortmess( "message from carp() or croak()" );
+
+=head1 DESCRIPTION
+
+The Carp routines are useful in your own modules because
+they act like C<die()> or C<warn()>, but with a message which is more
+likely to be useful to a user of your module.  In the case of
+C<cluck()> and C<confess()>, that context is a summary of every
+call in the call-stack; C<longmess()> returns the contents of the error
+message.
+
+For a shorter message you can use C<carp()> or C<croak()> which report the
+error as being from where your module was called.  C<shortmess()> returns the
+contents of this error message.  There is no guarantee that that is where the
+error was, but it is a good educated guess.
+
+You can also alter the way the output and logic of C<Carp> works, by
+changing some global variables in the C<Carp> namespace. See the
+section on C<GLOBAL VARIABLES> below.
+
+Here is a more complete description of how C<carp> and C<croak> work.
+What they do is search the call-stack for a function call stack where
+they have not been told that there shouldn't be an error.  If every
+call is marked safe, they give up and give a full stack backtrace
+instead.  In other words they presume that the first likely looking
+potential suspect is guilty.  Their rules for telling whether
+a call shouldn't generate errors work as follows:
+
+=over 4
+
+=item 1.
+
+Any call from a package to itself is safe.
+
+=item 2.
+
+Packages claim that there won't be errors on calls to or from
+packages explicitly marked as safe by inclusion in C<@CARP_NOT>, or
+(if that array is empty) C<@ISA>.  The ability to override what
+ at ISA says is new in 5.8.
+
+=item 3.
+
+The trust in item 2 is transitive.  If A trusts B, and B
+trusts C, then A trusts C.  So if you do not override C<@ISA>
+with C<@CARP_NOT>, then this trust relationship is identical to,
+"inherits from".
+
+=item 4.
+
+Any call from an internal Perl module is safe.  (Nothing keeps
+user modules from marking themselves as internal to Perl, but
+this practice is discouraged.)
+
+=item 5.
+
+Any call to Perl's warning system (eg Carp itself) is safe.
+(This rule is what keeps it from reporting the error at the
+point where you call C<carp> or C<croak>.)
+
+=item 6.
+
+C<$Carp::CarpLevel> can be set to skip a fixed number of additional
+call levels.  Using this is not recommended because it is very
+difficult to get it to behave correctly.
+
+=back
+
+=head2 Forcing a Stack Trace
+
+As a debugging aid, you can force Carp to treat a croak as a confess
+and a carp as a cluck across I<all> modules. In other words, force a
+detailed stack trace to be given.  This can be very helpful when trying
+to understand why, or from where, a warning or error is being generated.
+
+This feature is enabled by 'importing' the non-existent symbol
+'verbose'. You would typically enable it by saying
+
+    perl -MCarp=verbose script.pl
+
+or by including the string C<-MCarp=verbose> in the PERL5OPT
+environment variable.
+
+Alternately, you can set the global variable C<$Carp::Verbose> to true.
+See the C<GLOBAL VARIABLES> section below.
+
+=head1 GLOBAL VARIABLES
+
+=head2 $Carp::MaxEvalLen
+
+This variable determines how many characters of a string-eval are to
+be shown in the output. Use a value of C<0> to show all text.
+
+Defaults to C<0>.
+
+=head2 $Carp::MaxArgLen
+
+This variable determines how many characters of each argument to a
+function to print. Use a value of C<0> to show the full length of the
+argument.
+
+Defaults to C<64>.
+
+=head2 $Carp::MaxArgNums
+
+This variable determines how many arguments to each function to show.
+Use a value of C<0> to show all arguments to a function call.
+
+Defaults to C<8>.
+
+=head2 $Carp::Verbose
+
+This variable makes C<carp()> and C<croak()> generate stack backtraces
+just like C<cluck()> and C<confess()>.  This is how C<use Carp 'verbose'>
+is implemented internally.
+
+Defaults to C<0>.
+
+=head2 @CARP_NOT
+
+This variable, I<in your package>, says which packages are I<not> to be
+considered as the location of an error. The C<carp()> and C<cluck()>
+functions will skip over callers when reporting where an error occurred.
+
+NB: This variable must be in the package's symbol table, thus:
+
+    # These work
+    our @CARP_NOT; # file scope
+    use vars qw(@CARP_NOT); # package scope
+    @My::Package::CARP_NOT = ... ; # explicit package variable
+
+    # These don't work
+    sub xyz { ... @CARP_NOT = ... } # w/o declarations above
+    my @CARP_NOT; # even at top-level
+
+Example of use:
+
+    package My::Carping::Package;
+    use Carp;
+    our @CARP_NOT;
+    sub bar     { .... or _error('Wrong input') }
+    sub _error  {
+        # temporary control of where'ness, __PACKAGE__ is implicit
+        local @CARP_NOT = qw(My::Friendly::Caller);
+        carp(@_)
+    }
+
+This would make C<Carp> report the error as coming from a caller not
+in C<My::Carping::Package>, nor from C<My::Friendly::Caller>.
+
+Also read the L</DESCRIPTION> section above, about how C<Carp> decides
+where the error is reported from.
+
+Use C<@CARP_NOT>, instead of C<$Carp::CarpLevel>.
+
+Overrides C<Carp>'s use of C<@ISA>.
+
+=head2 %Carp::Internal
+
+This says what packages are internal to Perl.  C<Carp> will never
+report an error as being from a line in a package that is internal to
+Perl.  For example:
+
+    $Carp::Internal{ (__PACKAGE__) }++;
+    # time passes...
+    sub foo { ... or confess("whatever") };
+
+would give a full stack backtrace starting from the first caller
+outside of __PACKAGE__.  (Unless that package was also internal to
+Perl.)
+
+=head2 %Carp::CarpInternal
+
+This says which packages are internal to Perl's warning system.  For
+generating a full stack backtrace this is the same as being internal
+to Perl, the stack backtrace will not start inside packages that are
+listed in C<%Carp::CarpInternal>.  But it is slightly different for
+the summary message generated by C<carp> or C<croak>.  There errors
+will not be reported on any lines that are calling packages in
+C<%Carp::CarpInternal>.
+
+For example C<Carp> itself is listed in C<%Carp::CarpInternal>.
+Therefore the full stack backtrace from C<confess> will not start
+inside of C<Carp>, and the short message from calling C<croak> is
+not placed on the line where C<croak> was called.
+
+=head2 $Carp::CarpLevel
+
+This variable determines how many additional call frames are to be
+skipped that would not otherwise be when reporting where an error
+occurred on a call to one of C<Carp>'s functions.  It is fairly easy
+to count these call frames on calls that generate a full stack
+backtrace.  However it is much harder to do this accounting for calls
+that generate a short message.  Usually people skip too many call
+frames.  If they are lucky they skip enough that C<Carp> goes all of
+the way through the call stack, realizes that something is wrong, and
+then generates a full stack backtrace.  If they are unlucky then the
+error is reported from somewhere misleading very high in the call
+stack.
+
+Therefore it is best to avoid C<$Carp::CarpLevel>.  Instead use
+C<@CARP_NOT>, C<%Carp::Internal> and C<%Carp::CarpInternal>.
+
+Defaults to C<0>.
+
+=head1 BUGS
+
+The Carp routines don't handle exception objects currently.
+If called with a first argument that is a reference, they simply
+call die() or warn(), as appropriate.
+
+=head1 SEE ALSO
+
+L<Carp::Always>,
+L<Carp::Clan>
+
+=head1 AUTHOR
+
+The Carp module first appeared in Larry Wall's perl 5.000 distribution.
+Since then it has been modified by several of the perl 5 porters.
+Andrew Main (Zefram) <zefram at fysh.org> divested Carp into an independent
+distribution.
+
+=head1 COPYRIGHT
+
+Copyright (C) 1994-2012 Larry Wall
+
+Copyright (C) 2011, 2012 Andrew Main (Zefram) <zefram at fysh.org>
+
+=head1 LICENSE
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.

Added: vendor/perl/dist/dist/Carp/t/Carp.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/Carp.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/Carp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,518 @@
+use warnings;
+no warnings "once";
+use Config;
+
+use IPC::Open3 1.0103 qw(open3);
+use Test::More tests => 61;
+
+sub runperl {
+    my(%args) = @_;
+    my($w, $r);
+    my $pid = open3($w, $r, undef, $^X, "-e", $args{prog});
+    close $w;
+    my $output = "";
+    while(<$r>) { $output .= $_; }
+    waitpid($pid, 0);
+    return $output;
+}
+
+my $Is_VMS = $^O eq 'VMS';
+
+use Carp qw(carp cluck croak confess);
+
+BEGIN {
+    # This test must be run at BEGIN time, because code later in this file
+    # sets CORE::GLOBAL::caller
+    ok !exists $CORE::GLOBAL::{caller},
+        "Loading doesn't create CORE::GLOBAL::caller";
+}
+
+{
+  my $str = Carp::longmess("foo");
+  is(
+    $str,
+    "foo at t/Carp.t line 31.\n",
+    "we don't overshoot the top stack frame",
+  );
+}
+
+{
+    local $SIG{__WARN__} = sub {
+        like $_[0], qr/ok (\d+)\n at.+\b(?i:carp\.t) line \d+\.$/, 'ok 2\n';
+    };
+
+    carp "ok 2\n";
+}
+
+{
+    local $SIG{__WARN__} = sub {
+        like $_[0], qr/(\d+) at.+\b(?i:carp\.t) line \d+\.$/, 'carp 3';
+    };
+
+    carp 3;
+}
+
+sub sub_4 {
+    local $SIG{__WARN__} = sub {
+        like $_[0],
+            qr/^(\d+) at.+\b(?i:carp\.t) line \d+\.\n\tmain::sub_4\(\) called at.+\b(?i:carp\.t) line \d+$/,
+            'cluck 4';
+    };
+
+    cluck 4;
+}
+
+sub_4;
+
+{
+    local $SIG{__DIE__} = sub {
+        like $_[0],
+            qr/^(\d+) at.+\b(?i:carp\.t) line \d+\.\n\teval \Q{...}\E called at.+\b(?i:carp\.t) line \d+$/,
+            'croak 5';
+    };
+
+    eval { croak 5 };
+}
+
+sub sub_6 {
+    local $SIG{__DIE__} = sub {
+        like $_[0],
+            qr/^(\d+) at.+\b(?i:carp\.t) line \d+\.\n\teval \Q{...}\E called at.+\b(?i:carp\.t) line \d+\n\tmain::sub_6\(\) called at.+\b(?i:carp\.t) line \d+$/,
+            'confess 6';
+    };
+
+    eval { confess 6 };
+}
+
+sub_6;
+
+ok(1);
+
+# test for caller_info API
+my $eval = "use Carp; return Carp::caller_info(0);";
+my %info = eval($eval);
+is( $info{sub_name}, "eval '$eval'", 'caller_info API' );
+
+# test for '...::CARP_NOT used only once' warning from Carp
+my $warning;
+eval {
+    BEGIN {
+        local $SIG{__WARN__} = sub {
+            if   ( defined $^S ) { warn $_[0] }
+            else                 { $warning = $_[0] }
+            }
+    }
+
+    package Z;
+
+    BEGIN {
+        eval { Carp::croak() };
+    }
+};
+ok !$warning, q/'...::CARP_NOT used only once' warning from Carp/;
+
+# Test the location of error messages.
+like( A::short(), qr/^Error at C/, "Short messages skip carped package" );
+
+{
+    local @C::ISA = "D";
+    like( A::short(), qr/^Error at B/, "Short messages skip inheritance" );
+}
+
+{
+    local @D::ISA = "C";
+    like( A::short(), qr/^Error at B/, "Short messages skip inheritance" );
+}
+
+{
+    local @D::ISA = "B";
+    local @B::ISA = "C";
+    like( A::short(), qr/^Error at A/, "Inheritance is transitive" );
+}
+
+{
+    local @B::ISA = "D";
+    local @C::ISA = "B";
+    like( A::short(), qr/^Error at A/, "Inheritance is transitive" );
+}
+
+{
+    local @C::CARP_NOT = "D";
+    like( A::short(), qr/^Error at B/, "Short messages see \@CARP_NOT" );
+}
+
+{
+    local @D::CARP_NOT = "C";
+    like( A::short(), qr/^Error at B/, "Short messages see \@CARP_NOT" );
+}
+
+{
+    local @D::CARP_NOT = "B";
+    local @B::CARP_NOT = "C";
+    like( A::short(), qr/^Error at A/, "\@CARP_NOT is transitive" );
+}
+
+{
+    local @B::CARP_NOT = "D";
+    local @C::CARP_NOT = "B";
+    like( A::short(), qr/^Error at A/, "\@CARP_NOT is transitive" );
+}
+
+{
+    local @D::ISA      = "C";
+    local @D::CARP_NOT = "B";
+    like( A::short(), qr/^Error at C/, "\@CARP_NOT overrides inheritance" );
+}
+
+{
+    local @D::ISA      = "B";
+    local @D::CARP_NOT = "C";
+    like( A::short(), qr/^Error at B/, "\@CARP_NOT overrides inheritance" );
+}
+
+# %Carp::Internal
+{
+    local $Carp::Internal{C} = 1;
+    like( A::short(), qr/^Error at B/, "Short doesn't report Internal" );
+}
+
+{
+    local $Carp::Internal{D} = 1;
+    like( A::long(), qr/^Error at C/, "Long doesn't report Internal" );
+}
+
+# %Carp::CarpInternal
+{
+    local $Carp::CarpInternal{D} = 1;
+    like(
+        A::short(), qr/^Error at B/,
+        "Short doesn't report calls to CarpInternal"
+    );
+}
+
+{
+    local $Carp::CarpInternal{D} = 1;
+    like( A::long(), qr/^Error at C/, "Long doesn't report CarpInternal" );
+}
+
+# tests for global variables
+sub x { carp @_ }
+sub w { cluck @_ }
+
+# $Carp::Verbose;
+{
+    my $aref = [
+        qr/t at \S*(?i:carp.t) line \d+\./,
+        qr/t at \S*(?i:carp.t) line \d+\.\n\s*main::x\('t'\) called at \S*(?i:carp.t) line \d+/
+    ];
+    my $i = 0;
+
+    for my $re (@$aref) {
+        local $Carp::Verbose = $i++;
+        local $SIG{__WARN__} = sub {
+            like $_[0], $re, 'Verbose';
+        };
+
+        package Z;
+        main::x('t');
+    }
+}
+
+# $Carp::MaxEvalLen
+{
+    my $test_num = 1;
+    for ( 0, 4 ) {
+        my $txt = "Carp::cluck($test_num)";
+        local $Carp::MaxEvalLen = $_;
+        local $SIG{__WARN__} = sub {
+            "@_" =~ /'(.+?)(?:\n|')/s;
+            is length($1),
+                length( $_ ? substr( $txt, 0, $_ ) : substr( $txt, 0 ) ),
+                'MaxEvalLen';
+        };
+        eval "$txt";
+        $test_num++;
+    }
+}
+
+# $Carp::MaxArgLen
+{
+    for ( 0, 4 ) {
+        my $arg = 'testtest';
+        local $Carp::MaxArgLen = $_;
+        local $SIG{__WARN__} = sub {
+            "@_" =~ /'(.+?)'/;
+            is length($1),
+                length( $_ ? substr( $arg, 0, $_ ) : substr( $arg, 0 ) ),
+                'MaxArgLen';
+        };
+
+        package Z;
+        main::w($arg);
+    }
+}
+
+# $Carp::MaxArgNums
+{
+    my $i    = 0;
+    my $aref = [
+        qr/1234 at \S*(?i:carp.t) line \d+\.\n\s*main::w\(1, 2, 3, 4\) called at \S*(?i:carp.t) line \d+/,
+        qr/1234 at \S*(?i:carp.t) line \d+\.\n\s*main::w\(1, 2, \.\.\.\) called at \S*(?i:carp.t) line \d+/,
+    ];
+
+    for (@$aref) {
+        local $Carp::MaxArgNums = $i++;
+        local $SIG{__WARN__} = sub {
+            like "@_", $_, 'MaxArgNums';
+        };
+
+        package Z;
+        main::w( 1 .. 4 );
+    }
+}
+
+# $Carp::CarpLevel
+{
+    my $i    = 0;
+    my $aref = [
+        qr/1 at \S*(?i:carp.t) line \d+\.\n\s*main::w\(1\) called at \S*(?i:carp.t) line \d+/,
+        qr/1 at \S*(?i:carp.t) line \d+\.$/,
+    ];
+
+    for (@$aref) {
+        local $Carp::CarpLevel = $i++;
+        local $SIG{__WARN__} = sub {
+            like "@_", $_, 'CarpLevel';
+        };
+
+        package Z;
+        main::w(1);
+    }
+}
+
+SKIP:
+{
+    skip "IPC::Open3::open3 needs porting", 2 if $Is_VMS;
+
+    # Check that croak() and confess() don't clobber $!
+    runperl(
+        prog   => 'use Carp; $@=q{Phooey}; $!=42; croak(q{Dead})',
+        stderr => 1
+    );
+
+    is( $? >> 8, 42, 'croak() doesn\'t clobber $!' );
+
+    runperl(
+        prog   => 'use Carp; $@=q{Phooey}; $!=42; confess(q{Dead})',
+        stderr => 1
+    );
+
+    is( $? >> 8, 42, 'confess() doesn\'t clobber $!' );
+}
+
+# undef used to be incorrectly reported as the string "undef"
+sub cluck_undef {
+
+    local $SIG{__WARN__} = sub {
+        like $_[0],
+            qr/^Bang! at.+\b(?i:carp\.t) line \d+\.\n\tmain::cluck_undef\(0, 'undef', 2, undef, 4\) called at.+\b(?i:carp\.t) line \d+$/,
+            "cluck doesn't quote undef";
+    };
+
+    cluck "Bang!"
+
+}
+
+cluck_undef( 0, "undef", 2, undef, 4 );
+
+# check that Carp respects CORE::GLOBAL::caller override after Carp
+# has been compiled
+for my $bodge_job ( 2, 1, 0 ) { SKIP: {
+    skip "can't safely detect incomplete caller override on perl $]", 6
+	if $bodge_job && !Carp::CALLER_OVERRIDE_CHECK_OK;
+    print '# ', ( $bodge_job ? 'Not ' : '' ),
+        "setting \@DB::args in caller override\n";
+    if ( $bodge_job == 1 ) {
+        require B;
+        print "# required B\n";
+    }
+    my $accum = '';
+    local *CORE::GLOBAL::caller = sub {
+        local *__ANON__ = "fakecaller";
+        my @c = CORE::caller(@_);
+        $c[0] ||= 'undef';
+        $accum .= "@c[0..3]\n";
+        if ( !$bodge_job && CORE::caller() eq 'DB' ) {
+
+            package DB;
+            return CORE::caller( ( $_[0] || 0 ) + 1 );
+        }
+        else {
+            return CORE::caller( ( $_[0] || 0 ) + 1 );
+        }
+    };
+    eval "scalar caller()";
+    like( $accum, qr/main::fakecaller/,
+        "test CORE::GLOBAL::caller override in eval" );
+    $accum = '';
+    my $got = A::long(42);
+    like( $accum, qr/main::fakecaller/,
+        "test CORE::GLOBAL::caller override in Carp" );
+    my $package = 'A';
+    my $where = $bodge_job == 1 ? ' in &main::__ANON__' : '';
+    my $warning
+        = $bodge_job
+        ? "\Q** Incomplete caller override detected$where; \@DB::args were not set **\E"
+        : '';
+
+    for ( 0 .. 2 ) {
+        my $previous_package = $package;
+        ++$package;
+        like( $got,
+            qr/${package}::long\($warning\) called at $previous_package line \d+/,
+            "Correct arguments for $package" );
+    }
+    my $arg = $bodge_job ? $warning : 42;
+    like(
+        $got, qr!A::long\($arg\) called at.+\b(?i:carp\.t) line \d+!,
+        'Correct arguments for A'
+    );
+} }
+
+SKIP: {
+    skip "can't safely detect incomplete caller override on perl $]", 1
+	unless Carp::CALLER_OVERRIDE_CHECK_OK;
+    eval q{
+	no warnings 'redefine';
+	sub CORE::GLOBAL::caller {
+	    my $height = $_[0];
+	    $height++;
+	    return CORE::caller($height);
+	}
+    };
+
+    my $got = A::long(42);
+
+    like(
+	$got,
+	qr!A::long\(\Q** Incomplete caller override detected; \E\@DB::args\Q were not set **\E\) called at.+\b(?i:carp\.t) line \d+!,
+	'Correct arguments for A'
+    );
+}
+
+# UTF8-flagged strings should not cause Carp to try to load modules (even
+# implicitly via utf8_heavy.pl) after a syntax error [perl #82854].
+SKIP:
+{
+    skip "IPC::Open3::open3 needs porting", 1 if $Is_VMS;
+    like(
+      runperl(
+        prog => q<
+          use utf8; use strict; use Carp;
+          BEGIN { $SIG{__DIE__} = sub { Carp::croak qq(aaaaa$_[0]) } }
+          $c
+        >,
+        stderr=>1,
+      ),
+      qr/aaaaa/,
+      'Carp can handle UTF8-flagged strings after a syntax error',
+    );
+}
+
+SKIP:
+{
+    skip "IPC::Open3::open3 needs porting", 1 if $Is_VMS;
+    skip("B:: always created when static", 1)
+      if $Config{static_ext} =~ /\bB\b/;
+    is(
+      runperl(
+	prog => q<
+	  use Carp;
+	  $SIG{__WARN__} = sub{};
+	  carp (qq(A duck, but which duck?));
+	  print q(ok) unless exists $::{q(B::)};
+	>,
+      ),
+      'ok',
+      'Carp does not autovivify *B::',
+    );
+}
+
+# [perl #96672]
+<D::DATA> for 1..2;
+eval { croak 'heek' };
+$@ =~ s/\n.*//; # just check first line
+is $@, "heek at ".__FILE__." line ".(__LINE__-2).", <DATA> line 2.\n",
+    'last handle line num is mentioned';
+
+SKIP:
+{
+    skip "IPC::Open3::open3 needs porting", 1 if $Is_VMS;
+    like(
+      runperl(
+        prog => q<
+          open FH, q-Makefile.PL-;
+          <FH>;  # set PL_last_in_gv
+          BEGIN { *CORE::GLOBAL::die = sub { die Carp::longmess(@_) } };
+          use Carp;
+          die fumpts;
+        >,
+      ),
+      qr 'fumpts',
+      'Carp::longmess works inside CORE::GLOBAL::die',
+    );
+}
+
+# New tests go here
+
+# line 1 "A"
+package A;
+
+sub short {
+    B::short();
+}
+
+sub long {
+    B::long();
+}
+
+# line 1 "B"
+package B;
+
+sub short {
+    C::short();
+}
+
+sub long {
+    C::long();
+}
+
+# line 1 "C"
+package C;
+
+sub short {
+    D::short();
+}
+
+sub long {
+    D::long();
+}
+
+# line 1 "D"
+package D;
+
+sub short {
+    eval { Carp::croak("Error") };
+    return $@;
+}
+
+sub long {
+    eval { Carp::confess("Error") };
+    return $@;
+}
+
+# Put new tests at "new tests go here"
+__DATA__
+1
+2
+3

Added: vendor/perl/dist/dist/Carp/t/heavy.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/heavy.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/heavy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+print "1..3\n";
+
+print defined(&Carp::carp) ? "not " : "", "ok 1 # control\n";
+require Carp::Heavy;
+print defined(&Carp::carp) ? "" : "not ", "ok 2 # carp loaded by Carp::Heavy\n";
+eval q{
+	print $Carp::Heavy::VERSION eq $Carp::VERSION ? "" : "not ",
+		"ok 3 # version numbers match\n";
+};
+
+1;

Added: vendor/perl/dist/dist/Carp/t/stash_deletion.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/stash_deletion.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/stash_deletion.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,111 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use Test::More tests => 15;
+
+use Carp;
+
+{
+    my $sub = eval <<'EVAL';
+package Die;
+sub {
+#line 1 foo
+    die "blah";
+}
+EVAL
+    ok(!$@);
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+    {
+        no strict 'refs';
+        delete ${'::'}{'Die::'};
+    }
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+}
+
+{
+    my $sub = eval <<'EVAL';
+package Confess;
+sub {
+#line 1 foo
+    Carp::confess("blah");
+}
+EVAL
+    ok(!$@);
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+    {
+        no strict 'refs';
+        delete ${'::'}{'Confess::'};
+    }
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+}
+
+{
+    my $sub = eval <<'EVAL';
+package CroakHelper;
+sub x {
+    Carp::croak("blah");
+}
+package Croak;
+sub {
+#line 1 foo
+    CroakHelper::x();
+}
+EVAL
+    ok(!$@);
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+    {
+        no strict 'refs';
+        delete ${'::'}{'Croak::'};
+    }
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+    {
+        no strict 'refs';
+        delete ${'::'}{'CroakHelper::'};
+    }
+    eval { $sub->() };
+    like($@, qr/^blah at foo line 1/);
+}
+
+{
+    # the amount of information available and how it is displayed varies quite
+    # a bit depending on the version of perl (specifically, what caller returns
+    # in that version), so there is a bit of fiddling around required to handle
+    # that
+    my $unknown_pat = qr/__ANON__::/;
+    $unknown_pat = qr/$unknown_pat|\(unknown\)/
+        if $] < 5.014;
+
+    my $sub = eval <<'EVAL';
+package SubHelper;
+sub x {
+    Carp::confess("blah");
+}
+package Sub;
+sub {
+#line 1 foo
+    SubHelper::x();
+}
+EVAL
+    ok(!$@);
+    eval { $sub->() };
+    unlike($@, qr/$unknown_pat/);
+    {
+        no strict 'refs';
+        delete ${'::'}{'Sub::'};
+    }
+    eval { $sub->() };
+    like($@, qr/$unknown_pat|Sub::/);
+    unlike($@, qr/$unknown_pat.*$unknown_pat/s);
+    {
+        no strict 'refs';
+        delete ${'::'}{'SubHelper::'};
+    }
+    eval { $sub->() };
+    like($@, qr/(?:$unknown_pat|SubHelper::).*(?:$unknown_pat|Sub::)/s);
+}

Added: vendor/perl/dist/dist/Carp/t/swash.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/swash.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/swash.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+BEGIN { print "1..1\n"; }
+use Carp;
+my $x = "foo\x{666}"; $x =~ /foo\p{Alnum}/;
+print "ok 1\n";
+1;

Added: vendor/perl/dist/dist/Carp/t/vivify_gv.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/vivify_gv.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/vivify_gv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+BEGIN { print "1..2\n"; }
+
+our $has_is_utf8; BEGIN { $has_is_utf8 = exists($utf8::{"is_utf8"}); }
+our $has_dgrade; BEGIN { $has_dgrade = exists($utf8::{"downgrade"}); }
+
+use Carp;
+
+print !(exists($utf8::{"is_utf8"}) xor $has_is_utf8) ? "" : "not ", "ok 1\n";
+print !(exists($utf8::{"downgrade"}) xor $has_dgrade) ? "" : "not ", "ok 2\n";
+
+1;

Added: vendor/perl/dist/dist/Carp/t/vivify_stash.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/vivify_stash.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/vivify_stash.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
+BEGIN { print "1..1\n"; }
+
+our $has_utf8; BEGIN { $has_utf8 = exists($::{"utf8::"}); }
+
+use Carp;
+
+print !(exists($::{"utf8::"}) xor $has_utf8) ? "" : "not ", "ok 1\n";
+
+1;

Added: vendor/perl/dist/dist/Carp/t/with_warnings.t
===================================================================
--- vendor/perl/dist/dist/Carp/t/with_warnings.t	                        (rev 0)
+++ vendor/perl/dist/dist/Carp/t/with_warnings.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
+BEGIN { print "1..1\n"; }
+
+use Carp ();
+use warnings ();
+$SIG{__WARN__} = sub {};
+eval { warnings::warn("syntax", "foo") };
+print $@ eq "" ? "" : "not ", "ok 1\n";
+
+1;

Added: vendor/perl/dist/dist/Cwd/t/Spec-taint.t
===================================================================
--- vendor/perl/dist/dist/Cwd/t/Spec-taint.t	                        (rev 0)
+++ vendor/perl/dist/dist/Cwd/t/Spec-taint.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+#!./perl -Tw
+# Testing File::Spec under taint mode.
+
+use strict;
+
+chdir 't' unless $ENV{PERL_CORE};
+
+use File::Spec;
+use lib File::Spec->catdir('t', 'lib');
+use Test::More tests => 2;
+
+use Scalar::Util qw/tainted/;
+
+my $ret;
+eval { $ret = File::Spec->tmpdir };
+is( $@, '',		"tmpdir should not explode under taint mode" );
+ok( !tainted($ret),	"its return value should not be tainted" );

Added: vendor/perl/dist/dist/Data-Dumper/t/bless_var_method.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/bless_var_method.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/bless_var_method.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,86 @@
+#!./perl -w
+# t/bless.t - Test Bless()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests =>   8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+    delta   => 'd',
+    beta    => 'b',
+    gamma   => 'c',
+    alpha   => 'a',
+);
+
+run_tests_for_bless_var_method();
+SKIP: {
+    skip "XS version was unavailable, so we already ran with pure Perl", 4
+        if $Data::Dumper::Useperl;
+    local $Data::Dumper::Useperl = 1;
+    run_tests_for_bless_var_method();
+}
+
+sub run_tests_for_bless_var_method {
+    my ($obj, %dumps, $bless, $starting);
+
+    note("\$Data::Dumper::Bless and Bless() set to true value");
+
+    $starting = $Data::Dumper::Bless;
+    $bless = 1;
+    local $Data::Dumper::Bless = $bless;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddblessone'} = _dumptostr($obj);
+    local $Data::Dumper::Bless = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Bless($bless);
+    $dumps{'objblessone'} = _dumptostr($obj);
+
+    is($dumps{'ddblessone'}, $dumps{'objblessone'},
+        "\$Data::Dumper::Bless = 1 and Bless(1) are equivalent");
+    %dumps = ();
+
+    $bless = 0;
+    local $Data::Dumper::Bless = $bless;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddblesszero'} = _dumptostr($obj);
+    local $Data::Dumper::Bless = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Bless($bless);
+    $dumps{'objblesszero'} = _dumptostr($obj);
+
+    is($dumps{'ddblesszero'}, $dumps{'objblesszero'},
+        "\$Data::Dumper::Bless = 0 and Bless(0) are equivalent");
+
+    $bless = undef;
+    local $Data::Dumper::Bless = $bless;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddblessundef'} = _dumptostr($obj);
+    local $Data::Dumper::Bless = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Bless($bless);
+    $dumps{'objblessundef'} = _dumptostr($obj);
+
+    is($dumps{'ddblessundef'}, $dumps{'objblessundef'},
+        "\$Data::Dumper::Bless = undef and Bless(undef) are equivalent");
+    is($dumps{'ddblesszero'}, $dumps{'objblessundef'},
+        "\$Data::Dumper::Bless = undef and = 0 are equivalent");
+    %dumps = ();
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/deparse.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/deparse.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/deparse.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,80 @@
+#!./perl -w
+# t/deparse.t - Test Deparse()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests =>  8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+# Thanks to Arthur Axel "fREW" Schmidt:
+# http://search.cpan.org/~frew/Data-Dumper-Concise-2.020/lib/Data/Dumper/Concise.pm
+
+note("\$Data::Dumper::Deparse and Deparse()");
+
+{
+    my ($obj, %dumps, $deparse, $starting);
+    use strict;
+    my $struct = { foo => "bar\nbaz", quux => sub { "fleem" } };
+    $obj = Data::Dumper->new( [ $struct ] );
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $starting = $Data::Dumper::Deparse;
+    local $Data::Dumper::Deparse = 0;
+    $obj = Data::Dumper->new( [ $struct ] );
+    $dumps{'dddzero'} = _dumptostr($obj);
+    local $Data::Dumper::Deparse = $starting;
+
+    $obj = Data::Dumper->new( [ $struct ] );
+    $obj->Deparse();
+    $dumps{'objempty'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new( [ $struct ] );
+    $obj->Deparse(0);
+    $dumps{'objzero'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'dddzero'},
+        "No previous setting and \$Data::Dumper::Deparse = 0 are equivalent");
+    is($dumps{'noprev'}, $dumps{'objempty'},
+        "No previous setting and Deparse() are equivalent");
+    is($dumps{'noprev'}, $dumps{'objzero'},
+        "No previous setting and Deparse(0) are equivalent");
+
+    local $Data::Dumper::Deparse = 1;
+    $obj = Data::Dumper->new( [ $struct ] );
+    $dumps{'dddtrue'} = _dumptostr($obj);
+    local $Data::Dumper::Deparse = $starting;
+
+    $obj = Data::Dumper->new( [ $struct ] );
+    $obj->Deparse(1);
+    $dumps{'objone'} = _dumptostr($obj);
+
+    is($dumps{'dddtrue'}, $dumps{'objone'},
+        "\$Data::Dumper::Deparse = 1 and Deparse(1) are equivalent");
+
+    isnt($dumps{'dddzero'}, $dumps{'dddtrue'},
+        "\$Data::Dumper::Deparse = 0 differs from \$Data::Dumper::Deparse = 1");
+
+    like($dumps{'dddzero'},
+        qr/quux.*?sub.*?DUMMY/s,
+        "\$Data::Dumper::Deparse = 0 reports DUMMY instead of deparsing coderef");
+    unlike($dumps{'dddtrue'},
+        qr/quux.*?sub.*?DUMMY/s,
+        "\$Data::Dumper::Deparse = 1 does not report DUMMY");
+    like($dumps{'dddtrue'},
+        qr/quux.*?sub.*?use\sstrict.*?fleem/s,
+        "\$Data::Dumper::Deparse = 1 deparses coderef");
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/dumpperl.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/dumpperl.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/dumpperl.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,144 @@
+#!./perl -w
+# t/dumpperl.t - test all branches of, and modes of triggering, Dumpperl()
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 31;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+$Data::Dumper::Indent=1;
+
+{
+    local $Data::Dumper::Useperl=1;
+    local $Data::Dumper::Useqq=0;
+    local $Data::Dumper::Deparse=0;
+    note('$Data::Dumper::Useperl => 1');
+    run_tests_for_pure_perl_implementations();
+}
+
+{
+    local $Data::Dumper::Useperl=0;
+    local $Data::Dumper::Useqq=1;
+    local $Data::Dumper::Deparse=0;
+    note('$Data::Dumper::Useqq => 1');
+    run_tests_for_pure_perl_implementations();
+}
+    
+{
+    local $Data::Dumper::Useperl=0;
+    local $Data::Dumper::Useqq=0;
+    local $Data::Dumper::Deparse=1;
+    note('$Data::Dumper::Deparse => 1');
+    run_tests_for_pure_perl_implementations();
+}
+    
+    
+
+sub run_tests_for_pure_perl_implementations {
+
+    my ($a, $b, $obj);
+    my (@names);
+    my (@newnames, $objagain, %newnames);
+    my $dumpstr;
+    $a = 'alpha';
+    $b = 'beta';
+    my @c = ( qw| eta theta | );
+    my %d = ( iota => 'kappa' );
+
+    note('names not provided');
+    $obj = Data::Dumper->new([$a, $b]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$VAR1.+alpha.+\$VAR2.+beta/s,
+        "Dump: two strings"
+    );
+    
+    $obj = Data::Dumper->new([$a, \@c]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$VAR1.+alpha.+\$VAR2.+\[.+eta.+theta.+\]/s,
+        "Dump: one string, one array ref"
+    );
+    
+    $obj = Data::Dumper->new([$a, \%d]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$VAR1.+alpha.+\$VAR2.+\{.+iota.+kappa.+\}/s,
+        "Dump: one string, one hash ref"
+    );
+    
+    $obj = Data::Dumper->new([$a, undef]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$VAR1.+alpha.+\$VAR2.+undef/s,
+        "Dump: one string, one undef"
+    );
+    
+    note('names provided');
+    
+    $obj = Data::Dumper->new([$a, $b], [ qw( a b ) ]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$a.+alpha.+\$b.+beta/s,
+        "Dump: names: two strings"
+    );
+    
+    $obj = Data::Dumper->new([$a, \@c], [ qw( a *c ) ]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$a.+alpha.+\@c.+eta.+theta/s,
+        "Dump: names: one string, one array ref"
+    );
+    
+    $obj = Data::Dumper->new([$a, \%d], [ qw( a *d ) ]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$a.+alpha.+\%d.+iota.+kappa/s,
+        "Dump: names: one string, one hash ref"
+    );
+    
+    $obj = Data::Dumper->new([$a,undef], [qw(a *c)]);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$a.+alpha.+\$c.+undef/s,
+        "Dump: names: one string, one undef"
+    );
+    
+    $obj = Data::Dumper->new([$a, $b], [ 'a', '']);
+    $dumpstr = _dumptostr($obj);
+    like($dumpstr,
+        qr/\$a.+alpha.+\$.+beta/s,
+        "Dump: names: two strings: one name empty"
+    );
+    
+    $obj = Data::Dumper->new([$a, $b], [ 'a', '$foo']);
+    $dumpstr = _dumptostr($obj);
+    no warnings 'uninitialized';
+    like($dumpstr,
+        qr/\$a.+alpha.+\$foo.+beta/s,
+        "Dump: names: two strings: one name start with '\$'"
+    );
+    use warnings;
+}
+
+{
+    my ($obj, $dumpstr, $realtype);
+    $obj = Data::Dumper->new([ {IO => *{$::{STDERR}}{IO}} ]);
+    $obj->Useperl(1);
+    eval { $dumpstr = _dumptostr($obj); };
+    $realtype = 'IO';
+    like($@, qr/Can't handle '$realtype' type/,
+        "Got expected error: pure-perl: Data-Dumper does not handle $realtype");
+}

Added: vendor/perl/dist/dist/Data-Dumper/t/freezer_useperl.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/freezer_useperl.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/freezer_useperl.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,106 @@
+#!./perl -w
+#
+# test a few problems with the Freezer option, not a complete Freezer
+# test suite yet
+
+BEGIN {
+    require Config; import Config;
+    no warnings 'once';
+    if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+	print "1..0 # Skip: Data::Dumper was not built\n";
+	exit 0;
+    }
+}
+
+use strict;
+use Test::More tests =>  7;
+use Data::Dumper;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+local $Data::Dumper::Useperl = 1;
+
+{
+    local $Data::Dumper::Freezer = 'freeze';
+
+    # test for seg-fault bug when freeze() returns a non-ref
+    {
+        my $foo = Test1->new("foo");
+        my $dumped_foo = Dumper($foo);
+        ok($dumped_foo,
+           "Use of freezer sub which returns non-ref worked.");
+        like($dumped_foo, qr/frozed/,
+             "Dumped string has the key added by Freezer with useperl.");
+        like(join(" ", Dumper($foo)), qr/\A\$VAR1 = /,
+             "Dumped list doesn't begin with Freezer's return value with useperl");
+    }
+
+    # test for warning when an object does not have a freeze()
+    {
+        my $warned = 0;
+        local $SIG{__WARN__} = sub { $warned++ };
+        my $bar = Test2->new("bar");
+        my $dumped_bar = Dumper($bar);
+        is($warned, 0, "A missing freeze() shouldn't warn.");
+    }
+
+    # a freeze() which die()s should still trigger the warning
+    {
+        my $warned = 0;
+        local $SIG{__WARN__} = sub { $warned++; };
+        my $bar = Test3->new("bar");
+        my $dumped_bar = Dumper($bar);
+        is($warned, 1, "A freeze() which die()s should warn.");
+    }
+
+}
+
+{
+    my ($obj, %dumps);
+    my $foo = Test1->new("foo");
+
+    local $Data::Dumper::Freezer = '';
+    $obj = Data::Dumper->new( [ $foo ] );
+    $dumps{'ddfemptystr'} = _dumptostr($obj);
+
+    local $Data::Dumper::Freezer = undef;
+    $obj = Data::Dumper->new( [ $foo ] );
+    $dumps{'ddfundef'} = _dumptostr($obj);
+
+    is($dumps{'ddfundef'}, $dumps{'ddfemptystr'},
+        "\$Data::Dumper::Freezer same with empty string or undef");
+}
+
+{
+    my ($obj, %dumps);
+    my $foo = Test1->new("foo");
+
+    $obj = Data::Dumper->new( [ $foo ] );
+    $obj->Freezer('');
+    $dumps{'objemptystr'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new( [ $foo ] );
+    $obj->Freezer(undef);
+    $dumps{'objundef'} = _dumptostr($obj);
+
+    is($dumps{'objundef'}, $dumps{'objemptystr'},
+        "Freezer() same with empty string or undef");
+}
+
+
+# a package with a freeze() which returns a non-ref
+package Test1;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze {
+    my $self = shift;
+    $self->{frozed} = 1;
+}
+
+# a package without a freeze()
+package Test2;
+sub new { bless({name => $_[1]}, $_[0]) }
+
+# a package with a freeze() which dies
+package Test3;
+sub new { bless({name => $_[1]}, $_[0]) }
+sub freeze { die "freeze() is broken" }

Added: vendor/perl/dist/dist/Data-Dumper/t/indent.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/indent.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/indent.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,110 @@
+#!./perl -w
+# t/indent.t - Test Indent()
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+
+my $hash = { foo => 42 };
+
+my (%dumpstr);
+my $dumper;
+
+$dumper = Data::Dumper->new([$hash]);
+$dumpstr{noindent} = _dumptostr($dumper);
+# $VAR1 = {
+#           'foo' => 42
+#         };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent();
+$dumpstr{indent_no_arg} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(undef);
+$dumpstr{indent_undef} = _dumptostr($dumper);
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(0);
+$dumpstr{indent_0} = _dumptostr($dumper);
+# $VAR1 = {'foo' => 42}; # no newline
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(1);
+$dumpstr{indent_1} = _dumptostr($dumper);
+# $VAR1 = {
+#   'foo' => 42
+# };
+
+$dumper = Data::Dumper->new([$hash]);
+$dumper->Indent(2);
+$dumpstr{indent_2} = _dumptostr($dumper);
+# $VAR1 = {
+#           'foo' => 42
+#         };
+
+is($dumpstr{noindent}, $dumpstr{indent_no_arg},
+    "absence of Indent is same as Indent()");
+is($dumpstr{noindent}, $dumpstr{indent_undef},
+    "absence of Indent is same as Indent(undef)");
+isnt($dumpstr{noindent}, $dumpstr{indent_0},
+    "absence of Indent is different from Indent(0)");
+isnt($dumpstr{indent_0}, $dumpstr{indent_1},
+    "Indent(0) is different from Indent(1)");
+cmp_ok(length($dumpstr{indent_0}), '<=', length($dumpstr{indent_1}),
+    "Indent(0) is more compact than Indent(1)");
+is($dumpstr{noindent}, $dumpstr{indent_2},
+    "absence of Indent is same as Indent(2), i.e., 2 is default");
+cmp_ok(length($dumpstr{indent_1}), '<=', length($dumpstr{indent_2}),
+    "Indent(1) is more compact than Indent(2)");
+
+my $array = [ qw| foo 42 | ];
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(2);
+$dumpstr{ar_indent_2} = _dumptostr($dumper);
+# $VAR1 = [
+#           'foo',
+#           '42'
+#         ];
+
+$dumper = Data::Dumper->new([$array]);
+$dumper->Indent(3);
+$dumpstr{ar_indent_3} = _dumptostr($dumper);
+# $VAR1 = [
+#           #0
+#           'foo',
+#           #1
+#           '42'
+#         ];
+
+isnt($dumpstr{ar_indent_2}, $dumpstr{ar_indent_3},
+    "On arrays, Indent(2) is different from Indent(3)");
+like($dumpstr{ar_indent_3},
+    qr/\#0.+'foo'.+\#1.+42/s,
+    "Indent(3) annotates array elements with their indices"
+);
+is(scalar(split("\n" => $dumpstr{ar_indent_2})) + 2,
+    scalar(split("\n" => $dumpstr{ar_indent_3})),
+    "Indent(3) runs 2 lines longer than Indent(2)");
+
+__END__
+is($dumpstr{noindent}, $dumpstr{indent_0},
+    "absence of Indent is same as Indent(0)");
+isnt($dumpstr{noindent}, $dumpstr{indent_1},
+    "absence of Indent is different from Indent(1)");
+print STDERR $dumpstr{indent_0};
+print STDERR $dumpstr{ar_indent_3};

Added: vendor/perl/dist/dist/Data-Dumper/t/lib/Testing.pm
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/lib/Testing.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/lib/Testing.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+package Testing;
+use 5.006_001;
+use strict;
+use warnings;
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(_dumptostr);
+use Carp;
+
+sub _dumptostr {
+    my ($obj) = @_;
+    return join '', $obj->Dump;
+}
+
+1;

Added: vendor/perl/dist/dist/Data-Dumper/t/misc.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/misc.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/misc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,209 @@
+#!./perl -w
+# t/misc.t - Test various functionality
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 20;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, @c, %d);
+$a = 'alpha';
+$b = 'beta';
+ at c = ( qw| gamma delta epsilon | );
+%d = ( zeta => 'eta', theta => 'iota' );
+
+note("Argument validation for new()");
+{
+    local $@ = '';
+    eval { my $obj = Data::Dumper->new(undef); };
+    like($@,
+        qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+        "Got error message: new() needs defined argument"
+    );
+}
+
+{
+    local $@ = '';
+    eval { my $obj = Data::Dumper->new( { $a => $b } ); };
+    like($@,
+        qr/^Usage:\s+PACKAGE->new\(ARRAYREF,\s*\[ARRAYREF\]\)/,
+        "Got error message: new() needs array reference"
+    );
+}
+
+{
+    note("\$Data::Dumper::Useperl, Useqq, Deparse");
+    my ($obj, %dumpstr);
+
+    local $Data::Dumper::Useperl = 1;
+    $obj = Data::Dumper->new( [ \@c, \%d ] );
+    $dumpstr{useperl} = [ $obj->Values ];
+    local $Data::Dumper::Useperl = 0;
+
+    local $Data::Dumper::Useqq = 1;
+    $obj = Data::Dumper->new( [ \@c, \%d ] );
+    $dumpstr{useqq} = [ $obj->Values ];
+    local $Data::Dumper::Useqq = 0;
+
+    is_deeply($dumpstr{useperl}, $dumpstr{useqq},
+        "Useperl and Useqq return same");
+
+    local $Data::Dumper::Deparse = 1;
+    $obj = Data::Dumper->new( [ \@c, \%d ] );
+    $dumpstr{deparse} = [ $obj->Values ];
+    local $Data::Dumper::Deparse = 0;
+
+    is_deeply($dumpstr{useperl}, $dumpstr{deparse},
+        "Useperl and Deparse return same");
+}
+
+{
+    note("\$Data::Dumper::Pad and \$obj->Pad");
+    my ($obj, %dumps, $pad);
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Pad(undef);
+    $dumps{'undef'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Pad('');
+    $dumps{'emptystring'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'undef'},
+        "No setting for \$Data::Dumper::Pad and Pad(undef) give same result");
+
+    is($dumps{'noprev'}, $dumps{'emptystring'},
+        "No setting for \$Data::Dumper::Pad and Pad('') give same result");
+
+    $pad = 'XXX: ';
+    local $Data::Dumper::Pad = $pad;
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'ddp'} = _dumptostr($obj);
+    local $Data::Dumper::Pad = '';
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Pad($pad);
+    $dumps{'obj'} = _dumptostr($obj);
+
+    is($dumps{'ddp'}, $dumps{'obj'},
+        "\$Data::Dumper::Pad and \$obj->Pad() give same result");
+
+    is( (grep {! /^$pad/} (split(/\n/, $dumps{'ddp'}))), 0,
+        "Each line of dumped output padded as expected");
+}
+
+{
+    note("\$Data::Dumper::Varname and \$obj->Varname");
+    my ($obj, %dumps, $varname);
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Varname(undef);
+    $dumps{'undef'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Varname('');
+    $dumps{'emptystring'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'undef'},
+        "No setting for \$Data::Dumper::Varname and Varname(undef) give same result");
+
+    # Because Varname defaults to '$VAR', providing an empty argument to
+    # Varname produces a non-default result.
+    isnt($dumps{'noprev'}, $dumps{'emptystring'},
+        "No setting for \$Data::Dumper::Varname and Varname('') give different results");
+
+    $varname = 'MIMI';
+    local $Data::Dumper::Varname = $varname;
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'ddv'} = _dumptostr($obj);
+    local $Data::Dumper::Varname = undef;
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Varname($varname);
+    $dumps{'varname'} = _dumptostr($obj);
+
+    is($dumps{'ddv'}, $dumps{'varname'},
+        "Setting for \$Data::Dumper::Varname and Varname() give same result");
+
+    is( (grep { /^\$$varname/ } (split(/\n/, $dumps{'ddv'}))), 2,
+        "All lines of dumped output use provided varname");
+
+    is( (grep { /^\$VAR/ } (split(/\n/, $dumps{'ddv'}))), 0,
+        "No lines of dumped output use default \$VAR");
+}
+
+{
+    note("\$Data::Dumper::Useqq and \$obj->Useqq");
+    my ($obj, %dumps, $useqq);
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Useqq(undef);
+    $dumps{'undef'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Useqq('');
+    $dumps{'emptystring'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Useqq(0);
+    $dumps{'zero'} = _dumptostr($obj);
+
+    my $current = $Data::Dumper::Useqq;
+    local $Data::Dumper::Useqq = 0;
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'dduzero'} = _dumptostr($obj);
+    local $Data::Dumper::Useqq = $current;
+
+    is($dumps{'noprev'}, $dumps{'undef'},
+        "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+    is($dumps{'noprev'}, $dumps{'zero'},
+        "No setting for \$Data::Dumper::Useqq and Useqq(0) give same result");
+
+    is($dumps{'noprev'}, $dumps{'emptystring'},
+        "No setting for \$Data::Dumper::Useqq and Useqq('') give same result");
+
+    is($dumps{'noprev'}, $dumps{'dduzero'},
+        "No setting for \$Data::Dumper::Useqq and Useqq(undef) give same result");
+
+    local $Data::Dumper::Useqq = 1;
+    $obj = Data::Dumper->new([$a,$b]);
+    $dumps{'ddu'} = _dumptostr($obj);
+    local $Data::Dumper::Useqq = $current;
+
+    $obj = Data::Dumper->new([$a,$b]);
+    $obj->Useqq(1);
+    $dumps{'obj'} = _dumptostr($obj);
+
+    is($dumps{'ddu'}, $dumps{'obj'},
+        "\$Data::Dumper::Useqq=1 and Useqq(1) give same result");
+
+    like($dumps{'ddu'},
+        qr/"$a".+?"$b"/s,
+        "Double-quotes used around values"
+    );
+
+    unlike($dumps{'ddu'},
+        qr/'$a'.+?'$b'/s,
+        "Single-quotes not used around values"
+    );
+}

Added: vendor/perl/dist/dist/Data-Dumper/t/names.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/names.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/names.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,66 @@
+#!./perl -w
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+use Carp;
+use Data::Dumper;
+use Test::More tests => 15;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $obj);
+my (@names);
+my (@newnames, $objagain, %newnames);
+my $dumpstr;
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at names = $obj->Names;
+is_deeply(\@names, [qw(a b)], "Names() returned expected list");
+
+ at newnames = ( qw| gamma delta | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+    "Able to use Names() to set names to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newnames = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @names = $obj->Names(\%newnames); };
+like($@, qr/Argument to Names, if provided, must be array ref/,
+    "Got expected error message: bad argument to Names()");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at newnames = ( qw| gamma delta epsilon | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+    "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got first name expected");
+like($dumpstr, qr/delta/s, "Got first name expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at newnames = ( qw| gamma | );
+$objagain = $obj->Names(\@newnames);
+is($objagain, $obj, "Names returned same object");
+is_deeply($objagain->{names}, \@newnames,
+    "Able to use Names() to set names to be dumped");
+$dumpstr = _dumptostr($obj);
+like($dumpstr, qr/gamma/s, "Got name expected");
+unlike($dumpstr, qr/delta/s, "Did not get name which was not expected");
+unlike($dumpstr, qr/epsilon/s, "Did not get name which was not expected");
+like($dumpstr, qr/\$VAR2/s, "Got default name");
+

Added: vendor/perl/dist/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/purity_deepcopy_maxdepth.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,418 @@
+#!./perl -w
+# t/purity_deepcopy_maxdepth.t - Test Purity(), Deepcopy(),
+# Maxdepth() and recursive structures
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 24;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($a, $b, $c, @d);
+my ($d, $e, $f);
+
+note("\$Data::Dumper::Purity and Purity()");
+
+{
+    my ($obj, %dumps, $purity);
+
+    # Adapted from example in Dumper.pm POD:
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Purity = undef");
+    local $Data::Dumper::Useperl = 1;
+    $purity = undef;
+    local $Data::Dumper::Purity = $purity;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'ddpundef'} = _dumptostr($obj);
+
+    $purity = 0;
+    local $Data::Dumper::Purity = $purity;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'ddpzero'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'ddpundef'},
+        "No previous Purity setting equivalent to \$Data::Dumper::Purity = undef");
+
+    is($dumps{'noprev'}, $dumps{'ddpzero'},
+        "No previous Purity setting equivalent to \$Data::Dumper::Purity = 0");
+}
+
+{
+    my ($obj, %dumps, $purity);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $purity = 0;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Purity($purity);
+    $dumps{'objzero'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'objzero'},
+        "No previous Purity setting equivalent to Purity(0)");
+
+    $purity = undef;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Purity($purity);
+   $dumps{'objundef'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'objundef'},
+        "No previous Purity setting equivalent to Purity(undef)");
+}
+
+{
+    my ($obj, %dumps, $purity);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $purity = 1;
+    local $Data::Dumper::Purity = $purity;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'ddpone'} = _dumptostr($obj);
+
+    isnt($dumps{'noprev'}, $dumps{'ddpone'},
+        "No previous Purity setting different from \$Data::Dumper::Purity = 1");
+}
+
+{
+    my ($obj, %dumps, $purity);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $purity = 1;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Purity(1);
+    $dumps{'objone'} = _dumptostr($obj);
+
+    isnt($dumps{'noprev'}, $dumps{'objone'},
+        "No previous Purity setting different from Purity(0)");
+}
+
+{
+    my ($obj, %dumps, $purity);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $purity = 1;
+    local $Data::Dumper::Purity = $purity;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'ddpone'} = _dumptostr($obj);
+    local $Data::Dumper::Purity = undef;
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Purity(1);
+    $dumps{'objone'} = _dumptostr($obj);
+
+    is($dumps{'ddpone'}, $dumps{'objone'},
+        "\$Data::Dumper::Purity = 1 and Purity(1) are equivalent");
+}
+
+note("\$Data::Dumper::Deepcopy and Deepcopy()");
+
+{
+    my ($obj, %dumps, $deepcopy);
+
+    # Adapted from example in Dumper.pm POD:
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $deepcopy = undef;
+    local $Data::Dumper::Deepcopy = $deepcopy;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'dddundef'} = _dumptostr($obj);
+
+    $deepcopy = 0;
+    local $Data::Dumper::Deepcopy = $deepcopy;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'dddzero'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'dddundef'},
+        "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = undef");
+
+    is($dumps{'noprev'}, $dumps{'dddzero'},
+        "No previous Deepcopy setting equivalent to \$Data::Dumper::Deepcopy = 0");
+}
+
+{
+    my ($obj, %dumps, $deepcopy);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $deepcopy = 0;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Deepcopy($deepcopy);
+    $dumps{'objzero'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'objzero'},
+        "No previous Deepcopy setting equivalent to Deepcopy(0)");
+
+    $deepcopy = undef;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Deepcopy($deepcopy);
+    $dumps{'objundef'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'objundef'},
+        "No previous Deepcopy setting equivalent to Deepcopy(undef)");
+}
+
+{
+    my ($obj, %dumps, $deepcopy);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $deepcopy = 1;
+    local $Data::Dumper::Deepcopy = $deepcopy;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'dddone'} = _dumptostr($obj);
+
+    isnt($dumps{'noprev'}, $dumps{'dddone'},
+        "No previous Deepcopy setting different from \$Data::Dumper::Deepcopy = 1");
+}
+
+{
+    my ($obj, %dumps, $deepcopy);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $deepcopy = 1;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Deepcopy(1);
+    $dumps{'objone'} = _dumptostr($obj);
+
+    isnt($dumps{'noprev'}, $dumps{'objone'},
+        "No previous Deepcopy setting different from Deepcopy(0)");
+}
+
+{
+    my ($obj, %dumps, $deepcopy);
+
+    @d = ('c');
+    $c = \@d;
+    $b = {};
+    $a = [1, $b, $c];
+    $b->{a} = $a;
+    $b->{b} = $a->[1];
+    $b->{c} = $a->[2];
+
+    $deepcopy = 1;
+    local $Data::Dumper::Deepcopy = $deepcopy;
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $dumps{'dddone'} = _dumptostr($obj);
+    local $Data::Dumper::Deepcopy = undef;
+
+    $obj = Data::Dumper->new([$a,$b,$c], [qw(a b c)]);
+    $obj->Deepcopy(1);
+    $dumps{'objone'} = _dumptostr($obj);
+
+    is($dumps{'dddone'}, $dumps{'objone'},
+        "\$Data::Dumper::Deepcopy = 1 and Deepcopy(1) are equivalent");
+}
+
+note("\$Data::Dumper::Maxdepth and Maxdepth()");
+
+{
+    # Adapted from Dumper.pm POD
+
+    my ($obj, %dumps, $maxdepth);
+
+    $a = "pearl";
+    $b = [ $a ];
+    $c = { 'b' => $b };
+    $d = [ $c ];
+    $e = { 'd' => $d };
+    $f = { 'e' => $e };
+
+    note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+    local $Data::Dumper::Useperl = 1;
+
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $Data::Dumper::Maxdepth = undef;
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $dumps{'ddmundef'} = _dumptostr($obj);
+
+    $maxdepth = 3;
+    local $Data::Dumper::Maxdepth = $maxdepth;
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $dumps{'ddm'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'ddmundef'},
+        "No previous Maxdepth setting equivalent to \$Data::Dumper::Maxdepth = undef");
+
+    like($dumps{'noprev'}, qr/$a/s,
+        "Without Maxdepth, got output from deepest level");
+
+    isnt($dumps{'noprev'}, $dumps{'ddm'},
+        "No previous Maxdepth setting differs from setting a shallow Maxdepth");
+
+    unlike($dumps{'ddm'}, qr/$a/s,
+        "With Maxdepth, did not get output from deepest level");
+}
+
+{
+    # Adapted from Dumper.pm POD
+
+    my ($obj, %dumps, $maxdepth);
+
+    $a = "pearl";
+    $b = [ $a ];
+    $c = { 'b' => $b };
+    $d = [ $c ];
+    $e = { 'd' => $d };
+    $f = { 'e' => $e };
+
+    note("Discrepancy between Dumpxs() and Dumpperl() behavior with respect to \$Data::Dumper::Maxdepth = undef");
+    local $Data::Dumper::Useperl = 1;
+
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $dumps{'noprev'} = _dumptostr($obj);
+
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $obj->Maxdepth();
+    $dumps{'maxdepthempty'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'maxdepthempty'},
+        "No previous Maxdepth setting equivalent to Maxdepth() with no argument");
+
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $obj->Maxdepth(undef);
+    $dumps{'maxdepthundef'} = _dumptostr($obj);
+
+    is($dumps{'noprev'}, $dumps{'maxdepthundef'},
+        "No previous Maxdepth setting equivalent to Maxdepth(undef)");
+
+    $maxdepth = 3;
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $obj->Maxdepth($maxdepth);
+    $dumps{'maxdepthset'} = _dumptostr($obj);
+
+    isnt($dumps{'noprev'}, $dumps{'maxdepthset'},
+        "No previous Maxdepth setting differs from Maxdepth() with shallow depth");
+
+    local $Data::Dumper::Maxdepth = 3;
+    $obj = Data::Dumper->new([$f], [qw(f)]);
+    $dumps{'ddmset'} = _dumptostr($obj);
+
+    is($dumps{'maxdepthset'}, $dumps{'ddmset'},
+        "Maxdepth set and \$Data::Dumper::Maxdepth are equivalent");
+}
+
+{
+    my ($obj, %dumps);
+
+    my $warning = '';
+    local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+    local $Data::Dumper::Deparse = 0;
+    local $Data::Dumper::Purity  = 1;
+    local $Data::Dumper::Useperl = 1;
+    sub hello { print "Hello world\n"; }
+    $obj = Data::Dumper->new( [ \&hello ] );
+    $dumps{'ddsksub'} = _dumptostr($obj);
+    like($warning, qr/^Encountered CODE ref, using dummy placeholder/,
+        "Got expected warning: dummy placeholder under Purity = 1");
+}
+
+{
+    my ($obj, %dumps);
+
+    my $warning = '';
+    local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+    local $Data::Dumper::Deparse = 0;
+    local $Data::Dumper::Useperl = 1;
+    sub jello { print "Jello world\n"; }
+    $obj = Data::Dumper->new( [ \&hello ] );
+    $dumps{'ddsksub'} = _dumptostr($obj);
+    ok(! $warning, "Encountered CODE ref, but no Purity, hence no warning");
+}

Added: vendor/perl/dist/dist/Data-Dumper/t/qr.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/qr.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/qr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
+#!perl -X
+
+BEGIN {
+    require Config; import Config;
+    no warnings 'once';
+    if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+	print "1..0 # Skip: Data::Dumper was not built\n";
+	exit 0;
+    }
+}
+
+use Test::More tests => 2;
+use Data::Dumper;
+
+{
+    my $q = q| \/ |;
+    use Data::Dumper;
+    my $qr = qr{$q};
+    eval Dumper $qr;
+    ok(!$@, "Dumping $qr with XS") or diag $@, Dumper $qr;
+    local $Data::Dumper::Useperl = 1;
+    eval Dumper $qr;
+    ok(!$@, "Dumping $qr with PP") or diag $@, Dumper $qr;
+}

Added: vendor/perl/dist/dist/Data-Dumper/t/quotekeys.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/quotekeys.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/quotekeys.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,94 @@
+#!./perl -w
+# t/quotekeys.t - Test Quotekeys()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+    delta   => 'd',
+    beta    => 'b',
+    gamma   => 'c',
+    alpha   => 'a',
+);
+
+run_tests_for_quotekeys();
+SKIP: {
+    skip "XS version was unavailable, so we already ran with pure Perl", 5
+        if $Data::Dumper::Useperl;
+    local $Data::Dumper::Useperl = 1;
+    run_tests_for_quotekeys();
+}
+
+sub run_tests_for_quotekeys {
+    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+    my ($obj, %dumps, $quotekeys, $starting);
+
+    note("\$Data::Dumper::Quotekeys and Quotekeys() set to true value");
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddqkdefault'} = _dumptostr($obj);
+
+    $starting = $Data::Dumper::Quotekeys;
+    $quotekeys = 1;
+    local $Data::Dumper::Quotekeys = $quotekeys;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddqkone'} = _dumptostr($obj);
+    local $Data::Dumper::Quotekeys = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Quotekeys($quotekeys);
+    $dumps{'objqkone'} = _dumptostr($obj);
+
+    is($dumps{'ddqkdefault'}, $dumps{'ddqkone'},
+        "\$Data::Dumper::Quotekeys = 1 is default");
+    is($dumps{'ddqkone'}, $dumps{'objqkone'},
+        "\$Data::Dumper::Quotekeys = 1 and Quotekeys(1) are equivalent");
+    %dumps = ();
+
+    $quotekeys = 0;
+    local $Data::Dumper::Quotekeys = $quotekeys;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddqkzero'} = _dumptostr($obj);
+    local $Data::Dumper::Quotekeys = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Quotekeys($quotekeys);
+    $dumps{'objqkzero'} = _dumptostr($obj);
+
+    is($dumps{'ddqkzero'}, $dumps{'objqkzero'},
+        "\$Data::Dumper::Quotekeys = 0 and Quotekeys(0) are equivalent");
+
+    $quotekeys = undef;
+    local $Data::Dumper::Quotekeys = $quotekeys;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddqkundef'} = _dumptostr($obj);
+    local $Data::Dumper::Quotekeys = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Quotekeys($quotekeys);
+    $dumps{'objqkundef'} = _dumptostr($obj);
+
+    note("Quotekeys(undef) will fall back to the default value\nfor \$Data::Dumper::Quotekeys, which is a true value.");
+    isnt($dumps{'ddqkundef'}, $dumps{'objqkundef'},
+        "\$Data::Dumper::Quotekeys = undef and Quotekeys(undef) are equivalent");
+    isnt($dumps{'ddqkzero'}, $dumps{'objqkundef'},
+        "\$Data::Dumper::Quotekeys = undef and = 0 are equivalent");
+    %dumps = ();
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/seen.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/seen.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/seen.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,103 @@
+#!./perl -w
+# t/seen.t - Test Seen()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 10;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my ($obj, %dumps);
+
+my (@e, %f, @rv, @g, %h, $k);
+ at e = ( qw| alpha beta gamma | );
+%f = ( epsilon => 'zeta', eta => 'theta' );
+ at g = ( qw| iota kappa lambda | );
+%h = ( mu => 'nu', omicron => 'pi' );
+sub j { print "Hello world\n"; }
+$k = 'just another scalar';
+
+{
+    my $warning = '';
+    local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { mark => 'snark' } );
+    like($warning,
+        qr/^Only refs supported, ignoring non-ref item \$mark/,
+        "Got expected warning for non-ref item");
+}
+
+{
+    my $warning = '';
+    local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { mark => undef } );
+    like($warning,
+        qr/^Value of ref must be defined; ignoring undefined item \$mark/,
+        "Got expected warning for undefined value of item");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( undef );
+    is(@rv, 0, "Seen(undef) returned empty array");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( [ qw| mark snark | ] );
+    is(@rv, 0, "Seen(ref other than hashref) returned empty array");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { '*samba' => \@g } );
+    is_deeply($rv[0], $obj, "Got the object back: value array ref");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { '*canasta' => \%h } );
+    is_deeply($rv[0], $obj, "Got the object back: value hash ref");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { '*pinochle' => \&j } );
+    is_deeply($rv[0], $obj, "Got the object back: value code ref");
+}
+
+{
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { '*poker' => \$k } );
+    is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+    my $l = 'loo';
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { $l => \$k } );
+    is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+
+{
+    my $l = '$loo';
+    $obj = Data::Dumper->new( [ \@e, \%f ]);
+    @rv = $obj->Seen( { $l => \$k } );
+    is_deeply($rv[0], $obj, "Got the object back: value ref to scalar");
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/sortkeys.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/sortkeys.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/sortkeys.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,190 @@
+#!./perl -w
+# t/sortkeys.t - Test Sortkeys()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests => 26;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+run_tests_for_sortkeys();
+SKIP: {
+    skip "XS version was unavailable, so we already ran with pure Perl", 13 
+        if $Data::Dumper::Useperl;
+    local $Data::Dumper::Useperl = 1;
+    run_tests_for_sortkeys();
+}
+
+sub run_tests_for_sortkeys {
+    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+    my %d = (
+        delta   => 'd',
+        beta    => 'b',
+        gamma   => 'c',
+        alpha   => 'a',
+    );
+    
+    {
+        my ($obj, %dumps, $sortkeys, $starting);
+    
+        note("\$Data::Dumper::Sortkeys and Sortkeys() set to true value");
+    
+        $starting = $Data::Dumper::Sortkeys;
+        $sortkeys = 1;
+        local $Data::Dumper::Sortkeys = $sortkeys;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddskone'} = _dumptostr($obj);
+        local $Data::Dumper::Sortkeys = $starting;
+    
+        $obj = Data::Dumper->new( [ \%d ] );
+        $obj->Sortkeys($sortkeys);
+        $dumps{'objskone'} = _dumptostr($obj);
+    
+        is($dumps{'ddskone'}, $dumps{'objskone'},
+            "\$Data::Dumper::Sortkeys = 1 and Sortkeys(1) are equivalent");
+        like($dumps{'ddskone'},
+            qr/alpha.*?beta.*?delta.*?gamma/s,
+            "Sortkeys returned hash keys in Perl's default sort order");
+        %dumps = ();
+    
+    }
+    
+    {
+        my ($obj, %dumps, $starting);
+    
+        note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+    
+        $starting = $Data::Dumper::Sortkeys;
+        local $Data::Dumper::Sortkeys = \&reversekeys;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddsksub'} = _dumptostr($obj);
+        local $Data::Dumper::Sortkeys = $starting;
+    
+        $obj = Data::Dumper->new( [ \%d ] );
+        $obj->Sortkeys(\&reversekeys);
+        $dumps{'objsksub'} = _dumptostr($obj);
+    
+        is($dumps{'ddsksub'}, $dumps{'objsksub'},
+            "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) are equivalent");
+        like($dumps{'ddsksub'},
+            qr/gamma.*?delta.*?beta.*?alpha/s,
+            "Sortkeys returned hash keys per sorting subroutine");
+        %dumps = ();
+    
+    }
+    
+    {
+        my ($obj, %dumps, $starting);
+    
+        note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef with filter");
+        $starting = $Data::Dumper::Sortkeys;
+        local $Data::Dumper::Sortkeys = \&reversekeystrim;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddsksub'} = _dumptostr($obj);
+        local $Data::Dumper::Sortkeys = $starting;
+    
+        $obj = Data::Dumper->new( [ \%d ] );
+        $obj->Sortkeys(\&reversekeystrim);
+        $dumps{'objsksub'} = _dumptostr($obj);
+    
+        is($dumps{'ddsksub'}, $dumps{'objsksub'},
+            "\$Data::Dumper::Sortkeys = CODEREF and Sortkeys(CODEREF) select same keys");
+        like($dumps{'ddsksub'},
+            qr/gamma.*?delta.*?beta/s,
+            "Sortkeys returned hash keys per sorting subroutine");
+        unlike($dumps{'ddsksub'},
+            qr/alpha/s,
+            "Sortkeys filtered out one key per request");
+        %dumps = ();
+    
+    }
+    
+    {
+        my ($obj, %dumps, $sortkeys, $starting);
+    
+        note("\$Data::Dumper::Sortkeys(undef) and Sortkeys(undef)");
+    
+        $starting = $Data::Dumper::Sortkeys;
+        $sortkeys = 0;
+        local $Data::Dumper::Sortkeys = $sortkeys;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddskzero'} = _dumptostr($obj);
+        local $Data::Dumper::Sortkeys = $starting;
+    
+        $obj = Data::Dumper->new( [ \%d ] );
+        $obj->Sortkeys($sortkeys);
+        $dumps{'objskzero'} = _dumptostr($obj);
+    
+        $sortkeys = undef;
+        local $Data::Dumper::Sortkeys = $sortkeys;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddskundef'} = _dumptostr($obj);
+        local $Data::Dumper::Sortkeys = $starting;
+    
+        $obj = Data::Dumper->new( [ \%d ] );
+        $obj->Sortkeys($sortkeys);
+        $dumps{'objskundef'} = _dumptostr($obj);
+    
+        is($dumps{'ddskzero'}, $dumps{'objskzero'},
+            "\$Data::Dumper::Sortkeys = 0 and Sortkeys(0) are equivalent");
+        is($dumps{'ddskzero'}, $dumps{'ddskundef'},
+            "\$Data::Dumper::Sortkeys = 0 and = undef equivalent");
+        is($dumps{'objkzero'}, $dumps{'objkundef'},
+            "Sortkeys(0) and Sortkeys(undef) are equivalent");
+        %dumps = ();
+    
+    }
+    
+    note("Internal subroutine _sortkeys");
+    my %e = (
+        nu      => 'n',
+        lambda  => 'l',
+        kappa   => 'k',
+        mu      => 'm',
+        omicron => 'o',
+    );
+    my $rv = Data::Dumper::_sortkeys(\%e);
+    is(ref($rv), 'ARRAY', "Data::Dumper::_sortkeys returned an array ref");
+    is_deeply($rv, [ qw( kappa lambda mu nu omicron ) ],
+        "Got keys in Perl default order");
+    {
+        my $warning = '';
+        local $SIG{__WARN__} = sub { $warning = $_[0] };
+    
+        my ($obj, %dumps, $starting);
+    
+        note("\$Data::Dumper::Sortkeys and Sortkeys() set to coderef");
+    
+        $starting = $Data::Dumper::Sortkeys;
+        local $Data::Dumper::Sortkeys = \&badreturnvalue;
+        $obj = Data::Dumper->new( [ \%d ] );
+        $dumps{'ddsksub'} = _dumptostr($obj);
+        like($warning, qr/^Sortkeys subroutine did not return ARRAYREF/,
+            "Got expected warning: sorting routine did not return array ref");
+    }
+
+}
+
+sub reversekeys { return [ reverse sort keys %{+shift} ]; }
+
+sub reversekeystrim {
+    my $hr = shift;
+    my @keys = sort keys %{$hr};
+    shift(@keys);
+    return [ reverse @keys ];
+}
+
+sub badreturnvalue { return { %{+shift} }; }

Added: vendor/perl/dist/dist/Data-Dumper/t/sparseseen.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/sparseseen.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/sparseseen.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/sparseseen.t - Test Sparseseen()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests =>  8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+    delta   => 'd',
+    beta    => 'b',
+    gamma   => 'c',
+    alpha   => 'a',
+);
+
+run_tests_for_sparseseen();
+SKIP: {
+    skip "XS version was unavailable, so we already ran with pure Perl", 4
+        if $Data::Dumper::Useperl;
+    local $Data::Dumper::Useperl = 1;
+    run_tests_for_sparseseen();
+}
+
+sub run_tests_for_sparseseen {
+    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+    my ($obj, %dumps, $sparseseen, $starting);
+
+    note("\$Data::Dumper::Sparseseen and Sparseseen() set to true value");
+
+    $starting = $Data::Dumper::Sparseseen;
+    $sparseseen = 1;
+    local $Data::Dumper::Sparseseen = $sparseseen;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddssone'} = _dumptostr($obj);
+    local $Data::Dumper::Sparseseen = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Sparseseen($sparseseen);
+    $dumps{'objssone'} = _dumptostr($obj);
+
+    is($dumps{'ddssone'}, $dumps{'objssone'},
+        "\$Data::Dumper::Sparseseen = 1 and Sparseseen(1) are equivalent");
+    %dumps = ();
+
+    $sparseseen = 0;
+    local $Data::Dumper::Sparseseen = $sparseseen;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddsszero'} = _dumptostr($obj);
+    local $Data::Dumper::Sparseseen = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Sparseseen($sparseseen);
+    $dumps{'objsszero'} = _dumptostr($obj);
+
+    is($dumps{'ddsszero'}, $dumps{'objsszero'},
+        "\$Data::Dumper::Sparseseen = 0 and Sparseseen(0) are equivalent");
+
+    $sparseseen = undef;
+    local $Data::Dumper::Sparseseen = $sparseseen;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddssundef'} = _dumptostr($obj);
+    local $Data::Dumper::Sparseseen = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Sparseseen($sparseseen);
+    $dumps{'objssundef'} = _dumptostr($obj);
+
+    is($dumps{'ddssundef'}, $dumps{'objssundef'},
+        "\$Data::Dumper::Sparseseen = undef and Sparseseen(undef) are equivalent");
+    is($dumps{'ddsszero'}, $dumps{'objssundef'},
+        "\$Data::Dumper::Sparseseen = undef and = 0 are equivalent");
+    %dumps = ();
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/toaster.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/toaster.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/toaster.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,88 @@
+#!./perl -w
+# t/toaster.t - Test Toaster()
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+
+use Data::Dumper;
+use Test::More tests =>  8;
+use lib qw( ./t/lib );
+use Testing qw( _dumptostr );
+
+my %d = (
+    delta   => 'd',
+    beta    => 'b',
+    gamma   => 'c',
+    alpha   => 'a',
+);
+
+run_tests_for_toaster();
+SKIP: {
+    skip "XS version was unavailable, so we already ran with pure Perl", 4
+        if $Data::Dumper::Useperl;
+    local $Data::Dumper::Useperl = 1;
+    run_tests_for_toaster();
+}
+
+sub run_tests_for_toaster {
+    note("\$Data::Dumper::Useperl = $Data::Dumper::Useperl");
+
+    my ($obj, %dumps, $toaster, $starting);
+
+    note("\$Data::Dumper::Toaster and Toaster() set to true value");
+
+    $starting = $Data::Dumper::Toaster;
+    $toaster = 1;
+    local $Data::Dumper::Toaster = $toaster;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddtoasterone'} = _dumptostr($obj);
+    local $Data::Dumper::Toaster = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Toaster($toaster);
+    $dumps{'objtoasterone'} = _dumptostr($obj);
+
+    is($dumps{'ddtoasterone'}, $dumps{'objtoasterone'},
+        "\$Data::Dumper::Toaster = 1 and Toaster(1) are equivalent");
+    %dumps = ();
+
+    $toaster = 0;
+    local $Data::Dumper::Toaster = $toaster;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddtoasterzero'} = _dumptostr($obj);
+    local $Data::Dumper::Toaster = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Toaster($toaster);
+    $dumps{'objtoasterzero'} = _dumptostr($obj);
+
+    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterzero'},
+        "\$Data::Dumper::Toaster = 0 and Toaster(0) are equivalent");
+
+    $toaster = undef;
+    local $Data::Dumper::Toaster = $toaster;
+    $obj = Data::Dumper->new( [ \%d ] );
+    $dumps{'ddtoasterundef'} = _dumptostr($obj);
+    local $Data::Dumper::Toaster = $starting;
+
+    $obj = Data::Dumper->new( [ \%d ] );
+    $obj->Toaster($toaster);
+    $dumps{'objtoasterundef'} = _dumptostr($obj);
+
+    is($dumps{'ddtoasterundef'}, $dumps{'objtoasterundef'},
+        "\$Data::Dumper::Toaster = undef and Toaster(undef) are equivalent");
+    is($dumps{'ddtoasterzero'}, $dumps{'objtoasterundef'},
+        "\$Data::Dumper::Toaster = undef and = 0 are equivalent");
+    %dumps = ();
+}
+

Added: vendor/perl/dist/dist/Data-Dumper/t/values.t
===================================================================
--- vendor/perl/dist/dist/Data-Dumper/t/values.t	                        (rev 0)
+++ vendor/perl/dist/dist/Data-Dumper/t/values.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,40 @@
+#!./perl -w
+
+BEGIN {
+    if ($ENV{PERL_CORE}){
+        require Config; import Config;
+        no warnings 'once';
+        if ($Config{'extensions'} !~ /\bData\/Dumper\b/) {
+            print "1..0 # Skip: Data::Dumper was not built\n";
+            exit 0;
+        }
+    }
+}
+
+use strict;
+use Data::Dumper;
+use Test::More tests => 4;
+
+my ($a, $b, $obj);
+my (@values, @names);
+my (@newvalues, $objagain, %newvalues);
+$a = 'alpha';
+$b = 'beta';
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+ at values = $obj->Values;
+is_deeply(\@values, [$a,$b], "Values() returned expected list");
+
+ at newvalues = ( qw| gamma delta epsilon | );
+$objagain = $obj->Values(\@newvalues);
+is($objagain, $obj, "Values returned same object");
+is_deeply($objagain->{todump}, \@newvalues,
+    "Able to use Values() to set values to be dumped");
+
+$obj = Data::Dumper->new([$a,$b], [qw(a b)]);
+%newvalues = ( gamma => 'delta', epsilon => 'zeta' );
+eval { @values = $obj->Values(\%newvalues); };
+like($@, qr/Argument to Values, if provided, must be array ref/,
+    "Got expected error message: bad argument to Values()");
+
+

Added: vendor/perl/dist/dist/ExtUtils-CBuilder/Changes
===================================================================
--- vendor/perl/dist/dist/ExtUtils-CBuilder/Changes	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-CBuilder/Changes	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,455 @@
+Revision history for Perl extension ExtUtils::CBuilder.
+
+0.280209 - 2012-10-20 (Perl v5.17.5)
+
+  Fixed:
+
+  - Allow options to be passed to prelink in Windows (perl #115100)
+    [Eric Brine]
+
+0.280208 - 2012-06-20 (Perl v5.17.1)
+
+  Fixed:
+
+  - Corrected location in which manifest file is looked for on
+    Windows (RT#35943, perl #111798) [snaury at gmail.com]
+
+0.280207 (Not released)
+
+  Fixed:
+
+  - Corrected test for existence of manifest file on Windows
+    (perl #111782) [Steve Hay]
+
+0.280206 - 2012-03-20 (Perl v5.15.9)
+
+  Documented:
+
+  - Added a SUPPORT section to indicate that upstream is Perl 5 core
+
+0.280205 - 2011-12-20 (Perl v5.15.6)
+
+  Fixed:
+
+  - Fixed bug picking up ccflags from Config
+
+0.280204 - 2011-06-20 (Perl v5.15.0)
+
+  Minor:
+
+  - Quotation style cleanup
+
+0.280203 - 2011-05-14 (Perl v5.14.0)
+
+  Fixed:
+
+  - Appends CFLAGS and LDFLAGS environments instead of overriding
+
+  - Reset ccflags on compilation for VMS.
+
+  Changed:
+
+  - Refactored OS name mapping to use Perl::OSType
+
+0.280202 - Sun Jan 23 10:47:51 EST 2011
+
+  - Different file names used for test files; allows EU::CB tests
+    to be run in parallel. [Florian Ragwitz]
+
+0.280201 - Fri Jan 21 15:16:36 EST 2011
+
+  Fixed:
+
+  - t/04-base.t no longer attempt to compile or link as this provokes
+    failures on main platforms
+
+  - Various typo fixes in Pod or comments
+
+0.2802 - Sun Dec 12 07:22:43 EST 2010
+
+  Fixed:
+
+  - Incorporated another t/04-base.t fix from bleadperl
+    [Chris Williams]
+
+0.2801 - Wed Dec  8 21:36:56 EST 2010
+
+  Fixed:
+
+  - Fixed spurious t/04-base.t failure when run from Perl core
+    [David Golden]
+
+0.2800 - Mon Dec  6 16:05:46 EST 2010
+
+  - No changes from 0.27_07
+
+0.27_07 - Wed Sep 29 21:48:55 EDT 2010
+
+  Fixed:
+
+  - Fixed t/02-link.t on perl < 5.8
+
+0.27_06 - Mon Sep 27 15:29:54 EDT 2010
+
+  Fixed:
+
+  - Preserves exit status on VMS [Craig Berry]
+
+  - Fix Win32 split_like_shell escaping [Christian Walde]
+
+0.27_05 - Wed Jul 28 15:29:59 EDT 2010
+
+  Fixed:
+
+  - Tests no longer fail if user has set the CC environment variable
+
+0.27_04 - Mon Jul 26 22:41:43 EDT 2010
+
+  Added:
+  - handle c compiler and c++ compiler separately
+    (adds requirement for IPC::Cmd) [Jens Rehsack]
+
+  Others:
+  - rely on File::Temp::tempfile and File::Spec::tmpdir to
+    get unique file name for checking for compiler
+    [Jens Rehsack]
+
+  - Code base modernization and substantial code coverage improvments
+    [Jim Keenan]
+
+0.2703 - Tue Mar 16 17:10:55 EDT 2010
+
+ Bugs fixed:
+ - fixed tests for Windows and MSVC [Jan Dubois]
+
+0.2702 - Mon Feb 22 15:10:52 EST 2010
+
+ Bugs fixed:
+ - compile() changes in 0.2701 did not work on Windows.  Now fixed.
+
+0.2701 - Tue Feb 16 09:12:45 EST 2010
+
+ Bugs fixed:
+ - compile() now accepts both string & array for 'include_dirs'
+   argument, as documented.(RT#54606) [Alberto Sim\xF5es]
+
+0.27 - Thu Oct 29 21:29:56 EDT 2009
+
+ Other:
+ - Removed Build.PL to avoid creating a circular dependency
+ - Added version numbers to Windows compiler driver modules
+
+0.26_05 - Sun Oct 25 17:29:02 EDT 2009
+
+ Bugs fixed:
+ - Fixed t/02link.t failures on cygwin with Perl 5.8 [David Golden]
+
+ Other:
+ - Made have_compiler (and have_cplusplus) quiet without echoing
+   the test command to STDOUT [David Golden]
+
+0.26_04 - Mon Oct 19 21:57:46 EDT 2009
+
+ Enhancements:
+ - Added 'have_cplusplus()' method to check for C++ support
+ - Added patches for building Perl with mingw64 [Sisyphus]
+ - Allow CC environment variable to override $Config{cc}
+
+ Bugs fixed:
+ - Fixed link executable command for Win32 MSVC (RT#40819) [Cosimo
+   Streppone]
+ - Removed MSVC version check when embedding a manifest file
+   (RT #43002) [Steve Hay]
+
+ Other:
+ - Split Windows compiler driver packages into individual *.pm files
+
+0.260301 - Sat Aug 29 11:04:41 EDT 2009
+
+ Bugs fixed:
+ - Fixed linking error on Win32 with gcc compiler (RT#49000)
+   [kmx]
+
+0.2603 - Sat Jul 18 06:56:06 EDT 2009
+
+ Bugs fixed:
+ - Makefile.PL had wrong INSTALLDIRS setting for older Perls
+   (RT#47985) [David Golden]
+
+0.2602 - Sat Jul  4 10:57:12 EDT 2009
+
+ Bugs fixed:
+ - Fixed 00-have-compiler.t if $^X is a relative path [David Wheeler]
+
+0.2601 - Wed Jul  1 09:37:39 EDT 2009
+
+ Bugs fixed:
+ - On VMS, cleans up extra files generated during testing
+   [John E. Malmberg, Craig Berry]
+
+0.26 - Mon Jun 29 20:11:52 EDT 2009
+
+ - No changes from 0.25_01
+
+0.25_01 - Sat Jun 27 23:13:20 EDT 2009
+
+ - Changed test library to Test::More
+
+ - Added tests for have_compiler
+
+ - Skips tests that need a compiler if have_compiler is false
+
+ - have_compiler will try to compile in the current directory
+   if compiling in tmpdir fails for whatever reason
+
+0.25 - Fri Jun 26 16:18:13 EDT 2009
+
+ - Slight diagnostic improvements in link.t
+
+0.24_01 - Sun Mar  8 14:50:10 2009
+
+ - On Windows, don't generate "mt" command when CRT is statically
+   linked. [Jan Dubois]
+
+ - On Cygwin, examine $Config{useshrplib} to see whether we're
+   supposed to be linking with a shared perl library or not. [Reini
+   Urban]
+
+ - In link_executable() on Cygwin, trust $Config{ld} rather than using
+   $Config{cc} for linking. [Reini Urban]
+
+ - Add 'haiku' as a Unix-like platform. [Ingo Weinhold]
+
+0.24 - Fri Aug 15 22:01:48 2008
+
+ - Added 'gnu' and 'gnukfreebsd' as Unix variants. [Niko Tyni]
+
+ - Brought in some VMS fixes from bleadperl: "Correct and complete
+   CBuilder's handling of external libraries when linking on VMS."
+   [Craig Berry]
+
+0.23 - Sat Apr 19 22:28:03 2008
+
+ - Fixed some problems (some old, some new) with Strawberry Perl on
+   Windows. [Alberto Simo~es]
+
+ - Will now install in the core perl lib directory when the user's
+   perl is new enough to have us in core. [Yi Ma Mao]
+
+0.22 - Fri Feb  8 21:52:21 2008
+
+ - Replaced the split_like_shell() method on Windows with a
+   near-no-op, which is probably more correct and has the benefit of
+   not messing up UNC paths. [John R. LoVerso, see
+   http://rt.cpan.org/Ticket/Display.html?id=26545]
+
+ - Fixed extra_compiler_flags on Windows, they were being
+   ignored. [Robert May]
+
+0.21 - Tue Oct 30 06:46:01 2007
+
+ - Clean up perl_src path using Cwd::realpath().  Only affects usage
+   as part of the perl core.
+
+ - Protect $., $@, $!, $^E, and $? from any clobbering that might
+   occur in our DESTROY method. [Zefram]
+
+ - From bleadperl, a patch to clean up debug symbol files (.pdb for
+   VC++, .tds for BCC) when running have_compiler(). [Steve Hay &
+   Steve Peters]
+
+0.19 - Sun May 13 14:29:18 2007
+
+ - When building as part of the perl core (so this is irrelevant for
+   people downloading from CPAN) we now try a little harder to find
+   the perl sources. [Jos Boumans]
+
+ - Fixed a part of the manifest thingy that got broken on 64-bit
+   Windows platforms in version 0.18. [Steve Hay, Jan Dubois]
+
+0.18 - Mon Mar 26 21:29:09 2007
+
+ - Various OS/2 fixes:
+   + Put .LIB file near .DEF file
+   + Got library-file building working better
+   + Handled libperl_overrides better
+   [Ilya Zakharevich]
+
+ - On Windows: embed manifest files in DLLs built with Module-Build
+   when using VC8. [Steve Hay]
+
+ - Added a workaround for a config error on dec_osf: the linker is
+   $Config{cc}, not $Config{ld}. [Jarkko Hietaniemi]
+
+ - Borland's compiler "response files" will not pass through macro
+   definitions that contain quotes. The quotes get stripped and there
+   seems to be no way to escape them. So we leave macros on the
+   command line. [Randy W. Sims]
+
+0.18  Sat Mar 25 13:35:47 CST 2006
+
+ - Yet more fixes for arg_defines() on VMS. [Craig A. Berry and John
+   E. Malmberg]
+
+0.17  Wed Mar 15 22:46:15 CST 2006
+
+ - When we're being run from an uninstalled perl distribution
+   (e.g. one that's in the process of being built and tested), we
+   search for perl first in the current working directory. [Randy
+   Sims]
+
+ - More fixing of the arg_defines() method on VMS. [Craig A. Berry and
+   John E. Malmberg]
+
+0.16  Mon Mar 13 17:08:21 CST 2006
+
+ - Fix quoting of command line arguments on Windows. [Yitzchak
+   Scott-Thoennes]
+
+ - Provided a custom arg_defines() on VMS that does essentially the
+   same thing for /define that version 0.14 did for /include. [Craig
+   A. Berry]
+
+ - Documented the existing 'quiet' parameter, which silences the
+   printing of system() commands. [Suggested by Yitzchak
+   Scott-Thoennes]
+
+0.15  Mon Oct  3 17:10:32 CDT 2005
+
+ - Several OS/2 fixes have been made, including: 1) adding the
+   necessary version string to DLLs, 2) passing the executable's name
+   to 'ldopts' without the .exe extension, 3) avoiding calling 'env'
+   via the 'shrpenv' thingy, since it triggers a fork() bug. [Ilya
+   Zakharevich]
+
+ - Integrate a couple cleanup-related changes from bleadperl that
+   somehow never got into this copy. [Steve Hay]
+
+ - Added a new 'defines' parameter to compile(), which gives a
+   platform-independant way to specify various -Dfoo=bar (or the
+   equivalent) compiler defines. [Randy W. Sims]
+
+0.14  Mon Sep 19 13:40:37 CDT 2005
+
+ - Several fixes have been made for VMS, including: 1) there can only
+   be one /include qualifier, so merge multiple /includes into one; 2)
+   make sure the executable is named the same way that dynaloader will
+   look for it; 3) make sure the option files for the exported symbols
+   and the PERLSHR image are passed properly to the linker. [John
+   E. Malmberg]
+
+0.13  Wed Aug 24 20:05:59 CDT 2005
+
+ - Several temporary files weren't being cleaned up during testing,
+   because the 'cleanup' mechanism was never properly implemented.
+   This is now fixed. [Steve Hay]
+
+0.12  Mon May 30 16:40:10 CDT 2005
+
+ - In order to integrate into the perl core, patches were contributed
+   that a) put a $VERSION variable in each .pm file, b) add a 'quiet'
+   parameter to new() to shut up some of the command-echoing, c)
+   checks for the perl source headers in the CORE/ directory in the
+   perl source tree, not in the post-installation location, and d)
+   adjusts the CWD when running the regression tests under the perl
+   core. [Yitzchak Scott-Thoennes]
+
+ - Various parts of the code were looking for the CORE/ directory in
+   $Config{archlib}, $Config{installarchlib}, and $Config{archlibexp}.
+   Only the latter is correct, so we use that everywhere now.
+   [Curt Tilmes]
+
+ - For Unix-ish platforms, link_executable() will now prefer
+   $Config{cc} to $Config{ld}, because that typically works
+   better. [Jarkko Hietaniemi and H.Merijn Brand]
+
+ - Prelinking (invoking ExtUtils::Mksymlists to create options-files)
+   is now only done when we're building dynamic libraries. [Yitzchak
+   Scott-Thoennes]
+
+0.11  Tue Apr  5 20:58:41 CDT 2005
+
+ - Added a licensing statement to CBuilder.pm. [Spotted by Chip
+   Salzenberg]
+
+0.10  Mon Mar 14 20:18:19 CST 2005
+
+ - Split out a few simple routines that format how compile switches
+   are formatted, so that we can override them for platforms like VMS
+   where they're very different.
+
+ - Fix compile() and link() on VMS. [Help from Michael Schwern and
+   Peter Prymmer]
+
+0.09  Tue Feb  8 17:57:41 CST 2005
+
+ - Fixed a broken link_executable() method on cygwin - it now uses
+   'gcc' instead of $Config{ld} for the linking, because the latter is
+   actually a shell script which calls a perl script which calls gcc
+   in a way that only works for creating shared libraries, not
+   executables.
+
+0.08  Tue Jan 18 21:54:11 CST 2005
+
+ - Fixed a testing error in which I had the prototype wrong for the
+   main() function. [Jose Pedro Oliveira]
+
+0.07  Wed Jan 12 21:50:34 CST 2005
+
+ - Added the link_executable() method, which provides the ability to
+   create standalone executables.  This is NOT yet implemented on
+   Windows, and therefore the tests for it are skipped on Win32.
+   [Alberto Manuel Brandao Simoes]
+
+ - Integrated the latest split_like_shell() for Windows from
+   Module::Build (really need to find a better home for this code...),
+   which now does a much better job of handling quotes and backslashes
+   and so on. [Randy Sims]
+
+ - Fixed a couple of Windows problems related to the output-file name
+   in link(), and some clobbering of the 'include_dirs' parameter to
+   compile(). [Randy Sims]
+
+0.06  Mon Dec 27 22:51:36 CST 2004
+
+ - Fixed a bug on Unix environments in which our work-around for
+   shell-commands like "FOO=BAR cc" (which is supposed to be turned
+   into "env FOO=BAR cc" to actually work) wasn't being called.
+
+0.05  Wed Oct 13 23:09:09 CDT 2004
+
+ - Fixed a bug in split_like_shell() in which leading whitespace was
+   creating an empty word, manifesting as something like "gcc - no
+   such file or directory" during tests. [Spotted by Warren L. Dodge]
+
+ - Incorporate another split_like_shell() fix from Module::Build.
+
+0.04  Sun Oct 10 00:31:08 CDT 2004
+
+ - Changed the split_like_shell() method to use the shellwords()
+   function from Text::ParseWords (a core module since 5.0), which
+   does a much better job than the split() we were using.
+
+
+0.03  Fri May 14 23:12:23 CDT 2004
+
+ - Fixed minor problems with the Build.PL file, the module names
+   should be quoted.
+
+ - The VMS module declared itself with the wrong package name.
+
+
+0.02  Fri Feb 20 10:17:40 CST 2004
+
+ - Fixed a bug in .../Platform/Windows.pm, in which compile() was
+   ignoring an 'include_dirs' argument.  [Randy Sims]
+
+ - Fixed a bug in .../Platform/Windows.pm, in which output files were
+   being created in the root directory \ when they should be created
+   in the current directory. [Randy Sims]
+
+
+0.01  Mon Jan 12 08:12:35 CST 2004
+
+ - Original release, taken from Module::Build's C-building code, with
+   patching help from Randy Sims.

Added: vendor/perl/dist/dist/ExtUtils-CBuilder/LICENSE
===================================================================
--- vendor/perl/dist/dist/ExtUtils-CBuilder/LICENSE	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-CBuilder/LICENSE	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,379 @@
+This software is copyright (c) 2012 by Ken Williams.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+Terms of the Perl programming language system itself
+
+a) the GNU General Public License as published by the Free
+   Software Foundation; either version 1, or (at your option) any
+   later version, or
+b) the "Artistic License"
+
+--- The GNU General Public License, Version 1, February 1989 ---
+
+This software is Copyright (c) 2012 by Ken Williams.
+
+This is free software, licensed under:
+
+  The GNU General Public License, Version 1, February 1989
+
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+ 51 Franklin St, Suite 500, Boston, MA  02110-1335  USA
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation's
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as "you".
+
+  1. You may copy and distribute verbatim copies of the Program's source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
+  2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating that
+    you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish, that
+    in whole or in part contains the Program or any part thereof, either
+    with or without modifications, to be licensed at no charge to all
+    third parties under the terms of this General Public License (except
+    that you may choose to grant warranty protection to some or all
+    third parties, at your option).
+
+    c) If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use
+    in the simplest and most usual way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this General
+    Public License.
+
+    d) You may charge a fee for the physical act of transferring a
+    copy, and you may at your option offer warranty protection in
+    exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+  3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal charge
+    for the cost of distribution) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+  4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+  5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein.
+
+  7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+  8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19xx name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w' and `show
+c'; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  program `Gnomovision' (a program to direct compilers to make passes
+  at assemblers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+--- The Artistic License 1.0 ---
+
+This software is Copyright (c) 2012 by Ken Williams.
+
+This is free software, licensed under:
+
+  The Artistic License 1.0
+
+The Artistic License
+
+Preamble
+
+The intent of this document is to state the conditions under which a Package
+may be copied, such that the Copyright Holder maintains some semblance of
+artistic control over the development of the package, while giving the users of
+the package the right to use and distribute the Package in a more-or-less
+customary fashion, plus the right to make reasonable modifications.
+
+Definitions:
+
+  - "Package" refers to the collection of files distributed by the Copyright
+    Holder, and derivatives of that collection of files created through
+    textual modification.
+  - "Standard Version" refers to such a Package if it has not been modified,
+    or has been modified in accordance with the wishes of the Copyright
+    Holder.
+  - "Copyright Holder" is whoever is named in the copyright or copyrights for
+    the package.
+  - "You" is you, if you're thinking about copying or distributing this Package.
+  - "Reasonable copying fee" is whatever you can justify on the basis of media
+    cost, duplication charges, time of people involved, and so on. (You will
+    not be required to justify it to the Copyright Holder, but only to the
+    computing community at large as a market that must bear the fee.)
+  - "Freely Available" means that no fee is charged for the item itself, though
+    there may be fees involved in handling the item. It also means that
+    recipients of the item may redistribute it under the same conditions they
+    received it.
+
+1. You may make and give away verbatim copies of the source form of the
+Standard Version of this Package without restriction, provided that you
+duplicate all of the original copyright notices and associated disclaimers.
+
+2. You may apply bug fixes, portability fixes and other modifications derived
+from the Public Domain or from the Copyright Holder. A Package modified in such
+a way shall still be considered the Standard Version.
+
+3. You may otherwise modify your copy of this Package in any way, provided that
+you insert a prominent notice in each changed file stating how and when you
+changed that file, and provided that you do at least ONE of the following:
+
+  a) place your modifications in the Public Domain or otherwise make them
+     Freely Available, such as by posting said modifications to Usenet or an
+     equivalent medium, or placing the modifications on a major archive site
+     such as ftp.uu.net, or by allowing the Copyright Holder to include your
+     modifications in the Standard Version of the Package.
+
+  b) use the modified Package only within your corporation or organization.
+
+  c) rename any non-standard executables so the names do not conflict with
+     standard executables, which must also be provided, and provide a separate
+     manual page for each non-standard executable that clearly documents how it
+     differs from the Standard Version.
+
+  d) make other distribution arrangements with the Copyright Holder.
+
+4. You may distribute the programs of this Package in object code or executable
+form, provided that you do at least ONE of the following:
+
+  a) distribute a Standard Version of the executables and library files,
+     together with instructions (in the manual page or equivalent) on where to
+     get the Standard Version.
+
+  b) accompany the distribution with the machine-readable source of the Package
+     with your modifications.
+
+  c) accompany any non-standard executables with their corresponding Standard
+     Version executables, giving the non-standard executables non-standard
+     names, and clearly documenting the differences in manual pages (or
+     equivalent), together with instructions on where to get the Standard
+     Version.
+
+  d) make other distribution arrangements with the Copyright Holder.
+
+5. You may charge a reasonable copying fee for any distribution of this
+Package.  You may charge any fee you choose for support of this Package. You
+may not charge a fee for this Package itself. However, you may distribute this
+Package in aggregate with other (possibly commercial) programs as part of a
+larger (possibly commercial) software distribution provided that you do not
+advertise this Package as a product of your own.
+
+6. The scripts and library files supplied as input to or produced as output
+from the programs of this Package do not automatically fall under the copyright
+of this Package, but belong to whomever generated them, and may be sold
+commercially, and may be aggregated with this Package.
+
+7. C or perl subroutines supplied by you and linked into this Package shall not
+be considered part of this Package.
+
+8. The name of the Copyright Holder may not be used to endorse or promote
+products derived from this software without specific prior written permission.
+
+9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+The End
+

Added: vendor/perl/dist/dist/ExtUtils-CBuilder/Makefile.PL
===================================================================
--- vendor/perl/dist/dist/ExtUtils-CBuilder/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-CBuilder/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,52 @@
+use strict;
+use warnings;
+
+use ExtUtils::MakeMaker 6.30;
+
+my %WriteMakefileArgs = (
+  "NAME" => "ExtUtils::CBuilder",
+  "VERSION_FROM" => "lib/ExtUtils/CBuilder.pm",
+  "ABSTRACT_FROM" => "lib/ExtUtils/CBuilder.pm",
+  "AUTHOR" => "Ken Williams <kwilliams\@cpan.org>, The Perl 5 Porters",
+  "BUILD_REQUIRES" => {
+    "Test::More" => "0.47"
+  },
+  "CONFIGURE_REQUIRES" => {
+    "ExtUtils::MakeMaker" => "6.30"
+  },
+  "EXE_FILES" => [],
+  "INSTALLDIRS" => ($] < 5.011 ? 'perl' : 'site'),
+  "LICENSE" => "perl",
+  "PREREQ_PM" => {
+    "Cwd" => 0,
+    "File::Basename" => 0,
+    "File::Spec" => "3.13",
+    "File::Temp" => 0,
+    "IO::File" => 0,
+    "IPC::Cmd" => 0,
+    "Perl::OSType" => 0,
+    "Text::ParseWords" => 0
+  },
+);
+
+unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) {
+  my $br = delete $WriteMakefileArgs{BUILD_REQUIRES};
+  my $pp = $WriteMakefileArgs{PREREQ_PM};
+  for my $mod ( keys %$br ) {
+    if ( exists $pp->{$mod} ) {
+      $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod};
+    }
+    else {
+      $pp->{$mod} = $br->{$mod};
+    }
+  }
+}
+
+delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
+  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
+
+$WriteMakefileArgs{INSTALLDIRS} = 'perl'
+    if $] >= 5.009005 && $] <= 5.011000;
+
+WriteMakefile(%WriteMakefileArgs);
+

Added: vendor/perl/dist/dist/ExtUtils-CBuilder/README.patching
===================================================================
--- vendor/perl/dist/dist/ExtUtils-CBuilder/README.patching	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-CBuilder/README.patching	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+Patching instructions for ExtUtils::CBuilder
+
+1. Check for any changes to .pm files since dev or stable Perl release.  E.g.
+to check for changes since v5.15.8:
+
+    $ cd dist/ExtUtils-CBuilder
+    $ git log v5.15.8..blead -- .
+
+2. If you are making the first change since the last Perl release, you need to
+bump the $VERSION in all .pm files and update the Changes file with the new
+version.  In the Changes file, put the expected *NEXT* release of Perl (dev or
+stable) as the release date and version.  E.g. after v5.15.8, I added this line
+to Changes to indicate what will be next release:
+
+    0.280206 - 2012-03-20 (Perl v5.15.9)
+
+3. Add an entry to Changes for your work
+
+4. Update Makefile.PL, MANIFEST.SKIP or other support files as necessary. E.g.
+update Makefile.PL with any changes to prerequisites.
+
+5. Commit all changes (preferably to a branch)
+
+6. Run Configure/make/make test and check for errors.  If there are any, fix them.
+
+7. If all is well, push your commits to blead or send a patch to p5p if you do
+not have commit access to the Perl 5 repository

Added: vendor/perl/dist/dist/ExtUtils-CBuilder/README.release
===================================================================
--- vendor/perl/dist/dist/ExtUtils-CBuilder/README.release	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-CBuilder/README.release	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+Release instructions for dual-life ExtUtils::CBuilder
+
+1. Check out a tag/commit corresponding to the release point.  This
+should generally be a Perl release (dev or stable).  Make sure
+your working tree is clear of extraneous files. E.g.
+
+    $ git checkout v5.15.8
+    $ git clean -dxf
+
+2. Rsync the ExtUtils-CBuilder directory to a temporary directory for
+release.  E.g.
+
+    $ rsync -av --delete dist/ExtUtils-CBuilder /tmp
+
+3. Change to the temp directory
+
+    $ cd /tmp/ExtUtils-CBuilder
+
+4. Look at the Changes file.  If it was not kept up to date in blead,
+take a minute to feel sad, then update it.  Remember to copy the
+changes back to blead later.
+
+5. Configure and then make a MANIFEST
+
+    $ perl Makefile.PL
+    $ make manifest
+
+6. Build a release directory and examine its contents, paying particular
+attention to the MANIFEST and the META files
+
+    $ make distdir
+
+7. Test the release directory
+
+    $ make disttest
+
+8. If all looks good, create a tarball and upload it to CPAN (maybe
+install CPAN::Uploader or an equivalent tool)
+
+    $ make dist
+    $ cpan_upload ExtUtils-CBuilder-X.YYYZZZ.tar.gz
+
+9. Update Porting/Maintainers.pl in the Perl repo with the new tarball
+name for ExtUtils-CBuilder.
+
+10. If you updated Changes, copy that back to blead now
+
+11. Commit any changes to blead (or submit it as a patch if you don't have a
+commit bit)

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Constants.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+package ExtUtils::ParseXS::Constants;
+use strict;
+use warnings;
+use Symbol;
+
+our $VERSION = '3.18';
+
+=head1 NAME
+
+ExtUtils::ParseXS::Constants - Initialization values for some globals
+
+=head1 SYNOPSIS
+
+  use ExtUtils::ParseXS::Constants ();
+
+  $PrototypeRegexp = $ExtUtils::ParseXS::Constants::PrototypeRegexp;
+
+=head1 DESCRIPTION
+
+Initialization of certain non-subroutine variables in ExtUtils::ParseXS and some of its
+supporting packages has been moved into this package so that those values can
+be defined exactly once and then re-used in any package.
+
+Nothing is exported.  Use fully qualified variable names.
+
+=cut
+
+# FIXME: THESE ARE NOT CONSTANTS!
+our @InitFileCode;
+
+# Note that to reduce maintenance, $PrototypeRegexp is used
+# by ExtUtils::Typemaps, too!
+our $PrototypeRegexp = "[" . quotemeta('\$%&*@;[]_') . "]";
+our @XSKeywords      = qw( 
+  REQUIRE BOOT CASE PREINIT INPUT INIT CODE PPCODE
+  OUTPUT CLEANUP ALIAS ATTRS PROTOTYPES PROTOTYPE
+  VERSIONCHECK INCLUDE INCLUDE_COMMAND SCOPE INTERFACE
+  INTERFACE_MACRO C_ARGS POSTCALL OVERLOAD FALLBACK
+  EXPORT_XSUB_SYMBOLS
+);
+
+1;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/CountLines.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+package ExtUtils::ParseXS::CountLines;
+use strict;
+
+our $VERSION = '3.18';
+
+our $SECTION_END_MARKER;
+
+sub TIEHANDLE {
+  my ($class, $cfile, $fh) = @_;
+  $cfile =~ s/\\/\\\\/g;
+  $cfile =~ s/"/\\"/g;
+  $SECTION_END_MARKER = qq{#line --- "$cfile"};
+
+  return bless {
+    buffer => '',
+    fh => $fh,
+    line_no => 1,
+  }, $class;
+}
+
+sub PRINT {
+  my $self = shift;
+  for (@_) {
+    $self->{buffer} .= $_;
+    while ($self->{buffer} =~ s/^([^\n]*\n)//) {
+      my $line = $1;
+      ++$self->{line_no};
+      $line =~ s|^\#line\s+---(?=\s)|#line $self->{line_no}|;
+      print {$self->{fh}} $line;
+    }
+  }
+}
+
+sub PRINTF {
+  my $self = shift;
+  my $fmt = shift;
+  $self->PRINT(sprintf($fmt, @_));
+}
+
+sub DESTROY {
+  # Not necessary if we're careful to end with a "\n"
+  my $self = shift;
+  print {$self->{fh}} $self->{buffer};
+}
+
+sub UNTIE {
+  # This sub does nothing, but is necessary for references to be released.
+}
+
+sub end_marker {
+  return $SECTION_END_MARKER;
+}
+
+1;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS/Utilities.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,924 @@
+package ExtUtils::ParseXS::Utilities;
+use strict;
+use warnings;
+use Exporter;
+use File::Spec;
+use lib qw( lib );
+use ExtUtils::ParseXS::Constants ();
+
+our $VERSION = '3.19';
+
+our (@ISA, @EXPORT_OK);
+ at ISA = qw(Exporter);
+ at EXPORT_OK = qw(
+  standard_typemap_locations
+  trim_whitespace
+  tidy_type
+  C_string
+  valid_proto_string
+  process_typemaps
+  make_targetable
+  map_type
+  standard_XS_defs
+  assign_func_args
+  analyze_preprocessor_statements
+  set_cond
+  Warn
+  current_line_number
+  blurt
+  death
+  check_conditional_preprocessor_statements
+  escape_file_for_line_directive
+  report_typemap_failure
+);
+
+=head1 NAME
+
+ExtUtils::ParseXS::Utilities - Subroutines used with ExtUtils::ParseXS
+
+=head1 SYNOPSIS
+
+  use ExtUtils::ParseXS::Utilities qw(
+    standard_typemap_locations
+    trim_whitespace
+    tidy_type
+    C_string
+    valid_proto_string
+    process_typemaps
+    make_targetable
+    map_type
+    standard_XS_defs
+    assign_func_args
+    analyze_preprocessor_statements
+    set_cond
+    Warn
+    blurt
+    death
+    check_conditional_preprocessor_statements
+    escape_file_for_line_directive
+    report_typemap_failure
+  );
+
+=head1 SUBROUTINES
+
+The following functions are not considered to be part of the public interface.
+They are documented here for the benefit of future maintainers of this module.
+
+=head2 C<standard_typemap_locations()>
+
+=over 4
+
+=item * Purpose
+
+Provide a list of filepaths where F<typemap> files may be found.  The
+filepaths -- relative paths to files (not just directory paths) -- appear in this list in lowest-to-highest priority.
+
+The highest priority is to look in the current directory.  
+
+  'typemap'
+
+The second and third highest priorities are to look in the parent of the
+current directory and a directory called F<lib/ExtUtils> underneath the parent
+directory.
+
+  '../typemap',
+  '../lib/ExtUtils/typemap',
+
+The fourth through ninth highest priorities are to look in the corresponding
+grandparent, great-grandparent and great-great-grandparent directories.
+
+  '../../typemap',
+  '../../lib/ExtUtils/typemap',
+  '../../../typemap',
+  '../../../lib/ExtUtils/typemap',
+  '../../../../typemap',
+  '../../../../lib/ExtUtils/typemap',
+
+The tenth and subsequent priorities are to look in directories named
+F<ExtUtils> which are subdirectories of directories found in C<@INC> --
+I<provided> a file named F<typemap> actually exists in such a directory.
+Example:
+
+  '/usr/local/lib/perl5/5.10.1/ExtUtils/typemap',
+
+However, these filepaths appear in the list returned by
+C<standard_typemap_locations()> in reverse order, I<i.e.>, lowest-to-highest.
+
+  '/usr/local/lib/perl5/5.10.1/ExtUtils/typemap',
+  '../../../../lib/ExtUtils/typemap',
+  '../../../../typemap',
+  '../../../lib/ExtUtils/typemap',
+  '../../../typemap',
+  '../../lib/ExtUtils/typemap',
+  '../../typemap',
+  '../lib/ExtUtils/typemap',
+  '../typemap',
+  'typemap'
+
+=item * Arguments
+
+  my @stl = standard_typemap_locations( \@INC );
+
+Reference to C<@INC>.
+
+=item * Return Value
+
+Array holding list of directories to be searched for F<typemap> files.
+
+=back
+
+=cut
+
+sub standard_typemap_locations {
+  my $include_ref = shift;
+  my @tm = qw(typemap);
+
+  my $updir = File::Spec->updir();
+  foreach my $dir (
+      File::Spec->catdir(($updir) x 1),
+      File::Spec->catdir(($updir) x 2),
+      File::Spec->catdir(($updir) x 3),
+      File::Spec->catdir(($updir) x 4),
+  ) {
+    unshift @tm, File::Spec->catfile($dir, 'typemap');
+    unshift @tm, File::Spec->catfile($dir, lib => ExtUtils => 'typemap');
+  }
+  foreach my $dir (@{ $include_ref}) {
+    my $file = File::Spec->catfile($dir, ExtUtils => 'typemap');
+    unshift @tm, $file if -e $file;
+  }
+  return @tm;
+}
+
+=head2 C<trim_whitespace()>
+
+=over 4
+
+=item * Purpose
+
+Perform an in-place trimming of leading and trailing whitespace from the
+first argument provided to the function.
+
+=item * Argument
+
+  trim_whitespace($arg);
+
+=item * Return Value
+
+None.  Remember:  this is an I<in-place> modification of the argument.
+
+=back
+
+=cut
+
+sub trim_whitespace {
+  $_[0] =~ s/^\s+|\s+$//go;
+}
+
+=head2 C<tidy_type()>
+
+=over 4
+
+=item * Purpose
+
+Rationalize any asterisks (C<*>) by joining them into bunches, removing
+interior whitespace, then trimming leading and trailing whitespace.
+
+=item * Arguments
+
+    ($ret_type) = tidy_type($_);
+
+String to be cleaned up.
+
+=item * Return Value
+
+String cleaned up.
+
+=back
+
+=cut
+
+sub tidy_type {
+  local ($_) = @_;
+
+  # rationalise any '*' by joining them into bunches and removing whitespace
+  s#\s*(\*+)\s*#$1#g;
+  s#(\*+)# $1 #g;
+
+  # change multiple whitespace into a single space
+  s/\s+/ /g;
+
+  # trim leading & trailing whitespace
+  trim_whitespace($_);
+
+  $_;
+}
+
+=head2 C<C_string()>
+
+=over 4
+
+=item * Purpose
+
+Escape backslashes (C<\>) in prototype strings.
+
+=item * Arguments
+
+      $ProtoThisXSUB = C_string($_);
+
+String needing escaping.
+
+=item * Return Value
+
+Properly escaped string.
+
+=back
+
+=cut
+
+sub C_string {
+  my($string) = @_;
+
+  $string =~ s[\\][\\\\]g;
+  $string;
+}
+
+=head2 C<valid_proto_string()>
+
+=over 4
+
+=item * Purpose
+
+Validate prototype string.
+
+=item * Arguments
+
+String needing checking.
+
+=item * Return Value
+
+Upon success, returns the same string passed as argument.
+
+Upon failure, returns C<0>.
+
+=back
+
+=cut
+
+sub valid_proto_string {
+  my($string) = @_;
+
+  if ( $string =~ /^$ExtUtils::ParseXS::Constants::PrototypeRegexp+$/ ) {
+    return $string;
+  }
+
+  return 0;
+}
+
+=head2 C<process_typemaps()>
+
+=over 4
+
+=item * Purpose
+
+Process all typemap files.
+
+=item * Arguments
+
+  my $typemaps_object = process_typemaps( $args{typemap}, $pwd );
+
+List of two elements:  C<typemap> element from C<%args>; current working
+directory.
+
+=item * Return Value
+
+Upon success, returns an L<ExtUtils::Typemaps> object.
+
+=back
+
+=cut
+
+sub process_typemaps {
+  my ($tmap, $pwd) = @_;
+
+  my @tm = ref $tmap ? @{$tmap} : ($tmap);
+
+  foreach my $typemap (@tm) {
+    die "Can't find $typemap in $pwd\n" unless -r $typemap;
+  }
+
+  push @tm, standard_typemap_locations( \@INC );
+
+  require ExtUtils::Typemaps;
+  my $typemap = ExtUtils::Typemaps->new;
+  foreach my $typemap_loc (@tm) {
+    next unless -f $typemap_loc;
+    # skip directories, binary files etc.
+    warn("Warning: ignoring non-text typemap file '$typemap_loc'\n"), next
+      unless -T $typemap_loc;
+
+    $typemap->merge(file => $typemap_loc, replace => 1);
+  }
+
+  return $typemap;
+}
+
+=head2 C<make_targetable()>
+
+=over 4
+
+=item * Purpose
+
+Populate C<%targetable>.  This constitutes a refinement of the output of
+C<process_typemaps()> with respect to its fourth output, C<$output_expr_ref>.
+
+=item * Arguments
+
+  %targetable = make_targetable($output_expr_ref);
+
+Single hash reference:  the fourth such ref returned by C<process_typemaps()>.
+
+=item * Return Value
+
+Hash.
+
+=back
+
+=cut
+
+sub make_targetable {
+  my $output_expr_ref = shift;
+
+  our $bal; # ()-balanced
+  $bal = qr[
+    (?:
+      (?>[^()]+)
+      |
+      \( (??{ $bal }) \)
+    )*
+  ]x;
+
+  # matches variations on (SV*)
+  my $sv_cast = qr[
+    (?:
+      \( \s* SV \s* \* \s* \) \s*
+    )?
+  ]x;
+
+  my $size = qr[ # Third arg (to setpvn)
+    , \s* (??{ $bal })
+  ]x;
+
+  my %targetable;
+  foreach my $key (keys %{ $output_expr_ref }) {
+    # We can still bootstrap compile 're', because in code re.pm is
+    # available to miniperl, and does not attempt to load the XS code.
+    use re 'eval';
+
+    my ($type, $with_size, $arg, $sarg) =
+      ($output_expr_ref->{$key} =~
+        m[^
+          \s+
+          sv_set([iunp])v(n)?    # Type, is_setpvn
+          \s*
+          \( \s*
+            $sv_cast \$arg \s* , \s*
+            ( (??{ $bal }) )    # Set from
+          ( (??{ $size }) )?    # Possible sizeof set-from
+          \) \s* ; \s* $
+        ]x
+    );
+    $targetable{$key} = [$type, $with_size, $arg, $sarg] if $type;
+  }
+  return %targetable;
+}
+
+=head2 C<map_type()>
+
+=over 4
+
+=item * Purpose
+
+Performs a mapping at several places inside C<PARAGRAPH> loop.
+
+=item * Arguments
+
+  $type = map_type($self, $type, $varname);
+
+List of three arguments.
+
+=item * Return Value
+
+String holding augmented version of second argument.
+
+=back
+
+=cut
+
+sub map_type {
+  my ($self, $type, $varname) = @_;
+
+  # C++ has :: in types too so skip this
+  $type =~ tr/:/_/ unless $self->{hiertype};
+  $type =~ s/^array\(([^,]*),(.*)\).*/$1 */s;
+  if ($varname) {
+    if ($type =~ / \( \s* \* (?= \s* \) ) /xg) {
+      (substr $type, pos $type, 0) = " $varname ";
+    }
+    else {
+      $type .= "\t$varname";
+    }
+  }
+  return $type;
+}
+
+=head2 C<standard_XS_defs()>
+
+=over 4
+
+=item * Purpose
+
+Writes to the C<.c> output file certain preprocessor directives and function
+headers needed in all such files.
+
+=item * Arguments
+
+None.
+
+=item * Return Value
+
+Returns true.
+
+=back
+
+=cut
+
+sub standard_XS_defs {
+  print <<"EOF";
+#ifndef PERL_UNUSED_VAR
+#  define PERL_UNUSED_VAR(var) if (0) var = var
+#endif
+
+#ifndef dVAR
+#  define dVAR		dNOOP
+#endif
+
+
+/* This stuff is not part of the API! You have been warned. */
+#ifndef PERL_VERSION_DECIMAL
+#  define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
+#endif
+#ifndef PERL_DECIMAL_VERSION
+#  define PERL_DECIMAL_VERSION \\
+	  PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
+#endif
+#ifndef PERL_VERSION_GE
+#  define PERL_VERSION_GE(r,v,s) \\
+	  (PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+#ifndef PERL_VERSION_LE
+#  define PERL_VERSION_LE(r,v,s) \\
+	  (PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
+#endif
+
+/* XS_INTERNAL is the explicit static-linkage variant of the default
+ * XS macro.
+ *
+ * XS_EXTERNAL is the same as XS_INTERNAL except it does not include
+ * "STATIC", ie. it exports XSUB symbols. You probably don't want that
+ * for anything but the BOOT XSUB.
+ *
+ * See XSUB.h in core!
+ */
+
+
+/* TODO: This might be compatible further back than 5.10.0. */
+#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
+#  undef XS_EXTERNAL
+#  undef XS_INTERNAL
+#  if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
+#    define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
+#    define XS_INTERNAL(name) STATIC XSPROTO(name)
+#  endif
+#  if defined(__SYMBIAN32__)
+#    define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
+#    define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
+#  endif
+#  ifndef XS_EXTERNAL
+#    if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
+#      define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
+#      define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
+#    else
+#      ifdef __cplusplus
+#        define XS_EXTERNAL(name) extern "C" XSPROTO(name)
+#        define XS_INTERNAL(name) static XSPROTO(name)
+#      else
+#        define XS_EXTERNAL(name) XSPROTO(name)
+#        define XS_INTERNAL(name) STATIC XSPROTO(name)
+#      endif
+#    endif
+#  endif
+#endif
+
+/* perl >= 5.10.0 && perl <= 5.15.1 */
+
+
+/* The XS_EXTERNAL macro is used for functions that must not be static
+ * like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
+ * macro defined, the best we can do is assume XS is the same.
+ * Dito for XS_INTERNAL.
+ */
+#ifndef XS_EXTERNAL
+#  define XS_EXTERNAL(name) XS(name)
+#endif
+#ifndef XS_INTERNAL
+#  define XS_INTERNAL(name) XS(name)
+#endif
+
+/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
+ * internal macro that we're free to redefine for varying linkage due
+ * to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
+ * XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
+ */
+
+#undef XS_EUPXS
+#if defined(PERL_EUPXS_ALWAYS_EXPORT)
+#  define XS_EUPXS(name) XS_EXTERNAL(name)
+#else
+   /* default to internal */
+#  define XS_EUPXS(name) XS_INTERNAL(name)
+#endif
+
+EOF
+
+  print <<"EOF";
+#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
+
+/* prototype to pass -Wmissing-prototypes */
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
+
+STATIC void
+S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
+{
+    const GV *const gv = CvGV(cv);
+
+    PERL_ARGS_ASSERT_CROAK_XS_USAGE;
+
+    if (gv) {
+        const char *const gvname = GvNAME(gv);
+        const HV *const stash = GvSTASH(gv);
+        const char *const hvname = stash ? HvNAME(stash) : NULL;
+
+        if (hvname)
+            Perl_croak(aTHX_ "Usage: %s::%s(%s)", hvname, gvname, params);
+        else
+            Perl_croak(aTHX_ "Usage: %s(%s)", gvname, params);
+    } else {
+        /* Pants. I don't think that it should be possible to get here. */
+        Perl_croak(aTHX_ "Usage: CODE(0x%"UVxf")(%s)", PTR2UV(cv), params);
+    }
+}
+#undef  PERL_ARGS_ASSERT_CROAK_XS_USAGE
+
+#ifdef PERL_IMPLICIT_CONTEXT
+#define croak_xs_usage(a,b)    S_croak_xs_usage(aTHX_ a,b)
+#else
+#define croak_xs_usage        S_croak_xs_usage
+#endif
+
+#endif
+
+/* NOTE: the prototype of newXSproto() is different in versions of perls,
+ * so we define a portable version of newXSproto()
+ */
+#ifdef newXS_flags
+#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
+#else
+#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
+#endif /* !defined(newXS_flags) */
+
+EOF
+  return 1;
+}
+
+=head2 C<assign_func_args()>
+
+=over 4
+
+=item * Purpose
+
+Perform assignment to the C<func_args> attribute.
+
+=item * Arguments
+
+  $string = assign_func_args($self, $argsref, $class);
+
+List of three elements.  Second is an array reference; third is a string.
+
+=item * Return Value
+
+String.
+
+=back
+
+=cut
+
+sub assign_func_args {
+  my ($self, $argsref, $class) = @_;
+  my @func_args = @{$argsref};
+  shift @func_args if defined($class);
+
+  for my $arg (@func_args) {
+    $arg =~ s/^/&/ if $self->{in_out}->{$arg};
+  }
+  return join(", ", @func_args);
+}
+
+=head2 C<analyze_preprocessor_statements()>
+
+=over 4
+
+=item * Purpose
+
+Within each function inside each Xsub, print to the F<.c> output file certain
+preprocessor statements.
+
+=item * Arguments
+
+      ( $self, $XSS_work_idx, $BootCode_ref ) =
+        analyze_preprocessor_statements(
+          $self, $statement, $XSS_work_idx, $BootCode_ref
+        );
+
+List of four elements.
+
+=item * Return Value
+
+Modifed values of three of the arguments passed to the function.  In
+particular, the C<XSStack> and C<InitFileCode> attributes are modified.
+
+=back
+
+=cut
+
+sub analyze_preprocessor_statements {
+  my ($self, $statement, $XSS_work_idx, $BootCode_ref) = @_;
+
+  if ($statement eq 'if') {
+    $XSS_work_idx = @{ $self->{XSStack} };
+    push(@{ $self->{XSStack} }, {type => 'if'});
+  }
+  else {
+    $self->death("Error: '$statement' with no matching 'if'")
+      if $self->{XSStack}->[-1]{type} ne 'if';
+    if ($self->{XSStack}->[-1]{varname}) {
+      push(@{ $self->{InitFileCode} }, "#endif\n");
+      push(@{ $BootCode_ref },     "#endif");
+    }
+
+    my(@fns) = keys %{$self->{XSStack}->[-1]{functions}};
+    if ($statement ne 'endif') {
+      # Hide the functions defined in other #if branches, and reset.
+      @{$self->{XSStack}->[-1]{other_functions}}{@fns} = (1) x @fns;
+      @{$self->{XSStack}->[-1]}{qw(varname functions)} = ('', {});
+    }
+    else {
+      my($tmp) = pop(@{ $self->{XSStack} });
+      0 while (--$XSS_work_idx
+           && $self->{XSStack}->[$XSS_work_idx]{type} ne 'if');
+      # Keep all new defined functions
+      push(@fns, keys %{$tmp->{other_functions}});
+      @{$self->{XSStack}->[$XSS_work_idx]{functions}}{@fns} = (1) x @fns;
+    }
+  }
+  return ($self, $XSS_work_idx, $BootCode_ref);
+}
+
+=head2 C<set_cond()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+=item * Return Value
+
+=back
+
+=cut
+
+sub set_cond {
+  my ($ellipsis, $min_args, $num_args) = @_;
+  my $cond;
+  if ($ellipsis) {
+    $cond = ($min_args ? qq(items < $min_args) : 0);
+  }
+  elsif ($min_args == $num_args) {
+    $cond = qq(items != $min_args);
+  }
+  else {
+    $cond = qq(items < $min_args || items > $num_args);
+  }
+  return $cond;
+}
+
+=head2 C<current_line_number()>
+
+=over 4
+
+=item * Purpose
+
+Figures out the current line number in the XS file.
+
+=item * Arguments
+
+C<$self>
+
+=item * Return Value
+
+The current line number.
+
+=back
+
+=cut
+
+sub current_line_number {
+  my $self = shift;
+  my $line_number = $self->{line_no}->[@{ $self->{line_no} } - @{ $self->{line} } -1];
+  return $line_number;
+}
+
+=head2 C<Warn()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+=item * Return Value
+
+=back
+
+=cut
+
+sub Warn {
+  my $self = shift;
+  my $warn_line_number = $self->current_line_number();
+  print STDERR "@_ in $self->{filename}, line $warn_line_number\n";
+}
+
+=head2 C<blurt()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+=item * Return Value
+
+=back
+
+=cut
+
+sub blurt {
+  my $self = shift;
+  $self->Warn(@_);
+  $self->{errors}++
+}
+
+=head2 C<death()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+=item * Return Value
+
+=back
+
+=cut
+
+sub death {
+  my $self = shift;
+  $self->Warn(@_);
+  exit 1;
+}
+
+=head2 C<check_conditional_preprocessor_statements()>
+
+=over 4
+
+=item * Purpose
+
+=item * Arguments
+
+=item * Return Value
+
+=back
+
+=cut
+
+sub check_conditional_preprocessor_statements {
+  my ($self) = @_;
+  my @cpp = grep(/^\#\s*(?:if|e\w+)/, @{ $self->{line} });
+  if (@cpp) {
+    my $cpplevel;
+    for my $cpp (@cpp) {
+      if ($cpp =~ /^\#\s*if/) {
+        $cpplevel++;
+      }
+      elsif (!$cpplevel) {
+        $self->Warn("Warning: #else/elif/endif without #if in this function");
+        print STDERR "    (precede it with a blank line if the matching #if is outside the function)\n"
+          if $self->{XSStack}->[-1]{type} eq 'if';
+        return;
+      }
+      elsif ($cpp =~ /^\#\s*endif/) {
+        $cpplevel--;
+      }
+    }
+    $self->Warn("Warning: #if without #endif in this function") if $cpplevel;
+  }
+}
+
+=head2 C<escape_file_for_line_directive()>
+
+=over 4
+
+=item * Purpose
+
+Escapes a given code source name (typically a file name but can also
+be a command that was read from) so that double-quotes and backslashes are escaped.
+
+=item * Arguments
+
+A string.
+
+=item * Return Value
+
+A string with escapes for double-quotes and backslashes.
+
+=back
+
+=cut
+
+sub escape_file_for_line_directive {
+  my $string = shift;
+  $string =~ s/\\/\\\\/g;
+  $string =~ s/"/\\"/g;
+  return $string;
+}
+
+=head2 C<report_typemap_failure>
+
+=over 4
+
+=item * Purpose
+
+Do error reporting for missing typemaps.
+
+=item * Arguments
+
+The C<ExtUtils::ParseXS> object.
+
+An C<ExtUtils::Typemaps> object.
+
+The string that represents the C type that was not found in the typemap.
+
+Optionally, the string C<death> or C<blurt> to choose
+whether the error is immediately fatal or not. Default: C<blurt>
+
+=item * Return Value
+
+Returns nothing. Depending on the arguments, this
+may call C<death> or C<blurt>, the former of which is
+fatal.
+
+=back
+
+=cut
+
+sub report_typemap_failure {
+  my ($self, $tm, $ctype, $error_method) = @_;
+  $error_method ||= 'blurt';
+
+  my @avail_ctypes = $tm->list_mapped_ctypes;
+
+  my $err = "Could not find a typemap for C type '$ctype'.\n"
+            . "The following C types are mapped by the current typemap:\n'"
+            . join("', '", @avail_ctypes) . "'\n";
+
+  $self->$error_method($err);
+  return();
+}
+
+1;
+
+# vim: ts=2 sw=2 et:

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/ParseXS.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,161 @@
+=head1 NAME
+
+ExtUtils::ParseXS - converts Perl XS code into C code
+
+=head1 SYNOPSIS
+
+  use ExtUtils::ParseXS qw(process_file);
+
+  process_file( filename => 'foo.xs' );
+
+  process_file( filename => 'foo.xs',
+                output => 'bar.c',
+                'C++' => 1,
+                typemap => 'path/to/typemap',
+                hiertype => 1,
+                except => 1,
+                prototypes => 1,
+                versioncheck => 1,
+                linenumbers => 1,
+                optimize => 1,
+                prototypes => 1,
+              );
+
+=head1 DESCRIPTION
+
+C<ExtUtils::ParseXS> will compile XS code into C code by embedding the constructs
+necessary to let C functions manipulate Perl values and creates the glue
+necessary to let Perl access those functions.  The compiler uses typemaps to
+determine how to map C function parameters and variables to Perl values.
+
+The compiler will search for typemap files called I<typemap>.  It will use
+the following search path to find default typemaps, with the rightmost
+typemap taking precedence.
+
+    ../../../typemap:../../typemap:../typemap:typemap
+
+=head1 EXPORT
+
+None by default.  C<process_file()> may be exported upon request.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item process_file()
+
+This function processes an XS file and sends output to a C file.
+Named parameters control how the processing is done.  The following
+parameters are accepted:
+
+=over 4
+
+=item B<C++>
+
+Adds C<extern "C"> to the C code.  Default is false.
+
+=item B<hiertype>
+
+Retains C<::> in type names so that C++ hierarchical types can be
+mapped.  Default is false.
+
+=item B<except>
+
+Adds exception handling stubs to the C code.  Default is false.
+
+=item B<typemap>
+
+Indicates that a user-supplied typemap should take precedence over the
+default typemaps.  A single typemap may be specified as a string, or
+multiple typemaps can be specified in an array reference, with the
+last typemap having the highest precedence.
+
+=item B<prototypes>
+
+Generates prototype code for all xsubs.  Default is false.
+
+=item B<versioncheck>
+
+Makes sure at run time that the object file (derived from the C<.xs>
+file) and the C<.pm> files have the same version number.  Default is
+true.
+
+=item B<linenumbers>
+
+Adds C<#line> directives to the C output so error messages will look
+like they came from the original XS file.  Default is true.
+
+=item B<optimize>
+
+Enables certain optimizations.  The only optimization that is currently
+affected is the use of I<target>s by the output C code (see L<perlguts>).
+Not optimizing may significantly slow down the generated code, but this is the way
+B<xsubpp> of 5.005 and earlier operated.  Default is to optimize.
+
+=item B<inout>
+
+Enable recognition of C<IN>, C<OUT_LIST> and C<INOUT_LIST>
+declarations.  Default is true.
+
+=item B<argtypes>
+
+Enable recognition of ANSI-like descriptions of function signature.
+Default is true.
+
+=item B<s>
+
+I<Maintainer note:> I have no clue what this does.  Strips function prefixes?
+
+=back
+
+=item errors()
+
+This function returns the number of [a certain kind of] errors
+encountered during processing of the XS file.
+
+=back
+
+=head1 AUTHOR
+
+Based on xsubpp code, written by Larry Wall.
+
+Maintained by:
+
+=over 4
+
+=item *
+
+Ken Williams, <ken at mathforum.org>
+
+=item *
+
+David Golden, <dagolden at cpan.org>
+
+=item *
+
+James Keenan, <jkeenan at cpan.org>
+
+=item *
+
+Steffen Mueller, <smueller at cpan.org>
+
+=back
+
+=head1 COPYRIGHT
+
+Copyright 2002-2012 by Ken Williams, David Golden and other contributors.  All
+rights reserved.
+
+This library is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+Based on the C<ExtUtils::xsubpp> code by Larry Wall and the Perl 5
+Porters, which was released under the same license terms.
+
+=head1 SEE ALSO
+
+L<perl>, ExtUtils::xsubpp, ExtUtils::MakeMaker, L<perlxs>, L<perlxstut>.
+
+=cut
+
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Cmd.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,168 @@
+package ExtUtils::Typemaps::Cmd;
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = '3.18';
+
+use ExtUtils::Typemaps;
+
+require Exporter;
+
+our @ISA = qw(Exporter);
+our @EXPORT = qw(embeddable_typemap);
+our %EXPORT_TAGS = (all => \@EXPORT);
+
+sub embeddable_typemap {
+  my @tms = @_;
+
+  # Get typemap objects
+  my @tm_objs = map [$_, _intuit_typemap_source($_)], @tms;
+
+  # merge or short-circuit
+  my $final_tm;
+  if (@tm_objs == 1) {
+    # just one, merge would be pointless
+    $final_tm = shift(@tm_objs)->[1];
+  }
+  else {
+    # multiple, need merge
+    $final_tm = ExtUtils::Typemaps->new;
+    foreach my $other_tm (@tm_objs) {
+      my ($tm_ident, $tm_obj) = @$other_tm;
+      eval {
+        $final_tm->merge(typemap => $tm_obj);
+        1
+      } or do {
+        my $err = $@ || 'Zombie error';
+        die "Failed to merge typ";
+      }
+    }
+  }
+
+  # stringify for embedding
+  return $final_tm->as_embedded_typemap();
+}
+
+sub _load_module {
+  my $name = shift;
+  return eval "require $name; 1";
+}
+
+SCOPE: {
+  my %sources = (
+    module => sub {
+      my $ident = shift;
+      my $tm;
+      if (/::/) { # looks like FQ module name, try that first
+        foreach my $module ($ident, "ExtUtils::Typemaps::$ident") {
+          if (_load_module($module)) {
+            eval { $tm = $module->new }
+              and return $tm;
+          }
+        }
+      }
+      else {
+        foreach my $module ("ExtUtils::Typemaps::$ident", "$ident") {
+          if (_load_module($module)) {
+            eval { $tm = $module->new }
+              and return $tm;
+          }
+        }
+      }
+      return();
+    },
+    file => sub {
+      my $ident = shift;
+      return unless -e $ident and -r _;
+      return ExtUtils::Typemaps->new(file => $ident);
+    },
+  );
+  # Try to find typemap either from module or file
+  sub _intuit_typemap_source {
+    my $identifier = shift;
+
+    my @locate_attempts;
+    if ($identifier =~ /::/ || $identifier !~ /[^\w_]/) {
+      @locate_attempts = qw(module file);
+    }
+    else {
+      @locate_attempts = qw(file module);
+    }
+
+    foreach my $source (@locate_attempts) {
+      my $tm = $sources{$source}->($identifier);
+      return $tm if defined $tm;
+    }
+
+    die "Unable to find typemap for '$identifier': "
+        . "Tried to load both as file or module and failed.\n";
+  }
+} # end SCOPE
+
+=head1 NAME
+
+ExtUtils::Typemaps::Cmd - Quick commands for handling typemaps
+
+=head1 SYNOPSIS
+
+From XS:
+
+  INCLUDE_COMMAND: $^X -MExtUtils::Typemaps::Cmd \
+                   -e "print embeddable_typemap(q{Excommunicated})"
+
+Loads C<ExtUtils::Typemaps::Excommunicated>, instantiates an object,
+and dumps it as an embeddable typemap for use directly in your XS file.
+
+=head1 DESCRIPTION
+
+This is a helper module for L<ExtUtils::Typemaps> for quick
+one-liners, specifically for inclusion of shared typemaps
+that live on CPAN into an XS file (see SYNOPSIS).
+
+For this reason, the following functions are exported by default:
+
+=head1 EXPORTED FUNCTIONS
+
+=head2 embeddable_typemap
+
+Given a list of identifiers, C<embeddable_typemap>
+tries to load typemaps from a file of the given name(s),
+or from a module that is an C<ExtUtils::Typemaps> subclass.
+
+Returns a string representation of the merged typemaps that can
+be included verbatim into XS. Example:
+
+  print embeddable_typemap(
+    "Excommunicated", "ExtUtils::Typemaps::Basic", "./typemap"
+  );
+
+This will try to load a module C<ExtUtils::Typemaps::Excommunicated>
+and use it as an C<ExtUtils::Typemaps> subclass. If that fails, it'll
+try loading C<Excommunicated> as a module, if that fails, it'll try to
+read a file called F<Excommunicated>. It'll work similarly for the
+second argument, but the third will be loaded as a file first.
+
+After loading all typemap files or modules, it will merge them in the
+specified order and dump the result as an embeddable typemap.
+
+=head1 SEE ALSO
+
+L<ExtUtils::Typemaps>
+
+L<perlxs>
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/InputMap.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+package ExtUtils::Typemaps::InputMap;
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = '3.18';
+
+=head1 NAME
+
+ExtUtils::Typemaps::InputMap - Entry in the INPUT section of a typemap
+
+=head1 SYNOPSIS
+
+  use ExtUtils::Typemaps;
+  ...
+  my $input = $typemap->get_input_map('T_NV');
+  my $code = $input->code();
+  $input->code("...");
+
+=head1 DESCRIPTION
+
+Refer to L<ExtUtils::Typemaps> for details.
+
+=head1 METHODS
+
+=cut
+
+=head2 new
+
+Requires C<xstype> and C<code> parameters.
+
+=cut
+
+sub new {
+  my $prot = shift;
+  my $class = ref($prot)||$prot;
+  my %args = @_;
+
+  if (!ref($prot)) {
+    if (not defined $args{xstype} or not defined $args{code}) {
+      die("Need xstype and code parameters");
+    }
+  }
+
+  my $self = bless(
+    (ref($prot) ? {%$prot} : {})
+    => $class
+  );
+
+  $self->{xstype} = $args{xstype} if defined $args{xstype};
+  $self->{code} = $args{code} if defined $args{code};
+  $self->{code} =~ s/^(?=\S)/\t/mg;
+
+  return $self;
+}
+
+=head2 code
+
+Returns or sets the INPUT mapping code for this entry.
+
+=cut
+
+sub code {
+  $_[0]->{code} = $_[1] if @_ > 1;
+  return $_[0]->{code};
+}
+
+=head2 xstype
+
+Returns the name of the XS type of the INPUT map.
+
+=cut
+
+sub xstype {
+  return $_[0]->{xstype};
+}
+
+=head2 cleaned_code
+
+Returns a cleaned-up copy of the code to which certain transformations
+have been applied to make it more ANSI compliant.
+
+=cut
+
+sub cleaned_code {
+  my $self = shift;
+  my $code = $self->code;
+
+  $code =~ s/(?:;+\s*|;*\s+)\z//s;
+
+  # Move C pre-processor instructions to column 1 to be strictly ANSI
+  # conformant. Some pre-processors are fussy about this.
+  $code =~ s/^\s+#/#/mg;
+  $code =~ s/\s*\z/\n/;
+
+  return $code;
+}
+
+=head1 SEE ALSO
+
+L<ExtUtils::Typemaps>
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, 2010, 2011, 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/OutputMap.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,195 @@
+package ExtUtils::Typemaps::OutputMap;
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = '3.18';
+
+=head1 NAME
+
+ExtUtils::Typemaps::OutputMap - Entry in the OUTPUT section of a typemap
+
+=head1 SYNOPSIS
+
+  use ExtUtils::Typemaps;
+  ...
+  my $output = $typemap->get_output_map('T_NV');
+  my $code = $output->code();
+  $output->code("...");
+
+=head1 DESCRIPTION
+
+Refer to L<ExtUtils::Typemaps> for details.
+
+=head1 METHODS
+
+=cut
+
+=head2 new
+
+Requires C<xstype> and C<code> parameters.
+
+=cut
+
+sub new {
+  my $prot = shift;
+  my $class = ref($prot)||$prot;
+  my %args = @_;
+
+  if (!ref($prot)) {
+    if (not defined $args{xstype} or not defined $args{code}) {
+      die("Need xstype and code parameters");
+    }
+  }
+
+  my $self = bless(
+    (ref($prot) ? {%$prot} : {})
+    => $class
+  );
+
+  $self->{xstype} = $args{xstype} if defined $args{xstype};
+  $self->{code} = $args{code} if defined $args{code};
+  $self->{code} =~ s/^(?=\S)/\t/mg;
+
+  return $self;
+}
+
+=head2 code
+
+Returns or sets the OUTPUT mapping code for this entry.
+
+=cut
+
+sub code {
+  $_[0]->{code} = $_[1] if @_ > 1;
+  return $_[0]->{code};
+}
+
+=head2 xstype
+
+Returns the name of the XS type of the OUTPUT map.
+
+=cut
+
+sub xstype {
+  return $_[0]->{xstype};
+}
+
+=head2 cleaned_code
+
+Returns a cleaned-up copy of the code to which certain transformations
+have been applied to make it more ANSI compliant.
+
+=cut
+
+sub cleaned_code {
+  my $self = shift;
+  my $code = $self->code;
+
+  # Move C pre-processor instructions to column 1 to be strictly ANSI
+  # conformant. Some pre-processors are fussy about this.
+  $code =~ s/^\s+#/#/mg;
+  $code =~ s/\s*\z/\n/;
+
+  return $code;
+}
+
+=head2 targetable
+
+This is an obscure optimization that used to live in C<ExtUtils::ParseXS>
+directly.
+
+In a nutshell, this will check whether the output code
+involves calling C<set_iv>, C<set_uv>, C<set_nv>, C<set_pv> or C<set_pvn>
+to set the special C<$arg> placeholder to a new value
+B<AT THE END OF THE OUTPUT CODE>. If that is the case, the code is
+eligible for using the C<TARG>-related macros to optimize this.
+Thus the name of the method: C<targetable>.
+
+If the optimization can not be applied, this returns undef.
+If it can be applied, this method returns a hash reference containing
+the following information:
+
+  type:      Any of the characters i, u, n, p
+  with_size: Bool indicating whether this is the sv_setpvn variant
+  what:      The code that actually evaluates to the output scalar
+  what_size: If "with_size", this has the string length (as code,
+             not constant)
+
+=cut
+
+sub targetable {
+  my $self = shift;
+  return $self->{targetable} if exists $self->{targetable};
+
+  our $bal; # ()-balanced
+  $bal = qr[
+    (?:
+      (?>[^()]+)
+      |
+      \( (??{ $bal }) \)
+    )*
+  ]x;
+
+  # matches variations on (SV*)
+  my $sv_cast = qr[
+    (?:
+      \( \s* SV \s* \* \s* \) \s*
+    )?
+  ]x;
+
+  my $size = qr[ # Third arg (to setpvn)
+    , \s* (??{ $bal })
+  ]x;
+
+  my $code = $self->code;
+
+  # We can still bootstrap compile 're', because in code re.pm is
+  # available to miniperl, and does not attempt to load the XS code.
+  use re 'eval';
+
+  my ($type, $with_size, $arg, $sarg) =
+    ($code =~
+      m[^
+        \s+
+        sv_set([iunp])v(n)?    # Type, is_setpvn
+        \s*
+        \( \s*
+          $sv_cast \$arg \s* , \s*
+          ( (??{ $bal }) )    # Set from
+        ( (??{ $size }) )?    # Possible sizeof set-from
+        \) \s* ; \s* $
+      ]x
+  );
+
+  my $rv = undef;
+  if ($type) {
+    $rv = {
+      type      => $type,
+      with_size => $with_size,
+      what      => $arg,
+      what_size => $sarg,
+    };
+  }
+  $self->{targetable} = $rv;
+  return $rv;
+}
+
+=head1 SEE ALSO
+
+L<ExtUtils::Typemaps>
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, 2010, 2011, 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps/Type.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,121 @@
+package ExtUtils::Typemaps::Type;
+use 5.006001;
+use strict;
+use warnings;
+require ExtUtils::Typemaps;
+
+our $VERSION = '3.18';
+
+=head1 NAME
+
+ExtUtils::Typemaps::Type - Entry in the TYPEMAP section of a typemap
+
+=head1 SYNOPSIS
+
+  use ExtUtils::Typemaps;
+  ...
+  my $type = $typemap->get_type_map('char*');
+  my $input = $typemap->get_input_map($type->xstype);
+
+=head1 DESCRIPTION
+
+Refer to L<ExtUtils::Typemaps> for details.
+Object associates C<ctype> with C<xstype>, which is the index
+into the in- and output mapping tables.
+
+=head1 METHODS
+
+=cut
+
+=head2 new
+
+Requires C<xstype> and C<ctype> parameters.
+
+Optionally takes C<prototype> parameter.
+
+=cut
+
+sub new {
+  my $prot = shift;
+  my $class = ref($prot)||$prot;
+  my %args = @_;
+
+  if (!ref($prot)) {
+    if (not defined $args{xstype} or not defined $args{ctype}) {
+      die("Need xstype and ctype parameters");
+    }
+  }
+
+  my $self = bless(
+    (ref($prot) ? {%$prot} : {proto => ''})
+    => $class
+  );
+
+  $self->{xstype} = $args{xstype} if defined $args{xstype};
+  $self->{ctype} = $args{ctype} if defined $args{ctype};
+  $self->{tidy_ctype} = ExtUtils::Typemaps::_tidy_type($self->{ctype});
+  $self->{proto} = $args{'prototype'} if defined $args{'prototype'};
+
+  return $self;
+}
+
+=head2 proto
+
+Returns or sets the prototype.
+
+=cut
+
+sub proto {
+  $_[0]->{proto} = $_[1] if @_ > 1;
+  return $_[0]->{proto};
+}
+
+=head2 xstype
+
+Returns the name of the XS type that this C type is associated to.
+
+=cut
+
+sub xstype {
+  return $_[0]->{xstype};
+}
+
+=head2 ctype
+
+Returns the name of the C type as it was set on construction.
+
+=cut
+
+sub ctype {
+  return defined($_[0]->{ctype}) ? $_[0]->{ctype} : $_[0]->{tidy_ctype};
+}
+
+=head2 tidy_ctype
+
+Returns the canonicalized name of the C type.
+
+=cut
+
+sub tidy_ctype {
+  return $_[0]->{tidy_ctype};
+}
+
+=head1 SEE ALSO
+
+L<ExtUtils::Typemaps>
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, 2010, 2011, 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/ExtUtils/Typemaps.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1031 @@
+package ExtUtils::Typemaps;
+use 5.006001;
+use strict;
+use warnings;
+our $VERSION = '3.19';
+#use Carp qw(croak);
+
+require ExtUtils::ParseXS;
+require ExtUtils::ParseXS::Constants;
+require ExtUtils::Typemaps::InputMap;
+require ExtUtils::Typemaps::OutputMap;
+require ExtUtils::Typemaps::Type;
+
+=head1 NAME
+
+ExtUtils::Typemaps - Read/Write/Modify Perl/XS typemap files
+
+=head1 SYNOPSIS
+
+  # read/create file
+  my $typemap = ExtUtils::Typemaps->new(file => 'typemap');
+  # alternatively create an in-memory typemap
+  # $typemap = ExtUtils::Typemaps->new();
+  # alternatively create an in-memory typemap by parsing a string
+  # $typemap = ExtUtils::Typemaps->new(string => $sometypemap);
+
+  # add a mapping
+  $typemap->add_typemap(ctype => 'NV', xstype => 'T_NV');
+  $typemap->add_inputmap(
+     xstype => 'T_NV', code => '$var = ($type)SvNV($arg);'
+  );
+  $typemap->add_outputmap(
+     xstype => 'T_NV', code => 'sv_setnv($arg, (NV)$var);'
+  );
+  $typemap->add_string(string => $typemapstring);
+                                           # will be parsed and merged
+
+  # remove a mapping (same for remove_typemap and remove_outputmap...)
+  $typemap->remove_inputmap(xstype => 'SomeType');
+
+  # save a typemap to a file
+  $typemap->write(file => 'anotherfile.map');
+
+  # merge the other typemap into this one
+  $typemap->merge(typemap => $another_typemap);
+
+=head1 DESCRIPTION
+
+This module can read, modify, create and write Perl XS typemap files. If you don't know
+what a typemap is, please confer the L<perlxstut> and L<perlxs> manuals.
+
+The module is not entirely round-trip safe: For example it currently simply strips all comments.
+The order of entries in the maps is, however, preserved.
+
+We check for duplicate entries in the typemap, but do not check for missing
+C<TYPEMAP> entries for C<INPUTMAP> or C<OUTPUTMAP> entries since these might be hidden
+in a different typemap.
+
+=head1 METHODS
+
+=cut
+
+=head2 new
+
+Returns a new typemap object. Takes an optional C<file> parameter.
+If set, the given file will be read. If the file doesn't exist, an empty typemap
+is returned.
+
+Alternatively, if the C<string> parameter is given, the supplied
+string will be parsed instead of a file.
+
+=cut
+
+sub new {
+  my $class = shift;
+  my %args = @_;
+
+  if (defined $args{file} and defined $args{string}) {
+    die("Cannot handle both 'file' and 'string' arguments to constructor");
+  }
+
+  my $self = bless {
+    file            => undef,
+    %args,
+    typemap_section => [],
+    typemap_lookup  => {},
+    input_section   => [],
+    input_lookup    => {},
+    output_section  => [],
+    output_lookup   => {},
+  } => $class;
+
+  $self->_init();
+
+  return $self;
+}
+
+sub _init {
+  my $self = shift;
+  if (defined $self->{string}) {
+    $self->_parse(\($self->{string}), $self->{lineno_offset}, $self->{fake_filename});
+    delete $self->{string};
+  }
+  elsif (defined $self->{file} and -e $self->{file}) {
+    open my $fh, '<', $self->{file}
+      or die "Cannot open typemap file '"
+             . $self->{file} . "' for reading: $!";
+    local $/ = undef;
+    my $string = <$fh>;
+    $self->_parse(\$string, $self->{lineno_offset}, $self->{file});
+  }
+}
+
+=head2 file
+
+Get/set the file that the typemap is written to when the
+C<write> method is called.
+
+=cut
+
+sub file {
+  $_[0]->{file} = $_[1] if @_ > 1;
+  $_[0]->{file}
+}
+
+=head2 add_typemap
+
+Add a C<TYPEMAP> entry to the typemap.
+
+Required named arguments: The C<ctype> (e.g. C<ctype =E<gt> 'double'>)
+and the C<xstype> (e.g. C<xstype =E<gt> 'T_NV'>).
+
+Optional named arguments: C<replace =E<gt> 1> forces removal/replacement of
+existing C<TYPEMAP> entries of the same C<ctype>. C<skip =E<gt> 1>
+triggers a I<"first come first serve"> logic by which new entries that conflict
+with existing entries are silently ignored.
+
+As an alternative to the named parameters usage, you may pass in
+an C<ExtUtils::Typemaps::Type> object as first argument, a copy of which will be
+added to the typemap. In that case, only the C<replace> or C<skip> named parameters
+may be used after the object. Example:
+
+  $map->add_typemap($type_obj, replace => 1);
+
+=cut
+
+sub add_typemap {
+  my $self = shift;
+  my $type;
+  my %args;
+
+  if ((@_ % 2) == 1) {
+    my $orig = shift;
+    $type = $orig->new();
+    %args = @_;
+  }
+  else {
+    %args = @_;
+    my $ctype = $args{ctype};
+    die("Need ctype argument") if not defined $ctype;
+    my $xstype = $args{xstype};
+    die("Need xstype argument") if not defined $xstype;
+
+    $type = ExtUtils::Typemaps::Type->new(
+      xstype      => $xstype,
+      'prototype' => $args{'prototype'},
+      ctype       => $ctype,
+    );
+  }
+
+  if ($args{skip} and $args{replace}) {
+    die("Cannot use both 'skip' and 'replace'");
+  }
+
+  if ($args{replace}) {
+    $self->remove_typemap(ctype => $type->ctype);
+  }
+  elsif ($args{skip}) {
+    return() if exists $self->{typemap_lookup}{$type->ctype};
+  }
+  else {
+    $self->validate(typemap_xstype => $type->xstype, ctype => $type->ctype);
+  }
+
+  # store
+  push @{$self->{typemap_section}}, $type;
+  # remember type for lookup, too.
+  $self->{typemap_lookup}{$type->tidy_ctype} = $#{$self->{typemap_section}};
+
+  return 1;
+}
+
+=head2 add_inputmap
+
+Add an C<INPUT> entry to the typemap.
+
+Required named arguments:
+The C<xstype> (e.g. C<xstype =E<gt> 'T_NV'>)
+and the C<code> to associate with it for input.
+
+Optional named arguments: C<replace =E<gt> 1> forces removal/replacement of
+existing C<INPUT> entries of the same C<xstype>. C<skip =E<gt> 1>
+triggers a I<"first come first serve"> logic by which new entries that conflict
+with existing entries are silently ignored.
+
+As an alternative to the named parameters usage, you may pass in
+an C<ExtUtils::Typemaps::InputMap> object as first argument, a copy of which will be
+added to the typemap. In that case, only the C<replace> or C<skip> named parameters
+may be used after the object. Example:
+
+  $map->add_inputmap($type_obj, replace => 1);
+
+=cut
+
+sub add_inputmap {
+  my $self = shift;
+  my $input;
+  my %args;
+
+  if ((@_ % 2) == 1) {
+    my $orig = shift;
+    $input = $orig->new();
+    %args = @_;
+  }
+  else {
+    %args = @_;
+    my $xstype = $args{xstype};
+    die("Need xstype argument") if not defined $xstype;
+    my $code = $args{code};
+    die("Need code argument") if not defined $code;
+
+    $input = ExtUtils::Typemaps::InputMap->new(
+      xstype => $xstype,
+      code   => $code,
+    );
+  }
+
+  if ($args{skip} and $args{replace}) {
+    die("Cannot use both 'skip' and 'replace'");
+  }
+
+  if ($args{replace}) {
+    $self->remove_inputmap(xstype => $input->xstype);
+  }
+  elsif ($args{skip}) {
+    return() if exists $self->{input_lookup}{$input->xstype};
+  }
+  else {
+    $self->validate(inputmap_xstype => $input->xstype);
+  }
+
+  # store
+  push @{$self->{input_section}}, $input;
+  # remember type for lookup, too.
+  $self->{input_lookup}{$input->xstype} = $#{$self->{input_section}};
+
+  return 1;
+}
+
+=head2 add_outputmap
+
+Add an C<OUTPUT> entry to the typemap.
+Works exactly the same as C<add_inputmap>.
+
+=cut
+
+sub add_outputmap {
+  my $self = shift;
+  my $output;
+  my %args;
+
+  if ((@_ % 2) == 1) {
+    my $orig = shift;
+    $output = $orig->new();
+    %args = @_;
+  }
+  else {
+    %args = @_;
+    my $xstype = $args{xstype};
+    die("Need xstype argument") if not defined $xstype;
+    my $code = $args{code};
+    die("Need code argument") if not defined $code;
+
+    $output = ExtUtils::Typemaps::OutputMap->new(
+      xstype => $xstype,
+      code   => $code,
+    );
+  }
+
+  if ($args{skip} and $args{replace}) {
+    die("Cannot use both 'skip' and 'replace'");
+  }
+
+  if ($args{replace}) {
+    $self->remove_outputmap(xstype => $output->xstype);
+  }
+  elsif ($args{skip}) {
+    return() if exists $self->{output_lookup}{$output->xstype};
+  }
+  else {
+    $self->validate(outputmap_xstype => $output->xstype);
+  }
+
+  # store
+  push @{$self->{output_section}}, $output;
+  # remember type for lookup, too.
+  $self->{output_lookup}{$output->xstype} = $#{$self->{output_section}};
+
+  return 1;
+}
+
+=head2 add_string
+
+Parses a string as a typemap and merge it into the typemap object.
+
+Required named argument: C<string> to specify the string to parse.
+
+=cut
+
+sub add_string {
+  my $self = shift;
+  my %args = @_;
+  die("Need 'string' argument") if not defined $args{string};
+
+  # no, this is not elegant.
+  my $other = ExtUtils::Typemaps->new(string => $args{string});
+  $self->merge(typemap => $other);
+}
+
+=head2 remove_typemap
+
+Removes a C<TYPEMAP> entry from the typemap.
+
+Required named argument: C<ctype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::Type> object.
+
+=cut
+
+sub remove_typemap {
+  my $self = shift;
+  my $ctype;
+  if (@_ > 1) {
+    my %args = @_;
+    $ctype = $args{ctype};
+    die("Need ctype argument") if not defined $ctype;
+    $ctype = _tidy_type($ctype);
+  }
+  else {
+    $ctype = $_[0]->tidy_ctype;
+  }
+
+  return $self->_remove($ctype, $self->{typemap_section}, $self->{typemap_lookup});
+}
+
+=head2 remove_inputmap
+
+Removes an C<INPUT> entry from the typemap.
+
+Required named argument: C<xstype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::InputMap> object.
+
+=cut
+
+sub remove_inputmap {
+  my $self = shift;
+  my $xstype;
+  if (@_ > 1) {
+    my %args = @_;
+    $xstype = $args{xstype};
+    die("Need xstype argument") if not defined $xstype;
+  }
+  else {
+    $xstype = $_[0]->xstype;
+  }
+  
+  return $self->_remove($xstype, $self->{input_section}, $self->{input_lookup});
+}
+
+=head2 remove_inputmap
+
+Removes an C<OUTPUT> entry from the typemap.
+
+Required named argument: C<xstype> to specify the entry to remove from the typemap.
+
+Alternatively, you may pass a single C<ExtUtils::Typemaps::OutputMap> object.
+
+=cut
+
+sub remove_outputmap {
+  my $self = shift;
+  my $xstype;
+  if (@_ > 1) {
+    my %args = @_;
+    $xstype = $args{xstype};
+    die("Need xstype argument") if not defined $xstype;
+  }
+  else {
+    $xstype = $_[0]->xstype;
+  }
+  
+  return $self->_remove($xstype, $self->{output_section}, $self->{output_lookup});
+}
+
+sub _remove {
+  my $self   = shift;
+  my $rm     = shift;
+  my $array  = shift;
+  my $lookup = shift;
+
+  # Just fetch the index of the item from the lookup table
+  my $index = $lookup->{$rm};
+  return() if not defined $index;
+
+  # Nuke the item from storage
+  splice(@$array, $index, 1);
+
+  # Decrement the storage position of all items thereafter
+  foreach my $key (keys %$lookup) {
+    if ($lookup->{$key} > $index) {
+      $lookup->{$key}--;
+    }
+  }
+  return();
+}
+
+=head2 get_typemap
+
+Fetches an entry of the TYPEMAP section of the typemap.
+
+Mandatory named arguments: The C<ctype> of the entry.
+
+Returns the C<ExtUtils::Typemaps::Type>
+object for the entry if found.
+
+=cut
+
+sub get_typemap {
+  my $self = shift;
+  die("Need named parameters, got uneven number") if @_ % 2;
+
+  my %args = @_;
+  my $ctype = $args{ctype};
+  die("Need ctype argument") if not defined $ctype;
+  $ctype = _tidy_type($ctype);
+
+  my $index = $self->{typemap_lookup}{$ctype};
+  return() if not defined $index;
+  return $self->{typemap_section}[$index];
+}
+
+=head2 get_inputmap
+
+Fetches an entry of the INPUT section of the
+typemap.
+
+Mandatory named arguments: The C<xstype> of the
+entry or the C<ctype> of the typemap that can be used to find
+the C<xstype>. To wit, the following pieces of code
+are equivalent:
+
+  my $type = $typemap->get_typemap(ctype => $ctype)
+  my $input_map = $typemap->get_inputmap(xstype => $type->xstype);
+
+  my $input_map = $typemap->get_inputmap(ctype => $ctype);
+
+Returns the C<ExtUtils::Typemaps::InputMap>
+object for the entry if found.
+
+=cut
+
+sub get_inputmap {
+  my $self = shift;
+  die("Need named parameters, got uneven number") if @_ % 2;
+
+  my %args = @_;
+  my $xstype = $args{xstype};
+  my $ctype  = $args{ctype};
+  die("Need xstype or ctype argument")
+    if not defined $xstype
+    and not defined $ctype;
+  die("Need xstype OR ctype arguments, not both")
+    if defined $xstype and defined $ctype;
+
+  if (defined $ctype) {
+    my $tm = $self->get_typemap(ctype => $ctype);
+    $xstype = $tm && $tm->xstype;
+    return() if not defined $xstype;
+  }
+
+  my $index = $self->{input_lookup}{$xstype};
+  return() if not defined $index;
+  return $self->{input_section}[$index];
+}
+
+=head2 get_outputmap
+
+Fetches an entry of the OUTPUT section of the
+typemap.
+
+Mandatory named arguments: The C<xstype> of the
+entry or the C<ctype> of the typemap that can be used to
+resolve the C<xstype>. (See above for an example.)
+
+Returns the C<ExtUtils::Typemaps::InputMap>
+object for the entry if found.
+
+=cut
+
+sub get_outputmap {
+  my $self = shift;
+  die("Need named parameters, got uneven number") if @_ % 2;
+
+  my %args = @_;
+  my $xstype = $args{xstype};
+  my $ctype  = $args{ctype};
+  die("Need xstype or ctype argument")
+    if not defined $xstype
+    and not defined $ctype;
+  die("Need xstype OR ctype arguments, not both")
+    if defined $xstype and defined $ctype;
+
+  if (defined $ctype) {
+    my $tm = $self->get_typemap(ctype => $ctype);
+    $xstype = $tm && $tm->xstype;
+    return() if not defined $xstype;
+  }
+
+  my $index = $self->{output_lookup}{$xstype};
+  return() if not defined $index;
+  return $self->{output_section}[$index];
+}
+
+=head2 write
+
+Write the typemap to a file. Optionally takes a C<file> argument. If given, the
+typemap will be written to the specified file. If not, the typemap is written
+to the currently stored file name (see C<-E<gt>file> above, this defaults to the file
+it was read from if any).
+
+=cut
+
+sub write {
+  my $self = shift;
+  my %args = @_;
+  my $file = defined $args{file} ? $args{file} : $self->file();
+  die("write() needs a file argument (or set the file name of the typemap using the 'file' method)")
+    if not defined $file;
+
+  open my $fh, '>', $file
+    or die "Cannot open typemap file '$file' for writing: $!";
+  print $fh $self->as_string();
+  close $fh;
+}
+
+=head2 as_string
+
+Generates and returns the string form of the typemap.
+
+=cut
+
+sub as_string {
+  my $self = shift;
+  my $typemap = $self->{typemap_section};
+  my @code;
+  push @code, "TYPEMAP\n";
+  foreach my $entry (@$typemap) {
+    # type kind proto
+    # /^(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)$/o
+    push @code, $entry->ctype . "\t" . $entry->xstype
+              . ($entry->proto ne '' ? "\t".$entry->proto : '') . "\n";
+  }
+
+  my $input = $self->{input_section};
+  if (@$input) {
+    push @code, "\nINPUT\n";
+    foreach my $entry (@$input) {
+      push @code, $entry->xstype, "\n", $entry->code, "\n";
+    }
+  }
+
+  my $output = $self->{output_section};
+  if (@$output) {
+    push @code, "\nOUTPUT\n";
+    foreach my $entry (@$output) {
+      push @code, $entry->xstype, "\n", $entry->code, "\n";
+    }
+  }
+  return join '', @code;
+}
+
+=head2 as_embedded_typemap
+
+Generates and returns the string form of the typemap with the
+appropriate prefix around it for verbatim inclusion into an
+XS file as an embedded typemap. This will return a string like
+
+  TYPEMAP: <<END_OF_TYPEMAP
+  ... typemap here (see as_string) ...
+  END_OF_TYPEMAP
+
+The method takes care not to use a HERE-doc end marker that
+appears in the typemap string itself.
+
+=cut
+
+sub as_embedded_typemap {
+  my $self = shift;
+  my $string = $self->as_string;
+
+  my @ident_cand = qw(END_TYPEMAP END_OF_TYPEMAP END);
+  my $icand = 0;
+  my $cand_suffix = "";
+  while ($string =~ /^\Q$ident_cand[$icand]$cand_suffix\E\s*$/m) {
+    $icand++;
+    if ($icand == @ident_cand) {
+      $icand = 0;
+      ++$cand_suffix;
+    }
+  }
+
+  my $marker = "$ident_cand[$icand]$cand_suffix";
+  return "TYPEMAP: <<$marker;\n$string\n$marker\n";
+}
+
+=head2 merge
+
+Merges a given typemap into the object. Note that a failed merge
+operation leaves the object in an inconsistent state so clone it if necessary.
+
+Mandatory named arguments: Either C<typemap =E<gt> $another_typemap_obj>
+or C<file =E<gt> $path_to_typemap_file> but not both.
+
+Optional arguments: C<replace =E<gt> 1> to force replacement
+of existing typemap entries without warning or C<skip =E<gt> 1>
+to skip entries that exist already in the typemap.
+
+=cut
+
+sub merge {
+  my $self = shift;
+  my %args = @_;
+
+  if (exists $args{typemap} and exists $args{file}) {
+    die("Need {file} OR {typemap} argument. Not both!");
+  }
+  elsif (not exists $args{typemap} and not exists $args{file}) {
+    die("Need {file} or {typemap} argument!");
+  }
+
+  my @params;
+  push @params, 'replace' => $args{replace} if exists $args{replace};
+  push @params, 'skip' => $args{skip} if exists $args{skip};
+
+  my $typemap = $args{typemap};
+  if (not defined $typemap) {
+    $typemap = ref($self)->new(file => $args{file}, @params);
+  }
+
+  # FIXME breaking encapsulation. Add accessor code.
+  foreach my $entry (@{$typemap->{typemap_section}}) {
+    $self->add_typemap( $entry, @params );
+  }
+
+  foreach my $entry (@{$typemap->{input_section}}) {
+    $self->add_inputmap( $entry, @params );
+  }
+
+  foreach my $entry (@{$typemap->{output_section}}) {
+    $self->add_outputmap( $entry, @params );
+  }
+
+  return 1;
+}
+
+=head2 is_empty
+
+Returns a bool indicating whether this typemap is entirely empty.
+
+=cut
+
+sub is_empty {
+  my $self = shift;
+
+  return @{ $self->{typemap_section} } == 0
+      && @{ $self->{input_section} } == 0
+      && @{ $self->{output_section} } == 0;
+}
+
+=head2 list_mapped_ctypes
+
+Returns a list of the C types that are mappable by
+this typemap object.
+
+=cut
+
+sub list_mapped_ctypes {
+  my $self = shift;
+  return sort keys %{ $self->{typemap_lookup} };
+}
+
+=head2 _get_typemap_hash
+
+Returns a hash mapping the C types to the XS types:
+
+  {
+    'char **' => 'T_PACKEDARRAY',
+    'bool_t' => 'T_IV',
+    'AV *' => 'T_AVREF',
+    'InputStream' => 'T_IN',
+    'double' => 'T_DOUBLE',
+    # ...
+  }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_typemap_hash {
+  my $self = shift;
+  my $lookup  = $self->{typemap_lookup};
+  my $storage = $self->{typemap_section};
+
+  my %rv;
+  foreach my $ctype (keys %$lookup) {
+    $rv{$ctype} = $storage->[ $lookup->{$ctype} ]->xstype;
+  }
+
+  return \%rv;
+}
+
+=head2 _get_inputmap_hash
+
+Returns a hash mapping the XS types (identifiers) to the
+corresponding INPUT code:
+
+  {
+    'T_CALLBACK' => '   $var = make_perl_cb_$type($arg)
+  ',
+    'T_OUT' => '    $var = IoOFP(sv_2io($arg))
+  ',
+    'T_REF_IV_PTR' => '   if (sv_isa($arg, \\"${ntype}\\")) {
+    # ...
+  }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_inputmap_hash {
+  my $self = shift;
+  my $lookup  = $self->{input_lookup};
+  my $storage = $self->{input_section};
+
+  my %rv;
+  foreach my $xstype (keys %$lookup) {
+    $rv{$xstype} = $storage->[ $lookup->{$xstype} ]->code;
+
+    # Squash trailing whitespace to one line break
+    # This isn't strictly necessary, but makes the output more similar
+    # to the original ExtUtils::ParseXS.
+    $rv{$xstype} =~ s/\s*\z/\n/;
+  }
+
+  return \%rv;
+}
+
+
+=head2 _get_outputmap_hash
+
+Returns a hash mapping the XS types (identifiers) to the
+corresponding OUTPUT code:
+
+  {
+    'T_CALLBACK' => '   sv_setpvn($arg, $var.context.value().chp(),
+                $var.context.value().size());
+  ',
+    'T_OUT' => '    {
+            GV *gv = newGVgen("$Package");
+            if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+                sv_setsv(
+                  $arg,
+                  sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1))
+                );
+            else
+                $arg = &PL_sv_undef;
+         }
+  ',
+    # ...
+  }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_outputmap_hash {
+  my $self = shift;
+  my $lookup  = $self->{output_lookup};
+  my $storage = $self->{output_section};
+
+  my %rv;
+  foreach my $xstype (keys %$lookup) {
+    $rv{$xstype} = $storage->[ $lookup->{$xstype} ]->code;
+
+    # Squash trailing whitespace to one line break
+    # This isn't strictly necessary, but makes the output more similar
+    # to the original ExtUtils::ParseXS.
+    $rv{$xstype} =~ s/\s*\z/\n/;
+  }
+
+  return \%rv;
+}
+
+=head2 _get_prototype_hash
+
+Returns a hash mapping the C types of the typemap to their
+corresponding prototypes.
+
+  {
+    'char **' => '$',
+    'bool_t' => '$',
+    'AV *' => '$',
+    'InputStream' => '$',
+    'double' => '$',
+    # ...
+  }
+
+This is documented because it is used by C<ExtUtils::ParseXS>,
+but it's not intended for general consumption. May be removed
+at any time.
+
+=cut
+
+sub _get_prototype_hash {
+  my $self = shift;
+  my $lookup  = $self->{typemap_lookup};
+  my $storage = $self->{typemap_section};
+
+  my %rv;
+  foreach my $ctype (keys %$lookup) {
+    $rv{$ctype} = $storage->[ $lookup->{$ctype} ]->proto || '$';
+  }
+
+  return \%rv;
+}
+
+
+
+# make sure that the provided types wouldn't collide with what's
+# in the object already.
+sub validate {
+  my $self = shift;
+  my %args = @_;
+
+  if ( exists $args{ctype}
+       and exists $self->{typemap_lookup}{_tidy_type($args{ctype})} )
+  {
+    die("Multiple definition of ctype '$args{ctype}' in TYPEMAP section");
+  }
+
+  if ( exists $args{inputmap_xstype}
+       and exists $self->{input_lookup}{$args{inputmap_xstype}} )
+  {
+    die("Multiple definition of xstype '$args{inputmap_xstype}' in INPUTMAP section");
+  }
+
+  if ( exists $args{outputmap_xstype}
+       and exists $self->{output_lookup}{$args{outputmap_xstype}} )
+  {
+    die("Multiple definition of xstype '$args{outputmap_xstype}' in OUTPUTMAP section");
+  }
+
+  return 1;
+}
+
+sub _parse {
+  my $self = shift;
+  my $stringref = shift;
+  my $lineno_offset = shift;
+  $lineno_offset = 0 if not defined $lineno_offset;
+  my $filename = shift;
+  $filename = '<string>' if not defined $filename;
+
+  my $replace = $self->{replace};
+  my $skip    = $self->{skip};
+  die "Can only replace OR skip" if $replace and $skip;
+  my @add_params;
+  push @add_params, replace => 1 if $replace;
+  push @add_params, skip    => 1 if $skip;
+
+  # TODO comments should round-trip, currently ignoring
+  # TODO order of sections, multiple sections of same type
+  # Heavily influenced by ExtUtils::ParseXS
+  my $section = 'typemap';
+  my $lineno = $lineno_offset;
+  my $junk = "";
+  my $current = \$junk;
+  my @input_expr;
+  my @output_expr;
+  while ($$stringref =~ /^(.*)$/gcm) {
+    local $_ = $1;
+    ++$lineno;
+    chomp;
+    next if /^\s*#/;
+    if (/^INPUT\s*$/) {
+      $section = 'input';
+      $current = \$junk;
+      next;
+    }
+    elsif (/^OUTPUT\s*$/) {
+      $section = 'output';
+      $current = \$junk;
+      next;
+    }
+    elsif (/^TYPEMAP\s*$/) {
+      $section = 'typemap';
+      $current = \$junk;
+      next;
+    }
+    
+    if ($section eq 'typemap') {
+      my $line = $_;
+      s/^\s+//; s/\s+$//;
+      next if $_ eq '' or /^#/;
+      my($type, $kind, $proto) = /^(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)$/o
+        or warn("Warning: File '$filename' Line $lineno '$line' TYPEMAP entry needs 2 or 3 columns\n"),
+           next;
+      # prototype defaults to '$'
+      $proto = '$' unless $proto;
+      warn("Warning: File '$filename' Line $lineno '$line' Invalid prototype '$proto'\n")
+        unless _valid_proto_string($proto);
+      $self->add_typemap(
+        ExtUtils::Typemaps::Type->new(
+          xstype => $kind, proto => $proto, ctype => $type
+        ),
+        @add_params
+      );
+    } elsif (/^\s/) {
+      s/\s+$//;
+      $$current .= $$current eq '' ? $_ : "\n".$_;
+    } elsif ($_ eq '') {
+      next;
+    } elsif ($section eq 'input') {
+      s/\s+$//;
+      push @input_expr, {xstype => $_, code => ''};
+      $current = \$input_expr[-1]{code};
+    } else { # output section
+      s/\s+$//;
+      push @output_expr, {xstype => $_, code => ''};
+      $current = \$output_expr[-1]{code};
+    }
+
+  } # end while lines
+
+  foreach my $inexpr (@input_expr) {
+    $self->add_inputmap( ExtUtils::Typemaps::InputMap->new(%$inexpr), @add_params );
+  }
+  foreach my $outexpr (@output_expr) {
+    $self->add_outputmap( ExtUtils::Typemaps::OutputMap->new(%$outexpr), @add_params );
+  }
+
+  return 1;
+}
+
+# taken from ExtUtils::ParseXS
+sub _tidy_type {
+  local $_ = shift;
+
+  # rationalise any '*' by joining them into bunches and removing whitespace
+  s#\s*(\*+)\s*#$1#g;
+  s#(\*+)# $1 #g ;
+
+  # trim leading & trailing whitespace
+  s/^\s+//; s/\s+$//;
+
+  # change multiple whitespace into a single space
+  s/\s+/ /g;
+
+  $_;
+}
+
+
+# taken from ExtUtils::ParseXS
+sub _valid_proto_string {
+  my $string = shift;
+  if ($string =~ /^$ExtUtils::ParseXS::Constants::PrototypeRegexp+$/o) {
+    return $string;
+  }
+
+  return 0 ;
+}
+
+# taken from ExtUtils::ParseXS (C_string)
+sub _escape_backslashes {
+  my $string = shift;
+  $string =~ s[\\][\\\\]g;
+  $string;
+}
+
+=head1 CAVEATS
+
+Inherits some evil code from C<ExtUtils::ParseXS>.
+
+=head1 SEE ALSO
+
+The parser is heavily inspired from the one in L<ExtUtils::ParseXS>.
+
+For details on typemaps: L<perlxstut>, L<perlxs>.
+
+=head1 AUTHOR
+
+Steffen Mueller C<<smueller at cpan.org>>
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, 2010, 2011, 2012 Steffen Mueller
+
+This program is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+=cut
+
+1;
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxs.pod
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxs.pod	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxs.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2123 @@
+=head1 NAME
+
+perlxs - XS language reference manual
+
+=head1 DESCRIPTION
+
+=head2 Introduction
+
+XS is an interface description file format used to create an extension
+interface between Perl and C code (or a C library) which one wishes
+to use with Perl.  The XS interface is combined with the library to
+create a new library which can then be either dynamically loaded
+or statically linked into perl.  The XS interface description is
+written in the XS language and is the core component of the Perl
+extension interface.
+
+An B<XSUB> forms the basic unit of the XS interface.  After compilation
+by the B<xsubpp> compiler, each XSUB amounts to a C function definition
+which will provide the glue between Perl calling conventions and C
+calling conventions.
+
+The glue code pulls the arguments from the Perl stack, converts these
+Perl values to the formats expected by a C function, call this C function,
+transfers the return values of the C function back to Perl.
+Return values here may be a conventional C return value or any C
+function arguments that may serve as output parameters.  These return
+values may be passed back to Perl either by putting them on the
+Perl stack, or by modifying the arguments supplied from the Perl side.
+
+The above is a somewhat simplified view of what really happens.  Since
+Perl allows more flexible calling conventions than C, XSUBs may do much
+more in practice, such as checking input parameters for validity,
+throwing exceptions (or returning undef/empty list) if the return value
+from the C function indicates failure, calling different C functions
+based on numbers and types of the arguments, providing an object-oriented
+interface, etc.
+
+Of course, one could write such glue code directly in C.  However, this
+would be a tedious task, especially if one needs to write glue for
+multiple C functions, and/or one is not familiar enough with the Perl
+stack discipline and other such arcana.  XS comes to the rescue here:
+instead of writing this glue C code in long-hand, one can write
+a more concise short-hand I<description> of what should be done by
+the glue, and let the XS compiler B<xsubpp> handle the rest.
+
+The XS language allows one to describe the mapping between how the C
+routine is used, and how the corresponding Perl routine is used.  It
+also allows creation of Perl routines which are directly translated to
+C code and which are not related to a pre-existing C function.  In cases
+when the C interface coincides with the Perl interface, the XSUB
+declaration is almost identical to a declaration of a C function (in K&R
+style).  In such circumstances, there is another tool called C<h2xs>
+that is able to translate an entire C header file into a corresponding
+XS file that will provide glue to the functions/macros described in
+the header file.
+
+The XS compiler is called B<xsubpp>.  This compiler creates
+the constructs necessary to let an XSUB manipulate Perl values, and
+creates the glue necessary to let Perl call the XSUB.  The compiler
+uses B<typemaps> to determine how to map C function parameters
+and output values to Perl values and back.  The default typemap
+(which comes with Perl) handles many common C types.  A supplementary
+typemap may also be needed to handle any special structures and types
+for the library being linked. For more information on typemaps,
+see L<perlxstypemap>.
+
+A file in XS format starts with a C language section which goes until the
+first C<MODULE =Z<>> directive.  Other XS directives and XSUB definitions
+may follow this line.  The "language" used in this part of the file
+is usually referred to as the XS language.  B<xsubpp> recognizes and
+skips POD (see L<perlpod>) in both the C and XS language sections, which
+allows the XS file to contain embedded documentation.
+
+See L<perlxstut> for a tutorial on the whole extension creation process.
+
+Note: For some extensions, Dave Beazley's SWIG system may provide a
+significantly more convenient mechanism for creating the extension
+glue code.  See L<http://www.swig.org/> for more information.
+
+=head2 On The Road
+
+Many of the examples which follow will concentrate on creating an interface
+between Perl and the ONC+ RPC bind library functions.  The rpcb_gettime()
+function is used to demonstrate many features of the XS language.  This
+function has two parameters; the first is an input parameter and the second
+is an output parameter.  The function also returns a status value.
+
+	bool_t rpcb_gettime(const char *host, time_t *timep);
+
+From C this function will be called with the following
+statements.
+
+     #include <rpc/rpc.h>
+     bool_t status;
+     time_t timep;
+     status = rpcb_gettime( "localhost", &timep );
+
+If an XSUB is created to offer a direct translation between this function
+and Perl, then this XSUB will be used from Perl with the following code.
+The $status and $timep variables will contain the output of the function.
+
+     use RPC;
+     $status = rpcb_gettime( "localhost", $timep );
+
+The following XS file shows an XS subroutine, or XSUB, which
+demonstrates one possible interface to the rpcb_gettime()
+function.  This XSUB represents a direct translation between
+C and Perl and so preserves the interface even from Perl.
+This XSUB will be invoked from Perl with the usage shown
+above.  Note that the first three #include statements, for
+C<EXTERN.h>, C<perl.h>, and C<XSUB.h>, will always be present at the
+beginning of an XS file.  This approach and others will be
+expanded later in this document.
+
+     #include "EXTERN.h"
+     #include "perl.h"
+     #include "XSUB.h"
+     #include <rpc/rpc.h>
+
+     MODULE = RPC  PACKAGE = RPC
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+        OUTPUT:
+          timep
+
+Any extension to Perl, including those containing XSUBs,
+should have a Perl module to serve as the bootstrap which
+pulls the extension into Perl.  This module will export the
+extension's functions and variables to the Perl program and
+will cause the extension's XSUBs to be linked into Perl.
+The following module will be used for most of the examples
+in this document and should be used from Perl with the C<use>
+command as shown earlier.  Perl modules are explained in
+more detail later in this document.
+
+     package RPC;
+
+     require Exporter;
+     require DynaLoader;
+     @ISA = qw(Exporter DynaLoader);
+     @EXPORT = qw( rpcb_gettime );
+
+     bootstrap RPC;
+     1;
+
+Throughout this document a variety of interfaces to the rpcb_gettime()
+XSUB will be explored.  The XSUBs will take their parameters in different
+orders or will take different numbers of parameters.  In each case the
+XSUB is an abstraction between Perl and the real C rpcb_gettime()
+function, and the XSUB must always ensure that the real rpcb_gettime()
+function is called with the correct parameters.  This abstraction will
+allow the programmer to create a more Perl-like interface to the C
+function.
+
+=head2 The Anatomy of an XSUB
+
+The simplest XSUBs consist of 3 parts: a description of the return
+value, the name of the XSUB routine and the names of its arguments,
+and a description of types or formats of the arguments.
+
+The following XSUB allows a Perl program to access a C library function
+called sin().  The XSUB will imitate the C function which takes a single
+argument and returns a single value.
+
+     double
+     sin(x)
+       double x
+
+Optionally, one can merge the description of types and the list of
+argument names, rewriting this as
+
+     double
+     sin(double x)
+
+This makes this XSUB look similar to an ANSI C declaration.  An optional
+semicolon is allowed after the argument list, as in
+
+     double
+     sin(double x);
+
+Parameters with C pointer types can have different semantic: C functions
+with similar declarations
+
+     bool string_looks_as_a_number(char *s);
+     bool make_char_uppercase(char *c);
+
+are used in absolutely incompatible manner.  Parameters to these functions
+could be described B<xsubpp> like this:
+
+     char *  s
+     char    &c
+
+Both these XS declarations correspond to the C<char*> C type, but they have
+different semantics, see L<"The & Unary Operator">.
+
+It is convenient to think that the indirection operator
+C<*> should be considered as a part of the type and the address operator C<&>
+should be considered part of the variable.  See L<perlxstypemap>
+for more info about handling qualifiers and unary operators in C types.
+
+The function name and the return type must be placed on
+separate lines and should be flush left-adjusted.
+
+  INCORRECT                        CORRECT
+
+  double sin(x)                    double
+    double x                       sin(x)
+				     double x
+
+The rest of the function description may be indented or left-adjusted. The
+following example shows a function with its body left-adjusted.  Most
+examples in this document will indent the body for better readability.
+
+  CORRECT
+
+  double
+  sin(x)
+  double x
+
+More complicated XSUBs may contain many other sections.  Each section of
+an XSUB starts with the corresponding keyword, such as INIT: or CLEANUP:.
+However, the first two lines of an XSUB always contain the same data:
+descriptions of the return type and the names of the function and its
+parameters.  Whatever immediately follows these is considered to be
+an INPUT: section unless explicitly marked with another keyword.
+(See L<The INPUT: Keyword>.)
+
+An XSUB section continues until another section-start keyword is found.
+
+=head2 The Argument Stack
+
+The Perl argument stack is used to store the values which are
+sent as parameters to the XSUB and to store the XSUB's
+return value(s).  In reality all Perl functions (including non-XSUB
+ones) keep their values on this stack all the same time, each limited
+to its own range of positions on the stack.  In this document the
+first position on that stack which belongs to the active
+function will be referred to as position 0 for that function.
+
+XSUBs refer to their stack arguments with the macro B<ST(x)>, where I<x>
+refers to a position in this XSUB's part of the stack.  Position 0 for that
+function would be known to the XSUB as ST(0).  The XSUB's incoming
+parameters and outgoing return values always begin at ST(0).  For many
+simple cases the B<xsubpp> compiler will generate the code necessary to
+handle the argument stack by embedding code fragments found in the
+typemaps.  In more complex cases the programmer must supply the code.
+
+=head2 The RETVAL Variable
+
+The RETVAL variable is a special C variable that is declared automatically
+for you.  The C type of RETVAL matches the return type of the C library
+function.  The B<xsubpp> compiler will declare this variable in each XSUB
+with non-C<void> return type.  By default the generated C function
+will use RETVAL to hold the return value of the C library function being
+called.  In simple cases the value of RETVAL will be placed in ST(0) of
+the argument stack where it can be received by Perl as the return value
+of the XSUB.
+
+If the XSUB has a return type of C<void> then the compiler will
+not declare a RETVAL variable for that function.  When using
+a PPCODE: section no manipulation of the RETVAL variable is required, the
+section may use direct stack manipulation to place output values on the stack.
+
+If PPCODE: directive is not used, C<void> return value should be used
+only for subroutines which do not return a value, I<even if> CODE:
+directive is used which sets ST(0) explicitly.
+
+Older versions of this document recommended to use C<void> return
+value in such cases. It was discovered that this could lead to
+segfaults in cases when XSUB was I<truly> C<void>. This practice is
+now deprecated, and may be not supported at some future version. Use
+the return value C<SV *> in such cases. (Currently C<xsubpp> contains
+some heuristic code which tries to disambiguate between "truly-void"
+and "old-practice-declared-as-void" functions. Hence your code is at
+mercy of this heuristics unless you use C<SV *> as return value.)
+
+=head2 Returning SVs, AVs and HVs through RETVAL
+
+When you're using RETVAL to return an C<SV *>, there's some magic
+going on behind the scenes that should be mentioned. When you're
+manipulating the argument stack using the ST(x) macro, for example,
+you usually have to pay special attention to reference counts. (For
+more about reference counts, see L<perlguts>.) To make your life
+easier, the typemap file automatically makes C<RETVAL> mortal when
+you're returning an C<SV *>. Thus, the following two XSUBs are more
+or less equivalent:
+
+  void
+  alpha()
+      PPCODE:
+          ST(0) = newSVpv("Hello World",0);
+          sv_2mortal(ST(0));
+          XSRETURN(1);
+
+  SV *
+  beta()
+      CODE:
+          RETVAL = newSVpv("Hello World",0);
+      OUTPUT:
+          RETVAL
+
+This is quite useful as it usually improves readability. While
+this works fine for an C<SV *>, it's unfortunately not as easy
+to have C<AV *> or C<HV *> as a return value. You I<should> be
+able to write:
+
+  AV *
+  array()
+      CODE:
+          RETVAL = newAV();
+          /* do something with RETVAL */
+      OUTPUT:
+          RETVAL
+
+But due to an unfixable bug (fixing it would break lots of existing
+CPAN modules) in the typemap file, the reference count of the C<AV *>
+is not properly decremented. Thus, the above XSUB would leak memory
+whenever it is being called. The same problem exists for C<HV *>,
+C<CV *>, and C<SVREF> (which indicates a scalar reference, not
+a general C<SV *>).
+In XS code on perls starting with perl 5.16, you can override the
+typemaps for any of these types with a version that has proper
+handling of refcounts. In your C<TYPEMAP> section, do
+
+  AV*	T_AVREF_REFCOUNT_FIXED
+
+to get the repaired variant. For backward compatibility with older
+versions of perl, you can instead decrement the reference count
+manually when you're returning one of the aforementioned
+types using C<sv_2mortal>:
+
+  AV *
+  array()
+      CODE:
+          RETVAL = newAV();
+          sv_2mortal((SV*)RETVAL);
+          /* do something with RETVAL */
+      OUTPUT:
+          RETVAL
+
+Remember that you don't have to do this for an C<SV *>. The reference
+documentation for all core typemaps can be found in L<perlxstypemap>.
+
+=head2 The MODULE Keyword
+
+The MODULE keyword is used to start the XS code and to specify the package
+of the functions which are being defined.  All text preceding the first
+MODULE keyword is considered C code and is passed through to the output with
+POD stripped, but otherwise untouched.  Every XS module will have a
+bootstrap function which is used to hook the XSUBs into Perl.  The package
+name of this bootstrap function will match the value of the last MODULE
+statement in the XS source files.  The value of MODULE should always remain
+constant within the same XS file, though this is not required.
+
+The following example will start the XS code and will place
+all functions in a package named RPC.
+
+     MODULE = RPC
+
+=head2 The PACKAGE Keyword
+
+When functions within an XS source file must be separated into packages
+the PACKAGE keyword should be used.  This keyword is used with the MODULE
+keyword and must follow immediately after it when used.
+
+     MODULE = RPC  PACKAGE = RPC
+
+     [ XS code in package RPC ]
+
+     MODULE = RPC  PACKAGE = RPCB
+
+     [ XS code in package RPCB ]
+
+     MODULE = RPC  PACKAGE = RPC
+
+     [ XS code in package RPC ]
+
+The same package name can be used more than once, allowing for
+non-contiguous code. This is useful if you have a stronger ordering
+principle than package names.
+
+Although this keyword is optional and in some cases provides redundant
+information it should always be used.  This keyword will ensure that the
+XSUBs appear in the desired package.
+
+=head2 The PREFIX Keyword
+
+The PREFIX keyword designates prefixes which should be
+removed from the Perl function names.  If the C function is
+C<rpcb_gettime()> and the PREFIX value is C<rpcb_> then Perl will
+see this function as C<gettime()>.
+
+This keyword should follow the PACKAGE keyword when used.
+If PACKAGE is not used then PREFIX should follow the MODULE
+keyword.
+
+     MODULE = RPC  PREFIX = rpc_
+
+     MODULE = RPC  PACKAGE = RPCB  PREFIX = rpcb_
+
+=head2 The OUTPUT: Keyword
+
+The OUTPUT: keyword indicates that certain function parameters should be
+updated (new values made visible to Perl) when the XSUB terminates or that
+certain values should be returned to the calling Perl function.  For
+simple functions which have no CODE: or PPCODE: section,
+such as the sin() function above, the RETVAL variable is
+automatically designated as an output value.  For more complex functions
+the B<xsubpp> compiler will need help to determine which variables are output
+variables.
+
+This keyword will normally be used to complement the CODE:  keyword.
+The RETVAL variable is not recognized as an output variable when the
+CODE: keyword is present.  The OUTPUT:  keyword is used in this
+situation to tell the compiler that RETVAL really is an output
+variable.
+
+The OUTPUT: keyword can also be used to indicate that function parameters
+are output variables.  This may be necessary when a parameter has been
+modified within the function and the programmer would like the update to
+be seen by Perl.
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+        OUTPUT:
+          timep
+
+The OUTPUT: keyword will also allow an output parameter to
+be mapped to a matching piece of code rather than to a
+typemap.
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+        OUTPUT:
+          timep sv_setnv(ST(1), (double)timep);
+
+B<xsubpp> emits an automatic C<SvSETMAGIC()> for all parameters in the
+OUTPUT section of the XSUB, except RETVAL.  This is the usually desired
+behavior, as it takes care of properly invoking 'set' magic on output
+parameters (needed for hash or array element parameters that must be
+created if they didn't exist).  If for some reason, this behavior is
+not desired, the OUTPUT section may contain a C<SETMAGIC: DISABLE> line
+to disable it for the remainder of the parameters in the OUTPUT section.
+Likewise,  C<SETMAGIC: ENABLE> can be used to reenable it for the
+remainder of the OUTPUT section.  See L<perlguts> for more details
+about 'set' magic.
+
+=head2 The NO_OUTPUT Keyword
+
+The NO_OUTPUT can be placed as the first token of the XSUB.  This keyword
+indicates that while the C subroutine we provide an interface to has
+a non-C<void> return type, the return value of this C subroutine should not
+be returned from the generated Perl subroutine.
+
+With this keyword present L<The RETVAL Variable> is created, and in the
+generated call to the subroutine this variable is assigned to, but the value
+of this variable is not going to be used in the auto-generated code.
+
+This keyword makes sense only if C<RETVAL> is going to be accessed by the
+user-supplied code.  It is especially useful to make a function interface
+more Perl-like, especially when the C return value is just an error condition
+indicator.  For example,
+
+  NO_OUTPUT int
+  delete_file(char *name)
+    POSTCALL:
+      if (RETVAL != 0)
+	  croak("Error %d while deleting file '%s'", RETVAL, name);
+
+Here the generated XS function returns nothing on success, and will die()
+with a meaningful error message on error.
+
+=head2 The CODE: Keyword
+
+This keyword is used in more complicated XSUBs which require
+special handling for the C function.  The RETVAL variable is
+still declared, but it will not be returned unless it is specified
+in the OUTPUT: section.
+
+The following XSUB is for a C function which requires special handling of
+its parameters.  The Perl usage is given first.
+
+     $status = rpcb_gettime( "localhost", $timep );
+
+The XSUB follows.
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host
+          time_t timep
+        CODE:
+               RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+=head2 The INIT: Keyword
+
+The INIT: keyword allows initialization to be inserted into the XSUB before
+the compiler generates the call to the C function.  Unlike the CODE: keyword
+above, this keyword does not affect the way the compiler handles RETVAL.
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+	INIT:
+	  printf("# Host is %s\n", host );
+        OUTPUT:
+          timep
+
+Another use for the INIT: section is to check for preconditions before
+making a call to the C function:
+
+    long long
+    lldiv(a,b)
+	long long a
+	long long b
+      INIT:
+	if (a == 0 && b == 0)
+	    XSRETURN_UNDEF;
+	if (b == 0)
+	    croak("lldiv: cannot divide by 0");
+
+=head2 The NO_INIT Keyword
+
+The NO_INIT keyword is used to indicate that a function
+parameter is being used only as an output value.  The B<xsubpp>
+compiler will normally generate code to read the values of
+all function parameters from the argument stack and assign
+them to C variables upon entry to the function.  NO_INIT
+will tell the compiler that some parameters will be used for
+output rather than for input and that they will be handled
+before the function terminates.
+
+The following example shows a variation of the rpcb_gettime() function.
+This function uses the timep variable only as an output variable and does
+not care about its initial contents.
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host
+          time_t &timep = NO_INIT
+        OUTPUT:
+          timep
+
+=head2 The TYPEMAP: Keyword
+
+Starting with Perl 5.16, you can embed typemaps into your XS code
+instead of or in addition to typemaps in a separate file.  Multiple
+such embedded typemaps will be processed in order of appearance in
+the XS code and like local typemap files take precendence over the
+default typemap, the embedded typemaps may overwrite previous
+definitions of TYPEMAP, INPUT, and OUTPUT stanzas.  The syntax for
+embedded typemaps is
+
+      TYPEMAP: <<HERE
+      ... your typemap code here ...
+      HERE
+
+where the C<TYPEMAP> keyword must appear in the first column of a
+new line.
+
+Refer to L<perlxstypemap> for details on writing typemaps.
+
+=head2 Initializing Function Parameters
+
+C function parameters are normally initialized with their values from
+the argument stack (which in turn contains the parameters that were
+passed to the XSUB from Perl).  The typemaps contain the
+code segments which are used to translate the Perl values to
+the C parameters.  The programmer, however, is allowed to
+override the typemaps and supply alternate (or additional)
+initialization code.  Initialization code starts with the first
+C<=>, C<;> or C<+> on a line in the INPUT: section.  The only
+exception happens if this C<;> terminates the line, then this C<;>
+is quietly ignored.
+
+The following code demonstrates how to supply initialization code for
+function parameters.  The initialization code is eval'ed within double
+quotes by the compiler before it is added to the output so anything
+which should be interpreted literally [mainly C<$>, C<@>, or C<\\>]
+must be protected with backslashes.  The variables C<$var>, C<$arg>,
+and C<$type> can be used as in typemaps.
+
+     bool_t
+     rpcb_gettime(host,timep)
+          char *host = (char *)SvPV_nolen($arg);
+          time_t &timep = 0;
+        OUTPUT:
+          timep
+
+This should not be used to supply default values for parameters.  One
+would normally use this when a function parameter must be processed by
+another library function before it can be used.  Default parameters are
+covered in the next section.
+
+If the initialization begins with C<=>, then it is output in
+the declaration for the input variable, replacing the initialization
+supplied by the typemap.  If the initialization
+begins with C<;> or C<+>, then it is performed after
+all of the input variables have been declared.  In the C<;>
+case the initialization normally supplied by the typemap is not performed.
+For the C<+> case, the declaration for the variable will include the
+initialization from the typemap.  A global
+variable, C<%v>, is available for the truly rare case where
+information from one initialization is needed in another
+initialization.
+
+Here's a truly obscure example:
+
+     bool_t
+     rpcb_gettime(host,timep)
+          time_t &timep; /* \$v{timep}=@{[$v{timep}=$arg]} */
+          char *host + SvOK($v{timep}) ? SvPV_nolen($arg) : NULL;
+        OUTPUT:
+          timep
+
+The construct C<\$v{timep}=@{[$v{timep}=$arg]}> used in the above
+example has a two-fold purpose: first, when this line is processed by
+B<xsubpp>, the Perl snippet C<$v{timep}=$arg> is evaluated.  Second,
+the text of the evaluated snippet is output into the generated C file
+(inside a C comment)!  During the processing of C<char *host> line,
+C<$arg> will evaluate to C<ST(0)>, and C<$v{timep}> will evaluate to
+C<ST(1)>.
+
+=head2 Default Parameter Values
+
+Default values for XSUB arguments can be specified by placing an
+assignment statement in the parameter list.  The default value may
+be a number, a string or the special string C<NO_INIT>.  Defaults should
+always be used on the right-most parameters only.
+
+To allow the XSUB for rpcb_gettime() to have a default host
+value the parameters to the XSUB could be rearranged.  The
+XSUB will then call the real rpcb_gettime() function with
+the parameters in the correct order.  This XSUB can be called
+from Perl with either of the following statements:
+
+     $status = rpcb_gettime( $timep, $host );
+
+     $status = rpcb_gettime( $timep );
+
+The XSUB will look like the code  which  follows.   A  CODE:
+block  is used to call the real rpcb_gettime() function with
+the parameters in the correct order for that function.
+
+     bool_t
+     rpcb_gettime(timep,host="localhost")
+          char *host
+          time_t timep = NO_INIT
+        CODE:
+               RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+=head2 The PREINIT: Keyword
+
+The PREINIT: keyword allows extra variables to be declared immediately
+before or after the declarations of the parameters from the INPUT: section
+are emitted.
+
+If a variable is declared inside a CODE: section it will follow any typemap
+code that is emitted for the input parameters.  This may result in the
+declaration ending up after C code, which is C syntax error.  Similar
+errors may happen with an explicit C<;>-type or C<+>-type initialization of
+parameters is used (see L<"Initializing Function Parameters">).  Declaring
+these variables in an INIT: section will not help.
+
+In such cases, to force an additional variable to be declared together
+with declarations of other variables, place the declaration into a
+PREINIT: section.  The PREINIT: keyword may be used one or more times
+within an XSUB.
+
+The following examples are equivalent, but if the code is using complex
+typemaps then the first example is safer.
+
+     bool_t
+     rpcb_gettime(timep)
+          time_t timep = NO_INIT
+	PREINIT:
+          char *host = "localhost";
+        CODE:
+	  RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+For this particular case an INIT: keyword would generate the
+same C code as the PREINIT: keyword.  Another correct, but error-prone example:
+
+     bool_t
+     rpcb_gettime(timep)
+          time_t timep = NO_INIT
+	CODE:
+          char *host = "localhost";
+	  RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+Another way to declare C<host> is to use a C block in the CODE: section:
+
+     bool_t
+     rpcb_gettime(timep)
+          time_t timep = NO_INIT
+	CODE:
+	  {
+            char *host = "localhost";
+	    RETVAL = rpcb_gettime( host, &timep );
+	  }
+        OUTPUT:
+          timep
+          RETVAL
+
+The ability to put additional declarations before the typemap entries are
+processed is very handy in the cases when typemap conversions manipulate
+some global state:
+
+    MyObject
+    mutate(o)
+	PREINIT:
+	    MyState st = global_state;
+	INPUT:
+	    MyObject o;
+	CLEANUP:
+	    reset_to(global_state, st);
+
+Here we suppose that conversion to C<MyObject> in the INPUT: section and from
+MyObject when processing RETVAL will modify a global variable C<global_state>.
+After these conversions are performed, we restore the old value of
+C<global_state> (to avoid memory leaks, for example).
+
+There is another way to trade clarity for compactness: INPUT sections allow
+declaration of C variables which do not appear in the parameter list of
+a subroutine.  Thus the above code for mutate() can be rewritten as
+
+    MyObject
+    mutate(o)
+	  MyState st = global_state;
+	  MyObject o;
+	CLEANUP:
+	  reset_to(global_state, st);
+
+and the code for rpcb_gettime() can be rewritten as
+
+     bool_t
+     rpcb_gettime(timep)
+	  time_t timep = NO_INIT
+	  char *host = "localhost";
+	C_ARGS:
+	  host, &timep
+	OUTPUT:
+          timep
+          RETVAL
+
+=head2 The SCOPE: Keyword
+
+The SCOPE: keyword allows scoping to be enabled for a particular XSUB. If
+enabled, the XSUB will invoke ENTER and LEAVE automatically.
+
+To support potentially complex type mappings, if a typemap entry used
+by an XSUB contains a comment like C</*scope*/> then scoping will
+be automatically enabled for that XSUB.
+
+To enable scoping:
+
+    SCOPE: ENABLE
+
+To disable scoping:
+
+    SCOPE: DISABLE
+
+=head2 The INPUT: Keyword
+
+The XSUB's parameters are usually evaluated immediately after entering the
+XSUB.  The INPUT: keyword can be used to force those parameters to be
+evaluated a little later.  The INPUT: keyword can be used multiple times
+within an XSUB and can be used to list one or more input variables.  This
+keyword is used with the PREINIT: keyword.
+
+The following example shows how the input parameter C<timep> can be
+evaluated late, after a PREINIT.
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+	PREINIT:
+	  time_t tt;
+	INPUT:
+          time_t timep
+        CODE:
+               RETVAL = rpcb_gettime( host, &tt );
+	       timep = tt;
+        OUTPUT:
+          timep
+          RETVAL
+
+The next example shows each input parameter evaluated late.
+
+    bool_t
+    rpcb_gettime(host,timep)
+	PREINIT:
+	  time_t tt;
+	INPUT:
+          char *host
+	PREINIT:
+	  char *h;
+	INPUT:
+          time_t timep
+        CODE:
+	       h = host;
+	       RETVAL = rpcb_gettime( h, &tt );
+	       timep = tt;
+        OUTPUT:
+          timep
+          RETVAL
+
+Since INPUT sections allow declaration of C variables which do not appear
+in the parameter list of a subroutine, this may be shortened to:
+
+    bool_t
+    rpcb_gettime(host,timep)
+	  time_t tt;
+          char *host;
+	  char *h = host;
+          time_t timep;
+        CODE:
+	  RETVAL = rpcb_gettime( h, &tt );
+	  timep = tt;
+        OUTPUT:
+          timep
+          RETVAL
+
+(We used our knowledge that input conversion for C<char *> is a "simple" one,
+thus C<host> is initialized on the declaration line, and our assignment
+C<h = host> is not performed too early.  Otherwise one would need to have the
+assignment C<h = host> in a CODE: or INIT: section.)
+
+=head2 The IN/OUTLIST/IN_OUTLIST/OUT/IN_OUT Keywords
+
+In the list of parameters for an XSUB, one can precede parameter names
+by the C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT> keywords.
+C<IN> keyword is the default, the other keywords indicate how the Perl
+interface should differ from the C interface.
+
+Parameters preceded by C<OUTLIST>/C<IN_OUTLIST>/C<OUT>/C<IN_OUT>
+keywords are considered to be used by the C subroutine I<via
+pointers>.  C<OUTLIST>/C<OUT> keywords indicate that the C subroutine
+does not inspect the memory pointed by this parameter, but will write
+through this pointer to provide additional return values.
+
+Parameters preceded by C<OUTLIST> keyword do not appear in the usage
+signature of the generated Perl function.
+
+Parameters preceded by C<IN_OUTLIST>/C<IN_OUT>/C<OUT> I<do> appear as
+parameters to the Perl function.  With the exception of
+C<OUT>-parameters, these parameters are converted to the corresponding
+C type, then pointers to these data are given as arguments to the C
+function.  It is expected that the C function will write through these
+pointers.
+
+The return list of the generated Perl function consists of the C return value
+from the function (unless the XSUB is of C<void> return type or
+C<The NO_OUTPUT Keyword> was used) followed by all the C<OUTLIST>
+and C<IN_OUTLIST> parameters (in the order of appearance).  On the
+return from the XSUB the C<IN_OUT>/C<OUT> Perl parameter will be
+modified to have the values written by the C function.
+
+For example, an XSUB
+
+  void
+  day_month(OUTLIST day, IN unix_time, OUTLIST month)
+    int day
+    int unix_time
+    int month
+
+should be used from Perl as
+
+  my ($day, $month) = day_month(time);
+
+The C signature of the corresponding function should be
+
+  void day_month(int *day, int unix_time, int *month);
+
+The C<IN>/C<OUTLIST>/C<IN_OUTLIST>/C<IN_OUT>/C<OUT> keywords can be
+mixed with ANSI-style declarations, as in
+
+  void
+  day_month(OUTLIST int day, int unix_time, OUTLIST int month)
+
+(here the optional C<IN> keyword is omitted).
+
+The C<IN_OUT> parameters are identical with parameters introduced with
+L<The & Unary Operator> and put into the C<OUTPUT:> section (see
+L<The OUTPUT: Keyword>).  The C<IN_OUTLIST> parameters are very similar,
+the only difference being that the value C function writes through the
+pointer would not modify the Perl parameter, but is put in the output
+list.
+
+The C<OUTLIST>/C<OUT> parameter differ from C<IN_OUTLIST>/C<IN_OUT>
+parameters only by the initial value of the Perl parameter not
+being read (and not being given to the C function - which gets some
+garbage instead).  For example, the same C function as above can be
+interfaced with as
+
+  void day_month(OUT int day, int unix_time, OUT int month);
+
+or
+
+  void
+  day_month(day, unix_time, month)
+      int &day = NO_INIT
+      int  unix_time
+      int &month = NO_INIT
+    OUTPUT:
+      day
+      month
+
+However, the generated Perl function is called in very C-ish style:
+
+  my ($day, $month);
+  day_month($day, time, $month);
+
+=head2 The C<length(NAME)> Keyword
+
+If one of the input arguments to the C function is the length of a string
+argument C<NAME>, one can substitute the name of the length-argument by
+C<length(NAME)> in the XSUB declaration.  This argument must be omitted when
+the generated Perl function is called.  E.g.,
+
+  void
+  dump_chars(char *s, short l)
+  {
+    short n = 0;
+    while (n < l) {
+        printf("s[%d] = \"\\%#03o\"\n", n, (int)s[n]);
+        n++;
+    }
+  }
+
+  MODULE = x		PACKAGE = x
+
+  void dump_chars(char *s, short length(s))
+
+should be called as C<dump_chars($string)>.
+
+This directive is supported with ANSI-type function declarations only.
+
+=head2 Variable-length Parameter Lists
+
+XSUBs can have variable-length parameter lists by specifying an ellipsis
+C<(...)> in the parameter list.  This use of the ellipsis is similar to that
+found in ANSI C.  The programmer is able to determine the number of
+arguments passed to the XSUB by examining the C<items> variable which the
+B<xsubpp> compiler supplies for all XSUBs.  By using this mechanism one can
+create an XSUB which accepts a list of parameters of unknown length.
+
+The I<host> parameter for the rpcb_gettime() XSUB can be
+optional so the ellipsis can be used to indicate that the
+XSUB will take a variable number of parameters.  Perl should
+be able to call this XSUB with either of the following statements.
+
+     $status = rpcb_gettime( $timep, $host );
+
+     $status = rpcb_gettime( $timep );
+
+The XS code, with ellipsis, follows.
+
+     bool_t
+     rpcb_gettime(timep, ...)
+          time_t timep = NO_INIT
+	PREINIT:
+          char *host = "localhost";
+        CODE:
+	  if( items > 1 )
+	       host = (char *)SvPV_nolen(ST(1));
+	  RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+=head2 The C_ARGS: Keyword
+
+The C_ARGS: keyword allows creating of XSUBS which have different
+calling sequence from Perl than from C, without a need to write
+CODE: or PPCODE: section.  The contents of the C_ARGS: paragraph is
+put as the argument to the called C function without any change.
+
+For example, suppose that a C function is declared as
+
+    symbolic nth_derivative(int n, symbolic function, int flags);
+
+and that the default flags are kept in a global C variable
+C<default_flags>.  Suppose that you want to create an interface which
+is called as
+
+    $second_deriv = $function->nth_derivative(2);
+
+To do this, declare the XSUB as
+
+    symbolic
+    nth_derivative(function, n)
+	symbolic	function
+	int		n
+      C_ARGS:
+	n, function, default_flags
+
+=head2 The PPCODE: Keyword
+
+The PPCODE: keyword is an alternate form of the CODE: keyword and is used
+to tell the B<xsubpp> compiler that the programmer is supplying the code to
+control the argument stack for the XSUBs return values.  Occasionally one
+will want an XSUB to return a list of values rather than a single value.
+In these cases one must use PPCODE: and then explicitly push the list of
+values on the stack.  The PPCODE: and CODE:  keywords should not be used
+together within the same XSUB.
+
+The actual difference between PPCODE: and CODE: sections is in the
+initialization of C<SP> macro (which stands for the I<current> Perl
+stack pointer), and in the handling of data on the stack when returning
+from an XSUB.  In CODE: sections SP preserves the value which was on
+entry to the XSUB: SP is on the function pointer (which follows the
+last parameter).  In PPCODE: sections SP is moved backward to the
+beginning of the parameter list, which allows C<PUSH*()> macros
+to place output values in the place Perl expects them to be when
+the XSUB returns back to Perl.
+
+The generated trailer for a CODE: section ensures that the number of return
+values Perl will see is either 0 or 1 (depending on the C<void>ness of the
+return value of the C function, and heuristics mentioned in
+L<"The RETVAL Variable">).  The trailer generated for a PPCODE: section
+is based on the number of return values and on the number of times
+C<SP> was updated by C<[X]PUSH*()> macros.
+
+Note that macros C<ST(i)>, C<XST_m*()> and C<XSRETURN*()> work equally
+well in CODE: sections and PPCODE: sections.
+
+The following XSUB will call the C rpcb_gettime() function
+and will return its two output values, timep and status, to
+Perl as a single list.
+
+     void
+     rpcb_gettime(host)
+          char *host
+	PREINIT:
+          time_t  timep;
+          bool_t  status;
+        PPCODE:
+          status = rpcb_gettime( host, &timep );
+          EXTEND(SP, 2);
+          PUSHs(sv_2mortal(newSViv(status)));
+          PUSHs(sv_2mortal(newSViv(timep)));
+
+Notice that the programmer must supply the C code necessary
+to have the real rpcb_gettime() function called and to have
+the return values properly placed on the argument stack.
+
+The C<void> return type for this function tells the B<xsubpp> compiler that
+the RETVAL variable is not needed or used and that it should not be created.
+In most scenarios the void return type should be used with the PPCODE:
+directive.
+
+The EXTEND() macro is used to make room on the argument
+stack for 2 return values.  The PPCODE: directive causes the
+B<xsubpp> compiler to create a stack pointer available as C<SP>, and it
+is this pointer which is being used in the EXTEND() macro.
+The values are then pushed onto the stack with the PUSHs()
+macro.
+
+Now the rpcb_gettime() function can be used from Perl with
+the following statement.
+
+     ($status, $timep) = rpcb_gettime("localhost");
+
+When handling output parameters with a PPCODE section, be sure to handle
+'set' magic properly.  See L<perlguts> for details about 'set' magic.
+
+=head2 Returning Undef And Empty Lists
+
+Occasionally the programmer will want to return simply
+C<undef> or an empty list if a function fails rather than a
+separate status value.  The rpcb_gettime() function offers
+just this situation.  If the function succeeds we would like
+to have it return the time and if it fails we would like to
+have undef returned.  In the following Perl code the value
+of $timep will either be undef or it will be a valid time.
+
+     $timep = rpcb_gettime( "localhost" );
+
+The following XSUB uses the C<SV *> return type as a mnemonic only,
+and uses a CODE: block to indicate to the compiler
+that the programmer has supplied all the necessary code.  The
+sv_newmortal() call will initialize the return value to undef, making that
+the default return value.
+
+     SV *
+     rpcb_gettime(host)
+          char *  host
+	PREINIT:
+          time_t  timep;
+          bool_t x;
+        CODE:
+          ST(0) = sv_newmortal();
+          if( rpcb_gettime( host, &timep ) )
+               sv_setnv( ST(0), (double)timep);
+
+The next example demonstrates how one would place an explicit undef in the
+return value, should the need arise.
+
+     SV *
+     rpcb_gettime(host)
+          char *  host
+	PREINIT:
+          time_t  timep;
+          bool_t x;
+        CODE:
+          if( rpcb_gettime( host, &timep ) ){
+               ST(0) = sv_newmortal();
+               sv_setnv( ST(0), (double)timep);
+          }
+          else{
+               ST(0) = &PL_sv_undef;
+          }
+
+To return an empty list one must use a PPCODE: block and
+then not push return values on the stack.
+
+     void
+     rpcb_gettime(host)
+          char *host
+	PREINIT:
+          time_t  timep;
+        PPCODE:
+          if( rpcb_gettime( host, &timep ) )
+               PUSHs(sv_2mortal(newSViv(timep)));
+          else{
+	      /* Nothing pushed on stack, so an empty
+	       * list is implicitly returned. */
+          }
+
+Some people may be inclined to include an explicit C<return> in the above
+XSUB, rather than letting control fall through to the end.  In those
+situations C<XSRETURN_EMPTY> should be used, instead.  This will ensure that
+the XSUB stack is properly adjusted.  Consult L<perlapi> for other
+C<XSRETURN> macros.
+
+Since C<XSRETURN_*> macros can be used with CODE blocks as well, one can
+rewrite this example as:
+
+     int
+     rpcb_gettime(host)
+          char *host
+	PREINIT:
+          time_t  timep;
+        CODE:
+          RETVAL = rpcb_gettime( host, &timep );
+	  if (RETVAL == 0)
+		XSRETURN_UNDEF;
+	OUTPUT:
+	  RETVAL
+
+In fact, one can put this check into a POSTCALL: section as well.  Together
+with PREINIT: simplifications, this leads to:
+
+     int
+     rpcb_gettime(host)
+          char *host
+          time_t  timep;
+	POSTCALL:
+	  if (RETVAL == 0)
+		XSRETURN_UNDEF;
+
+=head2 The REQUIRE: Keyword
+
+The REQUIRE: keyword is used to indicate the minimum version of the
+B<xsubpp> compiler needed to compile the XS module.  An XS module which
+contains the following statement will compile with only B<xsubpp> version
+1.922 or greater:
+
+	REQUIRE: 1.922
+
+=head2 The CLEANUP: Keyword
+
+This keyword can be used when an XSUB requires special cleanup procedures
+before it terminates.  When the CLEANUP:  keyword is used it must follow
+any CODE:, PPCODE:, or OUTPUT: blocks which are present in the XSUB.  The
+code specified for the cleanup block will be added as the last statements
+in the XSUB.
+
+=head2 The POSTCALL: Keyword
+
+This keyword can be used when an XSUB requires special procedures
+executed after the C subroutine call is performed.  When the POSTCALL:
+keyword is used it must precede OUTPUT: and CLEANUP: blocks which are
+present in the XSUB.
+
+See examples in L<"The NO_OUTPUT Keyword"> and L<"Returning Undef And Empty Lists">.
+
+The POSTCALL: block does not make a lot of sense when the C subroutine
+call is supplied by user by providing either CODE: or PPCODE: section.
+
+=head2 The BOOT: Keyword
+
+The BOOT: keyword is used to add code to the extension's bootstrap
+function.  The bootstrap function is generated by the B<xsubpp> compiler and
+normally holds the statements necessary to register any XSUBs with Perl.
+With the BOOT: keyword the programmer can tell the compiler to add extra
+statements to the bootstrap function.
+
+This keyword may be used any time after the first MODULE keyword and should
+appear on a line by itself.  The first blank line after the keyword will
+terminate the code block.
+
+     BOOT:
+     # The following message will be printed when the
+     # bootstrap function executes.
+     printf("Hello from the bootstrap!\n");
+
+=head2 The VERSIONCHECK: Keyword
+
+The VERSIONCHECK: keyword corresponds to B<xsubpp>'s C<-versioncheck> and
+C<-noversioncheck> options.  This keyword overrides the command line
+options.  Version checking is enabled by default.  When version checking is
+enabled the XS module will attempt to verify that its version matches the
+version of the PM module.
+
+To enable version checking:
+
+    VERSIONCHECK: ENABLE
+
+To disable version checking:
+
+    VERSIONCHECK: DISABLE
+
+Note that if the version of the PM module is an NV (a floating point
+number), it will be stringified with a possible loss of precision
+(currently chopping to nine decimal places) so that it may not match
+the version of the XS module anymore. Quoting the $VERSION declaration
+to make it a string is recommended if long version numbers are used.
+
+=head2 The PROTOTYPES: Keyword
+
+The PROTOTYPES: keyword corresponds to B<xsubpp>'s C<-prototypes> and
+C<-noprototypes> options.  This keyword overrides the command line options.
+Prototypes are enabled by default.  When prototypes are enabled XSUBs will
+be given Perl prototypes.  This keyword may be used multiple times in an XS
+module to enable and disable prototypes for different parts of the module.
+
+To enable prototypes:
+
+    PROTOTYPES: ENABLE
+
+To disable prototypes:
+
+    PROTOTYPES: DISABLE
+
+=head2 The PROTOTYPE: Keyword
+
+This keyword is similar to the PROTOTYPES: keyword above but can be used to
+force B<xsubpp> to use a specific prototype for the XSUB.  This keyword
+overrides all other prototype options and keywords but affects only the
+current XSUB.  Consult L<perlsub/Prototypes> for information about Perl
+prototypes.
+
+    bool_t
+    rpcb_gettime(timep, ...)
+          time_t timep = NO_INIT
+	PROTOTYPE: $;$
+	PREINIT:
+          char *host = "localhost";
+        CODE:
+		  if( items > 1 )
+		       host = (char *)SvPV_nolen(ST(1));
+		  RETVAL = rpcb_gettime( host, &timep );
+        OUTPUT:
+          timep
+          RETVAL
+
+If the prototypes are enabled, you can disable it locally for a given
+XSUB as in the following example:
+
+    void
+    rpcb_gettime_noproto()
+        PROTOTYPE: DISABLE
+    ...
+
+=head2 The ALIAS: Keyword
+
+The ALIAS: keyword allows an XSUB to have two or more unique Perl names
+and to know which of those names was used when it was invoked.  The Perl
+names may be fully-qualified with package names.  Each alias is given an
+index.  The compiler will setup a variable called C<ix> which contain the
+index of the alias which was used.  When the XSUB is called with its
+declared name C<ix> will be 0.
+
+The following example will create aliases C<FOO::gettime()> and
+C<BAR::getit()> for this function.
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+	ALIAS:
+	    FOO::gettime = 1
+	    BAR::getit = 2
+	INIT:
+	  printf("# ix = %d\n", ix );
+        OUTPUT:
+          timep
+
+=head2 The OVERLOAD: Keyword
+
+Instead of writing an overloaded interface using pure Perl, you
+can also use the OVERLOAD keyword to define additional Perl names
+for your functions (like the ALIAS: keyword above).  However, the
+overloaded functions must be defined with three parameters (except
+for the nomethod() function which needs four parameters).  If any
+function has the OVERLOAD: keyword, several additional lines
+will be defined in the c file generated by xsubpp in order to
+register with the overload magic.
+
+Since blessed objects are actually stored as RV's, it is useful
+to use the typemap features to preprocess parameters and extract
+the actual SV stored within the blessed RV.  See the sample for
+T_PTROBJ_SPECIAL below.
+
+To use the OVERLOAD: keyword, create an XS function which takes
+three input parameters ( or use the c style '...' definition) like
+this:
+
+    SV *
+    cmp (lobj, robj, swap)
+    My_Module_obj    lobj
+    My_Module_obj    robj
+    IV               swap
+    OVERLOAD: cmp <=>
+    { /* function defined here */}
+
+In this case, the function will overload both of the three way
+comparison operators.  For all overload operations using non-alpha
+characters, you must type the parameter without quoting, separating
+multiple overloads with whitespace.  Note that "" (the stringify
+overload) should be entered as \"\" (i.e. escaped).
+
+=head2 The FALLBACK: Keyword
+
+In addition to the OVERLOAD keyword, if you need to control how
+Perl autogenerates missing overloaded operators, you can set the
+FALLBACK keyword in the module header section, like this:
+
+    MODULE = RPC  PACKAGE = RPC
+
+    FALLBACK: TRUE
+    ...
+
+where FALLBACK can take any of the three values TRUE, FALSE, or
+UNDEF.  If you do not set any FALLBACK value when using OVERLOAD,
+it defaults to UNDEF.  FALLBACK is not used except when one or
+more functions using OVERLOAD have been defined.  Please see
+L<overload/fallback> for more details.
+
+=head2 The INTERFACE: Keyword
+
+This keyword declares the current XSUB as a keeper of the given
+calling signature.  If some text follows this keyword, it is
+considered as a list of functions which have this signature, and
+should be attached to the current XSUB.
+
+For example, if you have 4 C functions multiply(), divide(), add(),
+subtract() all having the signature:
+
+    symbolic f(symbolic, symbolic);
+
+you can make them all to use the same XSUB using this:
+
+    symbolic
+    interface_s_ss(arg1, arg2)
+	symbolic	arg1
+	symbolic	arg2
+    INTERFACE:
+	multiply divide
+	add subtract
+
+(This is the complete XSUB code for 4 Perl functions!)  Four generated
+Perl function share names with corresponding C functions.
+
+The advantage of this approach comparing to ALIAS: keyword is that there
+is no need to code a switch statement, each Perl function (which shares
+the same XSUB) knows which C function it should call.  Additionally, one
+can attach an extra function remainder() at runtime by using
+
+    CV *mycv = newXSproto("Symbolic::remainder",
+			  XS_Symbolic_interface_s_ss, __FILE__, "$$");
+    XSINTERFACE_FUNC_SET(mycv, remainder);
+
+say, from another XSUB.  (This example supposes that there was no
+INTERFACE_MACRO: section, otherwise one needs to use something else instead of
+C<XSINTERFACE_FUNC_SET>, see the next section.)
+
+=head2 The INTERFACE_MACRO: Keyword
+
+This keyword allows one to define an INTERFACE using a different way
+to extract a function pointer from an XSUB.  The text which follows
+this keyword should give the name of macros which would extract/set a
+function pointer.  The extractor macro is given return type, C<CV*>,
+and C<XSANY.any_dptr> for this C<CV*>.  The setter macro is given cv,
+and the function pointer.
+
+The default value is C<XSINTERFACE_FUNC> and C<XSINTERFACE_FUNC_SET>.
+An INTERFACE keyword with an empty list of functions can be omitted if
+INTERFACE_MACRO keyword is used.
+
+Suppose that in the previous example functions pointers for
+multiply(), divide(), add(), subtract() are kept in a global C array
+C<fp[]> with offsets being C<multiply_off>, C<divide_off>, C<add_off>,
+C<subtract_off>.  Then one can use
+
+    #define XSINTERFACE_FUNC_BYOFFSET(ret,cv,f) \
+	((XSINTERFACE_CVT_ANON(ret))fp[CvXSUBANY(cv).any_i32])
+    #define XSINTERFACE_FUNC_BYOFFSET_set(cv,f) \
+	CvXSUBANY(cv).any_i32 = CAT2( f, _off )
+
+in C section,
+
+    symbolic
+    interface_s_ss(arg1, arg2)
+	symbolic	arg1
+	symbolic	arg2
+      INTERFACE_MACRO:
+	XSINTERFACE_FUNC_BYOFFSET
+	XSINTERFACE_FUNC_BYOFFSET_set
+      INTERFACE:
+	multiply divide
+	add subtract
+
+in XSUB section.
+
+=head2 The INCLUDE: Keyword
+
+This keyword can be used to pull other files into the XS module.  The other
+files may have XS code.  INCLUDE: can also be used to run a command to
+generate the XS code to be pulled into the module.
+
+The file F<Rpcb1.xsh> contains our C<rpcb_gettime()> function:
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+        OUTPUT:
+          timep
+
+The XS module can use INCLUDE: to pull that file into it.
+
+    INCLUDE: Rpcb1.xsh
+
+If the parameters to the INCLUDE: keyword are followed by a pipe (C<|>) then
+the compiler will interpret the parameters as a command. This feature is
+mildly deprecated in favour of the C<INCLUDE_COMMAND:> directive, as documented
+below.
+
+    INCLUDE: cat Rpcb1.xsh |
+
+Do not use this to run perl: C<INCLUDE: perl |> will run the perl that
+happens to be the first in your path and not necessarily the same perl that is
+used to run C<xsubpp>. See L<"The INCLUDE_COMMAND: Keyword">.
+
+=head2 The INCLUDE_COMMAND: Keyword
+
+Runs the supplied command and includes its output into the current XS
+document. C<INCLUDE_COMMAND> assigns special meaning to the C<$^X> token
+in that it runs the same perl interpreter that is running C<xsubpp>:
+
+    INCLUDE_COMMAND: cat Rpcb1.xsh
+
+    INCLUDE_COMMAND: $^X -e ...
+
+=head2 The CASE: Keyword
+
+The CASE: keyword allows an XSUB to have multiple distinct parts with each
+part acting as a virtual XSUB.  CASE: is greedy and if it is used then all
+other XS keywords must be contained within a CASE:.  This means nothing may
+precede the first CASE: in the XSUB and anything following the last CASE: is
+included in that case.
+
+A CASE: might switch via a parameter of the XSUB, via the C<ix> ALIAS:
+variable (see L<"The ALIAS: Keyword">), or maybe via the C<items> variable
+(see L<"Variable-length Parameter Lists">).  The last CASE: becomes the
+B<default> case if it is not associated with a conditional.  The following
+example shows CASE switched via C<ix> with a function C<rpcb_gettime()>
+having an alias C<x_gettime()>.  When the function is called as
+C<rpcb_gettime()> its parameters are the usual C<(char *host, time_t *timep)>,
+but when the function is called as C<x_gettime()> its parameters are
+reversed, C<(time_t *timep, char *host)>.
+
+    long
+    rpcb_gettime(a,b)
+      CASE: ix == 1
+	ALIAS:
+	  x_gettime = 1
+	INPUT:
+	  # 'a' is timep, 'b' is host
+          char *b
+          time_t a = NO_INIT
+        CODE:
+               RETVAL = rpcb_gettime( b, &a );
+        OUTPUT:
+          a
+          RETVAL
+      CASE:
+	  # 'a' is host, 'b' is timep
+          char *a
+          time_t &b = NO_INIT
+        OUTPUT:
+          b
+          RETVAL
+
+That function can be called with either of the following statements.  Note
+the different argument lists.
+
+	$status = rpcb_gettime( $host, $timep );
+
+	$status = x_gettime( $timep, $host );
+
+=head2 The EXPORT_XSUB_SYMBOLS: Keyword
+
+The EXPORT_XSUB_SYMBOLS: keyword is likely something you will never need.
+In perl versions earlier than 5.16.0, this keyword does nothing. Starting
+with 5.16, XSUB symbols are no longer exported by default. That is, they
+are C<static> functions. If you include
+
+  EXPORT_XSUB_SYMBOLS: ENABLE
+
+in your XS code, the XSUBs following this line will not be declared C<static>.
+You can later disable this with
+
+  EXPORT_XSUB_SYMBOLS: DISABLE
+
+which, again, is the default that you should probably never change.
+You cannot use this keyword on versions of perl before 5.16 to make
+XSUBs C<static>.
+
+=head2 The & Unary Operator
+
+The C<&> unary operator in the INPUT: section is used to tell B<xsubpp>
+that it should convert a Perl value to/from C using the C type to the left
+of C<&>, but provide a pointer to this value when the C function is called.
+
+This is useful to avoid a CODE: block for a C function which takes a parameter
+by reference.  Typically, the parameter should be not a pointer type (an
+C<int> or C<long> but not an C<int*> or C<long*>).
+
+The following XSUB will generate incorrect C code.  The B<xsubpp> compiler will
+turn this into code which calls C<rpcb_gettime()> with parameters C<(char
+*host, time_t timep)>, but the real C<rpcb_gettime()> wants the C<timep>
+parameter to be of type C<time_t*> rather than C<time_t>.
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+          time_t timep
+        OUTPUT:
+          timep
+
+That problem is corrected by using the C<&> operator.  The B<xsubpp> compiler
+will now turn this into code which calls C<rpcb_gettime()> correctly with
+parameters C<(char *host, time_t *timep)>.  It does this by carrying the
+C<&> through, so the function call looks like C<rpcb_gettime(host, &timep)>.
+
+    bool_t
+    rpcb_gettime(host,timep)
+          char *host
+          time_t &timep
+        OUTPUT:
+          timep
+
+=head2 Inserting POD, Comments and C Preprocessor Directives
+
+C preprocessor directives are allowed within BOOT:, PREINIT: INIT:, CODE:,
+PPCODE:, POSTCALL:, and CLEANUP: blocks, as well as outside the functions.
+Comments are allowed anywhere after the MODULE keyword.  The compiler will
+pass the preprocessor directives through untouched and will remove the
+commented lines. POD documentation is allowed at any point, both in the
+C and XS language sections. POD must be terminated with a C<=cut> command;
+C<xsubpp> will exit with an error if it does not. It is very unlikely that
+human generated C code will be mistaken for POD, as most indenting styles
+result in whitespace in front of any line starting with C<=>. Machine
+generated XS files may fall into this trap unless care is taken to
+ensure that a space breaks the sequence "\n=".
+
+Comments can be added to XSUBs by placing a C<#> as the first
+non-whitespace of a line.  Care should be taken to avoid making the
+comment look like a C preprocessor directive, lest it be interpreted as
+such.  The simplest way to prevent this is to put whitespace in front of
+the C<#>.
+
+If you use preprocessor directives to choose one of two
+versions of a function, use
+
+    #if ... version1
+    #else /* ... version2  */
+    #endif
+
+and not
+
+    #if ... version1
+    #endif
+    #if ... version2
+    #endif
+
+because otherwise B<xsubpp> will believe that you made a duplicate
+definition of the function.  Also, put a blank line before the
+#else/#endif so it will not be seen as part of the function body.
+
+=head2 Using XS With C++
+
+If an XSUB name contains C<::>, it is considered to be a C++ method.
+The generated Perl function will assume that
+its first argument is an object pointer.  The object pointer
+will be stored in a variable called THIS.  The object should
+have been created by C++ with the new() function and should
+be blessed by Perl with the sv_setref_pv() macro.  The
+blessing of the object by Perl can be handled by a typemap.  An example
+typemap is shown at the end of this section.
+
+If the return type of the XSUB includes C<static>, the method is considered
+to be a static method.  It will call the C++
+function using the class::method() syntax.  If the method is not static
+the function will be called using the THIS-E<gt>method() syntax.
+
+The next examples will use the following C++ class.
+
+     class color {
+          public:
+          color();
+          ~color();
+          int blue();
+          void set_blue( int );
+
+          private:
+          int c_blue;
+     };
+
+The XSUBs for the blue() and set_blue() methods are defined with the class
+name but the parameter for the object (THIS, or "self") is implicit and is
+not listed.
+
+     int
+     color::blue()
+
+     void
+     color::set_blue( val )
+          int val
+
+Both Perl functions will expect an object as the first parameter.  In the
+generated C++ code the object is called C<THIS>, and the method call will
+be performed on this object.  So in the C++ code the blue() and set_blue()
+methods will be called as this:
+
+     RETVAL = THIS->blue();
+
+     THIS->set_blue( val );
+
+You could also write a single get/set method using an optional argument:
+
+     int
+     color::blue( val = NO_INIT )
+         int val
+         PROTOTYPE $;$
+         CODE:
+             if (items > 1)
+                 THIS->set_blue( val );
+             RETVAL = THIS->blue();
+         OUTPUT:
+             RETVAL
+
+If the function's name is B<DESTROY> then the C++ C<delete> function will be
+called and C<THIS> will be given as its parameter.  The generated C++ code for
+
+     void
+     color::DESTROY()
+
+will look like this:
+
+     color *THIS = ...;	// Initialized as in typemap
+
+     delete THIS;
+
+If the function's name is B<new> then the C++ C<new> function will be called
+to create a dynamic C++ object.  The XSUB will expect the class name, which
+will be kept in a variable called C<CLASS>, to be given as the first
+argument.
+
+     color *
+     color::new()
+
+The generated C++ code will call C<new>.
+
+     RETVAL = new color();
+
+The following is an example of a typemap that could be used for this C++
+example.
+
+    TYPEMAP
+    color *		O_OBJECT
+
+    OUTPUT
+    # The Perl object is blessed into 'CLASS', which should be a
+    # char* having the name of the package for the blessing.
+    O_OBJECT
+	sv_setref_pv( $arg, CLASS, (void*)$var );
+
+    INPUT
+    O_OBJECT
+	if( sv_isobject($arg) && (SvTYPE(SvRV($arg)) == SVt_PVMG) )
+		$var = ($type)SvIV((SV*)SvRV( $arg ));
+	else{
+		warn( \"${Package}::$func_name() -- $var is not a blessed SV reference\" );
+		XSRETURN_UNDEF;
+	}
+
+=head2 Interface Strategy
+
+When designing an interface between Perl and a C library a straight
+translation from C to XS (such as created by C<h2xs -x>) is often sufficient.
+However, sometimes the interface will look
+very C-like and occasionally nonintuitive, especially when the C function
+modifies one of its parameters, or returns failure inband (as in "negative
+return values mean failure").  In cases where the programmer wishes to
+create a more Perl-like interface the following strategy may help to
+identify the more critical parts of the interface.
+
+Identify the C functions with input/output or output parameters.  The XSUBs for
+these functions may be able to return lists to Perl.
+
+Identify the C functions which use some inband info as an indication
+of failure.  They may be
+candidates to return undef or an empty list in case of failure.  If the
+failure may be detected without a call to the C function, you may want to use
+an INIT: section to report the failure.  For failures detectable after the C
+function returns one may want to use a POSTCALL: section to process the
+failure.  In more complicated cases use CODE: or PPCODE: sections.
+
+If many functions use the same failure indication based on the return value,
+you may want to create a special typedef to handle this situation.  Put
+
+  typedef int negative_is_failure;
+
+near the beginning of XS file, and create an OUTPUT typemap entry
+for C<negative_is_failure> which converts negative values to C<undef>, or
+maybe croak()s.  After this the return value of type C<negative_is_failure>
+will create more Perl-like interface.
+
+Identify which values are used by only the C and XSUB functions
+themselves, say, when a parameter to a function should be a contents of a
+global variable.  If Perl does not need to access the contents of the value
+then it may not be necessary to provide a translation for that value
+from C to Perl.
+
+Identify the pointers in the C function parameter lists and return
+values.  Some pointers may be used to implement input/output or
+output parameters, they can be handled in XS with the C<&> unary operator,
+and, possibly, using the NO_INIT keyword.
+Some others will require handling of types like C<int *>, and one needs
+to decide what a useful Perl translation will do in such a case.  When
+the semantic is clear, it is advisable to put the translation into a typemap
+file.
+
+Identify the structures used by the C functions.  In many
+cases it may be helpful to use the T_PTROBJ typemap for
+these structures so they can be manipulated by Perl as
+blessed objects.  (This is handled automatically by C<h2xs -x>.)
+
+If the same C type is used in several different contexts which require
+different translations, C<typedef> several new types mapped to this C type,
+and create separate F<typemap> entries for these new types.  Use these
+types in declarations of return type and parameters to XSUBs.
+
+=head2 Perl Objects And C Structures
+
+When dealing with C structures one should select either
+B<T_PTROBJ> or B<T_PTRREF> for the XS type.  Both types are
+designed to handle pointers to complex objects.  The
+T_PTRREF type will allow the Perl object to be unblessed
+while the T_PTROBJ type requires that the object be blessed.
+By using T_PTROBJ one can achieve a form of type-checking
+because the XSUB will attempt to verify that the Perl object
+is of the expected type.
+
+The following XS code shows the getnetconfigent() function which is used
+with ONC+ TIRPC.  The getnetconfigent() function will return a pointer to a
+C structure and has the C prototype shown below.  The example will
+demonstrate how the C pointer will become a Perl reference.  Perl will
+consider this reference to be a pointer to a blessed object and will
+attempt to call a destructor for the object.  A destructor will be
+provided in the XS source to free the memory used by getnetconfigent().
+Destructors in XS can be created by specifying an XSUB function whose name
+ends with the word B<DESTROY>.  XS destructors can be used to free memory
+which may have been malloc'd by another XSUB.
+
+     struct netconfig *getnetconfigent(const char *netid);
+
+A C<typedef> will be created for C<struct netconfig>.  The Perl
+object will be blessed in a class matching the name of the C
+type, with the tag C<Ptr> appended, and the name should not
+have embedded spaces if it will be a Perl package name.  The
+destructor will be placed in a class corresponding to the
+class of the object and the PREFIX keyword will be used to
+trim the name to the word DESTROY as Perl will expect.
+
+     typedef struct netconfig Netconfig;
+
+     MODULE = RPC  PACKAGE = RPC
+
+     Netconfig *
+     getnetconfigent(netid)
+          char *netid
+
+     MODULE = RPC  PACKAGE = NetconfigPtr  PREFIX = rpcb_
+
+     void
+     rpcb_DESTROY(netconf)
+          Netconfig *netconf
+        CODE:
+          printf("Now in NetconfigPtr::DESTROY\n");
+          free( netconf );
+
+This example requires the following typemap entry.  Consult
+L<perlxstypemap> for more information about adding new typemaps
+for an extension.
+
+     TYPEMAP
+     Netconfig *  T_PTROBJ
+
+This example will be used with the following Perl statements.
+
+     use RPC;
+     $netconf = getnetconfigent("udp");
+
+When Perl destroys the object referenced by $netconf it will send the
+object to the supplied XSUB DESTROY function.  Perl cannot determine, and
+does not care, that this object is a C struct and not a Perl object.  In
+this sense, there is no difference between the object created by the
+getnetconfigent() XSUB and an object created by a normal Perl subroutine.
+
+=head2 Safely Storing Static Data in XS
+
+Starting with Perl 5.8, a macro framework has been defined to allow
+static data to be safely stored in XS modules that will be accessed from
+a multi-threaded Perl.
+
+Although primarily designed for use with multi-threaded Perl, the macros
+have been designed so that they will work with non-threaded Perl as well.
+
+It is therefore strongly recommended that these macros be used by all
+XS modules that make use of static data.
+
+The easiest way to get a template set of macros to use is by specifying
+the C<-g> (C<--global>) option with h2xs (see L<h2xs>).
+
+Below is an example module that makes use of the macros.
+
+    #include "EXTERN.h"
+    #include "perl.h"
+    #include "XSUB.h"
+
+    /* Global Data */
+
+    #define MY_CXT_KEY "BlindMice::_guts" XS_VERSION
+
+    typedef struct {
+        int count;
+        char name[3][100];
+    } my_cxt_t;
+
+    START_MY_CXT
+
+    MODULE = BlindMice           PACKAGE = BlindMice
+
+    BOOT:
+    {
+        MY_CXT_INIT;
+        MY_CXT.count = 0;
+        strcpy(MY_CXT.name[0], "None");
+        strcpy(MY_CXT.name[1], "None");
+        strcpy(MY_CXT.name[2], "None");
+    }
+
+    int
+    newMouse(char * name)
+        char * name;
+        PREINIT:
+          dMY_CXT;
+        CODE:
+          if (MY_CXT.count >= 3) {
+              warn("Already have 3 blind mice");
+              RETVAL = 0;
+          }
+          else {
+              RETVAL = ++ MY_CXT.count;
+              strcpy(MY_CXT.name[MY_CXT.count - 1], name);
+          }
+
+    char *
+    get_mouse_name(index)
+      int index
+      CODE:
+        dMY_CXT;
+        RETVAL = MY_CXT.lives ++;
+        if (index > MY_CXT.count)
+          croak("There are only 3 blind mice.");
+        else
+          RETVAL = newSVpv(MY_CXT.name[index - 1]);
+
+    void
+    CLONE(...)
+	CODE:
+	MY_CXT_CLONE;
+
+B<REFERENCE>
+
+=over 5
+
+=item MY_CXT_KEY
+
+This macro is used to define a unique key to refer to the static data
+for an XS module. The suggested naming scheme, as used by h2xs, is to
+use a string that consists of the module name, the string "::_guts"
+and the module version number.
+
+    #define MY_CXT_KEY "MyModule::_guts" XS_VERSION
+
+=item typedef my_cxt_t
+
+This struct typedef I<must> always be called C<my_cxt_t>. The other
+C<CXT*> macros assume the existence of the C<my_cxt_t> typedef name.
+
+Declare a typedef named C<my_cxt_t> that is a structure that contains
+all the data that needs to be interpreter-local.
+
+    typedef struct {
+        int some_value;
+    } my_cxt_t;
+
+=item START_MY_CXT
+
+Always place the START_MY_CXT macro directly after the declaration
+of C<my_cxt_t>.
+
+=item MY_CXT_INIT
+
+The MY_CXT_INIT macro initialises storage for the C<my_cxt_t> struct.
+
+It I<must> be called exactly once, typically in a BOOT: section. If you
+are maintaining multiple interpreters, it should be called once in each
+interpreter instance, except for interpreters cloned from existing ones.
+(But see L</MY_CXT_CLONE> below.)
+
+=item dMY_CXT
+
+Use the dMY_CXT macro (a declaration) in all the functions that access
+MY_CXT.
+
+=item MY_CXT
+
+Use the MY_CXT macro to access members of the C<my_cxt_t> struct. For
+example, if C<my_cxt_t> is
+
+    typedef struct {
+        int index;
+    } my_cxt_t;
+
+then use this to access the C<index> member
+
+    dMY_CXT;
+    MY_CXT.index = 2;
+
+=item aMY_CXT/pMY_CXT
+
+C<dMY_CXT> may be quite expensive to calculate, and to avoid the overhead
+of invoking it in each function it is possible to pass the declaration
+onto other functions using the C<aMY_CXT>/C<pMY_CXT> macros, eg
+
+    void sub1() {
+	dMY_CXT;
+	MY_CXT.index = 1;
+	sub2(aMY_CXT);
+    }
+
+    void sub2(pMY_CXT) {
+	MY_CXT.index = 2;
+    }
+
+Analogously to C<pTHX>, there are equivalent forms for when the macro is the
+first or last in multiple arguments, where an underscore represents a
+comma, i.e.  C<_aMY_CXT>, C<aMY_CXT_>, C<_pMY_CXT> and C<pMY_CXT_>.
+
+=item MY_CXT_CLONE
+
+By default, when a new interpreter is created as a copy of an existing one
+(eg via C<< threads->create() >>), both interpreters share the same physical
+my_cxt_t structure. Calling C<MY_CXT_CLONE> (typically via the package's
+C<CLONE()> function), causes a byte-for-byte copy of the structure to be
+taken, and any future dMY_CXT will cause the copy to be accessed instead.
+
+=item MY_CXT_INIT_INTERP(my_perl)
+
+=item dMY_CXT_INTERP(my_perl)
+
+These are versions of the macros which take an explicit interpreter as an
+argument.
+
+=back
+
+Note that these macros will only work together within the I<same> source
+file; that is, a dMY_CTX in one source file will access a different structure
+than a dMY_CTX in another source file.
+
+=head2 Thread-aware system interfaces
+
+Starting from Perl 5.8, in C/C++ level Perl knows how to wrap
+system/library interfaces that have thread-aware versions
+(e.g. getpwent_r()) into frontend macros (e.g. getpwent()) that
+correctly handle the multithreaded interaction with the Perl
+interpreter.  This will happen transparently, the only thing
+you need to do is to instantiate a Perl interpreter.
+
+This wrapping happens always when compiling Perl core source
+(PERL_CORE is defined) or the Perl core extensions (PERL_EXT is
+defined).  When compiling XS code outside of Perl core the wrapping
+does not take place.  Note, however, that intermixing the _r-forms
+(as Perl compiled for multithreaded operation will do) and the _r-less
+forms is neither well-defined (inconsistent results, data corruption,
+or even crashes become more likely), nor is it very portable.
+
+=head1 EXAMPLES
+
+File C<RPC.xs>: Interface to some ONC+ RPC bind library functions.
+
+     #include "EXTERN.h"
+     #include "perl.h"
+     #include "XSUB.h"
+
+     #include <rpc/rpc.h>
+
+     typedef struct netconfig Netconfig;
+
+     MODULE = RPC  PACKAGE = RPC
+
+     SV *
+     rpcb_gettime(host="localhost")
+          char *host
+	PREINIT:
+          time_t  timep;
+        CODE:
+          ST(0) = sv_newmortal();
+          if( rpcb_gettime( host, &timep ) )
+               sv_setnv( ST(0), (double)timep );
+
+     Netconfig *
+     getnetconfigent(netid="udp")
+          char *netid
+
+     MODULE = RPC  PACKAGE = NetconfigPtr  PREFIX = rpcb_
+
+     void
+     rpcb_DESTROY(netconf)
+          Netconfig *netconf
+        CODE:
+          printf("NetconfigPtr::DESTROY\n");
+          free( netconf );
+
+File C<typemap>: Custom typemap for RPC.xs. (cf. L<perlxstypemap>)
+
+     TYPEMAP
+     Netconfig *  T_PTROBJ
+
+File C<RPC.pm>: Perl module for the RPC extension.
+
+     package RPC;
+
+     require Exporter;
+     require DynaLoader;
+     @ISA = qw(Exporter DynaLoader);
+     @EXPORT = qw(rpcb_gettime getnetconfigent);
+
+     bootstrap RPC;
+     1;
+
+File C<rpctest.pl>: Perl test program for the RPC extension.
+
+     use RPC;
+
+     $netconf = getnetconfigent();
+     $a = rpcb_gettime();
+     print "time = $a\n";
+     print "netconf = $netconf\n";
+
+     $netconf = getnetconfigent("tcp");
+     $a = rpcb_gettime("poplar");
+     print "time = $a\n";
+     print "netconf = $netconf\n";
+
+
+=head1 XS VERSION
+
+This document covers features supported by C<ExtUtils::ParseXS>
+(also known as C<xsubpp>) 3.13_01.
+
+=head1 AUTHOR
+
+Originally written by Dean Roehrich <F<roehrich at cray.com>>.
+
+Maintained since 1996 by The Perl Porters <F<perlbug at perl.org>>.

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstut.pod
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstut.pod	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstut.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1379 @@
+=head1 NAME
+
+perlxstut - Tutorial for writing XSUBs
+
+=head1 DESCRIPTION
+
+This tutorial will educate the reader on the steps involved in creating
+a Perl extension.  The reader is assumed to have access to L<perlguts>,
+L<perlapi> and L<perlxs>.
+
+This tutorial starts with very simple examples and becomes more complex,
+with each new example adding new features.  Certain concepts may not be
+completely explained until later in the tutorial in order to slowly ease
+the reader into building extensions.
+
+This tutorial was written from a Unix point of view.  Where I know them
+to be otherwise different for other platforms (e.g. Win32), I will list
+them.  If you find something that was missed, please let me know.
+
+=head1 SPECIAL NOTES
+
+=head2 make
+
+This tutorial assumes that the make program that Perl is configured to
+use is called C<make>.  Instead of running "make" in the examples that
+follow, you may have to substitute whatever make program Perl has been
+configured to use.  Running B<perl -V:make> should tell you what it is.
+
+=head2 Version caveat
+
+When writing a Perl extension for general consumption, one should expect that
+the extension will be used with versions of Perl different from the
+version available on your machine.  Since you are reading this document,
+the version of Perl on your machine is probably 5.005 or later, but the users
+of your extension may have more ancient versions.
+
+To understand what kinds of incompatibilities one may expect, and in the rare
+case that the version of Perl on your machine is older than this document,
+see the section on "Troubleshooting these Examples" for more information.
+
+If your extension uses some features of Perl which are not available on older
+releases of Perl, your users would appreciate an early meaningful warning.
+You would probably put this information into the F<README> file, but nowadays
+installation of extensions may be performed automatically, guided by F<CPAN.pm>
+module or other tools.
+
+In MakeMaker-based installations, F<Makefile.PL> provides the earliest
+opportunity to perform version checks.  One can put something like this
+in F<Makefile.PL> for this purpose:
+
+    eval { require 5.007 }
+        or die <<EOD;
+    ############
+    ### This module uses frobnication framework which is not available before
+    ### version 5.007 of Perl.  Upgrade your Perl before installing Kara::Mba.
+    ############
+    EOD
+
+=head2 Dynamic Loading versus Static Loading
+
+It is commonly thought that if a system does not have the capability to
+dynamically load a library, you cannot build XSUBs.  This is incorrect.
+You I<can> build them, but you must link the XSUBs subroutines with the
+rest of Perl, creating a new executable.  This situation is similar to
+Perl 4.
+
+This tutorial can still be used on such a system.  The XSUB build mechanism
+will check the system and build a dynamically-loadable library if possible,
+or else a static library and then, optionally, a new statically-linked
+executable with that static library linked in.
+
+Should you wish to build a statically-linked executable on a system which
+can dynamically load libraries, you may, in all the following examples,
+where the command "C<make>" with no arguments is executed, run the command
+"C<make perl>" instead.
+
+If you have generated such a statically-linked executable by choice, then
+instead of saying "C<make test>", you should say "C<make test_static>".
+On systems that cannot build dynamically-loadable libraries at all, simply
+saying "C<make test>" is sufficient.
+
+=head1 TUTORIAL
+
+Now let's go on with the show!
+
+=head2 EXAMPLE 1
+
+Our first extension will be very simple.  When we call the routine in the
+extension, it will print out a well-known message and return.
+
+Run "C<h2xs -A -n Mytest>".  This creates a directory named Mytest,
+possibly under ext/ if that directory exists in the current working
+directory.  Several files will be created under the Mytest dir, including
+MANIFEST, Makefile.PL, lib/Mytest.pm, Mytest.xs, t/Mytest.t, and Changes.
+
+The MANIFEST file contains the names of all the files just created in the
+Mytest directory.
+
+The file Makefile.PL should look something like this:
+
+    use ExtUtils::MakeMaker;
+    # See lib/ExtUtils/MakeMaker.pm for details of how to influence
+    # the contents of the Makefile that is written.
+    WriteMakefile(
+	NAME         => 'Mytest',
+	VERSION_FROM => 'Mytest.pm', # finds $VERSION
+	LIBS         => [''],   # e.g., '-lm'
+	DEFINE       => '',     # e.g., '-DHAVE_SOMETHING'
+	INC          => '',     # e.g., '-I/usr/include/other'
+    );
+
+The file Mytest.pm should start with something like this:
+
+    package Mytest;
+
+    use 5.008008;
+    use strict;
+    use warnings;
+
+    require Exporter;
+
+    our @ISA = qw(Exporter);
+    our %EXPORT_TAGS = ( 'all' => [ qw(
+
+    ) ] );
+
+    our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
+
+    our @EXPORT = qw(
+
+    );
+
+    our $VERSION = '0.01';
+
+    require XSLoader;
+    XSLoader::load('Mytest', $VERSION);
+
+    # Preloaded methods go here.
+
+    1;
+    __END__
+    # Below is the stub of documentation for your module. You better edit it!
+
+The rest of the .pm file contains sample code for providing documentation for
+the extension.
+
+Finally, the Mytest.xs file should look something like this:
+
+    #include "EXTERN.h"
+    #include "perl.h"
+    #include "XSUB.h"
+
+    #include "ppport.h"
+
+    MODULE = Mytest		PACKAGE = Mytest
+
+Let's edit the .xs file by adding this to the end of the file:
+
+    void
+    hello()
+	CODE:
+	    printf("Hello, world!\n");
+
+It is okay for the lines starting at the "CODE:" line to not be indented.
+However, for readability purposes, it is suggested that you indent CODE:
+one level and the lines following one more level.
+
+Now we'll run "C<perl Makefile.PL>".  This will create a real Makefile,
+which make needs.  Its output looks something like:
+
+    % perl Makefile.PL
+    Checking if your kit is complete...
+    Looks good
+    Writing Makefile for Mytest
+    %
+
+Now, running make will produce output that looks something like this (some
+long lines have been shortened for clarity and some extraneous lines have
+been deleted):
+
+    % make
+    cp lib/Mytest.pm blib/lib/Mytest.pm
+    perl xsubpp  -typemap typemap  Mytest.xs > Mytest.xsc && mv Mytest.xsc Mytest.c
+    Please specify prototyping behavior for Mytest.xs (see perlxs manual)
+    cc -c     Mytest.c
+    Running Mkbootstrap for Mytest ()
+    chmod 644 Mytest.bs
+    rm -f blib/arch/auto/Mytest/Mytest.so
+    cc  -shared -L/usr/local/lib Mytest.o  -o blib/arch/auto/Mytest/Mytest.so   \
+                \
+
+    chmod 755 blib/arch/auto/Mytest/Mytest.so
+    cp Mytest.bs blib/arch/auto/Mytest/Mytest.bs
+    chmod 644 blib/arch/auto/Mytest/Mytest.bs
+    Manifying blib/man3/Mytest.3pm
+    %
+
+You can safely ignore the line about "prototyping behavior" - it is
+explained in L<perlxs/"The PROTOTYPES: Keyword">.
+
+Perl has its own special way of easily writing test scripts, but for this
+example only, we'll create our own test script.  Create a file called hello
+that looks like this:
+
+    #! /opt/perl5/bin/perl
+
+    use ExtUtils::testlib;
+
+    use Mytest;
+
+    Mytest::hello();
+
+Now we make the script executable (C<chmod +x hello>), run the script
+and we should see the following output:
+
+    % ./hello
+    Hello, world!
+    %
+
+=head2 EXAMPLE 2
+
+Now let's add to our extension a subroutine that will take a single numeric
+argument as input and return 1 if the number is even or 0 if the number
+is odd.
+
+Add the following to the end of Mytest.xs:
+
+    int
+    is_even(input)
+	    int input
+	CODE:
+	    RETVAL = (input % 2 == 0);
+	OUTPUT:
+	    RETVAL
+
+There does not need to be whitespace at the start of the "C<int input>"
+line, but it is useful for improving readability.  Placing a semi-colon at
+the end of that line is also optional.  Any amount and kind of whitespace
+may be placed between the "C<int>" and "C<input>".
+
+Now re-run make to rebuild our new shared library.
+
+Now perform the same steps as before, generating a Makefile from the
+Makefile.PL file, and running make.
+
+In order to test that our extension works, we now need to look at the
+file Mytest.t.  This file is set up to imitate the same kind of testing
+structure that Perl itself has.  Within the test script, you perform a
+number of tests to confirm the behavior of the extension, printing "ok"
+when the test is correct, "not ok" when it is not.
+
+    use Test::More tests => 4;
+    BEGIN { use_ok('Mytest') };
+
+    #########################
+
+    # Insert your test code below, the Test::More module is use()ed here so read
+    # its man page ( perldoc Test::More ) for help writing this test script.
+
+    is(&Mytest::is_even(0), 1);
+    is(&Mytest::is_even(1), 0);
+    is(&Mytest::is_even(2), 1);
+
+We will be calling the test script through the command "C<make test>".  You
+should see output that looks something like this:
+
+    %make test
+    PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
+    t/Mytest....ok
+    All tests successful.
+    Files=1, Tests=4,  0 wallclock secs ( 0.03 cusr +  0.00 csys =  0.03 CPU)
+    %
+
+=head2 What has gone on?
+
+The program h2xs is the starting point for creating extensions.  In later
+examples we'll see how we can use h2xs to read header files and generate
+templates to connect to C routines.
+
+h2xs creates a number of files in the extension directory.  The file
+Makefile.PL is a perl script which will generate a true Makefile to build
+the extension.  We'll take a closer look at it later.
+
+The .pm and .xs files contain the meat of the extension.  The .xs file holds
+the C routines that make up the extension.  The .pm file contains routines
+that tell Perl how to load your extension.
+
+Generating the Makefile and running C<make> created a directory called blib
+(which stands for "build library") in the current working directory.  This
+directory will contain the shared library that we will build.  Once we have
+tested it, we can install it into its final location.
+
+Invoking the test script via "C<make test>" did something very important.
+It invoked perl with all those C<-I> arguments so that it could find the
+various files that are part of the extension.  It is I<very> important that
+while you are still testing extensions that you use "C<make test>".  If you
+try to run the test script all by itself, you will get a fatal error.
+Another reason it is important to use "C<make test>" to run your test
+script is that if you are testing an upgrade to an already-existing version,
+using "C<make test>" ensures that you will test your new extension, not the
+already-existing version.
+
+When Perl sees a C<use extension;>, it searches for a file with the same name
+as the C<use>'d extension that has a .pm suffix.  If that file cannot be found,
+Perl dies with a fatal error.  The default search path is contained in the
+C<@INC> array.
+
+In our case, Mytest.pm tells perl that it will need the Exporter and Dynamic
+Loader extensions.  It then sets the C<@ISA> and C<@EXPORT> arrays and the
+C<$VERSION> scalar; finally it tells perl to bootstrap the module.  Perl
+will call its dynamic loader routine (if there is one) and load the shared
+library.
+
+The two arrays C<@ISA> and C<@EXPORT> are very important.  The C<@ISA>
+array contains a list of other packages in which to search for methods (or
+subroutines) that do not exist in the current package.  This is usually
+only important for object-oriented extensions (which we will talk about
+much later), and so usually doesn't need to be modified.
+
+The C<@EXPORT> array tells Perl which of the extension's variables and
+subroutines should be placed into the calling package's namespace.  Because
+you don't know if the user has already used your variable and subroutine
+names, it's vitally important to carefully select what to export.  Do I<not>
+export method or variable names I<by default> without a good reason.
+
+As a general rule, if the module is trying to be object-oriented then don't
+export anything.  If it's just a collection of functions and variables, then
+you can export them via another array, called C<@EXPORT_OK>.  This array
+does not automatically place its subroutine and variable names into the
+namespace unless the user specifically requests that this be done.
+
+See L<perlmod> for more information.
+
+The C<$VERSION> variable is used to ensure that the .pm file and the shared
+library are "in sync" with each other.  Any time you make changes to
+the .pm or .xs files, you should increment the value of this variable.
+
+=head2 Writing good test scripts
+
+The importance of writing good test scripts cannot be over-emphasized.  You
+should closely follow the "ok/not ok" style that Perl itself uses, so that
+it is very easy and unambiguous to determine the outcome of each test case.
+When you find and fix a bug, make sure you add a test case for it.
+
+By running "C<make test>", you ensure that your Mytest.t script runs and uses
+the correct version of your extension.  If you have many test cases,
+save your test files in the "t" directory and use the suffix ".t".
+When you run "C<make test>", all of these test files will be executed.
+
+=head2 EXAMPLE 3
+
+Our third extension will take one argument as its input, round off that
+value, and set the I<argument> to the rounded value.
+
+Add the following to the end of Mytest.xs:
+
+	void
+	round(arg)
+		double  arg
+	    CODE:
+		if (arg > 0.0) {
+			arg = floor(arg + 0.5);
+		} else if (arg < 0.0) {
+			arg = ceil(arg - 0.5);
+		} else {
+			arg = 0.0;
+		}
+	    OUTPUT:
+		arg
+
+Edit the Makefile.PL file so that the corresponding line looks like this:
+
+	'LIBS'      => ['-lm'],   # e.g., '-lm'
+
+Generate the Makefile and run make.  Change the test number in Mytest.t to
+"9" and add the following tests:
+
+	$i = -1.5; &Mytest::round($i); is( $i, -2.0 );
+	$i = -1.1; &Mytest::round($i); is( $i, -1.0 );
+	$i = 0.0; &Mytest::round($i);  is( $i,  0.0 );
+	$i = 0.5; &Mytest::round($i);  is( $i,  1.0 );
+	$i = 1.2; &Mytest::round($i);  is( $i,  1.0 );
+
+Running "C<make test>" should now print out that all nine tests are okay.
+
+Notice that in these new test cases, the argument passed to round was a
+scalar variable.  You might be wondering if you can round a constant or
+literal.  To see what happens, temporarily add the following line to Mytest.t:
+
+	&Mytest::round(3);
+
+Run "C<make test>" and notice that Perl dies with a fatal error.  Perl won't
+let you change the value of constants!
+
+=head2 What's new here?
+
+=over 4
+
+=item *
+
+We've made some changes to Makefile.PL.  In this case, we've specified an
+extra library to be linked into the extension's shared library, the math
+library libm in this case.  We'll talk later about how to write XSUBs that
+can call every routine in a library.
+
+=item *
+
+The value of the function is not being passed back as the function's return
+value, but by changing the value of the variable that was passed into the
+function.  You might have guessed that when you saw that the return value
+of round is of type "void".
+
+=back
+
+=head2 Input and Output Parameters
+
+You specify the parameters that will be passed into the XSUB on the line(s)
+after you declare the function's return value and name.  Each input parameter
+line starts with optional whitespace, and may have an optional terminating
+semicolon.
+
+The list of output parameters occurs at the very end of the function, just
+after the OUTPUT: directive.  The use of RETVAL tells Perl that you
+wish to send this value back as the return value of the XSUB function.  In
+Example 3, we wanted the "return value" placed in the original variable
+which we passed in, so we listed it (and not RETVAL) in the OUTPUT: section.
+
+=head2 The XSUBPP Program
+
+The B<xsubpp> program takes the XS code in the .xs file and translates it into
+C code, placing it in a file whose suffix is .c.  The C code created makes
+heavy use of the C functions within Perl.
+
+=head2 The TYPEMAP file
+
+The B<xsubpp> program uses rules to convert from Perl's data types (scalar,
+array, etc.) to C's data types (int, char, etc.).  These rules are stored
+in the typemap file ($PERLLIB/ExtUtils/typemap).  There's a brief discussion
+below, but all the nitty-gritty details can be found in L<perlxstypemap>.
+If you have a new-enough version of perl (5.16 and up) or an upgraded
+XS compiler (C<ExtUtils::ParseXS> 3.13_01 or better), then you can inline
+typemaps in your XS instead of writing separate files.
+Either way, this typemap thing is split into three parts:
+
+The first section maps various C data types to a name, which corresponds
+somewhat with the various Perl types.  The second section contains C code
+which B<xsubpp> uses to handle input parameters.  The third section contains
+C code which B<xsubpp> uses to handle output parameters.
+
+Let's take a look at a portion of the .c file created for our extension.
+The file name is Mytest.c:
+
+	XS(XS_Mytest_round)
+	{
+	    dXSARGS;
+	    if (items != 1)
+		Perl_croak(aTHX_ "Usage: Mytest::round(arg)");
+	    PERL_UNUSED_VAR(cv); /* -W */
+	    {
+		double  arg = (double)SvNV(ST(0));	/* XXXXX */
+		if (arg > 0.0) {
+			arg = floor(arg + 0.5);
+		} else if (arg < 0.0) {
+			arg = ceil(arg - 0.5);
+		} else {
+			arg = 0.0;
+		}
+		sv_setnv(ST(0), (double)arg);	/* XXXXX */
+		SvSETMAGIC(ST(0));
+	    }
+	    XSRETURN_EMPTY;
+	}
+
+Notice the two lines commented with "XXXXX".  If you check the first part
+of the typemap file (or section), you'll see that doubles are of type
+T_DOUBLE.  In the INPUT part of the typemap, an argument that is T_DOUBLE
+is assigned to the variable arg by calling the routine SvNV on something,
+then casting it to double, then assigned to the variable arg.  Similarly,
+in the OUTPUT section, once arg has its final value, it is passed to the
+sv_setnv function to be passed back to the calling subroutine.  These two
+functions are explained in L<perlguts>; we'll talk more later about what
+that "ST(0)" means in the section on the argument stack.
+
+=head2 Warning about Output Arguments
+
+In general, it's not a good idea to write extensions that modify their input
+parameters, as in Example 3.  Instead, you should probably return multiple
+values in an array and let the caller handle them (we'll do this in a later
+example).  However, in order to better accommodate calling pre-existing C
+routines, which often do modify their input parameters, this behavior is
+tolerated.
+
+=head2 EXAMPLE 4
+
+In this example, we'll now begin to write XSUBs that will interact with
+pre-defined C libraries.  To begin with, we will build a small library of
+our own, then let h2xs write our .pm and .xs files for us.
+
+Create a new directory called Mytest2 at the same level as the directory
+Mytest.  In the Mytest2 directory, create another directory called mylib,
+and cd into that directory.
+
+Here we'll create some files that will generate a test library.  These will
+include a C source file and a header file.  We'll also create a Makefile.PL
+in this directory.  Then we'll make sure that running make at the Mytest2
+level will automatically run this Makefile.PL file and the resulting Makefile.
+
+In the mylib directory, create a file mylib.h that looks like this:
+
+	#define TESTVAL	4
+
+	extern double	foo(int, long, const char*);
+
+Also create a file mylib.c that looks like this:
+
+	#include <stdlib.h>
+	#include "./mylib.h"
+
+	double
+	foo(int a, long b, const char *c)
+	{
+		return (a + b + atof(c) + TESTVAL);
+	}
+
+And finally create a file Makefile.PL that looks like this:
+
+	use ExtUtils::MakeMaker;
+	$Verbose = 1;
+	WriteMakefile(
+	    NAME   => 'Mytest2::mylib',
+	    SKIP   => [qw(all static static_lib dynamic dynamic_lib)],
+	    clean  => {'FILES' => 'libmylib$(LIB_EXT)'},
+	);
+
+
+	sub MY::top_targets {
+		'
+	all :: static
+
+	pure_all :: static
+
+	static ::       libmylib$(LIB_EXT)
+
+	libmylib$(LIB_EXT): $(O_FILES)
+		$(AR) cr libmylib$(LIB_EXT) $(O_FILES)
+		$(RANLIB) libmylib$(LIB_EXT)
+
+	';
+	}
+
+Make sure you use a tab and not spaces on the lines beginning with "$(AR)"
+and "$(RANLIB)".  Make will not function properly if you use spaces.
+It has also been reported that the "cr" argument to $(AR) is unnecessary
+on Win32 systems.
+
+We will now create the main top-level Mytest2 files.  Change to the directory
+above Mytest2 and run the following command:
+
+	% h2xs -O -n Mytest2 ./Mytest2/mylib/mylib.h
+
+This will print out a warning about overwriting Mytest2, but that's okay.
+Our files are stored in Mytest2/mylib, and will be untouched.
+
+The normal Makefile.PL that h2xs generates doesn't know about the mylib
+directory.  We need to tell it that there is a subdirectory and that we
+will be generating a library in it.  Let's add the argument MYEXTLIB to
+the WriteMakefile call so that it looks like this:
+
+	WriteMakefile(
+	    'NAME'      => 'Mytest2',
+	    'VERSION_FROM' => 'Mytest2.pm', # finds $VERSION
+	    'LIBS'      => [''],   # e.g., '-lm'
+	    'DEFINE'    => '',     # e.g., '-DHAVE_SOMETHING'
+	    'INC'       => '',     # e.g., '-I/usr/include/other'
+	    'MYEXTLIB' => 'mylib/libmylib$(LIB_EXT)',
+	);
+
+and then at the end add a subroutine (which will override the pre-existing
+subroutine).  Remember to use a tab character to indent the line beginning
+with "cd"!
+
+	sub MY::postamble {
+	'
+	$(MYEXTLIB): mylib/Makefile
+		cd mylib && $(MAKE) $(PASSTHRU)
+	';
+	}
+
+Let's also fix the MANIFEST file so that it accurately reflects the contents
+of our extension.  The single line that says "mylib" should be replaced by
+the following three lines:
+
+	mylib/Makefile.PL
+	mylib/mylib.c
+	mylib/mylib.h
+
+To keep our namespace nice and unpolluted, edit the .pm file and change
+the variable C<@EXPORT> to C<@EXPORT_OK>.  Finally, in the
+.xs file, edit the #include line to read:
+
+	#include "mylib/mylib.h"
+
+And also add the following function definition to the end of the .xs file:
+
+	double
+	foo(a,b,c)
+		int             a
+		long            b
+		const char *    c
+	    OUTPUT:
+		RETVAL
+
+Now we also need to create a typemap because the default Perl doesn't
+currently support the C<const char *> type.  Include a new TYPEMAP
+section in your XS code before the above function:
+
+        TYPEMAP: <<END;
+	const char *	T_PV
+        END
+
+Now run perl on the top-level Makefile.PL.  Notice that it also created a
+Makefile in the mylib directory.  Run make and watch that it does cd into
+the mylib directory and run make in there as well.
+
+Now edit the Mytest2.t script and change the number of tests to "4",
+and add the following lines to the end of the script:
+
+	is( &Mytest2::foo(1, 2, "Hello, world!"), 7 );
+	is( &Mytest2::foo(1, 2, "0.0"), 7 );
+	ok( abs(&Mytest2::foo(0, 0, "-3.4") - 0.6) <= 0.01 );
+
+(When dealing with floating-point comparisons, it is best to not check for
+equality, but rather that the difference between the expected and actual
+result is below a certain amount (called epsilon) which is 0.01 in this case)
+
+Run "C<make test>" and all should be well. There are some warnings on missing tests
+for the Mytest2::mylib extension, but you can ignore them.
+
+=head2 What has happened here?
+
+Unlike previous examples, we've now run h2xs on a real include file.  This
+has caused some extra goodies to appear in both the .pm and .xs files.
+
+=over 4
+
+=item *
+
+In the .xs file, there's now a #include directive with the absolute path to
+the mylib.h header file.  We changed this to a relative path so that we
+could move the extension directory if we wanted to.
+
+=item *
+
+There's now some new C code that's been added to the .xs file.  The purpose
+of the C<constant> routine is to make the values that are #define'd in the
+header file accessible by the Perl script (by calling either C<TESTVAL> or
+C<&Mytest2::TESTVAL>).  There's also some XS code to allow calls to the
+C<constant> routine.
+
+=item *
+
+The .pm file originally exported the name C<TESTVAL> in the C<@EXPORT> array.
+This could lead to name clashes.  A good rule of thumb is that if the #define
+is only going to be used by the C routines themselves, and not by the user,
+they should be removed from the C<@EXPORT> array.  Alternately, if you don't
+mind using the "fully qualified name" of a variable, you could move most
+or all of the items from the C<@EXPORT> array into the C<@EXPORT_OK> array.
+
+=item *
+
+If our include file had contained #include directives, these would not have
+been processed by h2xs.  There is no good solution to this right now.
+
+=item *
+
+We've also told Perl about the library that we built in the mylib
+subdirectory.  That required only the addition of the C<MYEXTLIB> variable
+to the WriteMakefile call and the replacement of the postamble subroutine
+to cd into the subdirectory and run make.  The Makefile.PL for the
+library is a bit more complicated, but not excessively so.  Again we
+replaced the postamble subroutine to insert our own code.  This code
+simply specified that the library to be created here was a static archive
+library (as opposed to a dynamically loadable library) and provided the
+commands to build it.
+
+=back
+
+=head2 Anatomy of .xs file
+
+The .xs file of L<"EXAMPLE 4"> contained some new elements.  To understand
+the meaning of these elements, pay attention to the line which reads
+
+	MODULE = Mytest2		PACKAGE = Mytest2
+
+Anything before this line is plain C code which describes which headers
+to include, and defines some convenience functions.  No translations are
+performed on this part, apart from having embedded POD documentation
+skipped over (see L<perlpod>) it goes into the generated output C file as is.
+
+Anything after this line is the description of XSUB functions.
+These descriptions are translated by B<xsubpp> into C code which
+implements these functions using Perl calling conventions, and which
+makes these functions visible from Perl interpreter.
+
+Pay a special attention to the function C<constant>.  This name appears
+twice in the generated .xs file: once in the first part, as a static C
+function, then another time in the second part, when an XSUB interface to
+this static C function is defined.
+
+This is quite typical for .xs files: usually the .xs file provides
+an interface to an existing C function.  Then this C function is defined
+somewhere (either in an external library, or in the first part of .xs file),
+and a Perl interface to this function (i.e. "Perl glue") is described in the
+second part of .xs file.  The situation in L<"EXAMPLE 1">, L<"EXAMPLE 2">,
+and L<"EXAMPLE 3">, when all the work is done inside the "Perl glue", is
+somewhat of an exception rather than the rule.
+
+=head2 Getting the fat out of XSUBs
+
+In L<"EXAMPLE 4"> the second part of .xs file contained the following
+description of an XSUB:
+
+	double
+	foo(a,b,c)
+		int             a
+		long            b
+		const char *    c
+	    OUTPUT:
+		RETVAL
+
+Note that in contrast with L<"EXAMPLE 1">, L<"EXAMPLE 2"> and L<"EXAMPLE 3">,
+this description does not contain the actual I<code> for what is done
+during a call to Perl function foo().  To understand what is going
+on here, one can add a CODE section to this XSUB:
+
+	double
+	foo(a,b,c)
+		int             a
+		long            b
+		const char *    c
+	    CODE:
+		RETVAL = foo(a,b,c);
+	    OUTPUT:
+		RETVAL
+
+However, these two XSUBs provide almost identical generated C code: B<xsubpp>
+compiler is smart enough to figure out the C<CODE:> section from the first
+two lines of the description of XSUB.  What about C<OUTPUT:> section?  In
+fact, that is absolutely the same!  The C<OUTPUT:> section can be removed
+as well, I<as far as C<CODE:> section or C<PPCODE:> section> is not
+specified: B<xsubpp> can see that it needs to generate a function call
+section, and will autogenerate the OUTPUT section too.  Thus one can
+shortcut the XSUB to become:
+
+	double
+	foo(a,b,c)
+		int             a
+		long            b
+		const char *    c
+
+Can we do the same with an XSUB
+
+	int
+	is_even(input)
+		int	input
+	    CODE:
+		RETVAL = (input % 2 == 0);
+	    OUTPUT:
+		RETVAL
+
+of L<"EXAMPLE 2">?  To do this, one needs to define a C function C<int
+is_even(int input)>.  As we saw in L<Anatomy of .xs file>, a proper place
+for this definition is in the first part of .xs file.  In fact a C function
+
+	int
+	is_even(int arg)
+	{
+		return (arg % 2 == 0);
+	}
+
+is probably overkill for this.  Something as simple as a C<#define> will
+do too:
+
+	#define is_even(arg)	((arg) % 2 == 0)
+
+After having this in the first part of .xs file, the "Perl glue" part becomes
+as simple as
+
+	int
+	is_even(input)
+		int	input
+
+This technique of separation of the glue part from the workhorse part has
+obvious tradeoffs: if you want to change a Perl interface, you need to
+change two places in your code.  However, it removes a lot of clutter,
+and makes the workhorse part independent from idiosyncrasies of Perl calling
+convention.  (In fact, there is nothing Perl-specific in the above description,
+a different version of B<xsubpp> might have translated this to TCL glue or
+Python glue as well.)
+
+=head2 More about XSUB arguments
+
+With the completion of Example 4, we now have an easy way to simulate some
+real-life libraries whose interfaces may not be the cleanest in the world.
+We shall now continue with a discussion of the arguments passed to the
+B<xsubpp> compiler.
+
+When you specify arguments to routines in the .xs file, you are really
+passing three pieces of information for each argument listed.  The first
+piece is the order of that argument relative to the others (first, second,
+etc).  The second is the type of argument, and consists of the type
+declaration of the argument (e.g., int, char*, etc).  The third piece is
+the calling convention for the argument in the call to the library function.
+
+While Perl passes arguments to functions by reference,
+C passes arguments by value; to implement a C function which modifies data
+of one of the "arguments", the actual argument of this C function would be
+a pointer to the data.  Thus two C functions with declarations
+
+	int string_length(char *s);
+	int upper_case_char(char *cp);
+
+may have completely different semantics: the first one may inspect an array
+of chars pointed by s, and the second one may immediately dereference C<cp>
+and manipulate C<*cp> only (using the return value as, say, a success
+indicator).  From Perl one would use these functions in
+a completely different manner.
+
+One conveys this info to B<xsubpp> by replacing C<*> before the
+argument by C<&>.  C<&> means that the argument should be passed to a library
+function by its address.  The above two function may be XSUB-ified as
+
+	int
+	string_length(s)
+		char *	s
+
+	int
+	upper_case_char(cp)
+		char	&cp
+
+For example, consider:
+
+	int
+	foo(a,b)
+		char	&a
+		char *	b
+
+The first Perl argument to this function would be treated as a char and assigned
+to the variable a, and its address would be passed into the function foo.
+The second Perl argument would be treated as a string pointer and assigned to the
+variable b.  The I<value> of b would be passed into the function foo.  The
+actual call to the function foo that B<xsubpp> generates would look like this:
+
+	foo(&a, b);
+
+B<xsubpp> will parse the following function argument lists identically:
+
+	char	&a
+	char&a
+	char	& a
+
+However, to help ease understanding, it is suggested that you place a "&"
+next to the variable name and away from the variable type), and place a
+"*" near the variable type, but away from the variable name (as in the
+call to foo above).  By doing so, it is easy to understand exactly what
+will be passed to the C function; it will be whatever is in the "last
+column".
+
+You should take great pains to try to pass the function the type of variable
+it wants, when possible.  It will save you a lot of trouble in the long run.
+
+=head2 The Argument Stack
+
+If we look at any of the C code generated by any of the examples except
+example 1, you will notice a number of references to ST(n), where n is
+usually 0.  "ST" is actually a macro that points to the n'th argument
+on the argument stack.  ST(0) is thus the first argument on the stack and
+therefore the first argument passed to the XSUB, ST(1) is the second
+argument, and so on.
+
+When you list the arguments to the XSUB in the .xs file, that tells B<xsubpp>
+which argument corresponds to which of the argument stack (i.e., the first
+one listed is the first argument, and so on).  You invite disaster if you
+do not list them in the same order as the function expects them.
+
+The actual values on the argument stack are pointers to the values passed
+in.  When an argument is listed as being an OUTPUT value, its corresponding
+value on the stack (i.e., ST(0) if it was the first argument) is changed.
+You can verify this by looking at the C code generated for Example 3.
+The code for the round() XSUB routine contains lines that look like this:
+
+	double  arg = (double)SvNV(ST(0));
+	/* Round the contents of the variable arg */
+	sv_setnv(ST(0), (double)arg);
+
+The arg variable is initially set by taking the value from ST(0), then is
+stored back into ST(0) at the end of the routine.
+
+XSUBs are also allowed to return lists, not just scalars.  This must be
+done by manipulating stack values ST(0), ST(1), etc, in a subtly
+different way.  See L<perlxs> for details.
+
+XSUBs are also allowed to avoid automatic conversion of Perl function arguments
+to C function arguments.  See L<perlxs> for details.  Some people prefer
+manual conversion by inspecting C<ST(i)> even in the cases when automatic
+conversion will do, arguing that this makes the logic of an XSUB call clearer.
+Compare with L<"Getting the fat out of XSUBs"> for a similar tradeoff of
+a complete separation of "Perl glue" and "workhorse" parts of an XSUB.
+
+While experts may argue about these idioms, a novice to Perl guts may
+prefer a way which is as little Perl-guts-specific as possible, meaning
+automatic conversion and automatic call generation, as in
+L<"Getting the fat out of XSUBs">.  This approach has the additional
+benefit of protecting the XSUB writer from future changes to the Perl API.
+
+=head2 Extending your Extension
+
+Sometimes you might want to provide some extra methods or subroutines
+to assist in making the interface between Perl and your extension simpler
+or easier to understand.  These routines should live in the .pm file.
+Whether they are automatically loaded when the extension itself is loaded
+or only loaded when called depends on where in the .pm file the subroutine
+definition is placed.  You can also consult L<AutoLoader> for an alternate
+way to store and load your extra subroutines.
+
+=head2 Documenting your Extension
+
+There is absolutely no excuse for not documenting your extension.
+Documentation belongs in the .pm file.  This file will be fed to pod2man,
+and the embedded documentation will be converted to the manpage format,
+then placed in the blib directory.  It will be copied to Perl's
+manpage directory when the extension is installed.
+
+You may intersperse documentation and Perl code within the .pm file.
+In fact, if you want to use method autoloading, you must do this,
+as the comment inside the .pm file explains.
+
+See L<perlpod> for more information about the pod format.
+
+=head2 Installing your Extension
+
+Once your extension is complete and passes all its tests, installing it
+is quite simple: you simply run "make install".  You will either need
+to have write permission into the directories where Perl is installed,
+or ask your system administrator to run the make for you.
+
+Alternately, you can specify the exact directory to place the extension's
+files by placing a "PREFIX=/destination/directory" after the make install.
+(or in between the make and install if you have a brain-dead version of make).
+This can be very useful if you are building an extension that will eventually
+be distributed to multiple systems.  You can then just archive the files in
+the destination directory and distribute them to your destination systems.
+
+=head2 EXAMPLE 5
+
+In this example, we'll do some more work with the argument stack.  The
+previous examples have all returned only a single value.  We'll now
+create an extension that returns an array.
+
+This extension is very Unix-oriented (struct statfs and the statfs system
+call).  If you are not running on a Unix system, you can substitute for
+statfs any other function that returns multiple values, you can hard-code
+values to be returned to the caller (although this will be a bit harder
+to test the error case), or you can simply not do this example.  If you
+change the XSUB, be sure to fix the test cases to match the changes.
+
+Return to the Mytest directory and add the following code to the end of
+Mytest.xs:
+
+	void
+	statfs(path)
+		char *  path
+	    INIT:
+		int i;
+		struct statfs buf;
+
+	    PPCODE:
+		i = statfs(path, &buf);
+		if (i == 0) {
+			XPUSHs(sv_2mortal(newSVnv(buf.f_bavail)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_bfree)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_blocks)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_bsize)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_ffree)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_files)));
+			XPUSHs(sv_2mortal(newSVnv(buf.f_type)));
+		} else {
+			XPUSHs(sv_2mortal(newSVnv(errno)));
+		}
+
+You'll also need to add the following code to the top of the .xs file, just
+after the include of "XSUB.h":
+
+	#include <sys/vfs.h>
+
+Also add the following code segment to Mytest.t while incrementing the "9"
+tests to "11":
+
+	@a = &Mytest::statfs("/blech");
+	ok( scalar(@a) == 1 && $a[0] == 2 );
+	@a = &Mytest::statfs("/");
+	is( scalar(@a), 7 );
+
+=head2 New Things in this Example
+
+This example added quite a few new concepts.  We'll take them one at a time.
+
+=over 4
+
+=item *
+
+The INIT: directive contains code that will be placed immediately after
+the argument stack is decoded.  C does not allow variable declarations at
+arbitrary locations inside a function,
+so this is usually the best way to declare local variables needed by the XSUB.
+(Alternatively, one could put the whole C<PPCODE:> section into braces, and
+put these declarations on top.)
+
+=item *
+
+This routine also returns a different number of arguments depending on the
+success or failure of the call to statfs.  If there is an error, the error
+number is returned as a single-element array.  If the call is successful,
+then a 7-element array is returned.  Since only one argument is passed into
+this function, we need room on the stack to hold the 7 values which may be
+returned.
+
+We do this by using the PPCODE: directive, rather than the CODE: directive.
+This tells B<xsubpp> that we will be managing the return values that will be
+put on the argument stack by ourselves.
+
+=item *
+
+When we want to place values to be returned to the caller onto the stack,
+we use the series of macros that begin with "XPUSH".  There are five
+different versions, for placing integers, unsigned integers, doubles,
+strings, and Perl scalars on the stack.  In our example, we placed a
+Perl scalar onto the stack.  (In fact this is the only macro which
+can be used to return multiple values.)
+
+The XPUSH* macros will automatically extend the return stack to prevent
+it from being overrun.  You push values onto the stack in the order you
+want them seen by the calling program.
+
+=item *
+
+The values pushed onto the return stack of the XSUB are actually mortal SV's.
+They are made mortal so that once the values are copied by the calling
+program, the SV's that held the returned values can be deallocated.
+If they were not mortal, then they would continue to exist after the XSUB
+routine returned, but would not be accessible.  This is a memory leak.
+
+=item *
+
+If we were interested in performance, not in code compactness, in the success
+branch we would not use C<XPUSHs> macros, but C<PUSHs> macros, and would
+pre-extend the stack before pushing the return values:
+
+	EXTEND(SP, 7);
+
+The tradeoff is that one needs to calculate the number of return values
+in advance (though overextending the stack will not typically hurt
+anything but memory consumption).
+
+Similarly, in the failure branch we could use C<PUSHs> I<without> extending
+the stack: the Perl function reference comes to an XSUB on the stack, thus
+the stack is I<always> large enough to take one return value.
+
+=back
+
+=head2 EXAMPLE 6
+
+In this example, we will accept a reference to an array as an input
+parameter, and return a reference to an array of hashes.  This will
+demonstrate manipulation of complex Perl data types from an XSUB.
+
+This extension is somewhat contrived.  It is based on the code in
+the previous example.  It calls the statfs function multiple times,
+accepting a reference to an array of filenames as input, and returning
+a reference to an array of hashes containing the data for each of the
+filesystems.
+
+Return to the Mytest directory and add the following code to the end of
+Mytest.xs:
+
+    SV *
+    multi_statfs(paths)
+	    SV * paths
+	INIT:
+	    AV * results;
+	    I32 numpaths = 0;
+	    int i, n;
+	    struct statfs buf;
+
+	    SvGETMAGIC(paths);
+	    if ((!SvROK(paths))
+		|| (SvTYPE(SvRV(paths)) != SVt_PVAV)
+		|| ((numpaths = av_top_index((AV *)SvRV(paths))) < 0))
+	    {
+		XSRETURN_UNDEF;
+	    }
+	    results = (AV *)sv_2mortal((SV *)newAV());
+	CODE:
+	    for (n = 0; n <= numpaths; n++) {
+		HV * rh;
+		STRLEN l;
+		char * fn = SvPV(*av_fetch((AV *)SvRV(paths), n, 0), l);
+
+		i = statfs(fn, &buf);
+		if (i != 0) {
+		    av_push(results, newSVnv(errno));
+		    continue;
+		}
+
+		rh = (HV *)sv_2mortal((SV *)newHV());
+
+		hv_store(rh, "f_bavail", 8, newSVnv(buf.f_bavail), 0);
+		hv_store(rh, "f_bfree",  7, newSVnv(buf.f_bfree),  0);
+		hv_store(rh, "f_blocks", 8, newSVnv(buf.f_blocks), 0);
+		hv_store(rh, "f_bsize",  7, newSVnv(buf.f_bsize),  0);
+		hv_store(rh, "f_ffree",  7, newSVnv(buf.f_ffree),  0);
+		hv_store(rh, "f_files",  7, newSVnv(buf.f_files),  0);
+		hv_store(rh, "f_type",   6, newSVnv(buf.f_type),   0);
+
+		av_push(results, newRV((SV *)rh));
+	    }
+	    RETVAL = newRV((SV *)results);
+	OUTPUT:
+	    RETVAL
+
+And add the following code to Mytest.t, while incrementing the "11"
+tests to "13":
+
+	$results = Mytest::multi_statfs([ '/', '/blech' ]);
+	ok( ref $results->[0] );
+	ok( ! ref $results->[1] );
+
+=head2 New Things in this Example
+
+There are a number of new concepts introduced here, described below:
+
+=over 4
+
+=item *
+
+This function does not use a typemap.  Instead, we declare it as accepting
+one SV* (scalar) parameter, and returning an SV* value, and we take care of
+populating these scalars within the code.  Because we are only returning
+one value, we don't need a C<PPCODE:> directive - instead, we use C<CODE:>
+and C<OUTPUT:> directives.
+
+=item *
+
+When dealing with references, it is important to handle them with caution.
+The C<INIT:> block first calls SvGETMAGIC(paths), in case
+paths is a tied variable.  Then it checks that C<SvROK> returns
+true, which indicates that paths is a valid reference.  (Simply
+checking C<SvROK> won't trigger FETCH on a tied variable.)  It
+then verifies that the object referenced by paths is an array, using C<SvRV>
+to dereference paths, and C<SvTYPE> to discover its type.  As an added test,
+it checks that the array referenced by paths is non-empty, using the C<av_top_index>
+function (which returns -1 if the array is empty).  The XSRETURN_UNDEF macro
+is used to abort the XSUB and return the undefined value whenever all three of
+these conditions are not met.
+
+=item *
+
+We manipulate several arrays in this XSUB.  Note that an array is represented
+internally by an AV* pointer.  The functions and macros for manipulating
+arrays are similar to the functions in Perl: C<av_top_index> returns the highest
+index in an AV*, much like $#array; C<av_fetch> fetches a single scalar value
+from an array, given its index; C<av_push> pushes a scalar value onto the
+end of the array, automatically extending the array as necessary.
+
+Specifically, we read pathnames one at a time from the input array, and
+store the results in an output array (results) in the same order.  If
+statfs fails, the element pushed onto the return array is the value of
+errno after the failure.  If statfs succeeds, though, the value pushed
+onto the return array is a reference to a hash containing some of the
+information in the statfs structure.
+
+As with the return stack, it would be possible (and a small performance win)
+to pre-extend the return array before pushing data into it, since we know
+how many elements we will return:
+
+	av_extend(results, numpaths);
+
+=item *
+
+We are performing only one hash operation in this function, which is storing
+a new scalar under a key using C<hv_store>.  A hash is represented by an HV*
+pointer.  Like arrays, the functions for manipulating hashes from an XSUB
+mirror the functionality available from Perl.  See L<perlguts> and L<perlapi>
+for details.
+
+=item *
+
+To create a reference, we use the C<newRV> function.  Note that you can
+cast an AV* or an HV* to type SV* in this case (and many others).  This
+allows you to take references to arrays, hashes and scalars with the same
+function.  Conversely, the C<SvRV> function always returns an SV*, which may
+need to be cast to the appropriate type if it is something other than a
+scalar (check with C<SvTYPE>).
+
+=item *
+
+At this point, xsubpp is doing very little work - the differences between
+Mytest.xs and Mytest.c are minimal.
+
+=back
+
+=head2 EXAMPLE 7 (Coming Soon)
+
+XPUSH args AND set RETVAL AND assign return value to array
+
+=head2 EXAMPLE 8 (Coming Soon)
+
+Setting $!
+
+=head2 EXAMPLE 9 Passing open files to XSes
+
+You would think passing files to an XS is difficult, with all the
+typeglobs and stuff. Well, it isn't.
+
+Suppose that for some strange reason we need a wrapper around the
+standard C library function C<fputs()>. This is all we need:
+
+	#define PERLIO_NOT_STDIO 0
+	#include "EXTERN.h"
+	#include "perl.h"
+	#include "XSUB.h"
+
+	#include <stdio.h>
+
+	int
+	fputs(s, stream)
+		char *          s
+		FILE *	        stream
+
+The real work is done in the standard typemap.
+
+B<But> you lose all the fine stuff done by the perlio layers. This
+calls the stdio function C<fputs()>, which knows nothing about them.
+
+The standard typemap offers three variants of PerlIO *:
+C<InputStream> (T_IN), C<InOutStream> (T_INOUT) and C<OutputStream>
+(T_OUT). A bare C<PerlIO *> is considered a T_INOUT. If it matters
+in your code (see below for why it might) #define or typedef
+one of the specific names and use that as the argument or result
+type in your XS file.
+
+The standard typemap does not contain PerlIO * before perl 5.7,
+but it has the three stream variants. Using a PerlIO * directly
+is not backwards compatible unless you provide your own typemap.
+
+For streams coming I<from> perl the main difference is that
+C<OutputStream> will get the output PerlIO * - which may make
+a difference on a socket. Like in our example...
+
+For streams being handed I<to> perl a new file handle is created
+(i.e. a reference to a new glob) and associated with the PerlIO *
+provided. If the read/write state of the PerlIO * is not correct then you
+may get errors or warnings from when the file handle is used.
+So if you opened the PerlIO * as "w" it should really be an
+C<OutputStream> if open as "r" it should be an C<InputStream>.
+
+Now, suppose you want to use perlio layers in your XS. We'll use the
+perlio C<PerlIO_puts()> function as an example.
+
+In the C part of the XS file (above the first MODULE line) you
+have
+
+	#define OutputStream	PerlIO *
+    or
+	typedef PerlIO *	OutputStream;
+
+
+And this is the XS code:
+
+	int
+	perlioputs(s, stream)
+		char *          s
+		OutputStream	stream
+	CODE:
+		RETVAL = PerlIO_puts(stream, s);
+	OUTPUT:
+		RETVAL
+
+We have to use a C<CODE> section because C<PerlIO_puts()> has the arguments
+reversed compared to C<fputs()>, and we want to keep the arguments the same.
+
+Wanting to explore this thoroughly, we want to use the stdio C<fputs()>
+on a PerlIO *. This means we have to ask the perlio system for a stdio
+C<FILE *>:
+
+	int
+	perliofputs(s, stream)
+		char *          s
+		OutputStream	stream
+	PREINIT:
+		FILE *fp = PerlIO_findFILE(stream);
+	CODE:
+		if (fp != (FILE*) 0) {
+			RETVAL = fputs(s, fp);
+		} else {
+			RETVAL = -1;
+		}
+	OUTPUT:
+		RETVAL
+
+Note: C<PerlIO_findFILE()> will search the layers for a stdio
+layer. If it can't find one, it will call C<PerlIO_exportFILE()> to
+generate a new stdio C<FILE>. Please only call C<PerlIO_exportFILE()> if
+you want a I<new> C<FILE>. It will generate one on each call and push a
+new stdio layer. So don't call it repeatedly on the same
+file. C<PerlIO_findFILE()> will retrieve the stdio layer once it has been
+generated by C<PerlIO_exportFILE()>.
+
+This applies to the perlio system only. For versions before 5.7,
+C<PerlIO_exportFILE()> is equivalent to C<PerlIO_findFILE()>.
+
+=head2 Troubleshooting these Examples
+
+As mentioned at the top of this document, if you are having problems with
+these example extensions, you might see if any of these help you.
+
+=over 4
+
+=item *
+
+In versions of 5.002 prior to the gamma version, the test script in Example
+1 will not function properly.  You need to change the "use lib" line to
+read:
+
+	use lib './blib';
+
+=item *
+
+In versions of 5.002 prior to version 5.002b1h, the test.pl file was not
+automatically created by h2xs.  This means that you cannot say "make test"
+to run the test script.  You will need to add the following line before the
+"use extension" statement:
+
+	use lib './blib';
+
+=item *
+
+In versions 5.000 and 5.001, instead of using the above line, you will need
+to use the following line:
+
+	BEGIN { unshift(@INC, "./blib") }
+
+=item *
+
+This document assumes that the executable named "perl" is Perl version 5.
+Some systems may have installed Perl version 5 as "perl5".
+
+=back
+
+=head1 See also
+
+For more information, consult L<perlguts>, L<perlapi>, L<perlxs>, L<perlmod>,
+and L<perlpod>.
+
+=head1 Author
+
+Jeff Okamoto <F<okamoto at corp.hp.com>>
+
+Reviewed and assisted by Dean Roehrich, Ilya Zakharevich, Andreas Koenig,
+and Tim Bunce.
+
+PerlIO material contributed by Lupe Christoph, with some clarification
+by Nick Ing-Simmons.
+
+Changes for h2xs as of Perl 5.8.x by Renee Baecker
+
+=head2 Last Changed
+
+2012-01-20

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/lib/perlxstypemap.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,699 @@
+=head1 NAME
+
+perlxstypemap - Perl XS C/Perl type mapping
+
+=head1 DESCRIPTION
+
+The more you think about interfacing between two languages, the more
+you'll realize that the majority of programmer effort has to go into
+converting between the data structures that are native to either of
+the languages involved.  This trumps other matter such as differing
+calling conventions because the problem space is so much greater.
+There are simply more ways to shove data into memory than there are
+ways to implement a function call.
+
+Perl XS' attempt at a solution to this is the concept of typemaps.
+At an abstract level, a Perl XS typemap is nothing but a recipe for
+converting from a certain Perl data structure to a certain C
+data structure and vice versa.  Since there can be C types that
+are sufficiently similar to warrant converting with the same logic,
+XS typemaps are represented by a unique identifier, henceforth
+called an   <XS type> in this document.  You can then tell the XS
+compiler that multiple C types are to be mapped with the same
+XS typemap.
+
+In your XS code, when you define an argument with a C type or when
+you are using a C<CODE:> and an C<OUTPUT:> section together with a
+C return type of your XSUB, it'll be the typemapping mechanism that
+makes this easy.
+
+=head2 Anatomy of a typemap
+
+In more practical terms, the typemap is a collection of code
+fragments which are used by the B<xsubpp> compiler to map C function
+parameters and values to Perl values.  The typemap file may consist
+of three sections labelled C<TYPEMAP>, C<INPUT>, and C<OUTPUT>.
+An unlabelled initial section is assumed to be a C<TYPEMAP> section.
+The INPUT section tells the compiler how to translate Perl values
+into variables of certain C types.  The OUTPUT section tells the
+compiler how to translate the values from certain C types into values
+Perl can understand.  The TYPEMAP section tells the compiler which
+of the INPUT and OUTPUT code fragments should be used to map a given
+C type to a Perl value.  The section labels C<TYPEMAP>, C<INPUT>, or
+C<OUTPUT> must begin in the first column on a line by themselves,
+and must be in uppercase.
+
+Each type of section can appear an arbitrary number of times
+and does not have to appear at all.  For example, a typemap may
+commonly lack C<INPUT> and C<OUTPUT> sections if all it needs to
+do is associate additional C types with core XS types like T_PTROBJ.
+Lines that start with a hash C<#> are considered comments and ignored
+in the C<TYPEMAP> section, but are considered significant in C<INPUT>
+and C<OUTPUT>. Blank lines are generally ignored.
+
+Traditionally, typemaps needed to be written to a separate file,
+conventionally called C<typemap> in a CPAN distribution.  With
+ExtUtils::ParseXS (the XS compiler) version 3.12 or better which
+comes with perl 5.16, typemaps can also be embedded directly into
+XS code using a HERE-doc like syntax:
+
+  TYPEMAP: <<HERE
+  ...
+  HERE
+
+where C<HERE> can be replaced by other identifiers like with normal
+Perl HERE-docs.  All details below about the typemap textual format
+remain valid.
+
+The C<TYPEMAP> section should contain one pair of C type and
+XS type per line as follows.  An example from the core typemap file:
+
+  TYPEMAP
+  # all variants of char* is handled by the T_PV typemap
+  char *          T_PV
+  const char *    T_PV
+  unsigned char * T_PV
+  ...
+
+The C<INPUT> and C<OUTPUT> sections have identical formats, that is,
+each unindented line starts a new in- or output map respectively.
+A new in- or output map must start with the name of the XS type to
+map on a line by itself, followed by the code that implements it
+indented on the following lines. Example:
+
+  INPUT
+  T_PV
+    $var = ($type)SvPV_nolen($arg)
+  T_PTR
+    $var = INT2PTR($type,SvIV($arg))
+
+We'll get to the meaning of those Perlish-looking variables in a
+little bit.
+
+Finally, here's an example of the full typemap file for mapping C
+strings of the C<char *> type to Perl scalars/strings:
+
+  TYPEMAP
+  char *  T_PV
+
+  INPUT
+  T_PV
+    $var = ($type)SvPV_nolen($arg)
+
+  OUTPUT
+  T_PV
+    sv_setpv((SV*)$arg, $var);
+
+Here's a more complicated example: suppose that you wanted
+C<struct netconfig> to be blessed into the class C<Net::Config>.
+One way to do this is to use underscores (_) to separate package
+names, as follows:
+
+  typedef struct netconfig * Net_Config;
+
+And then provide a typemap entry C<T_PTROBJ_SPECIAL> that maps
+underscores to double-colons (::), and declare C<Net_Config> to be of
+that type:
+
+  TYPEMAP
+  Net_Config      T_PTROBJ_SPECIAL
+
+  INPUT
+  T_PTROBJ_SPECIAL
+    if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")){
+      IV tmp = SvIV((SV*)SvRV($arg));
+      $var = INT2PTR($type, tmp);
+    }
+    else
+      croak(\"$var is not of type ${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\")
+
+  OUTPUT
+  T_PTROBJ_SPECIAL
+    sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/_/::/g;\$ntt}\",
+                 (void*)$var);
+
+The INPUT and OUTPUT sections substitute underscores for double-colons
+on the fly, giving the desired effect.  This example demonstrates some
+of the power and versatility of the typemap facility.
+
+The C<INT2PTR> macro (defined in perl.h) casts an integer to a pointer
+of a given type, taking care of the possible different size of integers
+and pointers.  There are also C<PTR2IV>, C<PTR2UV>, C<PTR2NV> macros,
+to map the other way, which may be useful in OUTPUT sections.
+
+=head2 The Role of the typemap File in Your Distribution
+
+The default typemap in the F<lib/ExtUtils> directory of the Perl source
+contains many useful types which can be used by Perl extensions.  Some
+extensions define additional typemaps which they keep in their own directory.
+These additional typemaps may reference INPUT and OUTPUT maps in the main
+typemap.  The B<xsubpp> compiler will allow the extension's own typemap to
+override any mappings which are in the default typemap.  Instead of using
+an additional F<typemap> file, typemaps may be embedded verbatim in XS
+with a heredoc-like syntax.  See the documentation on the C<TYPEMAP:> XS
+keyword.
+
+For CPAN distributions, you can assume that the XS types defined by
+the perl core are already available. Additionally, the core typemap
+has default XS types for a large number of C types.  For example, if
+you simply return a C<char *> from your XSUB, the core typemap will
+have this C type associated with the T_PV XS type.  That means your
+C string will be copied into the PV (pointer value) slot of a new scalar
+that will be returned from your XSUB to to Perl.
+
+If you're developing a CPAN distribution using XS, you may add your own
+file called F<typemap> to the distribution.  That file may contain
+typemaps that either map types that are specific to your code or that
+override the core typemap file's mappings for common C types.
+
+=head2 Sharing typemaps Between CPAN Distributions
+
+Starting with ExtUtils::ParseXS version 3.13_01 (comes with perl 5.16
+and better), it is rather easy to share typemap code between multiple
+CPAN distributions. The general idea is to share it as a module that
+offers a certain API and have the dependent modules declare that as a
+built-time requirement and import the typemap into the XS. An example
+of such a typemap-sharing module on CPAN is
+C<ExtUtils::Typemaps::Basic>. Two steps to getting that module's
+typemaps available in your code:
+
+=over 4
+
+=item *
+
+Declare C<ExtUtils::Typemaps::Basic> as a build-time dependency
+in C<Makefile.PL> (use C<BUILD_REQUIRES>), or in your C<Build.PL>
+(use C<build_requires>).
+
+=item *
+
+Include the following line in the XS section of your XS file:
+(don't break the line)
+
+  INCLUDE_COMMAND: $^X -MExtUtils::Typemaps::Cmd
+                   -e "print embeddable_typemap(q{Basic})"
+
+=back
+
+=head2 Writing typemap Entries
+
+Each INPUT or OUTPUT typemap entry is a double-quoted Perl string that
+will be evaluated in the presence of certain variables to get the
+final C code for mapping a certain C type.
+
+This means that you can embed Perl code in your typemap (C) code using
+constructs such as
+C<${ perl code that evaluates to scalar reference here }>. A common
+use case is to generate error messages that refer to the true function
+name even when using the ALIAS XS feature:
+
+  ${ $ALIAS ? \q[GvNAME(CvGV(cv))] : \qq[\"$pname\"] }
+
+For many typemap examples, refer to the core typemap file that can be
+found in the perl source tree at F<lib/ExtUtils/typemap>.
+
+The Perl variables that are available for interpolation into typemaps
+are the following:
+
+=over 4
+
+=item *
+
+I<$var> - the name of the input or output variable, eg. RETVAL for
+return values.
+
+=item *
+
+I<$type> - the raw C type of the parameter, any C<:> replaced with
+C<_>.
+
+=item *
+
+I<$ntype> - the supplied type with C<*> replaced with C<Ptr>.
+e.g. for a type of C<Foo::Bar>, I<$ntype> is C<Foo::Bar>
+
+=item *
+
+I<$arg> - the stack entry, that the parameter is input from or output
+to, e.g. C<ST(0)>
+
+=item *
+
+I<$argoff> - the argument stack offset of the argument.  ie. 0 for the
+first argument, etc.
+
+=item *
+
+I<$pname> - the full name of the XSUB, with including the C<PACKAGE>
+name, with any C<PREFIX> stripped.  This is the non-ALIAS name.
+
+=item *
+
+I<$Package> - the package specified by the most recent C<PACKAGE>
+keyword.
+
+=item *
+
+I<$ALIAS> - non-zero if the current XSUB has any aliases declared with
+C<ALIAS>.
+
+=back
+
+=head2 Full Listing of Core Typemaps
+
+Each C type is represented by an entry in the typemap file that
+is responsible for converting perl variables (SV, AV, HV, CV, etc.)
+to and from that type. The following sections list all XS types
+that come with perl by default.
+
+=over 4
+
+=item T_SV
+
+This simply passes the C representation of the Perl variable (an SV*)
+in and out of the XS layer. This can be used if the C code wants
+to deal directly with the Perl variable.
+
+=item T_SVREF
+
+Used to pass in and return a reference to an SV.
+
+Note that this typemap does not decrement the reference count
+when returning the reference to an SV*.
+See also: T_SVREF_REFCOUNT_FIXED
+
+=item T_SVREF_FIXED
+
+Used to pass in and return a reference to an SV.
+This is a fixed
+variant of T_SVREF that decrements the refcount appropriately
+when returning a reference to an SV*. Introduced in perl 5.15.4.
+
+=item T_AVREF
+
+From the perl level this is a reference to a perl array.
+From the C level this is a pointer to an AV.
+
+Note that this typemap does not decrement the reference count
+when returning an AV*. See also: T_AVREF_REFCOUNT_FIXED
+
+=item T_AVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl array.
+From the C level this is a pointer to an AV. This is a fixed
+variant of T_AVREF that decrements the refcount appropriately
+when returning an AV*. Introduced in perl 5.15.4.
+
+=item T_HVREF
+
+From the perl level this is a reference to a perl hash.
+From the C level this is a pointer to an HV.
+
+Note that this typemap does not decrement the reference count
+when returning an HV*. See also: T_HVREF_REFCOUNT_FIXED
+
+=item T_HVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl hash.
+From the C level this is a pointer to an HV. This is a fixed
+variant of T_HVREF that decrements the refcount appropriately
+when returning an HV*. Introduced in perl 5.15.4.
+
+=item T_CVREF
+
+From the perl level this is a reference to a perl subroutine
+(e.g. $sub = sub { 1 };). From the C level this is a pointer
+to a CV.
+
+Note that this typemap does not decrement the reference count
+when returning an HV*. See also: T_HVREF_REFCOUNT_FIXED
+
+=item T_CVREF_REFCOUNT_FIXED
+
+From the perl level this is a reference to a perl subroutine
+(e.g. $sub = sub { 1 };). From the C level this is a pointer
+to a CV.
+
+This is a fixed
+variant of T_HVREF that decrements the refcount appropriately
+when returning an HV*. Introduced in perl 5.15.4.
+
+=item T_SYSRET
+
+The T_SYSRET typemap is used to process return values from system calls.
+It is only meaningful when passing values from C to perl (there is
+no concept of passing a system return value from Perl to C).
+
+System calls return -1 on error (setting ERRNO with the reason)
+and (usually) 0 on success. If the return value is -1 this typemap
+returns C<undef>. If the return value is not -1, this typemap
+translates a 0 (perl false) to "0 but true" (which
+is perl true) or returns the value itself, to indicate that the
+command succeeded.
+
+The L<POSIX|POSIX> module makes extensive use of this type.
+
+=item T_UV
+
+An unsigned integer.
+
+=item T_IV
+
+A signed integer. This is cast to the required integer type when
+passed to C and converted to an IV when passed back to Perl.
+
+=item T_INT
+
+A signed integer. This typemap converts the Perl value to a native
+integer type (the C<int> type on the current platform). When returning
+the value to perl it is processed in the same way as for T_IV.
+
+Its behaviour is identical to using an C<int> type in XS with T_IV.
+
+=item T_ENUM
+
+An enum value. Used to transfer an enum component
+from C. There is no reason to pass an enum value to C since
+it is stored as an IV inside perl.
+
+=item T_BOOL
+
+A boolean type. This can be used to pass true and false values to and
+from C.
+
+=item T_U_INT
+
+This is for unsigned integers. It is equivalent to using T_UV
+but explicitly casts the variable to type C<unsigned int>.
+The default type for C<unsigned int> is T_UV.
+
+=item T_SHORT
+
+Short integers. This is equivalent to T_IV but explicitly casts
+the return to type C<short>. The default typemap for C<short>
+is T_IV.
+
+=item T_U_SHORT
+
+Unsigned short integers. This is equivalent to T_UV but explicitly
+casts the return to type C<unsigned short>. The default typemap for
+C<unsigned short> is T_UV.
+
+T_U_SHORT is used for type C<U16> in the standard typemap.
+
+=item T_LONG
+
+Long integers. This is equivalent to T_IV but explicitly casts
+the return to type C<long>. The default typemap for C<long>
+is T_IV.
+
+=item T_U_LONG
+
+Unsigned long integers. This is equivalent to T_UV but explicitly
+casts the return to type C<unsigned long>. The default typemap for
+C<unsigned long> is T_UV.
+
+T_U_LONG is used for type C<U32> in the standard typemap.
+
+=item T_CHAR
+
+Single 8-bit characters.
+
+=item T_U_CHAR
+
+An unsigned byte.
+
+=item T_FLOAT
+
+A floating point number. This typemap guarantees to return a variable
+cast to a C<float>.
+
+=item T_NV
+
+A Perl floating point number. Similar to T_IV and T_UV in that the
+return type is cast to the requested numeric type rather than
+to a specific type.
+
+=item T_DOUBLE
+
+A double precision floating point number. This typemap guarantees to
+return a variable cast to a C<double>.
+
+=item T_PV
+
+A string (char *).
+
+=item T_PTR
+
+A memory address (pointer). Typically associated with a C<void *>
+type.
+
+=item T_PTRREF
+
+Similar to T_PTR except that the pointer is stored in a scalar and the
+reference to that scalar is returned to the caller. This can be used
+to hide the actual pointer value from the programmer since it is usually
+not required directly from within perl.
+
+The typemap checks that a scalar reference is passed from perl to XS.
+
+=item T_PTROBJ
+
+Similar to T_PTRREF except that the reference is blessed into a class.
+This allows the pointer to be used as an object. Most commonly used to
+deal with C structs. The typemap checks that the perl object passed
+into the XS routine is of the correct class (or part of a subclass).
+
+The pointer is blessed into a class that is derived from the name
+of type of the pointer but with all '*' in the name replaced with
+'Ptr'.
+
+=item T_REF_IV_REF
+
+NOT YET
+
+=item T_REF_IV_PTR
+
+Similar to T_PTROBJ in that the pointer is blessed into a scalar object.
+The difference is that when the object is passed back into XS it must be
+of the correct type (inheritance is not supported).
+
+The pointer is blessed into a class that is derived from the name
+of type of the pointer but with all '*' in the name replaced with
+'Ptr'.
+
+=item T_PTRDESC
+
+NOT YET
+
+=item T_REFREF
+
+Similar to T_PTRREF, except the pointer stored in the referenced scalar
+is dereferenced and copied to the output variable. This means that
+T_REFREF is to T_PTRREF as T_OPAQUE is to T_OPAQUEPTR. All clear?
+
+Only the INPUT part of this is implemented (Perl to XSUB) and there
+are no known users in core or on CPAN.
+
+=item T_REFOBJ
+
+NOT YET
+
+=item T_OPAQUEPTR
+
+This can be used to store bytes in the string component of the
+SV. Here the representation of the data is irrelevant to perl and the
+bytes themselves are just stored in the SV. It is assumed that the C
+variable is a pointer (the bytes are copied from that memory
+location).  If the pointer is pointing to something that is
+represented by 8 bytes then those 8 bytes are stored in the SV (and
+length() will report a value of 8). This entry is similar to T_OPAQUE.
+
+In principle the unpack() command can be used to convert the bytes
+back to a number (if the underlying type is known to be a number).
+
+This entry can be used to store a C structure (the number
+of bytes to be copied is calculated using the C C<sizeof> function)
+and can be used as an alternative to T_PTRREF without having to worry
+about a memory leak (since Perl will clean up the SV).
+
+=item T_OPAQUE
+
+This can be used to store data from non-pointer types in the string
+part of an SV. It is similar to T_OPAQUEPTR except that the
+typemap retrieves the pointer directly rather than assuming it
+is being supplied. For example, if an integer is imported into
+Perl using T_OPAQUE rather than T_IV the underlying bytes representing
+the integer will be stored in the SV but the actual integer value will
+not be available. i.e. The data is opaque to perl.
+
+The data may be retrieved using the C<unpack> function if the
+underlying type of the byte stream is known.
+
+T_OPAQUE supports input and output of simple types.
+T_OPAQUEPTR can be used to pass these bytes back into C if a pointer
+is acceptable.
+
+=item Implicit array
+
+xsubpp supports a special syntax for returning
+packed C arrays to perl. If the XS return type is given as
+
+  array(type, nelem)
+
+xsubpp will copy the contents of C<nelem * sizeof(type)> bytes from
+RETVAL to an SV and push it onto the stack. This is only really useful
+if the number of items to be returned is known at compile time and you
+don't mind having a string of bytes in your SV.  Use T_ARRAY to push a
+variable number of arguments onto the return stack (they won't be
+packed as a single string though).
+
+This is similar to using T_OPAQUEPTR but can be used to process more
+than one element.
+
+=item T_PACKED
+
+Calls user-supplied functions for conversion. For C<OUTPUT>
+(XSUB to Perl), a function named C<XS_pack_$ntype> is called
+with the output Perl scalar and the C variable to convert from.
+C<$ntype> is the normalized C type that is to be mapped to
+Perl. Normalized means that all C<*> are replaced by the
+string C<Ptr>. The return value of the function is ignored.
+
+Conversely for C<INPUT> (Perl to XSUB) mapping, the
+function named C<XS_unpack_$ntype> is called with the input Perl
+scalar as argument and the return value is cast to the mapped
+C type and assigned to the output C variable.
+
+An example conversion function for a typemapped struct
+C<foo_t *> might be:
+
+  static void
+  XS_pack_foo_tPtr(SV *out, foo_t *in)
+  {
+    dTHX; /* alas, signature does not include pTHX_ */
+    HV* hash = newHV();
+    hv_stores(hash, "int_member", newSViv(in->int_member));
+    hv_stores(hash, "float_member", newSVnv(in->float_member));
+    /* ... */
+
+    /* mortalize as thy stack is not refcounted */
+    sv_setsv(out, sv_2mortal(newRV_noinc((SV*)hash)));
+  }
+
+The conversion from Perl to C is left as an exercise to the reader,
+but the prototype would be:
+
+  static foo_t *
+  XS_unpack_foo_tPtr(SV *in);
+
+Instead of an actual C function that has to fetch the thread context
+using C<dTHX>, you can define macros of the same name and avoid the
+overhead. Also, keep in mind to possibly free the memory allocated by
+C<XS_unpack_foo_tPtr>.
+
+=item T_PACKEDARRAY
+
+T_PACKEDARRAY is similar to T_PACKED. In fact, the C<INPUT> (Perl
+to XSUB) typemap is indentical, but the C<OUTPUT> typemap passes
+an additional argument to the C<XS_pack_$ntype> function. This
+third parameter indicates the number of elements in the output
+so that the function can handle C arrays sanely. The variable
+needs to be declared by the user and must have the name
+C<count_$ntype> where C<$ntype> is the normalized C type name
+as explained above. The signature of the function would be for
+the example above and C<foo_t **>:
+
+  static void
+  XS_pack_foo_tPtrPtr(SV *out, foo_t *in, UV count_foo_tPtrPtr);
+
+The type of the third parameter is arbitrary as far as the typemap
+is concerned. It just has to be in line with the declared variable.
+
+Of course, unless you know the number of elements in the
+C<sometype **> C array, within your XSUB, the return value from
+C<foo_t ** XS_unpack_foo_tPtrPtr(...)> will be hard to decypher.
+Since the details are all up to the XS author (the typemap user),
+there are several solutions, none of which particularly elegant.
+The most commonly seen solution has been to allocate memory for
+N+1 pointers and assign C<NULL> to the (N+1)th to facilitate
+iteration.
+
+Alternatively, using a customized typemap for your purposes in
+the first place is probably preferrable.
+
+=item T_DATAUNIT
+
+NOT YET
+
+=item T_CALLBACK
+
+NOT YET
+
+=item T_ARRAY
+
+This is used to convert the perl argument list to a C array
+and for pushing the contents of a C array onto the perl
+argument stack.
+
+The usual calling signature is
+
+  @out = array_func( @in );
+
+Any number of arguments can occur in the list before the array but
+the input and output arrays must be the last elements in the list.
+
+When used to pass a perl list to C the XS writer must provide a
+function (named after the array type but with 'Ptr' substituted for
+'*') to allocate the memory required to hold the list. A pointer
+should be returned. It is up to the XS writer to free the memory on
+exit from the function. The variable C<ix_$var> is set to the number
+of elements in the new array.
+
+When returning a C array to Perl the XS writer must provide an integer
+variable called C<size_$var> containing the number of elements in the
+array. This is used to determine how many elements should be pushed
+onto the return argument stack. This is not required on input since
+Perl knows how many arguments are on the stack when the routine is
+called. Ordinarily this variable would be called C<size_RETVAL>.
+
+Additionally, the type of each element is determined from the type of
+the array. If the array uses type C<intArray *> xsubpp will
+automatically work out that it contains variables of type C<int> and
+use that typemap entry to perform the copy of each element. All
+pointer '*' and 'Array' tags are removed from the name to determine
+the subtype.
+
+=item T_STDIO
+
+This is used for passing perl filehandles to and from C using
+C<FILE *> structures.
+
+=item T_INOUT
+
+This is used for passing perl filehandles to and from C using
+C<PerlIO *> structures. The file handle can used for reading and
+writing. This corresponds to the C<+E<lt>> mode, see also T_IN
+and T_OUT.
+
+See L<perliol> for more information on the Perl IO abstraction
+layer. Perl must have been built with C<-Duseperlio>.
+
+There is no check to assert that the filehandle passed from Perl
+to C was created with the right C<open()> mode.
+
+Hint: The L<perlxstut> tutorial covers the T_INOUT, T_IN, and T_OUT
+XS types nicely.
+
+=item T_IN
+
+Same as T_INOUT, but the filehandle that is returned from C to Perl
+can only be used for reading (mode C<E<lt>>).
+
+=item T_OUT
+
+Same as T_INOUT, but the filehandle that is returned from C to Perl
+is set to use the open mode C<+E<gt>>.
+
+=back
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/001-basic.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/001-basic.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/001-basic.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,89 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 11;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+# Try sending to filehandle
+tie *FH, 'Foo';
+process_file( filename => 'XSTest.xs', output => \*FH, prototypes => 1 );
+like tied(*FH)->content, '/is_even/', "Test that output contains some text";
+
+$source_file = 'XSTest.c';
+
+# Try sending to file
+process_file(filename => 'XSTest.xs', output => $source_file, prototypes => 0);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+  skip "no compiler available", 2
+    if ! $b->have_compiler;
+  $obj_file = $b->compile( source => $source_file );
+  ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+  ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+  skip "no dynamic loading", 5
+    if !$b->have_compiler || !$Config{usedl};
+  my $module = 'XSTest';
+  $lib_file = $b->link( objects => $obj_file, module_name => $module );
+  ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+  ok -e $lib_file,  "Make sure $lib_file exists";
+
+  eval {require XSTest};
+  is $@, '', "No error message recorded, as expected";
+  ok  XSTest::is_even(8),
+    "Function created thru XS returned expected true value";
+  ok !XSTest::is_even(9),
+    "Function created thru XS returned expected false value";
+
+  # Win32 needs to close the DLL before it can unlink it, but unfortunately
+  # dl_unload_file was missing on Win32 prior to perl change #24679!
+  if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+    for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+      if ($DynaLoader::dl_modules[$i] eq $module) {
+        DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+        last;
+      }
+    }
+  }
+}
+
+my $seen = 0;
+open my $IN, '<', $source_file
+  or die "Unable to open $source_file: $!";
+while (my $l = <$IN>) {
+  $seen++ if $l =~ m/#line\s1\s/;
+}
+close $IN or die "Unable to close $source_file: $!";
+is( $seen, 1, "Linenumbers created in output file, as intended" ); 
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+  for ( $obj_file, $lib_file, $source_file) {
+    next unless defined $_;
+    1 while unlink $_;
+  }
+}
+
+#####################################################################
+
+sub Foo::TIEHANDLE { bless {}, 'Foo' }
+sub Foo::PRINT { shift->{buf} .= join '', @_ }
+sub Foo::content { shift->{buf} }

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/002-more.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/002-more.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/002-more.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use Test::More;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+use attributes;
+use overload;
+
+plan tests => 28;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+$source_file = 'XSMore.c';
+
+# Try sending to file
+ExtUtils::ParseXS->process_file(
+	filename => 'XSMore.xs',
+	output   => $source_file,
+);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+  skip "no compiler available", 2
+    if ! $b->have_compiler;
+  $obj_file = $b->compile( source => $source_file );
+  ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+  ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+  skip "no dynamic loading", 24
+    if !$b->have_compiler || !$Config{usedl};
+  my $module = 'XSMore';
+  $lib_file = $b->link( objects => $obj_file, module_name => $module );
+  ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+  ok -e $lib_file,  "Make sure $lib_file exists";
+
+  eval{
+    package XSMore;
+    our $VERSION = 42;
+    our $boot_ok;
+    DynaLoader::bootstrap_inherit(__PACKAGE__, $VERSION); # VERSIONCHECK disabled
+
+    sub new{ bless {}, shift }
+  };
+  is $@, '', "No error message recorded, as expected";
+  is ExtUtils::ParseXS::report_error_count(), 0, 'ExtUtils::ParseXS::errors()';
+
+  is $XSMore::boot_ok, 100, 'the BOOT keyword';
+
+  ok XSMore::include_ok(), 'the INCLUDE keyword';
+  is prototype(\&XSMore::include_ok), "", 'the PROTOTYPES keyword';
+
+  is prototype(\&XSMore::prototype_ssa), '$$@', 'the PROTOTYPE keyword';
+
+  is_deeply [attributes::get(\&XSMore::attr_method)], [qw(method)], 'the ATTRS keyword';
+  is prototype(\&XSMore::attr_method), '$;@', 'ATTRS with prototype';
+
+  is XSMore::return_1(), 1, 'the CASE keyword (1)';
+  is XSMore::return_2(), 2, 'the CASE keyword (2)';
+  is prototype(\&XSMore::return_1), "", 'ALIAS with prototype (1)';
+  is prototype(\&XSMore::return_2), "", 'ALIAS with prototype (2)';
+
+  is XSMore::arg_init(200), 200, 'argument init';
+
+  ok overload::Overloaded(XSMore->new), 'the FALLBACK keyword';
+  is abs(XSMore->new), 42, 'the OVERLOAD keyword';
+
+  my @a;
+  XSMore::hook(\@a);
+  is_deeply \@a, [qw(INIT CODE POSTCALL CLEANUP)], 'the INIT & POSTCALL & CLEANUP keywords';
+
+  is_deeply [XSMore::outlist()], [ord('a'), ord('b')], 'the OUTLIST keyword';
+
+  is XSMore::len("foo"), 3, 'the length keyword';
+
+  is XSMore::sum(5, 9), 14, 'the INCLUDE_COMMAND directive';
+
+  # Tests for embedded typemaps
+  is XSMore::typemaptest1(), 42, 'Simple embedded typemap works';
+  is XSMore::typemaptest2(), 42, 'Simple embedded typemap works with funny end marker';
+  is XSMore::typemaptest3(12, 13, 14), 12, 'Simple embedded typemap works for input, too';
+
+  # Win32 needs to close the DLL before it can unlink it, but unfortunately
+  # dl_unload_file was missing on Win32 prior to perl change #24679!
+  if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+    for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+      if ($DynaLoader::dl_modules[$i] eq $module) {
+        DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+        last;
+      }
+    }
+  }
+}
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+  for ( $obj_file, $lib_file, $source_file) {
+    next unless defined $_;
+    1 while unlink $_;
+  }
+}

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/003-usage.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/003-usage.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/003-usage.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,117 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+if ( $] < 5.008 ) {
+  plan skip_all => "INTERFACE keyword support broken before 5.8";
+}
+else {
+  plan tests => 24;
+}
+
+my ($source_file, $obj_file, $lib_file, $module);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+$source_file = 'XSUsage.c';
+
+# Try sending to file
+process_file(filename => 'XSUsage.xs', output => $source_file);
+ok -e $source_file, "Create an output file";
+
+# TEST doesn't like extraneous output
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+
+# Try to compile the file!  Don't get too fancy, though.
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+  skip "no compiler available", 2
+    if ! $b->have_compiler;
+  $module = 'XSUsage';
+
+  $obj_file = $b->compile( source => $source_file );
+  ok $obj_file;
+  ok -e $obj_file, "Make sure $obj_file exists";
+}
+SKIP: {
+  skip "no dynamic loading", 20 
+    if !$b->have_compiler || !$Config{usedl};
+
+  $lib_file = $b->link( objects => $obj_file, module_name => $module );
+  ok $lib_file;
+  ok -e $lib_file, "Make sure $lib_file exists";
+
+  eval {require XSUsage};
+  is $@, '';
+
+  # The real tests here - for each way of calling the functions, call with the
+  # wrong number of arguments and check the Usage line is what we expect
+
+  eval { XSUsage::one(1) };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::one/;
+
+  eval { XSUsage::two(1) };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::two/;
+
+  eval { XSUsage::two_x(1) };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::two_x/;
+
+  eval { FOO::two(1) };
+  ok $@;
+  ok $@ =~ /^Usage: FOO::two/;
+
+  eval { XSUsage::three(1) };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::three/;
+
+  eval { XSUsage::four(1) };
+  ok !$@;
+
+  eval { XSUsage::five() };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::five/;
+
+  eval { XSUsage::six() };
+  ok !$@;
+
+  eval { XSUsage::six(1) };
+  ok !$@;
+
+  eval { XSUsage::six(1,2) };
+  ok $@;
+  ok $@ =~ /^Usage: XSUsage::six/;
+
+  # Win32 needs to close the DLL before it can unlink it, but unfortunately
+  # dl_unload_file was missing on Win32 prior to perl change #24679!
+  if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+    for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+      if ($DynaLoader::dl_modules[$i] eq $module) {
+        DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+        last;
+      }
+    }
+  }
+}
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+  for ( $obj_file, $lib_file, $source_file) {
+    next unless defined $_;
+    1 while unlink $_;
+  }
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/004-nolinenumbers.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,100 @@
+#!/usr/bin/perl
+
+use strict;
+use Test::More tests => 11;
+use Config;
+use DynaLoader;
+use ExtUtils::CBuilder;
+
+my ($source_file, $obj_file, $lib_file);
+
+require_ok( 'ExtUtils::ParseXS' );
+ExtUtils::ParseXS->import('process_file');
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+use Carp; $SIG{__WARN__} = \&Carp::cluck;
+
+#########################
+
+# Try sending to filehandle
+tie *FH, 'Foo';
+process_file(
+    filename => 'XSTest.xs',
+    output => \*FH,
+    prototypes => 1,
+    linenumbers => 0,
+);
+like tied(*FH)->content, '/is_even/', "Test that output contains some text";
+
+$source_file = 'XSTest.c';
+
+# Try sending to file
+process_file(
+    filename => 'XSTest.xs',
+    output => $source_file,
+    prototypes => 0,
+    linenumbers => 0,
+);
+ok -e $source_file, "Create an output file";
+
+my $quiet = $ENV{PERL_CORE} && !$ENV{HARNESS_ACTIVE};
+my $b = ExtUtils::CBuilder->new(quiet => $quiet);
+
+SKIP: {
+  skip "no compiler available", 2
+    if ! $b->have_compiler;
+  $obj_file = $b->compile( source => $source_file );
+  ok $obj_file, "ExtUtils::CBuilder::compile() returned true value";
+  ok -e $obj_file, "Make sure $obj_file exists";
+}
+
+SKIP: {
+  skip "no dynamic loading", 5
+    if !$b->have_compiler || !$Config{usedl};
+  my $module = 'XSTest';
+  $lib_file = $b->link( objects => $obj_file, module_name => $module );
+  ok $lib_file, "ExtUtils::CBuilder::link() returned true value";
+  ok -e $lib_file,  "Make sure $lib_file exists";
+
+  eval {require XSTest};
+  is $@, '', "No error message recorded, as expected";
+  ok  XSTest::is_even(8),
+    "Function created thru XS returned expected true value";
+  ok !XSTest::is_even(9),
+    "Function created thru XS returned expected false value";
+
+  # Win32 needs to close the DLL before it can unlink it, but unfortunately
+  # dl_unload_file was missing on Win32 prior to perl change #24679!
+  if ($^O eq 'MSWin32' and defined &DynaLoader::dl_unload_file) {
+    for (my $i = 0; $i < @DynaLoader::dl_modules; $i++) {
+      if ($DynaLoader::dl_modules[$i] eq $module) {
+        DynaLoader::dl_unload_file($DynaLoader::dl_librefs[$i]);
+        last;
+      }
+    }
+  }
+}
+
+my $seen = 0;
+open my $IN, '<', $source_file
+  or die "Unable to open $source_file: $!";
+while (my $l = <$IN>) {
+  $seen++ if $l =~ m/#line\s1\s/;
+}
+close $IN or die "Unable to close $source_file: $!";
+is( $seen, 0, "No linenumbers created in output file, as intended" ); 
+
+
+unless ($ENV{PERL_NO_CLEANUP}) {
+  for ( $obj_file, $lib_file, $source_file) {
+    next unless defined $_;
+    1 while unlink $_;
+  }
+}
+
+#####################################################################
+
+sub Foo::TIEHANDLE { bless {}, 'Foo' }
+sub Foo::PRINT { shift->{buf} .= join '', @_ }
+sub Foo::content { shift->{buf} }

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/101-standard_typemap_locations.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests =>  3;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  standard_typemap_locations
+);
+
+{
+    local @INC = @INC;
+    my @stl = standard_typemap_locations( \@INC );
+    ok( @stl >= 9, "At least 9 entries in typemap locations list" );
+    is( $stl[$#stl], 'typemap',
+        "Last element is typemap in current directory");
+    SKIP: {
+        skip "No lib/ExtUtils/ directories under directories in \@INC",
+        1
+        unless @stl > 9;
+
+        # We check only as many location entries from the start of the array
+        # (where the @INC-related entries are) as there are entries from @INC.
+        # We manage to do that by stopping when we find the "updir" related
+        # entries, which we assume is never contained in a default @INC entry.
+        my $updir = File::Spec->updir;
+        my $max = $#INC;
+        $max = $#stl if $#stl < $max;
+        foreach my $i (0.. $max) {
+          $max = $i, last if $stl[$i] =~ /\Q$updir\E/;
+        }
+
+        ok(
+            ( 0 < (grep -f $_, @stl[0..$max]) ),
+            "At least one typemap file exists underneath \@INC directories"
+        );
+    }
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/102-trim_whitespace.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,30 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests =>  5;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  trim_whitespace
+);
+
+my $str;
+
+$str = 'overworked';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = '  overworked';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = 'overworked  ';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = '  overworked  ';
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );
+
+$str = "\toverworked";
+trim_whitespace($str);
+is( $str, 'overworked', "Got expected value" );

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/103-tidy_type.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/103-tidy_type.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/103-tidy_type.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests =>  3;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  tidy_type
+);
+
+my $input;
+
+$input = ' *  ** ';
+is( tidy_type($input), '***',
+    "Got expected value for '$input'" );
+
+$input = ' *     ** ';
+is( tidy_type($input), '***',
+    "Got expected value for '$input'" );
+
+$input = ' *     ** foobar  *  ';
+is( tidy_type($input), '*** foobar *',
+    "Got expected value for '$input'" );
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/104-map_type.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/104-map_type.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/104-map_type.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  map_type
+);
+
+my ($self, $type, $varname);
+my ($result, $expected);
+
+$type = 'struct DATA *';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "$type\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'Crypt::Shark';
+$varname = undef;
+$self->{hiertype} = 0;
+$expected = 'Crypt__Shark';
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, undef, <$self->{hiertype}>" );
+
+$type = 'Crypt::Shark';
+$varname = undef;
+$self->{hiertype} = 1;
+$expected = 'Crypt::Shark';
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, undef, <$self->{hiertype}>" );
+
+$type = 'Crypt::TC18';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "Crypt__TC18\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'Crypt::TC18';
+$varname = 'RETVAL';
+$self->{hiertype} = 1;
+$expected = "Crypt::TC18\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = 'array(alpha,beta) gamma';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "alpha *\t$varname";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );
+
+$type = '(*)';
+$varname = 'RETVAL';
+$self->{hiertype} = 0;
+$expected = "(* $varname )";
+$result = map_type($self, $type, $varname);
+is( $result, $expected,
+    "Got expected map_type for <$type>, <$varname>, <$self->{hiertype}>" );

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/105-valid_proto_string.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Test::More tests =>  6;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  valid_proto_string
+);
+
+my ($input, $output);
+
+$input = '[\$]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[$]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[\$\@]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+
+$input = '[\$alpha]';
+$output = valid_proto_string($input);
+is( $output, 0, "Got expected value for <$input>" );
+
+$input = '[alpha]';
+$output = valid_proto_string($input);
+is( $output, 0, "Got expected value for <$input>" );
+
+$input = '[_]';
+$output = valid_proto_string($input);
+is( $output, $input, "Got expected value for <$input>" );
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/106-process_typemaps.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/106-process_typemaps.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/106-process_typemaps.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests =>  2;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+  process_typemaps
+);
+
+my $startdir  = cwd();
+{
+    my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+    my $typemap = 'typemap';
+    my $tdir = tempdir( CLEANUP => 1 );
+    chdir $tdir or croak "Unable to change to tempdir for testing";
+    eval {
+        ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+            = process_typemaps( $typemap, $tdir );
+    };
+    like( $@, qr/Can't find \Q$typemap\E in \Q$tdir\E/, #'
+        "Got expected result for no typemap in current directory" );
+    chdir $startdir;
+}
+
+{
+    my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+    my $typemap = [ qw( pseudo typemap ) ];
+    my $tdir = tempdir( CLEANUP => 1 );
+    chdir $tdir or croak "Unable to change to tempdir for testing";
+    open my $IN, '>', 'typemap' or croak "Cannot open for writing";
+    print $IN "\n";
+    close $IN or croak "Cannot close after writing";
+    eval {
+        ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+            = process_typemaps( $typemap, $tdir );
+    };
+    like( $@, qr/Can't find pseudo in \Q$tdir\E/, #'
+        "Got expected result for no typemap in current directory" );
+    chdir $startdir;
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/107-make_targetable.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/107-make_targetable.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/107-make_targetable.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,146 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+    make_targetable
+);
+
+my $output_expr_ref = {
+  'T_CALLBACK' => '	sv_setpvn($arg, $var.context.value().chp(),
+		$var.context.value().size());
+',
+  'T_OUT' => '	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+',
+  'T_REF_IV_PTR' => '	sv_setref_pv($arg, \\"${ntype}\\", (void*)$var);
+',
+  'T_U_LONG' => '	sv_setuv($arg, (UV)$var);
+',
+  'T_U_CHAR' => '	sv_setuv($arg, (UV)$var);
+',
+  'T_U_INT' => '	sv_setuv($arg, (UV)$var);
+',
+  'T_ARRAY' => '        {
+	    U32 ix_$var;
+	    EXTEND(SP,size_$var);
+	    for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
+		ST(ix_$var) = sv_newmortal();
+	DO_ARRAY_ELEM
+	    }
+        }
+',
+  'T_NV' => '	sv_setnv($arg, (NV)$var);
+',
+  'T_SHORT' => '	sv_setiv($arg, (IV)$var);
+',
+  'T_OPAQUE' => '	sv_setpvn($arg, (char *)&$var, sizeof($var));
+',
+  'T_PTROBJ' => '	sv_setref_pv($arg, \\"${ntype}\\", (void*)$var);
+',
+  'T_HVREF' => '	$arg = newRV((SV*)$var);
+',
+  'T_PACKEDARRAY' => '	XS_pack_$ntype($arg, $var, count_$ntype);
+',
+  'T_INT' => '	sv_setiv($arg, (IV)$var);
+',
+  'T_OPAQUEPTR' => '	sv_setpvn($arg, (char *)$var, sizeof(*$var));
+',
+  'T_BOOL' => '	$arg = boolSV($var);
+',
+  'T_REFREF' => '	NOT_IMPLEMENTED
+',
+  'T_REF_IV_REF' => '	sv_setref_pv($arg, \\"${ntype}\\", (void*)new $ntype($var));
+',
+  'T_STDIO' => '	{
+	    GV *gv = newGVgen("$Package");
+	    PerlIO *fp = PerlIO_importFILE($var,0);
+	    if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+',
+  'T_FLOAT' => '	sv_setnv($arg, (double)$var);
+',
+  'T_IN' => '	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+',
+  'T_PV' => '	sv_setpv((SV*)$arg, $var);
+',
+  'T_INOUT' => '	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+',
+  'T_CHAR' => '	sv_setpvn($arg, (char *)&$var, 1);
+',
+  'T_LONG' => '	sv_setiv($arg, (IV)$var);
+',
+  'T_DOUBLE' => '	sv_setnv($arg, (double)$var);
+',
+  'T_PTR' => '	sv_setiv($arg, PTR2IV($var));
+',
+  'T_AVREF' => '	$arg = newRV((SV*)$var);
+',
+  'T_SV' => '	$arg = $var;
+',
+  'T_ENUM' => '	sv_setiv($arg, (IV)$var);
+',
+  'T_REFOBJ' => '	NOT IMPLEMENTED
+',
+  'T_CVREF' => '	$arg = newRV((SV*)$var);
+',
+  'T_UV' => '	sv_setuv($arg, (UV)$var);
+',
+  'T_PACKED' => '	XS_pack_$ntype($arg, $var);
+',
+  'T_SYSRET' => '	if ($var != -1) {
+	    if ($var == 0)
+		sv_setpvn($arg, "0 but true", 10);
+	    else
+		sv_setiv($arg, (IV)$var);
+	}
+',
+  'T_IV' => '	sv_setiv($arg, (IV)$var);
+',
+  'T_PTRDESC' => '	sv_setref_pv($arg, \\"${ntype}\\", (void*)new\\U${type}_DESC\\E($var));
+',
+  'T_DATAUNIT' => '	sv_setpvn($arg, $var.chp(), $var.size());
+',
+  'T_U_SHORT' => '	sv_setuv($arg, (UV)$var);
+',
+  'T_SVREF' => '	$arg = newRV((SV*)$var);
+',
+  'T_PTRREF' => '	sv_setref_pv($arg, Nullch, (void*)$var);
+',
+};
+
+my %targetable;
+%targetable = make_targetable($output_expr_ref);
+
+ok(! exists $targetable{'T_AVREF'},
+    "Element found in 'output_expr' not found in \%targetable: not an 'sv_set'" );
+
+ok(exists $targetable{'T_CALLBACK'},
+    "Element found in 'output_expr' found in \%targetable as expected" );
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/108-map_type.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/108-map_type.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/108-map_type.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+    map_type
+);
+
+#print "\t" . map_type($self->{ret_type}, 'RETVAL', $self->{hiertype}) . ";\n"
+#print "\t" . map_type($var_type, $var_name, $self->{hiertype});
+#print "\t" . map_type($var_type, undef, $self->{hiertype});
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/109-standard_XS_defs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Test::More tests => 5;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS::Utilities qw(
+    standard_XS_defs
+);
+use PrimitiveCapture;
+
+my @statements = (
+    '#ifndef PERL_UNUSED_VAR',
+    '#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE',
+    '#ifdef PERL_IMPLICIT_CONTEXT',
+    '#ifdef newXS_flags',
+);
+
+my $stdout = PrimitiveCapture::capture_stdout(sub {
+  standard_XS_defs();
+});
+
+foreach my $s (@statements) {
+    like( $stdout, qr/$s/s, "Printed <$s>" );
+}
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/110-assign_func_args.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/110-assign_func_args.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/110-assign_func_args.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,52 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+    assign_func_args
+);
+
+#sub assign_func_args {
+#  my ($self, $argsref, $class) = @_;
+#  return join(", ", @func_args);
+
+my ($self, @args, $class);
+my ($func_args, $expected);
+
+ at args = qw( alpha beta gamma );
+$self->{in_out}->{alpha} = 'OUT';
+$expected = q|&alpha, beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+    "Got expected func_args: in_out true; class undefined" );
+
+ at args = ( 'My::Class', qw( beta gamma ) );
+$self->{in_out}->{beta} = 'OUT';
+$class = 'My::Class';
+$expected = q|&beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+    "Got expected func_args: in_out true; class defined" );
+
+ at args = ( 'My::Class', qw( beta gamma ) );
+$self->{in_out}->{beta} = '';
+$class = 'My::Class';
+$expected = q|beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+    "Got expected func_args: in_out false; class defined" );
+
+ at args = qw( alpha beta gamma );
+$self->{in_out}->{alpha} = '';
+$class = undef;
+$expected = q|alpha, beta, gamma|;
+$func_args = assign_func_args($self, \@args, $class);
+is( $func_args, $expected,
+    "Got expected func_args: in_out false; class undefined" );
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/111-analyze_preprocessor_statements.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+    analyze_preprocessor_statements
+);
+
+#      ( $self, $XSS_work_idx, $BootCode_ref ) =
+#        analyze_preprocessor_statements(
+#          $self, $statement, $XSS_work_idx, $BootCode_ref
+#        );
+
+pass("Passed all tests in $0");
+
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/112-set_cond.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/112-set_cond.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/112-set_cond.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More qw(no_plan); # tests =>  7;
+use lib qw( lib );
+use ExtUtils::ParseXS::Utilities qw(
+    set_cond
+);
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/113-check_cond_preproc_statements.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,149 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests => 13;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS;
+use ExtUtils::ParseXS::Utilities qw(
+    check_conditional_preprocessor_statements
+);
+use PrimitiveCapture;
+
+my $self = bless({} => 'ExtUtils::ParseXS');
+$self->{line} = [];
+$self->{XSStack} = [];
+$self->{XSStack}->[0] = {};
+
+{
+    $self->{line} = [
+        "#if this_is_an_if_statement",
+        "Alpha this is not an if/elif/elsif/endif",
+        "#elif this_is_an_elif_statement",
+        "Beta this is not an if/elif/elsif/endif",
+        "#else this_is_an_else_statement",
+        "Gamma this is not an if/elif/elsif/endif",
+        "#endif this_is_an_endif_statement",
+    ];
+    $self->{line_no} = [ 17 .. 23 ];
+    $self->{XSStack}->[-1]{type} = 'if';
+    $self->{filename} = 'myfile1';
+
+    my $rv;
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        $rv = check_conditional_preprocessor_statements($self);
+    });
+        
+    is( $rv, 0, "Basic case: returned 0: all ifs resolved" );
+    ok( ! $stderr, "No warnings captured, as expected" );
+}
+
+{
+    $self->{line} = [
+        "#if this_is_an_if_statement",
+        "Alpha this is not an if/elif/elsif/endif",
+        "#if this_is_a_different_if_statement",
+        "Beta this is not an if/elif/elsif/endif",
+        "#endif this_is_a_different_endif_statement",
+        "Gamma this is not an if/elif/elsif/endif",
+        "#endif this_is_an_endif_statement",
+    ];
+    $self->{line_no} = [ 17 .. 23 ];
+    $self->{XSStack}->[-1]{type} = 'if';
+    $self->{filename} = 'myfile1';
+
+    my $rv;
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        $rv = check_conditional_preprocessor_statements($self);
+    });
+    is( $rv, 0, "One nested if case: returned 0: all ifs resolved" );
+    ok( ! $stderr, "No warnings captured, as expected" );
+}
+
+{
+    $self->{line} = [
+        "Alpha this is not an if/elif/elsif/endif",
+        "#elif this_is_an_elif_statement",
+        "Beta this is not an if/elif/elsif/endif",
+        "#else this_is_an_else_statement",
+        "Gamma this is not an if/elif/elsif/endif",
+        "#endif this_is_an_endif_statement",
+    ];
+    $self->{line_no} = [ 17 .. 22 ];
+    $self->{XSStack}->[-1]{type} = 'if';
+    $self->{filename} = 'myfile1';
+
+    my $rv;
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        $rv = check_conditional_preprocessor_statements($self);
+    });
+    is( $rv, undef,
+        "Missing 'if' case: returned undef: all ifs resolved" );
+    like( $stderr,
+        qr/Warning: #else\/elif\/endif without #if in this function/,
+        "Got expected warning: lack of #if"
+    );
+    like( $stderr,
+        qr/precede it with a blank line/s,
+        "Got expected warning: advice re blank line"
+    );
+}
+
+{
+    $self->{line} = [
+        "Alpha this is not an if/elif/elsif/endif",
+        "#elif this_is_an_elif_statement",
+        "Beta this is not an if/elif/elsif/endif",
+        "#else this_is_an_else_statement",
+        "Gamma this is not an if/elif/elsif/endif",
+        "#endif this_is_an_endif_statement",
+    ];
+    $self->{line_no} = [ 17 .. 22 ];
+    $self->{XSStack}->[-1]{type} = 'file';
+    $self->{filename} = 'myfile1';
+
+    my $rv;
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        $rv = check_conditional_preprocessor_statements($self);
+    });
+    is( $rv, undef,
+        "Missing 'if' case: returned undef: all ifs resolved" );
+    like( $stderr,
+        qr/Warning: #else\/elif\/endif without #if in this function/,
+        "Got expected warning: lack of #if"
+    );
+    unlike( $stderr,
+        qr/precede it with a blank line/s,
+        "Did not get unexpected stderr"
+    );
+}
+
+{
+    $self->{line} = [
+        "#if this_is_an_if_statement",
+        "Alpha this is not an if/elif/elsif/endif",
+        "#elif this_is_an_elif_statement",
+        "Beta this is not an if/elif/elsif/endif",
+        "#else this_is_an_else_statement",
+        "Gamma this is not an if/elif/elsif/endif",
+    ];
+    $self->{line_no} = [ 17 .. 22 ];
+    $self->{XSStack}->[-1]{type} = 'if';
+    $self->{filename} = 'myfile1';
+
+    my $rv;
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        $rv = check_conditional_preprocessor_statements($self);
+    });
+    isnt( $rv, 0,
+        "Missing 'endif' case: returned non-zero as expected" );
+    like( $stderr,
+        qr/Warning: #if without #endif in this function/s,
+        "Got expected warning: lack of #endif"
+    );
+}
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/114-blurt_death_Warn.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,132 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+$| = 1;
+use Carp;
+use Cwd;
+use File::Spec;
+use File::Temp qw( tempdir );
+use Test::More tests =>  7;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS;
+use ExtUtils::ParseXS::Utilities qw(
+    Warn
+    blurt
+    death
+);
+use PrimitiveCapture;
+
+my $self = bless({} => 'ExtUtils::ParseXS');
+$self->{line} = [];
+$self->{line_no} = [];
+
+{
+    $self->{line} = [
+        'Alpha',
+        'Beta',
+        'Gamma',
+        'Delta',
+    ];
+    $self->{line_no} = [ 17 .. 20 ];
+    $self->{filename} = 'myfile1';
+
+    my $message = 'Warning: Ignoring duplicate alias';
+    
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        Warn( $self, $message);
+    });
+    like( $stderr,
+        qr/$message in $self->{filename}, line 20/,
+        "Got expected Warn output",
+    );
+}
+
+{
+    $self->{line} = [
+        'Alpha',
+        'Beta',
+        'Gamma',
+        'Delta',
+        'Epsilon',
+    ];
+    $self->{line_no} = [ 17 .. 20 ];
+    $self->{filename} = 'myfile2';
+
+    my $message = 'Warning: Ignoring duplicate alias';
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        Warn( $self, $message);
+    });
+    like( $stderr,
+        qr/$message in $self->{filename}, line 19/,
+        "Got expected Warn output",
+    );
+}
+
+{
+    $self->{line} = [
+        'Alpha',
+        'Beta',
+        'Gamma',
+        'Delta',
+    ];
+    $self->{line_no} = [ 17 .. 21 ];
+    $self->{filename} = 'myfile1';
+
+    my $message = 'Warning: Ignoring duplicate alias';
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        Warn( $self, $message);
+    });
+    like( $stderr,
+        qr/$message in $self->{filename}, line 17/,
+        "Got expected Warn output",
+    );
+}
+
+{
+    $self->{line} = [
+        'Alpha',
+        'Beta',
+        'Gamma',
+        'Delta',
+    ];
+    $self->{line_no} = [ 17 .. 20 ];
+    $self->{filename} = 'myfile1';
+    $self->{errors} = 0;
+
+
+    my $message = 'Error: Cannot parse function definition';
+    my $stderr = PrimitiveCapture::capture_stderr(sub {
+        blurt( $self, $message);
+    });
+    like( $stderr,
+        qr/$message in $self->{filename}, line 20/,
+        "Got expected blurt output",
+    );
+    is( $self->{errors}, 1, "Error count incremented correctly" );
+}
+
+SKIP: {
+    skip "death() not testable as long as it contains hard-coded 'exit'", 1;
+
+    $self->{line} = [
+        'Alpha',
+        'Beta',
+        'Gamma',
+        'Delta',
+    ];
+    $self->{line_no} = [ 17 .. 20 ];
+    $self->{filename} = 'myfile1';
+
+    my $message = "Code is not inside a function";
+    eval {
+        my $stderr = PrimitiveCapture::capture_stderr(sub {
+            death( $self, $message);
+        });
+        like( $stderr,
+            qr/$message in $self->{filename}, line 20/,
+            "Got expected death output",
+        );
+    };
+}
+
+pass("Passed all tests in $0");

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/115-avoid-noise.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/115-avoid-noise.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/115-avoid-noise.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+use strict;
+use warnings;
+use File::Spec;
+use Test::More tests =>  1;
+use lib qw( lib t/lib );
+use ExtUtils::ParseXS qw(process_file);
+
+chdir 't' or die "Can't chdir to t/, $!";
+
+# Module-Build uses ExtUtils::ParseXS with $^W set, try to avoid
+# warning in that case.
+
+{
+  my $out;
+  open my $out_fh, ">", \$out;
+  my @warnings;
+  local $SIG{__WARN__} = sub { push @warnings, "@_" };
+  process_file(filename => "XSWarn.xs", output => $out_fh);
+  is_deeply(\@warnings, [], "shouldn't be any warnings");
+}

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/501-t-compile.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/501-t-compile.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/501-t-compile.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+use strict;
+BEGIN {
+	$|  = 1;
+	$^W = 1;
+}
+
+use Test::More tests => 2;
+
+# Check their perl version
+ok( $] >= 5.006001, "Your perl is new enough" );
+
+# Does the module load
+use_ok( 'ExtUtils::Typemaps'   );

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/510-t-bare.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/510-t-bare.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/510-t-bare.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,160 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 43;
+use ExtUtils::Typemaps;
+
+# empty typemap
+SCOPE: {
+  ok(ExtUtils::Typemaps->new()->is_empty(), "This is an empty typemap");
+}
+
+# typemap only
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_IV');
+  ok(!$map->is_empty(), "This is not an empty typemap");
+
+  is($map->as_string(), <<'HERE', "Simple typemap matches expectations");
+TYPEMAP
+unsigned int	T_IV
+HERE
+
+  my $type = $map->get_typemap(ctype => 'unsigned int');
+  isa_ok($type, 'ExtUtils::Typemaps::Type');
+  is($type->ctype, 'unsigned int');
+  is($type->xstype, 'T_IV');
+  is($type->tidy_ctype, 'unsigned int');
+
+
+  # test failure
+  ok(!$map->get_typemap(ctype => 'foo'), "Access to nonexistent typemap doesn't die");
+  ok(!$map->get_inputmap(ctype => 'foo'), "Access to nonexistent inputmap via ctype doesn't die");
+  ok(!$map->get_outputmap(ctype => 'foo'), "Access to nonexistent outputmap via ctype doesn't die");
+  ok(!$map->get_inputmap(xstype => 'foo'), "Access to nonexistent inputmap via xstype doesn't die");
+  ok(!$map->get_outputmap(xstype => 'foo'), "Access to nonexistent outputmap via xstype doesn't die");
+  ok(!eval{$map->get_typemap('foo')} && $@, "Access to typemap with positional params dies");
+  ok(!eval{$map->get_inputmap('foo')} && $@, "Access to inputmap with positional params dies");
+  ok(!eval{$map->get_outputmap('foo')} && $@, "Access to outputmap with positional params dies");
+}
+
+# typemap & input
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+  ok(!$map->is_empty(), "This is not an empty typemap");
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  is($map->as_string(), <<'HERE', "Simple typemap (with input) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+
+INPUT
+T_UV
+	$var = ($type)SvUV($arg);
+HERE
+
+  my $type = $map->get_typemap(ctype => 'unsigned int');
+  isa_ok($type, 'ExtUtils::Typemaps::Type');
+  is($type->ctype, 'unsigned int');
+  is($type->xstype, 'T_UV');
+  is($type->tidy_ctype, 'unsigned int');
+
+  my $in = $map->get_inputmap(xstype => 'T_UV');
+  isa_ok($in, 'ExtUtils::Typemaps::InputMap');
+  is($in->xstype, 'T_UV');
+
+  # test fetching inputmap by ctype
+  my $in2 = $map->get_inputmap(ctype => 'unsigned int');
+  is_deeply($in2, $in, "get_inputmap returns the same typemap for ctype and xstype");
+}
+
+
+# typemap & output
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+  ok(!$map->is_empty(), "This is not an empty typemap");
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  is($map->as_string(), <<'HERE', "Simple typemap (with output) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+
+OUTPUT
+T_UV
+	sv_setuv($arg, (UV)$var);
+HERE
+
+  my $type = $map->get_typemap(ctype => 'unsigned int');
+  isa_ok($type, 'ExtUtils::Typemaps::Type');
+  is($type->ctype, 'unsigned int');
+  is($type->xstype, 'T_UV');
+  is($type->tidy_ctype, 'unsigned int');
+
+  my $in = $map->get_outputmap(xstype => 'T_UV');
+  isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+  is($in->xstype, 'T_UV');
+}
+
+# typemap & input & output
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+  $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+  ok(!$map->is_empty(), "This is not an empty typemap");
+  is($map->as_string(), <<'HERE', "Simple typemap (with in- & output) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+
+INPUT
+T_UV
+	$var = ($type)SvUV($arg);
+
+OUTPUT
+T_UV
+	sv_setuv($arg, (UV)$var);
+HERE
+}
+
+# two typemaps & input & output
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  $map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+  $map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+
+  $map->add_typemap(ctype => 'int', xstype => 'T_IV');
+  $map->add_inputmap(xstype => 'T_IV', code => '$var = ($type)SvIV($arg);');
+  $map->add_outputmap(xstype => 'T_IV', code => 'sv_setiv($arg, (IV)$var);');
+  is($map->as_string(), <<'HERE', "Simple typemap (with in- & output) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+int	T_IV
+
+INPUT
+T_UV
+	$var = ($type)SvUV($arg);
+T_IV
+	$var = ($type)SvIV($arg);
+
+OUTPUT
+T_UV
+	sv_setuv($arg, (UV)$var);
+T_IV
+	sv_setiv($arg, (IV)$var);
+HERE
+  my $type = $map->get_typemap(ctype => 'unsigned int');
+  isa_ok($type, 'ExtUtils::Typemaps::Type');
+  is($type->ctype, 'unsigned int');
+  is($type->xstype, 'T_UV');
+  is($type->tidy_ctype, 'unsigned int');
+
+  my $in = $map->get_outputmap(xstype => 'T_UV');
+  isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+  is($in->xstype, 'T_UV');
+  $in = $map->get_outputmap(xstype => 'T_IV');
+  isa_ok($in, 'ExtUtils::Typemaps::OutputMap');
+  is($in->xstype, 'T_IV');
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/511-t-whitespace.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/511-t-whitespace.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/511-t-whitespace.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+use ExtUtils::Typemaps;
+
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  $map->add_inputmap(xstype => 'T_UV', code => '  $var = ($type)SvUV($arg);');
+  is($map->as_string(), <<'HERE', "Simple typemap (with input and code including leading whitespace) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+
+INPUT
+T_UV
+  $var = ($type)SvUV($arg);
+HERE
+}
+
+
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+  $map->add_inputmap(xstype => 'T_UV', code => "  \$var =\n(\$type)\n          SvUV(\$arg);");
+  is($map->as_string(), <<'HERE', "Simple typemap (with input and multi-line code) matches expectations");
+TYPEMAP
+unsigned int	T_UV
+
+INPUT
+T_UV
+  $var =
+	($type)
+          SvUV($arg);
+HERE
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/512-t-file.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/512-t-file.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/512-t-file.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 6;
+use ExtUtils::Typemaps;
+use File::Spec;
+use File::Temp;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+
+sub slurp {
+  my $file = shift;
+  open my $fh, '<', $file
+    or die "Cannot open file '$file' for reading: $!";
+  local $/ = undef;
+  return <$fh>;
+}
+
+my $cmp_typemap_file = File::Spec->catfile($datadir, 'simple.typemap');
+my $cmp_typemap_str  = slurp($cmp_typemap_file);
+
+my $map = ExtUtils::Typemaps->new();
+$map->add_typemap(ctype => 'unsigned int', xstype => 'T_UV');
+$map->add_inputmap(xstype => 'T_UV', code => '$var = ($type)SvUV($arg);');
+$map->add_outputmap(xstype => 'T_UV', code => 'sv_setuv($arg, (UV)$var);');
+$map->add_typemap(ctype => 'int', xstype => 'T_IV');
+$map->add_inputmap(xstype => 'T_IV', code => '$var = ($type)SvIV($arg);');
+$map->add_outputmap(xstype => 'T_IV', code => 'sv_setiv($arg, (IV)$var);');
+
+is($map->as_string(), $cmp_typemap_str, "Simple typemap matches reference file");
+
+my $tmpdir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
+my $tmpfile = File::Spec->catfile($tmpdir, 'simple.typemap');
+
+$map->write(file => $tmpfile);
+is($map->as_string(), slurp($tmpfile), "Simple typemap write matches as_string");
+is(ExtUtils::Typemaps->new(file => $cmp_typemap_file)->as_string(), $cmp_typemap_str, "Simple typemap roundtrips");
+is(ExtUtils::Typemaps->new(file => $tmpfile)->as_string(), $cmp_typemap_str, "Simple typemap roundtrips (2)");
+
+SCOPE: {
+  local $map->{file} = $cmp_typemap_file;
+  is_deeply(ExtUtils::Typemaps->new(file => $cmp_typemap_file), $map, "Simple typemap roundtrips (in memory)");
+}
+
+# test that we can also create them from a string
+my $map_from_str = ExtUtils::Typemaps->new(string => $map->as_string());
+is_deeply($map_from_str, $map);
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/513-t-merge.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/513-t-merge.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/513-t-merge.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More tests => 19;
+use ExtUtils::Typemaps;
+use File::Spec;
+use File::Temp;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+
+sub slurp {
+  my $file = shift;
+  open my $fh, '<', $file
+    or die "Cannot open file '$file' for reading: $!";
+  local $/ = undef;
+  return <$fh>;
+}
+
+my $first_typemap_file         = File::Spec->catfile($datadir, 'simple.typemap');
+my $second_typemap_file        = File::Spec->catfile($datadir, 'other.typemap');
+my $combined_typemap_file      = File::Spec->catfile($datadir, 'combined.typemap');
+my $conflicting_typemap_file   = File::Spec->catfile($datadir, 'conflicting.typemap');
+my $confl_replace_typemap_file = File::Spec->catfile($datadir, 'confl_repl.typemap');
+my $confl_skip_typemap_file    = File::Spec->catfile($datadir, 'confl_skip.typemap');
+
+# test merging two typemaps
+SCOPE: {
+  my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+  isa_ok($first, 'ExtUtils::Typemaps');
+  my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+  isa_ok($second, 'ExtUtils::Typemaps');
+
+  $first->merge(typemap => $second);
+
+  is($first->as_string(), slurp($combined_typemap_file), "merging produces expected output");
+}
+
+# test merging a typemap from file
+SCOPE: {
+  my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+  isa_ok($first, 'ExtUtils::Typemaps');
+
+  $first->merge(file => $second_typemap_file);
+
+  is($first->as_string(), slurp($combined_typemap_file), "merging produces expected output");
+}
+
+
+# test merging a typemap as string
+SCOPE: {
+  my $first = ExtUtils::Typemaps->new(file => $first_typemap_file);
+  isa_ok($first, 'ExtUtils::Typemaps');
+  my $second_str = slurp($second_typemap_file);
+
+  $first->add_string(string => $second_str);
+
+  is($first->as_string(), slurp($combined_typemap_file), "merging (string) produces expected output");
+}
+
+# test merging a conflicting typemap without "replace"
+SCOPE: {
+  my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+  isa_ok($second, 'ExtUtils::Typemaps');
+  my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+  isa_ok($conflict, 'ExtUtils::Typemaps');
+
+  ok(
+    !eval {
+      $second->merge(typemap => $conflict);
+      1;
+    },
+    "Merging conflicting typemap croaks"
+  );
+  ok(
+    $@ =~ /Multiple definition/,
+    "Conflicting typemap error as expected"
+  );
+}
+
+# test merging a conflicting typemap with "replace"
+SCOPE: {
+  my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+  isa_ok($second, 'ExtUtils::Typemaps');
+  my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+  isa_ok($conflict, 'ExtUtils::Typemaps');
+
+  ok(
+    eval {
+      $second->merge(typemap => $conflict, replace => 1);
+      1;
+    },
+    "Conflicting typemap merge with 'replace' doesn't croak"
+  );
+
+  is($second->as_string(), slurp($confl_replace_typemap_file), "merging (string) produces expected output");
+}
+
+# test merging a conflicting typemap file with "skip"
+SCOPE: {
+  my $second = ExtUtils::Typemaps->new(file => $second_typemap_file);
+  isa_ok($second, 'ExtUtils::Typemaps');
+  my $conflict = ExtUtils::Typemaps->new(file => $conflicting_typemap_file);
+  isa_ok($conflict, 'ExtUtils::Typemaps');
+
+  ok(
+    eval {
+      $second->merge(typemap => $conflict, skip => 1);
+      1;
+    },
+    "Conflicting typemap merge with 'skip' doesn't croak"
+  );
+
+  is($second->as_string(), slurp($confl_skip_typemap_file), "merging (string) produces expected output");
+}
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/514-t-embed.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/514-t-embed.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/514-t-embed.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# tests for generating embedded typemaps
+
+use Test::More tests => 1;
+use ExtUtils::Typemaps;
+
+SCOPE: {
+  my $map = ExtUtils::Typemaps->new();
+  $map->add_string(string => <<HERE);
+char* T_PV
+HERE
+  is($map->as_embedded_typemap(), <<'HERE', "Embedded typemap as expected");
+TYPEMAP: <<END_TYPEMAP;
+TYPEMAP
+char*	T_PV
+
+END_TYPEMAP
+HERE
+}
+
+

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/515-t-cmd.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/515-t-cmd.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/515-t-cmd.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,93 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+# tests for the quick-n-dirty interface for XS inclusion
+
+use Test::More tests => 6;
+use File::Spec;
+use ExtUtils::Typemaps::Cmd;
+
+my $datadir = -d 't' ? File::Spec->catdir(qw/t data/) : 'data';
+my $libdir = -d 't' ? File::Spec->catdir(qw/t lib/) : 'lib';
+
+unshift @INC, $libdir;
+
+sub slurp {
+  my $file = shift;
+  open my $fh, '<', $file
+    or die "Cannot open file '$file' for reading: $!";
+  local $/ = undef;
+  return <$fh>;
+}
+
+sub permute (&@) {
+  my $code = shift;
+  my @idx = 0..$#_;
+  while ( $code->(@_[@idx]) ) {
+    my $p = $#idx;
+    --$p while $idx[$p-1] > $idx[$p];
+    my $q = $p or return;
+    push @idx, reverse splice @idx, $p;
+    ++$q while $idx[$p-1] > $idx[$q];
+    @idx[$p-1,$q]=@idx[$q,$p-1];
+  }
+}
+
+
+SCOPE: {
+  no warnings 'once';
+  ok(defined(*embeddable_typemap{CODE}), "function exported");
+}
+
+my $start = "TYPEMAP: <<END_TYPEMAP;\n";
+my $end = "\nEND_TYPEMAP\n";
+is(
+  embeddable_typemap(),
+  "${start}TYPEMAP\n$end",
+  "empty call to embeddable_typemap"
+);
+
+my $typemap_file = File::Spec->catfile($datadir, "simple.typemap");
+is(
+  embeddable_typemap($typemap_file),
+  $start . slurp($typemap_file) . $end,
+  "embeddable typemap from file"
+);
+
+my $foo_content = <<HERE;
+TYPEMAP
+myfoo*	T_PV
+HERE
+is(
+  embeddable_typemap("TypemapTest::Foo"),
+  "$start$foo_content$end",
+  "embeddable typemap from full module name"
+);
+
+
+my $test_content = <<HERE;
+TYPEMAP
+mytype*	T_SV
+HERE
+is(
+  embeddable_typemap("Test"),
+  "$start$test_content$end",
+  "embeddable typemap from relative module name"
+);
+
+SCOPE: {
+  my $combined = embeddable_typemap("Test", "TypemapTest::Foo");
+  my @lines = (
+    'myfoo*	T_PV',
+    'mytype*	T_SV',
+  );
+  my @exp = map {"TYPEMAP\n" . join("\n", @$_) . "\n"}
+            (\@lines, [reverse @lines]);
+  ok(scalar(grep "$start$_$end" eq $combined, @exp), "combined both modules")
+    or note("Actual output: '$combined'");
+}
+
+# in theory, we should test
+# embeddable_typemap($typemap_file, "Test", "TypemapTest::Foo"),
+# but I can't be bothered.

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/600-t-compat.t
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/600-t-compat.t	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/600-t-compat.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+use strict;
+use warnings;
+
+use Test::More;
+
+# This test is for making sure that the new EU::Typemaps
+# based typemap merging produces the same result as the old
+# EU::ParseXS code.
+
+use ExtUtils::Typemaps;
+use ExtUtils::ParseXS::Utilities qw(
+  C_string
+  tidy_type
+  trim_whitespace
+  process_typemaps
+);
+use ExtUtils::ParseXS::Constants;
+use File::Spec;
+
+my $path_prefix = File::Spec->catdir(-d 't' ? qw(t data) : qw(data));
+
+my @tests = (
+  {
+    name => 'Simple conflict',
+    local_maps => [
+      File::Spec->catfile($path_prefix, "conflicting.typemap"),
+    ],
+    std_maps => [
+      File::Spec->catfile($path_prefix, "other.typemap"),
+    ],
+  },
+  {
+    name => 'B',
+    local_maps => [
+      File::Spec->catfile($path_prefix, "b.typemap"),
+    ],
+    std_maps => [],
+  },
+  {
+    name => 'B and perl',
+    local_maps => [
+      File::Spec->catfile($path_prefix, "b.typemap"),
+    ],
+    std_maps => [
+      File::Spec->catfile($path_prefix, "perl.typemap"),
+    ],
+  },
+  {
+    name => 'B and perl and B again',
+    local_maps => [
+      File::Spec->catfile($path_prefix, "b.typemap"),
+    ],
+    std_maps => [
+      File::Spec->catfile($path_prefix, "perl.typemap"),
+      File::Spec->catfile($path_prefix, "b.typemap"),
+    ],
+  },
+);
+plan tests => scalar(@tests);
+
+my @local_tmaps;
+my @standard_typemap_locations;
+SCOPE: {
+  no warnings 'redefine';
+  sub ExtUtils::ParseXS::Utilities::standard_typemap_locations {
+    @standard_typemap_locations;
+  }
+  sub standard_typemap_locations {
+    @standard_typemap_locations;
+  }
+}
+
+foreach my $test (@tests) {
+  @local_tmaps = @{ $test->{local_maps} };
+  @standard_typemap_locations = @{ $test->{std_maps} };
+
+  my $res = [_process_typemaps([@local_tmaps], '.')];
+  my $tm = process_typemaps([@local_tmaps], '.');
+  my $res_new = [map $tm->$_(), qw(_get_typemap_hash _get_prototype_hash _get_inputmap_hash _get_outputmap_hash) ];
+
+  # Normalize trailing whitespace. Let's be that lenient, mkay?
+  for ($res, $res_new) {
+    for ($_->[2], $_->[3]) {
+      for (values %$_) {
+        s/\s+\z//;
+      }
+    }
+  }
+  #use Data::Dumper; warn Dumper $res;
+  #use Data::Dumper; warn Dumper $res_new;
+
+  is_deeply($res_new, $res, "typemap equivalency for '$test->{name}'");
+}
+
+
+# The code below is a reproduction of what the pre-ExtUtils::Typemap
+# typemap-parsing/handling code in ExtUtils::ParseXS looked like. For
+# bug-compatibility, we want to produce the same data structures as that
+# code as much as possible.
+sub _process_typemaps {
+  my ($tmap, $pwd) = @_;
+
+  my @tm = ref $tmap ? @{$tmap} : ($tmap);
+
+  foreach my $typemap (@tm) {
+    die "Can't find $typemap in $pwd\n" unless -r $typemap;
+  }
+
+  push @tm, standard_typemap_locations( \@INC );
+
+  my ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref)
+    = ( {}, {}, {}, {} );
+
+  foreach my $typemap (@tm) {
+    next unless -f $typemap;
+    # skip directories, binary files etc.
+    warn("Warning: ignoring non-text typemap file '$typemap'\n"), next
+      unless -T $typemap;
+    ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref) =
+      _process_single_typemap( $typemap,
+        $type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+  }
+  return ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+}
+
+sub _process_single_typemap {
+  my ($typemap,
+    $type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref) = @_;
+  open my $TYPEMAP, '<', $typemap
+    or warn ("Warning: could not open typemap file '$typemap': $!\n"), next;
+  my $mode = 'Typemap';
+  my $junk = "";
+  my $current = \$junk;
+  while (<$TYPEMAP>) {
+    # skip comments
+    next if /^\s*#/;
+    if (/^INPUT\s*$/) {
+      $mode = 'Input';   $current = \$junk;  next;
+    }
+    if (/^OUTPUT\s*$/) {
+      $mode = 'Output';  $current = \$junk;  next;
+    }
+    if (/^TYPEMAP\s*$/) {
+      $mode = 'Typemap'; $current = \$junk;  next;
+    }
+    if ($mode eq 'Typemap') {
+      chomp;
+      my $logged_line = $_;
+      trim_whitespace($_);
+      # skip blank lines
+      next if /^$/;
+      my($type,$kind, $proto) =
+        m/^\s*(.*?\S)\s+(\S+)\s*($ExtUtils::ParseXS::Constants::PrototypeRegexp*)\s*$/
+          or warn(
+            "Warning: File '$typemap' Line $.  '$logged_line' " .
+            "TYPEMAP entry needs 2 or 3 columns\n"
+          ),
+          next;
+      $type = tidy_type($type);
+      $type_kind_ref->{$type} = $kind;
+      # prototype defaults to '$'
+      $proto = "\$" unless $proto;
+      $proto_letter_ref->{$type} = C_string($proto);
+    }
+    elsif (/^\s/) {
+      $$current .= $_;
+    }
+    elsif ($mode eq 'Input') {
+      s/\s+$//;
+      $input_expr_ref->{$_} = '';
+      $current = \$input_expr_ref->{$_};
+    }
+    else {
+      s/\s+$//;
+      $output_expr_ref->{$_} = '';
+      $current = \$output_expr_ref->{$_};
+    }
+  }
+  close $TYPEMAP;
+  return ($type_kind_ref, $proto_letter_ref, $input_expr_ref, $output_expr_ref);
+}

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/XSWarn.xs
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/XSWarn.xs	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/XSWarn.xs	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+MODULE = XSWarn		PACKAGE = XSWarn	PREFIX = xswarn_
+
+PROTOTYPES: DISABLE
+
+void
+xswarn_nonargs()
+# see perl #112776
+    SV *sv = sv_2mortal(newSV());
+  CODE:
+    ;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/b.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/b.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/b.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,88 @@
+TYPEMAP
+
+B::OP		T_OP_OBJ
+B::UNOP		T_OP_OBJ
+B::BINOP	T_OP_OBJ
+B::LOGOP	T_OP_OBJ
+B::LISTOP	T_OP_OBJ
+B::PMOP		T_OP_OBJ
+B::SVOP		T_OP_OBJ
+B::PADOP	T_OP_OBJ
+B::PVOP		T_OP_OBJ
+B::LOOP		T_OP_OBJ
+B::COP		T_OP_OBJ
+
+B::SV		T_SV_OBJ
+B::PV		T_SV_OBJ
+B::IV		T_SV_OBJ
+B::NV		T_SV_OBJ
+B::PVMG		T_SV_OBJ
+B::REGEXP	T_SV_OBJ
+B::PVLV		T_SV_OBJ
+B::BM		T_SV_OBJ
+B::RV		T_SV_OBJ
+B::GV		T_SV_OBJ
+B::CV		T_SV_OBJ
+B::HV		T_SV_OBJ
+B::AV		T_SV_OBJ
+B::IO		T_SV_OBJ
+B::FM		T_SV_OBJ
+
+B::MAGIC	T_MG_OBJ
+SSize_t		T_IV
+STRLEN		T_UV
+PADOFFSET	T_UV
+
+B::HE		T_HE_OBJ
+B::RHE		T_RHE_OBJ
+
+INPUT
+T_OP_OBJ
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    croak(\"$var is not a reference\")
+
+T_SV_OBJ
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    croak(\"$var is not a reference\")
+
+T_MG_OBJ
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    croak(\"$var is not a reference\")
+
+T_HE_OBJ
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    croak(\"$var is not a reference\")
+
+T_RHE_OBJ
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    croak(\"$var is not a reference\")
+
+OUTPUT
+T_MG_OBJ
+	sv_setiv(newSVrv($arg, "B::MAGIC"), PTR2IV($var));
+
+T_HE_OBJ
+	sv_setiv(newSVrv($arg, "B::HE"), PTR2IV($var));
+
+T_RHE_OBJ
+	sv_setiv(newSVrv($arg, "B::RHE"), PTR2IV($var));

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/combined.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/combined.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/combined.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+TYPEMAP
+unsigned int	T_UV
+int	T_IV
+double	T_NV
+
+INPUT
+T_UV
+	$var = ($type)SvUV($arg);
+T_IV
+	$var = ($type)SvIV($arg);
+T_NV
+	$var = ($type)SvNV($arg);
+
+OUTPUT
+T_UV
+	sv_setuv($arg, (UV)$var);
+T_IV
+	sv_setiv($arg, (IV)$var);
+T_NV
+	sv_setnv($arg, (NV)$var);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_repl.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_repl.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_repl.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
+TYPEMAP
+double	T_DIFFERENT
+
+INPUT
+T_NV
+	$var = ($type)SvNV($arg);
+T_DIFFERENT
+	$var = ($type)SvNV($arg);
+
+OUTPUT
+T_NV
+	sv_setnv($arg, (NV)$var);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_skip.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_skip.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/confl_skip.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
+TYPEMAP
+double	T_NV
+
+INPUT
+T_NV
+	$var = ($type)SvNV($arg);
+T_DIFFERENT
+	$var = ($type)SvNV($arg);
+
+OUTPUT
+T_NV
+	sv_setnv($arg, (NV)$var);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/conflicting.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/conflicting.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/conflicting.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+TYPEMAP
+double T_DIFFERENT
+
+INPUT
+T_DIFFERENT
+	$var = ($type)SvNV($arg);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/other.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/other.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/other.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+TYPEMAP
+double T_NV
+
+INPUT
+T_NV
+	$var = ($type)SvNV($arg);
+
+OUTPUT
+T_NV
+	sv_setnv($arg, (NV)$var);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/perl.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/perl.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/perl.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,360 @@
+# basic C types
+int			T_IV
+unsigned		T_UV
+unsigned int		T_UV
+long			T_IV
+unsigned long		T_UV
+short			T_IV
+unsigned short		T_UV
+char			T_CHAR
+unsigned char		T_U_CHAR
+char *			T_PV
+unsigned char *		T_PV
+const char *		T_PV
+caddr_t			T_PV
+wchar_t *		T_PV
+wchar_t			T_IV
+# bool_t is defined in <rpc/rpc.h>
+bool_t			T_IV
+size_t			T_UV
+ssize_t			T_IV
+time_t			T_NV
+unsigned long *		T_OPAQUEPTR
+char **			T_PACKEDARRAY
+void *			T_PTR
+Time_t *		T_PV
+SV *			T_SV
+SVREF			T_SVREF
+AV *			T_AVREF
+HV *			T_HVREF
+CV *			T_CVREF
+
+IV			T_IV
+UV			T_UV
+NV                      T_NV
+I32			T_IV
+I16			T_IV
+I8			T_IV
+STRLEN			T_UV
+U32			T_U_LONG
+U16			T_U_SHORT
+U8			T_UV
+Result			T_U_CHAR
+Boolean			T_BOOL
+float                   T_FLOAT
+double			T_DOUBLE
+SysRet			T_SYSRET
+SysRetLong		T_SYSRET
+FILE *			T_STDIO
+PerlIO *		T_INOUT
+FileHandle		T_PTROBJ
+InputStream		T_IN
+InOutStream		T_INOUT
+OutputStream		T_OUT
+bool			T_BOOL
+
+#############################################################################
+INPUT
+T_SV
+	$var = $arg
+T_SVREF
+	STMT_START {
+		SV* const xsub_tmp_sv = $arg;
+		SvGETMAGIC(xsub_tmp_sv);
+		if (SvROK(xsub_tmp_sv)){
+		    $var = SvRV(xsub_tmp_sv);
+		}
+		else{
+		    Perl_croak(aTHX_ \"%s: %s is not a reference\",
+				${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+				\"$var\");
+		}
+	} STMT_END
+T_AVREF
+	STMT_START {
+		SV* const xsub_tmp_sv = $arg;
+		SvGETMAGIC(xsub_tmp_sv);
+		if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVAV){
+		    $var = (AV*)SvRV(xsub_tmp_sv);
+		}
+		else{
+		    Perl_croak(aTHX_ \"%s: %s is not an ARRAY reference\",
+				${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+				\"$var\");
+		}
+	} STMT_END
+T_HVREF
+	STMT_START {
+		SV* const xsub_tmp_sv = $arg;
+		SvGETMAGIC(xsub_tmp_sv);
+		if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVHV){
+		    $var = (HV*)SvRV(xsub_tmp_sv);
+		}
+		else{
+		    Perl_croak(aTHX_ \"%s: %s is not a HASH reference\",
+				${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+				\"$var\");
+		}
+	} STMT_END
+T_CVREF
+	STMT_START {
+		SV* const xsub_tmp_sv = $arg;
+		SvGETMAGIC(xsub_tmp_sv);
+		if (SvROK(xsub_tmp_sv) && SvTYPE(SvRV(xsub_tmp_sv)) == SVt_PVCV){
+		    $var = (CV*)SvRV(xsub_tmp_sv);
+		}
+		else{
+		    Perl_croak(aTHX_ \"%s: %s is not a CODE reference\",
+				${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+				\"$var\");
+		}
+	} STMT_END
+T_SYSRET
+	$var NOT IMPLEMENTED
+T_UV
+	$var = ($type)SvUV($arg)
+T_IV
+	$var = ($type)SvIV($arg)
+T_INT
+	$var = (int)SvIV($arg)
+T_ENUM
+	$var = ($type)SvIV($arg)
+T_BOOL
+	$var = (bool)SvTRUE($arg)
+T_U_INT
+	$var = (unsigned int)SvUV($arg)
+T_SHORT
+	$var = (short)SvIV($arg)
+T_U_SHORT
+	$var = (unsigned short)SvUV($arg)
+T_LONG
+	$var = (long)SvIV($arg)
+T_U_LONG
+	$var = (unsigned long)SvUV($arg)
+T_CHAR
+	$var = (char)*SvPV_nolen($arg)
+T_U_CHAR
+	$var = (unsigned char)SvUV($arg)
+T_FLOAT
+	$var = (float)SvNV($arg)
+T_NV
+	$var = ($type)SvNV($arg)
+T_DOUBLE
+	$var = (double)SvNV($arg)
+T_PV
+	$var = ($type)SvPV_nolen($arg)
+T_PTR
+	$var = INT2PTR($type,SvIV($arg))
+T_PTRREF
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not a reference\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\")
+T_REF_IV_REF
+	if (sv_isa($arg, \"${ntype}\")) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = *INT2PTR($type *, tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not of type %s\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\", \"$ntype\")
+T_REF_IV_PTR
+	if (sv_isa($arg, \"${ntype}\")) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type, tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not of type %s\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\", \"$ntype\")
+T_PTROBJ
+	if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = INT2PTR($type,tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not of type %s\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\", \"$ntype\")
+T_PTRDESC
+	if (sv_isa($arg, \"${ntype}\")) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    ${type}_desc = (\U${type}_DESC\E*) tmp;
+	    $var = ${type}_desc->ptr;
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not of type %s\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\", \"$ntype\")
+T_REFREF
+	if (SvROK($arg)) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = *INT2PTR($type,tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not a reference\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\")
+T_REFOBJ
+	if (sv_isa($arg, \"${ntype}\")) {
+	    IV tmp = SvIV((SV*)SvRV($arg));
+	    $var = *INT2PTR($type,tmp);
+	}
+	else
+	    Perl_croak(aTHX_ \"%s: %s is not of type %s\",
+			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
+			\"$var\", \"$ntype\")
+T_OPAQUE
+	$var = *($type *)SvPV_nolen($arg)
+T_OPAQUEPTR
+	$var = ($type)SvPV_nolen($arg)
+T_PACKED
+	$var = XS_unpack_$ntype($arg)
+T_PACKEDARRAY
+	$var = XS_unpack_$ntype($arg)
+T_CALLBACK
+	$var = make_perl_cb_$type($arg)
+T_ARRAY
+	U32 ix_$var = $argoff;
+	$var = $ntype(items -= $argoff);
+	while (items--) {
+	    DO_ARRAY_ELEM;
+	    ix_$var++;
+	}
+        /* this is the number of elements in the array */
+        ix_$var -= $argoff
+T_STDIO
+	$var = PerlIO_findFILE(IoIFP(sv_2io($arg)))
+T_IN
+	$var = IoIFP(sv_2io($arg))
+T_INOUT
+	$var = IoIFP(sv_2io($arg))
+T_OUT
+	$var = IoOFP(sv_2io($arg))
+#############################################################################
+OUTPUT
+T_SV
+	$arg = $var;
+T_SVREF
+	$arg = newRV((SV*)$var);
+T_AVREF
+	$arg = newRV((SV*)$var);
+T_HVREF
+	$arg = newRV((SV*)$var);
+T_CVREF
+	$arg = newRV((SV*)$var);
+T_IV
+	sv_setiv($arg, (IV)$var);
+T_UV
+	sv_setuv($arg, (UV)$var);
+T_INT
+	sv_setiv($arg, (IV)$var);
+T_SYSRET
+	if ($var != -1) {
+	    if ($var == 0)
+		sv_setpvn($arg, "0 but true", 10);
+	    else
+		sv_setiv($arg, (IV)$var);
+	}
+T_ENUM
+	sv_setiv($arg, (IV)$var);
+T_BOOL
+	$arg = boolSV($var);
+T_U_INT
+	sv_setuv($arg, (UV)$var);
+T_SHORT
+	sv_setiv($arg, (IV)$var);
+T_U_SHORT
+	sv_setuv($arg, (UV)$var);
+T_LONG
+	sv_setiv($arg, (IV)$var);
+T_U_LONG
+	sv_setuv($arg, (UV)$var);
+T_CHAR
+	sv_setpvn($arg, (char *)&$var, 1);
+T_U_CHAR
+	sv_setuv($arg, (UV)$var);
+T_FLOAT
+	sv_setnv($arg, (double)$var);
+T_NV
+	sv_setnv($arg, (NV)$var);
+T_DOUBLE
+	sv_setnv($arg, (double)$var);
+T_PV
+	sv_setpv((SV*)$arg, $var);
+T_PTR
+	sv_setiv($arg, PTR2IV($var));
+T_PTRREF
+	sv_setref_pv($arg, Nullch, (void*)$var);
+T_REF_IV_REF
+	sv_setref_pv($arg, \"${ntype}\", (void*)new $ntype($var));
+T_REF_IV_PTR
+	sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTROBJ
+	sv_setref_pv($arg, \"${ntype}\", (void*)$var);
+T_PTRDESC
+	sv_setref_pv($arg, \"${ntype}\", (void*)new\U${type}_DESC\E($var));
+T_REFREF
+	NOT_IMPLEMENTED
+T_REFOBJ
+	NOT IMPLEMENTED
+T_OPAQUE
+	sv_setpvn($arg, (char *)&$var, sizeof($var));
+T_OPAQUEPTR
+	sv_setpvn($arg, (char *)$var, sizeof(*$var));
+T_PACKED
+	XS_pack_$ntype($arg, $var);
+T_PACKEDARRAY
+	XS_pack_$ntype($arg, $var, count_$ntype);
+T_DATAUNIT	
+	sv_setpvn($arg, $var.chp(), $var.size());
+T_CALLBACK
+	sv_setpvn($arg, $var.context.value().chp(),
+		$var.context.value().size());
+T_ARRAY
+        {
+	    U32 ix_$var;
+	    EXTEND(SP,size_$var);
+	    for (ix_$var = 0; ix_$var < size_$var; ix_$var++) {
+		ST(ix_$var) = sv_newmortal();
+	DO_ARRAY_ELEM
+	    }
+        }
+T_STDIO
+	{
+	    GV *gv = newGVgen("$Package");
+	    PerlIO *fp = PerlIO_importFILE($var,0);
+	    if ( fp && do_open(gv, "+<&", 3, FALSE, 0, 0, fp) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+T_IN
+	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "<&", 2, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+T_INOUT
+	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "+<&", 3, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}
+T_OUT
+	{
+	    GV *gv = newGVgen("$Package");
+	    if ( do_open(gv, "+>&", 3, FALSE, 0, 0, $var) )
+		sv_setsv($arg, sv_bless(newRV((SV*)gv), gv_stashpv("$Package",1)));
+	    else
+		$arg = &PL_sv_undef;
+	}

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/simple.typemap
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/simple.typemap	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/data/simple.typemap	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+TYPEMAP
+unsigned int	T_UV
+int	T_IV
+
+INPUT
+T_UV
+	$var = ($type)SvUV($arg);
+T_IV
+	$var = ($type)SvIV($arg);
+
+OUTPUT
+T_UV
+	sv_setuv($arg, (UV)$var);
+T_IV
+	sv_setiv($arg, (IV)$var);

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/Test.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/Test.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/ExtUtils/Typemaps/Test.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+package # hide from indexers
+  ExtUtils::Typemaps::Test;
+use strict;
+use warnings;
+require ExtUtils::Typemaps;
+our @ISA = qw(ExtUtils::Typemaps);
+
+sub new {
+  my $class = shift;
+  my $obj = $class->SUPER::new(@_);
+  $obj->add_typemap(ctype => 'mytype*', xstype => 'T_SV');
+  return $obj;
+}
+
+1;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/PrimitiveCapture.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+package PrimitiveCapture;
+use strict;
+use warnings;
+
+if ("$]" >= 5.008000) {
+  eval "#line @{[__LINE__+1]} ".q{"lib/PrimitiveCapture.pm"
+    sub capture_stdout {
+      my $sub = shift;
+      my $stdout;
+      open my $oldout, ">&STDOUT" or die "Can't dup STDOUT: $!";
+      close STDOUT;
+      open STDOUT, '>', \$stdout or die "Can't open STDOUT: $!";
+      $sub->();
+      close STDOUT;
+      open STDOUT, ">&", $oldout or die "Can't dup \$oldout: $!";
+      return $stdout;
+    }
+    sub capture_stderr {
+      my $sub = shift;
+      my $stderr;
+      open my $olderr, ">&STDERR" or die "Can't dup STDERR: $!";
+      close STDERR;
+      open STDERR, '>', \$stderr or die "Can't open STDERR: $!";
+      $sub->();
+      close STDERR;
+      open STDERR, ">&", $olderr or die "Can't dup \$olderr: $!";
+      return $stderr;
+    }
+  }; die $@ unless $@ eq "";
+} else {
+  eval "#line @{[__LINE__+1]} ".q{"lib/PrimitiveCapture.pm"
+    use File::Spec;
+    use File::Temp;
+    my $tmpdir;
+    my $i = 0;
+    sub _tmpfile {
+      $tmpdir ||= File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
+      return File::Spec->catfile($tmpdir, $i++);
+    }
+    sub _slurp {
+      my $filename = shift;
+      open my $fh, "<", $filename or die "Can't read $filename: $!";
+      local $/ = undef;
+      my $content = <$fh>;
+      defined $content or die "Can't read $filename: $!";
+      return $content;
+    }
+    sub capture_stdout {
+      my $sub = shift;
+      my $tmpfile = _tmpfile();
+      local *OLDSTDOUT;
+      open OLDSTDOUT, ">&STDOUT" or die "Can't dup STDOUT: $!";
+      close STDOUT;
+      open STDOUT, '>', $tmpfile or die "Can't open STDOUT: $!";
+      $sub->();
+      close STDOUT;
+      open STDOUT, ">&OLDSTDOUT" or die "Can't dup OLDSTDOUT: $!";
+      close OLDSTDOUT;
+      return _slurp($tmpfile);
+    }
+    sub capture_stderr {
+      my $sub = shift;
+      my $tmpfile = _tmpfile();
+      local *OLDSTDERR;
+      open OLDSTDERR, ">&STDERR" or die "Can't dup STDERR: $!";
+      close STDERR;
+      open STDERR, '>', $tmpfile or die "Can't open STDERR: $!";
+      $sub->();
+      close STDERR;
+      open STDERR, ">&OLDSTDERR" or die "Can't dup OLDSTDERR: $!";
+      close OLDSTDERR;
+      return _slurp($tmpfile);
+    }
+  }; die $@ unless $@ eq "";
+}
+
+1;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/lib/TypemapTest/Foo.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+package # hide from indexers
+  TypemapTest::Foo;
+use strict;
+use warnings;
+require ExtUtils::Typemaps;
+our @ISA = qw(ExtUtils::Typemaps);
+
+sub new {
+  my $class = shift;
+  my $obj = $class->SUPER::new(@_);
+  $obj->add_typemap(ctype => 'myfoo*', xstype => 'T_PV');
+  return $obj;
+}
+
+1;

Added: vendor/perl/dist/dist/ExtUtils-ParseXS/t/pseudotypemap1
===================================================================
--- vendor/perl/dist/dist/ExtUtils-ParseXS/t/pseudotypemap1	                        (rev 0)
+++ vendor/perl/dist/dist/ExtUtils-ParseXS/t/pseudotypemap1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,5 @@
+  # pseudotypemap1:  comment with leading whitespace
+TYPEMAP  
+
+line_to_generate_insufficient_columns_warning
+unsigned long		T_UV

Added: vendor/perl/dist/dist/Filter-Simple/t/code_no_comments.t
===================================================================
--- vendor/perl/dist/dist/Filter-Simple/t/code_no_comments.t	                        (rev 0)
+++ vendor/perl/dist/dist/Filter-Simple/t/code_no_comments.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+BEGIN {
+    unshift @INC, 't/lib/';
+}
+
+use Filter::Simple::CodeNoComments qr/ok/ => 'not ok';
+
+print "1..1\n";
+
+
+# Perl bug #92436 (the second bug in the ticket)
+
+sub method { $_[1] }
+my $obj = bless[];
+
+print $obj->method("ok 1\n");

Added: vendor/perl/dist/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm
===================================================================
--- vendor/perl/dist/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Filter-Simple/t/lib/Filter/Simple/CodeNoComments.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+package Filter::Simple::CodeNoComments;
+
+use Filter::Simple;
+
+FILTER_ONLY
+	code_no_comments => sub {
+		shift;
+		while (my($pat, $str) = splice @_, 0, 2) {
+			s/$pat/$str/g;
+		}
+	};
+
+1;

Added: vendor/perl/dist/dist/IO/t/cachepropagate-tcp.t
===================================================================
--- vendor/perl/dist/dist/IO/t/cachepropagate-tcp.t	                        (rev 0)
+++ vendor/perl/dist/dist/IO/t/cachepropagate-tcp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,57 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+use Config;
+
+plan tests => 8;
+
+my $listener = IO::Socket::INET->new(Listen => 1,
+                                     LocalAddr => '127.0.0.1',
+                                     Proto => 'tcp');
+ok(defined($listener), 'socket created');
+
+my $port = $listener->sockport();
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+    skip "fork not available", 4
+	unless $Config{d_fork} || $Config{d_pseudofork};
+
+    my $cpid = fork();
+    if (0 == $cpid) {
+	# the child:
+	sleep(1);
+	my $connector = IO::Socket::INET->new(PeerAddr => '127.0.0.1',
+					      PeerPort => $port,
+					      Proto => 'tcp');
+	exit(0);
+    } else {;
+	    ok(defined($cpid), 'spawned a child');
+    }
+
+    my $new = $listener->accept();
+
+    is($new->sockdomain(), $d, 'domain match');
+  SKIP: {
+      skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+      is($new->protocol(), $p, 'protocol match');
+    }
+  SKIP: {
+      skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+      is($new->socktype(), $s, 'type match');
+    }
+
+    wait();
+}

Added: vendor/perl/dist/dist/IO/t/cachepropagate-udp.t
===================================================================
--- vendor/perl/dist/dist/IO/t/cachepropagate-udp.t	                        (rev 0)
+++ vendor/perl/dist/dist/IO/t/cachepropagate-udp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use IO::Socket;
+use IO::Socket::INET;
+use Socket;
+use Test::More;
+
+plan tests => 7;
+
+my $listener = IO::Socket::INET->new(LocalAddr => '127.0.0.1',
+                                     Proto => 'udp');
+ok(defined($listener), 'socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+my $new = IO::Socket::INET->new_from_fd($listener->fileno(), 'r+');
+
+is($new->sockdomain(), $d, 'domain match');
+SKIP: {
+    skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+    skip "SO_PROTOCOL defined but not implemented", 1
+	if !defined $new->sockopt(Socket::SO_PROTOCOL);
+    is($new->protocol(), $p, 'protocol match');
+}
+SKIP: {
+    skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+        if $^O eq "aix";
+    skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+    skip "SO_TYPE defined but not implemented", 1
+	if !defined $new->sockopt(Socket::SO_TYPE);
+    is($new->socktype(), $s, 'type match');
+}

Added: vendor/perl/dist/dist/IO/t/cachepropagate-unix.t
===================================================================
--- vendor/perl/dist/dist/IO/t/cachepropagate-unix.t	                        (rev 0)
+++ vendor/perl/dist/dist/IO/t/cachepropagate-unix.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use File::Temp qw(tempdir);
+use File::Spec::Functions;
+use IO::Socket;
+use IO::Socket::UNIX;
+use Socket;
+use Config;
+use Test::More;
+
+plan skip_all => "UNIX domain sockets not implemented on $^O"
+  if ($^O =~ m/^(?:qnx|nto|vos|MSWin32|VMS)$/);
+
+plan tests => 15;
+
+my $socketpath = catfile(tempdir( CLEANUP => 1 ), 'testsock');
+
+# start testing stream sockets:
+my $listener = IO::Socket::UNIX->new(Type => SOCK_STREAM,
+				     Listen => 1,
+				     Local => $socketpath);
+ok(defined($listener), 'stream socket created');
+
+my $p = $listener->protocol();
+ok(defined($p), 'protocol defined');
+my $d = $listener->sockdomain();
+ok(defined($d), 'domain defined');
+my $s = $listener->socktype();
+ok(defined($s), 'type defined');
+
+SKIP: {
+    skip "fork not available", 4
+	unless $Config{d_fork} || $Config{d_pseudofork};
+
+    my $cpid = fork();
+    if (0 == $cpid) {
+	# the child:
+	sleep(1);
+	my $connector = IO::Socket::UNIX->new(Peer => $socketpath);
+	exit(0);
+    } else {
+	ok(defined($cpid), 'spawned a child');
+    }
+
+    my $new = $listener->accept();
+
+    is($new->sockdomain(), $d, 'domain match');
+  SKIP: {
+      skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+      skip "SO_PROTOCOL defined but not implemented", 1
+         if !defined $new->sockopt(Socket::SO_PROTOCOL);
+      is($new->protocol(), $p, 'protocol match');
+    }
+  SKIP: {
+      skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+      skip "SO_TYPE defined but not implemented", 1
+         if !defined $new->sockopt(Socket::SO_TYPE);
+      is($new->socktype(), $s, 'type match');
+    }
+
+    unlink($socketpath);
+    wait();
+}
+
+undef $TODO;
+SKIP: {
+    skip "datagram unix sockets not supported on $^O", 7
+      if $^O eq "haiku";
+    # now test datagram sockets:
+    $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
+				      Local => $socketpath);
+    ok(defined($listener), 'datagram socket created');
+
+    $p = $listener->protocol();
+    ok(defined($p), 'protocol defined');
+    $d = $listener->sockdomain();
+    ok(defined($d), 'domain defined');
+    $s = $listener->socktype();
+    ok(defined($s), 'type defined');
+
+    my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
+
+    is($new->sockdomain(), $d, 'domain match');
+    SKIP: {
+      skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
+      skip "SO_PROTOCOL defined but not implemented", 1
+         if !defined $new->sockopt(Socket::SO_PROTOCOL);
+      is($new->protocol(), $p, 'protocol match');
+    }
+    SKIP: {
+      skip "AIX: getsockopt(SO_TYPE) is badly broken on UDP/UNIX sockets", 1
+         if $^O eq "aix";
+      skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
+      skip "SO_TYPE defined but not implemented", 1
+         if !defined $new->sockopt(Socket::SO_TYPE);
+      is($new->socktype(), $s, 'type match');
+    }
+}
+unlink($socketpath);

Added: vendor/perl/dist/dist/IO/t/io_utf8argv.t
===================================================================
--- vendor/perl/dist/dist/IO/t/io_utf8argv.t	                        (rev 0)
+++ vendor/perl/dist/dist/IO/t/io_utf8argv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!./perl
+
+BEGIN {
+    unless ($] >= 5.008 and find PerlIO::Layer 'perlio') {
+	print "1..0 # Skip: not perlio\n";
+	exit 0;
+    }
+    require($ENV{PERL_CORE} ? "../../t/test.pl" : "./t/test.pl");
+}
+
+use utf8;
+
+
+plan(tests => 2);
+
+open my $fh, ">:raw", 'io_utf8argv';
+print $fh
+   "\xce\x9c\xe1\xbd\xb7\xce\xb1\x20\xcf\x80\xe1\xbd\xb1\xcf\x80\xce".
+   "\xb9\xce\xb1\x2c\x20\xce\xbc\xe1\xbd\xb0\x20\xcf\x80\xce\xbf\xce".
+   "\xb9\xe1\xbd\xb0\x20\xcf\x80\xe1\xbd\xb1\xcf\x80\xce\xb9\xce\xb1".
+   "\xcd\xbe\x0a";
+close $fh or die "close: $!";
+
+
+use open ":std", ":utf8";
+
+use IO::Handle;
+
+ at ARGV = ('io_utf8argv') x 2;
+is *ARGV->getline, "Μία πάπια, μὰ ποιὰ πάπια;\n",
+  'getline respects open pragma when magically opening ARGV';
+
+is join('',*ARGV->getlines), "Μία πάπια, μὰ ποιὰ πάπια;\n",
+  'getlines respects open pragma when magically opening ARGV';
+
+END {
+  1 while unlink "io_utf8argv";
+}

Added: vendor/perl/dist/dist/Math-BigInt/t/rt-16221.t
===================================================================
--- vendor/perl/dist/dist/Math-BigInt/t/rt-16221.t	                        (rev 0)
+++ vendor/perl/dist/dist/Math-BigInt/t/rt-16221.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+#
+# Verify that
+#   - Math::BigInt::objectify() calls as_int() (or as_number(), as a fallback)
+#     if the target object class is Math::BigInt.
+#   - Math::BigInt::objectify() calls as_float() if the target object class is
+#     Math::BigFloat.
+#
+# See RT #16221 and RT #52124.
+
+use strict;
+use warnings;
+
+package main;
+
+use Test::More tests => 2;
+use Math::BigInt;
+use Math::BigFloat;
+
+############################################################################
+
+my $int = Math::BigInt->new(10);
+my $int_percent = My::Percent::Float->new(100);
+
+is($int * $int_percent, 10);
+
+############################################################################
+
+my $float = Math::BigFloat->new(10);
+my $float_percent = My::Percent::Float->new(100);
+
+is($float * $float_percent, 10);
+
+############################################################################
+
+package My::Percent::Int;
+
+sub new {
+    my $class = shift;
+    my $num = shift;
+    return bless \$num, $class;
+}
+
+sub as_number {
+    my $self = shift;
+    return Math::BigInt->new($$self / 100);
+}
+
+sub as_string {
+    my $self = shift;
+    return $$self;
+}
+
+############################################################################
+
+package My::Percent::Float;
+
+sub new {
+    my $class = shift;
+    my $num = shift;
+    return bless \$num, $class;
+}
+
+sub as_int {
+    my $self = shift;
+    return Math::BigInt->new($$self / 100);
+}
+
+sub as_float {
+    my $self = shift;
+    return Math::BigFloat->new($$self / 100);
+}
+
+sub as_string {
+    my $self = shift;
+    return $$self;
+}

Added: vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm
===================================================================
--- vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/TieHashDelta.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,74 @@
+# For internal Module::CoreList use only.
+package Module::CoreList::TieHashDelta;
+use strict;
+use vars qw($VERSION);
+
+$VERSION = "2.96";
+
+sub TIEHASH {
+    my ($class, $changed, $removed, $parent) = @_;
+
+    return bless {
+        changed => $changed,
+        removed => $removed,
+        parent => $parent,
+        keys_inflated => 0,
+    }, $class;
+}
+
+sub FETCH {
+    my ($self, $key) = @_;
+
+    if (exists $self->{changed}{$key}) {
+        return $self->{changed}{$key};
+    } elsif (exists $self->{removed}{$key}) {
+        return undef;
+    } elsif (defined $self->{parent}) {
+        return $self->{parent}{$key};
+    }
+    return undef;
+}
+
+sub EXISTS {
+    my ($self, $key) = @_;
+
+    if (exists $self->{changed}{$key}) {
+        return 1;
+    } elsif (exists $self->{removed}{$key}) {
+        return '';
+    } elsif (defined $self->{parent}) {
+        return exists $self->{parent}{$key};
+    }
+    return '';
+}
+
+sub FIRSTKEY {
+    my ($self) = @_;
+
+    if (not $self->{keys_inflated}) {
+        # This inflates the whole set of hashes... Somewhat expensive, but saves
+        # many tied hash calls later.
+        my @parent_keys;
+        if (defined $self->{parent}) {
+            @parent_keys = keys %{$self->{parent}};
+        }
+
+        @parent_keys = grep !exists $self->{removed}{$_}, @parent_keys;
+        for my $key (@parent_keys) {
+            next if exists $self->{changed}->{$key};
+            $self->{changed}{$key} = $self->{parent}{$key};
+        }
+
+        $self->{keys_inflated} = 1;
+    }
+
+    keys %{$self->{changed}}; # reset each
+    $self->NEXTKEY;
+}
+
+sub NEXTKEY {
+    my ($self) = @_;
+    each %{$self->{changed}};
+}
+
+1;

Added: vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/Utils.pm
===================================================================
--- vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/Utils.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList/Utils.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,986 @@
+package Module::CoreList::Utils;
+
+use strict;
+use warnings;
+use vars qw[$VERSION %utilities];
+use Module::CoreList;
+use Module::CoreList::TieHashDelta;
+
+$VERSION = '2.96';
+
+sub utilities {
+    my $perl = shift;
+    $perl = shift if eval { $perl->isa(__PACKAGE__) };
+    return unless $perl or exists $utilities{$perl};
+    return sort keys %{ $utilities{$perl} };
+}
+
+sub first_release_raw {
+    my $util = shift;
+    $util = shift if eval { $util->isa(__PACKAGE__) };
+      #and scalar @_ and $_[0] =~ m#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z#;
+    my $version = shift;
+
+    my @perls = $version
+        ? grep { exists $utilities{$_}{ $util } &&
+                        $utilities{$_}{ $util } ge $version } keys %utilities
+        : grep { exists $utilities{$_}{ $util }             } keys %utilities;
+
+    return grep { exists $Module::CoreList::released{$_} } @perls;
+}
+
+sub first_release_by_date {
+    my @perls = &first_release_raw;
+    return unless @perls;
+    return (sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } @perls)[0];
+}
+
+sub first_release {
+    my @perls = &first_release_raw;
+    return unless @perls;
+    return (sort { $a cmp $b } @perls)[0];
+}
+
+sub removed_from {
+  my @perls = &removed_raw;
+  return shift @perls;
+}
+
+sub removed_from_by_date {
+  my @perls = sort { $Module::CoreList::released{$a} cmp $Module::CoreList::released{$b} } &removed_raw;
+  return shift @perls;
+}
+
+sub removed_raw {
+  my $util = shift;
+  $util = shift if eval { $util->isa(__PACKAGE__) };
+  return unless my @perls = sort { $a cmp $b } first_release_raw($util);
+  @perls = grep { exists $Module::CoreList::released{$_} } @perls;
+  my $last = pop @perls;
+  my @removed = grep { $_ > $last } sort { $a cmp $b } keys %utilities;
+  return @removed;
+}
+
+my %delta = (
+    5 => {
+        changed => {
+            'a2p'                   => '1',
+            'c2ph'                  => '1',
+            'cppstdin'              => '1',
+            'find2perl'             => '1',
+            'pstruct'               => '1',
+            's2p'                   => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.001 => {
+        delta_from => 5,
+        changed => {
+            'h2xs'                  => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.002 => {
+        delta_from => 5.001,
+        changed => {
+            'h2ph'                  => '1',
+            'perlbug'               => '1',
+            'perldoc'               => '1',
+            'pod2html'              => '1',
+            'pod2latex'             => '1',
+            'pod2man'               => '1',
+            'pod2text'              => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.00307 => {
+        delta_from => 5.002,
+        changed => {
+            'pl2pm'                 => '1',
+        },
+        removed => {
+           'cppstdin'              => 1,
+           'pstruct'               => 1,
+        }
+    },
+
+    5.004 => {
+        delta_from => 5.00307,
+        changed => {
+            'splain'                => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.005 => {
+        delta_from => 5.00405,
+        changed => {
+            'perlcc'                => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.00503 => {
+        delta_from => 5.005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.00405 => {
+        delta_from => 5.004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.006 => {
+        delta_from => 5.00504,
+        changed => {
+            'dprofpp'               => '1',
+            'pod2usage'             => '1',
+            'podchecker'            => '1',
+            'podselect'             => '1',
+            'pstruct'               => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.006001 => {
+        delta_from => 5.006,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.007003 => {
+        delta_from => 5.006002,
+        changed => {
+            'libnetcfg'             => '1',
+            'perlivp'               => '1',
+            'psed'                  => '1',
+            'xsubpp'                => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.008 => {
+        delta_from => 5.007003,
+        changed => {
+            'enc2xs'                => '1',
+            'piconv'                => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.008001 => {
+        delta_from => 5.008,
+        changed => {
+            'cpan'                  => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.009 => {
+        delta_from => 5.008009,
+        changed => {
+        },
+        removed => {
+           'corelist'              => 1,
+           'instmodsh'             => 1,
+           'prove'                 => 1,
+        }
+    },
+
+    5.008002 => {
+        delta_from => 5.008001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.006002 => {
+        delta_from => 5.006001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.008003 => {
+        delta_from => 5.008002,
+        changed => {
+            'instmodsh'             => '1',
+            'prove'                 => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.00504 => {
+        delta_from => 5.00503,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.009001 => {
+        delta_from => 5.009,
+        changed => {
+            'instmodsh'             => '1',
+            'prove'                 => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.008004 => {
+        delta_from => 5.008003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.008005 => {
+        delta_from => 5.008004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.008006 => {
+        delta_from => 5.008005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.009002 => {
+        delta_from => 5.009001,
+        changed => {
+            'corelist'              => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.008007 => {
+        delta_from => 5.008006,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.009003 => {
+        delta_from => 5.009002,
+        changed => {
+            'ptar'                  => '1',
+            'ptardiff'              => '1',
+            'shasum'                => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.008008 => {
+        delta_from => 5.008007,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.009004 => {
+        delta_from => 5.009003,
+        changed => {
+            'config_data'           => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.009005 => {
+        delta_from => 5.009004,
+        changed => {
+            'cpan2dist'             => '1',
+            'cpanp'                 => '1',
+            'cpanp-run-perl'        => '1',
+        },
+        removed => {
+           'perlcc'                => 1,
+        }
+    },
+
+    5.010000 => {
+        delta_from => 5.009005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.008009 => {
+        delta_from => 5.008008,
+        changed => {
+            'corelist'              => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.010001 => {
+        delta_from => 5.010000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.011 => {
+        delta_from => 5.010001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.011001 => {
+        delta_from => 5.011,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.011002 => {
+        delta_from => 5.011001,
+        changed => {
+            'perlthanks'            => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.011003 => {
+        delta_from => 5.011002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.011004 => {
+        delta_from => 5.011003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.011005 => {
+        delta_from => 5.011004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.012 => {
+        delta_from => 5.011005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013 => {
+        delta_from => 5.012005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.012001 => {
+        delta_from => 5.012,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013001 => {
+        delta_from => 5.013,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013002 => {
+        delta_from => 5.013001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013003 => {
+        delta_from => 5.013002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013004 => {
+        delta_from => 5.013003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.012002 => {
+        delta_from => 5.012001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013005 => {
+        delta_from => 5.013004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013006 => {
+        delta_from => 5.013005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013007 => {
+        delta_from => 5.013006,
+        changed => {
+            'ptargrep'              => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.013008 => {
+        delta_from => 5.013007,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013009 => {
+        delta_from => 5.013008,
+        changed => {
+            'json_pp'               => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.012003 => {
+        delta_from => 5.012002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013010 => {
+        delta_from => 5.013009,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.013011 => {
+        delta_from => 5.013010,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.014 => {
+        delta_from => 5.013011,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.014001 => {
+        delta_from => 5.014,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015 => {
+        delta_from => 5.014004,
+        changed => {
+        },
+        removed => {
+           'dprofpp'               => 1,
+        }
+    },
+
+    5.012004 => {
+        delta_from => 5.012003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015001 => {
+        delta_from => 5.015,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015002 => {
+        delta_from => 5.015001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015003 => {
+        delta_from => 5.015002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.014002 => {
+        delta_from => 5.014001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015004 => {
+        delta_from => 5.015003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015005 => {
+        delta_from => 5.015004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015006 => {
+        delta_from => 5.015005,
+        changed => {
+            'zipdetails'            => '1',
+        },
+        removed => {
+        }
+    },
+
+    5.015007 => {
+        delta_from => 5.015006,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015008 => {
+        delta_from => 5.015007,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.015009 => {
+        delta_from => 5.015008,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.016 => {
+        delta_from => 5.015009,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017 => {
+        delta_from => 5.016003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017001 => {
+        delta_from => 5.017,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017002 => {
+        delta_from => 5.017001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.016001 => {
+        delta_from => 5.016,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017003 => {
+        delta_from => 5.017002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017004 => {
+        delta_from => 5.017003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.014003 => {
+        delta_from => 5.014002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017005 => {
+        delta_from => 5.017004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.016002 => {
+        delta_from => 5.016001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.012005 => {
+        delta_from => 5.012004,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017006 => {
+        delta_from => 5.017005,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017007 => {
+        delta_from => 5.017006,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017008 => {
+        delta_from => 5.017007,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017009 => {
+        delta_from => 5.017008,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.014004 => {
+        delta_from => 5.014003,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.016003 => {
+        delta_from => 5.016002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017010 => {
+        delta_from => 5.017009,
+        changed => {
+        },
+        removed => {
+        }
+    },
+
+    5.017011 => {
+        delta_from => 5.017010,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.018000 => {
+        delta_from => 5.017011,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.018001 => {
+        delta_from => 5.018000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.019000 => {
+        delta_from => 5.018000,
+        changed => {
+        },
+        removed => {
+            'cpan2dist'             => '1',
+            'cpanp'                 => '1',
+            'cpanp-run-perl'        => '1',
+            'pod2latex'             => '1',
+        }
+    },
+    5.019001 => {
+        delta_from => 5.019000,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.019002 => {
+        delta_from => 5.019001,
+        changed => {
+        },
+        removed => {
+        }
+    },
+    5.019003 => {
+        delta_from => 5.019002,
+        changed => {
+        },
+        removed => {
+        }
+    },
+);
+
+for my $version (sort { $a <=> $b } keys %delta) {
+    my $data = $delta{$version};
+
+    tie %{$utilities{$version}}, 'Module::CoreList::TieHashDelta',
+        $data->{changed}, $data->{removed},
+        $data->{delta_from} ? $utilities{$data->{delta_from}} : undef;
+}
+
+# Create aliases with trailing zeros for $] use
+
+$utilities{'5.000'} = $utilities{5};
+
+_create_aliases(\%utilities);
+
+sub _create_aliases {
+    my ($hash) = @_;
+
+    for my $version (keys %$hash) {
+        next unless $version >= 5.010;
+
+        my $padded = sprintf "%0.6f", $version;
+
+        # If the version in string form isn't the same as the numeric version,
+        # alias it.
+        if ($padded ne $version && $version == $padded) {
+            $hash->{$padded} = $hash->{$version};
+        }
+    }
+}
+
+'foo';
+
+=pod
+
+=head1 NAME
+
+Module::CoreList::Utils - what utilities shipped with versions of perl
+
+=head1 SYNOPSIS
+
+ use Module::CoreList::Utils;
+
+ print $Module::CoreList::Utils::utilities{5.009003}{ptar}; # prints 1
+
+ print Module::CoreList::Utils->first_release('corelist');           # prints 5.008009
+ print Module::CoreList::Utils->first_release_by_date('corelist');   # prints 5.009002
+
+=head1 DESCRIPTION
+
+Module::CoreList::Utils provides information on which core and dual-life utilities shipped
+with each version of L<perl>.
+
+It provides a number of mechanisms for querying this information.
+
+There is a functional programming API available for programmers to query
+information.
+
+Programmers may also query the contained hash structure to find relevant
+information.
+
+=head1 FUNCTIONS API
+
+These are the functions that are available, they may either be called as functions or class methods:
+
+  Module::CoreList::Utils::first_release('corelist'); # as a function
+
+  Module::CoreList::Utils->first_release('corelist'); # class method
+
+=over
+
+=item C<utilities>
+
+Requires a perl version as an argument, returns a list of utilities that shipped with
+that version of perl, or undef/empty list if that perl doesn't exist.
+
+=item C<first_release( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by perl version number or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<first_release_by_date( UTILITY )>
+
+Requires a UTILITY name as an argument, returns the perl version when that utility first
+appeared in core as ordered by release date or undef ( in scalar context )
+or an empty list ( in list context ) if that utility is not in core.
+
+=item C<removed_from( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version where that utility
+was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=item C<removed_from_by_date( UTILITY )>
+
+Takes a UTILITY name as an argument, returns the first perl version by release date where that
+utility was removed from core. Returns undef if the given utility was never in core or remains
+in core.
+
+=back
+
+=head1 DATA STRUCTURES
+
+These are the hash data structures that are available:
+
+=over
+
+=item C<%Module::CoreList::Utils::utilities>
+
+A hash of hashes that is keyed on perl version as indicated
+in $].  The second level hash is utility / defined pairs.
+
+=back
+
+=head1 AUTHOR
+
+Chris C<BinGOs> Williams <chris at bingosnet.co.uk>
+
+Currently maintained by the perl 5 porters E<lt>perl5-porters at perl.orgE<gt>.
+
+This module is the result of archaeology undertaken during QA Hackathon
+in Lancaster, April 2013.
+
+=head1 LICENSE
+
+Copyright (C) 2013 Chris Williams.  All Rights Reserved.
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<corelist>, L<Module::CoreList>, L<perl>, L<http://perlpunks.de/corelist>
+
+=cut

Added: vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList.pod
===================================================================
--- vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList.pod	                        (rev 0)
+++ vendor/perl/dist/dist/Module-CoreList/lib/Module/CoreList.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,223 @@
+=head1 NAME
+
+Module::CoreList - what modules shipped with versions of perl
+
+=head1 SYNOPSIS
+
+ use Module::CoreList;
+
+ print $Module::CoreList::version{5.00503}{CPAN}; # prints 1.48
+
+ print Module::CoreList->first_release('File::Spec');         # prints 5.00405
+ print Module::CoreList->first_release_by_date('File::Spec'); # prints 5.005
+ print Module::CoreList->first_release('File::Spec', 0.82);   # prints 5.006001
+
+ print join ', ', Module::CoreList->find_modules(qr/Data/);
+    # prints 'Data::Dumper'
+ print join ', ', Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
+    # prints 'Test::Harness::Assert, Test::Harness::Straps'
+
+ print join ", ", @{ $Module::CoreList::families{5.005} };
+    # prints "5.005, 5.00503, 5.00504"
+
+=head1 DESCRIPTION
+
+Module::CoreList provides information on which core and dual-life modules shipped
+with each version of L<perl>.
+
+It provides a number of mechanisms for querying this information.
+
+There is a utility called L<corelist> provided with this module
+which is a convenient way of querying from the command-line.
+
+There is a functional programming API available for programmers to query
+information.
+
+Programmers may also query the contained hash structures to find relevant
+information.
+
+=head1 FUNCTIONS API
+
+These are the functions that are available, they may either be called as functions or class methods:
+
+  Module::CoreList::first_release('File::Spec'); # as a function
+
+  Module::CoreList->first_release('File::Spec'); # class method
+
+=over
+
+=item C<first_release( MODULE )>
+
+Behaviour since version 2.11
+
+Requires a MODULE name as an argument, returns the perl version when that module first
+appeared in core as ordered by perl version number or undef ( in scalar context )
+or an empty list ( in list context ) if that module is not in core.
+
+=item C<first_release_by_date( MODULE )>
+
+Requires a MODULE name as an argument, returns the perl version when that module first
+appeared in core as ordered by release date or undef ( in scalar context )
+or an empty list ( in list context ) if that module is not in core.
+
+=item C<find_modules( REGEX, [ LIST OF PERLS ] )>
+
+Takes a regex as an argument, returns a list of modules that match the regex given.
+If only a regex is provided applies to all modules in all perl versions. Optionally
+you may provide a list of perl versions to limit the regex search.
+
+=item C<find_version( PERL_VERSION )>
+
+Takes a perl version as an argument. Returns that perl version if it exists or C<undef>
+otherwise.
+
+=item C<is_deprecated( MODULE, PERL_VERSION )>
+
+Available in version 2.22 and above.
+
+Returns true if MODULE is marked as deprecated in PERL_VERSION.  If PERL_VERSION is
+omitted, it defaults to the current version of Perl.
+
+=item C<deprecated_in( MODULE )>
+
+Available in version 2.77 and above.
+
+Returns the first PERL_VERSION where the MODULE was marked as deprecated. Returns C<undef>
+if the MODULE has not been marked as deprecated.
+
+=item C<removed_from( MODULE )>
+
+Available in version 2.32 and above
+
+Takes a module name as an argument, returns the first perl version where that module
+was removed from core. Returns undef if the given module was never in core or remains
+in core.
+
+=item C<removed_from_by_date( MODULE )>
+
+Available in version 2.32 and above
+
+Takes a module name as an argument, returns the first perl version by release date where that module
+was removed from core. Returns undef if the given module was never in core or remains
+in core.
+
+=item C<changes_between( PERL_VERSION, PERL_VERSION )>
+
+Available in version 2.66 and above.
+
+Given two perl versions, this returns a list of pairs describing the changes in
+core module content between them.  The list is suitable for storing in a hash.
+The keys are library names and the values are hashrefs.  Each hashref has an
+entry for one or both of C<left> and C<right>, giving the versions of the
+library in each of the left and right perl distributions.
+
+For example, it might return these data (among others) for the difference
+between 5.008000 and 5.008001:
+
+  'Pod::ParseLink'  => { left => '1.05', right => '1.06' },
+  'Pod::ParseUtils' => { left => '0.22', right => '0.3'  },
+  'Pod::Perldoc'    => {                 right => '3.10' },
+  'Pod::Perldoc::BaseTo' => {            right => undef  },
+
+This shows us two libraries being updated and two being added, one of which has
+an undefined version in the right-hand side version.
+
+=back
+
+=head1 DATA STRUCTURES
+
+These are the hash data structures that are available:
+
+=over
+
+=item C<%Module::CoreList::version>
+
+A hash of hashes that is keyed on perl version as indicated
+in $].  The second level hash is module => version pairs.
+
+Note, it is possible for the version of a module to be unspecified,
+whereby the value is C<undef>, so use C<exists $version{$foo}{$bar}> if
+that's what you're testing for.
+
+Starting with 2.10, the special module name C<Unicode> refers to the version of
+the Unicode Character Database bundled with Perl.
+
+=item C<%Module::CoreList::released>
+
+Keyed on perl version this contains ISO
+formatted versions of the release dates, as gleaned from L<perlhist>.
+
+=item C<%Module::CoreList::families>
+
+New, in 1.96, a hash that
+clusters known perl releases by their major versions.
+
+=item C<%Module::CoreList::deprecated>
+
+A hash of hashes keyed on perl version and on module name.
+If a module is defined it indicates that that module is
+deprecated in that perl version and is scheduled for removal
+from core at some future point.
+
+=item C<%Module::CoreList::upstream>
+
+A hash that contains information on where patches should be directed
+for each core module.
+
+UPSTREAM indicates where patches should go. C<undef> implies
+that this hasn't been discussed for the module at hand.
+C<blead> indicates that the copy of the module in the blead
+sources is to be considered canonical, C<cpan> means that the
+module on CPAN is to be patched first. C<first-come> means
+that blead can be patched freely if it is in sync with the
+latest release on CPAN.
+
+=item C<%Module::CoreList::bug_tracker>
+
+A hash that contains information on the appropriate bug tracker
+for each core module.
+
+BUGS is an email or url to post bug reports.  For modules with
+UPSTREAM => 'blead', use perl5-porters at perl.org.  rt.cpan.org
+appears to automatically provide a URL for CPAN modules; any value
+given here overrides the default:
+http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
+
+=back
+
+=head1 CAVEATS
+
+Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
+5.004, 5.004_05, 5.005, 5.005_03, 5.005_04, 5.6.0, 5.6.1, 5.6.2, 5.7.3,
+5.8.0, 5.8.1, 5.8.2, 5.8.3, 5.8.4, 5.8.5, 5.8.6, 5.8.7, 5.8.8, 5.8.9,
+5.9.0, 5.9.1, 5.9.2, 5.9.3, 5.9.4, 5.9.5, 5.10.0, 5.10.1, 5.11.0, 5.11.1,
+5.11.2, 5.11.3, 5.11.4, 5.11.5, 5.12.0, 5.12.1, 5.12.2, 5.12.3, 5.12.4,
+5.12.5, 5.13.0, 5.13.1, 5.13.2, 5.13.3, 5.13.4, 5.13.5, 5.13.6, 5.13.7,
+5.13.8, 5.13.9, 5.13.10, 5.13.11, 5.14.0, 5.14.1, 5.14.2 5.14.3, 5.14.4,
+5.15.0, 5.15.1, 5.15.2, 5.15.3, 5.15.4, 5.15.5, 5.15.6, 5.15.7, 5.15.8,
+5.15.9, 5.16.0, 5.16.1, 5.16.2, 5.16.3, 5.17.0, 5.17.1, 5.17.2, 5.17.3,
+5.17.4, 5.17.5, 5.17.6, 5.17.7, 5.17.8, 5.17.9, 5.17.10, 5.17.11, 5.18.0,
+5.19.0, 5.19.1, 5.19.2, 5.19.3 and 5.18.1 releases of perl.
+
+=head1 HISTORY
+
+Moved to Changes file.
+
+=head1 AUTHOR
+
+Richard Clamp E<lt>richardc at unixbeard.netE<gt>
+
+Currently maintained by the perl 5 porters E<lt>perl5-porters at perl.orgE<gt>.
+
+=head1 LICENSE
+
+Copyright (C) 2002-2009 Richard Clamp.  All Rights Reserved.
+
+This module is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<corelist>, L<Module::Info>, L<perl>, L<http://perlpunks.de/corelist>
+
+=cut

Added: vendor/perl/dist/dist/Module-CoreList/t/utils.t
===================================================================
--- vendor/perl/dist/dist/Module-CoreList/t/utils.t	                        (rev 0)
+++ vendor/perl/dist/dist/Module-CoreList/t/utils.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+use Test::More tests => 9;
+
+BEGIN { require_ok('Module::CoreList::Utils'); }
+
+ok( defined $Module::CoreList::Utils::utilities{5}{a2p}, '5 had a2p' );
+is( Module::CoreList::Utils->first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils::first_release('a2p'), 5, 'a2p first released in 5' );
+is( Module::CoreList::Utils->first_release('corelist'), 5.008009, 'corelist with v5.8.9');
+is( Module::CoreList::Utils->first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+is( Module::CoreList::Utils::first_release_by_date('corelist'), 5.009002, 'corelist with v5.9.2');
+{
+  my @expected = qw(a2p c2ph cppstdin find2perl h2xs pstruct s2p);
+  {
+    my @foo = Module::CoreList::Utils->utilities(5.001);
+    is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+  }
+  {
+    my @foo = Module::CoreList::Utils::utilities(5.001);
+    is_deeply( \@foo, \@expected, '5.001 utils all present and correct' );
+  }
+}

Added: vendor/perl/dist/dist/Net-Ping/t/520_icmp_ttl.t
===================================================================
--- vendor/perl/dist/dist/Net-Ping/t/520_icmp_ttl.t	                        (rev 0)
+++ vendor/perl/dist/dist/Net-Ping/t/520_icmp_ttl.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,47 @@
+# Test to perform icmp protocol testing.
+# Root access is required.
+
+BEGIN {
+  unless (eval "require Socket") {
+    print "1..0 \# Skip: no Socket\n";
+    exit;
+  }
+}
+
+use Test::More qw(no_plan);
+BEGIN {use_ok('Net::Ping')};
+
+SKIP: {
+  skip "icmp ping requires root privileges.", 1
+    if ($> and $^O ne 'VMS' and $^O ne 'cygwin')
+      or (($^O eq 'MSWin32' or $^O eq 'cygwin')
+    and !IsAdminUser())
+  or ($^O eq 'VMS'
+      and (`write sys\$output f\$privilege("SYSPRV")` =~ m/FALSE/));
+  my $p = new Net::Ping ("icmp",undef,undef,undef,undef,undef);
+  isa_ok($p, 'Net::Ping');
+  ok $p->ping("127.0.0.1");
+  $p->close();
+  $p = new Net::Ping ("icmp",undef,undef,undef,undef,0);
+  ok $p->ping("127.0.0.1");
+  $p->close();
+  $p = undef();
+  $p = new Net::Ping ("icmp",undef,undef,undef,undef,1);
+  isa_ok($p, 'Net::Ping');
+  $p = undef();
+  $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,-1)';
+  ok(!defined($p));
+  $p = undef();
+  $p = eval 'new Net::Ping ("icmp",undef,undef,undef,undef,256)';
+  ok(!defined($p));
+  $p = new Net::Ping ("icmp",undef,undef,undef,undef,10);
+  ok $p->ping("127.0.0.1");
+  $p->close();
+}
+
+sub IsAdminUser {
+  return unless $^O eq 'MSWin32' or $^O eq "cygwin";
+  return unless eval { require Win32 };
+  return unless defined &Win32::IsAdminUser;
+  return Win32::IsAdminUser();
+}

Added: vendor/perl/dist/dist/Safe/t/safenamedcap.t
===================================================================
--- vendor/perl/dist/dist/Safe/t/safenamedcap.t	                        (rev 0)
+++ vendor/perl/dist/dist/Safe/t/safenamedcap.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+BEGIN {
+    if ($] < 5.010) {
+	print "1..0\n";
+	exit 0;
+    }
+    require Config;
+    import Config;
+    if ($Config{'extensions'} !~ /\bOpcode\b/) {
+	print "1..0\n";
+	exit 0;
+    }
+}
+
+use strict;
+use Test::More;
+use Safe;
+plan(tests => 1);
+
+BEGIN { Safe->new }
+"foo" =~ /(?<foo>fo*)/;
+is( $+{foo}, "foo", "Named capture works" );

Added: vendor/perl/dist/dist/Safe/t/saferegexp.t
===================================================================
--- vendor/perl/dist/dist/Safe/t/saferegexp.t	                        (rev 0)
+++ vendor/perl/dist/dist/Safe/t/saferegexp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!perl -w
+
+BEGIN {
+    require Config; import Config;
+    if ($Config{'extensions'} !~ /\bOpcode\b/) {
+        print "1..0\n";
+        exit 0;
+    }
+}
+
+use Test::More tests => 3;
+use Safe;
+
+my $c; my $r;
+my $snippet = q{
+    my $foo = qr/foo/;
+    ref $foo;
+};
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# once more with the same compartment
+# (where DESTROY has been cleaned up)
+$r = $c->reval($snippet);
+is( $r, "Safe::Root0::Regexp" );
+$r or diag $@;
+
+# try with a new compartment
+$c = new Safe;
+$r = $c->reval($snippet);
+is( $r, "Safe::Root1::Regexp" );
+$r or diag $@;

Added: vendor/perl/dist/dist/Search-Dict/Changes
===================================================================
--- vendor/perl/dist/dist/Search-Dict/Changes	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/Changes	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,16 @@
+1.07 2012-04-11
+
+  - install into sitelib for Perl 5.12+
+  - use Tie::Handle to get Tie::StdHandle for older Perls
+  - avoid using fc() in v5.15.0 - v5.15.7
+  - fix tests for older Perls
+
+1.06 2012-03-31
+
+  - suppress stat() warnings on tied filehandles
+
+1.05  2012-03-31
+
+  - no longer requires stat() on filehandle
+  - tests use Test::More
+  - case folds with fc() on Perl 5.15+

Added: vendor/perl/dist/dist/Search-Dict/Makefile.PL
===================================================================
--- vendor/perl/dist/dist/Search-Dict/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+
+use ExtUtils::MakeMaker;
+
+my %WriteMakefileArgs = (
+  "NAME" => "Search::Dict",
+  "VERSION_FROM" => "lib/Search/Dict.pm",
+  "ABSTRACT_FROM" => "lib/Search/Dict.pm",
+  "AUTHOR" => "The Perl 5 Porters",
+  "EXE_FILES" => [],
+  "LICENSE" => "perl",
+  "PREREQ_PM" => {
+    "Exporter" => 0,
+    "Test::More" => 0.47,
+    "Tie::Handle" => 0,
+  },
+  INSTALLDIRS => ( $] lt '5.012' ? 'perl' : 'site' ),
+);
+
+WriteMakefile(%WriteMakefileArgs);
+

Added: vendor/perl/dist/dist/Search-Dict/README.patching
===================================================================
--- vendor/perl/dist/dist/Search-Dict/README.patching	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/README.patching	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+Patching instructions for Search-Dict
+
+1. Check for any changes to .pm files since dev or stable Perl release.  E.g.
+to check for changes since v5.15.8:
+
+    $ cd dist/g
+    $ git log v5.15.8..blead -- .
+
+2. If you are making the first change since the last Perl release, you need to
+bump the $VERSION in all .pm files and update the Changes file with the new
+version.  In the Changes file, put the expected *NEXT* release of Perl (dev or
+stable) as the release date and version.  E.g. after v5.15.8, I would add this line
+to Changes to indicate what will be next release:
+
+    0.280206 - 2012-03-20 (Perl v5.15.9)
+
+3. Add an entry to Changes for your work
+
+4. Update Makefile.PL, MANIFEST.SKIP or other support files as necessary. E.g.
+update Makefile.PL with any changes to prerequisites.
+
+5. Commit all changes (preferably to a branch)
+
+6. Run Configure/make/make test and check for errors.  If there are any, fix them.
+
+7. If all is well, push your commits to blead or send a patch to p5p if you do
+not have commit access to the Perl 5 repository

Added: vendor/perl/dist/dist/Search-Dict/README.release
===================================================================
--- vendor/perl/dist/dist/Search-Dict/README.release	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/README.release	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+Release instructions for dual-life Search::Dict
+
+1. Check out a tag/commit corresponding to the release point.  This
+should generally be a Perl release (dev or stable).  Make sure
+your working tree is clear of extraneous files. E.g.
+
+    $ git checkout v5.15.8
+    $ git clean -dxf
+
+2. Rsync the Search-Dict directory to a temporary directory for
+release.  E.g.
+
+    $ rsync -av --delete dist/Search-Dict /tmp
+
+3. Change to the temp directory
+
+    $ cd /tmp/Search-Dict
+
+4. Look at the Changes file.  If it was not kept up to date in blead,
+take a minute to feel sad, then update it.  Remember to copy the
+changes back to blead later.
+
+5. Configure and then make a MANIFEST
+
+    $ perl Makefile.PL
+    $ make manifest
+
+6. Build a release directory and examine its contents, paying particular
+attention to the MANIFEST and the META files
+
+    $ make distdir
+
+7. Test the release directory
+
+    $ make disttest
+
+8. If all looks good, create a tarball and upload it to CPAN (maybe
+install CPAN::Uploader or an equivalent tool)
+
+    $ make dist
+    $ cpan_upload Search-Dict-X.YYYZZZ.tar.gz
+
+9. Update Porting/Maintainers.pl in the Perl repo with the new tarball
+name for Search-Dict.
+
+10. If you updated Changes, copy that back to blead now
+
+11. Commit any changes to blead (or submit it as a patch if you don't have a
+commit bit)

Added: vendor/perl/dist/dist/Search-Dict/lib/Search/Dict.pm
===================================================================
--- vendor/perl/dist/dist/Search-Dict/lib/Search/Dict.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/lib/Search/Dict.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,128 @@
+package Search::Dict;
+require 5.000;
+require Exporter;
+
+my $fc_available;
+BEGIN {
+  $fc_available = '5.015008';
+  if ( $] ge $fc_available ) {
+    require feature;
+    'feature'->import('fc'); # string avoids warning on old Perls <sigh>
+  }
+}
+
+use strict;
+
+our $VERSION = '1.07';
+our @ISA = qw(Exporter);
+our @EXPORT = qw(look);
+
+=head1 NAME
+
+Search::Dict - look - search for key in dictionary file
+
+=head1 SYNOPSIS
+
+    use Search::Dict;
+    look *FILEHANDLE, $key, $dict, $fold;
+
+    use Search::Dict;
+    look *FILEHANDLE, $params;
+
+=head1 DESCRIPTION
+
+Sets file position in FILEHANDLE to be first line greater than or equal
+(stringwise) to I<$key>.  Returns the new file position, or -1 if an error
+occurs.
+
+The flags specify dictionary order and case folding:
+
+If I<$dict> is true, search by dictionary order (ignore anything but word
+characters and whitespace).  The default is honour all characters.
+
+If I<$fold> is true, ignore case.  The default is to honour case.
+
+If there are only three arguments and the third argument is a hash
+reference, the keys of that hash can have values C<dict>, C<fold>, and
+C<comp> or C<xfrm> (see below), and their corresponding values will be
+used as the parameters.
+
+If a comparison subroutine (comp) is defined, it must return less than zero,
+zero, or greater than zero, if the first comparand is less than,
+equal, or greater than the second comparand.
+
+If a transformation subroutine (xfrm) is defined, its value is used to
+transform the lines read from the filehandle before their comparison.
+
+=cut
+
+sub look {
+    my($fh,$key,$dict,$fold) = @_;
+    my ($comp, $xfrm);
+    if (@_ == 3 && ref $dict eq 'HASH') {
+	my $params = $dict;
+	$dict = 0;
+	$dict = $params->{dict} if exists $params->{dict};
+	$fold = $params->{fold} if exists $params->{fold};
+	$comp = $params->{comp} if exists $params->{comp};
+	$xfrm = $params->{xfrm} if exists $params->{xfrm};
+    }
+    $comp = sub { $_[0] cmp $_[1] } unless defined $comp;
+    local($_);
+    my $fno = fileno $fh;
+    my @stat;
+    if ( defined $fno && $fno >= 0 && ! tied *{$fh} ) { # real, open file
+      @stat = eval { stat($fh) }; # in case fileno lies
+    }
+    my($size, $blksize) = @stat[7,11];
+    $size = do { seek($fh,0,2); my $s = tell($fh); seek($fh,0,0); $s }
+        unless defined $size;
+    $blksize ||= 8192;
+    $key =~ s/[^\w\s]//g if $dict;
+    if ( $fold ) {
+      $key = $] ge $fc_available ? fc($key) : lc($key);
+    }
+    # find the right block
+    my($min, $max) = (0, int($size / $blksize));
+    my $mid;
+    while ($max - $min > 1) {
+	$mid = int(($max + $min) / 2);
+	seek($fh, $mid * $blksize, 0)
+	    or return -1;
+	<$fh> if $mid;			# probably a partial line
+	$_ = <$fh>;
+	$_ = $xfrm->($_) if defined $xfrm;
+	chomp;
+	s/[^\w\s]//g if $dict;
+        if ( $fold ) {
+          $_ = $] ge $fc_available ? fc($_) : lc($_);
+        }
+	if (defined($_) && $comp->($_, $key) < 0) {
+	    $min = $mid;
+	}
+	else {
+	    $max = $mid;
+	}
+    }
+    # find the right line
+    $min *= $blksize;
+    seek($fh,$min,0)
+	or return -1;
+    <$fh> if $min;
+    for (;;) {
+	$min = tell($fh);
+	defined($_ = <$fh>)
+	    or last;
+	$_ = $xfrm->($_) if defined $xfrm;
+	chomp;
+	s/[^\w\s]//g if $dict;
+        if ( $fold ) {
+          $_ = $] ge $fc_available ? fc($_) : lc($_);
+        }
+	last if $comp->($_, $key) >= 0;
+    }
+    seek($fh,$min,0);
+    $min;
+}
+
+1;

Added: vendor/perl/dist/dist/Search-Dict/t/Dict.t
===================================================================
--- vendor/perl/dist/dist/Search-Dict/t/Dict.t	                        (rev 0)
+++ vendor/perl/dist/dist/Search-Dict/t/Dict.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,124 @@
+#!./perl
+
+use strict;
+use Test::More;
+plan tests => ( $] ge '5.008' ? 14 : 10 );
+
+my $DICT = <<EOT;
+Aarhus
+Aaron
+Ababa
+aback
+abaft
+abandon
+abandoned
+abandoning
+abandonment
+abandons
+abase
+abased
+abasement
+abasements
+abases
+abash
+abashed
+abashes
+abashing
+abasing
+abate
+abated
+abatement
+abatements
+abater
+abates
+abating
+Abba
+EOT
+
+use Tie::Handle; # loads Tie::StdHandle
+use Search::Dict;
+
+open(DICT, "+>dict-$$") or die "Can't create dict-$$: $!";
+binmode DICT;			# To make length expected one.
+print DICT $DICT;
+
+my $word;
+
+my $pos = look *DICT, "Ababa";
+chomp($word = <DICT>);
+cmp_ok $pos, ">=", 0;
+is $word, "Ababa", "found 'Ababa' from file";
+
+if (ord('a') > ord('A') ) {  # ASCII
+
+    $pos = look *DICT, "foo";
+    $word = <DICT>;
+
+    is $pos, length($DICT), "word not found will search to end of file";
+
+    my $pos = look *DICT, "abash";
+    chomp($word = <DICT>);
+    cmp_ok $pos, ">=", 0;
+    is $word, "abash";
+}
+else { # EBCDIC systems e.g. os390
+
+    $pos = look *DICT, "FOO";
+    $word = <DICT>;
+
+    is $pos, length($DICT);  # will search to end of file
+
+    my $pos = look *DICT, "Abba";
+    chomp($word = <DICT>);
+    cmp_ok $pos, ">=", 0;
+    is $word, "Abba";
+}
+
+$pos = look *DICT, "aarhus", 1, 1;
+chomp($word = <DICT>);
+
+cmp_ok $pos, ">=", 0;
+is $word, "Aarhus";
+
+close DICT or die "cannot close";
+
+{
+  local $^W = 1; # turn on global warnings for stat() in Search::Dict
+
+  my $warn = '';
+  local $SIG{__WARN__} = sub { $warn = join("\n", at _) };
+
+  tie *DICT, 'Tie::StdHandle', "<", "dict-$$";
+
+  $pos = look \*DICT, "aarhus", 1, 1;
+  is( $warn, '', "no warning seen" );
+
+  $word = <DICT>;
+  chomp $word;
+
+  cmp_ok $pos, ">=", 0, "case-insensitive search for 'aarhus' returned > 0";
+  is $word, "Aarhus", "case-insensitive search found 'Aarhus'";
+
+  untie *DICT;
+}
+unlink "dict-$$";
+
+if ( $] ge '5.008' ) {
+      open my $strfh, "<", \$DICT or die $!;
+
+      {
+          my $pos = look $strfh, 'Ababa';
+          chomp($word = <$strfh>);
+          cmp_ok $pos, ">=", 0;
+          is $word, "Ababa";
+      }
+
+      {
+          my $pos = look $strfh, "aarhus", 1, 1;
+          chomp($word = <$strfh>);
+          cmp_ok $pos, ">=", 0;
+          is $word, "Aarhus";
+      }
+
+      close $strfh;
+}

Added: vendor/perl/dist/dist/Storable/t/robust.t
===================================================================
--- vendor/perl/dist/dist/Storable/t/robust.t	                        (rev 0)
+++ vendor/perl/dist/dist/Storable/t/robust.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
+#!/usr/bin/perl
+
+# This test script checks that Storable will load properly if someone
+# is incorrectly messing with %INC to hide Log::Agent.  No, no-one should
+# really be doing this, but, then, it *used* to work!
+
+use Test::More;
+plan tests => 1;
+
+$INC{'Log/Agent.pm'} = '#ignore#';
+require Storable;
+pass;

Added: vendor/perl/dist/dist/Term-Complete/lib/Term/Complete.pm
===================================================================
--- vendor/perl/dist/dist/Term-Complete/lib/Term/Complete.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Term-Complete/lib/Term/Complete.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,188 @@
+package Term::Complete;
+require 5.000;
+require Exporter;
+
+use strict;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(Complete);
+our $VERSION = '1.402';
+
+#      @(#)complete.pl,v1.2            (me at anywhere.EBay.Sun.COM) 09/23/91
+
+=head1 NAME
+
+Term::Complete - Perl word completion module
+
+=head1 SYNOPSIS
+
+    $input = Complete('prompt_string', \@completion_list);
+    $input = Complete('prompt_string', @completion_list);
+
+=head1 DESCRIPTION
+
+This routine provides word completion on the list of words in
+the array (or array ref).
+
+The tty driver is put into raw mode and restored using an operating
+system specific command, in UNIX-like environments C<stty>.
+
+The following command characters are defined:
+
+=over 4
+
+=item E<lt>tabE<gt>
+
+Attempts word completion.
+Cannot be changed.
+
+=item ^D
+
+Prints completion list.
+Defined by I<$Term::Complete::complete>.
+
+=item ^U
+
+Erases the current input.
+Defined by I<$Term::Complete::kill>.
+
+=item E<lt>delE<gt>, E<lt>bsE<gt>
+
+Erases one character.
+Defined by I<$Term::Complete::erase1> and I<$Term::Complete::erase2>.
+
+=back
+
+=head1 DIAGNOSTICS
+
+Bell sounds when word completion fails.
+
+=head1 BUGS
+
+The completion character E<lt>tabE<gt> cannot be changed.
+
+=head1 AUTHOR
+
+Wayne Thompson
+
+=cut
+
+our($complete, $kill, $erase1, $erase2, $tty_raw_noecho, $tty_restore, $stty, $tty_safe_restore);
+our($tty_saved_state) = '';
+CONFIG: {
+    $complete = "\004";
+    $kill     = "\025";
+    $erase1 =   "\177";
+    $erase2 =   "\010";
+    foreach my $s (qw(/bin/stty /usr/bin/stty)) {
+	if (-x $s) {
+	    $tty_raw_noecho = "$s raw -echo";
+	    $tty_restore    = "$s -raw echo";
+	    $tty_safe_restore = $tty_restore;
+	    $stty = $s;
+	    last;
+	}
+    }
+}
+
+sub Complete {
+    my($prompt, @cmp_lst, $cmp, $test, $l, @match);
+    my ($return, $r) = ("", 0);
+
+    $return = "";
+    $r      = 0;
+
+    $prompt = shift;
+    if (ref $_[0] || $_[0] =~ /^\*/) {
+	@cmp_lst = sort @{$_[0]};
+    }
+    else {
+	@cmp_lst = sort(@_);
+    }
+
+    # Attempt to save the current stty state, to be restored later
+    if (defined $stty && defined $tty_saved_state && $tty_saved_state eq '') {
+	$tty_saved_state = qx($stty -g 2>/dev/null);
+	if ($?) {
+	    # stty -g not supported
+	    $tty_saved_state = undef;
+	}
+	else {
+	    $tty_saved_state =~ s/\s+$//g;
+	    $tty_restore = qq($stty "$tty_saved_state" 2>/dev/null);
+	}
+    }
+    system $tty_raw_noecho if defined $tty_raw_noecho;
+    LOOP: {
+        local $_;
+        print($prompt, $return);
+        while (($_ = getc(STDIN)) ne "\r") {
+            CASE: {
+                # (TAB) attempt completion
+                $_ eq "\t" && do {
+                    @match = grep(/^\Q$return/, @cmp_lst);
+                    unless ($#match < 0) {
+                        $l = length($test = shift(@match));
+                        foreach $cmp (@match) {
+                            until (substr($cmp, 0, $l) eq substr($test, 0, $l)) {
+                                $l--;
+                            }
+                        }
+                        print("\a");
+                        print($test = substr($test, $r, $l - $r));
+                        $r = length($return .= $test);
+                    }
+                    last CASE;
+                };
+
+                # (^D) completion list
+                $_ eq $complete && do {
+                    print(join("\r\n", '', grep(/^\Q$return/, @cmp_lst)), "\r\n");
+                    redo LOOP;
+                };
+
+                # (^U) kill
+                $_ eq $kill && do {
+                    if ($r) {
+                        $r	= 0;
+			$return	= "";
+                        print("\r\n");
+                        redo LOOP;
+                    }
+                    last CASE;
+                };
+
+                # (DEL) || (BS) erase
+                ($_ eq $erase1 || $_ eq $erase2) && do {
+                    if($r) {
+                        print("\b \b");
+                        chop($return);
+                        $r--;
+                    }
+                    last CASE;
+                };
+
+                # printable char
+                ord >= 32 && do {
+                    $return .= $_;
+                    $r++;
+                    print;
+                    last CASE;
+                };
+            }
+        }
+    }
+
+    # system $tty_restore if defined $tty_restore;
+    if (defined $tty_saved_state && defined $tty_restore && defined $tty_safe_restore)
+    {
+	system $tty_restore;
+	if ($?) {
+	    # tty_restore caused error
+	    system $tty_safe_restore;
+	}
+    }
+    print("\n");
+    $return;
+}
+
+1;

Added: vendor/perl/dist/dist/Term-Complete/t/Complete.t
===================================================================
--- vendor/perl/dist/dist/Term-Complete/t/Complete.t	                        (rev 0)
+++ vendor/perl/dist/dist/Term-Complete/t/Complete.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,111 @@
+#!./perl
+
+use warnings;
+use Test::More tests => 8;
+use vars qw( $Term::Complete::complete $complete $Term::Complete::stty );
+
+SKIP: {
+    skip('PERL_SKIP_TTY_TEST', 8) if $ENV{PERL_SKIP_TTY_TEST};
+
+    use_ok( 'Term::Complete' );
+
+    # this skips tests AND prevents the "used only once" warning
+    skip('No stty, Term::Complete will not run here', 7)
+	unless defined $Term::Complete::tty_raw_noecho &&
+	       defined $Term::Complete::tty_restore;
+
+    # also prevent Term::Complete from running stty and messing up the terminal
+    undef $Term::Complete::tty_restore;
+    undef $Term::Complete::tty_raw_noecho;
+    undef $Term::Complete::stty;
+
+    *complete = \$Term::Complete::complete;
+
+    my $in = tie *STDIN, 'FakeIn', "fro\t";
+    my $out = tie *STDOUT, 'FakeOut';
+    my @words = ( 'frobnitz', 'frobozz', 'frostychocolatemilkshakes' );
+
+    Complete('', \@words);
+    my $data = get_expected('fro', @words);
+
+    # there should be an \a after our word
+    like( $$out, qr/fro\a/, 'found bell character' );
+
+    # now remove the \a -- there should be only one
+    is( $out->scrub(), 1, '(single) bell removed');
+
+    # 'fro' should match all three words
+    like( $$out, qr/$data/, 'all three words possible' );
+    $out->clear();
+
+    # should only find 'frobnitz' and 'frobozz'
+    $in->add('frob');
+    Complete('', @words);
+    $out->scrub();
+    is( $$out, get_expected('frob', 'frobnitz', 'frobozz'), 'expected frob*' );
+    $out->clear();
+
+    # should only do 'frobozz'
+    $in->add('frobo');
+    Complete('', @words);
+    $out->scrub();
+    is( $$out, get_expected( 'frobo', 'frobozz' ), 'only frobozz possible' );
+    $out->clear();
+
+    # change the completion character
+    $complete = "!";
+    $in->add('frobn');
+    Complete('prompt:', @words);
+    $out->scrub();
+    like( $$out, qr/prompt:frobn/, 'prompt is okay' );
+
+    # now remove the prompt and we should be okay
+    $$out =~ s/prompt://g;
+    is( $$out, get_expected('frobn', 'frobnitz' ), 'works with new $complete' );
+
+} # end of SKIP, end of tests
+
+# easier than matching space characters
+sub get_expected {
+	my $word = shift;
+	return join('.', $word, @_, $word, '.');
+}
+
+package FakeIn;
+
+sub TIEHANDLE {
+	my ($class, $text) = @_;
+	$text .= "$main::complete\025";
+	bless(\$text, $class);
+}
+
+sub add {
+	my ($self, $text) = @_;
+	$$self = $text . "$main::complete\025";
+}
+
+sub GETC {
+	my $self = shift;
+	return length $$self ? substr($$self, 0, 1, '') : "\r";
+}
+
+package FakeOut;
+
+sub TIEHANDLE {
+	bless(\(my $text), $_[0]);
+}
+
+sub clear {
+	${ $_[0] } = '';
+}
+
+# remove the bell character
+sub scrub {
+	${ $_[0] } =~ tr/\a//d;
+}
+
+# must shift off self
+sub PRINT {
+	my $self = shift;
+	($$self .= join('', @_)) =~ s/\s+/./gm;
+}

Added: vendor/perl/dist/dist/Term-ReadLine/lib/Term/ReadLine.pm
===================================================================
--- vendor/perl/dist/dist/Term-ReadLine/lib/Term/ReadLine.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Term-ReadLine/lib/Term/ReadLine.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,479 @@
+=head1 NAME
+
+Term::ReadLine - Perl interface to various C<readline> packages.
+If no real package is found, substitutes stubs instead of basic functions.
+
+=head1 SYNOPSIS
+
+  use Term::ReadLine;
+  my $term = Term::ReadLine->new('Simple Perl calc');
+  my $prompt = "Enter your arithmetic expression: ";
+  my $OUT = $term->OUT || \*STDOUT;
+  while ( defined ($_ = $term->readline($prompt)) ) {
+    my $res = eval($_);
+    warn $@ if $@;
+    print $OUT $res, "\n" unless $@;
+    $term->addhistory($_) if /\S/;
+  }
+
+=head1 DESCRIPTION
+
+This package is just a front end to some other packages. It's a stub to
+set up a common interface to the various ReadLine implementations found on
+CPAN (under the C<Term::ReadLine::*> namespace).
+
+=head1 Minimal set of supported functions
+
+All the supported functions should be called as methods, i.e., either as 
+
+  $term = Term::ReadLine->new('name');
+
+or as 
+
+  $term->addhistory('row');
+
+where $term is a return value of Term::ReadLine-E<gt>new().
+
+=over 12
+
+=item C<ReadLine>
+
+returns the actual package that executes the commands. Among possible
+values are C<Term::ReadLine::Gnu>, C<Term::ReadLine::Perl>,
+C<Term::ReadLine::Stub>.
+
+=item C<new>
+
+returns the handle for subsequent calls to following
+functions. Argument is the name of the application. Optionally can be
+followed by two arguments for C<IN> and C<OUT> filehandles. These
+arguments should be globs.
+
+=item C<readline>
+
+gets an input line, I<possibly> with actual C<readline>
+support. Trailing newline is removed. Returns C<undef> on C<EOF>.
+
+=item C<addhistory>
+
+adds the line to the history of input, from where it can be used if
+the actual C<readline> is present.
+
+=item C<IN>, C<OUT>
+
+return the filehandles for input and output or C<undef> if C<readline>
+input and output cannot be used for Perl.
+
+=item C<MinLine>
+
+If argument is specified, it is an advice on minimal size of line to
+be included into history.  C<undef> means do not include anything into
+history. Returns the old value.
+
+=item C<findConsole>
+
+returns an array with two strings that give most appropriate names for
+files for input and output using conventions C<"E<lt>$in">, C<"E<gt>out">.
+
+=item Attribs
+
+returns a reference to a hash which describes internal configuration
+of the package. Names of keys in this hash conform to standard
+conventions with the leading C<rl_> stripped.
+
+=item C<Features>
+
+Returns a reference to a hash with keys being features present in
+current implementation. Several optional features are used in the
+minimal interface: C<appname> should be present if the first argument
+to C<new> is recognized, and C<minline> should be present if
+C<MinLine> method is not dummy.  C<autohistory> should be present if
+lines are put into history automatically (maybe subject to
+C<MinLine>), and C<addhistory> if C<addhistory> method is not dummy.
+
+If C<Features> method reports a feature C<attribs> as present, the
+method C<Attribs> is not dummy.
+
+=back
+
+=head1 Additional supported functions
+
+Actually C<Term::ReadLine> can use some other package, that will
+support a richer set of commands.
+
+All these commands are callable via method interface and have names
+which conform to standard conventions with the leading C<rl_> stripped.
+
+The stub package included with the perl distribution allows some
+additional methods: 
+
+=over 12
+
+=item C<tkRunning>
+
+makes Tk event loop run when waiting for user input (i.e., during
+C<readline> method).
+
+=item C<event_loop>
+
+Registers call-backs to wait for user input (i.e., during C<readline>
+method).  This supersedes tkRunning.
+
+The first call-back registered is the call back for waiting.  It is
+expected that the callback will call the current event loop until
+there is something waiting to get on the input filehandle.  The parameter
+passed in is the return value of the second call back.
+
+The second call-back registered is the call back for registration.  The
+input filehandle (often STDIN, but not necessarily) will be passed in.
+
+For example, with AnyEvent:
+
+  $term->event_loop(sub {
+    my $data = shift;
+    $data->[1] = AE::cv();
+    $data->[1]->recv();
+  }, sub {
+    my $fh = shift;
+    my $data = [];
+    $data->[0] = AE::io($fh, 0, sub { $data->[1]->send() });
+    $data;
+  });
+
+The second call-back is optional if the call back is registered prior to
+the call to $term-E<gt>readline.
+
+Deregistration is done in this case by calling event_loop with C<undef>
+as its parameter:
+
+    $term->event_loop(undef);
+
+This will cause the data array ref to be removed, allowing normal garbage
+collection to clean it up.  With AnyEvent, that will cause $data->[0] to
+be cleaned up, and AnyEvent will automatically cancel the watcher at that
+time.  If another loop requires more than that to clean up a file watcher,
+that will be up to the caller to handle.
+
+=item C<ornaments>
+
+makes the command line stand out by using termcap data.  The argument
+to C<ornaments> should be 0, 1, or a string of a form
+C<"aa,bb,cc,dd">.  Four components of this string should be names of
+I<terminal capacities>, first two will be issued to make the prompt
+standout, last two to make the input line standout.
+
+=item C<newTTY>
+
+takes two arguments which are input filehandle and output filehandle.
+Switches to use these filehandles.
+
+=back
+
+One can check whether the currently loaded ReadLine package supports
+these methods by checking for corresponding C<Features>.
+
+=head1 EXPORTS
+
+None
+
+=head1 ENVIRONMENT
+
+The environment variable C<PERL_RL> governs which ReadLine clone is
+loaded. If the value is false, a dummy interface is used. If the value
+is true, it should be tail of the name of the package to use, such as
+C<Perl> or C<Gnu>.  
+
+As a special case, if the value of this variable is space-separated,
+the tail might be used to disable the ornaments by setting the tail to
+be C<o=0> or C<ornaments=0>.  The head should be as described above, say
+
+If the variable is not set, or if the head of space-separated list is
+empty, the best available package is loaded.
+
+  export "PERL_RL=Perl o=0" # Use Perl ReadLine sans ornaments
+  export "PERL_RL= o=0"     # Use best available ReadLine sans ornaments
+
+(Note that processing of C<PERL_RL> for ornaments is in the discretion of the 
+particular used C<Term::ReadLine::*> package).
+
+=cut
+
+use strict;
+
+package Term::ReadLine::Stub;
+our @ISA = qw'Term::ReadLine::Tk Term::ReadLine::TermCap';
+
+$DB::emacs = $DB::emacs;	# To peacify -w
+our @rl_term_set;
+*rl_term_set = \@Term::ReadLine::TermCap::rl_term_set;
+
+sub PERL_UNICODE_STDIN () { 0x0001 }
+
+sub ReadLine {'Term::ReadLine::Stub'}
+sub readline {
+  my $self = shift;
+  my ($in,$out,$str) = @$self;
+  my $prompt = shift;
+  print $out $rl_term_set[0], $prompt, $rl_term_set[1], $rl_term_set[2]; 
+  $self->register_Tk 
+     if not $Term::ReadLine::registered and $Term::ReadLine::toloop;
+  #$str = scalar <$in>;
+  $str = $self->get_line;
+  utf8::upgrade($str)
+      if (${^UNICODE} & PERL_UNICODE_STDIN || defined ${^ENCODING}) &&
+         utf8::valid($str);
+  print $out $rl_term_set[3]; 
+  # bug in 5.000: chomping empty string creats length -1:
+  chomp $str if defined $str;
+  $str;
+}
+sub addhistory {}
+
+sub findConsole {
+    my $console;
+    my $consoleOUT;
+
+    if (-e "/dev/tty" and $^O ne 'MSWin32') {
+	$console = "/dev/tty";
+    } elsif (-e "con" or $^O eq 'MSWin32' or $^O eq 'msys') {
+       $console = 'CONIN$';
+       $consoleOUT = 'CONOUT$';
+    } elsif ($^O eq 'VMS') {
+	$console = "sys\$command";
+    } elsif ($^O eq 'os2' && !$DB::emacs) {
+	$console = "/dev/con";
+    } else {
+	$console = undef;
+    }
+
+    $consoleOUT = $console unless defined $consoleOUT;
+    $console = "&STDIN" unless defined $console;
+    if ($console eq "/dev/tty" && !open(my $fh, "<", $console)) {
+      $console = "&STDIN";
+      undef($consoleOUT);
+    }
+    if (!defined $consoleOUT) {
+      $consoleOUT = defined fileno(STDERR) && $^O ne 'MSWin32' ? "&STDERR" : "&STDOUT";
+    }
+    ($console,$consoleOUT);
+}
+
+sub new {
+  die "method new called with wrong number of arguments" 
+    unless @_==2 or @_==4;
+  #local (*FIN, *FOUT);
+  my ($FIN, $FOUT, $ret);
+  if (@_==2) {
+    my($console, $consoleOUT) = $_[0]->findConsole;
+
+
+    # the Windows CONIN$ needs GENERIC_WRITE mode to allow
+    # a SetConsoleMode() if we end up using Term::ReadKey
+    open FIN, (  $^O eq 'MSWin32' && $console eq 'CONIN$' ) ? "+<$console" :
+                                                              "<$console";
+    open FOUT,">$consoleOUT";
+
+    #OUT->autoflush(1);		# Conflicts with debugger?
+    my $sel = select(FOUT);
+    $| = 1;				# for DB::OUT
+    select($sel);
+    $ret = bless [\*FIN, \*FOUT];
+  } else {			# Filehandles supplied
+    $FIN = $_[2]; $FOUT = $_[3];
+    #OUT->autoflush(1);		# Conflicts with debugger?
+    my $sel = select($FOUT);
+    $| = 1;				# for DB::OUT
+    select($sel);
+    $ret = bless [$FIN, $FOUT];
+  }
+  if ($ret->Features->{ornaments} 
+      and not ($ENV{PERL_RL} and $ENV{PERL_RL} =~ /\bo\w*=0/)) {
+    local $Term::ReadLine::termcap_nowarn = 1;
+    $ret->ornaments(1);
+  }
+  return $ret;
+}
+
+sub newTTY {
+  my ($self, $in, $out) = @_;
+  $self->[0] = $in;
+  $self->[1] = $out;
+  my $sel = select($out);
+  $| = 1;				# for DB::OUT
+  select($sel);
+}
+
+sub IN { shift->[0] }
+sub OUT { shift->[1] }
+sub MinLine { undef }
+sub Attribs { {} }
+
+my %features = (tkRunning => 1, ornaments => 1, 'newTTY' => 1);
+sub Features { \%features }
+
+#sub get_line {
+#  my $self = shift;
+#  my $in = $self->IN;
+#  local ($/) = "\n";
+#  return scalar <$in>;
+#}
+
+package Term::ReadLine;		# So late to allow the above code be defined?
+
+our $VERSION = '1.12';
+
+my ($which) = exists $ENV{PERL_RL} ? split /\s+/, $ENV{PERL_RL} : undef;
+if ($which) {
+  if ($which =~ /\bgnu\b/i){
+    eval "use Term::ReadLine::Gnu;";
+  } elsif ($which =~ /\bperl\b/i) {
+    eval "use Term::ReadLine::Perl;";
+  } elsif ($which =~ /^(Stub|TermCap|Tk)$/) {
+    # it is already in memory to avoid false exception as seen in:
+    # PERL_RL=Stub perl -e'$SIG{__DIE__} = sub { print @_ }; require Term::ReadLine'
+  } else {
+    eval "use Term::ReadLine::$which;";
+  }
+} elsif (defined $which and $which ne '') {	# Defined but false
+  # Do nothing fancy
+} else {
+  eval "use Term::ReadLine::Gnu; 1" or eval "use Term::ReadLine::Perl; 1";
+}
+
+#require FileHandle;
+
+# To make possible switch off RL in debugger: (Not needed, work done
+# in debugger).
+our @ISA;
+if (defined &Term::ReadLine::Gnu::readline) {
+  @ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
+} elsif (defined &Term::ReadLine::Perl::readline) {
+  @ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
+} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) {
+  @ISA = "Term::ReadLine::$which";
+} else {
+  @ISA = qw(Term::ReadLine::Stub);
+}
+
+package Term::ReadLine::TermCap;
+
+# Prompt-start, prompt-end, command-line-start, command-line-end
+#     -- zero-width beautifies to emit around prompt and the command line.
+our @rl_term_set = ("","","","");
+# string encoded:
+our $rl_term_set = ',,,';
+
+our $terminal;
+sub LoadTermCap {
+  return if defined $terminal;
+  
+  require Term::Cap;
+  $terminal = Tgetent Term::Cap ({OSPEED => 9600}); # Avoid warning.
+}
+
+sub ornaments {
+  shift;
+  return $rl_term_set unless @_;
+  $rl_term_set = shift;
+  $rl_term_set ||= ',,,';
+  $rl_term_set = 'us,ue,md,me' if $rl_term_set eq '1';
+  my @ts = split /,/, $rl_term_set, 4;
+  eval { LoadTermCap };
+  unless (defined $terminal) {
+    warn("Cannot find termcap: $@\n") unless $Term::ReadLine::termcap_nowarn;
+    $rl_term_set = ',,,';
+    return;
+  }
+  @rl_term_set = map {$_ ? $terminal->Tputs($_,1) || '' : ''} @ts;
+  return $rl_term_set;
+}
+
+
+package Term::ReadLine::Tk;
+
+# This package inserts a Tk->fileevent() before the diamond operator.
+# The Tk watcher dispatches Tk events until the filehandle returned by
+# the$term->IN() accessor becomes ready for reading.  It's assumed
+# that the diamond operator will return a line of input immediately at
+# that point.
+
+my ($giveup);
+
+# maybe in the future the Tk-specific aspects will be removed.
+sub Tk_loop{
+    if (ref $Term::ReadLine::toloop)
+    {
+        $Term::ReadLine::toloop->[0]->($Term::ReadLine::toloop->[2]);
+    }
+    else
+    {
+        Tk::DoOneEvent(0) until $giveup;
+        $giveup = 0;
+    }
+};
+
+sub register_Tk {
+    my $self = shift;
+    unless ($Term::ReadLine::registered++)
+    {
+        if (ref $Term::ReadLine::toloop)
+        {
+            $Term::ReadLine::toloop->[2] = $Term::ReadLine::toloop->[1]->($self->IN) if $Term::ReadLine::toloop->[1];
+        }
+        else
+        {
+            Tk->fileevent($self->IN,'readable',sub { $giveup = 1});
+        }
+    }
+};
+
+sub tkRunning {
+  $Term::ReadLine::toloop = $_[1] if @_ > 1;
+  $Term::ReadLine::toloop;
+}
+
+sub event_loop {
+    shift;
+
+    # T::RL::Gnu and T::RL::Perl check that this exists, if not,
+    # it doesn't call the loop.  Those modules will need to be
+    # fixed before this can be removed.
+    if (not defined &Tk::DoOneEvent)
+    {
+        *Tk::DoOneEvent = sub {
+            die "what?"; # this shouldn't be called.
+        }
+    }
+
+    # store the callback in toloop, again so that other modules will
+    # recognise it and call us for the loop.
+    $Term::ReadLine::toloop = [ @_ ] if @_ > 0; # 0 because we shifted off $self.
+    $Term::ReadLine::toloop;
+}
+
+sub PERL_UNICODE_STDIN () { 0x0001 }
+
+sub get_line {
+  my $self = shift;
+  my ($in,$out,$str) = @$self;
+
+  if ($Term::ReadLine::toloop) {
+    $self->register_Tk if not $Term::ReadLine::registered;
+    $self->Tk_loop;
+  }
+
+  local ($/) = "\n";
+  $str = <$in>;
+
+  utf8::upgrade($str)
+      if (${^UNICODE} & PERL_UNICODE_STDIN || defined ${^ENCODING}) &&
+         utf8::valid($str);
+  print $out $rl_term_set[3];
+  # bug in 5.000: chomping empty string creats length -1:
+  chomp $str if defined $str;
+
+  $str;
+}
+
+1;
+

Added: vendor/perl/dist/dist/Term-ReadLine/t/AE.t
===================================================================
--- vendor/perl/dist/dist/Term-ReadLine/t/AE.t	                        (rev 0)
+++ vendor/perl/dist/dist/Term-ReadLine/t/AE.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
+#!perl
+
+use Test::More;
+
+eval "use AnyEvent; 1" or
+    plan skip_all => "AnyEvent is not installed.";
+
+# seeing as the entire point of this test is to test the event handler,
+# we need to mock as little as possible.  To keep things tightly controlled,
+# we'll use the Stub directly.
+BEGIN {
+    $ENV{PERL_RL} = 'Stub o=0';
+}
+plan tests => 3;
+
+# need to delay this so that AE is loaded first.
+require Term::ReadLine;
+use File::Spec;
+
+my $t = Term::ReadLine->new('AE');
+ok($t, "Created object");
+is($t->ReadLine, 'Term::ReadLine::Stub', 'Correct type');
+
+my ($cv, $fe);
+$t->event_loop(
+               sub {
+                   $cv = AE::cv();
+                   $cv->recv();
+               }, sub {
+                   my $fh = shift;
+                   $fe ||= AE::io($fh, 0, sub { $cv->send() });
+               }
+              );
+
+my $text = 'some text';
+my $T = $text . "\n";
+my $w = AE::timer(0,1,sub { 
+pass("Event loop called");
+exit 0;
+});
+
+my $result = $t->readline('Do not press enter>');
+fail("Should not get here.");

Added: vendor/perl/dist/dist/Term-ReadLine/t/AETk.t
===================================================================
(Binary files differ)

Index: vendor/perl/dist/dist/Term-ReadLine/t/AETk.t
===================================================================
--- vendor/perl/dist/dist/Term-ReadLine/t/AETk.t	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/dist/Term-ReadLine/t/AETk.t	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/dist/Term-ReadLine/t/AETk.t
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/dist/Term-ReadLine/t/ReadLine.t
===================================================================
--- vendor/perl/dist/dist/Term-ReadLine/t/ReadLine.t	                        (rev 0)
+++ vendor/perl/dist/dist/Term-ReadLine/t/ReadLine.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,32 @@
+#!./perl -w
+use strict;
+
+package Term::ReadLine::Mock;
+our @ISA = 'Term::ReadLine::Stub';
+sub ReadLine {'Term::ReadLine::Mock'};
+sub readline { "a line" }
+sub new      { bless {} }
+
+package main;
+
+use Test::More tests => 15;
+
+BEGIN {
+    $ENV{PERL_RL} = 'Mock'; # test against our instrumented class
+    use_ok('Term::ReadLine');
+}
+
+my $t = new Term::ReadLine 'test term::readline';
+
+ok($t, "made something");
+
+isa_ok($t,          'Term::ReadLine::Mock');
+
+for my $method (qw( ReadLine readline addhistory IN OUT MinLine
+                    findConsole Attribs Features new ) ) {
+    can_ok($t, $method);
+}
+
+is($t->ReadLine,    'Term::ReadLine::Mock', "\$object->ReadLine");
+is($t->readline,    'a line',               "\$object->readline");
+

Added: vendor/perl/dist/dist/Term-ReadLine/t/Tk.t
===================================================================
--- vendor/perl/dist/dist/Term-ReadLine/t/Tk.t	                        (rev 0)
+++ vendor/perl/dist/dist/Term-ReadLine/t/Tk.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+#!perl
+
+use Test::More;
+
+eval "use Tk; 1" or
+    plan skip_all => "Tk is not installed.";
+
+# seeing as the entire point of this test is to test the event handler,
+# we need to mock as little as possible.  To keep things tightly controlled,
+# we'll use the Stub directly.
+BEGIN {
+    $ENV{PERL_RL} = 'Stub o=0';
+}
+
+my $mw;
+eval {
+    use File::Spec;
+    $mw = MainWindow->new(); $mw->withdraw();
+    1;
+} or plan skip_all => "Tk can't start. DISPLAY not set?";
+
+# need to delay this so that Tk is loaded first.
+require Term::ReadLine;
+
+plan tests => 3;
+
+my $t = Term::ReadLine->new('Tk');
+ok($t, "Created object");
+is($t->ReadLine, 'Term::ReadLine::Stub', 'Correct type');
+$t->tkRunning(1);
+
+my $text = 'some text';
+my $T = $text . "\n";
+
+my $w = Tk::after($mw,0,
+                  sub {
+                      pass("Event loop called");
+                      exit 0;
+                  });
+
+my $result = $t->readline('Do not press enter>');
+fail("Should not get here.");

Added: vendor/perl/dist/dist/Text-Abbrev/lib/Text/Abbrev.pm
===================================================================
--- vendor/perl/dist/dist/Text-Abbrev/lib/Text/Abbrev.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Text-Abbrev/lib/Text/Abbrev.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,84 @@
+package Text::Abbrev;
+require 5.005;		# Probably works on earlier versions too.
+require Exporter;
+
+our $VERSION = '1.02';
+
+=head1 NAME
+
+Text::Abbrev - abbrev - create an abbreviation table from a list
+
+=head1 SYNOPSIS
+
+    use Text::Abbrev;
+    abbrev $hashref, LIST
+
+
+=head1 DESCRIPTION
+
+Stores all unambiguous truncations of each element of LIST
+as keys in the associative array referenced by C<$hashref>.
+The values are the original list elements.
+
+=head1 EXAMPLE
+
+    $hashref = abbrev qw(list edit send abort gripe);
+
+    %hash = abbrev qw(list edit send abort gripe);
+
+    abbrev $hashref, qw(list edit send abort gripe);
+
+    abbrev(*hash, qw(list edit send abort gripe));
+
+=cut
+
+ at ISA = qw(Exporter);
+ at EXPORT = qw(abbrev);
+
+# Usage:
+#	abbrev \%foo, LIST;
+#	...
+#	$long = $foo{$short};
+
+sub abbrev {
+    my ($word, $hashref, $glob, %table, $returnvoid);
+
+    @_ or return;   # So we don't autovivify onto @_ and trigger warning
+    if (ref($_[0])) {           # hash reference preferably
+      $hashref = shift;
+      $returnvoid = 1;
+    } elsif (ref \$_[0] eq 'GLOB') {  # is actually a glob (deprecated)
+      $hashref = \%{shift()};
+      $returnvoid = 1;
+    }
+    %{$hashref} = ();
+
+    WORD: foreach $word (@_) {
+        for (my $len = (length $word) - 1; $len > 0; --$len) {
+	    my $abbrev = substr($word,0,$len);
+	    my $seen = ++$table{$abbrev};
+	    if ($seen == 1) {	    # We're the first word so far to have
+	    			    # this abbreviation.
+	        $hashref->{$abbrev} = $word;
+	    } elsif ($seen == 2) {  # We're the second word to have this
+	    			    # abbreviation, so we can't use it.
+	        delete $hashref->{$abbrev};
+	    } else {		    # We're the third word to have this
+	    			    # abbreviation, so skip to the next word.
+	        next WORD;
+	    }
+	}
+    }
+    # Non-abbreviations always get entered, even if they aren't unique
+    foreach $word (@_) {
+        $hashref->{$word} = $word;
+    }
+    return if $returnvoid;
+    if (wantarray) {
+      %{$hashref};
+    } else {
+      $hashref;
+    }
+}
+
+1;

Added: vendor/perl/dist/dist/Text-Abbrev/t/Abbrev.t
===================================================================
--- vendor/perl/dist/dist/Text-Abbrev/t/Abbrev.t	                        (rev 0)
+++ vendor/perl/dist/dist/Text-Abbrev/t/Abbrev.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!./perl
+
+print "1..8\n";
+
+use Text::Abbrev;
+
+print "ok 1\n";
+
+# old style as reference
+local(%x);
+my @z = qw(list edit send abort gripe listen);
+abbrev(*x, @z);
+my $r = join ':', sort keys %x; 
+print "not " if exists $x{'l'}   ||
+                exists $x{'li'}  ||
+                exists $x{'lis'};
+print "ok 2\n";
+
+print "not " unless $x{'list'}   eq 'list' &&
+                    $x{'liste'}  eq 'listen' &&
+                    $x{'listen'} eq 'listen';
+print "ok 3\n";
+
+print "not " unless $x{'a'}     eq 'abort' &&
+                    $x{'ab'}    eq 'abort' &&
+                    $x{'abo'}   eq 'abort' &&
+                    $x{'abor'}  eq 'abort' &&
+                    $x{'abort'} eq 'abort';
+print "ok 4\n";
+
+my $test = 5;
+
+# wantarray
+my %y = abbrev @z;
+my $s = join ':', sort keys %y;
+print (($r eq $s)?"ok $test\n":"not ok $test\n"); $test++;
+
+my $y = abbrev @z;
+$s = join ':', sort keys %$y;
+print (($r eq $s)?"ok $test\n":"not ok $test\n"); $test++;
+
+%y = ();
+abbrev \%y, @z;
+
+$s = join ':', sort keys %y;
+print (($r eq $s)?"ok $test\n":"not ok $test\n"); $test++;
+
+
+# warnings safe with zero arguments
+my $notok;
+$^W = 1;
+$SIG{__WARN__} = sub { $notok++ };
+abbrev();
+print ($notok ? "not ok $test\n" : "ok $test\n"); $test++;

Added: vendor/perl/dist/dist/Thread-Queue/t/09_ended.t
===================================================================
--- vendor/perl/dist/dist/Thread-Queue/t/09_ended.t	                        (rev 0)
+++ vendor/perl/dist/dist/Thread-Queue/t/09_ended.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,146 @@
+use strict;
+use warnings;
+
+use Config;
+
+BEGIN {
+    if (! $Config{'useithreads'}) {
+        print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+        exit(0);
+    }
+    if (! $Config{'d_select'}) {
+        print("1..0 # SKIP 'select()' not available for testing\n");
+        exit(0);
+    }
+}
+
+use threads;
+use Thread::Queue;
+
+use Test::More;
+
+my $num_threads = 3;
+my $cycles = 2;
+my $count = 2;
+plan tests => 3*$num_threads*$cycles*$count + 6*$num_threads + 6;
+
+# Test for end() while threads are blocked and no more items in queue
+{
+    my @items = 1..($num_threads*$cycles*$count);
+    my $q = Thread::Queue->new(@items);
+    my $r = Thread::Queue->new();
+
+    my @threads;
+    for my $ii (1..$num_threads) {
+        push @threads, threads->create( sub {
+            # Thread will loop until no more work is coming
+            LOOP:
+            while (my @set = $q->dequeue($count)) {
+                foreach my $item (@set) {
+                    last LOOP if (! defined($item));
+                    pass("'$item' read from queue in thread $ii");
+                }
+                select(undef, undef, undef, rand(1));
+                $r->enqueue($ii);
+            }
+            pass("Thread $ii exiting");
+        });
+    }
+
+    # Make sure there's nothing in the queue and threads are blocking
+    for my $ii (1..($num_threads*$cycles)) {
+        $r->dequeue();
+    }
+    sleep(1);
+    threads->yield();
+
+    is($q->pending(), 0, 'Queue is empty');
+
+    # Signal no more work is coming
+    $q->end();
+
+    is($q->pending(), undef, 'Queue is ended');
+
+    for my $thread (@threads) {
+        $thread->join;
+        pass($thread->tid." joined");
+    }
+}
+
+# Test for end() while threads are blocked and items still remain in queue
+{
+    my @items = 1..($num_threads*$cycles*$count + 1);
+    my $q = Thread::Queue->new(@items);
+    my $r = Thread::Queue->new();
+
+    my @threads;
+    for my $ii (1..$num_threads) {
+        push @threads, threads->create( sub {
+            # Thread will loop until no more work is coming
+            LOOP:
+            while (my @set = $q->dequeue($count)) {
+                foreach my $item (@set) {
+                    last LOOP if (! defined($item));
+                    pass("'$item' read from queue in thread $ii");
+                }
+                select(undef, undef, undef, rand(1));
+                $r->enqueue($ii);
+            }
+            pass("Thread $ii exiting");
+        });
+    }
+
+    # Make sure there's nothing in the queue and threads are blocking
+    for my $ii (1..($num_threads*$cycles)) {
+        $r->dequeue();
+    }
+    sleep(1);
+    threads->yield();
+
+    is($q->pending(), 1, 'Queue has one left');
+
+    # Signal no more work is coming
+    $q->end();
+
+    for my $thread (@threads) {
+        $thread->join;
+        pass($thread->tid." joined");
+    }
+
+    is($q->pending(), undef, 'Queue is ended');
+}
+
+# Test of end() send while items in queue
+{
+    my @items = 1..($num_threads*$cycles*$count + 1);
+    my $q = Thread::Queue->new(@items);
+
+    my @threads;
+    for my $ii (1..$num_threads) {
+        push @threads, threads->create( sub {
+            # Thread will loop until no more work is coming
+            LOOP:
+            while (my @set = $q->dequeue($count)) {
+                foreach my $item (@set) {
+                    last LOOP if (! defined($item));
+                    pass("'$item' read from queue in thread $ii");
+                }
+                select(undef, undef, undef, rand(1));
+            }
+            pass("Thread $ii exiting");
+        });
+    }
+
+    # Signal no more work is coming to the blocked threads, they
+    # should unblock.
+    $q->end();
+
+    for my $thread (@threads) {
+        $thread->join;
+        pass($thread->tid." joined");
+    }
+}
+
+exit(0);
+
+# EOF

Added: vendor/perl/dist/dist/Thread-Queue/t/10_timed.t
===================================================================
--- vendor/perl/dist/dist/Thread-Queue/t/10_timed.t	                        (rev 0)
+++ vendor/perl/dist/dist/Thread-Queue/t/10_timed.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,66 @@
+use strict;
+use warnings;
+
+BEGIN {
+    use Config;
+    if (! $Config{'useithreads'}) {
+        print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+        exit(0);
+    }
+}
+
+use threads;
+use Thread::Queue;
+
+if ($] == 5.008) {
+    require 't/test.pl';   # Test::More work-alike for Perl 5.8.0
+} else {
+    require Test::More;
+}
+Test::More->import();
+plan('tests' => 19);
+
+### ->dequeue_timed(TIMEOUT, COUNT) test ###
+
+my $q = Thread::Queue->new();
+ok($q, 'New queue');
+
+my @items = qw/foo bar baz qux exit/;
+$q->enqueue(@items);
+is($q->pending(), scalar(@items), 'Queue count');
+
+threads->create(sub {
+    is($q->pending(), scalar(@items), 'Queue count in thread');
+    while (my @el = $q->dequeue_timed(2.5, 2)) {
+        is($el[0], shift(@items), "Thread got $el[0]");
+        if ($el[0] eq 'exit') {
+            is(scalar(@el), 1, 'Thread to exit');
+        } else {
+            is($el[1], shift(@items), "Thread got $el[1]");
+        }
+    }
+    is($q->pending(), 0, 'Empty queue');
+    $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+### ->dequeue_timed(TIMEOUT) test on empty queue ###
+
+threads->create(sub {
+    is($q->pending(), 0, 'Empty queue in thread');
+    my @el = $q->dequeue_timed(1.5);
+    is($el[0], undef, "Thread got no items");
+    is($q->pending(), 0, 'Empty queue in thread');
+    $q->enqueue('done');
+})->join();
+
+is($q->pending(), 1, 'Queue count after thread');
+is($q->dequeue(), 'done', 'Thread reported done');
+is($q->pending(), 0, 'Empty queue');
+
+exit(0);
+
+# EOF

Added: vendor/perl/dist/dist/Tie-File/lib/Tie/File.pm
===================================================================
--- vendor/perl/dist/dist/Tie-File/lib/Tie/File.pm	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/lib/Tie/File.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2633 @@
+
+package Tie::File;
+require 5.005;
+use Carp ':DEFAULT', 'confess';
+use POSIX 'SEEK_SET';
+use Fcntl 'O_CREAT', 'O_RDWR', 'LOCK_EX', 'LOCK_SH', 'O_WRONLY', 'O_RDONLY';
+sub O_ACCMODE () { O_RDONLY | O_RDWR | O_WRONLY }
+
+
+$VERSION = "0.99";
+my $DEFAULT_MEMORY_SIZE = 1<<21;    # 2 megabytes
+my $DEFAULT_AUTODEFER_THRESHHOLD = 3; # 3 records
+my $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD = 65536; # 16 disk blocksful
+
+my %good_opt = map {$_ => 1, "-$_" => 1}
+                 qw(memory dw_size mode recsep discipline 
+                    autodefer autochomp autodefer_threshhold concurrent);
+
+sub TIEARRAY {
+  if (@_ % 2 != 0) {
+    croak "usage: tie \@array, $_[0], filename, [option => value]...";
+  }
+  my ($pack, $file, %opts) = @_;
+
+  # transform '-foo' keys into 'foo' keys
+  for my $key (keys %opts) {
+    unless ($good_opt{$key}) {
+      croak("$pack: Unrecognized option '$key'\n");
+    }
+    my $okey = $key;
+    if ($key =~ s/^-+//) {
+      $opts{$key} = delete $opts{$okey};
+    }
+  }
+
+  if ($opts{concurrent}) {
+    croak("$pack: concurrent access not supported yet\n");
+  }
+
+  unless (defined $opts{memory}) {
+    # default is the larger of the default cache size and the 
+    # deferred-write buffer size (if specified)
+    $opts{memory} = $DEFAULT_MEMORY_SIZE;
+    $opts{memory} = $opts{dw_size}
+      if defined $opts{dw_size} && $opts{dw_size} > $DEFAULT_MEMORY_SIZE;
+    # Dora Winifred Read
+  }
+  $opts{dw_size} = $opts{memory} unless defined $opts{dw_size};
+  if ($opts{dw_size} > $opts{memory}) {
+      croak("$pack: dw_size may not be larger than total memory allocation\n");
+  }
+  # are we in deferred-write mode?
+  $opts{defer} = 0 unless defined $opts{defer};
+  $opts{deferred} = {};         # no records are presently deferred
+  $opts{deferred_s} = 0;        # count of total bytes in ->{deferred}
+  $opts{deferred_max} = -1;     # empty
+
+  # What's a good way to arrange that this class can be overridden?
+  $opts{cache} = Tie::File::Cache->new($opts{memory});
+
+  # autodeferment is enabled by default
+  $opts{autodefer} = 1 unless defined $opts{autodefer};
+  $opts{autodeferring} = 0;     # but is not initially active
+  $opts{ad_history} = [];
+  $opts{autodefer_threshhold} = $DEFAULT_AUTODEFER_THRESHHOLD
+    unless defined $opts{autodefer_threshhold};
+  $opts{autodefer_filelen_threshhold} = $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD
+    unless defined $opts{autodefer_filelen_threshhold};
+
+  $opts{offsets} = [0];
+  $opts{filename} = $file;
+  unless (defined $opts{recsep}) { 
+    $opts{recsep} = _default_recsep();
+  }
+  $opts{recseplen} = length($opts{recsep});
+  if ($opts{recseplen} == 0) {
+    croak "Empty record separator not supported by $pack";
+  }
+
+  $opts{autochomp} = 1 unless defined $opts{autochomp};
+
+  $opts{mode} = O_CREAT|O_RDWR unless defined $opts{mode};
+  $opts{rdonly} = (($opts{mode} & O_ACCMODE) == O_RDONLY);
+  $opts{sawlastrec} = undef;
+
+  my $fh;
+
+  if (UNIVERSAL::isa($file, 'GLOB')) {
+    # We use 1 here on the theory that some systems 
+    # may not indicate failure if we use 0.
+    # MSWin32 does not indicate failure with 0, but I don't know if
+    # it will indicate failure with 1 or not.
+    unless (seek $file, 1, SEEK_SET) {
+      croak "$pack: your filehandle does not appear to be seekable";
+    }
+    seek $file, 0, SEEK_SET;    # put it back
+    $fh = $file;                # setting binmode is the user's problem
+  } elsif (ref $file) {
+    croak "usage: tie \@array, $pack, filename, [option => value]...";
+  } else {
+    # $fh = \do { local *FH };  # XXX this is buggy
+    if ($] < 5.006) {
+	# perl 5.005 and earlier don't autovivify filehandles
+	require Symbol;
+	$fh = Symbol::gensym();
+    }
+    sysopen $fh, $file, $opts{mode}, 0666 or return;
+    binmode $fh;
+    ++$opts{ourfh};
+  }
+  { my $ofh = select $fh; $| = 1; select $ofh } # autoflush on write
+  if (defined $opts{discipline} && $] >= 5.006) {
+    # This avoids a compile-time warning under 5.005
+    eval 'binmode($fh, $opts{discipline})';
+    croak $@ if $@ =~ /unknown discipline/i;
+    die if $@;
+  }
+  $opts{fh} = $fh;
+
+  bless \%opts => $pack;
+}
+
+sub FETCH {
+  my ($self, $n) = @_;
+  my $rec;
+
+  # check the defer buffer
+  $rec = $self->{deferred}{$n} if exists $self->{deferred}{$n};
+  $rec = $self->_fetch($n) unless defined $rec;
+
+  # inlined _chomp1
+  substr($rec, - $self->{recseplen}) = ""
+    if defined $rec && $self->{autochomp};
+  $rec;
+}
+
+# Chomp many records in-place; return nothing useful
+sub _chomp {
+  my $self = shift;
+  return unless $self->{autochomp};
+  if ($self->{autochomp}) {
+    for (@_) {
+      next unless defined;
+      substr($_, - $self->{recseplen}) = "";
+    }
+  }
+}
+
+# Chomp one record in-place; return modified record
+sub _chomp1 {
+  my ($self, $rec) = @_;
+  return $rec unless $self->{autochomp};
+  return unless defined $rec;
+  substr($rec, - $self->{recseplen}) = "";
+  $rec;
+}
+
+sub _fetch {
+  my ($self, $n) = @_;
+
+  # check the record cache
+  { my $cached = $self->{cache}->lookup($n);
+    return $cached if defined $cached;
+  }
+
+  if ($#{$self->{offsets}} < $n) {
+    return if $self->{eof};  # request for record beyond end of file
+    my $o = $self->_fill_offsets_to($n);
+    # If it's still undefined, there is no such record, so return 'undef'
+    return unless defined $o;
+  }
+
+  my $fh = $self->{FH};
+  $self->_seek($n);             # we can do this now that offsets is populated
+  my $rec = $self->_read_record;
+
+# If we happen to have just read the first record, check to see if
+# the length of the record matches what 'tell' says.  If not, Tie::File
+# won't work, and should drop dead.
+#
+#  if ($n == 0 && defined($rec) && tell($self->{fh}) != length($rec)) {
+#    if (defined $self->{discipline}) {
+#      croak "I/O discipline $self->{discipline} not supported";
+#    } else {
+#      croak "File encoding not supported";
+#    }
+#  }
+
+  $self->{cache}->insert($n, $rec) if defined $rec && not $self->{flushing};
+  $rec;
+}
+
+sub STORE {
+  my ($self, $n, $rec) = @_;
+  die "STORE called from _check_integrity!" if $DIAGNOSTIC;
+
+  $self->_fixrecs($rec);
+
+  if ($self->{autodefer}) {
+    $self->_annotate_ad_history($n);
+  }
+
+  return $self->_store_deferred($n, $rec) if $self->_is_deferring;
+
+
+  # We need this to decide whether the new record will fit
+  # It incidentally populates the offsets table 
+  # Note we have to do this before we alter the cache
+  # 20020324 Wait, but this DOES alter the cache.  TODO BUG?
+  my $oldrec = $self->_fetch($n);
+
+  if (not defined $oldrec) {
+    # We're storing a record beyond the end of the file
+    $self->_extend_file_to($n+1);
+    $oldrec = $self->{recsep};
+  }
+#  return if $oldrec eq $rec;    # don't bother
+  my $len_diff = length($rec) - length($oldrec);
+
+  # length($oldrec) here is not consistent with text mode  TODO XXX BUG
+  $self->_mtwrite($rec, $self->{offsets}[$n], length($oldrec));
+  $self->_oadjust([$n, 1, $rec]);
+  $self->{cache}->update($n, $rec);
+}
+
+sub _store_deferred {
+  my ($self, $n, $rec) = @_;
+  $self->{cache}->remove($n);
+  my $old_deferred = $self->{deferred}{$n};
+
+  if (defined $self->{deferred_max} && $n > $self->{deferred_max}) {
+    $self->{deferred_max} = $n;
+  }
+  $self->{deferred}{$n} = $rec;
+
+  my $len_diff = length($rec);
+  $len_diff -= length($old_deferred) if defined $old_deferred;
+  $self->{deferred_s} += $len_diff;
+  $self->{cache}->adj_limit(-$len_diff);
+  if ($self->{deferred_s} > $self->{dw_size}) {
+    $self->_flush;
+  } elsif ($self->_cache_too_full) {
+    $self->_cache_flush;
+  }
+}
+
+# Remove a single record from the deferred-write buffer without writing it
+# The record need not be present
+sub _delete_deferred {
+  my ($self, $n) = @_;
+  my $rec = delete $self->{deferred}{$n};
+  return unless defined $rec;
+
+  if (defined $self->{deferred_max} 
+      && $n == $self->{deferred_max}) {
+    undef $self->{deferred_max};
+  }
+
+  $self->{deferred_s} -= length $rec;
+  $self->{cache}->adj_limit(length $rec);
+}
+
+sub FETCHSIZE {
+  my $self = shift;
+  my $n = $self->{eof} ? $#{$self->{offsets}} : $self->_fill_offsets;
+
+  my $top_deferred = $self->_defer_max;
+  $n = $top_deferred+1 if defined $top_deferred && $n < $top_deferred+1;
+  $n;
+}
+
+sub STORESIZE {
+  my ($self, $len) = @_;
+
+  if ($self->{autodefer}) {
+    $self->_annotate_ad_history('STORESIZE');
+  }
+
+  my $olen = $self->FETCHSIZE;
+  return if $len == $olen;      # Woo-hoo!
+
+  # file gets longer
+  if ($len > $olen) {
+    if ($self->_is_deferring) {
+      for ($olen .. $len-1) {
+        $self->_store_deferred($_, $self->{recsep});
+      }
+    } else {
+      $self->_extend_file_to($len);
+    }
+    return;
+  }
+
+  # file gets shorter
+  if ($self->_is_deferring) {
+    # TODO maybe replace this with map-plus-assignment?
+    for (grep $_ >= $len, keys %{$self->{deferred}}) {
+      $self->_delete_deferred($_);
+    }
+    $self->{deferred_max} = $len-1;
+  }
+
+  $self->_seek($len);
+  $self->_chop_file;
+  $#{$self->{offsets}} = $len;
+#  $self->{offsets}[0] = 0;      # in case we just chopped this
+
+  $self->{cache}->remove(grep $_ >= $len, $self->{cache}->ckeys);
+}
+
+### OPTIMIZE ME
+### It should not be necessary to do FETCHSIZE
+### Just seek to the end of the file.
+sub PUSH {
+  my $self = shift;
+  $self->SPLICE($self->FETCHSIZE, scalar(@_), @_);
+
+  # No need to return:
+  #  $self->FETCHSIZE;  # because av.c takes care of this for me
+}
+
+sub POP {
+  my $self = shift;
+  my $size = $self->FETCHSIZE;
+  return if $size == 0;
+#  print STDERR "# POPPITY POP POP POP\n";
+  scalar $self->SPLICE($size-1, 1);
+}
+
+sub SHIFT {
+  my $self = shift;
+  scalar $self->SPLICE(0, 1);
+}
+
+sub UNSHIFT {
+  my $self = shift;
+  $self->SPLICE(0, 0, @_);
+  # $self->FETCHSIZE; # av.c takes care of this for me
+}
+
+sub CLEAR {
+  my $self = shift;
+
+  if ($self->{autodefer}) {
+    $self->_annotate_ad_history('CLEAR');
+  }
+
+  $self->_seekb(0);
+  $self->_chop_file;
+    $self->{cache}->set_limit($self->{memory});
+    $self->{cache}->empty;
+  @{$self->{offsets}} = (0);
+  %{$self->{deferred}}= ();
+    $self->{deferred_s} = 0;
+    $self->{deferred_max} = -1;
+}
+
+sub EXTEND {
+  my ($self, $n) = @_;
+
+  # No need to pre-extend anything in this case
+  return if $self->_is_deferring;
+
+  $self->_fill_offsets_to($n);
+  $self->_extend_file_to($n);
+}
+
+sub DELETE {
+  my ($self, $n) = @_;
+
+  if ($self->{autodefer}) {
+    $self->_annotate_ad_history('DELETE');
+  }
+
+  my $lastrec = $self->FETCHSIZE-1;
+  my $rec = $self->FETCH($n);
+  $self->_delete_deferred($n) if $self->_is_deferring;
+  if ($n == $lastrec) {
+    $self->_seek($n);
+    $self->_chop_file;
+    $#{$self->{offsets}}--;
+    $self->{cache}->remove($n);
+    # perhaps in this case I should also remove trailing null records?
+    # 20020316
+    # Note that delete @a[-3..-1] deletes the records in the wrong order,
+    # so we only chop the very last one out of the file.  We could repair this
+    # by tracking deleted records inside the object.
+  } elsif ($n < $lastrec) {
+    $self->STORE($n, "");
+  }
+  $rec;
+}
+
+sub EXISTS {
+  my ($self, $n) = @_;
+  return 1 if exists $self->{deferred}{$n};
+  $n < $self->FETCHSIZE;
+}
+
+sub SPLICE {
+  my $self = shift;
+
+  if ($self->{autodefer}) {
+    $self->_annotate_ad_history('SPLICE');
+  }
+
+  $self->_flush if $self->_is_deferring; # move this up?
+  if (wantarray) {
+    $self->_chomp(my @a = $self->_splice(@_));
+    @a;
+  } else {
+    $self->_chomp1(scalar $self->_splice(@_));
+  }
+}
+
+sub DESTROY {
+  my $self = shift;
+  $self->flush if $self->_is_deferring;
+  $self->{cache}->delink if defined $self->{cache}; # break circular link
+  if ($self->{fh} and $self->{ourfh}) {
+      delete $self->{ourfh};
+      close delete $self->{fh};
+  }
+}
+
+sub _splice {
+  my ($self, $pos, $nrecs, @data) = @_;
+  my @result;
+
+  $pos = 0 unless defined $pos;
+
+  # Deal with negative and other out-of-range positions
+  # Also set default for $nrecs 
+  {
+    my $oldsize = $self->FETCHSIZE;
+    $nrecs = $oldsize unless defined $nrecs;
+    my $oldpos = $pos;
+
+    if ($pos < 0) {
+      $pos += $oldsize;
+      if ($pos < 0) {
+        croak "Modification of non-creatable array value attempted, subscript $oldpos";
+      }
+    }
+
+    if ($pos > $oldsize) {
+      return unless @data;
+      $pos = $oldsize;          # This is what perl does for normal arrays
+    }
+
+    # The manual is very unclear here
+    if ($nrecs < 0) {
+      $nrecs = $oldsize - $pos + $nrecs;
+      $nrecs = 0 if $nrecs < 0;
+    }
+
+    # nrecs is too big---it really means "until the end"
+    # 20030507
+    if ($nrecs + $pos > $oldsize) {
+      $nrecs = $oldsize - $pos;
+    }
+  }
+
+  $self->_fixrecs(@data);
+  my $data = join '', @data;
+  my $datalen = length $data;
+  my $oldlen = 0;
+
+  # compute length of data being removed
+  for ($pos .. $pos+$nrecs-1) {
+    last unless defined $self->_fill_offsets_to($_);
+    my $rec = $self->_fetch($_);
+    last unless defined $rec;
+    push @result, $rec;
+
+    # Why don't we just use length($rec) here?
+    # Because that record might have come from the cache.  _splice
+    # might have been called to flush out the deferred-write records,
+    # and in this case length($rec) is the length of the record to be
+    # *written*, not the length of the actual record in the file.  But
+    # the offsets are still true. 20020322
+    $oldlen += $self->{offsets}[$_+1] - $self->{offsets}[$_]
+      if defined $self->{offsets}[$_+1];
+  }
+  $self->_fill_offsets_to($pos+$nrecs);
+
+  # Modify the file
+  $self->_mtwrite($data, $self->{offsets}[$pos], $oldlen);
+  # Adjust the offsets table
+  $self->_oadjust([$pos, $nrecs, @data]);
+
+  { # Take this read cache stuff out into a separate function
+    # You made a half-attempt to put it into _oadjust.  
+    # Finish something like that up eventually.
+    # STORE also needs to do something similarish
+
+    # update the read cache, part 1
+    # modified records
+    for ($pos .. $pos+$nrecs-1) {
+      my $new = $data[$_-$pos];
+      if (defined $new) {
+        $self->{cache}->update($_, $new);
+      } else {
+        $self->{cache}->remove($_);
+      }
+    }
+    
+    # update the read cache, part 2
+    # moved records - records past the site of the change
+    # need to be renumbered
+    # Maybe merge this with the previous block?
+    {
+      my @oldkeys = grep $_ >= $pos + $nrecs, $self->{cache}->ckeys;
+      my @newkeys = map $_-$nrecs+ at data, @oldkeys;
+      $self->{cache}->rekey(\@oldkeys, \@newkeys);
+    }
+
+    # Now there might be too much data in the cache, if we spliced out
+    # some short records and spliced in some long ones.  If so, flush
+    # the cache.
+    $self->_cache_flush;
+  }
+
+  # Yes, the return value of 'splice' *is* actually this complicated
+  wantarray ? @result : @result ? $result[-1] : undef;
+}
+
+
+# write data into the file
+# $data is the data to be written.
+# it should be written at position $pos, and should overwrite
+# exactly $len of the following bytes.  
+# Note that if length($data) > $len, the subsequent bytes will have to 
+# be moved up, and if length($data) < $len, they will have to
+# be moved down
+sub _twrite {
+  my ($self, $data, $pos, $len) = @_;
+
+  unless (defined $pos) {
+    die "\$pos was undefined in _twrite";
+  }
+
+  my $len_diff = length($data) - $len;
+
+  if ($len_diff == 0) {          # Woo-hoo!
+    my $fh = $self->{fh};
+    $self->_seekb($pos);
+    $self->_write_record($data);
+    return;                     # well, that was easy.
+  }
+
+  # the two records are of different lengths
+  # our strategy here: rewrite the tail of the file,
+  # reading ahead one buffer at a time
+  # $bufsize is required to be at least as large as the data we're overwriting
+  my $bufsize = _bufsize($len_diff);
+  my ($writepos, $readpos) = ($pos, $pos+$len);
+  my $next_block;
+  my $more_data;
+
+  # Seems like there ought to be a way to avoid the repeated code
+  # and the special case here.  The read(1) is also a little weird.
+  # Think about this.
+  do {
+    $self->_seekb($readpos);
+    my $br = read $self->{fh}, $next_block, $bufsize;
+    $more_data = read $self->{fh}, my($dummy), 1;
+    $self->_seekb($writepos);
+    $self->_write_record($data);
+    $readpos += $br;
+    $writepos += length $data;
+    $data = $next_block;
+  } while $more_data;
+  $self->_seekb($writepos);
+  $self->_write_record($next_block);
+
+  # There might be leftover data at the end of the file
+  $self->_chop_file if $len_diff < 0;
+}
+
+# _iwrite(D, S, E)
+# Insert text D at position S.
+# Let C = E-S-|D|.  If C < 0; die.  
+# Data in [S,S+C) is copied to [S+D,S+D+C) = [S+D,E).
+# Data in [S+C = E-D, E) is returned.  Data in [E, oo) is untouched.
+#
+# In a later version, don't read the entire intervening area into
+# memory at once; do the copying block by block.
+sub _iwrite {
+  my $self = shift;
+  my ($D, $s, $e) = @_;
+  my $d = length $D;
+  my $c = $e-$s-$d;
+  local *FH = $self->{fh};
+  confess "Not enough space to insert $d bytes between $s and $e"
+    if $c < 0;
+  confess "[$s,$e) is an invalid insertion range" if $e < $s;
+
+  $self->_seekb($s);
+  read FH, my $buf, $e-$s;
+
+  $D .= substr($buf, 0, $c, "");
+
+  $self->_seekb($s);
+  $self->_write_record($D);
+
+  return $buf;
+}
+
+# Like _twrite, but the data-pos-len triple may be repeated; you may
+# write several chunks.  All the writing will be done in
+# one pass.   Chunks SHALL be in ascending order and SHALL NOT overlap.
+sub _mtwrite {
+  my $self = shift;
+  my $unwritten = "";
+  my $delta = 0;
+
+  @_ % 3 == 0 
+    or die "Arguments to _mtwrite did not come in groups of three";
+
+  while (@_) {
+    my ($data, $pos, $len) = splice @_, 0, 3;
+    my $end = $pos + $len;  # The OLD end of the segment to be replaced
+    $data = $unwritten . $data;
+    $delta -= length($unwritten);
+    $unwritten  = "";
+    $pos += $delta;             # This is where the data goes now
+    my $dlen = length $data;
+    $self->_seekb($pos);
+    if ($len >= $dlen) {        # the data will fit
+      $self->_write_record($data);
+      $delta += ($dlen - $len); # everything following moves down by this much
+      $data = ""; # All the data in the buffer has been written
+    } else {                    # won't fit
+      my $writable = substr($data, 0, $len - $delta, "");
+      $self->_write_record($writable);
+      $delta += ($dlen - $len); # everything following moves down by this much
+    } 
+
+    # At this point we've written some but maybe not all of the data.
+    # There might be a gap to close up, or $data might still contain a
+    # bunch of unwritten data that didn't fit.
+    my $ndlen = length $data;
+    if ($delta == 0) {
+      $self->_write_record($data);
+    } elsif ($delta < 0) {
+      # upcopy (close up gap)
+      if (@_) {
+        $self->_upcopy($end, $end + $delta, $_[1] - $end);  
+      } else {
+        $self->_upcopy($end, $end + $delta);  
+      }
+    } else {
+      # downcopy (insert data that didn't fit; replace this data in memory
+      # with _later_ data that doesn't fit)
+      if (@_) {
+        $unwritten = $self->_downcopy($data, $end, $_[1] - $end);
+      } else {
+        # Make the file longer to accommodate the last segment that doesn'
+        $unwritten = $self->_downcopy($data, $end);
+      }
+    }
+  }
+}
+
+# Copy block of data of length $len from position $spos to position $dpos
+# $dpos must be <= $spos
+#
+# If $len is undefined, go all the way to the end of the file
+# and then truncate it ($spos - $dpos bytes will be removed)
+sub _upcopy {
+  my $blocksize = 8192;
+  my ($self, $spos, $dpos, $len) = @_;
+  if ($dpos > $spos) {
+    die "source ($spos) was upstream of destination ($dpos) in _upcopy";
+  } elsif ($dpos == $spos) {
+    return;
+  }
+  
+  while (! defined ($len) || $len > 0) {
+    my $readsize = ! defined($len) ? $blocksize
+               : $len > $blocksize ? $blocksize
+               : $len;
+      
+    my $fh = $self->{fh};
+    $self->_seekb($spos);
+    my $bytes_read = read $fh, my($data), $readsize;
+    $self->_seekb($dpos);
+    if ($data eq "") { 
+      $self->_chop_file;
+      last;
+    }
+    $self->_write_record($data);
+    $spos += $bytes_read;
+    $dpos += $bytes_read;
+    $len -= $bytes_read if defined $len;
+  }
+}
+
+# Write $data into a block of length $len at position $pos,
+# moving everything in the block forwards to make room.
+# Instead of writing the last length($data) bytes from the block
+# (because there isn't room for them any longer) return them.
+#
+# Undefined $len means 'until the end of the file'
+sub _downcopy {
+  my $blocksize = 8192;
+  my ($self, $data, $pos, $len) = @_;
+  my $fh = $self->{fh};
+
+  while (! defined $len || $len > 0) {
+    my $readsize = ! defined($len) ? $blocksize 
+      : $len > $blocksize? $blocksize : $len;
+    $self->_seekb($pos);
+    read $fh, my($old), $readsize;
+    my $last_read_was_short = length($old) < $readsize;
+    $data .= $old;
+    my $writable;
+    if ($last_read_was_short) {
+      # If last read was short, then $data now contains the entire rest
+      # of the file, so there's no need to write only one block of it
+      $writable = $data;
+      $data = "";
+    } else {
+      $writable = substr($data, 0, $readsize, "");
+    }
+    last if $writable eq "";
+    $self->_seekb($pos);
+    $self->_write_record($writable);
+    last if $last_read_was_short && $data eq "";
+    $len -= $readsize if defined $len;
+    $pos += $readsize;
+  }
+  return $data;
+}
+
+# Adjust the object data structures following an '_mtwrite'
+# Arguments are
+#  [$pos, $nrecs, @length]  items
+# indicating that $nrecs records were removed at $recpos (a record offset)
+# and replaced with records of length @length...
+# Arguments guarantee that $recpos is strictly increasing.
+# No return value
+sub _oadjust {
+  my $self = shift;
+  my $delta = 0;
+  my $delta_recs = 0;
+  my $prev_end = -1;
+  my %newkeys;
+
+  for (@_) {
+    my ($pos, $nrecs, @data) = @$_;
+    $pos += $delta_recs;
+
+    # Adjust the offsets of the records after the previous batch up
+    # to the first new one of this batch
+    for my $i ($prev_end+2 .. $pos - 1) {
+      $self->{offsets}[$i] += $delta;
+      $newkey{$i} = $i + $delta_recs;
+    }
+
+    $prev_end = $pos + @data - 1; # last record moved on this pass 
+
+    # Remove the offsets for the removed records;
+    # replace with the offsets for the inserted records
+    my @newoff = ($self->{offsets}[$pos] + $delta);
+    for my $i (0 .. $#data) {
+      my $newlen = length $data[$i];
+      push @newoff, $newoff[$i] + $newlen;
+      $delta += $newlen;
+    }
+
+    for my $i ($pos .. $pos+$nrecs-1) {
+      last if $i+1 > $#{$self->{offsets}};
+      my $oldlen = $self->{offsets}[$i+1] - $self->{offsets}[$i];
+      $delta -= $oldlen;
+    }
+
+#    # also this data has changed, so update it in the cache
+#    for (0 .. $#data) {
+#      $self->{cache}->update($pos + $_, $data[$_]);
+#    }
+#    if ($delta_recs) {
+#      my @oldkeys = grep $_ >= $pos + @data, $self->{cache}->ckeys;
+#      my @newkeys = map $_ + $delta_recs, @oldkeys;
+#      $self->{cache}->rekey(\@oldkeys, \@newkeys);
+#    }
+
+    # replace old offsets with new
+    splice @{$self->{offsets}}, $pos, $nrecs+1, @newoff;
+    # What if we just spliced out the end of the offsets table?
+    # shouldn't we clear $self->{eof}?   Test for this XXX BUG TODO
+
+    $delta_recs += @data - $nrecs; # net change in total number of records
+  }
+
+  # The trailing records at the very end of the file
+  if ($delta) {
+    for my $i ($prev_end+2 .. $#{$self->{offsets}}) {
+      $self->{offsets}[$i] += $delta;
+    }
+  }
+
+  # If we scrubbed out all known offsets, regenerate the trivial table
+  # that knows that the file does indeed start at 0.
+  $self->{offsets}[0] = 0 unless @{$self->{offsets}};
+  # If the file got longer, the offsets table is no longer complete
+  # $self->{eof} = 0 if $delta_recs > 0;
+
+  # Now there might be too much data in the cache, if we spliced out
+  # some short records and spliced in some long ones.  If so, flush
+  # the cache.
+  $self->_cache_flush;
+}
+
+# If a record does not already end with the appropriate terminator
+# string, append one.
+sub _fixrecs {
+  my $self = shift;
+  for (@_) {
+    $_ = "" unless defined $_;
+    $_ .= $self->{recsep}
+      unless substr($_, - $self->{recseplen}) eq $self->{recsep};
+  }
+}
+
+
+################################################################
+#
+# Basic read, write, and seek
+#
+
+# seek to the beginning of record #$n
+# Assumes that the offsets table is already correctly populated
+#
+# Note that $n=-1 has a special meaning here: It means the start of
+# the last known record; this may or may not be the very last record
+# in the file, depending on whether the offsets table is fully populated.
+#
+sub _seek {
+  my ($self, $n) = @_;
+  my $o = $self->{offsets}[$n];
+  defined($o)
+    or confess("logic error: undefined offset for record $n");
+  seek $self->{fh}, $o, SEEK_SET
+    or confess "Couldn't seek filehandle: $!";  # "Should never happen."
+}
+
+# seek to byte $b in the file
+sub _seekb {
+  my ($self, $b) = @_;
+  seek $self->{fh}, $b, SEEK_SET
+    or die "Couldn't seek filehandle: $!";  # "Should never happen."
+}
+
+# populate the offsets table up to the beginning of record $n
+# return the offset of record $n
+sub _fill_offsets_to {
+  my ($self, $n) = @_;
+
+  return $self->{offsets}[$n] if $self->{eof};
+
+  my $fh = $self->{fh};
+  local *OFF = $self->{offsets};
+  my $rec;
+
+  until ($#OFF >= $n) {
+    $self->_seek(-1);           # tricky -- see comment at _seek
+    $rec = $self->_read_record;
+    if (defined $rec) {
+      push @OFF, int(tell $fh);  # Tels says that int() saves memory here
+    } else {
+      $self->{eof} = 1;
+      return;                   # It turns out there is no such record
+    }
+  }
+
+  # we have now read all the records up to record n-1,
+  # so we can return the offset of record n
+  $OFF[$n];
+}
+
+sub _fill_offsets {
+  my ($self) = @_;
+
+  my $fh = $self->{fh};
+  local *OFF = $self->{offsets};
+  
+  $self->_seek(-1);           # tricky -- see comment at _seek
+
+  # Tels says that inlining read_record() would make this loop
+  # five times faster. 20030508
+  while ( defined $self->_read_record()) {
+    # int() saves us memory here
+    push @OFF, int(tell $fh);
+  }
+
+  $self->{eof} = 1;
+  $#OFF;
+}
+
+# assumes that $rec is already suitably terminated
+sub _write_record {
+  my ($self, $rec) = @_;
+  my $fh = $self->{fh};
+  local $\ = "";
+  print $fh $rec
+    or die "Couldn't write record: $!";  # "Should never happen."
+#  $self->{_written} += length($rec);
+}
+
+sub _read_record {
+  my $self = shift;
+  my $rec;
+  { local $/ = $self->{recsep};
+    my $fh = $self->{fh};
+    $rec = <$fh>;
+  }
+  return unless defined $rec;
+  if (substr($rec, -$self->{recseplen}) ne $self->{recsep}) {
+    # improperly terminated final record --- quietly fix it.
+#    my $ac = substr($rec, -$self->{recseplen});
+#    $ac =~ s/\n/\\n/g;
+    $self->{sawlastrec} = 1;
+    unless ($self->{rdonly}) {
+      local $\ = "";
+      my $fh = $self->{fh};
+      print $fh $self->{recsep};
+    }
+    $rec .= $self->{recsep};
+  }
+#  $self->{_read} += length($rec) if defined $rec;
+  $rec;
+}
+
+sub _rw_stats {
+  my $self = shift;
+  @{$self}{'_read', '_written'};
+}
+
+################################################################
+#
+# Read cache management
+
+sub _cache_flush {
+  my ($self) = @_;
+  $self->{cache}->reduce_size_to($self->{memory} - $self->{deferred_s});
+}
+
+sub _cache_too_full {
+  my $self = shift;
+  $self->{cache}->bytes + $self->{deferred_s} >= $self->{memory};
+}
+
+################################################################
+#
+# File custodial services
+#
+
+
+# We have read to the end of the file and have the offsets table
+# entirely populated.  Now we need to write a new record beyond
+# the end of the file.  We prepare for this by writing
+# empty records into the file up to the position we want
+#
+# assumes that the offsets table already contains the offset of record $n,
+# if it exists, and extends to the end of the file if not.
+sub _extend_file_to {
+  my ($self, $n) = @_;
+  $self->_seek(-1);             # position after the end of the last record
+  my $pos = $self->{offsets}[-1];
+
+  # the offsets table has one entry more than the total number of records
+  my $extras = $n - $#{$self->{offsets}};
+
+  # Todo : just use $self->{recsep} x $extras here?
+  while ($extras-- > 0) {
+    $self->_write_record($self->{recsep});
+    push @{$self->{offsets}}, int(tell $self->{fh});
+  }
+}
+
+# Truncate the file at the current position
+sub _chop_file {
+  my $self = shift;
+  truncate $self->{fh}, tell($self->{fh});
+}
+
+
+# compute the size of a buffer suitable for moving
+# all the data in a file forward $n bytes
+# ($n may be negative)
+# The result should be at least $n.
+sub _bufsize {
+  my $n = shift;
+  return 8192 if $n <= 0;
+  my $b = $n & ~8191;
+  $b += 8192 if $n & 8191;
+  $b;
+}
+
+################################################################
+#
+# Miscellaneous public methods
+#
+
+# Lock the file
+sub flock {
+  my ($self, $op) = @_;
+  unless (@_ <= 3) {
+    my $pack = ref $self;
+    croak "Usage: $pack\->flock([OPERATION])";
+  }
+  my $fh = $self->{fh};
+  $op = LOCK_EX unless defined $op;
+  my $locked = flock $fh, $op;
+  
+  if ($locked && ($op & (LOCK_EX | LOCK_SH))) {
+    # If you're locking the file, then presumably it's because
+    # there might have been a write access by another process.
+    # In that case, the read cache contents and the offsets table
+    # might be invalid, so discard them.  20030508
+    $self->{offsets} = [0];
+    $self->{cache}->empty;
+  }
+
+  $locked;
+}
+
+# Get/set autochomp option
+sub autochomp {
+  my $self = shift;
+  if (@_) {
+    my $old = $self->{autochomp};
+    $self->{autochomp} = shift;
+    $old;
+  } else {
+    $self->{autochomp};
+  }
+}
+
+# Get offset table entries; returns offset of nth record
+sub offset {
+  my ($self, $n) = @_;
+
+  if ($#{$self->{offsets}} < $n) {
+    return if $self->{eof};     # request for record beyond the end of file
+    my $o = $self->_fill_offsets_to($n);
+    # If it's still undefined, there is no such record, so return 'undef'
+    return unless defined $o;
+   }
+ 
+  $self->{offsets}[$n];
+}
+
+sub discard_offsets {
+  my $self = shift;
+  $self->{offsets} = [0];
+}
+
+################################################################
+#
+# Matters related to deferred writing
+#
+
+# Defer writes
+sub defer {
+  my $self = shift;
+  $self->_stop_autodeferring;
+  @{$self->{ad_history}} = ();
+  $self->{defer} = 1;
+}
+
+# Flush deferred writes
+#
+# This could be better optimized to write the file in one pass, instead
+# of one pass per block of records.  But that will require modifications
+# to _twrite, so I should have a good _twrite test suite first.
+sub flush {
+  my $self = shift;
+
+  $self->_flush;
+  $self->{defer} = 0;
+}
+
+sub _old_flush {
+  my $self = shift;
+  my @writable = sort {$a<=>$b} (keys %{$self->{deferred}});
+
+  while (@writable) {
+    # gather all consecutive records from the front of @writable
+    my $first_rec = shift @writable;
+    my $last_rec = $first_rec+1;
+    ++$last_rec, shift @writable while @writable && $last_rec == $writable[0];
+    --$last_rec;
+    $self->_fill_offsets_to($last_rec);
+    $self->_extend_file_to($last_rec);
+    $self->_splice($first_rec, $last_rec-$first_rec+1, 
+                   @{$self->{deferred}}{$first_rec .. $last_rec});
+  }
+
+  $self->_discard;               # clear out defered-write-cache
+}
+
+sub _flush {
+  my $self = shift;
+  my @writable = sort {$a<=>$b} (keys %{$self->{deferred}});
+  my @args;
+  my @adjust;
+
+  while (@writable) {
+    # gather all consecutive records from the front of @writable
+    my $first_rec = shift @writable;
+    my $last_rec = $first_rec+1;
+    ++$last_rec, shift @writable while @writable && $last_rec == $writable[0];
+    --$last_rec;
+    my $end = $self->_fill_offsets_to($last_rec+1);
+    if (not defined $end) {
+      $self->_extend_file_to($last_rec);
+      $end = $self->{offsets}[$last_rec];
+    }
+    my ($start) = $self->{offsets}[$first_rec];
+    push @args,
+         join("", @{$self->{deferred}}{$first_rec .. $last_rec}), # data
+         $start,                                                  # position
+         $end-$start;                                             # length
+    push @adjust, [$first_rec, # starting at this position...
+                   $last_rec-$first_rec+1,  # this many records...
+                   # are replaced with these...
+                   @{$self->{deferred}}{$first_rec .. $last_rec},
+                  ];
+  }
+
+  $self->_mtwrite(@args);  # write multiple record groups
+  $self->_discard;               # clear out defered-write-cache
+  $self->_oadjust(@adjust);
+}
+
+# Discard deferred writes and disable future deferred writes
+sub discard {
+  my $self = shift;
+  $self->_discard;
+  $self->{defer} = 0;
+}
+
+# Discard deferred writes, but retain old deferred writing mode
+sub _discard {
+  my $self = shift;
+  %{$self->{deferred}} = ();
+  $self->{deferred_s}  = 0;
+  $self->{deferred_max}  = -1;
+  $self->{cache}->set_limit($self->{memory});
+}
+
+# Deferred writing is enabled, either explicitly ($self->{defer})
+# or automatically ($self->{autodeferring})
+sub _is_deferring {
+  my $self = shift;
+  $self->{defer} || $self->{autodeferring};
+}
+
+# The largest record number of any deferred record
+sub _defer_max {
+  my $self = shift;
+  return $self->{deferred_max} if defined $self->{deferred_max};
+  my $max = -1;
+  for my $key (keys %{$self->{deferred}}) {
+    $max = $key if $key > $max;
+  }
+  $self->{deferred_max} = $max;
+  $max;
+}
+
+################################################################
+#
+# Matters related to autodeferment
+#
+
+# Get/set autodefer option
+sub autodefer {
+  my $self = shift;
+  if (@_) {
+    my $old = $self->{autodefer};
+    $self->{autodefer} = shift;
+    if ($old) {
+      $self->_stop_autodeferring;
+      @{$self->{ad_history}} = ();
+    }
+    $old;
+  } else {
+    $self->{autodefer};
+  }
+}
+
+# The user is trying to store record #$n Record that in the history,
+# and then enable (or disable) autodeferment if that seems useful.
+# Note that it's OK for $n to be a non-number, as long as the function
+# is prepared to deal with that.  Nobody else looks at the ad_history.
+#
+# Now, what does the ad_history mean, and what is this function doing?
+# Essentially, the idea is to enable autodeferring when we see that the
+# user has made three consecutive STORE calls to three consecutive records.
+# ("Three" is actually ->{autodefer_threshhold}.)
+# A STORE call for record #$n inserts $n into the autodefer history,
+# and if the history contains three consecutive records, we enable 
+# autodeferment.  An ad_history of [X, Y] means that the most recent
+# STOREs were for records X, X+1, ..., Y, in that order.  
+#
+# Inserting a nonconsecutive number erases the history and starts over.
+#
+# Performing a special operation like SPLICE erases the history.
+#
+# There's one special case: CLEAR means that CLEAR was just called.
+# In this case, we prime the history with [-2, -1] so that if the next
+# write is for record 0, autodeferring goes on immediately.  This is for
+# the common special case of "@a = (...)".
+#
+sub _annotate_ad_history {
+  my ($self, $n) = @_;
+  return unless $self->{autodefer}; # feature is disabled
+  return if $self->{defer};     # already in explicit defer mode
+  return unless $self->{offsets}[-1] >= $self->{autodefer_filelen_threshhold};
+
+  local *H = $self->{ad_history};
+  if ($n eq 'CLEAR') {
+    @H = (-2, -1);              # prime the history with fake records
+    $self->_stop_autodeferring;
+  } elsif ($n =~ /^\d+$/) {
+    if (@H == 0) {
+      @H =  ($n, $n);
+    } else {                    # @H == 2
+      if ($H[1] == $n-1) {      # another consecutive record
+        $H[1]++;
+        if ($H[1] - $H[0] + 1 >= $self->{autodefer_threshhold}) {
+          $self->{autodeferring} = 1;
+        }
+      } else {                  # nonconsecutive- erase and start over
+        @H = ($n, $n);
+        $self->_stop_autodeferring;
+      }
+    }
+  } else {                      # SPLICE or STORESIZE or some such
+    @H = ();
+    $self->_stop_autodeferring;
+  }
+}
+
+# If autodeferring was enabled, cut it out and discard the history
+sub _stop_autodeferring {
+  my $self = shift;
+  if ($self->{autodeferring}) {
+    $self->_flush;
+  }
+  $self->{autodeferring} = 0;
+}
+
+################################################################
+
+
+# This is NOT a method.  It is here for two reasons:
+#  1. To factor a fairly complicated block out of the constructor
+#  2. To provide access for the test suite, which need to be sure
+#     files are being written properly.
+sub _default_recsep {
+  my $recsep = $/;
+  if ($^O eq 'MSWin32') {       # Dos too?
+    # Windows users expect files to be terminated with \r\n
+    # But $/ is set to \n instead
+    # Note that this also transforms \n\n into \r\n\r\n.
+    # That is a feature.
+    $recsep =~ s/\n/\r\n/g;
+  }
+  $recsep;
+}
+
+# Utility function for _check_integrity
+sub _ci_warn {
+  my $msg = shift;
+  $msg =~ s/\n/\\n/g;
+  $msg =~ s/\r/\\r/g;
+  print "# $msg\n";
+}
+
+# Given a file, make sure the cache is consistent with the
+# file contents and the internal data structures are consistent with
+# each other.  Returns true if everything checks out, false if not
+#
+# The $file argument is no longer used.  It is retained for compatibility
+# with the existing test suite.
+sub _check_integrity {
+  my ($self, $file, $warn) = @_;
+  my $rsl = $self->{recseplen};
+  my $rs  = $self->{recsep};
+  my $good = 1; 
+  local *_;                     # local $_ does not work here
+  local $DIAGNOSTIC = 1;
+
+  if (not defined $rs) {
+    _ci_warn("recsep is undef!");
+    $good = 0;
+  } elsif ($rs eq "") {
+    _ci_warn("recsep is empty!");
+    $good = 0;
+  } elsif ($rsl != length $rs) {
+    my $ln = length $rs;
+    _ci_warn("recsep <$rs> has length $ln, should be $rsl");
+    $good = 0;
+  }
+
+  if (not defined $self->{offsets}[0]) {
+    _ci_warn("offset 0 is missing!");
+    $good = 0;
+
+  } elsif ($self->{offsets}[0] != 0) {
+    _ci_warn("rec 0: offset <$self->{offsets}[0]> s/b 0!");
+    $good = 0;
+  }
+
+  my $cached = 0;
+  {
+    local *F = $self->{fh};
+    seek F, 0, SEEK_SET;
+    local $. = 0;
+    local $/ = $rs;
+
+    while (<F>) {
+      my $n = $. - 1;
+      my $cached = $self->{cache}->_produce($n);
+      my $offset = $self->{offsets}[$.];
+      my $ao = tell F;
+      if (defined $offset && $offset != $ao) {
+        _ci_warn("rec $n: offset <$offset> actual <$ao>");
+        $good = 0;
+      }
+      if (defined $cached && $_ ne $cached && ! $self->{deferred}{$n}) {
+        $good = 0;
+        _ci_warn("rec $n: cached <$cached> actual <$_>");
+      }
+      if (defined $cached && substr($cached, -$rsl) ne $rs) {
+        $good = 0;
+        _ci_warn("rec $n in the cache is missing the record separator");
+      }
+      if (! defined $offset && $self->{eof}) {
+        $good = 0;
+        _ci_warn("The offset table was marked complete, but it is missing element $.");
+      }
+    }
+    if (@{$self->{offsets}} > $.+1) {
+        $good = 0;
+        my $n = @{$self->{offsets}};
+        _ci_warn("The offset table has $n items, but the file has only $.");
+    }
+
+    my $deferring = $self->_is_deferring;
+    for my $n ($self->{cache}->ckeys) {
+      my $r = $self->{cache}->_produce($n);
+      $cached += length($r);
+      next if $n+1 <= $.;         # checked this already
+      _ci_warn("spurious caching of record $n");
+      $good = 0;
+    }
+    my $b = $self->{cache}->bytes;
+    if ($cached != $b) {
+      _ci_warn("cache size is $b, should be $cached");
+      $good = 0;
+    }
+  }
+
+  # That cache has its own set of tests
+  $good = 0 unless $self->{cache}->_check_integrity;
+
+  # Now let's check the deferbuffer
+  # Unless deferred writing is enabled, it should be empty
+  if (! $self->_is_deferring && %{$self->{deferred}}) {
+    _ci_warn("deferred writing disabled, but deferbuffer nonempty");
+    $good = 0;
+  }
+
+  # Any record in the deferbuffer should *not* be present in the readcache
+  my $deferred_s = 0;
+  while (my ($n, $r) = each %{$self->{deferred}}) {
+    $deferred_s += length($r);
+    if (defined $self->{cache}->_produce($n)) {
+      _ci_warn("record $n is in the deferbuffer *and* the readcache");
+      $good = 0;
+    }
+    if (substr($r, -$rsl) ne $rs) {
+      _ci_warn("rec $n in the deferbuffer is missing the record separator");
+      $good = 0;
+    }
+  }
+
+  # Total size of deferbuffer should match internal total
+  if ($deferred_s != $self->{deferred_s}) {
+    _ci_warn("buffer size is $self->{deferred_s}, should be $deferred_s");
+    $good = 0;
+  }
+
+  # Total size of deferbuffer should not exceed the specified limit
+  if ($deferred_s > $self->{dw_size}) {
+    _ci_warn("buffer size is $self->{deferred_s} which exceeds the limit of $self->{dw_size}");
+    $good = 0;
+  }
+
+  # Total size of cached data should not exceed the specified limit
+  if ($deferred_s + $cached > $self->{memory}) {
+    my $total = $deferred_s + $cached;
+    _ci_warn("total stored data size is $total which exceeds the limit of $self->{memory}");
+    $good = 0;
+  }
+
+  # Stuff related to autodeferment
+  if (!$self->{autodefer} && @{$self->{ad_history}}) {
+    _ci_warn("autodefer is disabled, but ad_history is nonempty");
+    $good = 0;
+  }
+  if ($self->{autodeferring} && $self->{defer}) {
+    _ci_warn("both autodeferring and explicit deferring are active");
+    $good = 0;
+  }
+  if (@{$self->{ad_history}} == 0) {
+    # That's OK, no additional tests required
+  } elsif (@{$self->{ad_history}} == 2) {
+    my @non_number = grep !/^-?\d+$/, @{$self->{ad_history}};
+    if (@non_number) {
+      my $msg;
+      { local $" = ')(';
+        $msg = "ad_history contains non-numbers (@{$self->{ad_history}})";
+      }
+      _ci_warn($msg);
+      $good = 0;
+    } elsif ($self->{ad_history}[1] < $self->{ad_history}[0]) {
+      _ci_warn("ad_history has nonsensical values @{$self->{ad_history}}");
+      $good = 0;
+    }
+  } else {
+    _ci_warn("ad_history has bad length <@{$self->{ad_history}}>");
+    $good = 0;
+  }
+
+  $good;
+}
+
+################################################################
+#
+# Tie::File::Cache
+#
+# Read cache
+
+package Tie::File::Cache;
+$Tie::File::Cache::VERSION = $Tie::File::VERSION;
+use Carp ':DEFAULT', 'confess';
+
+sub HEAP () { 0 }
+sub HASH () { 1 }
+sub MAX  () { 2 }
+sub BYTES() { 3 }
+#sub STAT () { 4 } # Array with request statistics for each record
+#sub MISS () { 5 } # Total number of cache misses
+#sub REQ  () { 6 } # Total number of cache requests 
+use strict 'vars';
+
+sub new {
+  my ($pack, $max) = @_;
+  local *_;
+  croak "missing argument to ->new" unless defined $max;
+  my $self = [];
+  bless $self => $pack;
+  @$self = (Tie::File::Heap->new($self), {}, $max, 0);
+  $self;
+}
+
+sub adj_limit {
+  my ($self, $n) = @_;
+  $self->[MAX] += $n;
+}
+
+sub set_limit {
+  my ($self, $n) = @_;
+  $self->[MAX] = $n;
+}
+
+# For internal use only
+# Will be called by the heap structure to notify us that a certain 
+# piece of data has moved from one heap element to another.
+# $k is the hash key of the item
+# $n is the new index into the heap at which it is stored
+# If $n is undefined, the item has been removed from the heap.
+sub _heap_move {
+  my ($self, $k, $n) = @_;
+  if (defined $n) {
+    $self->[HASH]{$k} = $n;
+  } else {
+    delete $self->[HASH]{$k};
+  }
+}
+
+sub insert {
+  my ($self, $key, $val) = @_;
+  local *_;
+  croak "missing argument to ->insert" unless defined $key;
+  unless (defined $self->[MAX]) {
+    confess "undefined max" ;
+  }
+  confess "undefined val" unless defined $val;
+  return if length($val) > $self->[MAX];
+
+#  if ($self->[STAT]) {
+#    $self->[STAT][$key] = 1;
+#    return;
+#  }
+
+  my $oldnode = $self->[HASH]{$key};
+  if (defined $oldnode) {
+    my $oldval = $self->[HEAP]->set_val($oldnode, $val);
+    $self->[BYTES] -= length($oldval);
+  } else {
+    $self->[HEAP]->insert($key, $val);
+  }
+  $self->[BYTES] += length($val);
+  $self->flush if $self->[BYTES] > $self->[MAX];
+}
+
+sub expire {
+  my $self = shift;
+  my $old_data = $self->[HEAP]->popheap;
+  return unless defined $old_data;
+  $self->[BYTES] -= length $old_data;
+  $old_data;
+}
+
+sub remove {
+  my ($self, @keys) = @_;
+  my @result;
+
+#  if ($self->[STAT]) {
+#    for my $key (@keys) {
+#      $self->[STAT][$key] = 0;
+#    }
+#    return;
+#  }
+
+  for my $key (@keys) {
+    next unless exists $self->[HASH]{$key};
+    my $old_data = $self->[HEAP]->remove($self->[HASH]{$key});
+    $self->[BYTES] -= length $old_data;
+    push @result, $old_data;
+  }
+  @result;
+}
+
+sub lookup {
+  my ($self, $key) = @_;
+  local *_;
+  croak "missing argument to ->lookup" unless defined $key;
+
+#  if ($self->[STAT]) {
+#    $self->[MISS]++  if $self->[STAT][$key]++ == 0;
+#    $self->[REQ]++;
+#    my $hit_rate = 1 - $self->[MISS] / $self->[REQ];
+#    # Do some testing to determine this threshhold
+#    $#$self = STAT - 1 if $hit_rate > 0.20; 
+#  }
+
+  if (exists $self->[HASH]{$key}) {
+    $self->[HEAP]->lookup($self->[HASH]{$key});
+  } else {
+    return;
+  }
+}
+
+# For internal use only
+sub _produce {
+  my ($self, $key) = @_;
+  my $loc = $self->[HASH]{$key};
+  return unless defined $loc;
+  $self->[HEAP][$loc][2];
+}
+
+# For internal use only
+sub _promote {
+  my ($self, $key) = @_;
+  $self->[HEAP]->promote($self->[HASH]{$key});
+}
+
+sub empty {
+  my ($self) = @_;
+  %{$self->[HASH]} = ();
+    $self->[BYTES] = 0;
+    $self->[HEAP]->empty;
+#  @{$self->[STAT]} = ();
+#    $self->[MISS] = 0;
+#    $self->[REQ] = 0;
+}
+
+sub is_empty {
+  my ($self) = @_;
+  keys %{$self->[HASH]} == 0;
+}
+
+sub update {
+  my ($self, $key, $val) = @_;
+  local *_;
+  croak "missing argument to ->update" unless defined $key;
+  if (length($val) > $self->[MAX]) {
+    my ($oldval) = $self->remove($key);
+    $self->[BYTES] -= length($oldval) if defined $oldval;
+  } elsif (exists $self->[HASH]{$key}) {
+    my $oldval = $self->[HEAP]->set_val($self->[HASH]{$key}, $val);
+    $self->[BYTES] += length($val);
+    $self->[BYTES] -= length($oldval) if defined $oldval;
+  } else {
+    $self->[HEAP]->insert($key, $val);
+    $self->[BYTES] += length($val);
+  }
+  $self->flush;
+}
+
+sub rekey {
+  my ($self, $okeys, $nkeys) = @_;
+  local *_;
+  my %map;
+  @map{@$okeys} = @$nkeys;
+  croak "missing argument to ->rekey" unless defined $nkeys;
+  croak "length mismatch in ->rekey arguments" unless @$nkeys == @$okeys;
+  my %adjusted;                 # map new keys to heap indices
+  # You should be able to cut this to one loop TODO XXX
+  for (0 .. $#$okeys) {
+    $adjusted{$nkeys->[$_]} = delete $self->[HASH]{$okeys->[$_]};
+  }
+  while (my ($nk, $ix) = each %adjusted) {
+    # @{$self->[HASH]}{keys %adjusted} = values %adjusted;
+    $self->[HEAP]->rekey($ix, $nk);
+    $self->[HASH]{$nk} = $ix;
+  }
+}
+
+sub ckeys {
+  my $self = shift;
+  my @a = keys %{$self->[HASH]};
+  @a;
+}
+
+# Return total amount of cached data
+sub bytes {
+  my $self = shift;
+  $self->[BYTES];
+}
+
+# Expire oldest item from cache until cache size is smaller than $max
+sub reduce_size_to {
+  my ($self, $max) = @_;
+  until ($self->[BYTES] <= $max) {
+    # Note that Tie::File::Cache::expire has been inlined here
+    my $old_data = $self->[HEAP]->popheap;
+    return unless defined $old_data;
+    $self->[BYTES] -= length $old_data;
+  }
+}
+
+# Why not just $self->reduce_size_to($self->[MAX])?
+# Try this when things stabilize   TODO XXX
+# If the cache is too full, expire the oldest records
+sub flush {
+  my $self = shift;
+  $self->reduce_size_to($self->[MAX]) if $self->[BYTES] > $self->[MAX];
+}
+
+# For internal use only
+sub _produce_lru {
+  my $self = shift;
+  $self->[HEAP]->expire_order;
+}
+
+BEGIN { *_ci_warn = \&Tie::File::_ci_warn }
+
+sub _check_integrity {          # For CACHE
+  my $self = shift;
+  my $good = 1;
+
+  # Test HEAP
+  $self->[HEAP]->_check_integrity or $good = 0;
+
+  # Test HASH
+  my $bytes = 0;
+  for my $k (keys %{$self->[HASH]}) {
+    if ($k ne '0' && $k !~ /^[1-9][0-9]*$/) {
+      $good = 0;
+      _ci_warn "Cache hash key <$k> is non-numeric";
+    }
+
+    my $h = $self->[HASH]{$k};
+    if (! defined $h) {
+      $good = 0;
+      _ci_warn "Heap index number for key $k is undefined";
+    } elsif ($h == 0) {
+      $good = 0;
+      _ci_warn "Heap index number for key $k is zero";
+    } else {
+      my $j = $self->[HEAP][$h];
+      if (! defined $j) {
+        $good = 0;
+        _ci_warn "Heap contents key $k (=> $h) are undefined";
+      } else {
+        $bytes += length($j->[2]);
+        if ($k ne $j->[1]) {
+          $good = 0;
+          _ci_warn "Heap contents key $k (=> $h) is $j->[1], should be $k";
+        }
+      }
+    }
+  }
+
+  # Test BYTES
+  if ($bytes != $self->[BYTES]) {
+    $good = 0;
+    _ci_warn "Total data in cache is $bytes, expected $self->[BYTES]";
+  }
+
+  # Test MAX
+  if ($bytes > $self->[MAX]) {
+    $good = 0;
+    _ci_warn "Total data in cache is $bytes, exceeds maximum $self->[MAX]";
+  }
+
+  return $good;
+}
+
+sub delink {
+  my $self = shift;
+  $self->[HEAP] = undef;        # Bye bye heap
+}
+
+################################################################
+#
+# Tie::File::Heap
+#
+# Heap data structure for use by cache LRU routines
+
+package Tie::File::Heap;
+use Carp ':DEFAULT', 'confess';
+$Tie::File::Heap::VERSION = $Tie::File::Cache::VERSION;
+sub SEQ () { 0 };
+sub KEY () { 1 };
+sub DAT () { 2 };
+
+sub new {
+  my ($pack, $cache) = @_;
+  die "$pack: Parent cache object $cache does not support _heap_move method"
+    unless eval { $cache->can('_heap_move') };
+  my $self = [[0,$cache,0]];
+  bless $self => $pack;
+}
+
+# Allocate a new sequence number, larger than all previously allocated numbers
+sub _nseq {
+  my $self = shift;
+  $self->[0][0]++;
+}
+
+sub _cache {
+  my $self = shift;
+  $self->[0][1];
+}
+
+sub _nelts {
+  my $self = shift;
+  $self->[0][2];
+}
+
+sub _nelts_inc {
+  my $self = shift;
+  ++$self->[0][2];
+}  
+
+sub _nelts_dec {
+  my $self = shift;
+  --$self->[0][2];
+}  
+
+sub is_empty {
+  my $self = shift;
+  $self->_nelts == 0;
+}
+
+sub empty {
+  my $self = shift;
+  $#$self = 0;
+  $self->[0][2] = 0;
+  $self->[0][0] = 0;            # might as well reset the sequence numbers
+}
+
+# notify the parent cache object that we moved something
+sub _heap_move {
+  my $self = shift;
+  $self->_cache->_heap_move(@_);
+}
+
+# Insert a piece of data into the heap with the indicated sequence number.
+# The item with the smallest sequence number is always at the top.
+# If no sequence number is specified, allocate a new one and insert the
+# item at the bottom.
+sub insert {
+  my ($self, $key, $data, $seq) = @_;
+  $seq = $self->_nseq unless defined $seq;
+  $self->_insert_new([$seq, $key, $data]);
+}
+
+# Insert a new, fresh item at the bottom of the heap
+sub _insert_new {
+  my ($self, $item) = @_;
+  my $i = @$self;
+  $i = int($i/2) until defined $self->[$i/2];
+  $self->[$i] = $item;
+  $self->[0][1]->_heap_move($self->[$i][KEY], $i);
+  $self->_nelts_inc;
+}
+
+# Insert [$data, $seq] pair at or below item $i in the heap.
+# If $i is omitted, default to 1 (the top element.)
+sub _insert {
+  my ($self, $item, $i) = @_;
+#  $self->_check_loc($i) if defined $i;
+  $i = 1 unless defined $i;
+  until (! defined $self->[$i]) {
+    if ($self->[$i][SEQ] > $item->[SEQ]) { # inserted item is older
+      ($self->[$i], $item) = ($item, $self->[$i]);
+      $self->[0][1]->_heap_move($self->[$i][KEY], $i);
+    }
+    # If either is undefined, go that way.  Otherwise, choose at random
+    my $dir;
+    $dir = 0 if !defined $self->[2*$i];
+    $dir = 1 if !defined $self->[2*$i+1];
+    $dir = int(rand(2)) unless defined $dir;
+    $i = 2*$i + $dir;
+  }
+  $self->[$i] = $item;
+  $self->[0][1]->_heap_move($self->[$i][KEY], $i);
+  $self->_nelts_inc;
+}
+
+# Remove the item at node $i from the heap, moving child items upwards.
+# The item with the smallest sequence number is always at the top.
+# Moving items upwards maintains this condition.
+# Return the removed item.  Return undef if there was no item at node $i.
+sub remove {
+  my ($self, $i) = @_;
+  $i = 1 unless defined $i;
+  my $top = $self->[$i];
+  return unless defined $top;
+  while (1) {
+    my $ii;
+    my ($L, $R) = (2*$i, 2*$i+1);
+
+    # If either is undefined, go the other way.
+    # Otherwise, go towards the smallest.
+    last unless defined $self->[$L] || defined $self->[$R];
+    $ii = $R if not defined $self->[$L];
+    $ii = $L if not defined $self->[$R];
+    unless (defined $ii) {
+      $ii = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R;
+    }
+
+    $self->[$i] = $self->[$ii]; # Promote child to fill vacated spot
+    $self->[0][1]->_heap_move($self->[$i][KEY], $i);
+    $i = $ii; # Fill new vacated spot
+  }
+  $self->[0][1]->_heap_move($top->[KEY], undef);
+  undef $self->[$i];
+  $self->_nelts_dec;
+  return $top->[DAT];
+}
+
+sub popheap {
+  my $self = shift;
+  $self->remove(1);
+}
+
+# set the sequence number of the indicated item to a higher number
+# than any other item in the heap, and bubble the item down to the
+# bottom.
+sub promote {
+  my ($self, $n) = @_;
+#  $self->_check_loc($n);
+  $self->[$n][SEQ] = $self->_nseq;
+  my $i = $n;
+  while (1) {
+    my ($L, $R) = (2*$i, 2*$i+1);
+    my $dir;
+    last unless defined $self->[$L] || defined $self->[$R];
+    $dir = $R unless defined $self->[$L];
+    $dir = $L unless defined $self->[$R];
+    unless (defined $dir) {
+      $dir = $self->[$L][SEQ] < $self->[$R][SEQ] ? $L : $R;
+    }
+    @{$self}[$i, $dir] = @{$self}[$dir, $i];
+    for ($i, $dir) {
+      $self->[0][1]->_heap_move($self->[$_][KEY], $_) if defined $self->[$_];
+    }
+    $i = $dir;
+  }
+}
+
+# Return item $n from the heap, promoting its LRU status
+sub lookup {
+  my ($self, $n) = @_;
+#  $self->_check_loc($n);
+  my $val = $self->[$n];
+  $self->promote($n);
+  $val->[DAT];
+}
+
+
+# Assign a new value for node $n, promoting it to the bottom of the heap
+sub set_val {
+  my ($self, $n, $val) = @_;
+#  $self->_check_loc($n);
+  my $oval = $self->[$n][DAT];
+  $self->[$n][DAT] = $val;
+  $self->promote($n);
+  return $oval;
+}
+
+# The hask key has changed for an item;
+# alter the heap's record of the hash key
+sub rekey {
+  my ($self, $n, $new_key) = @_;
+#  $self->_check_loc($n);
+  $self->[$n][KEY] = $new_key;
+}
+
+sub _check_loc {
+  my ($self, $n) = @_;
+  unless (1 || defined $self->[$n]) {
+    confess "_check_loc($n) failed";
+  }
+}
+
+BEGIN { *_ci_warn = \&Tie::File::_ci_warn }
+
+sub _check_integrity {
+  my $self = shift;
+  my $good = 1;
+  my %seq;
+
+  unless (eval {$self->[0][1]->isa("Tie::File::Cache")}) {
+    _ci_warn "Element 0 of heap corrupt";
+    $good = 0;
+  }
+  $good = 0 unless $self->_satisfies_heap_condition(1);
+  for my $i (2 .. $#{$self}) {
+    my $p = int($i/2);          # index of parent node
+    if (defined $self->[$i] && ! defined $self->[$p]) {
+      _ci_warn "Element $i of heap defined, but parent $p isn't";
+      $good = 0;
+    }
+
+    if (defined $self->[$i]) {
+      if ($seq{$self->[$i][SEQ]}) {
+        my $seq = $self->[$i][SEQ];
+        _ci_warn "Nodes $i and $seq{$seq} both have SEQ=$seq";
+        $good = 0;
+      } else {
+        $seq{$self->[$i][SEQ]} = $i;
+      }
+    }
+  }
+
+  return $good;
+}
+
+sub _satisfies_heap_condition {
+  my $self = shift;
+  my $n = shift || 1;
+  my $good = 1;
+  for (0, 1) {
+    my $c = $n*2 + $_;
+    next unless defined $self->[$c];
+    if ($self->[$n][SEQ] >= $self->[$c]) {
+      _ci_warn "Node $n of heap does not predate node $c";
+      $good = 0 ;
+    }
+    $good = 0 unless $self->_satisfies_heap_condition($c);
+  }
+  return $good;
+}
+
+# Return a list of all the values, sorted by expiration order
+sub expire_order {
+  my $self = shift;
+  my @nodes = sort {$a->[SEQ] <=> $b->[SEQ]} $self->_nodes;
+  map { $_->[KEY] } @nodes;
+}
+
+sub _nodes {
+  my $self = shift;
+  my $i = shift || 1;
+  return unless defined $self->[$i];
+  ($self->[$i], $self->_nodes($i*2), $self->_nodes($i*2+1));
+}
+
+"Cogito, ergo sum.";  # don't forget to return a true value from the file
+
+__END__
+
+=head1 NAME
+
+Tie::File - Access the lines of a disk file via a Perl array
+
+=head1 SYNOPSIS
+
+	# This file documents Tie::File version 0.98
+	use Tie::File;
+
+	tie @array, 'Tie::File', filename or die ...;
+
+	$array[13] = 'blah';     # line 13 of the file is now 'blah'
+	print $array[42];        # display line 42 of the file
+
+	$n_recs = @array;        # how many records are in the file?
+	$#array -= 2;            # chop two records off the end
+
+
+	for (@array) {
+	  s/PERL/Perl/g;         # Replace PERL with Perl everywhere in the file
+	}
+
+	# These are just like regular push, pop, unshift, shift, and splice
+	# Except that they modify the file in the way you would expect
+
+	push @array, new recs...;
+	my $r1 = pop @array;
+	unshift @array, new recs...;
+	my $r2 = shift @array;
+	@old_recs = splice @array, 3, 7, new recs...;
+
+	untie @array;            # all finished
+
+
+=head1 DESCRIPTION
+
+C<Tie::File> represents a regular text file as a Perl array.  Each
+element in the array corresponds to a record in the file.  The first
+line of the file is element 0 of the array; the second line is element
+1, and so on.
+
+The file is I<not> loaded into memory, so this will work even for
+gigantic files.
+
+Changes to the array are reflected in the file immediately.
+
+Lazy people and beginners may now stop reading the manual.
+
+=head2 C<recsep>
+
+What is a 'record'?  By default, the meaning is the same as for the
+C<E<lt>...E<gt>> operator: It's a string terminated by C<$/>, which is
+probably C<"\n">.  (Minor exception: on DOS and Win32 systems, a
+'record' is a string terminated by C<"\r\n">.)  You may change the
+definition of "record" by supplying the C<recsep> option in the C<tie>
+call:
+
+	tie @array, 'Tie::File', $file, recsep => 'es';
+
+This says that records are delimited by the string C<es>.  If the file
+contained the following data:
+
+	Curse these pesky flies!\n
+
+then the C<@array> would appear to have four elements:
+
+	"Curse th"
+	"e p"
+	"ky fli"
+	"!\n"
+
+An undefined value is not permitted as a record separator.  Perl's
+special "paragraph mode" semantics (E<agrave> la C<$/ = "">) are not
+emulated.
+
+Records read from the tied array do not have the record separator
+string on the end; this is to allow
+
+	$array[17] .= "extra";
+
+to work as expected.
+
+(See L<"autochomp">, below.)  Records stored into the array will have
+the record separator string appended before they are written to the
+file, if they don't have one already.  For example, if the record
+separator string is C<"\n">, then the following two lines do exactly
+the same thing:
+
+	$array[17] = "Cherry pie";
+	$array[17] = "Cherry pie\n";
+
+The result is that the contents of line 17 of the file will be
+replaced with "Cherry pie"; a newline character will separate line 17
+from line 18.  This means that this code will do nothing:
+
+	chomp $array[17];
+
+Because the C<chomp>ed value will have the separator reattached when
+it is written back to the file.  There is no way to create a file
+whose trailing record separator string is missing.
+
+Inserting records that I<contain> the record separator string is not
+supported by this module.  It will probably produce a reasonable
+result, but what this result will be may change in a future version.
+Use 'splice' to insert records or to replace one record with several.
+
+=head2 C<autochomp>
+
+Normally, array elements have the record separator removed, so that if
+the file contains the text
+
+	Gold
+	Frankincense
+	Myrrh
+
+the tied array will appear to contain C<("Gold", "Frankincense",
+"Myrrh")>.  If you set C<autochomp> to a false value, the record
+separator will not be removed.  If the file above was tied with
+
+	tie @gifts, "Tie::File", $gifts, autochomp => 0;
+
+then the array C<@gifts> would appear to contain C<("Gold\n",
+"Frankincense\n", "Myrrh\n")>, or (on Win32 systems) C<("Gold\r\n",
+"Frankincense\r\n", "Myrrh\r\n")>.
+
+=head2 C<mode>
+
+Normally, the specified file will be opened for read and write access,
+and will be created if it does not exist.  (That is, the flags
+C<O_RDWR | O_CREAT> are supplied in the C<open> call.)  If you want to
+change this, you may supply alternative flags in the C<mode> option.
+See L<Fcntl> for a listing of available flags.
+For example:
+
+	# open the file if it exists, but fail if it does not exist
+	use Fcntl 'O_RDWR';
+	tie @array, 'Tie::File', $file, mode => O_RDWR;
+
+	# create the file if it does not exist
+	use Fcntl 'O_RDWR', 'O_CREAT';
+	tie @array, 'Tie::File', $file, mode => O_RDWR | O_CREAT;
+
+	# open an existing file in read-only mode
+	use Fcntl 'O_RDONLY';
+	tie @array, 'Tie::File', $file, mode => O_RDONLY;
+
+Opening the data file in write-only or append mode is not supported.
+
+=head2 C<memory>
+
+This is an upper limit on the amount of memory that C<Tie::File> will
+consume at any time while managing the file.  This is used for two
+things: managing the I<read cache> and managing the I<deferred write
+buffer>.
+
+Records read in from the file are cached, to avoid having to re-read
+them repeatedly.  If you read the same record twice, the first time it
+will be stored in memory, and the second time it will be fetched from
+the I<read cache>.  The amount of data in the read cache will not
+exceed the value you specified for C<memory>.  If C<Tie::File> wants
+to cache a new record, but the read cache is full, it will make room
+by expiring the least-recently visited records from the read cache.
+
+The default memory limit is 2Mib.  You can adjust the maximum read
+cache size by supplying the C<memory> option.  The argument is the
+desired cache size, in bytes.
+
+	# I have a lot of memory, so use a large cache to speed up access
+	tie @array, 'Tie::File', $file, memory => 20_000_000;
+
+Setting the memory limit to 0 will inhibit caching; records will be
+fetched from disk every time you examine them.
+
+The C<memory> value is not an absolute or exact limit on the memory
+used.  C<Tie::File> objects contains some structures besides the read
+cache and the deferred write buffer, whose sizes are not charged
+against C<memory>. 
+
+The cache itself consumes about 310 bytes per cached record, so if
+your file has many short records, you may want to decrease the cache
+memory limit, or else the cache overhead may exceed the size of the
+cached data.
+
+
+=head2 C<dw_size>
+
+(This is an advanced feature.  Skip this section on first reading.)
+
+If you use deferred writing (See L<"Deferred Writing">, below) then
+data you write into the array will not be written directly to the
+file; instead, it will be saved in the I<deferred write buffer> to be
+written out later.  Data in the deferred write buffer is also charged
+against the memory limit you set with the C<memory> option.
+
+You may set the C<dw_size> option to limit the amount of data that can
+be saved in the deferred write buffer.  This limit may not exceed the
+total memory limit.  For example, if you set C<dw_size> to 1000 and
+C<memory> to 2500, that means that no more than 1000 bytes of deferred
+writes will be saved up.  The space available for the read cache will
+vary, but it will always be at least 1500 bytes (if the deferred write
+buffer is full) and it could grow as large as 2500 bytes (if the
+deferred write buffer is empty.)
+
+If you don't specify a C<dw_size>, it defaults to the entire memory
+limit.
+
+=head2 Option Format
+
+C<-mode> is a synonym for C<mode>.  C<-recsep> is a synonym for
+C<recsep>.  C<-memory> is a synonym for C<memory>.  You get the
+idea.
+
+=head1 Public Methods
+
+The C<tie> call returns an object, say C<$o>.  You may call
+
+	$rec = $o->FETCH($n);
+	$o->STORE($n, $rec);
+
+to fetch or store the record at line C<$n>, respectively; similarly
+the other tied array methods.  (See L<perltie> for details.)  You may
+also call the following methods on this object:
+
+=head2 C<flock>
+
+	$o->flock(MODE)
+
+will lock the tied file.  C<MODE> has the same meaning as the second
+argument to the Perl built-in C<flock> function; for example
+C<LOCK_SH> or C<LOCK_EX | LOCK_NB>.  (These constants are provided by
+the C<use Fcntl ':flock'> declaration.)
+
+C<MODE> is optional; the default is C<LOCK_EX>.
+
+C<Tie::File> maintains an internal table of the byte offset of each
+record it has seen in the file.  
+
+When you use C<flock> to lock the file, C<Tie::File> assumes that the
+read cache is no longer trustworthy, because another process might
+have modified the file since the last time it was read.  Therefore, a
+successful call to C<flock> discards the contents of the read cache
+and the internal record offset table.
+
+C<Tie::File> promises that the following sequence of operations will
+be safe:
+
+	my $o = tie @array, "Tie::File", $filename;
+	$o->flock;
+
+In particular, C<Tie::File> will I<not> read or write the file during
+the C<tie> call.  (Exception: Using C<mode =E<gt> O_TRUNC> will, of
+course, erase the file during the C<tie> call.  If you want to do this
+safely, then open the file without C<O_TRUNC>, lock the file, and use
+C<@array = ()>.)
+
+The best way to unlock a file is to discard the object and untie the
+array.  It is probably unsafe to unlock the file without also untying
+it, because if you do, changes may remain unwritten inside the object.
+That is why there is no shortcut for unlocking.  If you really want to
+unlock the file prematurely, you know what to do; if you don't know
+what to do, then don't do it.
+
+All the usual warnings about file locking apply here.  In particular,
+note that file locking in Perl is B<advisory>, which means that
+holding a lock will not prevent anyone else from reading, writing, or
+erasing the file; it only prevents them from getting another lock at
+the same time.  Locks are analogous to green traffic lights: If you
+have a green light, that does not prevent the idiot coming the other
+way from plowing into you sideways; it merely guarantees to you that
+the idiot does not also have a green light at the same time.
+
+=head2 C<autochomp>
+
+	my $old_value = $o->autochomp(0);    # disable autochomp option
+	my $old_value = $o->autochomp(1);    #  enable autochomp option
+
+	my $ac = $o->autochomp();   # recover current value
+
+See L<"autochomp">, above.
+
+=head2 C<defer>, C<flush>, C<discard>, and C<autodefer>
+
+See L<"Deferred Writing">, below.
+
+=head2 C<offset>
+
+	$off = $o->offset($n);
+
+This method returns the byte offset of the start of the C<$n>th record
+in the file.  If there is no such record, it returns an undefined
+value.
+
+=head1 Tying to an already-opened filehandle
+
+If C<$fh> is a filehandle, such as is returned by C<IO::File> or one
+of the other C<IO> modules, you may use:
+
+	tie @array, 'Tie::File', $fh, ...;
+
+Similarly if you opened that handle C<FH> with regular C<open> or
+C<sysopen>, you may use:
+
+	tie @array, 'Tie::File', \*FH, ...;
+
+Handles that were opened write-only won't work.  Handles that were
+opened read-only will work as long as you don't try to modify the
+array.  Handles must be attached to seekable sources of data---that
+means no pipes or sockets.  If C<Tie::File> can detect that you
+supplied a non-seekable handle, the C<tie> call will throw an
+exception.  (On Unix systems, it can detect this.)
+
+Note that Tie::File will only close any filehandles that it opened
+internally.  If you passed it a filehandle as above, you "own" the
+filehandle, and are responsible for closing it after you have untied
+the @array.
+
+=head1 Deferred Writing
+
+(This is an advanced feature.  Skip this section on first reading.)
+
+Normally, modifying a C<Tie::File> array writes to the underlying file
+immediately.  Every assignment like C<$a[3] = ...> rewrites as much of
+the file as is necessary; typically, everything from line 3 through
+the end will need to be rewritten.  This is the simplest and most
+transparent behavior.  Performance even for large files is reasonably
+good.
+
+However, under some circumstances, this behavior may be excessively
+slow.  For example, suppose you have a million-record file, and you
+want to do:
+
+	for (@FILE) {
+	  $_ = "> $_";
+	}
+
+The first time through the loop, you will rewrite the entire file,
+from line 0 through the end.  The second time through the loop, you
+will rewrite the entire file from line 1 through the end.  The third
+time through the loop, you will rewrite the entire file from line 2 to
+the end.  And so on.
+
+If the performance in such cases is unacceptable, you may defer the
+actual writing, and then have it done all at once.  The following loop
+will perform much better for large files:
+
+	(tied @a)->defer;
+	for (@a) {
+	  $_ = "> $_";
+	}
+	(tied @a)->flush;
+
+If C<Tie::File>'s memory limit is large enough, all the writing will
+done in memory.  Then, when you call C<-E<gt>flush>, the entire file
+will be rewritten in a single pass.
+
+(Actually, the preceding discussion is something of a fib.  You don't
+need to enable deferred writing to get good performance for this
+common case, because C<Tie::File> will do it for you automatically
+unless you specifically tell it not to.  See L<"Autodeferring">,
+below.)
+
+Calling C<-E<gt>flush> returns the array to immediate-write mode.  If
+you wish to discard the deferred writes, you may call C<-E<gt>discard>
+instead of C<-E<gt>flush>.  Note that in some cases, some of the data
+will have been written already, and it will be too late for
+C<-E<gt>discard> to discard all the changes.  Support for
+C<-E<gt>discard> may be withdrawn in a future version of C<Tie::File>.
+
+Deferred writes are cached in memory up to the limit specified by the
+C<dw_size> option (see above).  If the deferred-write buffer is full
+and you try to write still more deferred data, the buffer will be
+flushed.  All buffered data will be written immediately, the buffer
+will be emptied, and the now-empty space will be used for future
+deferred writes.
+
+If the deferred-write buffer isn't yet full, but the total size of the
+buffer and the read cache would exceed the C<memory> limit, the oldest
+records will be expired from the read cache until the total size is
+under the limit.
+
+C<push>, C<pop>, C<shift>, C<unshift>, and C<splice> cannot be
+deferred.  When you perform one of these operations, any deferred data
+is written to the file and the operation is performed immediately.
+This may change in a future version.
+
+If you resize the array with deferred writing enabled, the file will
+be resized immediately, but deferred records will not be written.
+This has a surprising consequence: C<@a = (...)> erases the file
+immediately, but the writing of the actual data is deferred.  This
+might be a bug.  If it is a bug, it will be fixed in a future version.
+
+=head2 Autodeferring
+
+C<Tie::File> tries to guess when deferred writing might be helpful,
+and to turn it on and off automatically. 
+
+	for (@a) {
+	  $_ = "> $_";
+	}
+
+In this example, only the first two assignments will be done
+immediately; after this, all the changes to the file will be deferred
+up to the user-specified memory limit.
+
+You should usually be able to ignore this and just use the module
+without thinking about deferring.  However, special applications may
+require fine control over which writes are deferred, or may require
+that all writes be immediate.  To disable the autodeferment feature,
+use
+
+	(tied @o)->autodefer(0);
+
+or
+
+       	tie @array, 'Tie::File', $file, autodefer => 0;
+
+
+Similarly, C<-E<gt>autodefer(1)> re-enables autodeferment, and 
+C<-E<gt>autodefer()> recovers the current value of the autodefer setting.
+
+
+=head1 CONCURRENT ACCESS TO FILES
+
+Caching and deferred writing are inappropriate if you want the same
+file to be accessed simultaneously from more than one process.  Other
+optimizations performed internally by this module are also
+incompatible with concurrent access.  A future version of this module will
+support a C<concurrent =E<gt> 1> option that enables safe concurrent access.
+
+Previous versions of this documentation suggested using C<memory
+=E<gt> 0> for safe concurrent access.  This was mistaken.  Tie::File
+will not support safe concurrent access before version 0.96.
+
+=head1 CAVEATS
+
+(That's Latin for 'warnings'.)
+
+=over 4
+
+=item *
+
+Reasonable effort was made to make this module efficient.  Nevertheless,
+changing the size of a record in the middle of a large file will
+always be fairly slow, because everything after the new record must be
+moved.
+
+=item *
+
+The behavior of tied arrays is not precisely the same as for regular
+arrays.  For example:
+
+	# This DOES print "How unusual!"
+	undef $a[10];  print "How unusual!\n" if defined $a[10];
+
+C<undef>-ing a C<Tie::File> array element just blanks out the
+corresponding record in the file.  When you read it back again, you'll
+get the empty string, so the supposedly-C<undef>'ed value will be
+defined.  Similarly, if you have C<autochomp> disabled, then
+
+	# This DOES print "How unusual!" if 'autochomp' is disabled
+	undef $a[10];
+        print "How unusual!\n" if $a[10];
+
+Because when C<autochomp> is disabled, C<$a[10]> will read back as
+C<"\n"> (or whatever the record separator string is.)  
+
+There are other minor differences, particularly regarding C<exists>
+and C<delete>, but in general, the correspondence is extremely close.
+
+=item *
+
+I have supposed that since this module is concerned with file I/O,
+almost all normal use of it will be heavily I/O bound.  This means
+that the time to maintain complicated data structures inside the
+module will be dominated by the time to actually perform the I/O.
+When there was an opportunity to spend CPU time to avoid doing I/O, I
+usually tried to take it.
+
+=item *
+
+You might be tempted to think that deferred writing is like
+transactions, with C<flush> as C<commit> and C<discard> as
+C<rollback>, but it isn't, so don't.
+
+=item *
+
+There is a large memory overhead for each record offset and for each
+cache entry: about 310 bytes per cached data record, and about 21 bytes per offset table entry.
+
+The per-record overhead will limit the maximum number of records you
+can access per file. Note that I<accessing> the length of the array
+via C<$x = scalar @tied_file> accesses B<all> records and stores their
+offsets.  The same for C<foreach (@tied_file)>, even if you exit the
+loop early.
+
+=back
+
+=head1 SUBCLASSING
+
+This version promises absolutely nothing about the internals, which
+may change without notice.  A future version of the module will have a
+well-defined and stable subclassing API.
+
+=head1 WHAT ABOUT C<DB_File>?
+
+People sometimes point out that L<DB_File> will do something similar,
+and ask why C<Tie::File> module is necessary.
+
+There are a number of reasons that you might prefer C<Tie::File>.
+A list is available at C<http://perl.plover.com/TieFile/why-not-DB_File>.
+
+=head1 AUTHOR
+
+Mark Jason Dominus
+
+To contact the author, send email to: C<mjd-perl-tiefile+ at plover.com>
+
+To receive an announcement whenever a new version of this module is
+released, send a blank email message to
+C<mjd-perl-tiefile-subscribe at plover.com>.
+
+The most recent version of this module, including documentation and
+any news of importance, will be available at
+
+	http://perl.plover.com/TieFile/
+
+
+=head1 LICENSE
+
+C<Tie::File> version 0.96 is copyright (C) 2003 Mark Jason Dominus.
+
+This library is free software; you may redistribute it and/or modify
+it under the same terms as Perl itself.
+
+These terms are your choice of any of (1) the Perl Artistic Licence,
+or (2) version 2 of the GNU General Public License as published by the
+Free Software Foundation, or (3) any later version of the GNU General
+Public License.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this library program; it should be in the file C<COPYING>.
+If not, write to the Free Software Foundation, Inc., 51 Franklin Street,
+Fifth Floor, Boston, MA  02110-1301, USA
+
+For licensing inquiries, contact the author at:
+
+	Mark Jason Dominus
+	255 S. Warnock St.
+	Philadelphia, PA 19107
+
+=head1 WARRANTY
+
+C<Tie::File> version 0.98 comes with ABSOLUTELY NO WARRANTY.
+For details, see the license.
+
+=head1 THANKS
+
+Gigantic thanks to Jarkko Hietaniemi, for agreeing to put this in the
+core when I hadn't written it yet, and for generally being helpful,
+supportive, and competent.  (Usually the rule is "choose any one.")
+Also big thanks to Abhijit Menon-Sen for all of the same things.
+
+Special thanks to Craig Berry and Peter Prymmer (for VMS portability
+help), Randy Kobes (for Win32 portability help), Clinton Pierce and
+Autrijus Tang (for heroic eleventh-hour Win32 testing above and beyond
+the call of duty), Michael G Schwern (for testing advice), and the
+rest of the CPAN testers (for testing generally).
+
+Special thanks to Tels for suggesting several speed and memory
+optimizations.
+
+Additional thanks to:
+Edward Avis /
+Mattia Barbon /
+Tom Christiansen /
+Gerrit Haase /
+Gurusamy Sarathy /
+Jarkko Hietaniemi (again) /
+Nikola Knezevic /
+John Kominetz /
+Nick Ing-Simmons /
+Tassilo von Parseval /
+H. Dieter Pearcey /
+Slaven Rezic /
+Eric Roode /
+Peter Scott /
+Peter Somu /
+Autrijus Tang (again) /
+Tels (again) /
+Juerd Waalboer /
+Todd Rinaldo
+
+=head1 TODO
+
+More tests.  (Stuff I didn't think of yet.)
+
+Paragraph mode?
+
+Fixed-length mode.  Leave-blanks mode.
+
+Maybe an autolocking mode?
+
+For many common uses of the module, the read cache is a liability.
+For example, a program that inserts a single record, or that scans the
+file once, will have a cache hit rate of zero.  This suggests a major
+optimization: The cache should be initially disabled.  Here's a hybrid
+approach: Initially, the cache is disabled, but the cache code
+maintains statistics about how high the hit rate would be *if* it were
+enabled.  When it sees the hit rate get high enough, it enables
+itself.  The STAT comments in this code are the beginning of an
+implementation of this.
+
+Record locking with fcntl()?  Then the module might support an undo
+log and get real transactions.  What a tour de force that would be.
+
+Keeping track of the highest cached record. This would allow reads-in-a-row
+to skip the cache lookup faster (if reading from 1..N with empty cache at
+start, the last cached value will be always N-1).
+
+More tests.
+
+=cut
+

Added: vendor/perl/dist/dist/Tie-File/t/00_version.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/00_version.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/00_version.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+print "1..1\n";
+
+my $testversion = "0.99";
+use Tie::File;
+
+if ($Tie::File::VERSION != $testversion) {
+  print STDERR "
+
+*** WHOA THERE!!! ***
+
+You seem to be running version $Tie::File::VERSION of the module
+against version $testversion of the test suite!
+
+None of the other test results will be reliable.
+";
+  exit 1;
+}
+
+print "ok 1\n";
+

Added: vendor/perl/dist/dist/Tie-File/t/01_gen.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/01_gen.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/01_gen.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,165 @@
+#!/usr/bin/perl
+
+$| = 1;
+my $file = "tf$$.txt";
+1 while unlink $file;
+
+print "1..75\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+
+# 3-5 create
+$a[0] = 'rec0';
+check_contents("rec0");
+
+# 6-11 append
+$a[1] = 'rec1';
+check_contents("rec0", "rec1");
+$a[2] = 'rec2';
+check_contents("rec0", "rec1", "rec2");
+
+# 12-20 same-length alterations
+$a[0] = 'new0';
+check_contents("new0", "rec1", "rec2");
+$a[1] = 'new1';
+check_contents("new0", "new1", "rec2");
+$a[2] = 'new2';
+check_contents("new0", "new1", "new2");
+
+# 21-35 lengthening alterations
+$a[0] = 'long0';
+check_contents("long0", "new1", "new2");
+$a[1] = 'long1';
+check_contents("long0", "long1", "new2");
+$a[2] = 'long2';
+check_contents("long0", "long1", "long2");
+$a[1] = 'longer1';
+check_contents("long0", "longer1", "long2");
+$a[0] = 'longer0';
+check_contents("longer0", "longer1", "long2");
+
+# 36-50 shortening alterations, including truncation
+$a[0] = 'short0';
+check_contents("short0", "longer1", "long2");
+$a[1] = 'short1';
+check_contents("short0", "short1", "long2");
+$a[2] = 'short2';
+check_contents("short0", "short1", "short2");
+$a[1] = 'sh1';
+check_contents("short0", "sh1", "short2");
+$a[0] = 'sh0';
+check_contents("sh0", "sh1", "short2");
+
+# (51-56) file with holes
+$a[4] = 'rec4';
+check_contents("sh0", "sh1", "short2", "", "rec4");
+$a[3] = 'rec3';
+check_contents("sh0", "sh1", "short2", "rec3", "rec4");
+
+# (57-59) zero out file
+ at a = ();
+check_contents();
+
+# (60-62) insert into the middle of an empty file
+$a[3] = "rec3";
+check_contents("", "", "", "rec3");
+
+# (63-68) 20020326 You thought there would be a bug in STORE where if
+# a cached record was false, STORE wouldn't see it at all.  But you
+# forgot that records always come back from the cache with the record
+# separator attached, so they are unlikely to be false.  The only
+# really weird case is when the cached record is empty and the record
+# separator is "0".  Test that in 09_gen_rs.t.
+$a[1] = "0";
+check_contents("", "0", "", "rec3");
+$a[1] = "whoops";
+check_contents("", "whoops", "", "rec3");
+
+# (69-72) make sure that undefs are treated correctly---they should 
+# be converted to empty records, and should not raise any warnings.
+# (Some of these failed in 0.90.  The change to _fixrec fixed them.)
+# 20020331
+{
+  my $good = 1; my $warn;
+  # If any of these raise warnings, we have a problem.
+  local $SIG{__WARN__} = sub { $good = 0; $warn = shift(); ctrlfix($warn)};
+  local $^W = 1;
+  @a = (1);
+  $a[0] = undef;
+  print $good ? "ok $N\n" : "not ok $N # $warn\n";
+  $N++; $good = 1;
+  print defined($a[0]) ? "ok $N\n" : "not ok $N\n";
+  $N++; $good = 1;
+  $a[3] = '3';
+  print defined($a[1]) ? "ok $N\n" : "not ok $N\n";
+  $N++; $good = 1;
+  undef $a[3];
+  print $good ? "ok $N\n" : "not ok $N # $warn\n";
+  $N++; $good = 1;
+}
+
+# (73-75) What if the user has tampered with $\ ?
+{ {  local $\ = "stop messing with the funny variables!";
+     @a = (0..2);
+   }
+  check_contents(0..2);
+}
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq "$c[$_]$:") {
+      $msg = "expected <$c[$_]$:>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/02_fetchsize.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/02_fetchsize.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/02_fetchsize.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec1$:rec2$:rec3$:";
+
+print "1..6\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+
+my $n;
+
+# 3  test array element count
+$n = @a;
+print $n == 3 ? "ok $N\n" : "not ok $N # n=$n\n";
+$N++;
+
+# 4 same thing again   
+$n = @a;
+print $n == 3 ? "ok $N\n" : "not ok $N # n=$n\n";
+$N++;
+
+# 5  test $#a notation
+$n = $#a;
+print $n == 2 ? "ok $N\n" : "not ok $N # n=$n\n";
+$N++;
+
+# 6  test looping over array elements
+my $q;
+for (@a) { $q .= $_ }
+print $q eq $data ? "ok $N\n" : "not ok $N # n=$n\n";
+$N++;
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/03_longfetch.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/03_longfetch.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/03_longfetch.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,54 @@
+#!/usr/bin/perl
+#
+# Make sure we can fetch a record in the middle of the file
+# before we've ever looked at any records before it
+#
+# Make sure fetching past the end of the file returns the undefined value
+#
+# (tests _fill_offsets_to() )
+#
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+
+print "1..8\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+
+my $n;
+
+# 3-5
+for (2, 1, 0) {
+  my $rec = $a[$_];
+  print $rec eq "rec$_$:" ? "ok $N\n" : "not ok $N # rec=<$rec> ?\n";
+  $N++;
+}
+
+# 6-8
+for (3, 4, 6) {
+  my $rec = $a[$_];
+  print ((not defined $rec) ? "ok $N\n" : "not ok $N # rec=<$rec> is defined\n");
+  $N++;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/04_splice.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/04_splice.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/04_splice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,264 @@
+#!/usr/bin/perl
+
+#
+# Check SPLICE function's effect on the file
+# (07_rv_splice.t checks its return value)
+#
+# Each call to 'check_contents' actually performs two tests.
+# First, it calls the tied object's own 'check_integrity' method,
+# which makes sure that the contents of the read cache and offset tables
+# accurately reflect the contents of the file.  
+# Then, it checks the actual contents of the file against the expected
+# contents.
+
+
+$| = 1;
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+print "1..118\n";
+
+init_file($data);
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+my $o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+my $n;
+
+# (3-22) splicing at the beginning
+splice(@a, 0, 0, "rec4");
+check_contents("rec4$:$data");
+splice(@a, 0, 1, "rec5");       # same length
+check_contents("rec5$:$data");
+splice(@a, 0, 1, "record5");    # longer
+check_contents("record5$:$data");
+
+splice(@a, 0, 1, "r5");         # shorter
+check_contents("r5$:$data");
+splice(@a, 0, 1);               # removal
+check_contents("$data");
+splice(@a, 0, 0);               # no-op
+check_contents("$data");
+splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check_contents("r7$:rec8$:$data");
+splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec7$:record8$:rec9$:$data");
+
+splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("record9$:rec10$:$data");
+splice(@a, 0, 2);               # delete more than one
+check_contents("$data");
+
+
+# (23-42) splicing in the middle
+splice(@a, 1, 0, "rec4");
+check_contents("rec0$:rec4$:rec1$:rec2$:");
+splice(@a, 1, 1, "rec5");       # same length
+check_contents("rec0$:rec5$:rec1$:rec2$:");
+splice(@a, 1, 1, "record5");    # longer
+check_contents("rec0$:record5$:rec1$:rec2$:");
+
+splice(@a, 1, 1, "r5");         # shorter
+check_contents("rec0$:r5$:rec1$:rec2$:");
+splice(@a, 1, 1);               # removal
+check_contents("$data");
+splice(@a, 1, 0);               # no-op
+check_contents("$data");
+splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check_contents("rec0$:r7$:rec8$:rec1$:rec2$:");
+splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec0$:rec7$:record8$:rec9$:rec1$:rec2$:");
+
+splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("rec0$:record9$:rec10$:rec1$:rec2$:");
+splice(@a, 1, 2);               # delete more than one
+check_contents("$data");
+
+# (43-62) splicing at the end
+splice(@a, 3, 0, "rec4");
+check_contents("$ {data}rec4$:");
+splice(@a, 3, 1, "rec5");       # same length
+check_contents("$ {data}rec5$:");
+splice(@a, 3, 1, "record5");    # longer
+check_contents("$ {data}record5$:");
+
+splice(@a, 3, 1, "r5");         # shorter
+check_contents("$ {data}r5$:");
+splice(@a, 3, 1);               # removal
+check_contents("$data");
+splice(@a, 3, 0);               # no-op
+check_contents("$data");
+splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check_contents("$ {data}r7$:rec8$:");
+splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("$ {data}rec7$:record8$:rec9$:");
+
+splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("$ {data}record9$:rec10$:");
+splice(@a, 3, 2);               # delete more than one
+check_contents("$data");
+
+# (63-82) splicing with negative subscript
+splice(@a, -1, 0, "rec4");
+check_contents("rec0$:rec1$:rec4$:rec2$:");
+splice(@a, -1, 1, "rec5");       # same length
+check_contents("rec0$:rec1$:rec4$:rec5$:");
+splice(@a, -1, 1, "record5");    # longer
+check_contents("rec0$:rec1$:rec4$:record5$:");
+
+splice(@a, -1, 1, "r5");         # shorter
+check_contents("rec0$:rec1$:rec4$:r5$:");
+splice(@a, -1, 1);               # removal
+check_contents("rec0$:rec1$:rec4$:");
+splice(@a, -1, 0);               # no-op  
+check_contents("rec0$:rec1$:rec4$:");
+splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check_contents("rec0$:rec1$:r7$:rec8$:rec4$:");
+splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec0$:rec1$:r7$:rec8$:rec7$:record8$:rec9$:");
+
+splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("rec0$:rec1$:r7$:rec8$:record9$:rec10$:");
+splice(@a, -4, 3);               # delete more than one
+check_contents("rec0$:rec1$:rec10$:");
+
+# (83-84) scrub it all out
+splice(@a, 0, 3);
+check_contents("");
+
+# (85-86) put some back in
+splice(@a, 0, 0, "rec0", "rec1");
+check_contents("rec0$:rec1$:");
+
+# (87-88) what if we remove too many records?
+splice(@a, 0, 17);
+check_contents("");
+
+# (89-92) In the past, splicing past the end was not correctly detected
+# (1.14)
+splice(@a, 89, 3);
+check_contents("");
+splice(@a, @a, 3);
+check_contents("");
+
+# (93-96) Also we did not emulate splice's freaky behavior when inserting
+# past the end of the array (1.14)
+splice(@a, 89, 0, "I", "like", "pie");
+check_contents("I$:like$:pie$:");
+splice(@a, 89, 0, "pie pie pie");
+check_contents("I$:like$:pie$:pie pie pie$:");
+
+# (97) Splicing with too large a negative number should be fatal
+# This test ignored because it causes 5.6.1 and 5.7.3 to dump core
+# It also garbles the stack under 5.005_03 (20020401)
+# NOT MY FAULT
+if ($] > 5.007003) {
+  eval { splice(@a, -7, 0) };
+  print $@ =~ /^Modification of non-creatable array value attempted, subscript -7/
+      ? "ok $N\n" : "not ok $N \# \$\@ was '$@'\n";
+} else { 
+  print "ok $N \# skipped (versions through 5.7.3 dump core here.)\n";
+}
+$N++;
+       
+# (98-101) Test default arguments
+splice @a, 0, 0, (0..11);
+splice @a, 4;
+check_contents("0$:1$:2$:3$:");
+splice @a;
+check_contents("");
+
+# (102-103) I think there's a bug here---it will fail to clear the EOF flag
+ at a = (0..11);
+splice @a, -1, 1000;
+check_contents("0$:1$:2$:3$:4$:5$:6$:7$:8$:9$:10$:");
+
+# (104-106) make sure that undefs are treated correctly---they should
+# be converted to empty records, and should not raise any warnings.
+# (Some of these failed in 0.90.  The change to _fixrec fixed them.)
+# 20020331
+{
+  my $good = 1; my $warn;
+  # If any of these raise warnings, we have a problem.
+  local $SIG{__WARN__} = sub { $good = 0; $warn = shift(); ctrlfix($warn)};
+  local $^W = 1;
+  @a = (1);
+  splice @a, 1, 0, undef, undef, undef;
+  print $good ? "ok $N\n" : "not ok $N # $warn\n";
+  $N++; $good = 1;
+  print defined($a[2]) ? "ok $N\n" : "not ok $N\n";
+  $N++; $good = 1;
+  my @r = splice @a, 2;
+  print defined($r[0]) ? "ok $N\n" : "not ok $N\n";
+  $N++; $good = 1;
+}
+
+# (107-118) splice with negative length was treated wrong
+# 20020402 Reported by Juerd Waalboer
+ at a = (0..8) ;
+splice @a, 0, -3;
+check_contents("6$:7$:8$:");
+ at a = (0..8) ;
+splice @a, 1, -3;
+check_contents("0$:6$:7$:8$:");
+ at a = (0..8) ;
+splice @a, 7, -3;
+check_contents("0$:1$:2$:3$:4$:5$:6$:7$:8$:");
+ at a = (0..2) ;
+splice @a, 0, -3;
+check_contents("0$:1$:2$:");
+ at a = (0..2) ;
+splice @a, 1, -3;
+check_contents("0$:1$:2$:");
+ at a = (0..2) ;
+splice @a, 7, -3;
+check_contents("0$:1$:2$:");
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my $x = shift;
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/05_size.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/05_size.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/05_size.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,129 @@
+#!/usr/bin/perl
+#
+# Check FETCHSIZE and SETSIZE functions
+# PUSH POP SHIFT UNSHIFT
+#
+
+use POSIX 'SEEK_SET';
+
+my $file = "tf$$.txt";
+my ($o, $n);
+
+print "1..16\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+# 2-3 FETCHSIZE 0-length file
+open F, "> $file" or die $!;
+binmode F;
+close F;
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+
+$n = @a;
+print $n == 0 ? "ok $N\n" : "not ok $N # $n, s/b 0\n";
+$N++;
+
+# Reset everything
+undef $o;
+untie @a;
+
+my $data = "rec0$:rec1$:rec2$:";
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# 4-5 FETCHSIZE positive-length file
+$n = @a;
+print $n == 3 ? "ok $N\n" : "not ok $N # $n, s/b 0\n";
+$N++;
+
+# STORESIZE
+# (6-7) Make it longer:
+populate();
+$#a = 4;
+check_contents("$data$:$:");
+
+# (8-9) Make it longer again:
+populate();
+$#a = 6;
+check_contents("$data$:$:$:$:");
+
+# (10-11) Make it shorter:
+populate();
+$#a = 4;
+check_contents("$data$:$:");
+
+# (12-13) Make it shorter again:
+populate();
+$#a = 2;
+check_contents($data);
+
+# (14-15) Get rid of it completely:
+populate();
+$#a = -1;
+check_contents('');
+
+# (16) 20020324 I have an idea that shortening the array will not
+# expunge a cached record at the end if one is present.
+$o->defer;
+$a[3] = "record";
+my $r = $a[3];
+$#a = -1;
+$r = $a[3];
+print (! defined $r ? "ok $N\n" : "not ok $N \# was <$r>; should be UNDEF\n");
+# Turns out not to be the case---STORESIZE explicitly removes them later
+# 20020326 Well, but happily, this test did fail today.
+
+# In the past, there was a bug in STORESIZE that it didn't correctly
+# remove deleted records from the cache.  This wasn't detected
+# because these tests were all done with an empty cache.  populate()
+# will ensure that the cache is fully populated.
+sub populate {
+  my $z;
+  $z = $a[$_] for 0 .. $#a;
+}
+
+sub check_contents {
+  my $x = shift;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N \# integrity\n";
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/06_fixrec.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/06_fixrec.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/06_fixrec.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+
+print "1..5\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$a[0] = 'rec0';
+check_contents("rec0$:");
+$a[1] = "rec1$:";
+check_contents("rec0$:rec1$:");
+$a[2] = "rec2$:$:";             # should we detect this?
+check_contents("rec0$:rec1$:rec2$:$:");
+
+sub check_contents {
+  my $x = shift;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = "not ok $N # expected <$x>, got <$a>";
+    ctrlfix($msg);
+    print "$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/07_rv_splice.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/07_rv_splice.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/07_rv_splice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,205 @@
+#!/usr/bin/perl
+#
+# Check SPLICE function's return value
+# (04_splice.t checks its effect on the file)
+#
+
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+
+print "1..56\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+init_file($data);
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# (3-12) splicing at the beginning
+ at r = splice(@a, 0, 0, "rec4");
+check_result();
+ at r = splice(@a, 0, 1, "rec5");       # same length
+check_result("rec4");
+ at r = splice(@a, 0, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, 0, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 0, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 0, 0);               # no-op
+check_result();
+ at r = splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 0, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+
+# (13-22) splicing in the middle
+ at r = splice(@a, 1, 0, "rec4");
+check_result();
+ at r = splice(@a, 1, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 1, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 1, 0);               # no-op
+check_result();
+ at r = splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 1, 2);               # delete more than one
+check_result('record9','rec10');
+
+# (23-32) splicing at the end
+ at r = splice(@a, 3, 0, "rec4");
+check_result();
+ at r = splice(@a, 3, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 3, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 3, 1, "r5");         # shorter
+check_result('record5');
+ at r = splice(@a, 3, 1);               # removal
+check_result('r5');
+ at r = splice(@a, 3, 0);               # no-op
+check_result();
+ at r = splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 3, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+# (33-42) splicing with negative subscript
+ at r = splice(@a, -1, 0, "rec4");
+check_result();
+ at r = splice(@a, -1, 1, "rec5");       # same length
+check_result('rec2');
+ at r = splice(@a, -1, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, -1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, -1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, -1, 0);               # no-op  
+check_result();
+ at r = splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('rec4');
+
+ at r = splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, -4, 3);               # delete more than one
+check_result('r7', 'rec8', 'record9');
+
+# (43) scrub it all out
+ at r = splice(@a, 0, 3);
+check_result('rec0', 'rec1', 'rec10');
+
+# (44) put some back in
+ at r = splice(@a, 0, 0, "rec0", "rec1");
+check_result();
+
+# (45) what if we remove too many records?
+ at r = splice(@a, 0, 17);
+check_result('rec0', 'rec1');
+
+# (46-48) Now check the scalar context return
+splice(@a, 0, 0, qw(I like pie));
+my $r;
+$r = splice(@a, 0, 0);
+print !defined($r) ? "ok $N\n" : "not ok $N \# return should have been undef, was <$r>\n";
+$N++;
+
+$r = splice(@a, 2, 1);
+print $r eq "pie$:" ? "ok $N\n" : "not ok $N \# return should have been 'pie\\n', was <$r>\n";
+$N++;
+
+$r = splice(@a, 0, 2);
+print $r eq "like$:" ? "ok $N\n" : "not ok $N \# return should have been 'like\\n', was <$r>\n";
+$N++;
+
+# (49-50) Test default arguments
+splice @a, 0, 0, (0..11);
+ at r = splice @a, 4;
+check_result(4..11);
+ at r = splice @a;
+check_result(0..3);
+
+# (51-56) splice with negative length was treated wrong
+# 20020402 Reported by Juerd Waalboer
+ at a = (0..8) ;
+ at r = splice @a, 0, -3;
+check_result(0..5);
+ at a = (0..8) ;
+ at r = splice @a, 1, -3;
+check_result(1..5);
+ at a = (0..8) ;
+ at r = splice @a, 7, -3;
+check_result();
+ at a = (0..2) ;
+ at r = splice @a, 0, -3;
+check_result();
+ at a = (0..2) ;
+ at r = splice @a, 1, -3;
+check_result();
+ at a = (0..2) ;
+ at r = splice @a, 7, -3;
+check_result();
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+# actual results are in @r.
+# expected results are in @_
+sub check_result {
+  my @x = @_;
+  s/$:$// for @r;
+  my $good = 1;
+  $good = 0 unless @r == @x;
+  for my $i (0 .. $#r) {
+    $good = 0 unless $r[$i] eq $x[$i];
+  }
+  print $good ? "ok $N\n" : "not ok $N \# was (@r); should be (@x)\n";
+  $N++;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/08_ro.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/08_ro.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/08_ro.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,86 @@
+#!/usr/bin/perl
+#
+# Make sure it works to open the file in read-only mode
+#
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+
+print "1..13\n";
+
+my $N = 1;
+use Tie::File;
+use Fcntl 'O_RDONLY';
+print "ok $N\n"; $N++;
+
+my @items = qw(Gold Frankincense Myrrh Ivory Apes Peacocks);
+init_file(join $:, @items, '');
+
+my $o = tie @a, 'Tie::File', $file, mode => O_RDONLY, autochomp => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$#a == $#items ? print "ok $N\n" : print "not ok $N\n";
+$N++;
+
+for my $i (0..$#items) {
+  ("$items[$i]$:" eq $a[$i]) ? print "ok $N\n" : print "not ok $N\n";
+  $N++;
+}
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+undef $o; untie @a;
+my $badrec = "Malformed";
+# (10-13) When a record lacks the record seprator, we sneakily try
+# to fix it.  How does that work when the file is read-only?
+if (setup_badly_terminated_file(4)) {
+  my $good = 1;
+  my $warn;
+  local $SIG{__WARN__} = sub { $good = 0; ctrlfix($warn = shift); };
+  local $^W = 1;
+  my $o = tie @a, 'Tie::File', $file, mode => O_RDONLY, autochomp => 0
+    or die "Couldn't tie $file: $!";
+
+  print $a[0] eq "Malformed$:" ? "ok $N\n" : "not ok $N\n";  $N++;
+  print $good ? "ok $N\n" : "not ok $N # $warn\n";  $good = 1; $N++;
+  print $a[0] eq "Malformed$:" ? "ok $N\n" : "not ok $N\n";  $N++;
+  print $good ? "ok $N\n" : "not ok $N # $warn\n";  $good = 1; $N++;
+}
+
+sub setup_badly_terminated_file {
+  my $NTESTS = shift;
+  open F, "> $file" or die "Couldn't open $file: $!";
+  binmode F;
+  print F $badrec;
+  close F;
+  unless (-s $file == length $badrec) {
+    for (1 .. $NTESTS) {
+      print "ok $N \# skipped - can't create improperly terminated file\n";
+      $N++;
+    }
+    return;
+  }
+  return 1;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/09_gen_rs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/09_gen_rs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/09_gen_rs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,225 @@
+#!/usr/bin/perl
+
+my $file = "tf$$.txt";
+
+print "1..59\n";
+
+use Fcntl 'O_RDONLY';
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$RECSEP = 'blah';
+my $o = tie @a, 'Tie::File', $file, 
+    recsep => $RECSEP, autochomp => 0, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+
+# 3-4 create
+$a[0] = 'rec0';
+check_contents("rec0");
+
+# 5-8 append
+$a[1] = 'rec1';
+check_contents("rec0", "rec1");
+$a[2] = 'rec2';
+check_contents("rec0", "rec1", "rec2");
+
+# 9-14 same-length alterations
+$a[0] = 'new0';
+check_contents("new0", "rec1", "rec2");
+$a[1] = 'new1';
+check_contents("new0", "new1", "rec2");
+$a[2] = 'new2';
+check_contents("new0", "new1", "new2");
+
+# 15-24 lengthening alterations
+$a[0] = 'long0';
+check_contents("long0", "new1", "new2");
+$a[1] = 'long1';
+check_contents("long0", "long1", "new2");
+$a[2] = 'long2';
+check_contents("long0", "long1", "long2");
+$a[1] = 'longer1';
+check_contents("long0", "longer1", "long2");
+$a[0] = 'longer0';
+check_contents("longer0", "longer1", "long2");
+
+# 25-34 shortening alterations, including truncation
+$a[0] = 'short0';
+check_contents("short0", "longer1", "long2");
+$a[1] = 'short1';
+check_contents("short0", "short1", "long2");
+$a[2] = 'short2';
+check_contents("short0", "short1", "short2");
+$a[1] = 'sh1';
+check_contents("short0", "sh1", "short2");
+$a[0] = 'sh0';
+check_contents("sh0", "sh1", "short2");
+
+# (35-38) file with holes
+$a[4] = 'rec4';
+check_contents("sh0", "sh1", "short2", "", "rec4");
+$a[3] = 'rec3';
+check_contents("sh0", "sh1", "short2", "rec3", "rec4");
+
+# (39-40) zero out file
+ at a = ();
+check_contents();
+
+# (41-42) insert into the middle of an empty file
+$a[3] = "rec3";
+check_contents("", "", "", "rec3");
+
+# (43-47) 20020326 You thought there would be a bug in STORE where if
+# a cached record was false, STORE wouldn't see it at all.  Yup, there is,
+# and adding the appropriate defined() test fixes the problem.
+undef $o;  untie @a;  1 while unlink $file;
+$RECSEP = '0';
+$o = tie @a, 'Tie::File', $file, 
+    recsep => $RECSEP, autochomp => 0, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+$#a = 2;
+my $z = $a[1];                  # caches "0"
+$a[2] = "oops";
+check_contents("", "", "oops");
+$a[1] = "bah";
+check_contents("", "bah", "oops");
+undef $o; untie @a;
+
+# (48-56) 20020331 Make sure we correctly handle the case where the final
+# record of the file is not properly terminated, Through version 0.90,
+# we would mangle the file.
+my $badrec = "Malformed";
+$: = $RECSEP = Tie::File::_default_recsep();
+# (48-50)
+if (setup_badly_terminated_file(3)) {
+  $o = tie @a, 'Tie::File', $file,
+    recsep => $RECSEP, autochomp => 0, autodefer => 0
+    or die "Couldn't tie file: $!";
+  my $z = $a[0];
+  print $z eq "$badrec$:" ? "ok $N\n" : 
+                        "not ok $N \# got $z, expected $badrec\n";
+  $N++;
+  push @a, "next";
+  check_contents($badrec, "next");
+}
+# (51-52)
+if (setup_badly_terminated_file(2)) {
+  $o = tie @a, 'Tie::File', $file,
+    recsep => $RECSEP, autochomp => 0, autodefer => 0
+    or die "Couldn't tie file: $!";
+  splice @a, 1, 0, "x", "y";
+  check_contents($badrec, "x", "y");
+}
+# (53-56)
+if (setup_badly_terminated_file(4)) {
+  $o = tie @a, 'Tie::File', $file,
+    recsep => $RECSEP, autochomp => 0, autodefer => 0
+    or die "Couldn't tie file: $!";
+  my @r = splice @a, 0, 1, "x", "y";
+  my $n = @r;
+  print $n == 1 ? "ok $N\n" : "not ok $N \# expected 1 elt, got $n\n";
+  $N++;
+  print $r[0] eq "$badrec$:" ? "ok $N\n"
+    : "not ok $N \# expected <$badrec>, got <$r[0]>\n";
+  $N++;
+  check_contents("x", "y");
+}
+
+# (57-58) 20020402 The modification would have failed if $\ were set wrong.
+# I hate $\.
+if (setup_badly_terminated_file(2)) {
+  $o = tie @a, 'Tie::File', $file,
+    recsep => $RECSEP, autochomp => 0, autodefer => 0
+    or die "Couldn't tie file: $!";
+  { local $\ = "I hate \$\\.";
+    my $z = $a[0];
+  }
+  check_contents($badrec);
+}
+
+# (59) 20030527 Tom Christiansen pointed out that FETCH returns the wrong
+# data on the final record of an unterminated file if the file is opened
+# in read-only mode.  Note that the $#a is necessary here.
+# There's special-case code to fix the final record when it is read normally.
+# But the $#a forces it to be read from the cache, which skips the
+# termination.
+$badrec = "world${RECSEP}hello";
+if (setup_badly_terminated_file(1)) {
+  tie(@a, "Tie::File", $file, mode => O_RDONLY, recsep => $RECSEP)
+      or die "Couldn't tie file: $!";
+  my $z = $#a;
+  $z = $a[1];
+  print $z eq "hello" ? "ok $N\n" : 
+      "not ok $N \# got $z, expected hello\n";
+  $N++;
+}
+
+sub setup_badly_terminated_file {
+  my $NTESTS = shift;
+  open F, "> $file" or die "Couldn't open $file: $!";
+  binmode F;
+  print F $badrec;
+  close F;
+  unless (-s $file == length $badrec) {
+    for (1 .. $NTESTS) {
+      print "ok $N \# skipped - can't create improperly terminated file\n";
+      $N++;
+    }
+    return;
+  }
+  return 1;
+}
+
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $RECSEP, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = "# expected <$x>, got <$a>";
+    ctrlfix($msg);
+    print "not ok $N $msg\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  for (0.. $#c) {
+    unless ($a[$_] eq "$c[$_]$RECSEP") {
+      $msg = "expected $c[$_]$RECSEP, got $a[$_]";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # fetch $msg\n";
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/10_splice_rs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/10_splice_rs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/10_splice_rs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,215 @@
+#!/usr/bin/perl
+#
+# Check SPLICE function's effect on the file
+# (07_rv_splice.t checks its return value)
+#
+# Each call to 'check_contents' actually performs two tests.
+# First, it calls the tied object's own 'check_integrity' method,
+# which makes sure that the contents of the read cache and offset tables
+# accurately reflect the contents of the file.  
+# Then, it checks the actual contents of the file against the expected
+# contents.
+
+use POSIX 'SEEK_SET';
+
+my $file = "tf$$.txt";
+my $data = "rec0blahrec1blahrec2blah";
+
+print "1..101\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+init_file($data);
+
+my $o = tie @a, 'Tie::File', $file, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# (3-22) splicing at the beginning
+splice(@a, 0, 0, "rec4");
+check_contents("rec4blah$data");
+splice(@a, 0, 1, "rec5");       # same length
+check_contents("rec5blah$data");
+splice(@a, 0, 1, "record5");    # longer
+check_contents("record5blah$data");
+
+splice(@a, 0, 1, "r5");         # shorter
+check_contents("r5blah$data");
+splice(@a, 0, 1);               # removal
+check_contents("$data");
+splice(@a, 0, 0);               # no-op
+check_contents("$data");
+splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check_contents("r7blahrec8blah$data");
+splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec7blahrecord8blahrec9blah$data");
+
+splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("record9blahrec10blah$data");
+splice(@a, 0, 2);               # delete more than one
+check_contents("$data");
+
+
+# (23-42) splicing in the middle
+splice(@a, 1, 0, "rec4");
+check_contents("rec0blahrec4blahrec1blahrec2blah");
+splice(@a, 1, 1, "rec5");       # same length
+check_contents("rec0blahrec5blahrec1blahrec2blah");
+splice(@a, 1, 1, "record5");    # longer
+check_contents("rec0blahrecord5blahrec1blahrec2blah");
+
+splice(@a, 1, 1, "r5");         # shorter
+check_contents("rec0blahr5blahrec1blahrec2blah");
+splice(@a, 1, 1);               # removal
+check_contents("$data");
+splice(@a, 1, 0);               # no-op
+check_contents("$data");
+splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check_contents("rec0blahr7blahrec8blahrec1blahrec2blah");
+splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec0blahrec7blahrecord8blahrec9blahrec1blahrec2blah");
+
+splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("rec0blahrecord9blahrec10blahrec1blahrec2blah");
+splice(@a, 1, 2);               # delete more than one
+check_contents("$data");
+
+# (43-62) splicing at the end
+splice(@a, 3, 0, "rec4");
+check_contents("$ {data}rec4blah");
+splice(@a, 3, 1, "rec5");       # same length
+check_contents("$ {data}rec5blah");
+splice(@a, 3, 1, "record5");    # longer
+check_contents("$ {data}record5blah");
+
+splice(@a, 3, 1, "r5");         # shorter
+check_contents("$ {data}r5blah");
+splice(@a, 3, 1);               # removal
+check_contents("$data");
+splice(@a, 3, 0);               # no-op
+check_contents("$data");
+splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check_contents("$ {data}r7blahrec8blah");
+splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("$ {data}rec7blahrecord8blahrec9blah");
+
+splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("$ {data}record9blahrec10blah");
+splice(@a, 3, 2);               # delete more than one
+check_contents("$data");
+
+# (63-82) splicing with negative subscript
+splice(@a, -1, 0, "rec4");
+check_contents("rec0blahrec1blahrec4blahrec2blah");
+splice(@a, -1, 1, "rec5");       # same length
+check_contents("rec0blahrec1blahrec4blahrec5blah");
+splice(@a, -1, 1, "record5");    # longer
+check_contents("rec0blahrec1blahrec4blahrecord5blah");
+
+splice(@a, -1, 1, "r5");         # shorter
+check_contents("rec0blahrec1blahrec4blahr5blah");
+splice(@a, -1, 1);               # removal
+check_contents("rec0blahrec1blahrec4blah");
+splice(@a, -1, 0);               # no-op  
+check_contents("rec0blahrec1blahrec4blah");
+splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check_contents("rec0blahrec1blahr7blahrec8blahrec4blah");
+splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_contents("rec0blahrec1blahr7blahrec8blahrec7blahrecord8blahrec9blah");
+
+splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check_contents("rec0blahrec1blahr7blahrec8blahrecord9blahrec10blah");
+splice(@a, -4, 3);               # delete more than one
+check_contents("rec0blahrec1blahrec10blah");
+
+# (83-84) scrub it all out
+splice(@a, 0, 3);
+check_contents("");
+
+# (85-86) put some back in
+splice(@a, 0, 0, "rec0", "rec1");
+check_contents("rec0blahrec1blah");
+
+# (87-88) what if we remove too many records?
+splice(@a, 0, 17);
+check_contents("");
+
+# (89-92) In the past, splicing past the end was not correctly detected
+# (0.14)
+splice(@a, 89, 3);
+check_contents("");
+splice(@a, @a, 3);
+check_contents("");
+
+# (93-96) Also we did not emulate splice's freaky behavior when inserting
+# past the end of the array (1.14)
+splice(@a, 89, 0, "I", "like", "pie");
+check_contents("Iblahlikeblahpieblah");
+splice(@a, 89, 0, "pie pie pie");
+check_contents("Iblahlikeblahpieblahpie pie pieblah");
+
+# (97) Splicing with too large a negative number should be fatal
+# This test ignored because it causes 5.6.1 and 5.7.3 to dump core
+# It also garbles the stack under 5.005_03 (20020401)
+# NOT MY FAULT
+if ($] > 5.007003) {
+  eval { splice(@a, -7, 0) };
+  print $@ =~ /^Modification of non-creatable array value attempted, subscript -7/
+      ? "ok $N\n" : "not ok $N \# \$\@ was '$@'\n";
+} else { 
+  print "ok $N \# skipped (versions through 5.7.3 dump core here.)\n";
+}
+$N++;
+
+# (98-101) Test default arguments
+splice @a, 0, 0, (0..11);
+splice @a, 4;
+check_contents("0blah1blah2blah3blah");
+splice @a;
+check_contents("");
+
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+sub check_contents {
+  my $x = shift;
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/11_rv_splice_rs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/11_rv_splice_rs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/11_rv_splice_rs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+#
+# Check SPLICE function's return value
+# (04_splice.t checks its effect on the file)
+#
+
+my $file = "tf$$.txt";
+my $data = "rec0blahrec1blahrec2blah";
+
+print "1..50\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+init_file($data);
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# (3-12) splicing at the beginning
+ at r = splice(@a, 0, 0, "rec4");
+check_result();
+ at r = splice(@a, 0, 1, "rec5");       # same length
+check_result("rec4");
+ at r = splice(@a, 0, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, 0, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 0, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 0, 0);               # no-op
+check_result();
+ at r = splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 0, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+
+# (13-22) splicing in the middle
+ at r = splice(@a, 1, 0, "rec4");
+check_result();
+ at r = splice(@a, 1, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 1, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 1, 0);               # no-op
+check_result();
+ at r = splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 1, 2);               # delete more than one
+check_result('record9','rec10');
+
+# (23-32) splicing at the end
+ at r = splice(@a, 3, 0, "rec4");
+check_result();
+ at r = splice(@a, 3, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 3, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 3, 1, "r5");         # shorter
+check_result('record5');
+ at r = splice(@a, 3, 1);               # removal
+check_result('r5');
+ at r = splice(@a, 3, 0);               # no-op
+check_result();
+ at r = splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 3, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+# (33-42) splicing with negative subscript
+ at r = splice(@a, -1, 0, "rec4");
+check_result();
+ at r = splice(@a, -1, 1, "rec5");       # same length
+check_result('rec2');
+ at r = splice(@a, -1, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, -1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, -1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, -1, 0);               # no-op  
+check_result();
+ at r = splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('rec4');
+
+ at r = splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, -4, 3);               # delete more than one
+check_result('r7', 'rec8', 'record9');
+
+# (43) scrub it all out
+ at r = splice(@a, 0, 3);
+check_result('rec0', 'rec1', 'rec10');
+
+# (44) put some back in
+ at r = splice(@a, 0, 0, "rec0", "rec1");
+check_result();
+
+# (45) what if we remove too many records?
+ at r = splice(@a, 0, 17);
+check_result('rec0', 'rec1');
+
+# (46-48) Now check the scalar context return
+splice(@a, 0, 0, qw(I like pie));
+my $r;
+$r = splice(@a, 0, 0);
+print !defined($r) ? "ok $N\n" : "not ok $N \# return should have been undef\n";
+$N++;
+
+$r = splice(@a, 2, 1);
+print $r eq "pieblah" ? "ok $N\n" : "not ok $N \# return should have been 'pie'\n";
+$N++;
+
+$r = splice(@a, 0, 2);
+print $r eq "likeblah" ? "ok $N\n" : "not ok $N \# return should have been 'like'\n";
+$N++;
+
+# (49-50) Test default arguments
+splice @a, 0, 0, (0..11);
+ at r = splice @a, 4;
+check_result(4..11);
+ at r = splice @a;
+check_result(0..3);
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+# actual results are in @r.
+# expected results are in @_
+sub check_result {
+  my @x = @_;
+  s/blah$// for @r;
+  my $good = 1;
+  $good = 0 unless @r == @x;
+  for my $i (0 .. $#r) {
+    $good = 0 unless $r[$i] eq $x[$i];
+  }
+  print $good ? "ok $N\n" : "not ok $N \# was (@r); should be (@x)\n";
+  $N++;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/12_longfetch_rs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/12_longfetch_rs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/12_longfetch_rs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,41 @@
+#!/usr/bin/perl
+#
+# Make sure we can fetch a record in the middle of the file
+# before we've ever looked at any records before it
+#
+# (tests _fill_offsets_to() )
+#
+
+my $file = "tf$$.txt";
+my $data = "rec0blahrec1blahrec2blah";
+
+print "1..5\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# 3-5
+for (2, 1, 0) {
+  print $a[$_] eq "rec${_}blah" ? "ok $N\n" : "not ok $N # rec=$a[$_] ?\n";
+  $N++;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/13_size_rs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/13_size_rs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/13_size_rs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,95 @@
+#!/usr/bin/perl
+#
+# Check FETCHSIZE and SETSIZE functions
+# PUSH POP SHIFT UNSHIFT
+#
+
+use POSIX 'SEEK_SET';
+
+my $file = "tf$$.txt";
+my $data = "rec0blahrec1blahrec2blah";
+my ($o, $n);
+
+print "1..10\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+# 2-3 FETCHSIZE 0-length file
+open F, "> $file" or die $!;
+close F;
+$o = tie @a, 'Tie::File', $file, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+$n = @a;
+print $n == 0 ? "ok $N\n" : "not ok $N # $n, s/b 0\n";
+$N++;
+
+# Reset everything
+undef $o;
+untie @a;
+
+# 4-5 FETCHSIZE positive-length file
+open F, "> $file" or die $!;
+print F $data;
+close F;
+$o = tie @a, 'Tie::File', $file, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+$n = @a;
+print $n == 3 ? "ok $N\n" : "not ok $N # $n, s/b 0\n";
+$N++;
+
+# STORESIZE
+# 6 Make it longer:
+$#a = 4;
+check_contents("${data}blahblah");
+
+# 7 Make it longer again:
+$#a = 6;
+check_contents("${data}blahblahblahblah");
+
+# 8 Make it shorter:
+$#a = 4;
+check_contents("${data}blahblah");
+
+# 9 Make it shorter again:
+$#a = 2;
+check_contents($data);
+
+# 10 Get rid of it completely:
+$#a = -1;
+check_contents('');
+
+
+sub check_contents {
+  my $x = shift;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/14_lock.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/14_lock.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/14_lock.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+#
+# Check flock() feature
+#
+# This isn't a real test; it just checks to make sure we can call the method.
+# It doesn't even check to make sure that the default behavior
+# (LOCK_EX) is occurring.  This is because I don't know how to write a good
+# portable test for flocking.  I checked the Perl core distribution,
+# and found that Perl doesn't test flock either!
+
+BEGIN {
+  eval { flock STDOUT, 0 };
+  if ($@ && $@ =~ /unimplemented/) {
+    print "1..0\n";
+    exit;
+  }
+}
+
+use Fcntl ':flock';             # This works at least back to 5.004_04
+
+my $file = "tf$$.txt";
+my ($o, $n);
+my @a;
+
+print "1..4\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+# 2-4  Who the heck knows?
+open F, "> $file" or die $!;
+close F;
+$o = tie @a, 'Tie::File', $file, recsep => 'blah';
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+print $o->flock() ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+print $o->flock(LOCK_UN) ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/15_pushpop.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/15_pushpop.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/15_pushpop.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,135 @@
+#!/usr/bin/perl
+#
+# Check PUSH, POP, SHIFT, and UNSHIFT 
+#
+# Each call to 'check_contents' actually performs two tests.
+# First, it calls the tied object's own 'check_integrity' method,
+# which makes sure that the contents of the read cache and offset tables
+# accurately reflect the contents of the file.  
+# Then, it checks the actual contents of the file against the expected
+# contents.
+
+use POSIX 'SEEK_SET';
+
+my $file = "tf$$.txt";
+1 while unlink $file;
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+
+print "1..38\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+my ($n, @r);
+
+
+# (3-11) PUSH tests
+$n = push @a, "rec0", "rec1", "rec2";
+check_contents($data);
+print $n == 3 ? "ok $N\n" : "not ok $N # size is $n, should be 3\n";
+$N++;
+
+$n = push @a, "rec3", "rec4$:";
+check_contents("$ {data}rec3$:rec4$:");
+print $n == 5 ? "ok $N\n" : "not ok $N # size is $n, should be 5\n";
+$N++;
+
+# Trivial push
+$n = push @a, ();
+check_contents("$ {data}rec3$:rec4$:");
+print $n == 5 ? "ok $N\n" : "not ok $N # size is $n, should be 5\n";
+$N++;
+
+# (12-20) POP tests
+$n = pop @a;
+check_contents("$ {data}rec3$:");
+print $n eq "rec4$:" ? "ok $N\n" : "not ok $N # last rec is $n, should be rec4\n";
+$N++;
+
+# Presumably we have already tested this to death
+splice(@a, 1, 3);
+$n = pop @a;
+check_contents("");
+print $n eq "rec0$:" ? "ok $N\n" : "not ok $N # last rec is $n, should be rec0\n";
+$N++;
+
+$n = pop @a;
+check_contents("");
+print ! defined $n ? "ok $N\n" : "not ok $N # last rec should be undef, is $n\n";
+$N++;
+
+
+# (21-29) UNSHIFT tests
+$n = unshift @a, "rec0", "rec1", "rec2";
+check_contents($data);
+print $n == 3 ? "ok $N\n" : "not ok $N # size is $n, should be 3\n";
+$N++;
+
+$n = unshift @a, "rec3", "rec4$:";
+check_contents("rec3$:rec4$:$data");
+print $n == 5 ? "ok $N\n" : "not ok $N # size is $n, should be 5\n";
+$N++;
+
+# Trivial unshift
+$n = unshift @a, ();
+check_contents("rec3$:rec4$:$data");
+print $n == 5 ? "ok $N\n" : "not ok $N # size is $n, should be 5\n";
+$N++;
+
+# (30-38) SHIFT tests
+$n = shift @a;
+check_contents("rec4$:$data");
+print $n eq "rec3$:" ? "ok $N\n" : "not ok $N # last rec is $n, should be rec3\n";
+$N++;
+
+# Presumably we have already tested this to death
+splice(@a, 1, 3);
+$n = shift @a;
+check_contents("");
+print $n eq "rec4$:" ? "ok $N\n" : "not ok $N # last rec is $n, should be rec4\n";
+$N++;
+
+$n = shift @a;
+check_contents("");
+print ! defined $n ? "ok $N\n" : "not ok $N # last rec should be undef, is $n\n";
+$N++;
+
+
+sub check_contents {
+  my $x = shift;
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/16_handle.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/16_handle.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/16_handle.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,160 @@
+#!/usr/bin/perl
+#
+# Basic operation, initializing the object from an already-open handle
+# instead of from a filename
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+
+if ($^O =~ /vms/i) {
+  print "1..0\n";
+  exit;
+}
+
+print "1..39\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+use Fcntl 'O_CREAT', 'O_RDWR';
+sysopen F, $file, O_CREAT | O_RDWR 
+  or die "Couldn't create temp file $file: $!; aborting";
+binmode F;
+
+my $o = tie @a, 'Tie::File', \*F, autochomp => 0, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# 3-4 create
+$a[0] = 'rec0';
+check_contents("rec0");
+
+# 5-8 append
+$a[1] = 'rec1';
+check_contents("rec0", "rec1");
+$a[2] = 'rec2';
+check_contents("rec0", "rec1", "rec2");
+
+# 9-14 same-length alterations
+$a[0] = 'new0';
+check_contents("new0", "rec1", "rec2");
+$a[1] = 'new1';
+check_contents("new0", "new1", "rec2");
+$a[2] = 'new2';
+check_contents("new0", "new1", "new2");
+
+# 15-24 lengthening alterations
+$a[0] = 'long0';
+check_contents("long0", "new1", "new2");
+$a[1] = 'long1';
+check_contents("long0", "long1", "new2");
+$a[2] = 'long2';
+check_contents("long0", "long1", "long2");
+$a[1] = 'longer1';
+check_contents("long0", "longer1", "long2");
+$a[0] = 'longer0';
+check_contents("longer0", "longer1", "long2");
+
+# 25-38 shortening alterations, including truncation
+$a[0] = 'short0';
+check_contents("short0", "longer1", "long2");
+$a[1] = 'short1';
+check_contents("short0", "short1", "long2");
+$a[2] = 'short2';
+check_contents("short0", "short1", "short2");
+$a[1] = 'sh1';
+check_contents("short0", "sh1", "short2");
+$a[0] = 'sh0';
+check_contents("sh0", "sh1", "short2");
+
+# file with holes
+$a[4] = 'rec4';
+check_contents("sh0", "sh1", "short2", "", "rec4");
+$a[3] = 'rec3';
+check_contents("sh0", "sh1", "short2", "rec3", "rec4");
+
+close F;
+undef $o;
+untie @a;
+
+# (39) Does it correctly detect a non-seekable handle?
+{  if ($^O =~ /^(MSWin32|dos|beos)$/) {
+     print "ok $N # skipped ($^O has broken pipe semantics)\n";
+     last;
+   }
+   if ($] < 5.006) {
+     print "ok $N # skipped - 5.005_03 panics after this test\n";
+     last;
+   }
+   my $pipe_succeeded = eval {pipe *R, *W};
+   if ($@) {
+     chomp $@;
+     print "ok $N # skipped (no pipes: $@)\n";
+     last;
+   } elsif (! $pipe_succeeded) {
+     print "ok $N # skipped (pipe call failed: $!)\n";
+     last;
+   }
+   close R;
+   $o = eval {tie @a, 'Tie::File', \*W};
+   if ($@) {
+     if ($@ =~ /filehandle does not appear to be seekable/) {
+       print "ok $N\n";
+     } else {
+       chomp $@;
+       print "not ok $N \# \$\@ is $@\n";
+     }
+   } else {
+       print "not ok $N \# passing pipe to TIEARRAY didn't abort program\n";
+   }
+   $N++;
+}
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    unless ($a[$_] eq "$c[$_]$:") {
+      $msg = "expected $c[$_]$:, got $a[$_]";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+
+

Added: vendor/perl/dist/dist/Tie-File/t/17_misc_meth.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/17_misc_meth.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/17_misc_meth.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,158 @@
+#!/usr/bin/perl
+#
+# Check miscellaneous tied-array interface methods
+# EXTEND, CLEAR, DELETE, EXISTS
+#
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+1 while unlink $file;
+
+print "1..35\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3-8) EXTEND
+$o->EXTEND(3);
+check_contents("$:$:$:");
+$o->EXTEND(4);
+check_contents("$:$:$:$:");
+$o->EXTEND(3);
+check_contents("$:$:$:$:");
+
+# (9-10) CLEAR
+ at a = ();
+check_contents("");
+
+# (11-20) EXISTS
+if ($] >= 5.006) {
+  eval << 'TESTS';
+print !exists $a[0] ? "ok $N\n" : "not ok $N\n";
+$N++;
+$a[0] = "I like pie.";
+print exists $a[0] ? "ok $N\n" : "not ok $N\n";
+$N++;
+print !exists $a[1] ? "ok $N\n" : "not ok $N\n";
+$N++;
+$a[2] = "GIVE ME PIE";
+print exists $a[0] ? "ok $N\n" : "not ok $N\n";
+$N++;
+# exists $a[1] is not defined by this module under these circumstances
+print exists $a[1] ? "ok $N\n" : "ok $N\n";
+$N++;
+print exists $a[2] ? "ok $N\n" : "not ok $N\n";
+$N++;
+print exists $a[-1] ? "ok $N\n" : "not ok $N\n";
+$N++;
+print exists $a[-2] ? "ok $N\n" : "not ok $N\n";
+$N++;
+print exists $a[-3] ? "ok $N\n" : "not ok $N\n";
+$N++;
+print !exists $a[-4] ? "ok $N\n" : "not ok $N\n";
+$N++;
+TESTS
+  } else {                      # perl 5.005 doesn't have exists $array[1]
+    for (11..20) {
+      print "ok $_ \# skipped (no exists for arrays)\n";
+          $N++;
+    }
+  }
+
+my $del;
+
+# (21-35) DELETE
+if ($] >= 5.006) {
+  eval << 'TESTS';
+$del = delete $a[0];
+check_contents("$:$:GIVE ME PIE$:");
+# 20020317 Through 0.20, the 'delete' function returned the wrong values.
+expect($del, "I like pie.");
+$del = delete $a[2];
+check_contents("$:$:");
+expect($del, "GIVE ME PIE");
+$del = delete $a[0];
+check_contents("$:$:");
+expect($del, "");
+$del = delete $a[1];
+check_contents("$:");
+expect($del, "");
+
+# 20020317 Through 0.20, we had a bug where deleting an element past the 
+# end of the array would actually extend the array to that length.
+$del = delete $a[4];
+check_contents("$:");
+expect($del, undef);
+
+
+
+TESTS
+  } else {                      # perl 5.005 doesn't have delete $array[1]
+    for (21..35) {
+      print "ok $_ \# skipped (no delete for arrays)\n";
+          $N++;
+    }
+  }
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my $x = shift;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N # $msg\n";
+  }
+  $N++;
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub expect {
+  if (@_ == 1) {
+    print $_[0] ? "ok $N\n" : "not ok $N\n";
+  } elsif (@_ == 2) {
+    my ($a, $x) = @_;
+    if    (! defined($a) && ! defined($x)) { print "ok $N\n" }
+    elsif (  defined($a) && ! defined($x)) { 
+      ctrlfix(my $msg = "expected UNDEF, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+    elsif (! defined($a) &&   defined($x)) { 
+      ctrlfix(my $msg = "expected <$x>, got UNDEF");
+      print "not ok $N \# $msg\n";
+    } elsif ($a eq $x) { print "ok $N\n" }
+    else {
+      ctrlfix(my $msg = "expected <$x>, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+  } else {
+    die "expect() got ", scalar(@_), " args, should have been 1 or 2";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+
+

Added: vendor/perl/dist/dist/Tie-File/t/18_rs_fixrec.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/18_rs_fixrec.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/18_rs_fixrec.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/bin/perl
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+$/ = "blah";
+
+print "1..5\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$a[0] = 'rec0';
+check_contents("rec0blah");
+$a[1] = "rec1blah";
+check_contents("rec0blahrec1blah");
+$a[2] = "rec2blahblah";             # should we detect this?
+check_contents("rec0blahrec1blahrec2blahblah");
+
+sub check_contents {
+  my $x = shift;
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = "not ok $N # expected <$x>, got <$a>";
+    ctrlfix($msg);
+    print "$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/19_cache.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/19_cache.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/19_cache.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,205 @@
+#!/usr/bin/perl
+#
+# Tests for various caching errors
+#
+
+$|=1;
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = join $:, "rec0" .. "rec9", "";
+my $V = $ENV{INTEGRITY};        # Verbose integrity checking?
+
+print "1..55\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+my $o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3) Through 0.18, this 'splice' call would corrupt the cache.
+my @z = @a;                     # force cache to contain all ten records
+splice @a, 0, 0, "x";
+print $o->_check_integrity($file, $V) ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# Here we redo *all* the splice tests, with populate()
+# calls before each one, to make sure that splice() does not botch the cache.
+
+# (4-14) splicing at the beginning
+check();
+splice(@a, 0, 0, "rec4");
+check();
+splice(@a, 0, 1, "rec5");       # same length
+check();
+splice(@a, 0, 1, "record5");    # longer
+check();
+splice(@a, 0, 1, "r5");         # shorter
+check();
+splice(@a, 0, 1);               # removal
+check();
+splice(@a, 0, 0);               # no-op
+check();
+
+splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 0, 2);               # delete more than one
+check();
+
+
+# (15-24) splicing in the middle
+splice(@a, 1, 0, "rec4");
+check();
+splice(@a, 1, 1, "rec5");       # same length
+check();
+splice(@a, 1, 1, "record5");    # longer
+check();
+splice(@a, 1, 1, "r5");         # shorter
+check();
+splice(@a, 1, 1);               # removal
+check();
+splice(@a, 1, 0);               # no-op
+check();
+
+splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 1, 2);               # delete more than one
+check();
+
+# (25-34) splicing at the end
+splice(@a, 3, 0, "rec4");
+check();
+splice(@a, 3, 1, "rec5");       # same length
+check();
+splice(@a, 3, 1, "record5");    # longer
+check();
+splice(@a, 3, 1, "r5");         # shorter
+check();
+splice(@a, 3, 1);               # removal
+check();
+splice(@a, 3, 0);               # no-op
+check();
+
+splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 3, 2);               # delete more than one
+check();
+
+# (35-44) splicing with negative subscript
+splice(@a, -1, 0, "rec4");
+check();
+splice(@a, -1, 1, "rec5");       # same length
+check();
+splice(@a, -1, 1, "record5");    # longer
+check();
+splice(@a, -1, 1, "r5");         # shorter
+check();
+splice(@a, -1, 1);               # removal
+check();
+splice(@a, -1, 0);               # no-op  
+check();
+
+splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, -4, 3);               # delete more than one
+check();
+
+# (45) scrub it all out
+splice(@a, 0, 3);
+check();
+
+# (46) put some back in
+splice(@a, 0, 0, "rec0", "rec1");
+check();
+
+# (47) what if we remove too many records?
+splice(@a, 0, 17);
+check();
+
+# (48-49) In the past, splicing past the end was not correctly detected
+# (1.14)
+splice(@a, 89, 3);
+check();
+splice(@a, @a, 3);
+check();
+
+# (50-51) Also we did not emulate splice's freaky behavior when inserting
+# past the end of the array (1.14)
+splice(@a, 89, 0, "I", "like", "pie");
+check();
+splice(@a, 89, 0, "pie pie pie");
+check();
+
+# (52-54) Test default arguments
+splice @a, 0, 0, (0..11);
+check();
+splice @a, 4;
+check();
+splice @a;
+check();
+    
+# (55) This was broken on 20030507 when you moved the cache management
+# stuff out of _oadjust back into _splice without also putting it back 
+# into _store.
+ at a = (0..11);
+check();
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+sub check {
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+  repopulate();
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+sub repopulate {
+  $o->{cache}->empty;
+  my @z = @a;                   # refill the cache with correct data
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+
+
+

Added: vendor/perl/dist/dist/Tie-File/t/20_cache_full.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/20_cache_full.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/20_cache_full.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,228 @@
+#!/usr/bin/perl
+#
+# Tests for various caching errors
+#
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = join $:, "record0" .. "record9", "";
+my $V = $ENV{INTEGRITY};        # Verbose integrity checking?
+
+print "1..111\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+# Limit cache size to 30 bytes 
+my $MAX = 30;
+#  -- that's enough space for 3 records, but not 4, on both \n and \r\n systems
+my $o = tie @a, 'Tie::File', $file, memory => $MAX, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3-5) Let's see if data was properly expired from the cache
+my @z = @a;                     # force cache to contain all ten records
+# It should now contain only the *last* three records, 7, 8, and 9
+{
+  my $x = "7 8 9";
+  my $a = join " ", sort $o->{cache}->ckeys;
+  if ($a eq $x) { print "ok $N\n" }
+  else { print "not ok $N # cache keys were <$a>; expected <$x>\n" }
+  $N++;
+}
+check();
+
+# Here we redo *all* the splice tests, with populate()
+# calls before each one, to make sure that splice() does not botch the cache.
+
+# (6-25) splicing at the beginning
+splice(@a, 0, 0, "rec4");
+check();
+splice(@a, 0, 1, "rec5");       # same length
+check();
+splice(@a, 0, 1, "record5");    # longer
+check();
+splice(@a, 0, 1, "r5");         # shorter
+check();
+splice(@a, 0, 1);               # removal
+check();
+splice(@a, 0, 0);               # no-op
+check();
+
+splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 0, 2);               # delete more than one
+check();
+
+
+# (26-45) splicing in the middle
+splice(@a, 1, 0, "rec4");
+check();
+splice(@a, 1, 1, "rec5");       # same length
+check();
+splice(@a, 1, 1, "record5");    # longer
+check();
+splice(@a, 1, 1, "r5");         # shorter
+check();
+splice(@a, 1, 1);               # removal
+check();
+splice(@a, 1, 0);               # no-op
+check();
+
+splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 1, 2);               # delete more than one
+check();
+
+# (46-65) splicing at the end
+splice(@a, 3, 0, "rec4");
+check();
+splice(@a, 3, 1, "rec5");       # same length
+check();
+splice(@a, 3, 1, "record5");    # longer
+check();
+splice(@a, 3, 1, "r5");         # shorter
+check();
+splice(@a, 3, 1);               # removal
+check();
+splice(@a, 3, 0);               # no-op
+check();
+
+splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, 3, 2);               # delete more than one
+check();
+
+# (66-85) splicing with negative subscript
+splice(@a, -1, 0, "rec4");
+check();
+splice(@a, -1, 1, "rec5");       # same length
+check();
+splice(@a, -1, 1, "record5");    # longer
+check();
+splice(@a, -1, 1, "r5");         # shorter
+check();
+splice(@a, -1, 1);               # removal
+check();
+splice(@a, -1, 0);               # no-op  
+check();
+
+splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check();
+splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check();
+splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check();
+splice(@a, -4, 3);               # delete more than one
+check();
+
+# (86-87) scrub it all out
+splice(@a, 0, 3);
+check();
+
+# (88-89) put some back in
+splice(@a, 0, 0, "rec0", "rec1");
+check();
+
+# (90-91) what if we remove too many records?
+splice(@a, 0, 17);
+check();
+
+# (92-95) In the past, splicing past the end was not correctly detected
+# (1.14)
+splice(@a, 89, 3);
+check();
+splice(@a, @a, 3);
+check();
+
+# (96-99) Also we did not emulate splice's freaky behavior when inserting
+# past the end of the array (1.14)
+splice(@a, 89, 0, "I", "like", "pie");
+check();
+splice(@a, 89, 0, "pie pie pie");
+check();
+
+# (100-105) Test default arguments
+splice @a, 0, 0, (0..11);
+check();
+splice @a, 4;
+check();
+splice @a;
+check();
+
+# (106-111) One last set of tests.  I don't know what state the cache
+# is in now.  But if I read any three records, those three records are
+# what should be in the cache, and nothing else.
+ at a = "record0" .. "record9";
+check(); # In 0.18 #107 fails here--STORE was not flushing the cache when
+         # replacing an old cached record with a longer one
+for (5, 6, 1) { my $z = $a[$_] }
+{
+  my $x = "5 6 1";
+  my $a = join " ", $o->{cache}->_produce_lru;
+  if ($a eq $x) { print "ok $N\n" }
+  else { print "not ok $N # LRU was <$a>; expected <$x>\n" }
+  $N++;
+  $x = "1 5 6";
+  $a = join " ", sort $o->{cache}->ckeys;
+  if ($a eq $x) { print "ok $N\n" }
+  else { print "not ok $N # cache keys were <$a>; expected <$x>\n" }
+  $N++;
+}
+check();
+
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+sub check {
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  my $b = $o->{cache}->bytes;
+  print $b <= $MAX 
+    ? "ok $N\n" 
+    : "not ok $N # $b bytes cached, should be <= $MAX\n";
+  $N++;
+}
+
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+
+
+

Added: vendor/perl/dist/dist/Tie-File/t/21_win32.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/21_win32.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/21_win32.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+#
+# Formerly, on a Win32 system, Tie::File would create files with
+# \n-terminated records instead of \r\n-terminated.  The tests never
+# picked this up because they were using $/ everywhere, and $/ is \n
+# on windows systems.
+#
+# These tests (Win32 only) make sure that the file had \r\n as it should.
+
+my $file = "tf$$.txt";
+
+unless ($^O =~ /^(MSWin32|dos)$/) {
+  print "1..0\n";
+  exit;
+}
+
+
+print "1..3\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# (3) Make sure that on Win32 systems, the file is written with \r\n by default
+ at a = qw(fish dog carrot);
+undef $o;
+untie @a;
+open F, "< $file" or die "Couldn't open file $file: $!";
+binmode F;
+my $a = do {local $/ ; <F> };
+my $x = "fish\r\ndog\r\ncarrot\r\n" ;
+if ($a eq $x) {
+  print "ok $N\n";
+} else {
+  ctrlfix(my $msg = "expected <$x>, got <$a>");
+  print "not ok $N # $msg\n";
+}
+
+close F;
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/22_autochomp.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/22_autochomp.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/22_autochomp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,175 @@
+#!/usr/bin/perl
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+
+print "1..71\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 1, autodefer => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# 3-5 create
+$a[0] = 'rec0';
+check_contents("rec0");
+
+# 6-11 append
+$a[1] = 'rec1';
+check_contents("rec0", "rec1");
+$a[2] = 'rec2';
+check_contents("rec0", "rec1", "rec2");
+
+# 12-20 same-length alterations
+$a[0] = 'new0';
+check_contents("new0", "rec1", "rec2");
+$a[1] = 'new1';
+check_contents("new0", "new1", "rec2");
+$a[2] = 'new2';
+check_contents("new0", "new1", "new2");
+
+# 21-35 lengthening alterations
+$a[0] = 'long0';
+check_contents("long0", "new1", "new2");
+$a[1] = 'long1';
+check_contents("long0", "long1", "new2");
+$a[2] = 'long2';
+check_contents("long0", "long1", "long2");
+$a[1] = 'longer1';
+check_contents("long0", "longer1", "long2");
+$a[0] = 'longer0';
+check_contents("longer0", "longer1", "long2");
+
+# 36-50 shortening alterations, including truncation
+$a[0] = 'short0';
+check_contents("short0", "longer1", "long2");
+$a[1] = 'short1';
+check_contents("short0", "short1", "long2");
+$a[2] = 'short2';
+check_contents("short0", "short1", "short2");
+$a[1] = 'sh1';
+check_contents("short0", "sh1", "short2");
+$a[0] = 'sh0';
+check_contents("sh0", "sh1", "short2");
+
+# (51-56) file with holes
+$a[4] = 'rec4';
+check_contents("sh0", "sh1", "short2", "", "rec4");
+$a[3] = 'rec3';
+check_contents("sh0", "sh1", "short2", "rec3", "rec4");
+
+# (57-59) zero out file
+ at a = ();
+check_contents();
+
+# (60-62) insert into the middle of an empty file
+$a[3] = "rec3";
+check_contents("", "", "", "rec3");
+
+# (63-68) Test the ->autochomp() method
+ at a = qw(Gold Frankincense Myrrh);
+my $ac;
+$ac = $o->autochomp();
+expect($ac);
+# See if that accidentally changed it
+$ac = $o->autochomp();
+expect($ac);
+# Now clear it
+$ac = $o->autochomp(0);
+expect($ac);
+expect(join("-", @a), "Gold$:-Frankincense$:-Myrrh$:");
+# Now set it again
+$ac = $o->autochomp(1);
+expect(!$ac);
+expect(join("-", @a), "Gold-Frankincense-Myrrh");
+
+# (69) Does 'splice' work correctly with autochomp?
+my @sr;
+ at sr = splice @a, 0, 2;
+expect(join("-", @sr), "Gold-Frankincense");
+
+# (70-71) Didn't you forget that fetch may return an unchomped cached record?
+$a1 = $a[0];                    # populate cache
+$a2 = $a[0];
+expect($a1, "Myrrh");
+expect($a2, "Myrrh");
+# Actually no, you didn't---_fetch might return such a record, but 
+# the chomping is done by FETCH.
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq $c[$_]) {
+      $msg = "expected <$c[$_]>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub expect {
+  if (@_ == 1) {
+    print $_[0] ? "ok $N\n" : "not ok $N\n";
+  } elsif (@_ == 2) {
+    my ($a, $x) = @_;
+    if    (! defined($a) && ! defined($x)) { print "ok $N\n" }
+    elsif (  defined($a) && ! defined($x)) { 
+      ctrlfix(my $msg = "expected UNDEF, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+    elsif (! defined($a) &&   defined($x)) { 
+      ctrlfix(my $msg = "expected <$x>, got UNDEF");
+      print "not ok $N \# $msg\n";
+    } elsif ($a eq $x) { print "ok $N\n" }
+    else {
+      ctrlfix(my $msg = "expected <$x>, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+  } else {
+    die "expect() got ", scalar(@_), " args, should have been 1 or 2";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/23_rv_ac_splice.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/23_rv_ac_splice.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/23_rv_ac_splice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+#
+# Check SPLICE function's return value when autochoping is now
+# (07_rv_splice.t checks it aith autochomping off)
+#
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+
+print "1..50\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;  # partial credit just for showing up
+
+init_file($data);
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 1;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+my $n;
+
+# (3-12) splicing at the beginning
+ at r = splice(@a, 0, 0, "rec4");
+check_result();
+ at r = splice(@a, 0, 1, "rec5");       # same length
+check_result("rec4");
+ at r = splice(@a, 0, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, 0, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 0, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 0, 0);               # no-op
+check_result();
+ at r = splice(@a, 0, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 0, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 0, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 0, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+
+# (13-22) splicing in the middle
+ at r = splice(@a, 1, 0, "rec4");
+check_result();
+ at r = splice(@a, 1, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 1, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, 1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, 1, 0);               # no-op
+check_result();
+ at r = splice(@a, 1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 1, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 1, 2);               # delete more than one
+check_result('record9','rec10');
+
+# (23-32) splicing at the end
+ at r = splice(@a, 3, 0, "rec4");
+check_result();
+ at r = splice(@a, 3, 1, "rec5");       # same length
+check_result('rec4');
+ at r = splice(@a, 3, 1, "record5");    # longer
+check_result('rec5');
+
+ at r = splice(@a, 3, 1, "r5");         # shorter
+check_result('record5');
+ at r = splice(@a, 3, 1);               # removal
+check_result('r5');
+ at r = splice(@a, 3, 0);               # no-op
+check_result();
+ at r = splice(@a, 3, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, 3, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('r7', 'rec8');
+
+ at r = splice(@a, 3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, 3, 2);               # delete more than one
+check_result('record9', 'rec10');
+
+# (33-42) splicing with negative subscript
+ at r = splice(@a, -1, 0, "rec4");
+check_result();
+ at r = splice(@a, -1, 1, "rec5");       # same length
+check_result('rec2');
+ at r = splice(@a, -1, 1, "record5");    # longer
+check_result("rec5");
+
+ at r = splice(@a, -1, 1, "r5");         # shorter
+check_result("record5");
+ at r = splice(@a, -1, 1);               # removal
+check_result("r5");
+ at r = splice(@a, -1, 0);               # no-op  
+check_result();
+ at r = splice(@a, -1, 0, 'r7', 'rec8'); # insert more than one
+check_result();
+ at r = splice(@a, -1, 2, 'rec7', 'record8', 'rec9'); # insert more than delete
+check_result('rec4');
+
+ at r = splice(@a, -3, 3, 'record9', 'rec10'); # delete more than insert
+check_result('rec7', 'record8', 'rec9');
+ at r = splice(@a, -4, 3);               # delete more than one
+check_result('r7', 'rec8', 'record9');
+
+# (43) scrub it all out
+ at r = splice(@a, 0, 3);
+check_result('rec0', 'rec1', 'rec10');
+
+# (44) put some back in
+ at r = splice(@a, 0, 0, "rec0", "rec1");
+check_result();
+
+# (45) what if we remove too many records?
+ at r = splice(@a, 0, 17);
+check_result('rec0', 'rec1');
+
+# (46-48) Now check the scalar context return
+splice(@a, 0, 0, qw(I like pie));
+my $r;
+$r = splice(@a, 0, 0);
+print !defined($r) ? "ok $N\n" : "not ok $N \# return should have been undef, was <$r>\n";
+$N++;
+
+$r = splice(@a, 2, 1);
+print $r eq "pie" ? "ok $N\n" : "not ok $N \# return should have been 'pie', was <$r>\n";
+$N++;
+
+$r = splice(@a, 0, 2);
+print $r eq "like" ? "ok $N\n" : "not ok $N \# return should have been 'like', was <$r>\n";
+$N++;
+
+# (49-50) Test default arguments
+splice @a, 0, 0, (0..11);
+ at r = splice @a, 4;
+check_result(4..11);
+ at r = splice @a;
+check_result(0..3);
+
+sub init_file {
+  my $data = shift;
+  open F, "> $file" or die $!;
+  binmode F;
+  print F $data;
+  close F;
+}
+
+# actual results are in @r.
+# expected results are in @_
+sub check_result {
+  my @x = @_;
+  my $good = 1;
+  $good = 0 unless @r == @x;
+  for my $i (0 .. $#r) {
+    $good = 0 unless $r[$i] eq $x[$i];
+  }
+  print $good ? "ok $N\n" : "not ok $N \# was (@r); should be (@x)\n";
+  $N++;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/24_cache_loop.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/24_cache_loop.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/24_cache_loop.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,55 @@
+#!/usr/bin/perl
+#
+# Tests for various caching errors
+#
+
+use Config;
+my $file = "tf$$.txt";
+unless ($Config{d_alarm}) {
+  print "1..0\n"; exit;
+}
+
+$: = Tie::File::_default_recsep();
+my $data = join $:, "record0" .. "record9", "";
+my $V = $ENV{INTEGRITY};        # Verbose integrity checking?
+
+print "1..3\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+# Limit cache size to 30 bytes 
+my $MAX = 30;
+#  -- that's enough space for 3 records, but not 4, on both \n and \r\n systems
+my $o = tie @a, 'Tie::File', $file, memory => $MAX, autodefer => 1;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3) In 0.50 this goes into an infinite loop.  Explanation:
+#
+#   Suppose you overfill the defer buffer by so much that the memory
+#   limit is also exceeded.  You'll go into _splice to prepare to
+#   write out the defer buffer, and _splice will call _fetch, which
+#   will then try to flush the read cache---but the read cache is
+#   already empty, so you're stuck in an infinite loop.
+#
+# Five seconds should be plenty of time for it to complete if it works.
+alarm 5 unless $^P;
+ at a = "record0" .. "record9";
+print "ok 3\n";
+alarm 0;
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+
+
+

Added: vendor/perl/dist/dist/Tie-File/t/25_gen_nocache.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/25_gen_nocache.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/25_gen_nocache.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,137 @@
+#!/usr/bin/perl
+#
+# Regular read-write tests with caching disabled
+# (Same as 01_gen.t)
+#
+my $file = "tf$$.txt";
+
+print "1..68\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+my $o = tie @a, 'Tie::File', $file, autochomp => 0, autodefer => 0, memory => 0;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+$: = $o->{recsep};
+
+# 3-5 create
+$a[0] = 'rec0';
+check_contents("rec0");
+
+# 6-11 append
+$a[1] = 'rec1';
+check_contents("rec0", "rec1");
+$a[2] = 'rec2';
+check_contents("rec0", "rec1", "rec2");
+
+# 12-20 same-length alterations
+$a[0] = 'new0';
+check_contents("new0", "rec1", "rec2");
+$a[1] = 'new1';
+check_contents("new0", "new1", "rec2");
+$a[2] = 'new2';
+check_contents("new0", "new1", "new2");
+
+# 21-35 lengthening alterations
+$a[0] = 'long0';
+check_contents("long0", "new1", "new2");
+$a[1] = 'long1';
+check_contents("long0", "long1", "new2");
+$a[2] = 'long2';
+check_contents("long0", "long1", "long2");
+$a[1] = 'longer1';
+check_contents("long0", "longer1", "long2");
+$a[0] = 'longer0';
+check_contents("longer0", "longer1", "long2");
+
+# 36-50 shortening alterations, including truncation
+$a[0] = 'short0';
+check_contents("short0", "longer1", "long2");
+$a[1] = 'short1';
+check_contents("short0", "short1", "long2");
+$a[2] = 'short2';
+check_contents("short0", "short1", "short2");
+$a[1] = 'sh1';
+check_contents("short0", "sh1", "short2");
+$a[0] = 'sh0';
+check_contents("sh0", "sh1", "short2");
+
+# (51-56) file with holes
+$a[4] = 'rec4';
+check_contents("sh0", "sh1", "short2", "", "rec4");
+$a[3] = 'rec3';
+check_contents("sh0", "sh1", "short2", "rec3", "rec4");
+
+# (57-59) zero out file
+ at a = ();
+check_contents();
+
+# (60-62) insert into the middle of an empty file
+$a[3] = "rec3";
+check_contents("", "", "", "rec3");
+
+# (63-68) 20020326 You thought there would be a bug in STORE where if
+# a cached record was false, STORE wouldn't see it at all.  But you
+# forgot that records always come back from the cache with the record
+# separator attached, so they are unlikely to be false.  The only
+# really weird case is when the cached record is empty and the record
+# separator is "0".  Test that in 09_gen_rs.t.
+$a[1] = "0";
+check_contents("", "0", "", "rec3");
+$a[1] = "whoops";
+check_contents("", "whoops", "", "rec3");
+
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq "$c[$_]$:") {
+      $msg = "expected <$c[$_]$:>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/26_twrite.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/26_twrite.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/26_twrite.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,359 @@
+#!/usr/bin/perl
+#
+# Unit tests of _twrite function
+#
+# _twrite($self, $data, $pos, $len)
+#
+# 't' here is for 'tail'.  This writes $data at absolute position $pos
+# in the file, overwriting exactly $len of the bytes at that position.
+# Everything else is moved down or up, dependong on whether
+# length($data) > $len or length($data) < $len.
+# $len == 0 is a pure insert; $len == length($data) is a simple overwrite.
+#
+
+my $file = "tf$$.txt";
+
+print "1..181\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$: = Tie::File::_default_recsep();
+
+# (2) Peter Scott sent this one.  It fails in 0.51 and works in 0.90
+# <4.3.2.7.2.20020331102819.00b913d0 at shell2.webquarry.com>
+#
+# The problem was premature termination in the inner loop
+# because you had $more_data scoped *inside* the block instead of outside.
+# 20020331
+open F, "> $file" or die "Couldn't open $file: $!";
+binmode F;
+for (1..100) {
+  print F "$_ ", 'a'x150, $: ;
+}
+close F;
+# The file is now 15292 characters long on Unix, 15392 on Win32
+die -s $file unless -s $file == 15292 + 100 * length($:);
+
+tie my @lines, 'Tie::File', $file or die $!;
+push @lines, "1001 ".('a' x 100);
+splice @lines, 0, 1;
+untie @lines;
+
+my $s = -s $file;
+my $x = 15292 - 152 + 105 + 100*length($:);
+print $s == $x
+  ? "ok $N\n" : "not ok $N # expected $x, got $s\n";
+$N++;
+
+my @subtests = qw(x <x x> x><x <x> <x><x x><x> <x><x> <x><x><x> 0);
+
+# (3-73) These were generated by 'gentests.pl' to cover all possible cases
+# (I hope)
+# Legend:
+#         x: data is entirely contained within one block
+#        x>: data runs from the middle to the end of the block
+#        <x: data runs from the start to the middle of the block
+#       <x>: data occupies precisely one block
+#      x><x: data overlaps one block boundary
+#     <x><x: data runs from the start of one block into the middle of the next
+#     x><x>: data runs from the middle of one block to the end of the next
+#    <x><x>: data occupies two blocks exactly
+# <x><x><x>: data occupies three blocks exactly
+#         0: data is null
+#
+# For each possible alignment of the old and new data, we investigate
+# up to three situations: old data is shorter, old and new data are the
+# same length, and new data is shorter.
+#
+# try($pos, $old, $new) means to run a test where the data starts at 
+# position $pos, the old data has length $old,
+# and the new data has length $new.
+try( 9659,  6635,  6691);  # old=x        , new=x        ; old < new
+try( 8605,  2394,  2394);  # old=x        , new=x        ; old = new
+try( 9768,  1361,   664);  # old=x        , new=x        ; old > new
+try( 9955,  6429,  6429);  # old=x>       , new=x        ; old = new
+try(10550,  5834,  4123);  # old=x>       , new=x        ; old > new
+try(14580,  6158,   851);  # old=x><x     , new=x        ; old > new
+try(13442, 11134,  1572);  # old=x><x>    , new=x        ; old > new
+try( 8394,     0,  5742);  # old=0        , new=x        ; old < new
+try( 8192,  2819,  6738);  # old=<x       , new=<x       ; old < new
+try( 8192,   514,   514);  # old=<x       , new=<x       ; old = new
+try( 8192,  2196,   858);  # old=<x       , new=<x       ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try( 8192,  8192,  1290);  # old=<x>      , new=<x       ; old > new
+try( 8192, 10575,  6644);  # old=<x><x    , new=<x       ; old > new
+try( 8192, 16384,  5616);  # old=<x><x>   , new=<x       ; old > new
+try( 8192, 24576,  6253);  # old=<x><x><x>, new=<x       ; old > new
+try( 8192,     0,  6870);  # old=0        , new=<x       ; old < new
+try( 8478,  6259,  7906);  # old=x        , new=x>       ; old < new
+try( 9965,  6419,  6419);  # old=x>       , new=x>       ; old = new
+try(16059,  6102,   325);  # old=x><x     , new=x>       ; old > new
+try( 9503, 15073,  6881);  # old=x><x>    , new=x>       ; old > new
+try( 9759,     0,  6625);  # old=0        , new=x>       ; old < new
+try( 8525,  2081,  8534);  # old=x        , new=x><x     ; old < new
+try(15550,   834,  1428);  # old=x>       , new=x><x     ; old < new
+try(14966,  1668,  3479);  # old=x><x     , new=x><x     ; old < new
+try(16316,  1605,  1605);  # old=x><x     , new=x><x     ; old = new
+try(16093,  4074,   993);  # old=x><x     , new=x><x     ; old > new
+try(14739,  9837,  9837);  # old=x><x>    , new=x><x     ; old = new
+try(14071, 10505,  7344);  # old=x><x>    , new=x><x     ; old > new
+try(12602,     0,  8354);  # old=0        , new=x><x     ; old < new
+try( 8192,  2767,  8192);  # old=<x       , new=<x>      ; old < new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try( 8192, 14817,  8192);  # old=<x><x    , new=<x>      ; old > new
+try( 8192, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try( 8192, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try( 8192,     0,  8192);  # old=0        , new=<x>      ; old < new
+try( 8192,  6532, 10882);  # old=<x       , new=<x><x    ; old < new
+try( 8192,  8192, 16044);  # old=<x>      , new=<x><x    ; old < new
+try( 8192,  9555, 11020);  # old=<x><x    , new=<x><x    ; old < new
+try( 8192,  9001,  9001);  # old=<x><x    , new=<x><x    ; old = new
+try( 8192, 11760, 10274);  # old=<x><x    , new=<x><x    ; old > new
+try( 8192, 16384, 10781);  # old=<x><x>   , new=<x><x    ; old > new
+try( 8192, 24576,  9284);  # old=<x><x><x>, new=<x><x    ; old > new
+try( 8192,     0, 12488);  # old=0        , new=<x><x    ; old < new
+try( 8222,  6385, 16354);  # old=x        , new=x><x>    ; old < new
+try(13500,  2884, 11076);  # old=x>       , new=x><x>    ; old < new
+try(14069,  4334, 10507);  # old=x><x     , new=x><x>    ; old < new
+try(14761,  9815,  9815);  # old=x><x>    , new=x><x>    ; old = new
+try(10469,     0, 14107);  # old=0        , new=x><x>    ; old < new
+try( 8192,  4181, 16384);  # old=<x       , new=<x><x>   ; old < new
+try( 8192,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try( 8192, 12087, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try( 8192, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try( 8192, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try( 8192,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try( 8192,  4968, 24576);  # old=<x       , new=<x><x><x>; old < new
+try( 8192,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try( 8192, 14163, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try( 8192, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try( 8192, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try( 8192,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try( 8771,   776,     0);  # old=x        , new=0        ; old > new
+try( 8192,  2813,     0);  # old=<x       , new=0        ; old > new
+try(13945,  2439,     0);  # old=x>       , new=0        ; old > new
+try(14493,  6090,     0);  # old=x><x     , new=0        ; old > new
+try( 8192,  8192,     0);  # old=<x>      , new=0        ; old > new
+try( 8192, 10030,     0);  # old=<x><x    , new=0        ; old > new
+try(14983,  9593,     0);  # old=x><x>    , new=0        ; old > new
+try( 8192, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try( 8192, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(10489,     0,     0);  # old=0        , new=0        ; old = new
+
+# (74-114)
+# These tests all take place at the start of the file
+try(    0,   771,  1593);  # old=<x       , new=<x       ; old < new
+try(    0,  4868,  4868);  # old=<x       , new=<x       ; old = new
+try(    0,   147,   118);  # old=<x       , new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(    0,  8192,  4574);  # old=<x>      , new=<x       ; old > new
+try(    0, 11891,  1917);  # old=<x><x    , new=<x       ; old > new
+try(    0, 16384,  5155);  # old=<x><x>   , new=<x       ; old > new
+try(    0, 24576,  2953);  # old=<x><x><x>, new=<x       ; old > new
+try(    0,     0,  1317);  # old=0        , new=<x       ; old < new
+try(    0,  5609,  8192);  # old=<x       , new=<x>      ; old < new
+try(    0,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(    0, 11083,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(    0, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(    0, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(    0,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(    0,  6265,  9991);  # old=<x       , new=<x><x    ; old < new
+try(    0,  8192, 16119);  # old=<x>      , new=<x><x    ; old < new
+try(    0, 10218, 11888);  # old=<x><x    , new=<x><x    ; old < new
+try(    0, 14126, 14126);  # old=<x><x    , new=<x><x    ; old = new
+try(    0, 12002,  9034);  # old=<x><x    , new=<x><x    ; old > new
+try(    0, 16384, 13258);  # old=<x><x>   , new=<x><x    ; old > new
+try(    0, 24576, 14367);  # old=<x><x><x>, new=<x><x    ; old > new
+try(    0,     0, 10881);  # old=0        , new=<x><x    ; old < new
+try(    0,  6448, 16384);  # old=<x       , new=<x><x>   ; old < new
+try(    0,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try(    0, 15082, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try(    0, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(    0, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(    0,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(    0,  2421, 24576);  # old=<x       , new=<x><x><x>; old < new
+try(    0,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try(    0, 11655, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try(    0, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try(    0, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(    0,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(    0,  6530,     0);  # old=<x       , new=0        ; old > new
+try(    0,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(    0, 14707,     0);  # old=<x><x    , new=0        ; old > new
+try(    0, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(    0, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(    0,     0,     0);  # old=0        , new=0        ; old = new
+
+# (115-141)
+# These tests all take place at the end of the file
+$FLEN = 40960;  # Force the file to be exactly 40960 bytes long
+try(32768,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(32768,  8192,  4026);  # old=<x>      , new=<x       ; old > new
+try(24576, 16384,  1917);  # old=<x><x>   , new=<x       ; old > new
+try(16384, 24576,  3818);  # old=<x><x><x>, new=<x       ; old > new
+try(40960,     0,  2779);  # old=0        , new=<x       ; old < new
+try(32768,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(24576, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(16384, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(40960,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(32768,  8192, 10724);  # old=<x>      , new=<x><x    ; old < new
+try(24576, 16384, 12221);  # old=<x><x>   , new=<x><x    ; old > new
+try(16384, 24576, 15030);  # old=<x><x><x>, new=<x><x    ; old > new
+try(40960,     0, 11752);  # old=0        , new=<x><x    ; old < new
+try(32768,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try(24576, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(16384, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(40960,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(32768,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try(24576, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try(16384, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(40960,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(35973,  4987,     0);  # old=x>       , new=0        ; old > new
+try(32768,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(29932, 11028,     0);  # old=x><x>    , new=0        ; old > new
+try(24576, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(16384, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(40960,     0,     0);  # old=0        , new=0        ; old = new
+
+# (142-181)
+# These tests all take place at the end of the file
+$FLEN = 42000;  # Force the file to be exactly 42000 bytes long
+try(41275,   725,  4059);  # old=x        , new=x        ; old < new
+try(41683,   317,   317);  # old=x        , new=x        ; old = new
+try(41225,   775,   405);  # old=x        , new=x        ; old > new
+try(35709,  6291,   284);  # old=x><x     , new=x        ; old > new
+try(42000,     0,  2434);  # old=0        , new=x        ; old < new
+try(40960,  1040,  1608);  # old=<x       , new=<x       ; old < new
+try(40960,  1040,  1040);  # old=<x       , new=<x       ; old = new
+try(40960,  1040,   378);  # old=<x       , new=<x       ; old > new
+try(32768,  9232,  5604);  # old=<x><x    , new=<x       ; old > new
+try(42000,     0,  6637);  # old=0        , new=<x       ; old < new
+try(41022,   978,  8130);  # old=x        , new=x>       ; old < new
+try(39994,  2006,   966);  # old=x><x     , new=x>       ; old > new
+try(42000,     0,  7152);  # old=0        , new=x>       ; old < new
+try(41613,   387, 10601);  # old=x        , new=x><x     ; old < new
+try(38460,  3540,  3938);  # old=x><x     , new=x><x     ; old < new
+try(36725,  5275,  5275);  # old=x><x     , new=x><x     ; old = new
+try(37990,  4010,  3199);  # old=x><x     , new=x><x     ; old > new
+try(42000,     0,  9189);  # old=0        , new=x><x     ; old < new
+try(40960,  1040,  8192);  # old=<x       , new=<x>      ; old < new
+try(32768,  9232,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(42000,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(40960,  1040, 11778);  # old=<x       , new=<x><x    ; old < new
+try(32768,  9232, 13792);  # old=<x><x    , new=<x><x    ; old < new
+try(32768,  9232,  9232);  # old=<x><x    , new=<x><x    ; old = new
+try(32768,  9232,  8795);  # old=<x><x    , new=<x><x    ; old > new
+try(42000,     0,  8578);  # old=0        , new=<x><x    ; old < new
+try(41531,   469, 15813);  # old=x        , new=x><x>    ; old < new
+try(39618,  2382,  9534);  # old=x><x     , new=x><x>    ; old < new
+try(42000,     0, 15344);  # old=0        , new=x><x>    ; old < new
+try(40960,  1040, 16384);  # old=<x       , new=<x><x>   ; old < new
+try(32768,  9232, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try(42000,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(40960,  1040, 24576);  # old=<x       , new=<x><x><x>; old < new
+try(32768,  9232, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try(42000,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(41500,   500,     0);  # old=x        , new=0        ; old > new
+try(40960,  1040,     0);  # old=<x       , new=0        ; old > new
+try(35272,  6728,     0);  # old=x><x     , new=0        ; old > new
+try(32768,  9232,     0);  # old=<x><x    , new=0        ; old > new
+try(42000,     0,     0);  # old=0        , new=0        ; old = new
+
+sub try {
+  my ($pos, $len, $newlen) = @_;
+  open F, "> $file" or die "Couldn't open file $file: $!";
+  binmode F;
+
+  # The record has exactly 17 characters.  This will help ensure that
+  # even if _twrite screws up, the data doesn't coincidentally
+  # look good because the remainder accidentally lines up.
+  my $d = substr("0123456789abcdef$:", -17);
+  my $recs = defined($FLEN) ?
+    int($FLEN/length($d))+1 : # enough to make up at least $FLEN
+    int(8192*5/length($d))+1; # at least 5 blocks' worth
+  my $oldfile = $d x $recs;
+  my $flen = defined($FLEN) ? $FLEN : $recs * 17;
+  substr($oldfile, $FLEN) = "" if defined $FLEN;  # truncate
+  print F $oldfile;
+  close F;
+
+  die "wrong length!" unless -s $file == $flen;
+
+  my $newdata = "-" x $newlen;
+  my $expected = $oldfile;
+  substr($expected, $pos, $len) = $newdata;
+
+  my $o = tie my @lines, 'Tie::File', $file or die $!;
+  $o->_twrite($newdata, $pos, $len);
+  undef $o; untie @lines;
+
+  open F, "< $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  my $actual;
+  { local $/;
+    $actual = <F>;
+  }
+  close F;
+
+  my ($alen, $xlen) = (length $actual, length $expected);
+  unless ($alen == $xlen) {
+    print "# try(@_) expected file length $xlen, actual $alen!\n";
+  }
+  print $actual eq $expected ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq "$c[$_]$:") {
+      $msg = "expected <$c[$_]$:>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/27_iwrite.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/27_iwrite.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/27_iwrite.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,235 @@
+#!/usr/bin/perl
+#
+# Unit tests of _iwrite function
+#
+# _iwrite($self, $data, $start, $end)
+#
+# 'i' here is for 'insert'.  This writes $data at absolute position $start
+# in the file, copying the data at that position downwards---
+# but only down to position $end.  Data at or past $end is not moved
+# or even examined.    Since there isn't enough room for the full copy
+# (Because we inserted $data at the beginning) we copy as much as possible
+# and return a string containing the remainder.
+
+my $file = "tf$$.txt";
+$| = 1;
+
+print "1..203\n";
+
+my $N = 1;
+my $oldfile;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$: = Tie::File::_default_recsep();
+
+$FLEN = 40970;   # Use files of this length
+$oldfile = mkrand($FLEN);
+print "# MOF tests\n";
+# (2-85) These were generated by 'gentests.pl' to cover all possible cases
+# (I hope)
+# Legend:
+#         x: data is entirely contained within one block
+#        x>: data runs from the middle to the end of the block
+#        <x: data runs from the start to the middle of the block
+#       <x>: data occupies precisely one block
+#      x><x: data overlaps one block boundary
+#     <x><x: data runs from the start of one block into the middle of the next
+#     x><x>: data runs from the middle of one block to the end of the next
+#    <x><x>: data occupies two blocks exactly
+# <x><x><x>: data occupies three blocks exactly
+#         0: data is null
+#
+# For each possible alignment of the old and new data, we investigate
+# up to three situations: old data is shorter, old and new data are the
+# same length, and new data is shorter.
+#
+# try($pos, $old, $new) means to run a test where the area being
+# written into starts at position $pos, the area being written into
+# has length $old, and and the new data has length $new.
+try( 8605,  2394,  2394);  # old=x        , new=x        ; old = new
+try( 9768,  1361,   664);  # old=x        , new=x        ; old > new
+try( 9955,  6429,  6429);  # old=x>       , new=x        ; old = new
+try(10550,  5834,  4123);  # old=x>       , new=x        ; old > new
+try(14580,  6158,   851);  # old=x><x     , new=x        ; old > new
+try(13442, 11134,  1572);  # old=x><x>    , new=x        ; old > new
+try( 8192,   514,   514);  # old=<x       , new=<x       ; old = new
+try( 8192,  2196,   858);  # old=<x       , new=<x       ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try( 8192,  8192,  1290);  # old=<x>      , new=<x       ; old > new
+try( 8192, 10575,  6644);  # old=<x><x    , new=<x       ; old > new
+try( 8192, 16384,  5616);  # old=<x><x>   , new=<x       ; old > new
+try( 8192, 24576,  6253);  # old=<x><x><x>, new=<x       ; old > new
+try( 9965,  6419,  6419);  # old=x>       , new=x>       ; old = new
+try(16059,  6102,   325);  # old=x><x     , new=x>       ; old > new
+try( 9503, 15073,  6881);  # old=x><x>    , new=x>       ; old > new
+try(16316,  1605,  1605);  # old=x><x     , new=x><x     ; old = new
+try(16093,  4074,   993);  # old=x><x     , new=x><x     ; old > new
+try(14739,  9837,  9837);  # old=x><x>    , new=x><x     ; old = new
+try(14071, 10505,  7344);  # old=x><x>    , new=x><x     ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try( 8192, 14817,  8192);  # old=<x><x    , new=<x>      ; old > new
+try( 8192, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try( 8192, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try( 8192,  9001,  9001);  # old=<x><x    , new=<x><x    ; old = new
+try( 8192, 11760, 10274);  # old=<x><x    , new=<x><x    ; old > new
+try( 8192, 16384, 10781);  # old=<x><x>   , new=<x><x    ; old > new
+try( 8192, 24576,  9284);  # old=<x><x><x>, new=<x><x    ; old > new
+try(14761,  9815,  9815);  # old=x><x>    , new=x><x>    ; old = new
+try( 8192, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try( 8192, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try( 8192, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try( 8771,   776,     0);  # old=x        , new=0        ; old > new
+try( 8192,  2813,     0);  # old=<x       , new=0        ; old > new
+try(13945,  2439,     0);  # old=x>       , new=0        ; old > new
+try(14493,  6090,     0);  # old=x><x     , new=0        ; old > new
+try( 8192,  8192,     0);  # old=<x>      , new=0        ; old > new
+try( 8192, 10030,     0);  # old=<x><x    , new=0        ; old > new
+try(14983,  9593,     0);  # old=x><x>    , new=0        ; old > new
+try( 8192, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try( 8192, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(10489,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# SOF tests\n";
+# (86-133)
+# These tests all take place at the start of the file
+try(    0,  4868,  4868);  # old=<x       , new=<x       ; old = new
+try(    0,   147,   118);  # old=<x       , new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(    0,  8192,  4574);  # old=<x>      , new=<x       ; old > new
+try(    0, 11891,  1917);  # old=<x><x    , new=<x       ; old > new
+try(    0, 16384,  5155);  # old=<x><x>   , new=<x       ; old > new
+try(    0, 24576,  2953);  # old=<x><x><x>, new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(    0, 11083,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(    0, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(    0, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(    0, 14126, 14126);  # old=<x><x    , new=<x><x    ; old = new
+try(    0, 12002,  9034);  # old=<x><x    , new=<x><x    ; old > new
+try(    0, 16384, 13258);  # old=<x><x>   , new=<x><x    ; old > new
+try(    0, 24576, 14367);  # old=<x><x><x>, new=<x><x    ; old > new
+try(    0, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(    0, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(    0, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(    0,  6530,     0);  # old=<x       , new=0        ; old > new
+try(    0,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(    0, 14707,     0);  # old=<x><x    , new=0        ; old > new
+try(    0, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(    0, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(    0,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# EOF tests 1\n";
+# (134-169)
+# These tests all take place at the end of the file
+$FLEN = 40960;  # Force the file to be exactly 40960 bytes long
+$oldfile = mkrand($FLEN);
+try(32768,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(32768,  8192,  4026);  # old=<x>      , new=<x       ; old > new
+try(24576, 16384,  1917);  # old=<x><x>   , new=<x       ; old > new
+try(16384, 24576,  3818);  # old=<x><x><x>, new=<x       ; old > new
+try(32768,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(24576, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(16384, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(24576, 16384, 12221);  # old=<x><x>   , new=<x><x    ; old > new
+try(16384, 24576, 15030);  # old=<x><x><x>, new=<x><x    ; old > new
+try(24576, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(16384, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(16384, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(35973,  4987,     0);  # old=x>       , new=0        ; old > new
+try(32768,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(29932, 11028,     0);  # old=x><x>    , new=0        ; old > new
+try(24576, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(16384, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(40960,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# EOF tests 2\n";
+# (170-203)
+# These tests all take place at the end of the file
+$FLEN = 42000;  # Force the file to be exactly 42000 bytes long
+$oldfile = mkrand($FLEN);
+try(41683,   317,   317);  # old=x        , new=x        ; old = new
+try(41225,   775,   405);  # old=x        , new=x        ; old > new
+try(35709,  6291,   284);  # old=x><x     , new=x        ; old > new
+try(40960,  1040,  1040);  # old=<x       , new=<x       ; old = new
+try(40960,  1040,   378);  # old=<x       , new=<x       ; old > new
+try(32768,  9232,  5604);  # old=<x><x    , new=<x       ; old > new
+try(39994,  2006,   966);  # old=x><x     , new=x>       ; old > new
+try(36725,  5275,  5275);  # old=x><x     , new=x><x     ; old = new
+try(37990,  4010,  3199);  # old=x><x     , new=x><x     ; old > new
+try(32768,  9232,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(32768,  9232,  9232);  # old=<x><x    , new=<x><x    ; old = new
+try(32768,  9232,  8795);  # old=<x><x    , new=<x><x    ; old > new
+try(41500,   500,     0);  # old=x        , new=0        ; old > new
+try(40960,  1040,     0);  # old=<x       , new=0        ; old > new
+try(35272,  6728,     0);  # old=x><x     , new=0        ; old > new
+try(32768,  9232,     0);  # old=<x><x    , new=0        ; old > new
+try(42000,     0,     0);  # old=0        , new=0        ; old = new
+
+sub mkrand {
+  my $len = shift;
+  srand $len;
+  my @c = ('a' .. 'z', 'A' .. 'Z', 0..9, $:);
+  my $d = "";
+  $d .= $c[rand @c] until length($d) >= $len;
+  substr($d, $len) = ""; # chop it off to the proper length
+  $d;
+}
+
+sub try {
+  my ($s, $len, $newlen) = @_;
+  my $e = $s + $len;
+
+  open F, "> $file" or die "Couldn't open file $file: $!";
+  binmode F;
+
+  print F $oldfile;
+  close F;
+
+  die "wrong length!" unless -s $file == $FLEN;
+
+  my $newdata = "-" x $newlen;
+  my $expected = $oldfile;
+
+  my $expected_return = substr($expected, $e - $newlen, $newlen, "");
+  substr($expected, $s, 0, $newdata);
+
+  my $o = tie my @lines, 'Tie::File', $file or die $!;
+  my $actual_return = $o->_iwrite($newdata, $s, $e);
+  undef $o; untie @lines;
+
+  open F, "< $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  my $actual;
+  { local $/;
+    $actual = <F>;
+  }
+  close F;
+
+  my ($alen, $xlen) = (length $actual, length $expected);
+  unless ($alen == $xlen) {
+    print "# try(@_) expected file length $xlen, actual $alen!\n";
+  }
+  print $actual eq $expected ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  if (! defined $actual_return && ! defined $expected_return) {
+    print "ok $N\n";
+  } elsif (! defined $actual_return || ! defined $expected_return) {
+    print "not ok $N\n";
+  } else {
+    print $actual_return eq $expected_return ? "ok $N\n" : "not ok $N\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/28_mtwrite.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/28_mtwrite.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/28_mtwrite.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,295 @@
+#!/usr/bin/perl
+#
+# Unit tests of _mtwrite function
+#
+# _mtwrite($self, $d1, $s1, $l1, $d2, $s2, $l2, ...)
+#
+# 'm' here is for 'multiple'.  This writes data $d1 at position $s1
+# over a block of space $l1, moving subsequent data up or down as necessary.
+
+my $file = "tf$$.txt";
+$| = 1;
+
+print "1..2252\n";
+
+my $N = 1;
+my $oldfile;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$: = Tie::File::_default_recsep();
+
+# Only these are used for the triple-region tests
+ at BASE_TRIES = (
+               [10, 20, 30], 
+               [10, 30, 20], 
+               [100, 30, 20],
+               [100, 20, 30], 
+               [100, 40, 20], 
+               [100, 20, 40], 
+               [200, 20, 30],
+               [200, 30, 20],
+               [200, 20, 60],
+               [200, 60, 20],
+               );
+
+ at TRIES = @BASE_TRIES;
+
+$FLEN = 40970;   # Use files of this length
+$oldfile = mkrand($FLEN);
+print "# MOF tests\n";
+# These were generated by 'gentests.pl' to cover all possible cases
+# (I hope)
+# Legend:
+#         x: data is entirely contained within one block
+#        x>: data runs from the middle to the end of the block
+#        <x: data runs from the start to the middle of the block
+#       <x>: data occupies precisely one block
+#      x><x: data overlaps one block boundary
+#     <x><x: data runs from the start of one block into the middle of the next
+#     x><x>: data runs from the middle of one block to the end of the next
+#    <x><x>: data occupies two blocks exactly
+# <x><x><x>: data occupies three blocks exactly
+#         0: data is null
+#
+# For each possible alignment of the old and new data, we investigate
+# up to three situations: old data is shorter, old and new data are the
+# same length, and new data is shorter.
+#
+# try($pos, $old, $new) means to run a test where the area being
+# written into starts at position $pos, the area being written into
+# has length $old, and and the new data has length $new.
+try( 8605,  2394,  2394);  # old=x        , new=x        ; old = new
+try( 9768,  1361,   664);  # old=x        , new=x        ; old > new
+try( 9955,  6429,  6429);  # old=x>       , new=x        ; old = new
+try(10550,  5834,  4123);  # old=x>       , new=x        ; old > new
+try(14580,  6158,   851);  # old=x><x     , new=x        ; old > new
+try(13442, 11134,  1572);  # old=x><x>    , new=x        ; old > new
+try( 8192,   514,   514);  # old=<x       , new=<x       ; old = new
+try( 8192,  2196,   858);  # old=<x       , new=<x       ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try( 8192,  8192,  1290);  # old=<x>      , new=<x       ; old > new
+try( 8192, 10575,  6644);  # old=<x><x    , new=<x       ; old > new
+try( 8192, 16384,  5616);  # old=<x><x>   , new=<x       ; old > new
+try( 8192, 24576,  6253);  # old=<x><x><x>, new=<x       ; old > new
+try( 9965,  6419,  6419);  # old=x>       , new=x>       ; old = new
+try(16059,  6102,   325);  # old=x><x     , new=x>       ; old > new
+try( 9503, 15073,  6881);  # old=x><x>    , new=x>       ; old > new
+try(16316,  1605,  1605);  # old=x><x     , new=x><x     ; old = new
+try(16093,  4074,   993);  # old=x><x     , new=x><x     ; old > new
+try(14739,  9837,  9837);  # old=x><x>    , new=x><x     ; old = new
+try(14071, 10505,  7344);  # old=x><x>    , new=x><x     ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try( 8192, 14817,  8192);  # old=<x><x    , new=<x>      ; old > new
+try( 8192, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try( 8192, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try( 8192,  9001,  9001);  # old=<x><x    , new=<x><x    ; old = new
+try( 8192, 11760, 10274);  # old=<x><x    , new=<x><x    ; old > new
+try( 8192, 16384, 10781);  # old=<x><x>   , new=<x><x    ; old > new
+try( 8192, 24576,  9284);  # old=<x><x><x>, new=<x><x    ; old > new
+try(14761,  9815,  9815);  # old=x><x>    , new=x><x>    ; old = new
+try( 8192, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try( 8192, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try( 8192, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try( 8771,   776,     0);  # old=x        , new=0        ; old > new
+try( 8192,  2813,     0);  # old=<x       , new=0        ; old > new
+try(13945,  2439,     0);  # old=x>       , new=0        ; old > new
+try(14493,  6090,     0);  # old=x><x     , new=0        ; old > new
+try( 8192,  8192,     0);  # old=<x>      , new=0        ; old > new
+try( 8192, 10030,     0);  # old=<x><x    , new=0        ; old > new
+try(14983,  9593,     0);  # old=x><x>    , new=0        ; old > new
+try( 8192, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try( 8192, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(10489,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# SOF tests\n";
+# These tests all take place at the start of the file
+try(    0,  4868,  4868);  # old=<x       , new=<x       ; old = new
+try(    0,   147,   118);  # old=<x       , new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(    0,  8192,  4574);  # old=<x>      , new=<x       ; old > new
+try(    0, 11891,  1917);  # old=<x><x    , new=<x       ; old > new
+try(    0, 16384,  5155);  # old=<x><x>   , new=<x       ; old > new
+try(    0, 24576,  2953);  # old=<x><x><x>, new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(    0, 11083,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(    0, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(    0, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(    0, 14126, 14126);  # old=<x><x    , new=<x><x    ; old = new
+try(    0, 12002,  9034);  # old=<x><x    , new=<x><x    ; old > new
+try(    0, 16384, 13258);  # old=<x><x>   , new=<x><x    ; old > new
+try(    0, 24576, 14367);  # old=<x><x><x>, new=<x><x    ; old > new
+try(    0, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(    0, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(    0, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(    0,  6530,     0);  # old=<x       , new=0        ; old > new
+try(    0,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(    0, 14707,     0);  # old=<x><x    , new=0        ; old > new
+try(    0, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(    0, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(    0,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# EOF tests 1\n";
+# These tests all take place at the end of the file
+$FLEN = 40960;  # Force the file to be exactly 40960 bytes long
+$oldfile = mkrand($FLEN);
+try(32768,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(32768,  8192,  4026);  # old=<x>      , new=<x       ; old > new
+try(24576, 16384,  1917);  # old=<x><x>   , new=<x       ; old > new
+try(16384, 24576,  3818);  # old=<x><x><x>, new=<x       ; old > new
+try(32768,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(24576, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(16384, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(24576, 16384, 12221);  # old=<x><x>   , new=<x><x    ; old > new
+try(16384, 24576, 15030);  # old=<x><x><x>, new=<x><x    ; old > new
+try(24576, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(16384, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(16384, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(35973,  4987,     0);  # old=x>       , new=0        ; old > new
+try(32768,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(29932, 11028,     0);  # old=x><x>    , new=0        ; old > new
+try(24576, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(16384, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(40960,     0,     0);  # old=0        , new=0        ; old = new
+
+print "# EOF tests 2\n";
+# These tests all take place at the end of the file
+$FLEN = 42000;  # Force the file to be exactly 42000 bytes long
+$oldfile = mkrand($FLEN);
+try(41683,   317,   317);  # old=x        , new=x        ; old = new
+try(41225,   775,   405);  # old=x        , new=x        ; old > new
+try(35709,  6291,   284);  # old=x><x     , new=x        ; old > new
+try(40960,  1040,  1040);  # old=<x       , new=<x       ; old = new
+try(40960,  1040,   378);  # old=<x       , new=<x       ; old > new
+try(32768,  9232,  5604);  # old=<x><x    , new=<x       ; old > new
+try(39994,  2006,   966);  # old=x><x     , new=x>       ; old > new
+try(36725,  5275,  5275);  # old=x><x     , new=x><x     ; old = new
+try(37990,  4010,  3199);  # old=x><x     , new=x><x     ; old > new
+try(32768,  9232,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(32768,  9232,  9232);  # old=<x><x    , new=<x><x    ; old = new
+try(32768,  9232,  8795);  # old=<x><x    , new=<x><x    ; old > new
+try(41500,   500,     0);  # old=x        , new=0        ; old > new
+try(40960,  1040,     0);  # old=<x       , new=0        ; old > new
+try(35272,  6728,     0);  # old=x><x     , new=0        ; old > new
+try(32768,  9232,     0);  # old=<x><x    , new=0        ; old > new
+try(42000,     0,     0);  # old=0        , new=0        ; old = new
+
+# Now the REAL tests 
+# Make sure mtwrite can properly write sequences of several intervals
+# The intervals tested above were accumulated into @TRIES.
+# try_all_doubles() tries every possible sensible pair of those intervals.
+# try_all_triples() tries every possible sensible group of 
+#  tree intervals from the more restrictive set @BASE_TRIES.
+$FLEN = 40970;
+$oldfile = mkrand($FLEN);
+try_all_doubles();
+try_all_triples();
+
+sub mkrand {
+  my $len = shift;
+  srand $len;
+  my @c = ('a' .. 'z', 'A' .. 'Z', 0..9, $:);
+  my $d = "";
+  $d .= $c[rand @c] until length($d) >= $len;
+  substr($d, $len) = ""; # chop it off to the proper length
+  $d;
+}
+
+sub try {
+  push @TRIES, [@_] if @_ == 3;
+
+  open F, "> $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  print F $oldfile;
+  close F;
+  die "wrong length!" unless -s $file == $FLEN;
+
+  my @mt_args; 
+  my $expected = $oldfile;
+  { my @a = @_;
+    my $c = "a";
+    while (@a) {
+      my ($s, $len, $newlen) = splice @a, -3;
+      my $newdata = $c++ x $newlen;
+      substr($expected, $s, $len, $newdata);
+      unshift @mt_args, $newdata, $s, $len;
+    }
+  }
+
+  my $o = tie my @lines, 'Tie::File', $file or die $!;
+  my $actual_return = $o->_mtwrite(@mt_args);
+  undef $o; untie @lines;
+
+  open F, "< $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  my $actual;
+  { local $/;
+    $actual = <F>;
+  }
+  close F;
+
+  my ($alen, $xlen) = (length $actual, length $expected);
+  unless ($alen == $xlen) {
+    print "# try(@_) expected file length $xlen, actual $alen!\n";
+  }
+  print $actual eq $expected ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+#  if (! defined $actual_return && ! defined $expected_return) {
+#    print "ok $N\n";
+#  } elsif (! defined $actual_return || ! defined $expected_return) {
+#    print "not ok $N\n";
+#  } else {
+#    print $actual_return eq $expected_return ? "ok $N\n" : "not ok $N\n";
+#  }
+#  $N++;
+}
+
+sub try_all_doubles {
+  print "# Trying double regions.\n";
+  for my $a (@TRIES) {
+    next if $a->[0] + $a->[1] >= $FLEN;
+    next if $a->[0] + $a->[2] >= $FLEN;
+    for my $b (@TRIES) {
+      next if $b->[0] + $b->[1] >= $FLEN;
+      next if $b->[0] + $b->[2] >= $FLEN;
+
+      next if $b->[0] < $a->[0] + $a->[1]; # Overlapping regions
+      try(@$a, @$b);
+    }
+  }
+}
+
+sub try_all_triples {
+  print "# Trying triple regions.\n";
+  for my $a (@BASE_TRIES) {
+    next if $a->[0] + $a->[1] >= $FLEN;
+    next if $a->[0] + $a->[2] >= $FLEN;
+    for my $b (@BASE_TRIES) {
+      next if $b->[0] + $b->[1] >= $FLEN;
+      next if $b->[0] + $b->[2] >= $FLEN;
+
+      next if $b->[0] < $a->[0] + $a->[1]; # Overlapping regions
+
+      for my $c (@BASE_TRIES) {
+        next if $c->[0] + $c->[1] >= $FLEN;
+        next if $c->[0] + $c->[2] >= $FLEN;
+
+        next if $c->[0] < $b->[0] + $b->[1]; # Overlapping regions
+        try(@$a, @$b, @$c);
+      }
+    }
+  }
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/29_downcopy.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/29_downcopy.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/29_downcopy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,363 @@
+#!/usr/bin/perl
+#
+# Unit tests of _downcopy function
+#
+# _downcopy($self, $data, $pos, $len)
+# Write $data into a block of length $len at position $pos,
+# moving everything in the block forwards to make room.
+# Instead of writing the last length($data) bytes from the block
+# (because there isn't room for them any longer) return them.
+#
+#
+
+my $file = "tf$$.txt";
+
+print "1..718\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$: = Tie::File::_default_recsep();
+
+my @subtests = qw(x <x x> x><x <x> <x><x x><x> <x><x> <x><x><x> 0);
+print "ok $N\n"; $N++;
+
+# (3-144) These were generated by 'gentests.pl' to cover all possible cases
+# (I hope)
+# Legend:
+#         x: data is entirely contained within one block
+#        x>: data runs from the middle to the end of the block
+#        <x: data runs from the start to the middle of the block
+#       <x>: data occupies precisely one block
+#      x><x: data overlaps one block boundary
+#     <x><x: data runs from the start of one block into the middle of the next
+#     x><x>: data runs from the middle of one block to the end of the next
+#    <x><x>: data occupies two blocks exactly
+# <x><x><x>: data occupies three blocks exactly
+#         0: data is null
+#
+# For each possible alignment of the old and new data, we investigate
+# up to three situations: old data is shorter, old and new data are the
+# same length, and new data is shorter.
+#
+# try($pos, $old, $new) means to run a test where the data starts at 
+# position $pos, the old data has length $old,
+# and the new data has length $new.
+try( 9659,  6635,  6691);  # old=x        , new=x        ; old < new
+try( 8605,  2394,  2394);  # old=x        , new=x        ; old = new
+try( 9768,  1361,   664);  # old=x        , new=x        ; old > new
+try( 9955,  6429,  6429);  # old=x>       , new=x        ; old = new
+try(10550,  5834,  4123);  # old=x>       , new=x        ; old > new
+try(14580,  6158,   851);  # old=x><x     , new=x        ; old > new
+try(13442, 11134,  1572);  # old=x><x>    , new=x        ; old > new
+try( 8394,     0,  5742);  # old=0        , new=x        ; old < new
+try( 8192,  2819,  6738);  # old=<x       , new=<x       ; old < new
+try( 8192,   514,   514);  # old=<x       , new=<x       ; old = new
+try( 8192,  2196,   858);  # old=<x       , new=<x       ; old > new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try( 8192,  8192,  1290);  # old=<x>      , new=<x       ; old > new
+try( 8192, 10575,  6644);  # old=<x><x    , new=<x       ; old > new
+try( 8192, 16384,  5616);  # old=<x><x>   , new=<x       ; old > new
+try( 8192, 24576,  6253);  # old=<x><x><x>, new=<x       ; old > new
+try( 8192,     0,  6870);  # old=0        , new=<x       ; old < new
+try( 8478,  6259,  7906);  # old=x        , new=x>       ; old < new
+try( 9965,  6419,  6419);  # old=x>       , new=x>       ; old = new
+try(16059,  6102,   325);  # old=x><x     , new=x>       ; old > new
+try( 9503, 15073,  6881);  # old=x><x>    , new=x>       ; old > new
+try( 9759,     0,  6625);  # old=0        , new=x>       ; old < new
+try( 8525,  2081,  8534);  # old=x        , new=x><x     ; old < new
+try(15550,   834,  1428);  # old=x>       , new=x><x     ; old < new
+try(14966,  1668,  3479);  # old=x><x     , new=x><x     ; old < new
+try(16316,  1605,  1605);  # old=x><x     , new=x><x     ; old = new
+try(16093,  4074,   993);  # old=x><x     , new=x><x     ; old > new
+try(14739,  9837,  9837);  # old=x><x>    , new=x><x     ; old = new
+try(14071, 10505,  7344);  # old=x><x>    , new=x><x     ; old > new
+try(12602,     0,  8354);  # old=0        , new=x><x     ; old < new
+try( 8192,  2767,  8192);  # old=<x       , new=<x>      ; old < new
+try( 8192,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try( 8192, 14817,  8192);  # old=<x><x    , new=<x>      ; old > new
+try( 8192, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try( 8192, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try( 8192,     0,  8192);  # old=0        , new=<x>      ; old < new
+try( 8192,  6532, 10882);  # old=<x       , new=<x><x    ; old < new
+try( 8192,  8192, 16044);  # old=<x>      , new=<x><x    ; old < new
+try( 8192,  9555, 11020);  # old=<x><x    , new=<x><x    ; old < new
+try( 8192,  9001,  9001);  # old=<x><x    , new=<x><x    ; old = new
+try( 8192, 11760, 10274);  # old=<x><x    , new=<x><x    ; old > new
+try( 8192, 16384, 10781);  # old=<x><x>   , new=<x><x    ; old > new
+try( 8192, 24576,  9284);  # old=<x><x><x>, new=<x><x    ; old > new
+try( 8192,     0, 12488);  # old=0        , new=<x><x    ; old < new
+try( 8222,  6385, 16354);  # old=x        , new=x><x>    ; old < new
+try(13500,  2884, 11076);  # old=x>       , new=x><x>    ; old < new
+try(14069,  4334, 10507);  # old=x><x     , new=x><x>    ; old < new
+try(14761,  9815,  9815);  # old=x><x>    , new=x><x>    ; old = new
+try(10469,     0, 14107);  # old=0        , new=x><x>    ; old < new
+try( 8192,  4181, 16384);  # old=<x       , new=<x><x>   ; old < new
+try( 8192,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try( 8192, 12087, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try( 8192, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try( 8192, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try( 8192,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try( 8192,  4968, 24576);  # old=<x       , new=<x><x><x>; old < new
+try( 8192,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try( 8192, 14163, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try( 8192, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try( 8192, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try( 8192,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try( 8771,   776,     0);  # old=x        , new=0        ; old > new
+try( 8192,  2813,     0);  # old=<x       , new=0        ; old > new
+try(13945,  2439,     0);  # old=x>       , new=0        ; old > new
+try(14493,  6090,     0);  # old=x><x     , new=0        ; old > new
+try( 8192,  8192,     0);  # old=<x>      , new=0        ; old > new
+try( 8192, 10030,     0);  # old=<x><x    , new=0        ; old > new
+try(14983,  9593,     0);  # old=x><x>    , new=0        ; old > new
+try( 8192, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try( 8192, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(10489,     0,     0);  # old=0        , new=0        ; old = new
+
+# (142-223)
+# These tests all take place at the start of the file
+try(    0,   771,  1593);  # old=<x       , new=<x       ; old < new
+try(    0,  4868,  4868);  # old=<x       , new=<x       ; old = new
+try(    0,   147,   118);  # old=<x       , new=<x       ; old > new
+try(    0,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(    0,  8192,  4574);  # old=<x>      , new=<x       ; old > new
+try(    0, 11891,  1917);  # old=<x><x    , new=<x       ; old > new
+try(    0, 16384,  5155);  # old=<x><x>   , new=<x       ; old > new
+try(    0, 24576,  2953);  # old=<x><x><x>, new=<x       ; old > new
+try(    0,     0,  1317);  # old=0        , new=<x       ; old < new
+try(    0,  5609,  8192);  # old=<x       , new=<x>      ; old < new
+try(    0,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(    0, 11083,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(    0, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(    0, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(    0,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(    0,  6265,  9991);  # old=<x       , new=<x><x    ; old < new
+try(    0,  8192, 16119);  # old=<x>      , new=<x><x    ; old < new
+try(    0, 10218, 11888);  # old=<x><x    , new=<x><x    ; old < new
+try(    0, 14126, 14126);  # old=<x><x    , new=<x><x    ; old = new
+try(    0, 12002,  9034);  # old=<x><x    , new=<x><x    ; old > new
+try(    0, 16384, 13258);  # old=<x><x>   , new=<x><x    ; old > new
+try(    0, 24576, 14367);  # old=<x><x><x>, new=<x><x    ; old > new
+try(    0,     0, 10881);  # old=0        , new=<x><x    ; old < new
+try(    0,  6448, 16384);  # old=<x       , new=<x><x>   ; old < new
+try(    0,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try(    0, 15082, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try(    0, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(    0, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(    0,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(    0,  2421, 24576);  # old=<x       , new=<x><x><x>; old < new
+try(    0,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try(    0, 11655, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try(    0, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try(    0, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(    0,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(    0,  6530,     0);  # old=<x       , new=0        ; old > new
+try(    0,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(    0, 14707,     0);  # old=<x><x    , new=0        ; old > new
+try(    0, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(    0, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(    0,     0,     0);  # old=0        , new=0        ; old = new
+
+# (224-277)
+# These tests all take place at the end of the file
+$FLEN = 40960;  # Force the file to be exactly 40960 bytes long
+try(32768,  8192,  8192);  # old=<x>      , new=<x       ; old = new
+try(32768,  8192,  4026);  # old=<x>      , new=<x       ; old > new
+try(24576, 16384,  1917);  # old=<x><x>   , new=<x       ; old > new
+try(16384, 24576,  3818);  # old=<x><x><x>, new=<x       ; old > new
+try(40960,     0,  2779);  # old=0        , new=<x       ; old < new
+try(32768,  8192,  8192);  # old=<x>      , new=<x>      ; old = new
+try(24576, 16384,  8192);  # old=<x><x>   , new=<x>      ; old > new
+try(16384, 24576,  8192);  # old=<x><x><x>, new=<x>      ; old > new
+try(40960,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(32768,  8192, 10724);  # old=<x>      , new=<x><x    ; old < new
+try(24576, 16384, 12221);  # old=<x><x>   , new=<x><x    ; old > new
+try(16384, 24576, 15030);  # old=<x><x><x>, new=<x><x    ; old > new
+try(40960,     0, 11752);  # old=0        , new=<x><x    ; old < new
+try(32768,  8192, 16384);  # old=<x>      , new=<x><x>   ; old < new
+try(24576, 16384, 16384);  # old=<x><x>   , new=<x><x>   ; old = new
+try(16384, 24576, 16384);  # old=<x><x><x>, new=<x><x>   ; old > new
+try(40960,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(32768,  8192, 24576);  # old=<x>      , new=<x><x><x>; old < new
+try(24576, 16384, 24576);  # old=<x><x>   , new=<x><x><x>; old < new
+try(16384, 24576, 24576);  # old=<x><x><x>, new=<x><x><x>; old = new
+try(40960,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(35973,  4987,     0);  # old=x>       , new=0        ; old > new
+try(32768,  8192,     0);  # old=<x>      , new=0        ; old > new
+try(29932, 11028,     0);  # old=x><x>    , new=0        ; old > new
+try(24576, 16384,     0);  # old=<x><x>   , new=0        ; old > new
+try(16384, 24576,     0);  # old=<x><x><x>, new=0        ; old > new
+try(40960,     0,     0);  # old=0        , new=0        ; old = new
+
+# (278-357)
+# These tests all take place at the end of the file
+$FLEN = 42000;  # Force the file to be exactly 42000 bytes long
+try(41275,   725,  4059);  # old=x        , new=x        ; old < new
+try(41683,   317,   317);  # old=x        , new=x        ; old = new
+try(41225,   775,   405);  # old=x        , new=x        ; old > new
+try(35709,  6291,   284);  # old=x><x     , new=x        ; old > new
+try(42000,     0,  2434);  # old=0        , new=x        ; old < new
+try(40960,  1040,  1608);  # old=<x       , new=<x       ; old < new
+try(40960,  1040,  1040);  # old=<x       , new=<x       ; old = new
+try(40960,  1040,   378);  # old=<x       , new=<x       ; old > new
+try(32768,  9232,  5604);  # old=<x><x    , new=<x       ; old > new
+try(42000,     0,  6637);  # old=0        , new=<x       ; old < new
+try(41022,   978,  8130);  # old=x        , new=x>       ; old < new
+try(39994,  2006,   966);  # old=x><x     , new=x>       ; old > new
+try(42000,     0,  7152);  # old=0        , new=x>       ; old < new
+try(41613,   387, 10601);  # old=x        , new=x><x     ; old < new
+try(38460,  3540,  3938);  # old=x><x     , new=x><x     ; old < new
+try(36725,  5275,  5275);  # old=x><x     , new=x><x     ; old = new
+try(37990,  4010,  3199);  # old=x><x     , new=x><x     ; old > new
+try(42000,     0,  9189);  # old=0        , new=x><x     ; old < new
+try(40960,  1040,  8192);  # old=<x       , new=<x>      ; old < new
+try(32768,  9232,  8192);  # old=<x><x    , new=<x>      ; old > new
+try(42000,     0,  8192);  # old=0        , new=<x>      ; old < new
+try(40960,  1040, 11778);  # old=<x       , new=<x><x    ; old < new
+try(32768,  9232, 13792);  # old=<x><x    , new=<x><x    ; old < new
+try(32768,  9232,  9232);  # old=<x><x    , new=<x><x    ; old = new
+try(32768,  9232,  8795);  # old=<x><x    , new=<x><x    ; old > new
+try(42000,     0,  8578);  # old=0        , new=<x><x    ; old < new
+try(41531,   469, 15813);  # old=x        , new=x><x>    ; old < new
+try(39618,  2382,  9534);  # old=x><x     , new=x><x>    ; old < new
+try(42000,     0, 15344);  # old=0        , new=x><x>    ; old < new
+try(40960,  1040, 16384);  # old=<x       , new=<x><x>   ; old < new
+try(32768,  9232, 16384);  # old=<x><x    , new=<x><x>   ; old < new
+try(42000,     0, 16384);  # old=0        , new=<x><x>   ; old < new
+try(40960,  1040, 24576);  # old=<x       , new=<x><x><x>; old < new
+try(32768,  9232, 24576);  # old=<x><x    , new=<x><x><x>; old < new
+try(42000,     0, 24576);  # old=0        , new=<x><x><x>; old < new
+try(41500,   500,     0);  # old=x        , new=0        ; old > new
+try(40960,  1040,     0);  # old=<x       , new=0        ; old > new
+try(35272,  6728,     0);  # old=x><x     , new=0        ; old > new
+try(32768,  9232,     0);  # old=<x><x    , new=0        ; old > new
+try(42000,     0,     0);  # old=0        , new=0        ; old = new
+
+sub try {
+  my ($pos, $len, $newlen) = @_;
+  open F, "> $file" or die "Couldn't open file $file: $!";
+  binmode F;
+
+  # The record has exactly 17 characters.  This will help ensure that
+  # even if _downcoopy screws up, the data doesn't coincidentally
+  # look good because the remainder accidentally lines up.
+  my $d = substr("0123456789abcdef$:", -17);
+  my $recs = defined($FLEN) ?
+    int($FLEN/length($d))+1 : # enough to make up at least $FLEN
+    int(8192*5/length($d))+1; # at least 5 blocks' worth
+  my $oldfile = $d x $recs;
+  my $flen = defined($FLEN) ? $FLEN : $recs * 17;
+  substr($oldfile, $FLEN) = "" if defined $FLEN;  # truncate
+  print F $oldfile;
+  close F;
+
+  die "wrong length!" unless -s $file == $flen;
+
+  my $newdata = "-" x $newlen;
+  my $expected = $oldfile;
+  my $old = defined $len ? substr($expected, $pos, $len) 
+                         : substr($expected, $pos);
+  $old = "$newdata$old";
+  my $x_retval;
+  if (defined $len) {
+    substr($expected, $pos, $len, substr($old, 0, $len, ""));
+    $x_retval = $old;
+  } else {
+    substr($expected, $pos) = $old;
+    $x_retval = "";
+  }
+
+  my $o = tie my @lines, 'Tie::File', $file or die $!;
+  local $SIG{ALRM} = sub { die "Alarm clock" };
+  my $a_retval = eval { alarm(5) unless $^P; $o->_downcopy($newdata, $pos, $len) };
+  my $err = $@;
+  undef $o; untie @lines; alarm(0);
+  if ($err) {
+    if ($err =~ /^Alarm clock/) {
+      print "# Timeout\n";
+      print "not ok $N\n"; $N++;
+      print "not ok $N\n"; $N++;
+      return;
+    } else {
+      $@ = $err;
+      die;
+    }
+  }
+
+  open F, "< $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  my $actual;
+  { local $/;
+    $actual = <F>;
+  }
+  close F;
+
+  my ($alen, $xlen) = (length $actual, length $expected);
+  unless ($alen == $xlen) {
+    my @ARGS = @_;
+    for (@ARGS) { $_ = "UNDEF" unless defined }
+    print "# try(@ARGS) expected file length $xlen, actual $alen!\n";
+  }
+  print $actual eq $expected ? "ok $N\n" : "not ok $N\n";
+  $N++;
+  print $a_retval eq $x_retval ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  if (defined $len) {
+    try($pos, undef, $newlen);
+  }
+}
+
+
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq "$c[$_]$:") {
+      $msg = "expected <$c[$_]$:>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}

Added: vendor/perl/dist/dist/Tie-File/t/29a_upcopy.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/29a_upcopy.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/29a_upcopy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,211 @@
+#!/usr/bin/perl
+#
+# Unit tests of _upcopy function
+#
+# _upcopy($self, $source, $dest, $len)
+#
+# Take a block of data of leength $len at $source and copy it
+# to $dest, which must be <= $source but which need not be <= $source - $len
+# (That is, this will only copy a block to a position earlier in the file,
+# but the source and destination regions may overlap.)
+
+
+my $file = "tf$$.txt";
+
+print "1..55\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+$: = Tie::File::_default_recsep();
+
+my @subtests = qw(x <x x> x><x <x> <x><x x><x> <x><x> <x><x><x> 0);
+
+$FLEN = 40970;  # 2410 records of 17 chars each
+
+# (2-7) Trivial non-moves at start of file
+try(0, 0, 0);
+try(0, 0, 10);
+try(0, 0, 100);
+try(0, 0, 1000);
+try(0, 0, 10000);
+try(0, 0, 20000);
+
+# (8-13) Trivial non-moves in middle of file
+try(100, 100, 0);
+try(100, 100, 10);
+try(100, 100, 100);
+try(100, 100, 1000);
+try(100, 100, 10000);
+try(100, 100, 20000);
+
+# (14) Trivial non-move at end of file
+try($FLEN, $FLEN, 0);
+
+# (15-17) Trivial non-move of tail of file
+try(0, 0, undef);
+try(100, 100, undef);
+try($FLEN, $FLEN, undef);
+
+# (18-24) Moves to start of file
+try(100, 0, 0);
+try(100, 0, 10);
+try(100, 0, 100);
+try(100, 0, 1000);
+try(100, 0, 10000);
+try(100, 0, 20000);
+try(100, 0, undef);
+
+# (25-31) Moves in middle of file
+try(200, 100, 0);
+try(200, 100, 10);
+try(200, 100, 100);
+try(200, 100, 1000);
+try(200, 100, 10000);
+try(200, 100, 20000);
+try(200, 100, undef);
+
+# (32-43) Moves from end of file
+try($FLEN, 10000, 0);
+try($FLEN-10, 10000, 10);
+try($FLEN-100, 10000, 100);
+try($FLEN-1000, 200, 1000);
+try($FLEN-10000, 200, 10000);
+try($FLEN-20000, 200, 20000);
+try($FLEN, 10000, undef);
+try($FLEN-10, 10000, undef);
+try($FLEN-100, 10000, undef);
+try($FLEN-1000, 200, undef);
+try($FLEN-10000, 200, undef);
+try($FLEN-20000, 200, undef);
+
+$FLEN = 40960;
+
+# (44-55) Moves from end of file when file ends on a block boundary
+try($FLEN, 10000, 0);
+try($FLEN-10, 10000, 10);
+try($FLEN-100, 10000, 100);
+try($FLEN-1000, 200, 1000);
+try($FLEN-10000, 200, 10000);
+try($FLEN-20000, 200, 20000);
+try($FLEN, 10000, undef);
+try($FLEN-10, 10000, undef);
+try($FLEN-100, 10000, undef);
+try($FLEN-1000, 200, undef);
+try($FLEN-10000, 200, undef);
+try($FLEN-20000, 200, undef);
+
+sub try {
+  my ($src, $dst, $len) = @_;
+  open F, "> $file" or die "Couldn't open file $file: $!";
+  binmode F;
+
+  # The record has exactly 17 characters.  This will help ensure that
+  # even if _upcopy screws up, the data doesn't coincidentally
+  # look good because the remainder accidentally lines up.
+  my $d = substr("0123456789abcdef$:", -17);
+  my $recs = defined($FLEN) ?
+    int($FLEN/length($d))+1 : # enough to make up at least $FLEN
+    int(8192*5/length($d))+1; # at least 5 blocks' worth
+  my $oldfile = $d x $recs;
+  my $flen = defined($FLEN) ? $FLEN : $recs * 17;
+  substr($oldfile, $FLEN) = "" if defined $FLEN;  # truncate
+  print F $oldfile;
+  close F;
+
+  die "wrong length!" unless -s $file == $flen;
+
+  # If len is specified, use that.  If it's undef,
+  # then behave *as if* we had specified the whole rest of the file
+  my $expected = $oldfile;
+  if (defined $len) {
+    substr($expected, $dst, $len) = substr($expected, $src, $len);
+  } else {
+    substr($expected, $dst) = substr($expected, $src);
+  }
+
+  my $o = tie my @lines, 'Tie::File', $file or die $!;
+  local $SIG{ALRM} = sub { die "Alarm clock" };
+  my $a_retval = eval { alarm(5) unless $^P; $o->_upcopy($src, $dst, $len) };
+  my $err = $@;
+  undef $o; untie @lines; alarm(0);
+  if ($err) {
+    if ($err =~ /^Alarm clock/) {
+      print "# Timeout\n";
+      print "not ok $N\n"; $N++;
+      return;
+    } else {
+      $@ = $err;
+      die;
+    }
+  }
+
+  open F, "< $file" or die "Couldn't open file $file: $!";
+  binmode F;
+  my $actual;
+  { local $/;
+    $actual = <F>;
+  }
+  close F;
+
+  my ($alen, $xlen) = (length $actual, length $expected);
+  unless ($alen == $xlen) {
+    print "# try(@_) expected file length $xlen, actual $alen!\n";
+  }
+  print $actual eq $expected ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+
+
+use POSIX 'SEEK_SET';
+sub check_contents {
+  my @c = @_;
+  my $x = join $:, @c, '';
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+#  my $open = open FH, "< $file";
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix($a, $x);
+    print "not ok $N\n# expected <$x>, got <$a>\n";
+  }
+  $N++;
+
+  # now check FETCH:
+  my $good = 1;
+  my $msg;
+  for (0.. $#c) {
+    my $aa = $a[$_];
+    unless ($aa eq "$c[$_]$:") {
+      $msg = "expected <$c[$_]$:>, got <$aa>";
+      ctrlfix($msg);
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N # $msg\n";
+  $N++;
+
+  print $o->_check_integrity($file, $ENV{INTEGRITY}) 
+      ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/30_defer.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/30_defer.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/30_defer.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,328 @@
+#!/usr/bin/perl
+#
+# Check ->defer and ->flush methods
+#
+# This is the old version, which you used in the past when
+# there was a defer buffer separate from the read cache.  
+# There isn't any longer.
+#
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+my ($o, $n);
+
+print "1..79\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3-6) Deferred storage
+$o->defer;
+$a[3] = "rec3";
+check_contents($data);          # nothing written yet
+$a[4] = "rec4";
+check_contents($data);          # nothing written yet
+
+# (7-8) Flush
+$o->flush;
+check_contents($data . "rec3$:rec4$:");          # now it's written
+
+# (9-12) Deferred writing disabled?
+$a[3] = "rec9";
+check_contents("${data}rec9$:rec4$:");
+$a[4] = "rec8";
+check_contents("${data}rec9$:rec8$:");
+
+# (13-18) Now let's try two batches of records
+$#a = 2;
+$o->defer;
+$a[0] = "record0";
+check_contents($data);          # nothing written yet
+$a[2] = "record2";
+check_contents($data);          # nothing written yet
+$o->flush;
+check_contents("record0$:rec1$:record2$:");
+
+# (19-22) Deferred writing past the end of the file
+$o->defer;
+$a[4] = "record4";
+check_contents("record0$:rec1$:record2$:");
+$o->flush;
+check_contents("record0$:rec1$:record2$:$:record4$:");
+
+
+# (23-26) Now two long batches
+$o->defer;
+for (0..2, 4..6) {
+  $a[$_] = "r$_";
+}
+check_contents("record0$:rec1$:record2$:$:record4$:");
+$o->flush;
+check_contents(join $:, "r0".."r2", "", "r4".."r6", "");
+
+# (27-30) Now let's make sure that discarded writes are really discarded
+# We have a 2Mib buffer here, so we can be sure that we aren't accidentally
+# filling it up
+$o->defer;
+for (0, 3, 7) {
+  $a[$_] = "discarded$_";
+}
+check_contents(join $:, "r0".."r2", "", "r4".."r6", "");
+$o->discard;
+check_contents(join $:, "r0".."r2", "", "r4".."r6", "");
+
+################################################################
+#
+# Now we're going to test the results of a small memory limit
+#
+# 
+undef $o;  untie @a;
+$data = join "$:", map("record$_", 0..7), "";  # records are 8 or 9 bytes long
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+
+# Limit cache+buffer size to 47 bytes 
+my $MAX = 47;
+#  -- that's enough space for 5 records, but not 6, on both \n and \r\n systems
+my $BUF = 20;
+#  -- that's enough space for 2 records, but not 3, on both \n and \r\n systems
+$o = tie @a, 'Tie::File', $file, memory => $MAX, dw_size => $BUF;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (31-32) Fill up the read cache
+my @z;
+ at z = @a;                        
+# the cache now contains records 3,4,5,6,7.
+check_caches({map(($_ => "record$_$:"), 3..7)}, 
+             {});
+
+# (33-44) See if overloading the defer starts by flushing the read cache
+# and then flushes out the defer
+$o->defer;
+$a[0] = "recordA";              # That should flush record 3 from the cache
+check_caches({map(($_ => "record$_$:"), 4..7)}, 
+             {0 => "recordA$:"});
+check_contents($data);
+
+$a[1] = "recordB";              # That should flush record 4 from the cache
+check_caches({map(($_ => "record$_$:"), 5..7)}, 
+             {0 => "recordA$:",
+              1 => "recordB$:"});
+check_contents($data);
+
+$a[2] = "recordC";              # That should flush the whole darn defer
+# This shouldn't change the cache contents
+check_caches({map(($_ => "record$_$:"), 5..7)}, 
+             {});               # URRRP
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+$a[3] = "recordD";         # even though we flushed, deferring is STILL ENABLED
+check_caches({map(($_ => "record$_$:"), 5..7)},
+             {3 => "recordD$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+# Check readcache-deferbuffer interactions
+
+# (45-47) This should remove outdated data from the read cache
+$a[5] = "recordE";
+check_caches({6 => "record6$:", 7 => "record7$:"},
+             {3 => "recordD$:", 5 => "recordE$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+# (48-51) This should read back out of the defer buffer
+# without adding anything to the read cache
+my $z;
+$z = $a[5];
+print $z eq "recordE" ? "ok $N\n" : "not ok $N\n";  $N++;
+check_caches({6 => "record6$:", 7 => "record7$:"},
+             {3 => "recordD$:", 5 => "recordE$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+# (52-55) This should repopulate the read cache with a new record
+$z = $a[0];
+print $z eq "recordA" ? "ok $N\n" : "not ok $N\n";  $N++;
+check_caches({0 => "recordA$:", 6 => "record6$:", 7 => "record7$:"},
+             {3 => "recordD$:", 5 => "recordE$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+# (56-59) This should flush the LRU record from the read cache
+$z = $a[4];
+print $z eq "record4" ? "ok $N\n" : "not ok $N\n";  $N++;
+check_caches({7 => "record7$:", 0 => "recordA$:", 4 => "record4$:"},
+             {3 => "recordD$:", 5 => "recordE$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             record3 record4 record5 record6 record7)) . "$:");
+
+# (60-63) This should FLUSH the deferred buffer
+$z = splice @a, 3, 1, "recordZ";
+print $z eq "recordD" ? "ok $N\n" : "not ok $N\n";  $N++;
+check_caches({7 => "record7$:", 0 => "recordA$:", 4 => "record4$:", 3 => "recordZ$:"},
+             {}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             recordZ record4 recordE record6 record7)) . "$:");
+
+# (64-66) We should STILL be in deferred writing mode
+$a[5] = "recordX";
+check_caches({7 => "record7$:", 0 => "recordA$:", 4 => "record4$:", 3 => "recordZ$:"},
+             {5 => "recordX$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             recordZ record4 recordE record6 record7)) . "$:");
+
+# Fill up the defer buffer again
+$a[4] = "recordP";
+# (67-69) This should OVERWRITE the existing deferred record 
+# and NOT flush the buffer
+$a[5] = "recordQ";   
+check_caches({7 => "record7$:", 0 => "recordA$:", 3 => "recordZ$:"},
+             {5 => "recordQ$:", 4 => "recordP$:"}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             recordZ record4 recordE record6 record7)) . "$:");
+
+# (70-72) Discard should just dump the whole deferbuffer
+$o->discard;
+check_caches({7 => "record7$:", 0 => "recordA$:", 3 => "recordZ$:"},
+             {}); 
+check_contents(join("$:", qw(recordA recordB recordC 
+                             recordZ record4 recordE record6 record7)) . "$:");
+
+# (73-75) NOW we are out of deferred writing mode
+$a[0] = "recordF";
+check_caches({7 => "record7$:", 0 => "recordF$:", 3 => "recordZ$:"},
+             {}); 
+check_contents(join("$:", qw(recordF recordB recordC
+                             recordZ record4 recordE record6 record7)) . "$:");
+
+# (76-79) Last call--untying the array should flush the deferbuffer
+$o->defer;
+$a[0] = "flushed";
+check_caches({7 => "record7$:",                   3 => "recordZ$:"},
+             {0 => "flushed$:" }); 
+check_contents(join("$:", qw(recordF recordB recordC
+                             recordZ record4 recordE record6 record7)) . "$:");
+undef $o;
+untie @a;
+# (79) We can't use check_contents any more, because the object is dead
+open F, "< $file" or die;
+binmode F;
+{ local $/ ; $z = <F> }
+close F;
+my $x = join("$:", qw(flushed recordB recordC
+                      recordZ record4 recordE record6 record7)) . "$:";
+if ($z eq $x) {
+  print "ok $N\n";
+} else {
+  my $msg = ctrlfix("expected <$x>, got <$z>");
+  print "not ok $N \# $msg\n";
+}
+$N++;
+
+################################################################
+
+
+sub check_caches {
+  my ($xcache, $xdefer) = @_;
+
+#  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+#  print $integrity ? "ok $N\n" : "not ok $N\n";
+#  $N++;
+
+  my $good = 1;
+
+  # Copy the contents of the cache into a regular hash
+  my %cache;
+  for my $k ($o->{cache}->ckeys) {
+    $cache{$k} = $o->{cache}->_produce($k);
+  }
+
+  $good &&= hash_equal(\%cache, $xcache, "true cache", "expected cache");
+  $good &&= hash_equal($o->{deferred}, $xdefer, "true defer", "expected defer");
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub hash_equal {
+  my ($a, $b, $ha, $hb) = @_;
+  $ha = 'first hash'  unless defined $ha;
+  $hb = 'second hash' unless defined $hb;
+
+  my $good = 1;
+  my %b_seen;
+
+  for my $k (keys %$a) {
+    if (! exists $b->{$k}) {
+      print ctrlfix("# Key $k is in $ha but not $hb"), "\n";
+      $good = 0;
+    } elsif ($b->{$k} ne $a->{$k}) {
+      print ctrlfix("# Key $k is <$a->{$k}> in $ha but <$b->{$k}> in $hb"), "\n";
+      $b_seen{$k} = 1;
+      $good = 0;
+    } else {
+      $b_seen{$k} = 1;
+    }
+  }
+
+  for my $k (keys %$b) {
+    unless ($b_seen{$k}) {
+      print ctrlfix("# Key $k is in $hb but not $ha"), "\n";
+      $good = 0;
+    }
+  }
+
+  $good;
+}
+
+
+sub check_contents {
+  my $x = shift;
+
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = ctrlfix("# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  local $_ = shift;
+  s/\n/\\n/g;
+  s/\r/\\r/g;
+  $_;
+}
+
+END {
+  undef $o;
+  untie @a if tied @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/31_autodefer.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/31_autodefer.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/31_autodefer.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,182 @@
+#!/usr/bin/perl
+#
+# Check behavior of 'autodefer' feature
+# Mostly this isn't implemented yet
+# This file is primarily here to make sure that the promised ->autodefer
+# method doesn't croak.
+#
+
+use POSIX 'SEEK_SET';
+
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+my ($o, $n, @a);
+
+print "1..65\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# I am an undocumented feature
+$o->{autodefer_filelen_threshhold} = 0;
+# Normally autodeferring only works on large files.  This disables that.
+
+# (3-22) Deferred storage
+$a[3] = "rec3";
+check_autodeferring('OFF');
+$a[4] = "rec4";
+check_autodeferring('OFF');
+$a[5] = "rec5";
+check_autodeferring('ON');
+check_contents($data . "rec3$:rec4$:"); # only the first two were written
+$a[6] = "rec6";
+check_autodeferring('ON');
+check_contents($data . "rec3$:rec4$:"); # still nothing written
+$a[7] = "rec7";
+check_autodeferring('ON');
+check_contents($data . "rec3$:rec4$:"); # still nothing written
+$a[0] = "recX";
+check_autodeferring('OFF');
+check_contents("recX$:rec1$:rec2$:rec3$:rec4$:rec5$:rec6$:rec7$:");
+$a[1] = "recY";
+check_autodeferring('OFF');
+check_contents("recX$:recY$:rec2$:rec3$:rec4$:rec5$:rec6$:rec7$:");
+$a[2] = "recZ";                 # it kicks in here
+check_autodeferring('ON');
+check_contents("recX$:recY$:rec2$:rec3$:rec4$:rec5$:rec6$:rec7$:");
+
+# (23-26) Explicitly enabling deferred writing deactivates autodeferring
+$o->defer;
+check_autodeferring('OFF');
+check_contents("recX$:recY$:recZ$:rec3$:rec4$:rec5$:rec6$:rec7$:");
+$o->discard;
+check_autodeferring('OFF');
+
+# (27-32) Now let's try the CLEAR special case
+ at a = ("r0" .. "r4");
+check_autodeferring('ON');
+# The file was extended to the right length, but nothing was actually written.
+check_contents("$:$:$:$:$:");
+$a[2] = "fish";
+check_autodeferring('OFF');
+check_contents("r0$:r1$:fish$:r3$:r4$:");
+
+# (33-47) Now let's try the originally intended application:  a 'for' loop.
+my $it = 0;
+for (@a) {
+  $_ = "##$_";
+  if ($it == 0) {
+    check_autodeferring('OFF');
+    check_contents("##r0$:r1$:fish$:r3$:r4$:");
+  } elsif ($it == 1) {
+    check_autodeferring('OFF');
+    check_contents("##r0$:##r1$:fish$:r3$:r4$:");
+  } else {
+    check_autodeferring('ON');
+    check_contents("##r0$:##r1$:fish$:r3$:r4$:");
+  }
+  $it++;
+}
+
+# (48-56) Autodeferring should not become active during explicit defer mode
+$o->defer();  # This should flush the pending autodeferred records
+              # and deactivate autodeferring
+check_autodeferring('OFF');
+check_contents("##r0$:##r1$:##fish$:##r3$:##r4$:");
+ at a = ("s0" .. "s4");
+check_autodeferring('OFF');
+check_contents("");
+$o->flush;
+check_autodeferring('OFF');
+check_contents("s0$:s1$:s2$:s3$:s4$:");
+
+undef $o; untie @a;
+
+# Limit cache+buffer size to 47 bytes 
+my $MAX = 47;
+#  -- that's enough space for 5 records, but not 6, on both \n and \r\n systems
+my $BUF = 20;
+#  -- that's enough space for 2 records, but not 3, on both \n and \r\n systems
+# Re-tie the object for more tests
+$o = tie @a, 'Tie::File', $file, autodefer => 0;
+die $! unless $o;
+# I am an undocumented feature
+$o->{autodefer_filelen_threshhold} = 0;
+# Normally autodeferring only works on large files.  This disables that.
+
+# (57-59) Did the autodefer => 0 option work?
+# (If it doesn't, a whole bunch of the other test files will fail.)
+ at a = (0..3);
+check_autodeferring('OFF');
+check_contents(join("$:", qw(0 1 2 3), ""));
+
+# (60-62) Does the ->autodefer method work?
+$o->autodefer(1);
+ at a = (10..13);
+check_autodeferring('ON');
+check_contents("$:$:$:$:");  # This might be unfortunate.
+
+# (63-65) Does the ->autodefer method work?
+$o->autodefer(0);
+check_autodeferring('OFF');
+check_contents(join("$:", qw(10 11 12 13), ""));
+
+
+sub check_autodeferring {
+  my ($x) = shift;
+  my $a = $o->{autodeferring} ? 'ON' : 'OFF';
+  if ($x eq $a) {
+    print "ok $N\n";
+  } else {
+    print "not ok $N \# Autodeferring was $a, expected it to be $x\n";
+  }
+  $N++;
+}
+
+
+sub check_contents {
+  my $x = shift;
+#  for (values %{$o->{cache}}) {
+#    print "# cache=$_";    
+#  }
+  
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    ctrlfix(my $msg = "# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  for (@_) {
+    s/\n/\\n/g;
+    s/\r/\\r/g;
+  }
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/32_defer_misc.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/32_defer_misc.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/32_defer_misc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,232 @@
+#!/usr/bin/perl
+#
+# Check interactions of deferred writing
+# with miscellaneous methods like DELETE, EXISTS,
+# FETCHSIZE, STORESIZE, CLEAR, EXTEND
+#
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+$: = Tie::File::_default_recsep();
+my $data = "rec0$:rec1$:rec2$:";
+my ($o, $n);
+
+print "1..53\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3-6) EXISTS
+if ($] >= 5.006) {
+  eval << 'TESTS';
+$o->defer;
+expect(not exists $a[4]);
+$a[4] = "rec4";
+expect(exists $a[4]);
+check_contents($data);          # nothing written yet
+$o->discard;
+TESTS
+} else {
+    for (3..6) {
+      print "ok $_ \# skipped (no exists for arrays)\n";
+          $N++;
+    }
+}
+
+# (7-10) FETCHSIZE
+$o->defer;
+expect($#a, 2);
+$a[4] = "rec4";
+expect($#a, 4);
+check_contents($data);          # nothing written yet
+$o->discard;
+
+# (11-21) STORESIZE
+$o->defer;
+$#a = 4;
+check_contents($data);          # nothing written yet
+expect($#a, 4);
+$o->flush;
+expect($#a, 4);
+check_contents("$data$:$:");    # two extra empty records
+
+$o->defer;
+$a[4] = "rec4";
+$#a = 2;
+expect($a[4], undef);
+check_contents($data);          # written data was unwritten
+$o->flush;
+check_contents($data);          # nothing left to write
+
+# (22-28) CLEAR
+$o->defer;
+$a[9] = "rec9";
+check_contents($data);          # nothing written yet
+ at a = ();
+check_contents("");             # this happens right away
+expect($a[9], undef);
+$o->flush;
+check_contents("");             # nothing left to write
+
+# (29-34) EXTEND
+# Actually it's not real clear what these tests are for
+# since EXTEND has no defined semantics
+$o->defer;
+ at a = (0..3);
+check_contents("");             # nothing happened yet
+expect($a[3], "3");
+expect($a[4], undef);
+$o->flush;
+check_contents("0$:1$:2$:3$:"); # file now 4 records long
+
+# (35-53) DELETE
+if ($] >= 5.006) {
+  eval << 'TESTS';
+my $del;
+$o->defer;
+$del = delete $a[2];
+check_contents("0$:1$:2$:3$:"); # nothing happened yet
+expect($a[2], "");
+expect($del, "2");
+$del = delete $a[3];            # shortens file!
+check_contents("0$:1$:2$:");    # deferred writes NOT flushed
+expect($a[3], undef);
+expect($a[2], "");
+expect($del, "3");
+$a[2] = "cookies";
+$del = delete $a[2];            # shortens file!
+expect($a[2], undef);
+expect($del, 'cookies');
+check_contents("0$:1$:");
+$a[0] = "crackers";
+$del = delete $a[0];            # file unchanged
+expect($a[0], "");
+expect($del, 'crackers');
+check_contents("0$:1$:");       # no change yet
+$o->flush;
+check_contents("$:1$:");        # record 0 is NOT 'cookies';
+TESTS
+} else {
+    for (35..53) {
+      print "ok $_ \# skipped (no delete for arrays)\n";
+          $N++;
+    }
+}
+
+################################################################
+
+
+sub check_caches {
+  my ($xcache, $xdefer) = @_;
+
+#  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+#  print $integrity ? "ok $N\n" : "not ok $N\n";
+#  $N++;
+
+  my $good = 1;
+  $good &&= hash_equal($o->{cache}, $xcache, "true cache", "expected cache");
+  $good &&= hash_equal($o->{deferred}, $xdefer, "true defer", "expected defer");
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub hash_equal {
+  my ($a, $b, $ha, $hb) = @_;
+  $ha = 'first hash'  unless defined $ha;
+  $hb = 'second hash' unless defined $hb;
+
+  my $good = 1;
+  my %b_seen;
+
+  for my $k (keys %$a) {
+    if (! exists $b->{$k}) {
+      print ctrlfix("# Key $k is in $ha but not $hb"), "\n";
+      $good = 0;
+    } elsif ($b->{$k} ne $a->{$k}) {
+      print ctrlfix("# Key $k is <$a->{$k}> in $ha but <$b->{$k}> in $hb"), "\n";
+      $b_seen{$k} = 1;
+      $good = 0;
+    } else {
+      $b_seen{$k} = 1;
+    }
+  }
+
+  for my $k (keys %$b) {
+    unless ($b_seen{$k}) {
+      print ctrlfix("# Key $k is in $hb but not $ha"), "\n";
+      $good = 0;
+    }
+  }
+
+  $good;
+}
+
+
+sub check_contents {
+  my $x = shift;
+
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = ctrlfix("# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub expect {
+  if (@_ == 1) {
+    print $_[0] ? "ok $N\n" : "not ok $N\n";
+  } elsif (@_ == 2) {
+    my ($a, $x) = @_;
+    if    (! defined($a) && ! defined($x)) { print "ok $N\n" }
+    elsif (  defined($a) && ! defined($x)) { 
+      ctrlfix(my $msg = "expected UNDEF, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+    elsif (! defined($a) &&   defined($x)) { 
+      ctrlfix(my $msg = "expected <$x>, got UNDEF");
+      print "not ok $N \# $msg\n";
+    } elsif ($a eq $x) { print "ok $N\n" }
+    else {
+      ctrlfix(my $msg = "expected <$x>, got <$a>");
+      print "not ok $N \# $msg\n";
+    }
+  } else {
+    die "expect() got ", scalar(@_), " args, should have been 1 or 2";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  local $_ = shift;
+  s/\n/\\n/g;
+  s/\r/\\r/g;
+  $_;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/33_defer_vs.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/33_defer_vs.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/33_defer_vs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,125 @@
+#!/usr/bin/perl
+#
+# Deferred caching of varying size records
+#
+# 30_defer.t always uses records that are 8 bytes long
+# (9 on \r\n machines.)  We might miss some sort of
+# length-calculation bug as a result.  This file will run some of the same
+# tests, but with with varying-length records.
+#
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+# print "1..0\n"; exit;
+$: = Tie::File::_default_recsep();
+my $data = "$:1$:22$:";
+my ($o, $n);
+
+print "1..30\n";
+
+my $N = 1;
+use Tie::File;
+print "ok $N\n"; $N++;
+
+open F, "> $file" or die $!;
+binmode F;
+print F $data;
+close F;
+$o = tie @a, 'Tie::File', $file;
+print $o ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (3-6) Deferred storage
+$o->defer;
+$a[3] = "333";
+check_contents($data);          # nothing written yet
+$a[4] = "4444";
+check_contents($data);          # nothing written yet
+
+# (7-8) Flush
+$o->flush;
+check_contents($data . "333$:4444$:");          # now it's written
+
+# (9-12) Deferred writing disabled?
+$a[3] = "999999999";
+check_contents("${data}999999999$:4444$:");
+$a[4] = "88888888";
+check_contents("${data}999999999$:88888888$:");
+
+# (13-18) Now let's try two batches of records
+$#a = 2;
+$o->defer;
+$a[0] = "55555";
+check_contents($data);          # nothing written yet
+$a[2] = "aaaaaaaaaa";
+check_contents($data);          # nothing written yet
+$o->flush;
+check_contents("55555$:1$:aaaaaaaaaa$:");
+
+# (19-22) Deferred writing past the end of the file
+$o->defer;
+$a[4] = "7777777";
+check_contents("55555$:1$:aaaaaaaaaa$:");
+$o->flush;
+check_contents("55555$:1$:aaaaaaaaaa$:$:7777777$:");
+
+
+# (23-26) Now two long batches
+$o->defer;
+%l = qw(0 2  1 3  2 4  4 5  5 4  6 3);
+for (0..2, 4..6) {
+  $a[$_] = $_ x $l{$_};
+}
+check_contents("55555$:1$:aaaaaaaaaa$:$:7777777$:");
+$o->flush;
+check_contents(join $:, "00", "111", "2222", "", "44444", "5555", "666", "");
+
+# (27-30) Now let's make sure that discarded writes are really discarded
+# We have a 2Mib buffer here, so we can be sure that we aren't accidentally
+# filling it up
+$o->defer;
+for (0, 3, 7) {
+  $a[$_] = "discarded" . $_ x $_;
+}
+check_contents(join $:, "00", "111", "2222", "", "44444", "5555", "666", "");
+$o->discard;
+check_contents(join $:, "00", "111", "2222", "", "44444", "5555", "666", "");
+
+################################################################
+
+
+sub check_contents {
+  my $x = shift;
+
+  my $integrity = $o->_check_integrity($file, $ENV{INTEGRITY});
+  print $integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+
+  local *FH = $o->{fh};
+  seek FH, 0, SEEK_SET;
+
+  my $a;
+  { local $/; $a = <FH> }
+  $a = "" unless defined $a;
+  if ($a eq $x) {
+    print "ok $N\n";
+  } else {
+    my $msg = ctrlfix("# expected <$x>, got <$a>");
+    print "not ok $N\n$msg\n";
+  }
+  $N++;
+}
+
+sub ctrlfix {
+  local $_ = shift;
+  s/\n/\\n/g;
+  s/\r/\\r/g;
+  $_;
+}
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}
+

Added: vendor/perl/dist/dist/Tie-File/t/40_abs_cache.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/40_abs_cache.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/40_abs_cache.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,281 @@
+#!/usr/bin/perl
+#
+# Unit tests for abstract cache implementation
+#
+# Test the following methods:
+# * new()
+# * is_empty()
+# * empty()
+# * lookup(key)
+# * remove(key)
+# * insert(key,val)
+# * update(key,val)
+# * rekey(okeys,nkeys)
+# * expire()
+# * keys()
+# * bytes()
+# DESTROY()
+#
+# 20020327 You somehow managed to miss:
+# * reduce_size_to(bytes)
+#
+
+# print "1..0\n"; exit;
+print "1..42\n";
+
+my ($N, @R, $Q, $ar) = (1);
+
+use Tie::File;
+print "ok $N\n";
+$N++;
+
+my $h = Tie::File::Cache->new(10000) or die;
+print "ok $N\n";
+$N++;
+
+# (3) Are all the methods there?
+{
+  my $good = 1;
+  for my $meth (qw(new is_empty empty lookup remove
+                 insert update rekey expire ckeys bytes
+                   set_limit adj_limit flush  reduce_size_to
+                   _produce _produce_lru )) {
+    unless ($h->can($meth)) {
+      print STDERR "# Method '$meth' is missing.\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+# (4-5) Straight insert and removal FIFO test
+$ar = 'a0';
+for (1..10) {
+  $h->insert($_, $ar++);
+}
+1;
+for (1..10) {
+  push @R, $h->expire;
+}
+$iota = iota('a',9);
+print "@R" eq $iota
+  ? "ok $N\n" : "not ok $N \# expected ($iota), got (@R)\n";
+$N++;
+check($h);
+
+# (6-7) Remove from empty heap
+$n = $h->expire;
+print ! defined $n ? "ok $N\n" : "not ok $N \# expected UNDEF, got $n";
+$N++;
+check($h);
+
+# (8-9) Interleaved insert and removal
+$Q = 0;
+ at R = ();
+for my $i (1..4) {
+  for my $j (1..$i) {
+    $h->insert($Q, "b$Q");
+    $Q++;
+  }
+  for my $j (1..$i) {
+    push @R, $h->expire;
+  }
+}
+$iota = iota('b', 9);
+print "@R" eq $iota ? "ok $N\n" : "not ok $N \# expected ($iota), got (@R)\n";
+$N++;
+check($h);
+
+# (10) It should be empty now
+print $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (11-12) Insert and delete
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "c$Q");
+  $Q++;
+}
+for (2, 4, 6, 8, 10) {
+  $h->remove($_);
+}
+ at R = ();
+push @R, $n while defined ($n = $h->expire);
+print "@R" eq "c1 c3 c5 c7 c9" ? 
+  "ok $N\n" : "not ok $N \# expected (c1 c3 c5 c7 c9), got (@R)\n";
+$N++;
+check($h);
+
+# (13-14) Interleaved insert and delete
+$Q = 1; my $QQ = 1;
+ at R = ();
+for my $i (1..4) {
+  for my $j (1..$i) {
+    $h->insert($Q, "d$Q");
+    $Q++;
+  }
+  for my $j (1..$i) {
+    $h->remove($QQ) if $QQ % 2 == 0;
+    $QQ++;
+  }
+}
+push @R, $n while defined ($n = $h->expire);
+print "@R" eq "d1 d3 d5 d7 d9" ? 
+  "ok $N\n" : "not ok $N \# expected (d1 d3 d5 d7 d9), got (@R)\n";
+$N++;
+check($h);
+
+# (15-16) Promote
+$h->empty;
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "e$Q");
+  unless ($h->_check_integrity) {
+    die "Integrity failed after inserting ($_, e$Q)\n";
+  }
+  $Q++;
+}
+1;
+for (2, 4, 6, 8, 10) {
+  $h->_promote($_);
+}
+ at R = ();
+push @R, $n while defined ($n = $h->expire);
+print "@R" eq "e1 e3 e5 e7 e9 e2 e4 e6 e8 e10" ? 
+    "ok $N\n" : 
+    "not ok $N \# expected (e1 e3 e5 e7 e9 e2 e4 e6 e8 e10), got (@R)\n";
+$N++;
+check($h);
+
+# (17-22) Lookup
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "f$Q");
+  $Q++;
+}
+1;
+for (2, 4, 6, 4, 8) {
+  my $r = $h->lookup($_);
+  print $r eq "f$_" ? "ok $N\n" : "not ok $N \# expected f$_, got $r\n";
+  $N++;
+}
+check($h);
+
+# (23) It shouldn't be empty
+print ! $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (24-25) Lookup should have promoted the looked-up records
+ at R = ();
+push @R, $n while defined ($n = $h->expire);
+print "@R" eq "f1 f3 f5 f7 f9 f10 f2 f6 f4 f8" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (f1 f3 f5 f7 f9 f10 f2 f6 f4 f8), got (@R)\n";
+$N++;
+check($h);
+
+# (26-29) Typical 'rekey' operation
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "g$Q");
+  $Q++;
+}
+$h->rekey([6,7,8,9,10], [8,9,10,11,12]);
+my %x = qw(1 g1 2 g2  3 g3  4 g4  5 g5
+           8 g6 9 g7 10 g8 11 g9 12 g10);
+{
+  my $good = 1;
+  for my $k (keys %x) {
+    my $v = $h->lookup($k);
+    $v = "UNDEF" unless defined $v;
+    unless ($v eq $x{$k}) {
+      print "# looked up $k, got $v, expected $x{$k}\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+check($h);
+{
+  my $good = 1;
+  for my $k (6, 7) {
+    my $v = $h->lookup($k);
+    if (defined $v) {
+      print "# looked up $k, got $v, should have been undef\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+check($h);
+
+# (30-31) ckeys
+ at R = sort { $a <=> $b } $h->ckeys;
+print "@R" eq "1 2 3 4 5 8 9 10 11 12" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (1 2 3 4 5 8 9 10 11 12) got (@R)\n";
+$N++;
+check($h);
+1;
+# (32-33) update
+for (1..5, 8..12) {
+  $h->update($_, "h$_");
+}
+ at R = ();
+for (sort { $a <=> $b } $h->ckeys) {
+  push @R, $h->lookup($_);
+}
+print "@R" eq "h1 h2 h3 h4 h5 h8 h9 h10 h11 h12" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (h1 h2 h3 h4 h5 h8 h9 h10 h11 h12) got (@R)\n";
+$N++;
+check($h);
+
+# (34-37) bytes
+my $B;
+$B = $h->bytes;
+print $B == 23 ? "ok $N\n" : "not ok $N \# expected 23, got $B\n";
+$N++;
+check($h);
+$h->update('12', "yobgorgle");
+$B = $h->bytes;
+print $B == 29 ? "ok $N\n" : "not ok $N \# expected 29, got $B\n";
+$N++;
+check($h);
+
+# (38-41) empty
+$h->empty;
+print $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+check($h);
+$n = $h->expire;
+print ! defined $n ? "ok $N\n" : "not ok $N \# expected UNDEF, got $n";
+$N++;
+check($h);
+
+# (42) very weak testing of DESTROY
+undef $h;
+# are we still alive?
+print "ok $N\n";
+$N++;
+
+sub check {
+  my $h = shift;
+  print $h->_check_integrity ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+sub iota {
+  my ($p, $n) = @_;
+  my $r;
+  my $i = 0;
+  while ($i <= $n) {
+    $r .= "$p$i ";
+    $i++;
+  }
+  chop $r;
+  $r;
+}

Added: vendor/perl/dist/dist/Tie-File/t/41_heap.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/41_heap.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/41_heap.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,259 @@
+#!/usr/bin/perl
+#
+# Unit tests for heap implementation
+#
+# Test the following methods:
+# new
+# is_empty
+# empty
+# insert
+# remove
+# popheap
+# promote
+# lookup
+# set_val
+# rekey
+# expire_order
+
+
+# Finish these later.
+
+# They're nonurgent because the important heap stuff is extensively
+# tested by tests 19, 20, 24, 30, 32, 33, and 40, as well as by pretty
+# much everything else.
+print "1..1\n";
+
+
+my ($N, @R, $Q, $ar) = (1);
+
+use Tie::File;
+print "ok $N\n";
+$N++;
+exit;
+
+__END__
+
+my @HEAP_MOVE;
+sub Fake::Cache::_heap_move { push @HEAP_MOVE, @_ }
+
+my $h = Tie::File::Heap->new(bless [] => 'Fake::Cache');
+print "ok $N\n";
+$N++;
+
+# (3) Are all the methods there?
+{
+  my $good = 1;
+  for my $meth (qw(new is_empty empty lookup insert remove popheap
+                   promote set_val rekey expire_order)) {
+    unless ($h->can($meth)) {
+      print STDERR "# Method '$meth' is missing.\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+# (4) Straight insert and removal FIFO test
+$ar = 'a0';
+for (1..10) {
+  $h->insert($_, $ar++);
+}
+for (1..10) {
+  push @R, $h->popheap;
+}
+$iota = iota('a',9);
+print "@R" eq $iota
+  ? "ok $N\n" : "not ok $N \# expected ($iota), got (@R)\n";
+$N++;
+
+# (5) Remove from empty heap
+$n = $h->popheap;
+print ! defined $n ? "ok $N\n" : "not ok $N \# expected UNDEF, got $n";
+$N++;
+
+# (6) Interleaved insert and removal
+$Q = 0;
+ at R = ();
+for my $i (1..4) {
+  for my $j (1..$i) {
+    $h->insert($Q, "b$Q");
+    $Q++;
+  }
+  for my $j (1..$i) {
+    push @R, $h->popheap;
+  }
+}
+$iota = iota('b', 9);
+print "@R" eq $iota ? "ok $N\n" : "not ok $N \# expected ($iota), got (@R)\n";
+$N++;
+
+# (7) It should be empty now
+print $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (8) Insert and delete
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "c$Q");
+  $Q++;
+}
+for (2, 4, 6, 8, 10) {
+  $h->remove($_);
+}
+ at R = ();
+push @R, $n while defined ($n = $h->popheap);
+print "@R" eq "c1 c3 c5 c7 c9" ? 
+  "ok $N\n" : "not ok $N \# expected (c1 c3 c5 c7 c9), got (@R)\n";
+$N++;
+
+# (9) Interleaved insert and delete
+$Q = 1; my $QQ = 1;
+ at R = ();
+for my $i (1..4) {
+  for my $j (1..$i) {
+    $h->insert($Q, "d$Q");
+    $Q++;
+  }
+  for my $j (1..$i) {
+    $h->remove($QQ) if $QQ % 2 == 0;
+    $QQ++;
+  }
+}
+push @R, $n while defined ($n = $h->popheap);
+print "@R" eq "d1 d3 d5 d7 d9" ? 
+  "ok $N\n" : "not ok $N \# expected (d1 d3 d5 d7 d9), got (@R)\n";
+$N++;
+
+# (10) Promote
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "e$Q");
+  $Q++;
+}
+for (2, 4, 6, 8, 10) {
+  $h->promote($_);
+}
+ at R = ();
+push @R, $n while defined ($n = $h->popheap);
+print "@R" eq "e1 e3 e5 e7 e9 e2 e4 e6 e8 e10" ? 
+  "ok $N\n" : 
+  "not ok $N \# expected (e1 e3 e5 e7 e9 e2 e4 e6 e8 e10), got (@R)\n";
+$N++;
+
+# (11-15) Lookup
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "f$Q");
+  $Q++;
+}
+for (2, 4, 6, 4, 8) {
+  my $r = $h->lookup($_);
+  print $r eq "f$_" ? "ok $N\n" : "not ok $N \# expected f$_, got $r\n";
+  $N++;
+}
+
+# (16) It shouldn't be empty
+print ! $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+
+# (17) Lookup should have promoted the looked-up records
+ at R = ();
+push @R, $n while defined ($n = $h->popheap);
+print "@R" eq "f1 f3 f5 f7 f9 f10 f2 f6 f4 f8" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (f1 f3 f5 f7 f9 f10 f2 f6 f4 f8), got (@R)\n";
+$N++;
+
+# (18-19) Typical 'rekey' operation
+$Q = 1;
+for (1..10) {
+  $h->insert($_, "g$Q");
+  $Q++;
+}
+
+$h->rekey([6,7,8,9,10], [8,9,10,11,12]);
+my %x = qw(1 g1 2 g2  3 g3  4 g4  5 g5
+           8 g6 9 g7 10 g8 11 g9 12 g10);
+{
+  my $good = 1;
+  for my $k (keys %x) {
+    my $v = $h->lookup($k);
+    $v = "UNDEF" unless defined $v;
+    unless ($v eq $x{$k}) {
+      print "# looked up $k, got $v, expected $x{$k}\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+{
+  my $good = 1;
+  for my $k (6, 7) {
+    my $v = $h->lookup($k);
+    if (defined $v) {
+      print "# looked up $k, got $v, should have been undef\n";
+      $good = 0;
+    }
+  }
+  print $good ? "ok $N\n" : "not ok $N\n";
+  $N++;
+}
+
+# (20) keys
+ at R = sort { $a <=> $b } $h->keys;
+print "@R" eq "1 2 3 4 5 8 9 10 11 12" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (1 2 3 4 5 8 9 10 11 12) got (@R)\n";
+$N++;
+
+# (21) update
+for (1..5, 8..12) {
+  $h->update($_, "h$_");
+}
+ at R = ();
+for (sort { $a <=> $b } $h->keys) {
+  push @R, $h->lookup($_);
+}
+print "@R" eq "h1 h2 h3 h4 h5 h8 h9 h10 h11 h12" ?
+  "ok $N\n" : 
+  "not ok $N \# expected (h1 h2 h3 h4 h5 h8 h9 h10 h11 h12) got (@R)\n";
+$N++;
+
+# (22-23) bytes
+my $B;
+$B = $h->bytes;
+print $B == 23 ? "ok $N\n" : "not ok $N \# expected 23, got $B\n";
+$N++;
+$h->update('12', "yobgorgle");
+$B = $h->bytes;
+print $B == 29 ? "ok $N\n" : "not ok $N \# expected 29, got $B\n";
+$N++;
+
+# (24-25) empty
+$h->empty;
+print $h->is_empty ? "ok $N\n" : "not ok $N\n";
+$N++;
+$n = $h->popheap;
+print ! defined $n ? "ok $N\n" : "not ok $N \# expected UNDEF, got $n";
+$N++;
+
+# (26) very weak testing of DESTROY
+undef $h;
+# are we still alive?
+print "ok $N\n";
+$N++;
+
+
+sub iota {
+  my ($p, $n) = @_;
+  my $r;
+  my $i = 0;
+  while ($i <= $n) {
+    $r .= "$p$i ";
+    $i++;
+  }
+  chop $r;
+  $r;
+}

Added: vendor/perl/dist/dist/Tie-File/t/42_offset.t
===================================================================
--- vendor/perl/dist/dist/Tie-File/t/42_offset.t	                        (rev 0)
+++ vendor/perl/dist/dist/Tie-File/t/42_offset.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+#!/usr/bin/perl
+
+# 2003-04-09 Tels: test the offset method from 0.94
+
+use Test::More;
+use strict;
+use File::Spec;
+
+use POSIX 'SEEK_SET';
+my $file = "tf$$.txt";
+
+BEGIN
+  {
+  $| = 1;
+  unshift @INC, File::Spec->catdir(File::Spec->updir, 'lib');
+  chdir 't' if -d 't';
+  print "# INC = @INC\n";
+
+  plan tests => 24;
+
+  use_ok ('Tie::File');
+  }
+
+$/ = "#";	# avoid problems with \n\r vs. \n
+
+my @a;
+my $o = tie @a, 'Tie::File', $file, autodefer => 0;
+
+is (ref($o), 'Tie::File');
+
+is ($o->offset(0), 0, 'first one always there');
+is ($o->offset(1), undef, 'no offsets yet');
+
+$a[0] = 'Bourbon';
+is ($o->offset(0), 0, 'first is ok');
+is ($o->offset(1), 8, 'and second ok');
+is ($o->offset(2), undef, 'third undef');
+
+$a[1] = 'makes';
+is ($o->offset(0), 0, 'first is ok');
+is ($o->offset(1), 8, 'and second ok');
+is ($o->offset(2), 14, 'and third ok');
+is ($o->offset(3), undef, 'fourth undef');
+
+$a[2] = 'the baby';
+is ($o->offset(0), 0, 'first is ok');
+is ($o->offset(1), 8, 'and second ok');
+is ($o->offset(2), 14, 'and third ok');
+is ($o->offset(3), 23, 'and fourth ok');
+is ($o->offset(4), undef, 'fourth undef');
+
+$a[3] = 'grin';
+is ($o->offset(0), 0, 'first is ok');
+is ($o->offset(1), 8, 'and second ok');
+is ($o->offset(2), 14, 'and third ok');
+is ($o->offset(3), 23, 'and fourth ok');
+is ($o->offset(4), 28, 'and fifth ok');
+
+$a[4] = '!';
+is ($o->offset(5), 30, 'and fifth ok');
+$a[3] = 'water';
+is ($o->offset(4), 29, 'and fourth changed ok');
+is ($o->offset(5), 31, 'and fifth ok');
+
+END {
+  undef $o;
+  untie @a;
+  1 while unlink $file;
+}

Added: vendor/perl/dist/dist/autouse/t/lib/MyTestModule2.pm
===================================================================
--- vendor/perl/dist/dist/autouse/t/lib/MyTestModule2.pm	                        (rev 0)
+++ vendor/perl/dist/dist/autouse/t/lib/MyTestModule2.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,12 @@
+package MyTestModule2;
+use warnings;
+
+ at ISA = Exporter;
+require Exporter;
+ at EXPORT_OK = 'test_function2';
+
+sub test_function2 {
+  return 'works';
+}
+
+1;

Added: vendor/perl/dist/dist/bignum/t/overrides.t
===================================================================
--- vendor/perl/dist/dist/bignum/t/overrides.t	                        (rev 0)
+++ vendor/perl/dist/dist/bignum/t/overrides.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,112 @@
+#!perl -w
+
+# Test behaviour of hex and oct overrides in detail, and also how the three
+# modules interact.
+
+use Test::More tests => 35;
+
+# For testing that existing CORE::GLOBAL overrides are not clobbered
+BEGIN
+  {
+  if ($] > 5.009004)
+    {
+    no warnings 'syntax';
+    *CORE::GLOBAL::hex = sub(_) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+    *CORE::GLOBAL::oct = sub(_) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+    }
+  else
+    {
+    *CORE::GLOBAL::hex = sub(;$) { ++$hex_called; CORE::hex(@_?$_[0]:$_) };
+    *CORE::GLOBAL::oct = sub(;$) { ++$oct_called; CORE::oct(@_?$_[0]:$_) };
+    }
+  }
+
+{
+  use bigint;
+  $_ = "20";
+  is hex, "32", 'bigint hex override without arguments infers $_';
+  is oct, "16", 'bigint oct override without arguments infers $_';
+  @_ = 1..20;
+  is hex(@_), "32", 'bigint hex override provides scalar context';
+  is oct(@_), "16", 'bigint oct override provides scalar context';
+  SKIP:
+    {
+    skip "no lexical hex/oct", 2 unless $] > do { no bigint; 5.009004};
+    is ref hex(1), 'Math::BigInt',
+      'bigint hex() works when bignum and bigrat are loaded';
+    is ref oct(1), 'Math::BigInt',
+      'bigint oct() works when bignum and bigrat are loaded';
+    }
+}
+{
+  use bignum;
+  $_ = "20";
+  is hex, "32", 'bignum hex override without arguments infers $_';
+  is oct, "16", 'bignum oct override without arguments infers $_';
+  @_ = 1..20;
+  is hex(@_), "32", 'bignum hex override provides scalar context';
+  is oct(@_), "16", 'bignum oct override provides scalar context';
+  SKIP:
+    {
+    skip "no lexical hex/oct", 2 unless $] > 5.009004;
+    is ref hex(1), 'Math::BigInt',
+      'bignum hex() works when bigint and bigrat are loaded';
+    is ref oct(1), 'Math::BigInt',
+      'bignum oct() works when bigint and bigrat are loaded';
+    }
+}
+{
+  use bigrat;
+  $_ = "20";
+  is hex, "32", 'bigrat hex override without arguments infers $_';
+  is oct, "16", 'bigrat oct override without arguments infers $_';
+  @_ = 1..20;
+  is hex(@_), "32", 'bigrat hex override provides scalar context';
+  is oct(@_), "16", 'bigrat oct override provides scalar context';
+  SKIP:
+    {
+    skip "no lexical hex/oct", 2 unless $] > 5.009004;
+    is ref hex(1), 'Math::BigInt',
+      'bigrat hex() works when bignum and bigint are loaded';
+    is ref oct(1), 'Math::BigInt',
+      'bigrat oct() works when bignum and bigint are loaded';
+    }
+}
+
+$hex_called = 0;
+() = hex 0;
+is $hex_called, 1, 'existing hex overrides are called';
+$oct_called = 0;
+() = oct 0;
+is $oct_called, 1, 'existing oct overrides are called';
+
+{
+  package _importer;
+  {
+    use bigint 'hex', 'oct';
+    ::is \&hex, \&bigint::hex, 'exported hex function';
+    ::is \&oct, \&bigint::oct, 'exported oct function';
+  }
+  ::ok ref hex(), 'exported hex function returns ref outside pragma scope';
+  ::ok ref oct(), 'exported oct function returns ref outside pragma scope';
+  ::is oct("20"), "16", 'exported oct function works with "decimal"';
+    # (used to return 20 because it thought it was decimal)
+}
+{
+  package _importer2;
+  use bignum 'hex', 'oct';
+  ::is \&hex, \&bignum::hex, 'bignum exports hex';
+  ::is \&oct, \&bignum::oct, 'bignum exports oct';
+  ::is \&hex, \&bigint::hex, 'bignum exports same hex as bigint';
+  ::is \&oct, \&bigint::oct, 'bignum exports same oct as bigint';
+}
+{
+  package _importer3;
+  use bigrat 'hex', 'oct';
+  ::is \&hex, \&bigrat::hex, 'bigrat exports hex';
+  ::is \&oct, \&bigrat::oct, 'bigrat exports oct';
+  ::is \&hex, \&bigint::hex, 'bigrat exports same hex as bigint';
+  ::is \&oct, \&bigint::oct, 'bigrat exports same oct as bigint';
+}
+is ref(hex 0), "", 'hex export is not global';
+is ref(oct 0), "", 'oct export is not global';

Added: vendor/perl/dist/dist/threads-shared/t/dualvar.t
===================================================================
--- vendor/perl/dist/dist/threads-shared/t/dualvar.t	                        (rev 0)
+++ vendor/perl/dist/dist/threads-shared/t/dualvar.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,447 @@
+use strict;
+use warnings;
+
+BEGIN {
+    use Config;
+    if (! $Config{'useithreads'}) {
+        print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+        exit(0);
+    }
+}
+
+use ExtUtils::testlib;
+
+BEGIN {
+    $| = 1;
+    print("1..226\n");    ### Number of tests that will be run ###
+}
+
+use threads;
+use threads::shared;
+use Scalar::Util qw(dualvar);
+
+my $TEST = 1;
+
+sub ok {
+    my ($ok, $name) = @_;
+
+    # You have to do it this way or VMS will get confused.
+    if ($ok) {
+        print("ok $TEST - $name\n");
+    } else {
+        print("not ok $TEST - $name\n");
+        printf("# Failed test at line %d\n", (caller(1))[2]);
+    }
+
+    $TEST++;
+}
+
+sub ok_iv
+{
+    my ($var, $iv) = @_;
+    ok($var == $iv, 'IV number preserved');
+    ok($var eq $iv, 'String preserved');
+}
+
+sub ok_nv
+{
+    my ($var, $nv) = @_;
+    ok($var == $nv, 'NV number preserved');
+    ok($var eq $nv, 'String preserved');
+}
+
+sub ok_uv
+{
+    my ($var, $uv) = @_;
+    ok($var == $uv, 'UV number preserved');
+    ok($var > 0, 'UV number preserved');
+    ok($var eq $uv, 'String preserved');
+}
+
+### Start of Testing ###
+
+my $iv = dualvar(42, 'Fourty-Two');
+my $nv = dualvar(3.14, 'PI');
+my $bits = ($Config{'use64bitint'}) ? 63 : 31;
+my $uv = dualvar(1<<$bits, 'Large unsigned int');
+
+print("# Shared scalar assignment using shared_clone()\n");
+
+my $siv :shared = shared_clone($iv);
+my $snv :shared = shared_clone($nv);
+my $suv :shared = shared_clone($uv);
+
+ok_iv($siv, $iv);
+ok_nv($snv, $nv);
+ok_uv($suv, $uv);
+
+{
+    print("# Shared array initialization\n");
+
+    my @ary :shared = ($iv, $nv, $uv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared array list assignment\n");
+
+    my @ary :shared;
+    @ary = ($iv, $nv, $uv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared array element assignment\n");
+
+    my @ary :shared;
+    $ary[0] = $iv;
+    $ary[1] = $nv;
+    $ary[2] = $uv;
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared array initialization - shared scalars\n");
+
+    my @ary :shared = ($siv, $snv, $suv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared array list assignment - shared scalars\n");
+
+    my @ary :shared;
+    @ary = ($siv, $snv, $suv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared array element assignment - shared scalars\n");
+
+    my @ary :shared;
+    $ary[0] = $siv;
+    $ary[1] = $snv;
+    $ary[2] = $suv;
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+}
+
+{
+    print("# Shared hash initialization\n");
+
+    my %hsh :shared = (
+        'iv' => $iv,
+        'nv' => $nv,
+        'uv' => $uv,
+    );
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash assignment\n");
+
+    my %hsh :shared;
+    %hsh = (
+        'iv' => $iv,
+        'nv' => $nv,
+        'uv' => $uv,
+    );
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash element assignment\n");
+
+    my %hsh :shared;
+    $hsh{'iv'} = $iv;
+    $hsh{'nv'} = $nv;
+    $hsh{'uv'} = $uv;
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash initialization - shared scalars\n");
+
+    my %hsh :shared = (
+        'iv' => $siv,
+        'nv' => $snv,
+        'uv' => $suv,
+    );
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash assignment - shared scalars\n");
+
+    my %hsh :shared;
+    %hsh = (
+        'iv' => $siv,
+        'nv' => $snv,
+        'uv' => $suv,
+    );
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash element assignment - shared scalars\n");
+
+    my %hsh :shared;
+    $hsh{'iv'} = $siv;
+    $hsh{'nv'} = $snv;
+    $hsh{'uv'} = $suv;
+
+    ok_iv($hsh{'iv'}, $iv);
+    ok_nv($hsh{'nv'}, $nv);
+    ok_uv($hsh{'uv'}, $uv);
+}
+
+{
+    print("# Shared array push\n");
+
+    my @ary :shared;
+    push(@ary, $iv, $nv, $uv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+
+    print("# Shared array pop\n");
+
+    my $xuv = pop(@ary);
+    my $xnv = pop(@ary);
+    my $xiv = pop(@ary);
+
+    ok_iv($xiv, $iv);
+    ok_nv($xnv, $nv);
+    ok_uv($xuv, $uv);
+
+    print("# Shared array unshift\n");
+
+    unshift(@ary, $iv, $nv, $uv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+
+    print("# Shared array shift\n");
+
+    $xiv = shift(@ary);
+    $xnv = shift(@ary);
+    $xuv = shift(@ary);
+
+    ok_iv($xiv, $iv);
+    ok_nv($xnv, $nv);
+    ok_uv($xuv, $uv);
+}
+
+{
+    print("# Shared array push - shared scalars\n");
+
+    my @ary :shared;
+    push(@ary, $siv, $snv, $suv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+
+    print("# Shared array pop - shared scalars\n");
+
+    my $xuv = pop(@ary);
+    my $xnv = pop(@ary);
+    my $xiv = pop(@ary);
+
+    ok_iv($xiv, $iv);
+    ok_nv($xnv, $nv);
+    ok_uv($xuv, $uv);
+
+    print("# Shared array unshift - shared scalars\n");
+
+    unshift(@ary, $siv, $snv, $suv);
+
+    ok_iv($ary[0], $iv);
+    ok_nv($ary[1], $nv);
+    ok_uv($ary[2], $uv);
+
+    print("# Shared array shift - shared scalars\n");
+
+    $xiv = shift(@ary);
+    $xnv = shift(@ary);
+    $xuv = shift(@ary);
+
+    ok_iv($xiv, $iv);
+    ok_nv($xnv, $nv);
+    ok_uv($xuv, $uv);
+}
+
+{
+    print("# Shared hash delete\n");
+
+    my %hsh :shared = (
+        'iv' => $iv,
+        'nv' => $nv,
+        'uv' => $uv,
+    );
+
+    ok_iv(delete($hsh{'iv'}), $iv);
+    ok_nv(delete($hsh{'nv'}), $nv);
+    ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+    print("# Shared hash delete - shared scalars\n");
+
+    my %hsh :shared = (
+        'iv' => $siv,
+        'nv' => $snv,
+        'uv' => $suv,
+    );
+
+    ok_iv(delete($hsh{'iv'}), $iv);
+    ok_nv(delete($hsh{'nv'}), $nv);
+    ok_uv(delete($hsh{'uv'}), $uv);
+}
+
+{
+    print("# Shared array copy to non-shared array\n");
+
+    my @ary :shared = ($iv, $nv, $uv);
+    my @nsa = @ary;
+
+    ok_iv($nsa[0], $iv);
+    ok_nv($nsa[1], $nv);
+    ok_uv($nsa[2], $uv);
+
+    print("# Shared array copy using shared_clone()\n");
+
+    my $copy :shared = shared_clone(\@nsa);
+
+    ok_iv($$copy[0], $iv);
+    ok_nv($$copy[1], $nv);
+    ok_uv($$copy[2], $uv);
+}
+
+{
+    print("# Shared array copy to non-shared array - shared scalars\n");
+
+    my @ary :shared = ($siv, $snv, $suv);
+    my @nsa = @ary;
+
+    ok_iv($nsa[0], $iv);
+    ok_nv($nsa[1], $nv);
+    ok_uv($nsa[2], $uv);
+
+    print("# Shared array copy using shared_clone()\n");
+
+    my $copy :shared = shared_clone(\@nsa);
+
+    ok_iv($$copy[0], $iv);
+    ok_nv($$copy[1], $nv);
+    ok_uv($$copy[2], $uv);
+}
+
+{
+    print("# Shared hash copy to non-shared hash\n");
+
+    my %hsh :shared = (
+        'iv' => $iv,
+        'nv' => $nv,
+        'uv' => $uv,
+    );
+    my %nsh = %hsh;
+
+    ok_iv($nsh{'iv'}, $iv);
+    ok_nv($nsh{'nv'}, $nv);
+    ok_uv($nsh{'uv'}, $uv);
+
+    print("# Shared hash copy using shared_clone()\n");
+
+    my $copy :shared = shared_clone(\%nsh);
+
+    ok_iv($$copy{'iv'}, $iv);
+    ok_nv($$copy{'nv'}, $nv);
+    ok_uv($$copy{'uv'}, $uv);
+}
+
+{
+    print("# Shared hash copy to non-shared hash - shared scalars\n");
+
+    my %hsh :shared = (
+        'iv' => $siv,
+        'nv' => $snv,
+        'uv' => $suv,
+    );
+    my %nsh = %hsh;
+
+    ok_iv($nsh{'iv'}, $iv);
+    ok_nv($nsh{'nv'}, $nv);
+    ok_uv($nsh{'uv'}, $uv);
+
+    print("# Shared hash copy using shared_clone()\n");
+
+    my $copy :shared = shared_clone(\%nsh);
+
+    ok_iv($$copy{'iv'}, $iv);
+    ok_nv($$copy{'nv'}, $nv);
+    ok_uv($$copy{'uv'}, $uv);
+}
+
+print("# Mix it up with a thread\n");
+my @ary :shared;
+my %hsh :shared;
+
+threads->create(sub {
+                    @ary = ($siv);
+                    push(@ary, $snv);
+
+                    %hsh = ( 'nv' => $ary[1] );
+                    $hsh{'iv'} = $ary[0];
+                    $hsh{'uv'} = $suv;
+
+                    $ary[2] = $hsh{'uv'};
+                })->join();
+
+ok_iv($hsh{'iv'}, $ary[0]);
+ok_nv($hsh{'nv'}, $ary[1]);
+ok_uv($hsh{'uv'}, $ary[2]);
+
+# $! behaves like a dualvar, but is really implemented as a tied SV.
+# As a result sharing $! directly only propagates the string value.
+# However, we can create a dualvar from it.
+print("# Errno\n");
+$! = 1;
+my $ss :shared = dualvar($!,$!);
+ok_iv($ss, $!);
+
+exit(0);

Added: vendor/perl/dist/dist/threads-shared/t/object2.t
===================================================================
--- vendor/perl/dist/dist/threads-shared/t/object2.t	                        (rev 0)
+++ vendor/perl/dist/dist/threads-shared/t/object2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,409 @@
+use strict;
+use warnings;
+
+BEGIN {
+    use Config;
+    if (! $Config{'useithreads'}) {
+        print("1..0 # SKIP Perl not compiled with 'useithreads'\n");
+        exit(0);
+    }
+    if ($] < 5.010) {
+        print("1..0 # SKIP Needs Perl 5.10.0 or later\n");
+        exit(0);
+    }
+}
+
+use ExtUtils::testlib;
+
+BEGIN {
+    $| = 1;
+    print("1..122\n");   ### Number of tests that will be run ###
+};
+
+use threads;
+use threads::shared;
+
+my $TEST;
+BEGIN {
+    share($TEST);
+    $TEST = 1;
+}
+
+sub ok {
+    my ($ok, $name) = @_;
+
+    lock($TEST);
+    my $id = $TEST++;
+
+    # You have to do it this way or VMS will get confused.
+    if ($ok) {
+        print("ok $id - $name\n");
+    } else {
+        print("not ok $id - $name\n");
+        printf("# Failed test at line %d\n", (caller)[2]);
+    }
+
+    return ($ok);
+}
+
+ok(1, 'Loaded');
+
+### Start of Testing ###
+
+my $ID :shared = -1;
+my (@created, @destroyed);
+
+{ package HashObj;
+   sub new {
+       my $class = shift;
+       my $self = &threads::shared::share({});
+       $$self{'ID'} = ++$ID;
+       $created[$ID] = 1;
+       return bless($self, $class);
+   }
+
+   sub DESTROY {
+       my $self = shift;
+       $destroyed[$$self{'ID'}] = 1;
+   }
+}
+
+{ package AryObj;
+   sub new {
+       my $class = shift;
+       my $self = &threads::shared::share([]);
+       $$self[0] = ++$ID;
+       $created[$ID] = 1;
+       return bless($self, $class);
+   }
+
+   sub DESTROY {
+       my $self = shift;
+       $destroyed[$$self[0]] = 1;
+   }
+}
+
+{ package SclrObj;
+   sub new {
+       my $class = shift;
+       my $self = \do{ my $scalar = ++$ID; };
+       $created[$ID] = 1;
+       threads::shared::share($self);
+       return bless($self, $class);
+   }
+
+   sub DESTROY {
+       my $self = shift;
+       $destroyed[$$self] = 1;
+   }
+}
+
+# Testing with normal array
+my @normal_ary;
+
+# Testing with hash object
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted hash object in normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef hash object in normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+ok($destroyed[$ID-1], 'Replaced hash object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Hash object removed from cleared normal array');
+
+$normal_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Hash object removed from undef normal array');
+
+# Testing with array object
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted array object in normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef array object in normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+ok($destroyed[$ID-1], 'Replaced array object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Array object removed from cleared normal array');
+
+$normal_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Array object removed from undef normal array');
+
+# Testing with scalar object
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+delete($normal_ary[0]);
+ok($destroyed[$ID], 'Deleted scalar object in normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+$normal_ary[0] = undef;
+ok($destroyed[$ID], 'Undef scalar object in normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+ok($destroyed[$ID-1], 'Replaced scalar object in normal array');
+ at normal_ary = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared normal array');
+
+$normal_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal array');
+undef(@normal_ary);
+ok($destroyed[$ID], 'Scalar object removed from undef normal array');
+
+# Testing with normal hash
+my %normal_hash;
+
+# Testing with hash object
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted hash object in normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef hash object in normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+ok($destroyed[$ID-1], 'Replaced hash object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Hash object removed from cleared normal hash');
+
+$normal_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Hash object removed from undef normal hash');
+
+# Testing with array object
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted array object in normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef array object in normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+ok($destroyed[$ID-1], 'Replaced array object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Array object removed from cleared normal hash');
+
+$normal_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Array object removed from undef normal hash');
+
+# Testing with scalar object
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+delete($normal_hash{'obj'});
+ok($destroyed[$ID], 'Deleted scalar object in normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+$normal_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef scalar object in normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+ok($destroyed[$ID-1], 'Replaced scalar object in normal hash');
+%normal_hash = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared normal hash');
+
+$normal_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in normal hash');
+undef(%normal_hash);
+ok($destroyed[$ID], 'Scalar object removed from undef normal hash');
+
+# Testing with shared array
+my @shared_ary :shared;
+
+# Testing with hash object
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted hash object in shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef hash object in shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+ok($destroyed[$ID-1], 'Replaced hash object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Hash object removed from cleared shared array');
+
+$shared_ary[0] = HashObj->new();
+ok($created[$ID], 'Created hash object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Hash object removed from undef shared array');
+
+# Testing with array object
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted array object in shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef array object in shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+ok($destroyed[$ID-1], 'Replaced array object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Array object removed from cleared shared array');
+
+$shared_ary[0] = AryObj->new();
+ok($created[$ID], 'Created array object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Array object removed from undef shared array');
+
+# Testing with scalar object
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+delete($shared_ary[0]);
+ok($destroyed[$ID], 'Deleted scalar object in shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+$shared_ary[0] = undef;
+ok($destroyed[$ID], 'Undef scalar object in shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+ok($destroyed[$ID-1], 'Replaced scalar object in shared array');
+ at shared_ary = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared shared array');
+
+$shared_ary[0] = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared array');
+undef(@shared_ary);
+ok($destroyed[$ID], 'Scalar object removed from undef shared array');
+
+# Testing with shared hash
+my %shared_hash :shared;
+
+# Testing with hash object
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted hash object in shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef hash object in shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+ok($destroyed[$ID-1], 'Replaced hash object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Hash object removed from cleared shared hash');
+
+$shared_hash{'obj'} = HashObj->new();
+ok($created[$ID], 'Created hash object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Hash object removed from undef shared hash');
+
+# Testing with array object
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted array object in shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef array object in shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+ok($destroyed[$ID-1], 'Replaced array object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Array object removed from cleared shared hash');
+
+$shared_hash{'obj'} = AryObj->new();
+ok($created[$ID], 'Created array object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Array object removed from undef shared hash');
+
+# Testing with scalar object
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+delete($shared_hash{'obj'});
+ok($destroyed[$ID], 'Deleted scalar object in shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+$shared_hash{'obj'} = undef;
+ok($destroyed[$ID], 'Undef scalar object in shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+ok($destroyed[$ID-1], 'Replaced scalar object in shared hash');
+%shared_hash = ();
+ok($destroyed[$ID], 'Scalar object removed from cleared shared hash');
+
+$shared_hash{'obj'} = SclrObj->new();
+ok($created[$ID], 'Created scalar object in shared hash');
+undef(%shared_hash);
+ok($destroyed[$ID], 'Scalar object removed from undef shared hash');
+
+# Testing with shared scalar
+{
+    my $shared_scalar : shared;
+    # Use a separate thread to make sure we have no private SV
+    async { $shared_scalar = SclrObj->new(); }->join();
+}
+ok($destroyed[$ID], 'Scalar object removed from shared scalar');
+
+# EOF

Added: vendor/perl/dist/ext/File-DosGlob/DosGlob.xs
===================================================================
--- vendor/perl/dist/ext/File-DosGlob/DosGlob.xs	                        (rev 0)
+++ vendor/perl/dist/ext/File-DosGlob/DosGlob.xs	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,52 @@
+#define PERL_NO_GET_CONTEXT
+
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#define MY_CXT_KEY "File::Glob::_guts" XS_VERSION
+
+typedef struct {
+    HV *		x_DG_ENTRIES;
+    Perl_ophook_t	x_DG_OLD_OPHOOK;
+} my_cxt_t;
+
+START_MY_CXT
+
+static void
+glob_ophook(pTHX_ OP *o)
+{
+  if (PL_dirty) return;
+  {
+    dMY_CXT;
+    if (!MY_CXT.x_DG_ENTRIES)
+	MY_CXT.x_DG_ENTRIES = get_hv("File::DosGlob::entries", 0);
+    if (MY_CXT.x_DG_ENTRIES)
+	hv_delete(MY_CXT.x_DG_ENTRIES, (char *)&o, sizeof(OP *),G_DISCARD);
+    if (MY_CXT.x_DG_OLD_OPHOOK) MY_CXT.x_DG_OLD_OPHOOK(aTHX_ o);
+  }
+}
+
+MODULE = File::DosGlob		PACKAGE = File::DosGlob
+
+PROTOTYPES: DISABLE
+
+BOOT:
+{
+    MY_CXT_INIT;
+    {
+	dMY_CXT;
+	MY_CXT.x_DG_ENTRIES = NULL;
+	MY_CXT.x_DG_OLD_OPHOOK = PL_opfreehook;
+	PL_opfreehook = glob_ophook;
+    }
+}
+
+SV *
+_callsite(...)
+    CODE:
+	RETVAL = newSVpvn(
+		   (char *)&cxstack[cxstack_ix].blk_sub.retop, sizeof(OP *)
+		 );
+    OUTPUT:
+	RETVAL

Added: vendor/perl/dist/ext/File-DosGlob/lib/File/DosGlob.pm
===================================================================
--- vendor/perl/dist/ext/File-DosGlob/lib/File/DosGlob.pm	                        (rev 0)
+++ vendor/perl/dist/ext/File-DosGlob/lib/File/DosGlob.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,304 @@
+#!perl -w
+
+#
+# Documentation at the __END__
+#
+
+package File::DosGlob;
+
+our $VERSION = '1.10';
+use strict;
+use warnings;
+
+require XSLoader;
+XSLoader::load();
+
+sub doglob {
+    my $cond = shift;
+    my @retval = ();
+    my $fix_drive_relative_paths;
+  OUTER:
+    for my $pat (@_) {
+	my @matched = ();
+	my @globdirs = ();
+	my $head = '.';
+	my $sepchr = '/';
+        my $tail;
+	next OUTER unless defined $pat and $pat ne '';
+	# if arg is within quotes strip em and do no globbing
+	if ($pat =~ /^"(.*)"\z/s) {
+	    $pat = $1;
+	    if ($cond eq 'd') { push(@retval, $pat) if -d $pat }
+	    else              { push(@retval, $pat) if -e $pat }
+	    next OUTER;
+	}
+	# wildcards with a drive prefix such as h:*.pm must be changed
+	# to h:./*.pm to expand correctly
+	if ($pat =~ m|^([A-Za-z]:)[^/\\]|s) {
+	    substr($pat,0,2) = $1 . "./";
+	    $fix_drive_relative_paths = 1;
+	}
+	if ($pat =~ m|^(.*)([\\/])([^\\/]*)\z|s) {
+	    ($head, $sepchr, $tail) = ($1,$2,$3);
+	    push (@retval, $pat), next OUTER if $tail eq '';
+	    if ($head =~ /[*?]/) {
+		@globdirs = doglob('d', $head);
+		push(@retval, doglob($cond, map {"$_$sepchr$tail"} @globdirs)),
+		    next OUTER if @globdirs;
+	    }
+	    $head .= $sepchr if $head eq '' or $head =~ /^[A-Za-z]:\z/s;
+	    $pat = $tail;
+	}
+	#
+	# If file component has no wildcards, we can avoid opendir
+	unless ($pat =~ /[*?]/) {
+	    $head = '' if $head eq '.';
+	    $head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
+	    $head .= $pat;
+	    if ($cond eq 'd') { push(@retval,$head) if -d $head }
+	    else              { push(@retval,$head) if -e $head }
+	    next OUTER;
+	}
+	opendir(D, $head) or next OUTER;
+	my @leaves = readdir D;
+	closedir D;
+
+	# VMS-format filespecs, especially if they contain extended characters,
+	# are unlikely to match patterns correctly, so Unixify them.
+	if ($^O eq 'VMS') {
+	    require VMS::Filespec;
+	    @leaves = map {$_ =~ s/\.$//; VMS::Filespec::unixify($_)} @leaves;
+        }
+	$head = '' if $head eq '.';
+	$head .= $sepchr unless $head eq '' or substr($head,-1) eq $sepchr;
+
+	# escape regex metachars but not glob chars
+	$pat =~ s:([].+^\-\${}()[|]):\\$1:g;
+	# and convert DOS-style wildcards to regex
+	$pat =~ s/\*/.*/g;
+	$pat =~ s/\?/.?/g;
+
+	my $matchsub = sub { $_[0] =~ m|^$pat\z|is };
+      INNER:
+	for my $e (@leaves) {
+	    next INNER if $e eq '.' or $e eq '..';
+	    next INNER if $cond eq 'd' and ! -d "$head$e";
+	    push(@matched, "$head$e"), next INNER if &$matchsub($e);
+	    #
+	    # [DOS compatibility special case]
+	    # Failed, add a trailing dot and try again, but only
+	    # if name does not have a dot in it *and* pattern
+	    # has a dot *and* name is shorter than 9 chars.
+	    #
+	    if (index($e,'.') == -1 and length($e) < 9
+	        and index($pat,'\\.') != -1) {
+		push(@matched, "$head$e"), next INNER if &$matchsub("$e.");
+	    }
+	}
+	push @retval, @matched if @matched;
+    }
+    if ($fix_drive_relative_paths) {
+	s|^([A-Za-z]:)\./|$1| for @retval;
+    }
+    return @retval;
+}
+
+#
+# this can be used to override CORE::glob in a specific
+# package by saying C<use File::DosGlob 'glob';> in that
+# namespace.
+#
+
+# context (keyed by second cxix arg provided by core)
+our %entries;
+
+sub glob {
+    my($pat,$cxix) = ($_[0], _callsite());
+    my @pat;
+
+    # glob without args defaults to $_
+    $pat = $_ unless defined $pat;
+
+    # if we're just beginning, do it all first
+    if (!$entries{$cxix}) {
+      # extract patterns
+      if ($pat =~ /\s/) {
+	require Text::ParseWords;
+	@pat = Text::ParseWords::parse_line('\s+',0,$pat);
+      }
+      else {
+	push @pat, $pat;
+      }
+
+      # Mike Mestnik: made to do abc{1,2,3} == abc1 abc2 abc3.
+      #   abc3 will be the original {3} (and drop the {}).
+      #   abc1 abc2 will be put in @appendpat.
+      # This was just the easiest way, not nearly the best.
+      REHASH: {
+	my @appendpat = ();
+	for (@pat) {
+	    # There must be a "," I.E. abc{efg} is not what we want.
+	    while ( /^(.*)(?<!\\)\{(.*?)(?<!\\)\,.*?(?<!\\)\}(.*)$/ ) {
+		my ($start, $match, $end) = ($1, $2, $3);
+		#print "Got: \n\t$start\n\t$match\n\t$end\n";
+		my $tmp = "$start$match$end";
+		while ( $tmp =~ s/^(.*?)(?<!\\)\{(?:.*(?<!\\)\,)?(.*\Q$match\E.*?)(?:(?<!\\)\,.*)?(?<!\\)\}(.*)$/$1$2$3/ ) {
+		    #  these expansions will be performed by the original,
+		    #  when we call REHASH.
+		}
+		push @appendpat, ("$tmp");
+		s/^\Q$start\E(?<!\\)\{\Q$match\E(?<!\\)\,/$start\{/;
+		if ( /^\Q$start\E(?<!\\)\{(?!.*?(?<!\\)\,.*?\Q$end\E$)(.*)(?<!\\)\}\Q$end\E$/ ) {
+		    $match = $1;
+		    #print "GOT: \n\t$start\n\t$match\n\t$end\n\n";
+		    $_ = "$start$match$end";
+		}
+	    }
+	    #print "Sould have "GOT" vs "Got"!\n";
+		#FIXME: There should be checking for this.
+		#  How or what should be done about failure is beond me.
+	}
+	if ( $#appendpat != -1
+		) {
+	    #FIXME: Max loop, no way! :")
+	    for ( @appendpat ) {
+	        push @pat, $_;
+	    }
+	    goto REHASH;
+	}
+      }
+      for ( @pat ) {
+	s/\\([{},])/$1/g;
+      }
+ 
+      $entries{$cxix} = [doglob(1, at pat)];
+    }
+
+    # chuck it all out, quick or slow
+    if (wantarray) {
+	return @{delete $entries{$cxix}};
+    }
+    else {
+	if (scalar @{$entries{$cxix}}) {
+	    return shift @{$entries{$cxix}};
+	}
+	else {
+	    # return undef for EOL
+	    delete $entries{$cxix};
+	    return undef;
+	}
+    }
+}
+
+{
+    no strict 'refs';
+
+    sub import {
+    my $pkg = shift;
+    return unless @_;
+    my $sym = shift;
+    my $callpkg = ($sym =~ s/^GLOBAL_//s ? 'CORE::GLOBAL' : caller(0));
+    *{$callpkg.'::'.$sym} = \&{$pkg.'::'.$sym} if $sym eq 'glob';
+    }
+}
+1;
+
+__END__
+
+=head1 NAME
+
+File::DosGlob - DOS like globbing and then some
+
+=head1 SYNOPSIS
+
+    require 5.004;
+
+    # override CORE::glob in current package
+    use File::DosGlob 'glob';
+
+    # override CORE::glob in ALL packages (use with extreme caution!)
+    use File::DosGlob 'GLOBAL_glob';
+
+    @perlfiles = glob  "..\\pe?l/*.p?";
+    print <..\\pe?l/*.p?>;
+
+    # from the command line (overrides only in main::)
+    > perl -MFile::DosGlob=glob -e "print <../pe*/*p?>"
+
+=head1 DESCRIPTION
+
+A module that implements DOS-like globbing with a few enhancements.
+It is largely compatible with perlglob.exe (the M$ setargv.obj
+version) in all but one respect--it understands wildcards in
+directory components.
+
+For example, C<< <..\\l*b\\file/*glob.p?> >> will work as expected (in
+that it will find something like '..\lib\File/DosGlob.pm' alright).
+Note that all path components are case-insensitive, and that
+backslashes and forward slashes are both accepted, and preserved.
+You may have to double the backslashes if you are putting them in
+literally, due to double-quotish parsing of the pattern by perl.
+
+Spaces in the argument delimit distinct patterns, so
+C<glob('*.exe *.dll')> globs all filenames that end in C<.exe>
+or C<.dll>.  If you want to put in literal spaces in the glob
+pattern, you can escape them with either double quotes, or backslashes.
+e.g. C<glob('c:/"Program Files"/*/*.dll')>, or
+C<glob('c:/Program\ Files/*/*.dll')>.  The argument is tokenized using
+C<Text::ParseWords::parse_line()>, so see L<Text::ParseWords> for details
+of the quoting rules used.
+
+Extending it to csh patterns is left as an exercise to the reader.
+
+=head1 EXPORTS (by request only)
+
+glob()
+
+=head1 BUGS
+
+Should probably be built into the core, and needs to stop
+pandering to DOS habits.  Needs a dose of optimizium too.
+
+=head1 AUTHOR
+
+Gurusamy Sarathy <gsar at activestate.com>
+
+=head1 HISTORY
+
+=over 4
+
+=item *
+
+Support for globally overriding glob() (GSAR 3-JUN-98)
+
+=item *
+
+Scalar context, independent iterator context fixes (GSAR 15-SEP-97)
+
+=item *
+
+A few dir-vs-file optimizations result in glob importation being
+10 times faster than using perlglob.exe, and using perlglob.bat is
+only twice as slow as perlglob.exe (GSAR 28-MAY-97)
+
+=item *
+
+Several cleanups prompted by lack of compatible perlglob.exe
+under Borland (GSAR 27-MAY-97)
+
+=item *
+
+Initial version (GSAR 20-FEB-97)
+
+=back
+
+=head1 SEE ALSO
+
+perl
+
+perlglob.bat
+
+Text::ParseWords
+
+=cut
+

Added: vendor/perl/dist/ext/File-DosGlob/t/DosGlob.t
===================================================================
--- vendor/perl/dist/ext/File-DosGlob/t/DosGlob.t	                        (rev 0)
+++ vendor/perl/dist/ext/File-DosGlob/t/DosGlob.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,156 @@
+#!./perl
+
+#
+# test glob() in File::DosGlob
+#
+
+# Make sure it can load before other XS extensions
+use File::DosGlob;
+
+use FindBin;
+use File::Spec::Functions;
+BEGIN {
+    chdir catdir $FindBin::Bin, (updir)x3, 't';
+    @INC = '../lib';
+}
+
+use Test::More tests => 21;
+
+# override it in main::
+use File::DosGlob 'glob';
+
+require Cwd;
+
+my $expected;
+$expected = $_ = "op/a*.t";
+my @r = glob;
+is ($_, $expected, 'test if $_ takes as the default');
+cmp_ok(@r, '>=', 9) or diag("|@r|");
+
+ at r = <*/a*.t>;
+# atleast {argv,abbrev,anydbm,autoloader,append,arith,array,assignwarn,auto}.t
+cmp_ok(@r, '>=', 9, 'check <*/*>') or diag("|@r|");
+my $r = scalar @r;
+
+ at r = ();
+while (defined($_ = <*/a*.t>)) {
+    print "# $_\n";
+    push @r, $_;
+}
+is(scalar @r, $r, 'check scalar context');
+
+ at r = ();
+for (<*/a*.t>) {
+    print "# $_\n";
+    push @r, $_;
+}
+is(scalar @r, $r, 'check list context');
+
+ at r = ();
+while (<*/a*.t>) {
+    print "# $_\n";
+    push @r, $_;
+}
+is(scalar @r, $r, 'implicit assign to $_ in while()');
+
+my @s = ();
+my $pat = '*/a*.t';
+while (glob ($pat)) {
+    print "# $_\n";
+    push @s, $_;
+}
+is("@r", "@s", 'explicit glob() gets assign magic too');
+
+package Foo;
+use File::DosGlob 'glob';
+use Test::More;
+ at s = ();
+$pat = '*/a*.t';
+while (glob($pat)) {
+    print "# $_\n";
+    push @s, $_;
+}
+is("@r", "@s", 'in a different package');
+
+ at s = ();
+while (<*/a*.t>) {
+    my $i = 0;
+    print "# $_ <";
+    push @s, $_;
+    while (<*/b*.t>) {
+	print " $_";
+	$i++;
+    }
+    print " >\n";
+}
+is("@r", "@s", 'different glob ops maintain independent contexts');
+
+ at s = ();
+eval <<'EOT';
+use File::DosGlob 'GLOBAL_glob';
+package Bar;
+while (<*/a*.t>) {
+    my $i = 0;
+    print "# $_ <";
+    push @s, $_;
+    while (glob '*/b*.t') {
+	print " $_";
+	$i++;
+    }
+    print " >\n";
+}
+EOT
+is("@r", "@s", 'global override');
+
+# Test that a glob pattern containing ()'s works.
+# NB. The spaces in the glob patterns need to be backslash escaped.
+my $filename_containing_parens = "foo (123) bar";
+SKIP: {
+    skip("can't create '$filename_containing_parens': $!", 9)
+	unless open my $touch, ">", $filename_containing_parens;
+    close $touch;
+
+    foreach my $pattern ("foo\\ (*", "*)\\ bar", "foo\\ (1*3)\\ bar") {
+	@r = ();
+	eval { @r = File::DosGlob::glob($pattern) };
+	is($@, "", "eval for glob($pattern)");
+	is(scalar @r, 1);
+	is($r[0], $filename_containing_parens);
+    }
+
+    1 while unlink $filename_containing_parens;
+}
+
+# Test the globbing of a drive relative pattern such as "c:*.pl".
+# NB. previous versions of DosGlob inserted "./ after the drive letter to
+# make the expansion process work correctly. However, while it is harmless,
+# there is no reason for it to be in the result.
+my $cwd = Cwd::cwd();
+if ($cwd =~ /^([a-zA-Z]:)/) {
+    my $drive = $1;
+    @r = ();
+    # This assumes we're in the "t" directory.
+    eval { @r = File::DosGlob::glob("${drive}io/*.t") };
+    ok(@r and !grep !m|^${drive}io/[^/]*\.t$|, @r);
+} else {
+    pass();
+}
+
+# Test that our internal data are freed when the caller’s op tree is freed,
+# even if iteration has not finished.
+# Using XS::APItest is the only simple way to test this.  Since this is a
+# core-only module, this should be OK.
+SKIP: {
+    require Config;
+    skip "no XS::APItest"
+     unless eval { require XS::APItest; import XS::APItest "sv_count"; 1 };
+    # Use a random number of ops, so that the glob op does not reuse the
+    # same address each time, giving us false passes.
+    my($count,$count2);
+    eval '$x+'x(1+rand() * 100) . '<*>';
+    $count = sv_count();
+    eval '$x+'x(1+rand() * 100) . '<*>';
+    $count2 = sv_count();
+    cmp_ok $count2, '<=', $count,
+     'no leak when partly iterated caller is freed';
+}

Added: vendor/perl/dist/ext/File-Glob/t/rt114984.t
===================================================================
--- vendor/perl/dist/ext/File-Glob/t/rt114984.t	                        (rev 0)
+++ vendor/perl/dist/ext/File-Glob/t/rt114984.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,31 @@
+use strict;
+use warnings;
+use v5.16.0;
+use File::Temp 'tempdir';
+use File::Spec::Functions;
+use Test::More;
+
+BEGIN {
+  plan skip_all => "Home-grown glob does not do character classes on $^O" if $^O eq 'VMS';
+}
+
+plan tests => 1;
+
+my @md = (1..305);
+my @mp = (1000..1205);
+
+my $path = tempdir uc cleanup => 1;
+
+foreach (@md) {
+    open(my $f, ">", catfile $path, "md_$_.dat");
+    close $f;
+}
+
+foreach (@mp) {
+    open(my $f, ">", catfile $path, "mp_$_.dat");
+    close $f;
+}
+my @b = glob(qq{$path/mp_[0123456789]*.dat
+                $path/md_[0123456789]*.dat});
+is scalar(@b), @md+ at mp,
+    'File::Glob extends the stack when returning a long list';

Added: vendor/perl/dist/ext/GDBM_File/t/fatal.t
===================================================================
--- vendor/perl/dist/ext/GDBM_File/t/fatal.t	                        (rev 0)
+++ vendor/perl/dist/ext/GDBM_File/t/fatal.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+use Config;
+
+BEGIN {
+    plan(skip_all => "GDBM_File was not built")
+	unless $Config{extensions} =~ /\bGDBM_File\b/;
+
+    plan(tests => 8);
+    use_ok('GDBM_File');
+}
+
+unlink <Op_dbmx*>;
+
+open my $fh, $^X or die "Can't open $^X: $!";
+my $fileno = fileno $fh;
+isnt($fileno, undef, "Can find next available file descriptor");
+close $fh or die $!;
+
+is((open $fh, "<&=$fileno"), undef,
+   "Check that we cannot open fileno $fileno. \$! is $!");
+
+umask(0);
+my %h;
+isa_ok(tie(%h, 'GDBM_File', 'Op_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 {
+    $h{Perl} = 'Rules';
+    untie %h;
+    1;
+}, undef, 'Trapped error when attempting to write to knobbled GDBM_File');
+
+# 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*>;

Added: vendor/perl/dist/ext/IPC-Open3/lib/IPC/Open2.pm
===================================================================
--- vendor/perl/dist/ext/IPC-Open3/lib/IPC/Open2.pm	                        (rev 0)
+++ vendor/perl/dist/ext/IPC-Open3/lib/IPC/Open2.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,120 @@
+package IPC::Open2;
+
+use strict;
+our ($VERSION, @ISA, @EXPORT);
+
+require 5.000;
+require Exporter;
+
+$VERSION	= 1.04;
+ at ISA		= qw(Exporter);
+ at EXPORT		= qw(open2);
+
+=head1 NAME
+
+IPC::Open2 - open a process for both reading and writing using open2()
+
+=head1 SYNOPSIS
+
+    use IPC::Open2;
+
+    $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'some cmd and args');
+      # or without using the shell
+    $pid = open2(\*CHLD_OUT, \*CHLD_IN, 'some', 'cmd', 'and', 'args');
+
+    # or with handle autovivification
+    my($chld_out, $chld_in);
+    $pid = open2($chld_out, $chld_in, 'some cmd and args');
+      # or without using the shell
+    $pid = open2($chld_out, $chld_in, 'some', 'cmd', 'and', 'args');
+
+    waitpid( $pid, 0 );
+    my $child_exit_status = $? >> 8;
+
+=head1 DESCRIPTION
+
+The open2() function runs the given $cmd and connects $chld_out for
+reading and $chld_in for writing.  It's what you think should work 
+when you try
+
+    $pid = open(HANDLE, "|cmd args|");
+
+The write filehandle will have autoflush turned on.
+
+If $chld_out is a string (that is, a bareword filehandle rather than a glob
+or a reference) and it begins with C<< >& >>, then the child will send output
+directly to that file handle.  If $chld_in is a string that begins with
+C<< <& >>, then $chld_in will be closed in the parent, and the child will
+read from it directly.  In both cases, there will be a dup(2) instead of a
+pipe(2) made.
+
+If either reader or writer is the null string, this will be replaced
+by an autogenerated filehandle.  If so, you must pass a valid lvalue
+in the parameter slot so it can be overwritten in the caller, or
+an exception will be raised.
+
+open2() returns the process ID of the child process.  It doesn't return on
+failure: it just raises an exception matching C</^open2:/>.  However,
+C<exec> failures in the child are not detected.  You'll have to
+trap SIGPIPE yourself.
+
+open2() does not wait for and reap the child process after it exits.
+Except for short programs where it's acceptable to let the operating system
+take care of this, you need to do this yourself.  This is normally as
+simple as calling C<waitpid $pid, 0> when you're done with the process.
+Failing to do this can result in an accumulation of defunct or "zombie"
+processes.  See L<perlfunc/waitpid> for more information.
+
+This whole affair is quite dangerous, as you may block forever.  It
+assumes it's going to talk to something like B<bc>, both writing
+to it and reading from it.  This is presumably safe because you
+"know" that commands like B<bc> will read a line at a time and
+output a line at a time.  Programs like B<sort> that read their
+entire input stream first, however, are quite apt to cause deadlock.
+
+The big problem with this approach is that if you don't have control 
+over source code being run in the child process, you can't control
+what it does with pipe buffering.  Thus you can't just open a pipe to
+C<cat -v> and continually read and write a line from it.
+
+The IO::Pty and Expect modules from CPAN can help with this, as they
+provide a real tty (well, a pseudo-tty, actually), which gets you
+back to line buffering in the invoked command again.
+
+=head1 WARNING 
+
+The order of arguments differs from that of open3().
+
+=head1 SEE ALSO
+
+See L<IPC::Open3> for an alternative that handles STDERR as well.  This
+function is really just a wrapper around open3().
+
+=cut
+
+# &open2: tom christiansen, <tchrist at convex.com>
+#
+# usage: $pid = open2('rdr', 'wtr', 'some cmd and args');
+#    or  $pid = open2('rdr', 'wtr', 'some', 'cmd', 'and', 'args');
+#
+# spawn the given $cmd and connect $rdr for
+# reading and $wtr for writing.  return pid
+# of child, or 0 on failure.  
+# 
+# WARNING: this is dangerous, as you may block forever
+# unless you are very careful.  
+# 
+# $wtr is left unbuffered.
+# 
+# abort program if
+#	rdr or wtr are null
+# 	a system call fails
+
+require IPC::Open3;
+
+sub open2 {
+    local $Carp::CarpLevel = $Carp::CarpLevel + 1;
+    return IPC::Open3::_open3('open2', $_[1], $_[0], '>&STDERR', @_[2 .. $#_]);
+}
+
+1

Added: vendor/perl/dist/ext/IPC-Open3/t/IPC-Open2.t
===================================================================
--- vendor/perl/dist/ext/IPC-Open3/t/IPC-Open2.t	                        (rev 0)
+++ vendor/perl/dist/ext/IPC-Open3/t/IPC-Open2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,61 @@
+#!./perl -w
+
+use Config;
+BEGIN {
+    require Test::More;
+    if (!$Config{'d_fork'}
+       # open2/3 supported on win32
+       && $^O ne 'MSWin32' && $^O ne 'NetWare')
+    {
+	Test::More->import(skip_all => 'open2/3 not available with MSWin32+Netware');
+	exit 0;
+    }
+    # make warnings fatal
+    $SIG{__WARN__} = sub { die @_ };
+}
+
+use strict;
+use IPC::Open2;
+use Test::More tests => 15;
+
+my $perl = $^X;
+
+sub cmd_line {
+	if ($^O eq 'MSWin32' || $^O eq 'NetWare') {
+		return qq/"$_[0]"/;
+	}
+	else {
+		return $_[0];
+	}
+}
+
+STDOUT->autoflush;
+STDERR->autoflush;
+
+my $pid = open2('READ', 'WRITE', $perl, '-e', cmd_line('print scalar <STDIN>'));
+cmp_ok($pid, '>', 1, 'got a sane process ID');
+ok(print WRITE "hi kid\n");
+like(<READ>, qr/^hi kid\r?\n$/);
+ok(close(WRITE), "closing WRITE: $!");
+ok(close(READ), "closing READ: $!");
+my $reaped_pid = waitpid $pid, 0;
+is($reaped_pid, $pid, "Reaped PID matches");
+is($?, 0, '$? should be zero');
+
+{
+    package SKREEEK;
+    my $pid = IPC::Open2::open2('KAZOP', 'WRITE', $perl, '-e',
+				main::cmd_line('print scalar <STDIN>'));
+    main::cmp_ok($pid, '>', 1, 'got a sane process ID');
+    main::ok(print WRITE "hi kid\n");
+    main::like(<KAZOP>, qr/^hi kid\r?\n$/);
+    main::ok(close(WRITE), "closing WRITE: $!");
+    main::ok(close(KAZOP), "closing READ: $!");
+    my $reaped_pid = waitpid $pid, 0;
+    main::is($reaped_pid, $pid, "Reaped PID matches");
+    main::is($?, 0, '$? should be zero');
+}
+
+$pid = eval { open2('READ', '', $perl, '-e', cmd_line('print scalar <STDIN>')) };
+like($@, qr/^open2: Modification of a read-only value attempted at /,
+     'open2 faults read-only parameters correctly') or do {waitpid $pid, 0};

Added: vendor/perl/dist/ext/NDBM_File/hints/gnu.pl
===================================================================
--- vendor/perl/dist/ext/NDBM_File/hints/gnu.pl	                        (rev 0)
+++ vendor/perl/dist/ext/NDBM_File/hints/gnu.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+do './hints/linux.pl' or die $@;

Added: vendor/perl/dist/ext/ODBM_File/hints/gnu.pl
===================================================================
--- vendor/perl/dist/ext/ODBM_File/hints/gnu.pl	                        (rev 0)
+++ vendor/perl/dist/ext/ODBM_File/hints/gnu.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+do './hints/linux.pl' or die $@;

Added: vendor/perl/dist/ext/POSIX/t/export.t
===================================================================
--- vendor/perl/dist/ext/POSIX/t/export.t	                        (rev 0)
+++ vendor/perl/dist/ext/POSIX/t/export.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,116 @@
+#!./perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+plan(skip_all => "POSIX is unavailable")
+    unless $Config{extensions} =~ /\bPOSIX\b/;
+
+require POSIX;
+POSIX->import();
+
+# @POSIX::EXPORT and @POSIX::EXPORT_OK are generated. The intent of this test is
+# to catch *unintended* changes to them introduced by bugs in refactoring.
+
+my %expect = (
+    EXPORT => [qw(%SIGRT ARG_MAX B0 B110 B1200 B134 B150 B1800 B19200 B200
+		  B2400 B300 B38400 B4800 B50 B600 B75 B9600 BRKINT BUFSIZ
+		  CHAR_BIT CHAR_MAX CHAR_MIN CHILD_MAX CLK_TCK CLOCAL
+		  CLOCKS_PER_SEC CREAD CS5 CS6 CS7 CS8 CSIZE CSTOPB DBL_DIG
+		  DBL_EPSILON DBL_MANT_DIG DBL_MAX DBL_MAX_10_EXP DBL_MAX_EXP
+		  DBL_MIN DBL_MIN_10_EXP DBL_MIN_EXP E2BIG EACCES EADDRINUSE
+		  EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF EBUSY ECHILD
+		  ECHO ECHOE ECHOK ECHONL ECONNABORTED ECONNREFUSED ECONNRESET
+		  EDEADLK EDESTADDRREQ EDOM EDQUOT EEXIST EFAULT EFBIG
+		  EHOSTDOWN EHOSTUNREACH EINPROGRESS EINTR EINVAL EIO EISCONN
+		  EISDIR ELOOP EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENETDOWN
+		  ENETRESET ENETUNREACH ENFILE ENOBUFS ENODEV ENOENT ENOEXEC
+		  ENOLCK ENOMEM ENOPROTOOPT ENOSPC ENOSYS ENOTBLK ENOTCONN
+		  ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOF EOPNOTSUPP EPERM
+		  EPFNOSUPPORT EPIPE EPROCLIM EPROTONOSUPPORT EPROTOTYPE ERANGE
+		  EREMOTE ERESTART EROFS ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH
+		  ESTALE ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK
+		  EXDEV EXIT_FAILURE EXIT_SUCCESS FD_CLOEXEC FILENAME_MAX
+		  FLT_DIG FLT_EPSILON FLT_MANT_DIG FLT_MAX FLT_MAX_10_EXP
+		  FLT_MAX_EXP FLT_MIN FLT_MIN_10_EXP FLT_MIN_EXP FLT_RADIX
+		  FLT_ROUNDS F_DUPFD F_GETFD F_GETFL F_GETLK F_OK F_RDLCK
+		  F_SETFD F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK HUGE_VAL
+		  HUPCL ICANON ICRNL IEXTEN IGNBRK IGNCR IGNPAR INLCR INPCK
+		  INT_MAX INT_MIN ISIG ISTRIP IXOFF IXON LC_ALL LC_COLLATE
+		  LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME LDBL_DIG
+		  LDBL_EPSILON LDBL_MANT_DIG LDBL_MAX LDBL_MAX_10_EXP
+		  LDBL_MAX_EXP LDBL_MIN LDBL_MIN_10_EXP LDBL_MIN_EXP LINK_MAX
+		  LONG_MAX LONG_MIN L_ctermid L_cuserid L_tmpname MAX_CANON
+		  MAX_INPUT MB_CUR_MAX MB_LEN_MAX NAME_MAX NCCS NDEBUG
+		  NGROUPS_MAX NOFLSH NULL OPEN_MAX OPOST O_ACCMODE O_APPEND
+		  O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC
+		  O_WRONLY PARENB PARMRK PARODD PATH_MAX PIPE_BUF RAND_MAX R_OK
+		  SA_NOCLDSTOP SA_NOCLDWAIT SA_NODEFER SA_ONSTACK SA_RESETHAND
+		  SA_RESTART SA_SIGINFO SCHAR_MAX SCHAR_MIN SEEK_CUR SEEK_END
+		  SEEK_SET SHRT_MAX SHRT_MIN SIGABRT SIGALRM SIGBUS SIGCHLD
+		  SIGCONT SIGFPE SIGHUP SIGILL SIGINT SIGKILL SIGPIPE SIGPOLL
+		  SIGPROF SIGQUIT SIGRTMAX SIGRTMIN SIGSEGV SIGSTOP SIGSYS
+		  SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1
+		  SIGUSR2 SIGVTALRM SIGXCPU SIGXFSZ SIG_BLOCK SIG_DFL SIG_ERR
+		  SIG_IGN SIG_SETMASK SIG_UNBLOCK SSIZE_MAX STDERR_FILENO
+		  STDIN_FILENO STDOUT_FILENO STREAM_MAX S_IRGRP S_IROTH S_IRUSR
+		  S_IRWXG S_IRWXO S_IRWXU S_ISBLK S_ISCHR S_ISDIR S_ISFIFO
+		  S_ISGID S_ISREG S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP
+		  S_IXOTH S_IXUSR TCIFLUSH TCIOFF TCIOFLUSH TCION TCOFLUSH
+		  TCOOFF TCOON TCSADRAIN TCSAFLUSH TCSANOW TMP_MAX TOSTOP
+		  TZNAME_MAX UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX VEOF VEOL
+		  VERASE VINTR VKILL VMIN VQUIT VSTART VSTOP VSUSP VTIME
+		  WEXITSTATUS WIFEXITED WIFSIGNALED WIFSTOPPED WNOHANG WSTOPSIG
+		  WTERMSIG WUNTRACED W_OK X_OK _PC_CHOWN_RESTRICTED
+		  _PC_LINK_MAX _PC_MAX_CANON _PC_MAX_INPUT _PC_NAME_MAX
+		  _PC_NO_TRUNC _PC_PATH_MAX _PC_PIPE_BUF _PC_VDISABLE
+		  _POSIX_ARG_MAX _POSIX_CHILD_MAX _POSIX_CHOWN_RESTRICTED
+		  _POSIX_JOB_CONTROL _POSIX_LINK_MAX _POSIX_MAX_CANON
+		  _POSIX_MAX_INPUT _POSIX_NAME_MAX _POSIX_NGROUPS_MAX
+		  _POSIX_NO_TRUNC _POSIX_OPEN_MAX _POSIX_PATH_MAX
+		  _POSIX_PIPE_BUF _POSIX_SAVED_IDS _POSIX_SSIZE_MAX
+		  _POSIX_STREAM_MAX _POSIX_TZNAME_MAX _POSIX_VDISABLE
+		  _POSIX_VERSION _SC_ARG_MAX _SC_CHILD_MAX _SC_CLK_TCK
+		  _SC_JOB_CONTROL _SC_NGROUPS_MAX _SC_OPEN_MAX _SC_PAGESIZE
+		  _SC_SAVED_IDS _SC_STREAM_MAX _SC_TZNAME_MAX _SC_VERSION _exit
+		  abort access acos asctime asin assert atan atexit atof atoi
+		  atol bsearch calloc ceil cfgetispeed cfgetospeed cfsetispeed
+		  cfsetospeed clearerr clock cosh creat ctermid ctime cuserid
+		  difftime div dup dup2 errno execl execle execlp execv execve
+		  execvp fabs fclose fdopen feof ferror fflush fgetc fgetpos
+		  fgets floor fmod fopen fpathconf fprintf fputc fputs fread
+		  free freopen frexp fscanf fseek fsetpos fstat fsync ftell
+		  fwrite getchar getcwd getegid getenv geteuid getgid getgroups
+		  getpid gets getuid isalnum isalpha isatty iscntrl isdigit
+		  isgraph islower isprint ispunct isspace isupper isxdigit labs
+		  ldexp ldiv localeconv log10 longjmp lseek malloc mblen
+		  mbstowcs mbtowc memchr memcmp memcpy memmove memset mkfifo
+		  mktime modf offsetof pathconf pause perror pow putc putchar
+		  puts qsort raise realloc remove rewind scanf setbuf setgid
+		  setjmp setlocale setpgid setsid setuid setvbuf sigaction
+		  siglongjmp signal sigpending sigprocmask sigsetjmp sigsuspend
+		  sinh sscanf stderr stdin stdout strcat strchr strcmp strcoll
+		  strcpy strcspn strerror strftime strlen strncat strncmp
+		  strncpy strpbrk strrchr strspn strstr strtod strtok strtol
+		  strtoul strxfrm sysconf tan tanh tcdrain tcflow tcflush
+		  tcgetattr tcgetpgrp tcsendbreak tcsetattr tcsetpgrp tmpfile
+		  tmpnam tolower toupper ttyname tzname tzset uname ungetc
+		  vfprintf vprintf vsprintf wcstombs wctomb)],
+    EXPORT_OK => [qw(abs alarm atan2 chdir chmod chown close closedir cos exit
+		     exp fcntl fileno fork getc getgrgid getgrnam getlogin
+		     getpgrp getppid getpwnam getpwuid gmtime kill lchown link
+		     localtime log mkdir nice open opendir pipe printf rand
+		     read readdir rename rewinddir rmdir sin sleep sprintf sqrt
+		     srand stat system time times umask unlink utime wait
+		     waitpid write)],
+);
+
+plan (tests => 2 * keys %expect);
+
+while (my ($var, $expect) = each %expect) {
+    my $have = *{$POSIX::{$var}}{ARRAY};
+    cmp_ok(@$have, '==', @$expect,
+	   "Correct number of entries for \@POSIX::$var");
+    is_deeply([sort @$have], $expect, "Correct entries for \@POSIX::$var");
+}

Added: vendor/perl/dist/ext/POSIX/t/sigset.t
===================================================================
--- vendor/perl/dist/ext/POSIX/t/sigset.t	                        (rev 0)
+++ vendor/perl/dist/ext/POSIX/t/sigset.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,96 @@
+#!./perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+plan(skip_all => "POSIX is unavailable")
+    unless $Config{extensions} =~ /\bPOSIX\b/;
+plan(skip_all => "sigemptyset is unavailable on $^O")
+    if $^O eq 'MSWin32' || $^O eq 'NetWare';
+
+require POSIX;
+POSIX->import();
+
+my @signo;
+my ($min, $max) = (~0, -1);
+
+sub expected_signals {
+    my $sigset = shift;
+    my $desc = shift;
+    my %expected;
+    ++$expected{$_} foreach @_;
+
+    local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+    for my $sig ($min..$max) {
+	if ($expected{$sig}) {
+	    cmp_ok($sigset->ismember($sig), '==', 1,
+		   "$desc - sig $sig is a member");
+	} else {
+	    cmp_ok($sigset->ismember($sig), '==', 0,
+		   "$desc - sig $sig is not a member");
+	}
+    }
+}
+
+foreach (@POSIX::EXPORT) {
+    next unless /^SIG[A-Z0-9]+$/;
+    my $val = eval "POSIX::$_";
+    next unless defined $val;
+    $min = $val if $min > $val;
+    $max = $val if $max < $val;
+    push @signo, $val;
+}
+
+# Sanity check that we found something:
+cmp_ok(scalar @signo, '>=', 6,
+       'found at least 6 signals (6 are named in the ANSI C spec)');
+
+my $sigset = POSIX::SigSet->new();
+isa_ok($sigset, 'POSIX::SigSet', 'checking the type of the object');
+expected_signals($sigset, 'new object');
+
+is($sigset->fillset(), '0 but true', 'fillset');
+# because on some systems, not all integers are valid signals...
+# so the only thing we can really be confident about is that all the signals
+# with names are going to be present:
+foreach (@signo) {
+    cmp_ok($sigset->ismember($_), '==', 1, "after fillset sig $_ is a member");
+}
+is($sigset->emptyset(), '0 but true', 'empyset');
+expected_signals($sigset, 'after emptyset');
+
+is($sigset->addset($signo[1]), '0 but true', 'addset');
+expected_signals($sigset, 'after addset', $signo[1]);
+is($sigset->addset($signo[2]), '0 but true', 'addset');
+expected_signals($sigset, 'after addset', $signo[1], $signo[2]);
+is($sigset->addset($signo[4]), '0 but true', 'addset');
+expected_signals($sigset, 'after addset', $signo[1], $signo[2], $signo[4]);
+is($sigset->addset($signo[2]), '0 but true', 'addset');
+expected_signals($sigset, 'after addset', $signo[1], $signo[2], $signo[4]);
+is($sigset->delset($signo[4]), '0 but true', 'delset');
+expected_signals($sigset, 'after addset', $signo[1], $signo[2]);
+is($sigset->addset($signo[0]), '0 but true', 'addset');
+expected_signals($sigset, 'after addset', $signo[0], $signo[1], $signo[2]);
+is($sigset->delset($signo[4]), '0 but true', 'delset');
+expected_signals($sigset, 'after delset', $signo[0], $signo[1], $signo[2]);
+is($sigset->delset($signo[1]), '0 but true', 'delset');
+expected_signals($sigset, 'after delset', $signo[0], $signo[2]);
+is($sigset->delset($signo[0]), '0 but true', 'delset');
+expected_signals($sigset, 'after addset', $signo[2]);
+is($sigset->delset($signo[2]), '0 but true', 'delset');
+expected_signals($sigset, 'empty again');
+
+foreach ([$signo[0]],
+	 [$signo[2]],
+	 [$signo[3]],
+	 [@signo[2,3,6]],
+	) {
+    $sigset = POSIX::SigSet->new(@$_);
+    isa_ok($sigset, 'POSIX::SigSet', 'checking the type of the object');
+    local $" = ', ';
+    expected_signals($sigset, "new(@$_)", @$_);
+}
+
+done_testing();

Added: vendor/perl/dist/ext/POSIX/t/unimplemented.t
===================================================================
--- vendor/perl/dist/ext/POSIX/t/unimplemented.t	                        (rev 0)
+++ vendor/perl/dist/ext/POSIX/t/unimplemented.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,99 @@
+#!./perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+plan(skip_all => "POSIX is unavailable")
+    unless $Config{extensions} =~ /\bPOSIX\b/;
+
+require POSIX;
+
+foreach ([atexit => 'C-specific: use END {} instead'],
+	 [atof => 'C-specific, stopped'],
+	 [atoi => 'C-specific, stopped'],
+	 [atol => 'C-specific, stopped'],
+	 [bsearch => 'not supplied'],
+	 [calloc => 'C-specific, stopped'],
+	 [clearerr => \'IO::Handle::clearerr'],
+	 [div => 'C-specific: use /, % and int instead'],
+	 [execl => 'C-specific, stopped'],
+	 [execle => 'C-specific, stopped'],
+	 [execlp => 'C-specific, stopped'],
+	 [execv => 'C-specific, stopped'],
+	 [execve => 'C-specific, stopped'],
+	 [execvp => 'C-specific, stopped'],
+	 [fclose => \'IO::Handle::close'],
+	 [fdopen => \'IO::Handle::new_from_fd'],
+	 [feof => \'IO::Handle::eof'],
+	 [ferror => \'IO::Handle::error'],
+	 [fflush => \'IO::Handle::flush'],
+	 [fgetc => \'IO::Handle::getc'],
+	 [fgetpos => \'IO::Seekable::getpos'],
+	 [fgets => \'IO::Handle::gets'],
+	 [fileno => \'IO::Handle::fileno'],
+	 [fopen => \'IO::File::open'],
+	 [fprintf => 'C-specific: use printf instead'],
+	 [fputc => 'C-specific: use print instead'],
+	 [fputs => 'C-specific: use print instead'],
+	 [fread => 'C-specific: use read instead'],
+	 [free => 'C-specific, stopped'],
+	 [freopen => 'C-specific: use open instead'],
+	 [fscanf => 'C-specific: use <> and regular expressions instead'],
+	 [fseek => \'IO::Seekable::seek'],
+	 [fsetpos => \'IO::Seekable::setpos'],
+	 [fsync => \'IO::Handle::sync'],
+	 [ftell => \'IO::Seekable::tell'],
+	 [fwrite => 'C-specific: use print instead'],
+	 [labs => 'C-specific: use abs instead'],
+	 [ldiv => 'C-specific: use /, % and int instead'],
+	 [longjmp => 'C-specific: use die instead'],
+	 [malloc => 'C-specific, stopped'],
+	 [memchr => 'C-specific: use index() instead'],
+	 [memcmp => 'C-specific: use eq instead'],
+	 [memcpy => 'C-specific: use = instead'],
+	 [memmove => 'C-specific: use = instead'],
+	 [memset => 'C-specific: use x instead'],
+	 [offsetof => 'C-specific, stopped'],
+	 [putc => 'C-specific: use print instead'],
+	 [putchar => 'C-specific: use print instead'],
+	 [puts => 'C-specific: use print instead'],
+	 [qsort => 'C-specific: use sort instead'],
+	 [rand => 'non-portable, use Perl\'s rand instead'],
+	 [realloc => 'C-specific, stopped'],
+	 [scanf => 'C-specific: use <> and regular expressions instead'],
+	 [setbuf => \'IO::Handle::setbuf'],
+	 [setjmp => 'C-specific: use eval {} instead'],
+	 [setvbuf => \'IO::Handle::setvbuf'],
+	 [siglongjmp => 'C-specific: use die instead'],
+	 [sigsetjmp => 'C-specific: use eval {} instead'],
+	 [srand => 'not supplied; refer to Perl\'s srand documentation'],
+	 [sscanf => 'C-specific: use regular expressions instead'],
+	 [strcat => 'C-specific: use .= instead'],
+	 [strchr => 'C-specific: use index() instead'],
+	 [strcmp => 'C-specific: use eq instead'],
+	 [strcpy => 'C-specific: use = instead'],
+	 [strcspn => 'C-specific: use regular expressions instead'],
+	 [strlen => 'C-specific: use length instead'],
+	 [strncat => 'C-specific: use .= instead'],
+	 [strncmp => 'C-specific: use eq instead'],
+	 [strncpy => 'C-specific: use = instead'],
+	 [strpbrk => 'C-specific, stopped'],
+	 [strrchr => 'C-specific: use rindex() instead'],
+	 [strspn => 'C-specific, stopped'],
+	 [strtok => 'C-specific, stopped'],
+	 [tmpfile => \'IO::File::new_tmpfile'],
+	 [ungetc => \'IO::Handle::ungetc'],
+	 [vfprintf => 'C-specific, stopped'],
+	 [vprintf => 'C-specific, stopped'],
+	 [vsprintf => 'C-specific, stopped'],
+	) {
+    my ($func, $action) = @$_;
+    my $expect = ref $action
+	? qr/Use method $$action\(\) instead of POSIX::$func\(\) at \(eval/
+	: qr/Unimplemented: POSIX::$func\(\) is \Q$action\E at \(eval/;
+    is(eval "POSIX::$func(); 1", undef, "POSIX::$func fails as expected");
+    like($@, $expect, "POSIX::$func gives expected error message");
+}
+
+done_testing();

Added: vendor/perl/dist/ext/POSIX/t/usage.t
===================================================================
--- vendor/perl/dist/ext/POSIX/t/usage.t	                        (rev 0)
+++ vendor/perl/dist/ext/POSIX/t/usage.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,48 @@
+#!./perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+plan(skip_all => "POSIX is unavailable")
+    unless $Config{extensions} =~ /\bPOSIX\b/;
+
+require POSIX;
+
+my %valid;
+my @all;
+
+my $argc = 0;
+for my $list ([qw(errno fork getchar getegid geteuid getgid getgroups getlogin
+		  getpgrp getpid getppid gets getuid time wait)],
+	      [qw(abs alarm assert chdir closedir cos exit exp fabs fstat getc
+		  getenv getgrgid getgrnam getpwnam getpwuid gmtime isatty
+		  localtime log opendir raise readdir remove rewind rewinddir
+		  rmdir sin sleep sqrt stat strerror system tolower toupper
+		  umask unlink)],
+	      [qw(atan2 chmod creat kill link mkdir pow rename strstr waitpid)],
+	      [qw(chown fcntl utime)]) {
+    $valid{$_} = $argc foreach @$list;
+    push @all, @$list;
+    ++$argc;
+}
+
+my @try = 0 .. $argc - 1;
+foreach my $func (sort @all) {
+    my $arg_pat = join ', ', ('[a-z]+') x $valid{$func};
+    my $expect = qr/\AUsage: POSIX::$func\($arg_pat\) at \(eval/;
+    foreach my $try (@try) {
+	next if $valid{$func} == $try;
+	my $call = "POSIX::$func(" . join(', ', 1 .. $try) . ')';
+	is(eval "$call; 1", undef, "$call fails");
+	like($@, $expect, "POSIX::$func for $try arguments gives expected error")
+    }
+}
+
+foreach my $func (qw(printf sprintf)) {
+    is(eval "POSIX::$func(); 1", undef, "POSIX::$func() fails");
+    like($@, qr/\AUsage: POSIX::$func\(pattern, args\.\.\.\) at \(eval/,
+	 "POSIX::$func for 0 arguments gives expected error");
+}
+
+done_testing();

Added: vendor/perl/dist/ext/POSIX/t/wrappers.t
===================================================================
--- vendor/perl/dist/ext/POSIX/t/wrappers.t	                        (rev 0)
+++ vendor/perl/dist/ext/POSIX/t/wrappers.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,233 @@
+#!./perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+plan(skip_all => "POSIX is unavailable")
+    unless $Config{extensions} =~ /\bPOSIX\b/;
+
+require POSIX;
+require Symbol;
+
+use constant NOT_HERE => 'this-file-should-not-exist';
+
+# localtime and gmtime in time.t.
+# exit, fork, waitpid, sleep in waitpid.t
+# errno in posix.t
+
+is(POSIX::abs(-42), 42, 'abs');
+is(POSIX::abs(-3.14), 3.14, 'abs');
+is(POSIX::abs(POSIX::exp(1)), CORE::exp(1), 'abs');
+is(POSIX::alarm(0), 0, 'alarm');
+is(eval {POSIX::assert(1); 1}, 1, 'assert(1)');
+is(eval {POSIX::assert(0); 1}, undef, 'assert(0)');
+like($@, qr/Assertion failed at/, 'assert throws an error');
+is(POSIX::atan2(0, 1), 0, 'atan2');
+is(POSIX::cos(0), 1, 'cos');
+is(POSIX::exp(0), 1, 'exp');
+is(POSIX::fabs(-42), 42, 'fabs');
+is(POSIX::fabs(-3.14), 3.14, 'fabs');
+
+is(do {local $^W;
+       POSIX::fcntl(Symbol::geniosym(), 0, 0);
+       1;
+   }, 1, 'fcntl');
+
+SKIP: {
+    # Win32 doesn't like me trying to fstat STDIN. Bothersome thing.
+    skip("Can't open $^X: $!", 1) unless open my $fh, '<', $^X;
+
+    is_deeply([POSIX::fstat(fileno $fh)], [stat $fh], 'fstat');
+}
+
+is(POSIX::getegid(), 0 + $), 'getegid');
+is(POSIX::geteuid(), 0 + $>, 'geteuid');
+is(POSIX::getgid(), 0 + $(, 'getgid');
+is(POSIX::getenv('PATH'), $ENV{PATH}, 'getenv');
+
+SKIP: {
+    my $name = eval {getgrgid $(};
+    skip("getgrgid not available", 2) unless defined $name;
+    is_deeply([POSIX::getgrgid($()], [CORE::getgrgid($()], "getgrgid($()");
+    is_deeply([POSIX::getgrnam($name)], [CORE::getgrnam($name)],
+	      "getgrnam('$name')");
+}
+
+cmp_ok((length join ' ', POSIX::getgroups()), '<=', length $), 'getgroups');
+is(POSIX::getlogin(), CORE::getlogin, 'getlogin');
+
+SKIP: {
+    skip('getpgrp not available', 1) unless $Config{d_getpgrp};
+    is(POSIX::getpgrp(), CORE::getpgrp(), 'getpgrp');
+}
+
+is(POSIX::getpid(), $$, 'getpid');
+
+SKIP: {
+    my $name = eval {getpwuid $<};
+    skip('getpwuid not available', 2) unless defined $name;
+    is_deeply([POSIX::getpwuid($<)], [CORE::getpwuid($<)], "getgrgid($<)");
+    is_deeply([POSIX::getpwnam($name)], [CORE::getpwnam($name)],
+	      "getpwnam('$name')");
+}
+
+SKIP: {
+    skip('STDIN is not a tty', 1) unless -t STDIN;
+    is(POSIX::isatty(*STDIN), 1, 'isatty');
+}
+
+is(POSIX::getuid(), $<, 'getuid');
+is(POSIX::log(1), 0, 'log');
+is(POSIX::pow(2, 31), 0x80000000, 'pow');
+#    usage "printf(pattern, args...)" if @_ < 1;
+
+{
+    my $buffer;
+    package Capture;
+    use parent 'Tie::StdHandle';
+
+    sub WRITE {
+	$buffer .= $_[1];
+	42;
+    }
+
+    package main;
+    tie *STDOUT, 'Capture';
+    is(POSIX::printf('%s %s%c', 'Hello', 'World', ord "\n"), 42, 'printf');
+    is($buffer, "Hello World\n", 'captured print output');
+    untie *STDOUT;
+}
+
+is(do {local $^W;
+       POSIX::rewind(Symbol::geniosym());
+       1;
+   }, 1, 'rewind');
+
+is(POSIX::sin(0), 0, 'sin');
+is(POSIX::sleep(0), 0, 'sleep');
+is(POSIX::sprintf('%o', 42), '52', 'sprintf');
+is(POSIX::sqrt(256), 16, 'sqrt');
+is_deeply([POSIX::stat($^X)], [stat $^X], 'stat');
+{
+    local $! = 2;
+    my $error = "$!";
+    is(POSIX::strerror(2), $error, 'strerror');
+}
+
+is(POSIX::strstr('BBFRPRAFPGHPP', 'FP'), 7, 'strstr');
+SKIP: {
+    my $true;
+    foreach (qw(/bin/true /usr/bin/true)) {
+	if (-x $_) {
+	    $true = $_;
+	    last;
+	}
+    }
+    skip("Can't find true", 1) unless $true;
+    is(POSIX::system($true), 0, 'system');
+}
+
+{
+    my $past = CORE::time;
+    my $present = POSIX::time();
+    my $future = CORE::time;
+    # Shakes fist at virtual machines
+    cmp_ok($past, '<=', $present, 'time');
+    cmp_ok($present, '<=', $future, 'time');
+}
+
+is(POSIX::tolower('Perl Rules'), 'perl rules', 'tolower');
+is(POSIX::toupper('oi!'), 'OI!', 'toupper');
+
+is(-e NOT_HERE, undef, NOT_HERE . ' does not exist');
+
+foreach ([undef, 0, 'chdir', NOT_HERE],
+	 [undef, 0, 'chmod', 0, NOT_HERE],
+	 ['d_chown', 0, 'chown', 0, 0, NOT_HERE],
+	 [undef, undef, 'creat', NOT_HERE . '/crash', 0],
+	 ['d_link', 0, 'link', NOT_HERE, 'ouch'],
+	 [undef, 0, 'remove', NOT_HERE],
+	 [undef, 0, 'rename', NOT_HERE, 'z_zwapp'],
+	 [undef, 0, 'remove', NOT_HERE],
+	 [undef, 0, 'unlink', NOT_HERE],
+	 [undef, 0, 'utime', NOT_HERE, 0, 0],
+	) {
+    my ($skip, $expect, $name, @args) = @$_;
+    my $func = do {no strict 'refs'; \&{"POSIX::$name"}};
+
+ SKIP: {
+        skip("$name() is not available", 2) if $skip && !$Config{$skip};
+	$! = 0;
+	is(&$func(@args), $expect, $name);
+	isnt($!, '', "$name reported an error");
+    }
+}
+
+{
+    my $dir = "./HiC_$$";
+    is(-e $dir, undef, "$dir does not exist");
+
+    is(POSIX::mkdir($dir, 0755), 1, 'mkdir');
+    is(-d $dir, 1, "$dir now exists");
+
+    my $dh = POSIX::opendir($dir);
+    isnt($dh, undef, 'opendir');
+
+    my @first = POSIX::readdir($dh);
+    is(POSIX::rewinddir($dh), 1, 'rewinddir');
+    my @second = POSIX::readdir($dh);
+
+    is_deeply(\@first, \@second, 'readdir,rewinddir,readdir');
+
+    is(POSIX::closedir($dh), 1, 'rewinddir');
+
+    is(POSIX::rmdir($dir), 1, 'rmdir');
+    is(-e $dir, undef, "$dir does not exist");
+}
+
+SKIP: {
+    skip("No \$SIG{USR1} on $^O", 4) unless exists $SIG{USR1};
+    my $gotit = 0;
+    $SIG{USR1} = sub { $gotit++ };
+    is(POSIX::kill($$, 'SIGUSR1'), 1, 'kill');
+    is($gotit, 1, 'got first signal');
+    is(POSIX::raise('SIGUSR1'), 1, 'raise');
+    is($gotit, 2, 'got second signal');
+}
+
+SKIP: {
+    foreach (qw(fork pipe)) {
+	skip("no $_", 8) unless $Config{"d_$_"};
+    }
+    # die with an uncaught SIGARLM if something goes wrong
+    is(CORE::alarm(60), 0, 'no alarm set previously');
+
+    is((pipe *STDIN, my $w), 1, 'pipe');
+    my $pid = POSIX::fork();
+    fail("fork failed: $!") unless defined $pid;
+
+    if ($pid) {
+	close $w;
+	is(POSIX::getc(*STDIN), '1', 'getc');
+	is(POSIX::getchar(), '2', 'getchar');
+	is(POSIX::gets(), "345\n", 'gets');
+	my $ppid = <STDIN>;
+	chomp $ppid;
+	is($ppid, $$, 'getppid');
+	is(POSIX::wait(), $pid, 'wait');
+	is(POSIX::WIFEXITED(${^CHILD_ERROR_NATIVE}), 1, 'child exited cleanly');
+	is(POSIX::WEXITSTATUS(${^CHILD_ERROR_NATIVE}), 1,
+	   'child exited with 1 (the retun value of its close call)');
+    } else {
+	# Child
+	close *STDIN;
+	print $w "12345\n", POSIX::getppid(), "\n";
+	POSIX::_exit(close $w);
+    }
+}
+
+my $umask = CORE::umask;
+is(POSIX::umask($umask), $umask, 'umask');
+
+done_testing();

Added: vendor/perl/dist/ext/PerlIO-mmap/mmap.pm
===================================================================
--- vendor/perl/dist/ext/PerlIO-mmap/mmap.pm	                        (rev 0)
+++ vendor/perl/dist/ext/PerlIO-mmap/mmap.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,30 @@
+package PerlIO::mmap;
+use strict;
+use warnings;
+our $VERSION = '0.011';
+
+use XSLoader;
+XSLoader::load(__PACKAGE__, __PACKAGE__->VERSION);
+
+1;
+
+__END__
+
+=head1 NAME
+
+PerlIO::mmap - Memory mapped IO
+
+=head1 SYNOPSIS
+
+ open my $fh, '<:mmap', $filename;
+
+=head1 DESCRIPTION
+
+This layer does C<read> and C<write> operations by mmap()ing the file if possible, but falls back to the default behavior if not.
+
+=head1 IMPLEMENTATION NOTE
+
+C<PerlIO::mmap> only exists to use XSLoader to load C code that provides support for using memory mapped IO. One does not need to explicitly C<use PerlIO::mmap;>.
+
+=cut
+

Added: vendor/perl/dist/ext/PerlIO-mmap/mmap.xs
===================================================================
--- vendor/perl/dist/ext/PerlIO-mmap/mmap.xs	                        (rev 0)
+++ vendor/perl/dist/ext/PerlIO-mmap/mmap.xs	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,320 @@
+/*
+ * Local variables:
+ * c-indentation-style: bsd
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * ex: set ts=8 sts=4 sw=4 et:
+ */
+
+#define PERL_NO_GET_CONTEXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#if defined(PERLIO_LAYERS) && defined(HAS_MMAP)
+
+#include "perliol.h"
+#include <sys/mman.h>
+
+/*
+ * mmap as "buffer" layer
+ */
+
+typedef struct {
+    PerlIOBuf base;             /* PerlIOBuf stuff */
+    Mmap_t mptr;                /* Mapped address */
+    Size_t len;                 /* mapped length */
+    STDCHAR *bbuf;              /* malloced buffer if map fails */
+} PerlIOMmap;
+
+IV
+PerlIOMmap_map(pTHX_ PerlIO *f)
+{
+    dVAR;
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    const IV flags = PerlIOBase(f)->flags;
+    IV code = 0;
+    if (m->len)
+	abort();
+    if (flags & PERLIO_F_CANREAD) {
+	PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf);
+	const int fd = PerlIO_fileno(f);
+	Stat_t st;
+	code = Fstat(fd, &st);
+	if (code == 0 && S_ISREG(st.st_mode)) {
+	    SSize_t len = st.st_size - b->posn;
+	    if (len > 0) {
+		Off_t posn;
+		if (PL_mmap_page_size <= 0)
+		  Perl_croak(aTHX_ "panic: bad pagesize %" IVdf,
+			     PL_mmap_page_size);
+		if (b->posn < 0) {
+		    /*
+		     * This is a hack - should never happen - open should
+		     * have set it !
+		     */
+		    b->posn = PerlIO_tell(PerlIONext(f));
+		}
+		posn = (b->posn / PL_mmap_page_size) * PL_mmap_page_size;
+		len = st.st_size - posn;
+		m->mptr = (Mmap_t)mmap(NULL, len, PROT_READ, MAP_SHARED, fd, posn);
+		if (m->mptr && m->mptr != (Mmap_t) - 1) {
+#if 0 && defined(HAS_MADVISE) && defined(MADV_SEQUENTIAL)
+		    madvise(m->mptr, len, MADV_SEQUENTIAL);
+#endif
+#if 0 && defined(HAS_MADVISE) && defined(MADV_WILLNEED)
+		    madvise(m->mptr, len, MADV_WILLNEED);
+#endif
+		    PerlIOBase(f)->flags =
+			(flags & ~PERLIO_F_EOF) | PERLIO_F_RDBUF;
+		    b->end = ((STDCHAR *) m->mptr) + len;
+		    b->buf = ((STDCHAR *) m->mptr) + (b->posn - posn);
+		    b->ptr = b->buf;
+		    m->len = len;
+		}
+		else {
+		    b->buf = NULL;
+		}
+	    }
+	    else {
+		PerlIOBase(f)->flags =
+		    flags | PERLIO_F_EOF | PERLIO_F_RDBUF;
+		b->buf = NULL;
+		b->ptr = b->end = b->ptr;
+		code = -1;
+	    }
+	}
+    }
+    return code;
+}
+
+IV
+PerlIOMmap_unmap(pTHX_ PerlIO *f)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    IV code = 0;
+    if (m->len) {
+	PerlIOBuf * const b = &m->base;
+	if (b->buf) {
+	    /* The munmap address argument is tricky: depending on the
+	     * standard it is either "void *" or "caddr_t" (which is
+	     * usually "char *" (signed or unsigned).  If we cast it
+	     * to "void *", those that have it caddr_t and an uptight
+	     * C++ compiler, will freak out.  But casting it as char*
+	     * should work.  Maybe.  (Using Mmap_t figured out by
+	     * Configure doesn't always work, apparently.) */
+	    code = munmap((char*)m->mptr, m->len);
+	    b->buf = NULL;
+	    m->len = 0;
+	    m->mptr = NULL;
+	    if (PerlIO_seek(PerlIONext(f), b->posn, SEEK_SET) != 0)
+		code = -1;
+	}
+	b->ptr = b->end = b->buf;
+	PerlIOBase(f)->flags &= ~(PERLIO_F_RDBUF | PERLIO_F_WRBUF);
+    }
+    return code;
+}
+
+STDCHAR *
+PerlIOMmap_get_base(pTHX_ PerlIO *f)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    PerlIOBuf * const b = &m->base;
+    if (b->buf && (PerlIOBase(f)->flags & PERLIO_F_RDBUF)) {
+	/*
+	 * Already have a readbuffer in progress
+	 */
+	return b->buf;
+    }
+    if (b->buf) {
+	/*
+	 * We have a write buffer or flushed PerlIOBuf read buffer
+	 */
+	m->bbuf = b->buf;       /* save it in case we need it again */
+	b->buf = NULL;          /* Clear to trigger below */
+    }
+    if (!b->buf) {
+	PerlIOMmap_map(aTHX_ f);        /* Try and map it */
+	if (!b->buf) {
+	    /*
+	     * Map did not work - recover PerlIOBuf buffer if we have one
+	     */
+	    b->buf = m->bbuf;
+	}
+    }
+    b->ptr = b->end = b->buf;
+    if (b->buf)
+	return b->buf;
+    return PerlIOBuf_get_base(aTHX_ f);
+}
+
+SSize_t
+PerlIOMmap_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    PerlIOBuf * const b = &m->base;
+    if (PerlIOBase(f)->flags & PERLIO_F_WRBUF)
+	PerlIO_flush(f);
+    if (b->ptr && (b->ptr - count) >= b->buf
+	&& memEQ(b->ptr - count, vbuf, count)) {
+	b->ptr -= count;
+	PerlIOBase(f)->flags &= ~PERLIO_F_EOF;
+	return count;
+    }
+    if (m->len) {
+	/*
+	 * Loose the unwritable mapped buffer
+	 */
+	PerlIO_flush(f);
+	/*
+	 * If flush took the "buffer" see if we have one from before
+	 */
+	if (!b->buf && m->bbuf)
+	    b->buf = m->bbuf;
+	if (!b->buf) {
+	    PerlIOBuf_get_base(aTHX_ f);
+	    m->bbuf = b->buf;
+	}
+    }
+    return PerlIOBuf_unread(aTHX_ f, vbuf, count);
+}
+
+SSize_t
+PerlIOMmap_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    PerlIOBuf * const b = &m->base;
+
+    if (!b->buf || !(PerlIOBase(f)->flags & PERLIO_F_WRBUF)) {
+	/*
+	 * No, or wrong sort of, buffer
+	 */
+	if (m->len) {
+	    if (PerlIOMmap_unmap(aTHX_ f) != 0)
+		return 0;
+	}
+	/*
+	 * If unmap took the "buffer" see if we have one from before
+	 */
+	if (!b->buf && m->bbuf)
+	    b->buf = m->bbuf;
+	if (!b->buf) {
+	    PerlIOBuf_get_base(aTHX_ f);
+	    m->bbuf = b->buf;
+	}
+    }
+    return PerlIOBuf_write(aTHX_ f, vbuf, count);
+}
+
+IV
+PerlIOMmap_flush(pTHX_ PerlIO *f)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    PerlIOBuf * const b = &m->base;
+    IV code = PerlIOBuf_flush(aTHX_ f);
+    /*
+     * Now we are "synced" at PerlIOBuf level
+     */
+    if (b->buf) {
+	if (m->len) {
+	    /*
+	     * Unmap the buffer
+	     */
+	    if (PerlIOMmap_unmap(aTHX_ f) != 0)
+		code = -1;
+	}
+	else {
+	    /*
+	     * We seem to have a PerlIOBuf buffer which was not mapped
+	     * remember it in case we need one later
+	     */
+	    m->bbuf = b->buf;
+	}
+    }
+    return code;
+}
+
+IV
+PerlIOMmap_fill(pTHX_ PerlIO *f)
+{
+    PerlIOBuf * const b = PerlIOSelf(f, PerlIOBuf);
+    IV code = PerlIO_flush(f);
+    if (code == 0 && !b->buf) {
+	code = PerlIOMmap_map(aTHX_ f);
+    }
+    if (code == 0 && !(PerlIOBase(f)->flags & PERLIO_F_RDBUF)) {
+	code = PerlIOBuf_fill(aTHX_ f);
+    }
+    return code;
+}
+
+IV
+PerlIOMmap_close(pTHX_ PerlIO *f)
+{
+    PerlIOMmap * const m = PerlIOSelf(f, PerlIOMmap);
+    PerlIOBuf * const b = &m->base;
+    IV code = PerlIO_flush(f);
+    if (m->bbuf) {
+	b->buf = m->bbuf;
+	m->bbuf = NULL;
+	b->ptr = b->end = b->buf;
+    }
+    if (PerlIOBuf_close(aTHX_ f) != 0)
+	code = -1;
+    return code;
+}
+
+PerlIO *
+PerlIOMmap_dup(pTHX_ PerlIO *f, PerlIO *o, CLONE_PARAMS *param, int flags)
+{
+ return PerlIOBase_dup(aTHX_ f, o, param, flags);
+}
+
+
+PERLIO_FUNCS_DECL(PerlIO_mmap) = {
+    sizeof(PerlIO_funcs),
+    "mmap",
+    sizeof(PerlIOMmap),
+    PERLIO_K_BUFFERED|PERLIO_K_RAW,
+    PerlIOBuf_pushed,
+    PerlIOBuf_popped,
+    PerlIOBuf_open,
+    PerlIOBase_binmode,         /* binmode */
+    NULL,
+    PerlIOBase_fileno,
+    PerlIOMmap_dup,
+    PerlIOBuf_read,
+    PerlIOMmap_unread,
+    PerlIOMmap_write,
+    PerlIOBuf_seek,
+    PerlIOBuf_tell,
+    PerlIOBuf_close,
+    PerlIOMmap_flush,
+    PerlIOMmap_fill,
+    PerlIOBase_eof,
+    PerlIOBase_error,
+    PerlIOBase_clearerr,
+    PerlIOBase_setlinebuf,
+    PerlIOMmap_get_base,
+    PerlIOBuf_bufsiz,
+    PerlIOBuf_get_ptr,
+    PerlIOBuf_get_cnt,
+    PerlIOBuf_set_ptrcnt,
+};
+
+#endif /* Layers available */
+
+MODULE = PerlIO::mmap	PACKAGE = PerlIO::mmap
+
+PROTOTYPES: DISABLE
+
+BOOT:
+{
+#if defined(PERLIO_LAYERS) && defined(HAS_MMAP)
+    PerlIO_define_layer(aTHX_ PERLIO_FUNCS_CAST(&PerlIO_mmap));
+#endif
+}
+

Added: vendor/perl/dist/ext/Pod-Functions/Functions_pm.PL
===================================================================
--- vendor/perl/dist/ext/Pod-Functions/Functions_pm.PL	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Functions/Functions_pm.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,272 @@
+#!perl -w
+use strict;
+use Pod::Simple::SimpleTree;
+
+my ($tap, $test, %Missing);
+
+ at ARGV = grep { not($_ eq '--tap' and $tap = 1) } @ARGV;
+
+my (%Kinds, %Flavor, @Types);
+my %Omit;
+
+my $p = Pod::Simple::SimpleTree->new;
+$p->accept_targets('Pod::Functions');
+my $tree = $p->parse_file(shift)->root;
+
+foreach my $TL_node (@$tree[2 .. $#$tree]) {
+    next unless $TL_node->[0] eq 'over-text';
+    my $i = 2;
+    while ($i <= $#$TL_node) {
+        if ($TL_node->[$i][0] ne 'item-text') {
+            ++$i;
+            next;
+        }
+
+        my $item_text = $TL_node->[$i][2];
+        die "Confused by $item_text at line $TL_node->[$i][1]{start_line}"
+            if ref $item_text;
+        $item_text =~ s/\s+\z//s;
+
+        if ($TL_node->[$i+1][0] ne 'for'
+           || $TL_node->[$i+1][1]{target} ne 'Pod::Functions') {
+            ++$i;
+            ++$Missing{$item_text} unless $Omit{$item_text};
+            next;
+        }
+        my $data = $TL_node->[$i+1][2];
+        die "Confused by $data at line $TL_node->[$i+1][1]{start_line}"
+            unless ref $data eq 'ARRAY';
+        my $text = $data->[2];
+        die "Confused by $text at line $TL_node->[$i+1][1]{start_line}"
+            if ref $text;
+
+        $i += 2;
+
+        if ($text =~ s/^=//) {
+            # We are in "Perl Functions by Category"
+            die "Expected a paragraph after =item at $TL_node->[$i-2][1]{start_line}"
+                unless $TL_node->[$i][0] eq 'Para';
+            my $para = $TL_node->[$i];
+            # $text is the "type" of the built-in
+            # Anything starting ! is not for inclusion in Pod::Functions
+
+            foreach my $func (@$para[2 .. $#$para]) {
+                next unless ref $func eq 'ARRAY';
+                die "Expected only C<> blocks in paragraph after item at $TL_node->[$i-2][1]{start_line}"
+                    unless $func->[0] eq 'C' && !ref $func->[2];
+                # Everything is plain text (ie $func->[2] is everything)
+                # except for C<-I<X>>. So untangle up to one level of nested <>
+                my $funcname = join '', map {
+                    ref $_ ? $_->[2] : $_
+                } @$func[2..$#$func];
+                $funcname =~ s!(q.?)//!$1/STRING/!;
+                push @{$Kinds{$text}}, $funcname;
+            }
+            if ($text =~ /^!/) {
+                ++$Omit{$_} foreach @{$Kinds{$text}};
+            } else {
+                push @Types, [$text, $item_text];
+            }
+        } else {
+            $item_text =~ s/ .*//;
+            # For now, just remove any metadata about when it was added:
+            $text =~ s/^\+\S+ //;
+            $Flavor{$item_text} = $text;
+            ++$Omit{$item_text} if $text =~ /^!/;
+        }
+    }
+}
+
+# Take the lists of functions for each type group, and invert them to get the
+# type group (or groups) for each function:
+my %Type;
+while (my ($type, $funcs) = each %Kinds) {
+    push @{$Type{$_}}, $type foreach @$funcs;
+}
+
+# We sort __SUB__ after sub, but before substr, but __PACKAGE__ after package,
+# and __END__ after END.
+sub sort_funcs {
+    map { $_->[0] }
+        sort { uc $a->[1] cmp uc $b->[1] || $b->[1] cmp $a->[1] || $a->[0] cmp $b->[0] }
+            map  { my $f = tr/_//dr; [ $_, $f ] }
+                @_;
+}
+
+if ($tap) {
+    foreach my $func (sort_funcs(keys %Flavor)) {
+       ++$test;
+       my $ok = $Type{$func} ? 'ok' : 'not ok';
+       print "$ok $test - $func is mentioned in at least one category group\n";
+    }
+    foreach (sort keys %Missing) {
+        # Ignore anything that looks like an alternative for a function we've
+        # already seen;
+        s!(?: [A-Z].*| \(\)|\( LIST \)| /PATTERN/.*)!!;
+        next if $Flavor{$_};
+        ++$test;
+        if (/^[_a-z]/) {
+            print "not ok $test - function '$_' has no summary for Pod::Functions\n";
+        } else {
+            print "not ok $test - section '$_' has no type for Pod::Functions\n";
+        }
+    }
+    foreach my $kind (sort keys %Kinds) {
+        my $funcs = $Kinds{$kind};
+        ++$test;
+        my $want = join ' ', sort_funcs(@$funcs);
+        if ("@$funcs" eq $want) {
+            print "ok $test - category $kind is correctly sorted\n";
+        } else {
+            print "not ok $test - category $kind is correctly sorted\n";
+            print STDERR "# Have @$funcs\n# Want $want\n";
+        }
+    }
+    print "1..$test\n";
+    exit;
+}
+
+# blead will run this with miniperl, hence we can't use autodie
+my $real = 'Functions.pm';
+my $temp = "Functions.$$";
+
+END {
+    return if !defined $temp || !-e $temp;
+    unlink $temp or warn "Can't unlink '$temp': $!";
+}
+
+foreach ($real, $temp) {
+    next if !-e $_;
+    unlink $_ or die "Can't unlink '$_': $!";
+}
+
+open my $fh, '>', $temp or die "Can't open '$temp' for writing: $!";
+print $fh <<'EOT';
+package Pod::Functions;
+use strict;
+
+=head1 NAME
+
+Pod::Functions - Group Perl's functions a la perlfunc.pod
+
+=head1 SYNOPSIS
+
+    use Pod::Functions;
+    
+    my @misc_ops = @{ $Kinds{ 'Misc' } };
+    my $misc_dsc = $Type_Description{ 'Misc' };
+
+or
+
+    perl /path/to/lib/Pod/Functions.pm
+
+This will print a grouped list of Perl's functions, like the 
+L<perlfunc/"Perl Functions by Category"> section.
+
+=head1 DESCRIPTION
+
+It exports the following variables:
+
+=over 4
+
+=item %Kinds
+
+This holds a hash-of-lists. Each list contains the functions in the category
+the key denotes.
+
+=item %Type
+
+In this hash each key represents a function and the value is the category.
+The category can be a comma separated list.
+
+=item %Flavor
+
+In this hash each key represents a function and the value is a short 
+description of that function.
+
+=item %Type_Description
+
+In this hash each key represents a category of functions and the value is 
+a short description of that category.
+
+=item @Type_Order
+
+This list of categories is used to produce the same order as the
+L<perlfunc/"Perl Functions by Category"> section.
+
+=back
+
+=cut
+
+our $VERSION = '1.06';
+
+require Exporter;
+
+our @ISA = qw(Exporter);
+our @EXPORT = qw(%Kinds %Type %Flavor %Type_Description @Type_Order);
+
+our(%Kinds, %Type, %Flavor, %Type_Description, @Type_Order);
+
+foreach (
+EOT
+
+foreach (@Types) {
+    my ($type, $desc) = @$_;
+    $type = "'$type'" if $type =~ /[^A-Za-z]/;
+    $desc =~ s!([\\'])!\\$1!g;
+    printf $fh "    [%-9s  => '%s'],\n", $type, $desc;
+}
+
+print $fh <<'EOT';
+	) {
+    push @Type_Order, $_->[0];
+    $Type_Description{$_->[0]} = $_->[1];
+};
+
+while (<DATA>) {
+    chomp;
+    s/^#.*//;
+    next unless $_;
+    my($name, @data) = split "\t", $_;
+    $Flavor{$name} = pop @data;
+    $Type{$name} = join ',', @data;
+    for my $t (@data) {
+        push @{$Kinds{$t}}, $name;
+    }
+}
+
+close DATA;
+
+my( $typedesc, $list );
+unless (caller) { 
+    foreach my $type ( @Type_Order ) {
+	$list = join(", ", sort @{$Kinds{$type}});
+	$typedesc = $Type_Description{$type} . ":";
+	write;
+    } 
+}
+
+format = 
+
+^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+    $typedesc 
+~~ ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+    $typedesc 
+ ~~  ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
+	$list
+.
+
+1;
+
+__DATA__
+EOT
+
+foreach my $func (sort_funcs(keys %Flavor)) {
+    my $desc = $Flavor{$func};
+    die "No types listed for $func" unless $Type{$func};
+    next if $Omit{$func};
+    print $fh join("\t", $func, @{$Type{$func}}, $desc), "\n";
+}
+
+close $fh or die "Can't close '$temp': $!";
+rename $temp, $real or die "Can't rename '$temp' to '$real': $!";

Added: vendor/perl/dist/ext/Pod-Functions/Makefile.PL
===================================================================
--- vendor/perl/dist/ext/Pod-Functions/Makefile.PL	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Functions/Makefile.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!perl -w
+
+use strict;
+use ExtUtils::MakeMaker;
+use File::Spec::Functions;
+
+WriteMakefile(NAME => 'Pod::Functions',
+	      VERSION_FROM => 'Functions_pm.PL',
+	      LICENSE => 'perl',
+	      PREREQ_PM => {},
+	      ABSTRACT_FROM => 'Functions_pm.PL',
+	      AUTHOR => 'Perl 5 Porters <perlbug at perl.org>',
+	      INSTALLDIRS => 'perl',
+	      PL_FILES => {}, # Stop EU::MM defaulting this to run our PL
+	      PM => {'Functions.pm' => '$(INST_LIBDIR)/Functions.pm'},
+	      clean => {FILES => 'Functions.pm'},
+	     );
+
+# There doesn't seem to be any way to get ExtUtils::MakeMaker to add a
+# dependency on another file (or target), and as it's using :: rules, not :
+# rules, then we can't simply add a one line dependency. So we need to provide
+# the entire thing. Fortunately, the same code in MM_Unix.pm is actually used
+# for all platforms, so this code below should also be portable:
+
+sub MY::postamble {
+    my $pf = catfile(updir, updir, 'pod', 'perlfunc.pod');
+    return <<"EOT";
+all :: Functions.pm
+	\$(NOECHO) \$(NOOP)
+
+Functions.pm :: Functions_pm.PL $pf
+	\$(PERLRUN) Functions_pm.PL $pf
+EOT
+}

Added: vendor/perl/dist/ext/Pod-Functions/t/Functions.t
===================================================================
--- vendor/perl/dist/ext/Pod-Functions/t/Functions.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Functions/t/Functions.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,160 @@
+#!perl -w
+
+use strict;
+
+use File::Basename;
+use File::Spec;
+
+use Test::More;
+
+BEGIN {
+    use_ok( 'Pod::Functions' );
+}
+
+# How do you test exported vars?
+my( $pkg_ref, $exp_ref ) = ( \%Pod::Functions::Kinds, \%Kinds );
+is( $pkg_ref, $exp_ref, '%Pod::Functions::Kinds exported' );
+
+( $pkg_ref, $exp_ref ) = ( \%Pod::Functions::Type, \%Type );
+is( $pkg_ref, $exp_ref, '%Pod::Functions::Type exported' );
+
+( $pkg_ref, $exp_ref ) = ( \%Pod::Functions::Flavor, \%Flavor );
+is( $pkg_ref, $exp_ref, '%Pod::Functions::Flavor exported' );
+
+( $pkg_ref, $exp_ref ) = ( \%Pod::Functions::Type_Description, 
+                           \%Type_Description );
+is( $pkg_ref, $exp_ref, '%Pod::Functions::Type_Description exported' );
+
+( $pkg_ref, $exp_ref ) = ( \@Pod::Functions::Type_Order, \@Type_Order );
+is( $pkg_ref, $exp_ref, '@Pod::Functions::Type_Order exported' );
+
+# Check @Type_Order
+my @catagories = qw(
+    String  Regexp  Math   ARRAY  LIST      HASH    I/O
+    Binary  File    Flow   Namespace Misc    Process
+    Modules Objects Socket SysV   User      Network Time
+);
+
+ok( eq_array( \@Type_Order, \@catagories ),
+    '@Type_Order' );
+
+my @cat_keys = grep exists $Type_Description{ $_ } => @Type_Order;
+
+ok( eq_array( \@cat_keys, \@catagories ),
+    'keys() %Type_Description' );
+
+SKIP: {
+	my $test_out = do { local $/; <DATA> }; 
+	
+	skip( "Can't fork '$^X': $!", 1) 
+	    unless open my $fh, qq[$^X "-I../../lib" Functions.pm |];
+	my $fake_out = do { local $/; <$fh> };
+	skip( "Pipe error: $!", 1)
+	    unless close $fh;
+
+	is( $fake_out, $test_out, 'run as plain program' );
+}
+
+foreach my $func (sort keys %Flavor) {
+    my $desc = $Flavor{$func};
+    like($desc, qr/^(?:[a-z]|SysV)/,
+	 "Description for $desc starts with a lowercase letter or SysV");
+}
+
+done_testing();
+
+=head1 NAME
+
+Functions.t - Test Pod::Functions
+
+=head1 AUTHOR
+
+20011229 Abe Timmerman <abe at ztreet.demon.nl>
+
+=cut
+
+__DATA__
+
+Functions for SCALARs or strings:
+     chomp, chop, chr, crypt, fc, hex, index, lc, lcfirst,
+     length, oct, ord, pack, q/STRING/, qq/STRING/, reverse,
+     rindex, sprintf, substr, tr///, uc, ucfirst, y///
+
+Regular expressions and pattern matching:
+     m//, pos, qr/STRING/, quotemeta, s///, split, study
+
+Numeric functions:
+     abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt,
+     srand
+
+Functions for real @ARRAYs:
+     each, keys, pop, push, shift, splice, unshift, values
+
+Functions for list data:
+     grep, join, map, qw/STRING/, reverse, sort, unpack
+
+Functions for real %HASHes:
+     delete, each, exists, keys, values
+
+Input and output functions:
+     binmode, close, closedir, dbmclose, dbmopen, die, eof,
+     fileno, flock, format, getc, print, printf, read, readdir,
+     readline, rewinddir, say, seek, seekdir, select, syscall,
+     sysread, sysseek, syswrite, tell, telldir, truncate, warn,
+     write
+
+Functions for fixed-length data or records:
+     pack, read, syscall, sysread, sysseek, syswrite, unpack,
+     vec
+
+Functions for filehandles, files, or directories:
+     -X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link,
+     lstat, mkdir, open, opendir, readlink, rename, rmdir,
+     stat, symlink, sysopen, umask, unlink, utime
+
+Keywords related to the control flow of your Perl program:
+     __FILE__, __LINE__, __PACKAGE__, __SUB__, break, caller,
+     continue, die, do, dump, eval, evalbytes, exit, goto,
+     last, next, redo, return, sub, wantarray
+
+Keywords related to scoping:
+     caller, import, local, my, our, package, state, use
+
+Miscellaneous functions:
+     defined, formline, lock, prototype, reset, scalar, undef
+
+Functions for processes and process groups:
+     alarm, exec, fork, getpgrp, getppid, getpriority, kill,
+     pipe, qx/STRING/, readpipe, setpgrp, setpriority, sleep,
+     system, times, wait, waitpid
+
+Keywords related to Perl modules:
+     do, import, no, package, require, use
+
+Keywords related to classes and object-orientation:
+     bless, dbmclose, dbmopen, package, ref, tie, tied, untie,
+     use
+
+Low-level socket functions:
+     accept, bind, connect, getpeername, getsockname,
+     getsockopt, listen, recv, send, setsockopt, shutdown,
+     socket, socketpair
+
+System V interprocess communication functions:
+     msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop,
+     shmctl, shmget, shmread, shmwrite
+
+Fetching user and group info:
+     endgrent, endhostent, endnetent, endpwent, getgrent,
+     getgrgid, getgrnam, getlogin, getpwent, getpwnam,
+     getpwuid, setgrent, setpwent
+
+Fetching network info:
+     endprotoent, endservent, gethostbyaddr, gethostbyname,
+     gethostent, getnetbyaddr, getnetbyname, getnetent,
+     getprotobyname, getprotobynumber, getprotoent,
+     getservbyname, getservbyport, getservent, sethostent,
+     setnetent, setprotoent, setservent
+
+Time-related functions:
+     gmtime, localtime, time, times

Added: vendor/perl/dist/ext/Pod-Html/bin/pod2html
===================================================================
--- vendor/perl/dist/ext/Pod-Html/bin/pod2html	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/bin/pod2html	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,123 @@
+=pod
+
+=head1 NAME
+
+pod2html - convert .pod files to .html files
+
+=head1 SYNOPSIS
+
+    pod2html --help --htmlroot=<name> --infile=<name> --outfile=<name>
+             --podpath=<name>:...:<name> --podroot=<name>
+             --recurse --norecurse --verbose
+             --index --noindex --title=<name>
+
+=head1 DESCRIPTION
+
+Converts files from pod format (see L<perlpod>) to HTML format.
+
+=head1 ARGUMENTS
+
+pod2html takes the following arguments:
+
+=over 4
+
+=item help
+
+  --help
+
+Displays the usage message.
+
+=item htmlroot
+
+  --htmlroot=name
+
+Sets the base URL for the HTML files.  When cross-references are made,
+the HTML root is prepended to the URL.
+
+=item infile
+
+  --infile=name
+
+Specify the pod file to convert.  Input is taken from STDIN if no
+infile is specified.
+
+=item outfile
+
+  --outfile=name
+
+Specify the HTML file to create.  Output goes to STDOUT if no outfile
+is specified.
+
+=item podroot
+
+  --podroot=name
+
+Specify the base directory for finding library pods.
+
+=item podpath
+
+  --podpath=name:...:name
+
+Specify which subdirectories of the podroot contain pod files whose
+HTML converted forms can be linked-to in cross-references.
+
+=item index
+
+  --index
+
+Generate an index at the top of the HTML file (default behaviour).
+
+=item noindex
+
+  --noindex
+
+Do not generate an index at the top of the HTML file.
+
+
+=item recurse
+
+  --recurse
+
+Recurse into subdirectories specified in podpath (default behaviour).
+
+=item norecurse
+
+  --norecurse
+
+Do not recurse into subdirectories specified in podpath.
+
+=item title
+
+  --title=title
+
+Specify the title of the resulting HTML file.
+
+=item verbose
+
+  --verbose
+
+Display progress messages.
+
+=back
+
+=head1 AUTHOR
+
+Tom Christiansen, E<lt>tchrist at perl.comE<gt>.
+
+=head1 BUGS
+
+See L<Pod::Html> for a list of known bugs in the translator.
+
+=head1 SEE ALSO
+
+L<perlpod>, L<Pod::Html>
+
+=head1 COPYRIGHT
+
+This program is distributed under the Artistic License.
+
+=cut
+
+use Pod::Html;
+
+pod2html @ARGV;

Added: vendor/perl/dist/ext/Pod-Html/lib/Pod/Html.pm
===================================================================
--- vendor/perl/dist/ext/Pod-Html/lib/Pod/Html.pm	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/lib/Pod/Html.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,812 @@
+package Pod::Html;
+use strict;
+require Exporter;
+
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+$VERSION = 1.18;
+ at ISA = qw(Exporter);
+ at EXPORT = qw(pod2html htmlify);
+ at EXPORT_OK = qw(anchorify);
+
+use Carp;
+use Config;
+use Cwd;
+use File::Basename;
+use File::Spec;
+use File::Spec::Unix;
+use Getopt::Long;
+use Pod::Simple::Search;
+BEGIN {
+    if($Config{d_setlocale}) {
+        require locale; import locale; # make \w work right in non-ASCII lands
+    }
+}
+
+=head1 NAME
+
+Pod::Html - module to convert pod files to HTML
+
+=head1 SYNOPSIS
+
+    use Pod::Html;
+    pod2html([options]);
+
+=head1 DESCRIPTION
+
+Converts files from pod format (see L<perlpod>) to HTML format.  It
+can automatically generate indexes and cross-references, and it keeps
+a cache of things it knows how to cross-reference.
+
+=head1 FUNCTIONS
+
+=head2 pod2html
+
+    pod2html("pod2html",
+             "--podpath=lib:ext:pod:vms",
+             "--podroot=/usr/src/perl",
+             "--htmlroot=/perl/nmanual",
+             "--recurse",
+             "--infile=foo.pod",
+             "--outfile=/perl/nmanual/foo.html");
+
+pod2html takes the following arguments:
+
+=over 4
+
+=item backlink
+
+    --backlink
+
+Turns every C<head1> heading into a link back to the top of the page.
+By default, no backlinks are generated.
+
+=item cachedir
+
+    --cachedir=name
+
+Creates the directory cache in the given directory.
+
+=item css
+
+    --css=stylesheet
+
+Specify the URL of a cascading style sheet.  Also disables all HTML/CSS
+C<style> attributes that are output by default (to avoid conflicts).
+
+=item flush
+
+    --flush
+
+Flushes the directory cache.
+
+=item header
+
+    --header
+    --noheader
+
+Creates header and footer blocks containing the text of the C<NAME>
+section.  By default, no headers are generated.
+
+=item help
+
+    --help
+
+Displays the usage message.
+
+=item htmldir
+
+    --htmldir=name
+
+Sets the directory to which all cross references in the resulting
+html file will be relative. Not passing this causes all links to be
+absolute since this is the value that tells Pod::Html the root of the 
+documentation tree.
+
+Do not use this and --htmlroot in the same call to pod2html; they are
+mutually exclusive.
+
+=item htmlroot
+
+    --htmlroot=name
+
+Sets the base URL for the HTML files.  When cross-references are made,
+the HTML root is prepended to the URL.
+
+Do not use this if relative links are desired: use --htmldir instead.
+
+Do not pass both this and --htmldir to pod2html; they are mutually
+exclusive.
+
+=item index
+
+    --index
+    --noindex
+
+Generate an index at the top of the HTML file.  This is the default
+behaviour.
+
+=item infile
+
+    --infile=name
+
+Specify the pod file to convert.  Input is taken from STDIN if no
+infile is specified.
+
+=item outfile
+
+    --outfile=name
+
+Specify the HTML file to create.  Output goes to STDOUT if no outfile
+is specified.
+
+=item poderrors
+
+    --poderrors
+    --nopoderrors
+
+Include a "POD ERRORS" section in the outfile if there were any POD 
+errors in the infile. This section is included by default.
+
+=item podpath
+
+    --podpath=name:...:name
+
+Specify which subdirectories of the podroot contain pod files whose
+HTML converted forms can be linked to in cross references.
+
+=item podroot
+
+    --podroot=name
+
+Specify the base directory for finding library pods. Default is the
+current working directory.
+
+=item quiet
+
+    --quiet
+    --noquiet
+
+Don't display I<mostly harmless> warning messages.  These messages
+will be displayed by default.  But this is not the same as C<verbose>
+mode.
+
+=item recurse
+
+    --recurse
+    --norecurse
+
+Recurse into subdirectories specified in podpath (default behaviour).
+
+=item title
+
+    --title=title
+
+Specify the title of the resulting HTML file.
+
+=item verbose
+
+    --verbose
+    --noverbose
+
+Display progress messages.  By default, they won't be displayed.
+
+=back
+
+=head2 htmlify
+
+    htmlify($heading);
+
+Converts a pod section specification to a suitable section specification
+for HTML. Note that we keep spaces and special characters except
+C<", ?> (Netscape problem) and the hyphen (writer's problem...).
+
+=head2 anchorify
+
+    anchorify(@heading);
+
+Similar to C<htmlify()>, but turns non-alphanumerics into underscores.  Note
+that C<anchorify()> is not exported by default.
+
+=head1 ENVIRONMENT
+
+Uses C<$Config{pod2html}> to setup default options.
+
+=head1 AUTHOR
+
+Marc Green, E<lt>marcgreen at cpan.orgE<gt>. 
+
+Original version by Tom Christiansen, E<lt>tchrist at perl.comE<gt>.
+
+=head1 SEE ALSO
+
+L<perlpod>
+
+=head1 COPYRIGHT
+
+This program is distributed under the Artistic License.
+
+=cut
+
+my $Cachedir; 
+my $Dircache;
+my($Htmlroot, $Htmldir, $Htmlfile, $Htmlfileurl);
+my($Podfile, @Podpath, $Podroot);
+my $Poderrors;
+my $Css;
+
+my $Recurse;
+my $Quiet;
+my $Verbose;
+my $Doindex;
+
+my $Backlink;
+
+my($Title, $Header);
+
+my %Pages = ();                 # associative array used to find the location
+                                #   of pages referenced by L<> links.
+
+my $Curdir = File::Spec->curdir;
+
+init_globals();
+
+sub init_globals {
+    $Cachedir = ".";            # The directory to which directory caches
+                                #   will be written.
+
+    $Dircache = "pod2htmd.tmp";
+
+    $Htmlroot = "/";            # http-server base directory from which all
+                                #   relative paths in $podpath stem.
+    $Htmldir = "";              # The directory to which the html pages
+                                #   will (eventually) be written.
+    $Htmlfile = "";             # write to stdout by default
+    $Htmlfileurl = "";          # The url that other files would use to
+                                # refer to this file.  This is only used
+                                # to make relative urls that point to
+                                # other files.
+
+    $Poderrors = 1;
+    $Podfile = "";              # read from stdin by default
+    @Podpath = ();              # list of directories containing library pods.
+    $Podroot = $Curdir;         # filesystem base directory from which all
+                                #   relative paths in $podpath stem.
+    $Css = '';                  # Cascading style sheet
+    $Recurse = 1;               # recurse on subdirectories in $podpath.
+    $Quiet = 0;                 # not quiet by default
+    $Verbose = 0;               # not verbose by default
+    $Doindex = 1;               # non-zero if we should generate an index
+    $Backlink = 0;              # no backlinks added by default
+    $Header = 0;                # produce block header/footer
+    $Title = '';                # title to give the pod(s)
+}
+
+sub pod2html {
+    local(@ARGV) = @_;
+    local $_;
+
+    init_globals();
+    parse_command_line();
+
+    # prevent '//' in urls
+    $Htmlroot = "" if $Htmlroot eq "/";
+    $Htmldir =~ s#/\z##;
+
+    if (  $Htmlroot eq ''
+       && defined( $Htmldir )
+       && $Htmldir ne ''
+       && substr( $Htmlfile, 0, length( $Htmldir ) ) eq $Htmldir
+       ) {
+        # Set the 'base' url for this file, so that we can use it
+        # as the location from which to calculate relative links
+        # to other files. If this is '', then absolute links will
+        # be used throughout.
+        #$Htmlfileurl = "$Htmldir/" . substr( $Htmlfile, length( $Htmldir ) + 1);
+        # Is the above not just "$Htmlfileurl = $Htmlfile"?
+        $Htmlfileurl = Pod::Html::_unixify($Htmlfile);
+
+    }
+
+    # load or generate/cache %Pages
+    unless (get_cache($Dircache, \@Podpath, $Podroot, $Recurse)) {
+        # generate %Pages
+        my $pwd = getcwd();
+        chdir($Podroot) || 
+            die "$0: error changing to directory $Podroot: $!\n";
+
+        # find all pod modules/pages in podpath, store in %Pages
+        # - callback used to remove Podroot and extension from each file
+        # - laborious to allow '.' in dirnames (e.g., /usr/share/perl/5.14.1)
+        Pod::Simple::Search->new->inc(0)->verbose($Verbose)->laborious(1)
+            ->callback(\&_save_page)->recurse($Recurse)->survey(@Podpath);
+
+        chdir($pwd) || die "$0: error changing to directory $pwd: $!\n";
+
+        # cache the directory list for later use
+        warn "caching directories for later use\n" if $Verbose;
+        open my $cache, '>', $Dircache
+            or die "$0: error open $Dircache for writing: $!\n";
+
+        print $cache join(":", @Podpath) . "\n$Podroot\n";
+        my $_updirs_only = ($Podroot =~ /\.\./) && !($Podroot =~ /[^\.\\\/]/);
+        foreach my $key (keys %Pages) {
+            if($_updirs_only) {
+              my $_dirlevel = $Podroot;
+              while($_dirlevel =~ /\.\./) {
+                $_dirlevel =~ s/\.\.//;
+                # Assume $Pages{$key} has '/' separators (html dir separators).
+                $Pages{$key} =~ s/^[\w\s\-\.]+\///;
+              }
+            }
+            print $cache "$key $Pages{$key}\n";
+        }
+
+        close $cache or die "error closing $Dircache: $!";
+    }
+
+    # set options for the parser
+    my $parser = Pod::Simple::XHTML::LocalPodLinks->new();
+    $parser->codes_in_verbatim(0);
+    $parser->anchor_items(1); # the old Pod::Html always did
+    $parser->backlink($Backlink); # linkify =head1 directives
+    $parser->htmldir($Htmldir);
+    $parser->htmlfileurl($Htmlfileurl);
+    $parser->htmlroot($Htmlroot);
+    $parser->index($Doindex);
+    $parser->no_errata_section(!$Poderrors); # note the inverse
+    $parser->output_string(\my $output); # written to file later
+    $parser->pages(\%Pages);
+    $parser->quiet($Quiet);
+    $parser->verbose($Verbose);
+
+    # XXX: implement default title generator in pod::simple::xhtml
+    # copy the way the old Pod::Html did it
+    $Title = html_escape($Title);
+
+    # We need to add this ourselves because we use our own header, not
+    # ::XHTML's header. We need to set $parser->backlink to linkify
+    # the =head1 directives
+    my $bodyid = $Backlink ? ' id="_podtop_"' : '';
+
+    my $csslink = '';
+    my $bodystyle = ' style="background-color: white"';
+    my $tdstyle = ' style="background-color: #cccccc"';
+
+    if ($Css) {
+        $csslink = qq(\n<link rel="stylesheet" href="$Css" type="text/css" />);
+        $csslink =~ s,\\,/,g;
+        $csslink =~ s,(/.):,$1|,;
+        $bodystyle = '';
+        $tdstyle= '';
+    }
+
+    # header/footer block
+    my $block = $Header ? <<END_OF_BLOCK : '';
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_"$tdstyle valign="middle">
+<big><strong><span class="_podblock_"> $Title</span></strong></big>
+</td></tr>
+</table>
+END_OF_BLOCK
+
+    # create own header/footer because of --header
+    $parser->html_header(<<"HTMLHEAD");
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>$Title</title>$csslink
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:$Config{perladmin}" />
+</head>
+
+<body$bodyid$bodystyle>
+$block
+HTMLHEAD
+
+    $parser->html_footer(<<"HTMLFOOT");
+$block
+</body>
+
+</html>
+HTMLFOOT
+
+    my $input;
+    unless (@ARGV && $ARGV[0]) {
+        if ($Podfile and $Podfile ne '-') {
+            $input = $Podfile;
+        } else {
+            $input = '-'; # XXX: make a test case for this
+        }
+    } else {
+        $Podfile = $ARGV[0];
+        $input = *ARGV;
+    }
+
+    warn "Converting input file $Podfile\n" if $Verbose;
+    $parser->parse_file($input);
+
+    # Write output to file
+    $Htmlfile = "-" unless $Htmlfile; # stdout
+    my $fhout;
+    if($Htmlfile and $Htmlfile ne '-') {
+        open $fhout, ">", $Htmlfile
+            or die "$0: cannot open $Htmlfile file for output: $!\n";
+    } else {
+        open $fhout, ">-";
+    }
+    binmode $fhout, ":utf8";
+    print $fhout $output;
+    close $fhout or die "Failed to close $Htmlfile: $!";
+    chmod 0644, $Htmlfile unless $Htmlfile eq '-';
+}
+
+##############################################################################
+
+sub usage {
+    my $podfile = shift;
+    warn "$0: $podfile: @_\n" if @_;
+    die <<END_OF_USAGE;
+Usage:  $0 --help --htmlroot=<name> --infile=<name> --outfile=<name>
+           --podpath=<name>:...:<name> --podroot=<name> --cachedir=<name>
+           --recurse --verbose --index --norecurse --noindex
+
+  --[no]backlink  - turn =head1 directives into links pointing to the top of
+                      the page (off by default).
+  --cachedir      - directory for the directory cache files.
+  --css           - stylesheet URL
+  --flush         - flushes the directory cache.
+  --[no]header    - produce block header/footer (default is no headers).
+  --help          - prints this message.
+  --htmldir       - directory for resulting HTML files.
+  --htmlroot      - http-server base directory from which all relative paths
+                      in podpath stem (default is /).
+  --[no]index     - generate an index at the top of the resulting html
+                      (default behaviour).
+  --infile        - filename for the pod to convert (input taken from stdin
+                      by default).
+  --outfile       - filename for the resulting html file (output sent to
+                      stdout by default).
+  --[no]poderrors - include a POD ERRORS section in the output if there were 
+                      any POD errors in the input (default behavior).
+  --podpath       - colon-separated list of directories containing library
+                      pods (empty by default).
+  --podroot       - filesystem base directory from which all relative paths
+                      in podpath stem (default is .).
+  --[no]quiet     - suppress some benign warning messages (default is off).
+  --[no]recurse   - recurse on those subdirectories listed in podpath
+                      (default behaviour).
+  --title         - title that will appear in resulting html file.
+  --[no]verbose   - self-explanatory (off by default).
+
+END_OF_USAGE
+
+}
+
+sub parse_command_line {
+    my ($opt_backlink,$opt_cachedir,$opt_css,$opt_flush,$opt_header,
+        $opt_help,$opt_htmldir,$opt_htmlroot,$opt_index,$opt_infile,
+        $opt_outfile,$opt_poderrors,$opt_podpath,$opt_podroot,
+        $opt_quiet,$opt_recurse,$opt_title,$opt_verbose,$opt_libpods);
+
+    unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
+    my $result = GetOptions(
+                       'backlink!'  => \$opt_backlink,
+                       'cachedir=s' => \$opt_cachedir,
+                       'css=s'      => \$opt_css,
+                       'flush'      => \$opt_flush,
+                       'help'       => \$opt_help,
+                       'header!'    => \$opt_header,
+                       'htmldir=s'  => \$opt_htmldir,
+                       'htmlroot=s' => \$opt_htmlroot,
+                       'index!'     => \$opt_index,
+                       'infile=s'   => \$opt_infile,
+                       'libpods=s'  => \$opt_libpods, # deprecated
+                       'outfile=s'  => \$opt_outfile,
+                       'poderrors!' => \$opt_poderrors,
+                       'podpath=s'  => \$opt_podpath,
+                       'podroot=s'  => \$opt_podroot,
+                       'quiet!'     => \$opt_quiet,
+                       'recurse!'   => \$opt_recurse,
+                       'title=s'    => \$opt_title,
+                       'verbose!'   => \$opt_verbose,
+    );
+    usage("-", "invalid parameters") if not $result;
+
+    usage("-") if defined $opt_help;    # see if the user asked for help
+    $opt_help = "";                     # just to make -w shut-up.
+
+    @Podpath  = split(":", $opt_podpath) if defined $opt_podpath;
+    warn "--libpods is no longer supported" if defined $opt_libpods;
+
+    $Backlink  =          $opt_backlink   if defined $opt_backlink;
+    $Cachedir  = _unixify($opt_cachedir)  if defined $opt_cachedir;
+    $Css       =          $opt_css        if defined $opt_css;
+    $Header    =          $opt_header     if defined $opt_header;
+    $Htmldir   = _unixify($opt_htmldir)   if defined $opt_htmldir;
+    $Htmlroot  = _unixify($opt_htmlroot)  if defined $opt_htmlroot;
+    $Doindex   =          $opt_index      if defined $opt_index;
+    $Podfile   = _unixify($opt_infile)    if defined $opt_infile;
+    $Htmlfile  = _unixify($opt_outfile)   if defined $opt_outfile;
+    $Poderrors =          $opt_poderrors  if defined $opt_poderrors;
+    $Podroot   = _unixify($opt_podroot)   if defined $opt_podroot;
+    $Quiet     =          $opt_quiet      if defined $opt_quiet;
+    $Recurse   =          $opt_recurse    if defined $opt_recurse;
+    $Title     =          $opt_title      if defined $opt_title;
+    $Verbose   =          $opt_verbose    if defined $opt_verbose;
+
+    warn "Flushing directory caches\n"
+        if $opt_verbose && defined $opt_flush;
+    $Dircache = "$Cachedir/pod2htmd.tmp";
+    if (defined $opt_flush) {
+        1 while unlink($Dircache);
+    }
+}
+
+my $Saved_Cache_Key;
+
+sub get_cache {
+    my($dircache, $podpath, $podroot, $recurse) = @_;
+    my @cache_key_args = @_;
+
+    # A first-level cache:
+    # Don't bother reading the cache files if they still apply
+    # and haven't changed since we last read them.
+
+    my $this_cache_key = cache_key(@cache_key_args);
+    return 1 if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key;
+    $Saved_Cache_Key = $this_cache_key;
+
+    # load the cache of %Pages if possible.  $tests will be
+    # non-zero if successful.
+    my $tests = 0;
+    if (-f $dircache) {
+        warn "scanning for directory cache\n" if $Verbose;
+        $tests = load_cache($dircache, $podpath, $podroot);
+    }
+
+    return $tests;
+}
+
+sub cache_key {
+    my($dircache, $podpath, $podroot, $recurse) = @_;
+    return join('!',$dircache,$recurse,@$podpath,$podroot,stat($dircache));
+}
+
+#
+# load_cache - tries to find if the cache stored in $dircache is a valid
+#  cache of %Pages.  if so, it loads them and returns a non-zero value.
+#
+sub load_cache {
+    my($dircache, $podpath, $podroot) = @_;
+    my $tests = 0;
+    local $_;
+
+    warn "scanning for directory cache\n" if $Verbose;
+    open(my $cachefh, '<', $dircache) ||
+        die "$0: error opening $dircache for reading: $!\n";
+    $/ = "\n";
+
+    # is it the same podpath?
+    $_ = <$cachefh>;
+    chomp($_);
+    $tests++ if (join(":", @$podpath) eq $_);
+
+    # is it the same podroot?
+    $_ = <$cachefh>;
+    chomp($_);
+    $tests++ if ($podroot eq $_);
+
+    # load the cache if its good
+    if ($tests != 2) {
+        close($cachefh);
+        return 0;
+    }
+
+    warn "loading directory cache\n" if $Verbose;
+    while (<$cachefh>) {
+        /(.*?) (.*)$/;
+        $Pages{$1} = $2;
+    }
+
+    close($cachefh);
+    return 1;
+}
+
+
+#
+# html_escape: make text safe for HTML
+#
+sub html_escape {
+    my $rest = $_[0];
+    $rest   =~ s/&/&/g;
+    $rest   =~ s/</</g;
+    $rest   =~ s/>/>/g;
+    $rest   =~ s/"/"/g;
+    # ' is only in XHTML, not HTML4.  Be conservative
+    #$rest   =~ s/'/'/g;
+    return $rest;
+}
+
+#
+# htmlify - converts a pod section specification to a suitable section
+# specification for HTML. Note that we keep spaces and special characters
+# except ", ? (Netscape problem) and the hyphen (writer's problem...).
+#
+sub htmlify {
+    my( $heading) = @_;
+    $heading =~ s/(\s+)/ /g;
+    $heading =~ s/\s+\Z//;
+    $heading =~ s/\A\s+//;
+    # The hyphen is a disgrace to the English language.
+    # $heading =~ s/[-"?]//g;
+    $heading =~ s/["?]//g;
+    $heading = lc( $heading );
+    return $heading;
+}
+
+#
+# similar to htmlify, but turns non-alphanumerics into underscores
+#
+sub anchorify {
+    my ($anchor) = @_;
+    $anchor = htmlify($anchor);
+    $anchor =~ s/\W/_/g;
+    return $anchor;
+}
+
+#
+# store POD files in %Pages
+#
+sub _save_page {
+    my ($modspec, $modname) = @_;
+
+    # Remove Podroot from path
+    $modspec = $Podroot eq File::Spec->curdir
+               ? File::Spec->abs2rel($modspec)
+               : File::Spec->abs2rel($modspec,
+                                     File::Spec->canonpath($Podroot));
+
+    # Convert path to unix style path
+    $modspec = Pod::Html::_unixify($modspec);
+
+    my ($file, $dir) = fileparse($modspec, qr/\.[^.]*/); # strip .ext
+    $Pages{$modname} = $dir.$file;
+}
+
+sub _unixify {
+    my $full_path = shift;
+    return '' unless $full_path;
+    return $full_path if $full_path eq '/';
+
+    my ($vol, $dirs, $file) = File::Spec->splitpath($full_path);
+    my @dirs = $dirs eq File::Spec->curdir()
+               ? (File::Spec::Unix->curdir())
+               : File::Spec->splitdir($dirs);
+    if (defined($vol) && $vol) {
+        $vol =~ s/:$// if $^O eq 'VMS';
+        $vol = uc $vol if $^O eq 'MSWin32';
+
+        if( $dirs[0] ) {
+            unshift @dirs, $vol;
+        }
+        else {
+            $dirs[0] = $vol;
+        }
+    }
+    unshift @dirs, '' if File::Spec->file_name_is_absolute($full_path);
+    return $file unless scalar(@dirs);
+    $full_path = File::Spec::Unix->catfile(File::Spec::Unix->catdir(@dirs),
+                                           $file);
+    $full_path =~ s|^\/|| if $^O eq 'MSWin32'; # C:/foo works, /C:/foo doesn't
+    $full_path =~ s/\^\././g if $^O eq 'VMS'; # unescape dots
+    return $full_path;
+}
+
+package Pod::Simple::XHTML::LocalPodLinks;
+use strict;
+use warnings;
+use base 'Pod::Simple::XHTML';
+
+use File::Spec;
+use File::Spec::Unix;
+
+__PACKAGE__->_accessorize(
+ 'htmldir',
+ 'htmlfileurl',
+ 'htmlroot',
+ 'pages', # Page name => relative/path/to/page from root POD dir
+ 'quiet',
+ 'verbose',
+);
+
+sub resolve_pod_page_link {
+    my ($self, $to, $section) = @_;
+
+    return undef unless defined $to || defined $section;
+    if (defined $section) {
+        $section = '#' . $self->idify($section, 1);
+        return $section unless defined $to;
+    } else {
+        $section = '';
+    }
+
+    my $path; # path to $to according to %Pages
+    unless (exists $self->pages->{$to}) {
+        # Try to find a POD that ends with $to and use that.
+        # e.g., given L<XHTML>, if there is no $Podpath/XHTML in %Pages,
+        # look for $Podpath/*/XHTML in %Pages, with * being any path,
+        # as a substitute (e.g., $Podpath/Pod/Simple/XHTML)
+        my @matches;
+        foreach my $modname (keys %{$self->pages}) {
+            push @matches, $modname if $modname =~ /::\Q$to\E\z/;
+        }
+
+        if ($#matches == -1) {
+            warn "Cannot find \"$to\" in podpath: " . 
+                 "cannot find suitable replacement path, cannot resolve link\n"
+                 unless $self->quiet;
+            return '';
+        } elsif ($#matches == 0) {
+            warn "Cannot find \"$to\" in podpath: " .
+                 "using $matches[0] as replacement path to $to\n" 
+                 unless $self->quiet;
+            $path = $self->pages->{$matches[0]};
+        } else {
+            warn "Cannot find \"$to\" in podpath: " .
+                 "more than one possible replacement path to $to, " .
+                 "using $matches[-1]\n" unless $self->quiet;
+            # Use [-1] so newer (higher numbered) perl PODs are used
+            $path = $self->pages->{$matches[-1]};
+        }
+    } else {
+        $path = $self->pages->{$to};
+    }
+
+    my $url = File::Spec::Unix->catfile(Pod::Html::_unixify($self->htmlroot),
+                                        $path);
+
+    if ($self->htmlfileurl ne '') {
+        # then $self->htmlroot eq '' (by definition of htmlfileurl) so
+        # $self->htmldir needs to be prepended to link to get the absolute path
+        # that will be relativized
+        $url = relativize_url(
+            File::Spec::Unix->catdir(Pod::Html::_unixify($self->htmldir), $url),
+            $self->htmlfileurl # already unixified
+        );
+    }
+
+    return $url . ".html$section";
+}
+
+#
+# relativize_url - convert an absolute URL to one relative to a base URL.
+# Assumes both end in a filename.
+#
+sub relativize_url {
+    my ($dest, $source) = @_;
+
+    # Remove each file from its path
+    my ($dest_volume, $dest_directory, $dest_file) =
+        File::Spec::Unix->splitpath( $dest );
+    $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' );
+
+    my ($source_volume, $source_directory, $source_file) =
+        File::Spec::Unix->splitpath( $source );
+    $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' );
+
+    my $rel_path = '';
+    if ($dest ne '') {
+       $rel_path = File::Spec::Unix->abs2rel( $dest, $source );
+    }
+
+    if ($rel_path ne '' && substr( $rel_path, -1 ) ne '/') {
+        $rel_path .= "/$dest_file";
+    } else {
+        $rel_path .= "$dest_file";
+    }
+
+    return $rel_path;
+}
+
+1;

Added: vendor/perl/dist/ext/Pod-Html/t/cache.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/cache.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/cache.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+=head1 NAME
+
+the contents of this file doesn't matter

Added: vendor/perl/dist/ext/Pod-Html/t/cache.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/cache.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/cache.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    die "Run me from outside the t/ directory, please" unless -d 't';
+}
+
+# test the directory cache
+# XXX test --flush and %Pages being loaded/used for cross references
+
+use strict;
+use Cwd;
+use Pod::Html;
+use Data::Dumper;
+use Test::More tests => 10;
+
+my $cwd = Pod::Html::_unixify(Cwd::cwd());
+my $infile = "t/cache.pod";
+my $outfile = "cacheout.html";
+my $cachefile = "pod2htmd.tmp";
+my $tcachefile = "t/pod2htmd.tmp";
+
+unlink $cachefile, $tcachefile;
+is(-f $cachefile, undef, "No cache file to start");
+is(-f $tcachefile, undef, "No cache file to start");
+
+# test podpath and podroot
+Pod::Html::pod2html(
+    "--infile=$infile",
+    "--outfile=$outfile",
+    "--podpath=scooby:shaggy:fred:velma:daphne",
+    "--podroot=$cwd",
+    );
+is(-f $cachefile, 1, "Cache created");
+open(my $cache, '<', $cachefile) or die "Cannot open cache file: $!";
+chomp(my $podpath = <$cache>);
+chomp(my $podroot = <$cache>);
+close $cache;
+is($podpath, "scooby:shaggy:fred:velma:daphne", "podpath");
+is($podroot, "$cwd", "podroot");
+
+# test cache contents
+Pod::Html::pod2html(
+    "--infile=$infile",
+    "--outfile=$outfile",
+    "--cachedir=t",
+    "--podpath=t",
+    "--htmldir=$cwd",
+    );
+is(-f $tcachefile, 1, "Cache created");
+open($cache, '<', $tcachefile) or die "Cannot open cache file: $!";
+chomp($podpath = <$cache>);
+chomp($podroot = <$cache>);
+is($podpath, "t", "podpath");
+my %pages;
+while (<$cache>) {
+    /(.*?) (.*)$/;
+    $pages{$1} = $2;
+}
+chdir("t");
+my %expected_pages = 
+    # chop off the .pod and set the path
+    map { my $f = substr($_, 0, -4); $f => "t/$f" }
+    <*.pod>;
+chdir($cwd);
+is_deeply(\%pages, \%expected_pages, "cache contents");
+close $cache;
+
+1 while unlink $outfile;
+1 while unlink $cachefile;
+1 while unlink $tcachefile;
+is(-f $cachefile, undef, "No cache file to end");
+is(-f $tcachefile, undef, "No cache file to end");

Added: vendor/perl/dist/ext/Pod-Html/t/crossref.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/crossref.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/crossref.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,41 @@
+=head1 NAME
+
+htmlcrossref - Test HTML cross reference links
+
+=head1 LINKS
+
+L</"section1">
+
+L<htmllink/section 2>
+
+L</"item1">
+
+L</"non existant section">
+
+L<var-copy>
+
+L<var-copy/$">
+
+C<var-copy>
+
+C<var-copy/$">
+
+L<podspec-copy/First:>
+
+C<podspec-copy/First:>
+
+L<notperldoc>
+
+=head1 TARGETS
+
+=head2 section1
+
+This is section one.
+
+=over 4
+
+=item item1 X<item> X<one>
+
+This is item one.
+
+=back

Added: vendor/perl/dist/ext/Pod-Html/t/crossref.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/crossref.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/crossref.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,106 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions;
+use Test::More tests => 1;
+
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 1 if $output;
+    
+    my ($v, $d) = splitpath(cwd(), 1);
+    my @dirs = splitdir($d);
+    shift @dirs if $dirs[0] eq '';
+    my $relcwd = join '/', @dirs;
+        
+    convert_n_test("crossref", "cross references", 
+     "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":"
+                 . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'),
+     "--podroot=". catpath($v, '/', ''),
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+  <li><a href="#TARGETS">TARGETS</a>
+    <ul>
+      <li><a href="#section1">section1</a></li>
+    </ul>
+  </li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmlcrossref - Test HTML cross reference links</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p><a href="#section1">"section1"</a></p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/t/htmllink.html#section-2">"section 2" in htmllink</a></p>
+
+<p><a href="#item1">"item1"</a></p>
+
+<p><a href="#non-existant-section">"non existant section"</a></p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a></p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod">"$"" in var-copy</a></p>
+
+<p><code>var-copy</code></p>
+
+<p><code>var-copy/$"</code></p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First">"First:" in podspec-copy</a></p>
+
+<p><code>podspec-copy/First:</code></p>
+
+<p><a>notperldoc</a></p>
+
+<h1 id="TARGETS">TARGETS</h1>
+
+<h2 id="section1">section1</h2>
+
+<p>This is section one.</p>
+
+<dl>
+
+<dt id="item1">item1  </dt>
+<dd>
+
+<p>This is item one.</p>
+
+</dd>
+</dl>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/crossref2.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/crossref2.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/crossref2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use Test::More tests => 1;
+
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 1 if $output;
+
+    my $cwd = Pod::Html::_unixify(cwd());
+
+    convert_n_test("crossref", "cross references",
+     "--podpath=t:testdir/test.lib",
+     "--podroot=$cwd",
+     "--htmldir=$cwd",
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+  <li><a href="#TARGETS">TARGETS</a>
+    <ul>
+      <li><a href="#section1">section1</a></li>
+    </ul>
+  </li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmlcrossref - Test HTML cross reference links</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p><a href="#section1">"section1"</a></p>
+
+<p><a href="./htmllink.html#section-2">"section 2" in htmllink</a></p>
+
+<p><a href="#item1">"item1"</a></p>
+
+<p><a href="#non-existant-section">"non existant section"</a></p>
+
+<p><a href="../testdir/test.lib/var-copy.html">var-copy</a></p>
+
+<p><a href="../testdir/test.lib/var-copy.html#pod">"$"" in var-copy</a></p>
+
+<p><code>var-copy</code></p>
+
+<p><code>var-copy/$"</code></p>
+
+<p><a href="../testdir/test.lib/podspec-copy.html#First">"First:" in podspec-copy</a></p>
+
+<p><code>podspec-copy/First:</code></p>
+
+<p><a>notperldoc</a></p>
+
+<h1 id="TARGETS">TARGETS</h1>
+
+<h2 id="section1">section1</h2>
+
+<p>This is section one.</p>
+
+<dl>
+
+<dt id="item1">item1  </dt>
+<dd>
+
+<p>This is item one.</p>
+
+</dd>
+</dl>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/crossref3.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/crossref3.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/crossref3.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use Test::More tests => 1;
+
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 1 if $output;
+    
+    my $cwd = cwd();
+
+    convert_n_test("crossref", "cross references", 
+     "--podpath=t:testdir/test.lib",
+     "--podroot=$cwd",
+     "--htmlroot=$cwd",
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+  <li><a href="#TARGETS">TARGETS</a>
+    <ul>
+      <li><a href="#section1">section1</a></li>
+    </ul>
+  </li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmlcrossref - Test HTML cross reference links</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p><a href="#section1">"section1"</a></p>
+
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/t/htmllink.html#section-2">"section 2" in htmllink</a></p>
+
+<p><a href="#item1">"item1"</a></p>
+
+<p><a href="#non-existant-section">"non existant section"</a></p>
+
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a></p>
+
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html#pod">"$"" in var-copy</a></p>
+
+<p><code>var-copy</code></p>
+
+<p><code>var-copy/$"</code></p>
+
+<p><a href="[ABSCURRENTWORKINGDIRECTORY]/testdir/test.lib/podspec-copy.html#First">"First:" in podspec-copy</a></p>
+
+<p><code>podspec-copy/First:</code></p>
+
+<p><a>notperldoc</a></p>
+
+<h1 id="TARGETS">TARGETS</h1>
+
+<h2 id="section1">section1</h2>
+
+<p>This is section one.</p>
+
+<dl>
+
+<dt id="item1">item1  </dt>
+<dd>
+
+<p>This is item one.</p>
+
+</dd>
+</dl>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/eol.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/eol.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/eol.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,71 @@
+#!./perl -w
+
+use Test::More tests => 3;
+
+my $podfile = "$$.pod";
+my $infile = "$$.in";
+my @outfile = map { "$$.o$_" } 0..2;
+
+open my $pod, '>', $podfile or die "$podfile: $!";
+print $pod <<__EOF__;
+=pod
+
+=head1 NAME
+
+crlf
+
+=head1 DESCRIPTION
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+    crlf crlf crlf crlf
+
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf crlf
+
+=cut
+__EOF__
+close $pod or die $!;
+
+use Pod::Html;
+
+my $i = 0;
+foreach my $eol ("\r", "\n", "\r\n") {
+    open $pod, '<', $podfile or die "$podfile: $!";
+    open my $in, '>', $infile  or die "$infile: $!";
+    while (<$pod>) {
+	s/[\r\n]+/$eol/g;
+	print $in $_;
+    }
+    close $pod or die $!;
+    close $in or die $!;
+
+    pod2html("--title=eol", "--infile=$infile", "--outfile=$outfile[$i]");
+    ++$i;
+}
+
+# --- now test ---
+
+my @cksum;
+
+foreach (0..2) {
+    local $/;
+    open my $in, '<', $outfile[$_] or die "$outfile[$_]: $!";
+    $cksum[$_] = unpack "%32C*", <$in>;
+    close $in or die $!;
+}
+
+is($cksum[0], $cksum[1], "CR vs LF");
+is($cksum[0], $cksum[2], "CR vs CRLF");
+is($cksum[1], $cksum[2], "LF vs CRLF");
+
+END {
+    1 while unlink $podfile, $infile, @outfile, 'pod2htmd.tmp';
+}

Added: vendor/perl/dist/ext/Pod-Html/t/feature.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/feature.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/feature.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+=head1 Head 1
+
+A paragraph
+
+=for html some html
+
+=begin image
+
+|--|
+|  |
+|--|
+
+=end image
+
+Another paragraph
+
+=head1 Another Head 1
+
+some text and a link L<crossref>
+
+=cut

Added: vendor/perl/dist/ext/Pod-Html/t/feature.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/feature.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/feature.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,70 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions;
+use Test::More tests => 1;
+
+my $cwd = cwd();
+
+convert_n_test("feature", "misc pod-html features", 
+ "--backlink",
+ "--css=style.css",
+ "--header", # no styling b/c of --ccs
+ "--htmldir=". catdir($cwd, 't'),
+ "--noindex",
+ "--podpath=t",
+ "--podroot=$cwd",
+ "--title=a title",
+ "--quiet",
+ );
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>a title</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body id="_podtop_">
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_" valign="middle">
+<big><strong><span class="_podblock_"> a title</span></strong></big>
+</td></tr>
+</table>
+
+
+
+<a href="#_podtop_"><h1 id="Head-1">Head 1</h1></a>
+
+<p>A paragraph</p>
+
+
+
+some html
+
+<p>Another paragraph</p>
+
+<a href="#_podtop_"><h1 id="Another-Head-1">Another Head 1</h1></a>
+
+<p>some text and a link <a href="t/crossref.html">crossref</a></p>
+
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_" valign="middle">
+<big><strong><span class="_podblock_"> a title</span></strong></big>
+</td></tr>
+</table>
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/feature2.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/feature2.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/feature2.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+=head1 Head 1
+
+A paragraph
+
+=for html some html
+
+=begin image
+
+|--|
+|  |
+|--|
+
+=end image
+
+Another paragraph
+
+=head1 Another Head 1
+
+some text and a link L<crossref>
+
+=cut

Added: vendor/perl/dist/ext/Pod-Html/t/feature2.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/feature2.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/feature2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,82 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Cwd;
+use Test::More tests => 2;
+
+my $cwd = cwd();
+
+my $warn;
+$SIG{__WARN__} = sub { $warn .= $_[0] };
+
+convert_n_test("feature2", "misc pod-html features 2", 
+ "--backlink",
+ "--header",
+ "--podpath=.",
+ "--podroot=$cwd",
+ "--norecurse",
+ "--verbose",
+ "--quiet",
+ );
+
+like($warn,
+    qr(
+	\Acaching\ directories\ for\ later\ use\n
+	Converting\ input\ file\ \S+[/\\\]]feature2\.pod\n\z	
+    )x,
+    "misc pod-html --verbose warnings");
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body id="_podtop_" style="background-color: white">
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_" style="background-color: #cccccc" valign="middle">
+<big><strong><span class="_podblock_"> </span></strong></big>
+</td></tr>
+</table>
+
+
+
+<ul id="index">
+  <li><a href="#Head-1">Head 1</a></li>
+  <li><a href="#Another-Head-1">Another Head 1</a></li>
+</ul>
+
+<a href="#_podtop_"><h1 id="Head-1">Head 1</h1></a>
+
+<p>A paragraph</p>
+
+
+
+some html
+
+<p>Another paragraph</p>
+
+<a href="#_podtop_"><h1 id="Another-Head-1">Another Head 1</h1></a>
+
+<p>some text and a link <a>crossref</a></p>
+
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_" style="background-color: #cccccc" valign="middle">
+<big><strong><span class="_podblock_"> </span></strong></big>
+</td></tr>
+</table>
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir1.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir1.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir1.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+=head1 NAME
+
+htmldir - Test --htmldir feature
+
+=head1 LINKS
+
+  Verbatim B<means> verbatim.
+
+Normal text, a L<link> to nowhere, 
+
+a link to L<var-copy>, 
+
+L<htmlescp>, 
+
+L<feature/Another Head 1>, 
+
+and another L<feature/"Another Head 1">.

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir1.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir1.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir1.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,92 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions;
+use Test::More tests => 2;
+
+# XXX Separate tests that rely on test.lib from the others so they are the only
+# ones skipped (instead of all of them). This applies to htmldir{1,3,5}.t, and 
+# crossref.t (as of 10/29/11). 
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 2 if $output;
+
+    my ($v, $d) = splitpath(cwd(), 1);
+    my @dirs = splitdir($d);
+    shift @dirs if $dirs[0] eq '';
+    my $relcwd = join '/', @dirs;
+
+    my $data_pos = tell DATA; # to read <DATA> twice
+
+
+    convert_n_test("htmldir1", "test --htmldir and --htmlroot 1a", 
+     "--podpath=". File::Spec::Unix->catdir($relcwd, 't') . ":"
+                 . File::Spec::Unix->catdir($relcwd, 'testdir/test.lib'),
+     "--podroot=". catpath($v, '/', ''),
+     "--htmldir=t",
+     "--quiet",
+    );
+
+    seek DATA, $data_pos, 0; # to read <DATA> twice (expected output is the same)
+
+    convert_n_test("htmldir1", "test --htmldir and --htmlroot 1b", 
+     "--podpath=$relcwd",
+     "--podroot=". catpath($v, '/', ''),
+     "--htmldir=". catdir($relcwd, 't'),
+     "--htmlroot=/",
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmldir - Test --htmldir feature</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<pre><code>  Verbatim B<means> verbatim.</code></pre>
+
+<p>Normal text, a <a>link</a> to nowhere,</p>
+
+<p>a link to <a href="/[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a>,</p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/t/htmlescp.html">htmlescp</a>,</p>
+
+<p><a href="/[RELCURRENTWORKINGDIRECTORY]/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>,</p>
+
+<p>and another <a href="/[RELCURRENTWORKINGDIRECTORY]/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>.</p>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir2.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir2.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir2.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+=head1 NAME
+
+htmldir - Test --htmldir feature
+
+=head1 LINKS
+
+Normal text, a L<link> to nowhere, 
+
+a link to L<perlvar-copy>, 
+
+L<htmlescp>, 
+
+L<feature/Another Head 1>, 
+
+and another L<feature/"Another Head 1">.

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir2.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir2.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir2.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Cwd;
+use Test::More tests => 3;
+
+my $cwd = cwd();
+my $data_pos = tell DATA; # to read <DATA> twice
+
+convert_n_test("htmldir2", "test --htmldir and --htmlroot 2a", 
+ "--podpath=t",
+ "--htmldir=t",
+ "--quiet",
+);
+
+seek DATA, $data_pos, 0; # to read <DATA> twice (expected output is the same)
+
+convert_n_test("htmldir2", "test --htmldir and --htmlroot 2b", 
+ "--podpath=t",
+ "--quiet",
+);
+
+seek DATA, $data_pos, 0; # to read <DATA> thrice (expected output is the same)
+
+# this test makes sure paths are absolute unless --htmldir is specified
+convert_n_test("htmldir2", "test --htmldir and --htmlroot 2c", 
+ "--podpath=t",
+ "--podroot=$cwd",
+ "--norecurse", # testing --norecurse, too
+ "--quiet",
+);
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmldir - Test --htmldir feature</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p>Normal text, a <a>link</a> to nowhere,</p>
+
+<p>a link to <a>perlvar-copy</a>,</p>
+
+<p><a href="/t/htmlescp.html">htmlescp</a>,</p>
+
+<p><a href="/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>,</p>
+
+<p>and another <a href="/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>.</p>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir3.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir3.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir3.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+=head1 NAME
+
+htmldir - Test --htmldir feature
+
+=head1 LINKS
+
+Normal text, a L<link> to nowhere, 
+
+a link to L<var-copy>, 
+
+L<htmlescp>, 
+
+L<feature/Another Head 1>, 
+
+and another L<feature/"Another Head 1">.

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir3.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir3.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir3.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions;
+use Test::More tests => 2;
+
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 2 if $output;
+
+    my $cwd = cwd();
+    my ($v, $d) = splitpath($cwd, 1);
+    my @dirs = splitdir($d);
+    shift @dirs if $dirs[0] eq '';
+    my $relcwd = join '/', @dirs;
+
+    my $data_pos = tell DATA; # to read <DATA> twice
+
+    convert_n_test("htmldir3", "test --htmldir and --htmlroot 3a", 
+     "--podpath=$relcwd",
+     "--podroot=". catpath($v, '/', ''),
+     "--htmldir=". catdir($cwd, 't', ''), # test removal trailing slash,
+     "--quiet",
+    );
+
+    seek DATA, $data_pos, 0; # to read <DATA> twice (expected output is the same)
+
+    convert_n_test("htmldir3", "test --htmldir and --htmlroot 3b", 
+     "--podpath=". catdir($relcwd, 't'),
+     "--podroot=". catpath($v, '/', ''),
+     "--htmldir=t",
+     "--outfile=t/htmldir3.html",
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmldir - Test --htmldir feature</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p>Normal text, a <a>link</a> to nowhere,</p>
+
+<p>a link to <a href="[RELCURRENTWORKINGDIRECTORY]/testdir/test.lib/var-copy.html">var-copy</a>,</p>
+
+<p><a href="[RELCURRENTWORKINGDIRECTORY]/t/htmlescp.html">htmlescp</a>,</p>
+
+<p><a href="[RELCURRENTWORKINGDIRECTORY]/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>,</p>
+
+<p>and another <a href="[RELCURRENTWORKINGDIRECTORY]/t/feature.html#Another-Head-1">"Another Head 1" in feature</a>.</p>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir4.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir4.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir4.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+=head1 NAME
+
+htmldir - Test --htmldir feature
+
+=head1 LINKS
+
+Normal text, a L<link> to nowhere, 
+
+a link to L<perlvar-copy>, 
+
+L<htmlescp>, 
+
+L<feature/Another Head 1>, 
+
+and another L<feature/"Another Head 1">.

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir4.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir4.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir4.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions ':ALL';
+use Test::More tests => 2;
+
+my $cwd = cwd();
+my $data_pos = tell DATA; # to read <DATA> twice
+
+convert_n_test("htmldir4", "test --htmldir and --htmlroot 4a", 
+ "--podpath=t",
+ "--htmldir=t",
+ "--outfile=". catfile('t', 'htmldir4.html'),
+ "--quiet",
+);
+
+seek DATA, $data_pos, 0; # to read <DATA> twice (expected output is the same)
+
+convert_n_test("htmldir4", "test --htmldir and --htmlroot 4b", 
+ "--podpath=t",
+ "--podroot=$cwd",
+ "--htmldir=". catdir($cwd, 't'),
+ "--norecurse",
+ "--quiet",
+);
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmldir - Test --htmldir feature</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p>Normal text, a <a>link</a> to nowhere,</p>
+
+<p>a link to <a>perlvar-copy</a>,</p>
+
+<p><a href="t/htmlescp.html">htmlescp</a>,</p>
+
+<p><a href="t/feature.html#Another-Head-1">"Another Head 1" in feature</a>,</p>
+
+<p>and another <a href="t/feature.html#Another-Head-1">"Another Head 1" in feature</a>.</p>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir5.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir5.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir5.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+=head1 NAME
+
+htmldir - Test --htmldir feature
+
+=head1 LINKS
+
+Normal text, a L<link> to nowhere, 
+
+a link to L<var-copy>, 
+
+L<htmlescp>, 
+
+L<feature/Another Head 1>, 
+
+and another L<feature/"Another Head 1">.

Added: vendor/perl/dist/ext/Pod-Html/t/htmldir5.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/htmldir5.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/htmldir5.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,75 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+END {
+    rem_test_dir();
+}
+
+use strict;
+use Cwd;
+use File::Spec::Functions;
+use Test::More tests => 1;
+
+SKIP: {
+    my $output = make_test_dir();
+    skip "$output", 1 if $output;
+
+
+    my $cwd = catdir cwd(); # catdir converts path separators to that of the OS
+                            # running the test
+                            # XXX but why don't the other tests complain about
+                            # this?
+
+    convert_n_test("htmldir5", "test --htmldir and --htmlroot 5", 
+     "--podpath=t:testdir/test.lib",
+     "--podroot=$cwd",
+     "--htmldir=$cwd",
+     "--htmlroot=/",
+     "--quiet",
+    );
+}
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#LINKS">LINKS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>htmldir - Test --htmldir feature</p>
+
+<h1 id="LINKS">LINKS</h1>
+
+<p>Normal text, a <a>link</a> to nowhere,</p>
+
+<p>a link to <a href="../testdir/test.lib/var-copy.html">var-copy</a>,</p>
+
+<p><a href="./htmlescp.html">htmlescp</a>,</p>
+
+<p><a href="./feature.html#Another-Head-1">"Another Head 1" in feature</a>,</p>
+
+<p>and another <a href="./feature.html#Another-Head-1">"Another Head 1" in feature</a>.</p>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/poderr.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/poderr.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/poderr.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+=head1 NAME
+
+Test POD ERROR section
+
+=over 4
+
+This text is not allowed
+
+=item *
+
+The wiz item.
+
+=item *
+
+The waz item.
+
+=back
+
+=cut

Added: vendor/perl/dist/ext/Pod-Html/t/poderr.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/poderr.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/poderr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,68 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Test::More tests => 1;
+
+convert_n_test("poderr", "pod error section");
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+  <li><a href="#POD-ERRORS">POD ERRORS</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>Test POD ERROR section</p>
+
+<ul>
+
+<p>This text is not allowed</p>
+
+<p>*</p>
+
+<p>The wiz item.</p>
+
+<p>*</p>
+
+<p>The waz item.</p>
+
+</ul>
+
+<h1 id="POD-ERRORS">POD ERRORS</h1>
+
+<p>Hey! <b>The above document had some coding errors, which are explained below:</b></p>
+
+<dl>
+
+<dt id="Around-line-5">Around line 5:</dt>
+<dd>
+
+<p>You can't have =items (as at line 9) unless the first thing after the =over is an =item</p>
+
+</dd>
+</dl>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/t/podnoerr.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/podnoerr.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/podnoerr.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+=head1 NAME
+
+Test POD ERROR section
+
+=over 4
+
+This text is not allowed
+
+=item *
+
+The wiz item.
+
+=item *
+
+The waz item.
+
+=back
+
+=cut

Added: vendor/perl/dist/ext/Pod-Html/t/podnoerr.t
===================================================================
--- vendor/perl/dist/ext/Pod-Html/t/podnoerr.t	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/t/podnoerr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,55 @@
+#!/usr/bin/perl -w                                         # -*- perl -*-
+
+BEGIN {
+    require "t/pod2html-lib.pl";
+}
+
+use strict;
+use Test::More tests => 1;
+
+convert_n_test("podnoerr", "pod error section",
+	"--nopoderrors",
+);
+
+__DATA__
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title></title>
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:[PERLADMIN]" />
+</head>
+
+<body style="background-color: white">
+
+
+
+<ul id="index">
+  <li><a href="#NAME">NAME</a></li>
+</ul>
+
+<h1 id="NAME">NAME</h1>
+
+<p>Test POD ERROR section</p>
+
+<ul>
+
+<p>This text is not allowed</p>
+
+<p>*</p>
+
+<p>The wiz item.</p>
+
+<p>*</p>
+
+<p>The waz item.</p>
+
+</ul>
+
+
+</body>
+
+</html>
+
+

Added: vendor/perl/dist/ext/Pod-Html/testdir/perlpodspec-copy.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/testdir/perlpodspec-copy.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/testdir/perlpodspec-copy.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1899 @@
+
+=head1 NAME
+
+perlpodspeccopy - Plain Old Documentation: format specification and notes
+
+=head1 DESCRIPTION
+
+This document is detailed notes on the Pod markup language.  Most
+people will only have to read L<perlpod|perlpod> to know how to write
+in Pod, but this document may answer some incidental questions to do
+with parsing and rendering Pod.
+
+In this document, "must" / "must not", "should" /
+"should not", and "may" have their conventional (cf. RFC 2119)
+meanings: "X must do Y" means that if X doesn't do Y, it's against
+this specification, and should really be fixed.  "X should do Y"
+means that it's recommended, but X may fail to do Y, if there's a
+good reason.  "X may do Y" is merely a note that X can do Y at
+will (although it is up to the reader to detect any connotation of
+"and I think it would be I<nice> if X did Y" versus "it wouldn't
+really I<bother> me if X did Y").
+
+Notably, when I say "the parser should do Y", the
+parser may fail to do Y, if the calling application explicitly
+requests that the parser I<not> do Y.  I often phrase this as
+"the parser should, by default, do Y."  This doesn't I<require>
+the parser to provide an option for turning off whatever
+feature Y is (like expanding tabs in verbatim paragraphs), although
+it implicates that such an option I<may> be provided.
+
+=head1 Pod Definitions
+
+Pod is embedded in files, typically Perl source files -- although you
+can write a file that's nothing but Pod.
+
+A B<line> in a file consists of zero or more non-newline characters,
+terminated by either a newline or the end of the file.
+
+A B<newline sequence> is usually a platform-dependent concept, but
+Pod parsers should understand it to mean any of CR (ASCII 13), LF
+(ASCII 10), or a CRLF (ASCII 13 followed immediately by ASCII 10), in
+addition to any other system-specific meaning.  The first CR/CRLF/LF
+sequence in the file may be used as the basis for identifying the
+newline sequence for parsing the rest of the file.
+
+A B<blank line> is a line consisting entirely of zero or more spaces
+(ASCII 32) or tabs (ASCII 9), and terminated by a newline or end-of-file.
+A B<non-blank line> is a line containing one or more characters other
+than space or tab (and terminated by a newline or end-of-file).
+
+(I<Note:> Many older Pod parsers did not accept a line consisting of
+spaces/tabs and then a newline as a blank line -- the only lines they
+considered blank were lines consisting of I<no characters at all>,
+terminated by a newline.)
+
+B<Whitespace> is used in this document as a blanket term for spaces,
+tabs, and newline sequences.  (By itself, this term usually refers
+to literal whitespace.  That is, sequences of whitespace characters
+in Pod source, as opposed to "EE<lt>32>", which is a formatting
+code that I<denotes> a whitespace character.)
+
+A B<Pod parser> is a module meant for parsing Pod (regardless of
+whether this involves calling callbacks or building a parse tree or
+directly formatting it).  A B<Pod formatter> (or B<Pod translator>)
+is a module or program that converts Pod to some other format (HTML,
+plaintext, TeX, PostScript, RTF).  A B<Pod processor> might be a
+formatter or translator, or might be a program that does something
+else with the Pod (like counting words, scanning for index points,
+etc.).
+
+Pod content is contained in B<Pod blocks>.  A Pod block starts with a
+line that matches <m/\A=[a-zA-Z]/>, and continues up to the next line
+that matches C<m/\A=cut/> -- or up to the end of the file, if there is
+no C<m/\A=cut/> line.
+
+=for comment
+ The current perlsyn says:
+ [beginquote]
+   Note that pod translators should look at only paragraphs beginning
+   with a pod directive (it makes parsing easier), whereas the compiler
+   actually knows to look for pod escapes even in the middle of a
+   paragraph.  This means that the following secret stuff will be ignored
+   by both the compiler and the translators.
+      $a=3;
+      =secret stuff
+       warn "Neither POD nor CODE!?"
+      =cut back
+      print "got $a\n";
+   You probably shouldn't rely upon the warn() being podded out forever.
+   Not all pod translators are well-behaved in this regard, and perhaps
+   the compiler will become pickier.
+ [endquote]
+ I think that those paragraphs should just be removed; paragraph-based
+ parsing  seems to have been largely abandoned, because of the hassle
+ with non-empty blank lines messing up what people meant by "paragraph".
+ Even if the "it makes parsing easier" bit were especially true,
+ it wouldn't be worth the confusion of having perl and pod2whatever
+ actually disagree on what can constitute a Pod block.
+
+Within a Pod block, there are B<Pod paragraphs>.  A Pod paragraph
+consists of non-blank lines of text, separated by one or more blank
+lines.
+
+For purposes of Pod processing, there are four types of paragraphs in
+a Pod block:
+
+=over
+
+=item *
+
+A command paragraph (also called a "directive").  The first line of
+this paragraph must match C<m/\A=[a-zA-Z]/>.  Command paragraphs are
+typically one line, as in:
+
+  =head1 NOTES
+
+  =item *
+
+But they may span several (non-blank) lines:
+
+  =for comment
+  Hm, I wonder what it would look like if
+  you tried to write a BNF for Pod from this.
+
+  =head3 Dr. Strangelove, or: How I Learned to
+  Stop Worrying and Love the Bomb
+
+I<Some> command paragraphs allow formatting codes in their content
+(i.e., after the part that matches C<m/\A=[a-zA-Z]\S*\s*/>), as in:
+
+  =head1 Did You Remember to C<use strict;>?
+
+In other words, the Pod processing handler for "head1" will apply the
+same processing to "Did You Remember to CE<lt>use strict;>?" that it
+would to an ordinary paragraph -- i.e., formatting codes (like
+"CE<lt>...>") are parsed and presumably formatted appropriately, and
+whitespace in the form of literal spaces and/or tabs is not
+significant.
+
+=item *
+
+A B<verbatim paragraph>.  The first line of this paragraph must be a
+literal space or tab, and this paragraph must not be inside a "=begin
+I<identifier>", ... "=end I<identifier>" sequence unless
+"I<identifier>" begins with a colon (":").  That is, if a paragraph
+starts with a literal space or tab, but I<is> inside a
+"=begin I<identifier>", ... "=end I<identifier>" region, then it's
+a data paragraph, unless "I<identifier>" begins with a colon.
+
+Whitespace I<is> significant in verbatim paragraphs (although, in
+processing, tabs are probably expanded).
+
+=item *
+
+An B<ordinary paragraph>.  A paragraph is an ordinary paragraph
+if its first line matches neither C<m/\A=[a-zA-Z]/> nor
+C<m/\A[ \t]/>, I<and> if it's not inside a "=begin I<identifier>",
+... "=end I<identifier>" sequence unless "I<identifier>" begins with
+a colon (":").
+
+=item *
+
+A B<data paragraph>.  This is a paragraph that I<is> inside a "=begin
+I<identifier>" ... "=end I<identifier>" sequence where
+"I<identifier>" does I<not> begin with a literal colon (":").  In
+some sense, a data paragraph is not part of Pod at all (i.e.,
+effectively it's "out-of-band"), since it's not subject to most kinds
+of Pod parsing; but it is specified here, since Pod
+parsers need to be able to call an event for it, or store it in some
+form in a parse tree, or at least just parse I<around> it.
+
+=back
+
+For example: consider the following paragraphs:
+
+  # <- that's the 0th column
+
+  =head1 Foo
+
+  Stuff
+
+    $foo->bar
+
+  =cut
+
+Here, "=head1 Foo" and "=cut" are command paragraphs because the first
+line of each matches C<m/\A=[a-zA-Z]/>.  "I<[space][space]>$foo->bar"
+is a verbatim paragraph, because its first line starts with a literal
+whitespace character (and there's no "=begin"..."=end" region around).
+
+The "=begin I<identifier>" ... "=end I<identifier>" commands stop
+paragraphs that they surround from being parsed as ordinary or verbatim
+paragraphs, if I<identifier> doesn't begin with a colon.  This
+is discussed in detail in the section
+L</About Data Paragraphs and "=beginE<sol>=end" Regions>.
+
+=head1 Pod Commands
+
+This section is intended to supplement and clarify the discussion in
+L<perlpod/"Command Paragraph">.  These are the currently recognized
+Pod commands:
+
+=over
+
+=item "=head1", "=head2", "=head3", "=head4"
+
+This command indicates that the text in the remainder of the paragraph
+is a heading.  That text may contain formatting codes.  Examples:
+
+  =head1 Object Attributes
+
+  =head3 What B<Not> to Do!
+
+=item "=pod"
+
+This command indicates that this paragraph begins a Pod block.  (If we
+are already in the middle of a Pod block, this command has no effect at
+all.)  If there is any text in this command paragraph after "=pod",
+it must be ignored.  Examples:
+
+  =pod
+
+  This is a plain Pod paragraph.
+
+  =pod This text is ignored.
+
+=item "=cut"
+
+This command indicates that this line is the end of this previously
+started Pod block.  If there is any text after "=cut" on the line, it must be
+ignored.  Examples:
+
+  =cut
+
+  =cut The documentation ends here.
+
+  =cut
+  # This is the first line of program text.
+  sub foo { # This is the second.
+
+It is an error to try to I<start> a Pod block with a "=cut" command.  In
+that case, the Pod processor must halt parsing of the input file, and
+must by default emit a warning.
+
+=item "=over"
+
+This command indicates that this is the start of a list/indent
+region.  If there is any text following the "=over", it must consist
+of only a nonzero positive numeral.  The semantics of this numeral is
+explained in the L</"About =over...=back Regions"> section, further
+below.  Formatting codes are not expanded.  Examples:
+
+  =over 3
+
+  =over 3.5
+
+  =over
+
+=item "=item"
+
+This command indicates that an item in a list begins here.  Formatting
+codes are processed.  The semantics of the (optional) text in the
+remainder of this paragraph are
+explained in the L</"About =over...=back Regions"> section, further
+below.  Examples:
+
+  =item
+
+  =item *
+
+  =item      *    
+
+  =item 14
+
+  =item   3.
+
+  =item C<< $thing->stuff(I<dodad>) >>
+
+  =item For transporting us beyond seas to be tried for pretended
+  offenses
+
+  =item He is at this time transporting large armies of foreign
+  mercenaries to complete the works of death, desolation and
+  tyranny, already begun with circumstances of cruelty and perfidy
+  scarcely paralleled in the most barbarous ages, and totally
+  unworthy the head of a civilized nation.
+
+=item "=back"
+
+This command indicates that this is the end of the region begun
+by the most recent "=over" command.  It permits no text after the
+"=back" command.
+
+=item "=begin formatname"
+
+This marks the following paragraphs (until the matching "=end
+formatname") as being for some special kind of processing.  Unless
+"formatname" begins with a colon, the contained non-command
+paragraphs are data paragraphs.  But if "formatname" I<does> begin
+with a colon, then non-command paragraphs are ordinary paragraphs
+or data paragraphs.  This is discussed in detail in the section
+L</About Data Paragraphs and "=beginE<sol>=end" Regions>.
+
+It is advised that formatnames match the regexp
+C<m/\A:?[-a-zA-Z0-9_]+\z/>.  Implementors should anticipate future
+expansion in the semantics and syntax of the first parameter
+to "=begin"/"=end"/"=for".
+
+=item "=end formatname"
+
+This marks the end of the region opened by the matching
+"=begin formatname" region.  If "formatname" is not the formatname
+of the most recent open "=begin formatname" region, then this
+is an error, and must generate an error message.  This
+is discussed in detail in the section
+L</About Data Paragraphs and "=beginE<sol>=end" Regions>.
+
+=item "=for formatname text..."
+
+This is synonymous with:
+
+     =begin formatname
+
+     text...
+
+     =end formatname
+
+That is, it creates a region consisting of a single paragraph; that
+paragraph is to be treated as a normal paragraph if "formatname"
+begins with a ":"; if "formatname" I<doesn't> begin with a colon,
+then "text..." will constitute a data paragraph.  There is no way
+to use "=for formatname text..." to express "text..." as a verbatim
+paragraph.
+
+=item "=encoding encodingname"
+
+This command, which should occur early in the document (at least
+before any non-US-ASCII data!), declares that this document is
+encoded in the encoding I<encodingname>, which must be
+an encoding name that L<Encode> recognizes.  (Encode's list
+of supported encodings, in L<Encode::Supported>, is useful here.)
+If the Pod parser cannot decode the declared encoding, it 
+should emit a warning and may abort parsing the document
+altogether.
+
+A document having more than one "=encoding" line should be
+considered an error.  Pod processors may silently tolerate this if
+the not-first "=encoding" lines are just duplicates of the
+first one (e.g., if there's a "=encoding utf8" line, and later on
+another "=encoding utf8" line).  But Pod processors should complain if
+there are contradictory "=encoding" lines in the same document
+(e.g., if there is a "=encoding utf8" early in the document and
+"=encoding big5" later).  Pod processors that recognize BOMs
+may also complain if they see an "=encoding" line
+that contradicts the BOM (e.g., if a document with a UTF-16LE
+BOM has an "=encoding shiftjis" line).
+
+=back
+
+If a Pod processor sees any command other than the ones listed
+above (like "=head", or "=haed1", or "=stuff", or "=cuttlefish",
+or "=w123"), that processor must by default treat this as an
+error.  It must not process the paragraph beginning with that
+command, must by default warn of this as an error, and may
+abort the parse.  A Pod parser may allow a way for particular
+applications to add to the above list of known commands, and to
+stipulate, for each additional command, whether formatting
+codes should be processed.
+
+Future versions of this specification may add additional
+commands.
+
+
+
+=head1 Pod Formatting Codes
+
+(Note that in previous drafts of this document and of perlpod,
+formatting codes were referred to as "interior sequences", and
+this term may still be found in the documentation for Pod parsers,
+and in error messages from Pod processors.)
+
+There are two syntaxes for formatting codes:
+
+=over
+
+=item *
+
+A formatting code starts with a capital letter (just US-ASCII [A-Z])
+followed by a "<", any number of characters, and ending with the first
+matching ">".  Examples:
+
+    That's what I<you> think!
+
+    What's C<dump()> for?
+
+    X<C<chmod> and C<unlink()> Under Different Operating Systems>
+
+=item *
+
+A formatting code starts with a capital letter (just US-ASCII [A-Z])
+followed by two or more "<"'s, one or more whitespace characters,
+any number of characters, one or more whitespace characters,
+and ending with the first matching sequence of two or more ">"'s, where
+the number of ">"'s equals the number of "<"'s in the opening of this
+formatting code.  Examples:
+
+    That's what I<< you >> think!
+
+    C<<< open(X, ">>thing.dat") || die $! >>>
+
+    B<< $foo->bar(); >>
+
+With this syntax, the whitespace character(s) after the "CE<lt><<"
+and before the ">>" (or whatever letter) are I<not> renderable -- they
+do not signify whitespace, are merely part of the formatting codes
+themselves.  That is, these are all synonymous:
+
+    C<thing>
+    C<< thing >>
+    C<<           thing     >>
+    C<<<   thing >>>
+    C<<<<
+    thing
+               >>>>
+
+and so on.
+
+=back
+
+In parsing Pod, a notably tricky part is the correct parsing of
+(potentially nested!) formatting codes.  Implementors should
+consult the code in the C<parse_text> routine in Pod::Parser as an
+example of a correct implementation.
+
+=over
+
+=item C<IE<lt>textE<gt>> -- italic text
+
+See the brief discussion in L<perlpod/"Formatting Codes">.
+
+=item C<BE<lt>textE<gt>> -- bold text
+
+See the brief discussion in L<perlpod/"Formatting Codes">.
+
+=item C<CE<lt>codeE<gt>> -- code text
+
+See the brief discussion in L<perlpod/"Formatting Codes">.
+
+=item C<FE<lt>filenameE<gt>> -- style for filenames
+
+See the brief discussion in L<perlpod/"Formatting Codes">.
+
+=item C<XE<lt>topic nameE<gt>> -- an index entry
+
+See the brief discussion in L<perlpod/"Formatting Codes">.
+
+This code is unusual in that most formatters completely discard
+this code and its content.  Other formatters will render it with
+invisible codes that can be used in building an index of
+the current document.
+
+=item C<ZE<lt>E<gt>> -- a null (zero-effect) formatting code
+
+Discussed briefly in L<perlpod/"Formatting Codes">.
+
+This code is unusual is that it should have no content.  That is,
+a processor may complain if it sees C<ZE<lt>potatoesE<gt>>.  Whether
+or not it complains, the I<potatoes> text should ignored.
+
+=item C<LE<lt>nameE<gt>> -- a hyperlink
+
+The complicated syntaxes of this code are discussed at length in
+L<perlpod/"Formatting Codes">, and implementation details are
+discussed below, in L</"About LE<lt>...E<gt> Codes">.  Parsing the
+contents of LE<lt>content> is tricky.  Notably, the content has to be
+checked for whether it looks like a URL, or whether it has to be split
+on literal "|" and/or "/" (in the right order!), and so on,
+I<before> EE<lt>...> codes are resolved.
+
+=item C<EE<lt>escapeE<gt>> -- a character escape
+
+See L<perlpod/"Formatting Codes">, and several points in
+L</Notes on Implementing Pod Processors>.
+
+=item C<SE<lt>textE<gt>> -- text contains non-breaking spaces
+
+This formatting code is syntactically simple, but semantically
+complex.  What it means is that each space in the printable
+content of this code signifies a non-breaking space.
+
+Consider:
+
+    C<$x ? $y    :  $z>
+
+    S<C<$x ? $y     :  $z>>
+
+Both signify the monospace (c[ode] style) text consisting of
+"$x", one space, "?", one space, ":", one space, "$z".  The
+difference is that in the latter, with the S code, those spaces
+are not "normal" spaces, but instead are non-breaking spaces.
+
+=back
+
+
+If a Pod processor sees any formatting code other than the ones
+listed above (as in "NE<lt>...>", or "QE<lt>...>", etc.), that
+processor must by default treat this as an error.
+A Pod parser may allow a way for particular
+applications to add to the above list of known formatting codes;
+a Pod parser might even allow a way to stipulate, for each additional
+command, whether it requires some form of special processing, as
+LE<lt>...> does.
+
+Future versions of this specification may add additional
+formatting codes.
+
+Historical note:  A few older Pod processors would not see a ">" as
+closing a "CE<lt>" code, if the ">" was immediately preceded by
+a "-".  This was so that this:
+
+    C<$foo->bar>
+
+would parse as equivalent to this:
+
+    C<$foo-E<gt>bar>
+
+instead of as equivalent to a "C" formatting code containing 
+only "$foo-", and then a "bar>" outside the "C" formatting code.  This
+problem has since been solved by the addition of syntaxes like this:
+
+    C<< $foo->bar >>
+
+Compliant parsers must not treat "->" as special.
+
+Formatting codes absolutely cannot span paragraphs.  If a code is
+opened in one paragraph, and no closing code is found by the end of
+that paragraph, the Pod parser must close that formatting code,
+and should complain (as in "Unterminated I code in the paragraph
+starting at line 123: 'Time objects are not...'").  So these
+two paragraphs:
+
+  I<I told you not to do this!
+
+  Don't make me say it again!>
+
+...must I<not> be parsed as two paragraphs in italics (with the I
+code starting in one paragraph and starting in another.)  Instead,
+the first paragraph should generate a warning, but that aside, the
+above code must parse as if it were:
+
+  I<I told you not to do this!>
+
+  Don't make me say it again!E<gt>
+
+(In SGMLish jargon, all Pod commands are like block-level
+elements, whereas all Pod formatting codes are like inline-level
+elements.)
+
+
+
+=head1 Notes on Implementing Pod Processors
+
+The following is a long section of miscellaneous requirements
+and suggestions to do with Pod processing.
+
+=over
+
+=item *
+
+Pod formatters should tolerate lines in verbatim blocks that are of
+any length, even if that means having to break them (possibly several
+times, for very long lines) to avoid text running off the side of the
+page.  Pod formatters may warn of such line-breaking.  Such warnings
+are particularly appropriate for lines are over 100 characters long, which
+are usually not intentional.
+
+=item *
+
+Pod parsers must recognize I<all> of the three well-known newline
+formats: CR, LF, and CRLF.  See L<perlport|perlport>.
+
+=item *
+
+Pod parsers should accept input lines that are of any length.
+
+=item *
+
+Since Perl recognizes a Unicode Byte Order Mark at the start of files
+as signaling that the file is Unicode encoded as in UTF-16 (whether
+big-endian or little-endian) or UTF-8, Pod parsers should do the
+same.  Otherwise, the character encoding should be understood as
+being UTF-8 if the first highbit byte sequence in the file seems
+valid as a UTF-8 sequence, or otherwise as Latin-1.
+
+Future versions of this specification may specify
+how Pod can accept other encodings.  Presumably treatment of other
+encodings in Pod parsing would be as in XML parsing: whatever the
+encoding declared by a particular Pod file, content is to be
+stored in memory as Unicode characters.
+
+=item *
+
+The well known Unicode Byte Order Marks are as follows:  if the
+file begins with the two literal byte values 0xFE 0xFF, this is
+the BOM for big-endian UTF-16.  If the file begins with the two
+literal byte value 0xFF 0xFE, this is the BOM for little-endian
+UTF-16.  If the file begins with the three literal byte values
+0xEF 0xBB 0xBF, this is the BOM for UTF-8.
+
+=for comment
+ use bytes; print map sprintf(" 0x%02X", ord $_), split '', "\x{feff}";
+ 0xEF 0xBB 0xBF
+
+=for comment
+ If toke.c is modified to support UTF-32, add mention of those here.
+
+=item *
+
+A naive but sufficient heuristic for testing the first highbit
+byte-sequence in a BOM-less file (whether in code or in Pod!), to see
+whether that sequence is valid as UTF-8 (RFC 2279) is to check whether
+that the first byte in the sequence is in the range 0xC0 - 0xFD
+I<and> whether the next byte is in the range
+0x80 - 0xBF.  If so, the parser may conclude that this file is in
+UTF-8, and all highbit sequences in the file should be assumed to
+be UTF-8.  Otherwise the parser should treat the file as being
+in Latin-1.  In the unlikely circumstance that the first highbit
+sequence in a truly non-UTF-8 file happens to appear to be UTF-8, one
+can cater to our heuristic (as well as any more intelligent heuristic)
+by prefacing that line with a comment line containing a highbit
+sequence that is clearly I<not> valid as UTF-8.  A line consisting
+of simply "#", an e-acute, and any non-highbit byte,
+is sufficient to establish this file's encoding.
+
+=for comment
+ If/WHEN some brave soul makes these heuristics into a generic
+ text-file class (or PerlIO layer?), we can presumably delete
+ mention of these icky details from this file, and can instead
+ tell people to just use appropriate class/layer.
+ Auto-recognition of newline sequences would be another desirable
+ feature of such a class/layer.
+ HINT HINT HINT.
+
+=for comment
+ "The probability that a string of characters
+ in any other encoding appears as valid UTF-8 is low" - RFC2279
+
+=item *
+
+This document's requirements and suggestions about encodings
+do not apply to Pod processors running on non-ASCII platforms,
+notably EBCDIC platforms.
+
+=item *
+
+Pod processors must treat a "=for [label] [content...]" paragraph as
+meaning the same thing as a "=begin [label]" paragraph, content, and
+an "=end [label]" paragraph.  (The parser may conflate these two
+constructs, or may leave them distinct, in the expectation that the
+formatter will nevertheless treat them the same.)
+
+=item *
+
+When rendering Pod to a format that allows comments (i.e., to nearly
+any format other than plaintext), a Pod formatter must insert comment
+text identifying its name and version number, and the name and
+version numbers of any modules it might be using to process the Pod.
+Minimal examples:
+
+  %% POD::Pod2PS v3.14159, using POD::Parser v1.92
+
+  <!-- Pod::HTML v3.14159, using POD::Parser v1.92 -->
+
+  {\doccomm generated by Pod::Tree::RTF 3.14159 using Pod::Tree 1.08}
+
+  .\" Pod::Man version 3.14159, using POD::Parser version 1.92
+
+Formatters may also insert additional comments, including: the
+release date of the Pod formatter program, the contact address for
+the author(s) of the formatter, the current time, the name of input
+file, the formatting options in effect, version of Perl used, etc.
+
+Formatters may also choose to note errors/warnings as comments,
+besides or instead of emitting them otherwise (as in messages to
+STDERR, or C<die>ing).
+
+=item *
+
+Pod parsers I<may> emit warnings or error messages ("Unknown E code
+EE<lt>zslig>!") to STDERR (whether through printing to STDERR, or
+C<warn>ing/C<carp>ing, or C<die>ing/C<croak>ing), but I<must> allow
+suppressing all such STDERR output, and instead allow an option for
+reporting errors/warnings
+in some other way, whether by triggering a callback, or noting errors
+in some attribute of the document object, or some similarly unobtrusive
+mechanism -- or even by appending a "Pod Errors" section to the end of
+the parsed form of the document.
+
+=item *
+
+In cases of exceptionally aberrant documents, Pod parsers may abort the
+parse.  Even then, using C<die>ing/C<croak>ing is to be avoided; where
+possible, the parser library may simply close the input file
+and add text like "*** Formatting Aborted ***" to the end of the
+(partial) in-memory document.
+
+=item *
+
+In paragraphs where formatting codes (like EE<lt>...>, BE<lt>...>)
+are understood (i.e., I<not> verbatim paragraphs, but I<including>
+ordinary paragraphs, and command paragraphs that produce renderable
+text, like "=head1"), literal whitespace should generally be considered
+"insignificant", in that one literal space has the same meaning as any
+(nonzero) number of literal spaces, literal newlines, and literal tabs
+(as long as this produces no blank lines, since those would terminate
+the paragraph).  Pod parsers should compact literal whitespace in each
+processed paragraph, but may provide an option for overriding this
+(since some processing tasks do not require it), or may follow
+additional special rules (for example, specially treating
+period-space-space or period-newline sequences).
+
+=item *
+
+Pod parsers should not, by default, try to coerce apostrophe (') and
+quote (") into smart quotes (little 9's, 66's, 99's, etc), nor try to
+turn backtick (`) into anything else but a single backtick character
+(distinct from an open quote character!), nor "--" into anything but
+two minus signs.  They I<must never> do any of those things to text
+in CE<lt>...> formatting codes, and never I<ever> to text in verbatim
+paragraphs.
+
+=item *
+
+When rendering Pod to a format that has two kinds of hyphens (-), one
+that's a non-breaking hyphen, and another that's a breakable hyphen
+(as in "object-oriented", which can be split across lines as
+"object-", newline, "oriented"), formatters are encouraged to
+generally translate "-" to non-breaking hyphen, but may apply
+heuristics to convert some of these to breaking hyphens.
+
+=item *
+
+Pod formatters should make reasonable efforts to keep words of Perl
+code from being broken across lines.  For example, "Foo::Bar" in some
+formatting systems is seen as eligible for being broken across lines
+as "Foo::" newline "Bar" or even "Foo::-" newline "Bar".  This should
+be avoided where possible, either by disabling all line-breaking in
+mid-word, or by wrapping particular words with internal punctuation
+in "don't break this across lines" codes (which in some formats may
+not be a single code, but might be a matter of inserting non-breaking
+zero-width spaces between every pair of characters in a word.)
+
+=item *
+
+Pod parsers should, by default, expand tabs in verbatim paragraphs as
+they are processed, before passing them to the formatter or other
+processor.  Parsers may also allow an option for overriding this.
+
+=item *
+
+Pod parsers should, by default, remove newlines from the end of
+ordinary and verbatim paragraphs before passing them to the
+formatter.  For example, while the paragraph you're reading now
+could be considered, in Pod source, to end with (and contain)
+the newline(s) that end it, it should be processed as ending with
+(and containing) the period character that ends this sentence.
+
+=item *
+
+Pod parsers, when reporting errors, should make some effort to report
+an approximate line number ("Nested EE<lt>>'s in Paragraph #52, near
+line 633 of Thing/Foo.pm!"), instead of merely noting the paragraph
+number ("Nested EE<lt>>'s in Paragraph #52 of Thing/Foo.pm!").  Where
+this is problematic, the paragraph number should at least be
+accompanied by an excerpt from the paragraph ("Nested EE<lt>>'s in
+Paragraph #52 of Thing/Foo.pm, which begins 'Read/write accessor for
+the CE<lt>interest rate> attribute...'").
+
+=item *
+
+Pod parsers, when processing a series of verbatim paragraphs one
+after another, should consider them to be one large verbatim
+paragraph that happens to contain blank lines.  I.e., these two
+lines, which have a blank line between them:
+
+	use Foo;
+
+	print Foo->VERSION
+
+should be unified into one paragraph ("\tuse Foo;\n\n\tprint
+Foo->VERSION") before being passed to the formatter or other
+processor.  Parsers may also allow an option for overriding this.
+
+While this might be too cumbersome to implement in event-based Pod
+parsers, it is straightforward for parsers that return parse trees.
+
+=item *
+
+Pod formatters, where feasible, are advised to avoid splitting short
+verbatim paragraphs (under twelve lines, say) across pages.
+
+=item *
+
+Pod parsers must treat a line with only spaces and/or tabs on it as a
+"blank line" such as separates paragraphs.  (Some older parsers
+recognized only two adjacent newlines as a "blank line" but would not
+recognize a newline, a space, and a newline, as a blank line.  This
+is noncompliant behavior.)
+
+=item *
+
+Authors of Pod formatters/processors should make every effort to
+avoid writing their own Pod parser.  There are already several in
+CPAN, with a wide range of interface styles -- and one of them,
+Pod::Parser, comes with modern versions of Perl.
+
+=item *
+
+Characters in Pod documents may be conveyed either as literals, or by
+number in EE<lt>n> codes, or by an equivalent mnemonic, as in
+EE<lt>eacute> which is exactly equivalent to EE<lt>233>.
+
+Characters in the range 32-126 refer to those well known US-ASCII
+characters (also defined there by Unicode, with the same meaning),
+which all Pod formatters must render faithfully.  Characters
+in the ranges 0-31 and 127-159 should not be used (neither as
+literals, nor as EE<lt>number> codes), except for the
+literal byte-sequences for newline (13, 13 10, or 10), and tab (9).
+
+Characters in the range 160-255 refer to Latin-1 characters (also
+defined there by Unicode, with the same meaning).  Characters above
+255 should be understood to refer to Unicode characters.
+
+=item *
+
+Be warned
+that some formatters cannot reliably render characters outside 32-126;
+and many are able to handle 32-126 and 160-255, but nothing above
+255.
+
+=item *
+
+Besides the well-known "EE<lt>lt>" and "EE<lt>gt>" codes for
+less-than and greater-than, Pod parsers must understand "EE<lt>sol>"
+for "/" (solidus, slash), and "EE<lt>verbar>" for "|" (vertical bar,
+pipe).  Pod parsers should also understand "EE<lt>lchevron>" and
+"EE<lt>rchevron>" as legacy codes for characters 171 and 187, i.e.,
+"left-pointing double angle quotation mark" = "left pointing
+guillemet" and "right-pointing double angle quotation mark" = "right
+pointing guillemet".  (These look like little "<<" and ">>", and they
+are now preferably expressed with the HTML/XHTML codes "EE<lt>laquo>"
+and "EE<lt>raquo>".)
+
+=item *
+
+Pod parsers should understand all "EE<lt>html>" codes as defined
+in the entity declarations in the most recent XHTML specification at
+C<www.W3.org>.  Pod parsers must understand at least the entities
+that define characters in the range 160-255 (Latin-1).  Pod parsers,
+when faced with some unknown "EE<lt>I<identifier>>" code,
+shouldn't simply replace it with nullstring (by default, at least),
+but may pass it through as a string consisting of the literal characters
+E, less-than, I<identifier>, greater-than.  Or Pod parsers may offer the
+alternative option of processing such unknown
+"EE<lt>I<identifier>>" codes by firing an event especially
+for such codes, or by adding a special node-type to the in-memory
+document tree.  Such "EE<lt>I<identifier>>" may have special meaning
+to some processors, or some processors may choose to add them to
+a special error report.
+
+=item *
+
+Pod parsers must also support the XHTML codes "EE<lt>quot>" for
+character 34 (doublequote, "), "EE<lt>amp>" for character 38
+(ampersand, &), and "EE<lt>apos>" for character 39 (apostrophe, ').
+
+=item *
+
+Note that in all cases of "EE<lt>whatever>", I<whatever> (whether
+an htmlname, or a number in any base) must consist only of
+alphanumeric characters -- that is, I<whatever> must watch
+C<m/\A\w+\z/>.  So "EE<lt> 0 1 2 3 >" is invalid, because
+it contains spaces, which aren't alphanumeric characters.  This
+presumably does not I<need> special treatment by a Pod processor;
+" 0 1 2 3 " doesn't look like a number in any base, so it would
+presumably be looked up in the table of HTML-like names.  Since
+there isn't (and cannot be) an HTML-like entity called " 0 1 2 3 ",
+this will be treated as an error.  However, Pod processors may
+treat "EE<lt> 0 1 2 3 >" or "EE<lt>e-acute>" as I<syntactically>
+invalid, potentially earning a different error message than the
+error message (or warning, or event) generated by a merely unknown
+(but theoretically valid) htmlname, as in "EE<lt>qacute>"
+[sic].  However, Pod parsers are not required to make this
+distinction.
+
+=item *
+
+Note that EE<lt>number> I<must not> be interpreted as simply
+"codepoint I<number> in the current/native character set".  It always
+means only "the character represented by codepoint I<number> in
+Unicode."  (This is identical to the semantics of &#I<number>; in XML.)
+
+This will likely require many formatters to have tables mapping from
+treatable Unicode codepoints (such as the "\xE9" for the e-acute
+character) to the escape sequences or codes necessary for conveying
+such sequences in the target output format.  A converter to *roff
+would, for example know that "\xE9" (whether conveyed literally, or via
+a EE<lt>...> sequence) is to be conveyed as "e\\*'".
+Similarly, a program rendering Pod in a Mac OS application window, would
+presumably need to know that "\xE9" maps to codepoint 142 in MacRoman
+encoding that (at time of writing) is native for Mac OS.  Such
+Unicode2whatever mappings are presumably already widely available for
+common output formats.  (Such mappings may be incomplete!  Implementers
+are not expected to bend over backwards in an attempt to render
+Cherokee syllabics, Etruscan runes, Byzantine musical symbols, or any
+of the other weird things that Unicode can encode.)  And
+if a Pod document uses a character not found in such a mapping, the
+formatter should consider it an unrenderable character.
+
+=item *
+
+If, surprisingly, the implementor of a Pod formatter can't find a
+satisfactory pre-existing table mapping from Unicode characters to
+escapes in the target format (e.g., a decent table of Unicode
+characters to *roff escapes), it will be necessary to build such a
+table.  If you are in this circumstance, you should begin with the
+characters in the range 0x00A0 - 0x00FF, which is mostly the heavily
+used accented characters.  Then proceed (as patience permits and
+fastidiousness compels) through the characters that the (X)HTML
+standards groups judged important enough to merit mnemonics
+for.  These are declared in the (X)HTML specifications at the
+www.W3.org site.  At time of writing (September 2001), the most recent
+entity declaration files are:
+
+  http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
+  http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent
+  http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent
+
+Then you can progress through any remaining notable Unicode characters
+in the range 0x2000-0x204D (consult the character tables at
+www.unicode.org), and whatever else strikes your fancy.  For example,
+in F<xhtml-symbol.ent>, there is the entry:
+
+  <!ENTITY infin    "∞"> <!-- infinity, U+221E ISOtech -->
+
+While the mapping "infin" to the character "\x{221E}" will (hopefully)
+have been already handled by the Pod parser, the presence of the
+character in this file means that it's reasonably important enough to
+include in a formatter's table that maps from notable Unicode characters
+to the codes necessary for rendering them.  So for a Unicode-to-*roff
+mapping, for example, this would merit the entry:
+
+  "\x{221E}" => '\(in',
+
+It is eagerly hoped that in the future, increasing numbers of formats
+(and formatters) will support Unicode characters directly (as (X)HTML
+does with C<∞>, C<∞>, or C<&#x221E;>), reducing the need
+for idiosyncratic mappings of Unicode-to-I<my_escapes>.
+
+=item *
+
+It is up to individual Pod formatter to display good judgement when
+confronted with an unrenderable character (which is distinct from an
+unknown EE<lt>thing> sequence that the parser couldn't resolve to
+anything, renderable or not).  It is good practice to map Latin letters
+with diacritics (like "EE<lt>eacute>"/"EE<lt>233>") to the corresponding
+unaccented US-ASCII letters (like a simple character 101, "e"), but
+clearly this is often not feasible, and an unrenderable character may
+be represented as "?", or the like.  In attempting a sane fallback
+(as from EE<lt>233> to "e"), Pod formatters may use the
+%Latin1Code_to_fallback table in L<Pod::Escapes|Pod::Escapes>, or
+L<Text::Unidecode|Text::Unidecode>, if available.
+
+For example, this Pod text:
+
+  magic is enabled if you set C<$Currency> to 'E<euro>'.
+
+may be rendered as:
+"magic is enabled if you set C<$Currency> to 'I<?>'" or as
+"magic is enabled if you set C<$Currency> to 'B<[euro]>'", or as
+"magic is enabled if you set C<$Currency> to '[x20AC]', etc.
+
+A Pod formatter may also note, in a comment or warning, a list of what
+unrenderable characters were encountered.
+
+=item *
+
+EE<lt>...> may freely appear in any formatting code (other than
+in another EE<lt>...> or in an ZE<lt>>).  That is, "XE<lt>The
+EE<lt>euro>1,000,000 Solution>" is valid, as is "LE<lt>The
+EE<lt>euro>1,000,000 Solution|Million::Euros>".
+
+=item *
+
+Some Pod formatters output to formats that implement non-breaking
+spaces as an individual character (which I'll call "NBSP"), and
+others output to formats that implement non-breaking spaces just as
+spaces wrapped in a "don't break this across lines" code.  Note that
+at the level of Pod, both sorts of codes can occur: Pod can contain a
+NBSP character (whether as a literal, or as a "EE<lt>160>" or
+"EE<lt>nbsp>" code); and Pod can contain "SE<lt>foo
+IE<lt>barE<gt> baz>" codes, where "mere spaces" (character 32) in
+such codes are taken to represent non-breaking spaces.  Pod
+parsers should consider supporting the optional parsing of "SE<lt>foo
+IE<lt>barE<gt> baz>" as if it were
+"fooI<NBSP>IE<lt>barE<gt>I<NBSP>baz", and, going the other way, the
+optional parsing of groups of words joined by NBSP's as if each group
+were in a SE<lt>...> code, so that formatters may use the
+representation that maps best to what the output format demands.
+
+=item *
+
+Some processors may find that the C<SE<lt>...E<gt>> code is easiest to
+implement by replacing each space in the parse tree under the content
+of the S, with an NBSP.  But note: the replacement should apply I<not> to
+spaces in I<all> text, but I<only> to spaces in I<printable> text.  (This
+distinction may or may not be evident in the particular tree/event
+model implemented by the Pod parser.)  For example, consider this
+unusual case:
+
+   S<L</Autoloaded Functions>>
+
+This means that the space in the middle of the visible link text must
+not be broken across lines.  In other words, it's the same as this:
+
+   L<"AutoloadedE<160>Functions"/Autoloaded Functions>
+
+However, a misapplied space-to-NBSP replacement could (wrongly)
+produce something equivalent to this:
+
+   L<"AutoloadedE<160>Functions"/AutoloadedE<160>Functions>
+
+...which is almost definitely not going to work as a hyperlink (assuming
+this formatter outputs a format supporting hypertext).
+
+Formatters may choose to just not support the S format code,
+especially in cases where the output format simply has no NBSP
+character/code and no code for "don't break this stuff across lines".
+
+=item *
+
+Besides the NBSP character discussed above, implementors are reminded
+of the existence of the other "special" character in Latin-1, the
+"soft hyphen" character, also known as "discretionary hyphen",
+i.e. C<EE<lt>173E<gt>> = C<EE<lt>0xADE<gt>> =
+C<EE<lt>shyE<gt>>).  This character expresses an optional hyphenation
+point.  That is, it normally renders as nothing, but may render as a
+"-" if a formatter breaks the word at that point.  Pod formatters
+should, as appropriate, do one of the following:  1) render this with
+a code with the same meaning (e.g., "\-" in RTF), 2) pass it through
+in the expectation that the formatter understands this character as
+such, or 3) delete it.
+
+For example:
+
+  sigE<shy>action
+  manuE<shy>script
+  JarkE<shy>ko HieE<shy>taE<shy>nieE<shy>mi
+
+These signal to a formatter that if it is to hyphenate "sigaction"
+or "manuscript", then it should be done as
+"sig-I<[linebreak]>action" or "manu-I<[linebreak]>script"
+(and if it doesn't hyphenate it, then the C<EE<lt>shyE<gt>> doesn't
+show up at all).  And if it is
+to hyphenate "Jarkko" and/or "Hietaniemi", it can do
+so only at the points where there is a C<EE<lt>shyE<gt>> code.
+
+In practice, it is anticipated that this character will not be used
+often, but formatters should either support it, or delete it.
+
+=item *
+
+If you think that you want to add a new command to Pod (like, say, a
+"=biblio" command), consider whether you could get the same
+effect with a for or begin/end sequence: "=for biblio ..." or "=begin
+biblio" ... "=end biblio".  Pod processors that don't understand
+"=for biblio", etc, will simply ignore it, whereas they may complain
+loudly if they see "=biblio".
+
+=item *
+
+Throughout this document, "Pod" has been the preferred spelling for
+the name of the documentation format.  One may also use "POD" or
+"pod".  For the documentation that is (typically) in the Pod
+format, you may use "pod", or "Pod", or "POD".  Understanding these
+distinctions is useful; but obsessing over how to spell them, usually
+is not.
+
+=back
+
+
+
+
+
+=head1 About LE<lt>...E<gt> Codes
+
+As you can tell from a glance at L<perlpod|perlpod>, the LE<lt>...>
+code is the most complex of the Pod formatting codes.  The points below
+will hopefully clarify what it means and how processors should deal
+with it.
+
+=over
+
+=item *
+
+In parsing an LE<lt>...> code, Pod parsers must distinguish at least
+four attributes:
+
+=over
+
+=item First:
+
+The link-text.  If there is none, this must be undef.  (E.g., in
+"LE<lt>Perl Functions|perlfunc>", the link-text is "Perl Functions".
+In "LE<lt>Time::HiRes>" and even "LE<lt>|Time::HiRes>", there is no
+link text.  Note that link text may contain formatting.)
+
+=item Second:
+
+The possibly inferred link-text -- i.e., if there was no real link
+text, then this is the text that we'll infer in its place.  (E.g., for
+"LE<lt>Getopt::Std>", the inferred link text is "Getopt::Std".)
+
+=item Third:
+
+The name or URL, or undef if none.  (E.g., in "LE<lt>Perl
+Functions|perlfunc>", the name -- also sometimes called the page --
+is "perlfunc".  In "LE<lt>/CAVEATS>", the name is undef.)
+
+=item Fourth:
+
+The section (AKA "item" in older perlpods), or undef if none.  E.g.,
+in "LE<lt>Getopt::Std/DESCRIPTIONE<gt>", "DESCRIPTION" is the section.  (Note
+that this is not the same as a manpage section like the "5" in "man 5
+crontab".  "Section Foo" in the Pod sense means the part of the text
+that's introduced by the heading or item whose text is "Foo".)
+
+=back
+
+Pod parsers may also note additional attributes including:
+
+=over
+
+=item Fifth:
+
+A flag for whether item 3 (if present) is a URL (like
+"http://lists.perl.org" is), in which case there should be no section
+attribute; a Pod name (like "perldoc" and "Getopt::Std" are); or
+possibly a man page name (like "crontab(5)" is).
+
+=item Sixth:
+
+The raw original LE<lt>...> content, before text is split on
+"|", "/", etc, and before EE<lt>...> codes are expanded.
+
+=back
+
+(The above were numbered only for concise reference below.  It is not
+a requirement that these be passed as an actual list or array.)
+
+For example:
+
+  L<Foo::Bar>
+    =>  undef,                          # link text
+        "Foo::Bar",                     # possibly inferred link text
+        "Foo::Bar",                     # name
+        undef,                          # section
+        'pod',                          # what sort of link
+        "Foo::Bar"                      # original content
+
+  L<Perlport's section on NL's|perlport/Newlines>
+    =>  "Perlport's section on NL's",   # link text
+        "Perlport's section on NL's",   # possibly inferred link text
+        "perlport",                     # name
+        "Newlines",                     # section
+        'pod',                          # what sort of link
+        "Perlport's section on NL's|perlport/Newlines" # orig. content
+
+  L<perlport/Newlines>
+    =>  undef,                          # link text
+        '"Newlines" in perlport',       # possibly inferred link text
+        "perlport",                     # name
+        "Newlines",                     # section
+        'pod',                          # what sort of link
+        "perlport/Newlines"             # original content
+
+  L<crontab(5)/"DESCRIPTION">
+    =>  undef,                          # link text
+        '"DESCRIPTION" in crontab(5)',  # possibly inferred link text
+        "crontab(5)",                   # name
+        "DESCRIPTION",                  # section
+        'man',                          # what sort of link
+        'crontab(5)/"DESCRIPTION"'      # original content
+
+  L</Object Attributes>
+    =>  undef,                          # link text
+        '"Object Attributes"',          # possibly inferred link text
+        undef,                          # name
+        "Object Attributes",            # section
+        'pod',                          # what sort of link
+        "/Object Attributes"            # original content
+
+  L<http://www.perl.org/>
+    =>  undef,                          # link text
+        "http://www.perl.org/",         # possibly inferred link text
+        "http://www.perl.org/",         # name
+        undef,                          # section
+        'url',                          # what sort of link
+        "http://www.perl.org/"          # original content
+
+Note that you can distinguish URL-links from anything else by the
+fact that they match C<m/\A\w+:[^:\s]\S*\z/>.  So
+C<LE<lt>http://www.perl.comE<gt>> is a URL, but
+C<LE<lt>HTTP::ResponseE<gt>> isn't.
+
+=item *
+
+In case of LE<lt>...> codes with no "text|" part in them,
+older formatters have exhibited great variation in actually displaying
+the link or cross reference.  For example, LE<lt>crontab(5)> would render
+as "the C<crontab(5)> manpage", or "in the C<crontab(5)> manpage"
+or just "C<crontab(5)>".
+
+Pod processors must now treat "text|"-less links as follows:
+
+  L<name>         =>  L<name|name>
+  L</section>     =>  L<"section"|/section>
+  L<name/section> =>  L<"section" in name|name/section>
+
+=item *
+
+Note that section names might contain markup.  I.e., if a section
+starts with:
+
+  =head2 About the C<-M> Operator
+
+or with:
+
+  =item About the C<-M> Operator
+
+then a link to it would look like this:
+
+  L<somedoc/About the C<-M> Operator>
+
+Formatters may choose to ignore the markup for purposes of resolving
+the link and use only the renderable characters in the section name,
+as in:
+
+  <h1><a name="About_the_-M_Operator">About the <code>-M</code>
+  Operator</h1>
+
+  ...
+
+  <a href="somedoc#About_the_-M_Operator">About the <code>-M</code>
+  Operator" in somedoc</a>
+
+=item *
+
+Previous versions of perlpod distinguished C<LE<lt>name/"section"E<gt>>
+links from C<LE<lt>name/itemE<gt>> links (and their targets).  These
+have been merged syntactically and semantically in the current
+specification, and I<section> can refer either to a "=headI<n> Heading
+Content" command or to a "=item Item Content" command.  This
+specification does not specify what behavior should be in the case
+of a given document having several things all seeming to produce the
+same I<section> identifier (e.g., in HTML, several things all producing
+the same I<anchorname> in <a name="I<anchorname>">...</a>
+elements).  Where Pod processors can control this behavior, they should
+use the first such anchor.  That is, C<LE<lt>Foo/BarE<gt>> refers to the
+I<first> "Bar" section in Foo.
+
+But for some processors/formats this cannot be easily controlled; as
+with the HTML example, the behavior of multiple ambiguous
+<a name="I<anchorname>">...</a> is most easily just left up to
+browsers to decide.
+
+=item *
+
+Authors wanting to link to a particular (absolute) URL, must do so
+only with "LE<lt>scheme:...>" codes (like
+LE<lt>http://www.perl.org>), and must not attempt "LE<lt>Some Site
+Name|scheme:...>" codes.  This restriction avoids many problems
+in parsing and rendering LE<lt>...> codes.
+
+=item *
+
+In a C<LE<lt>text|...E<gt>> code, text may contain formatting codes
+for formatting or for EE<lt>...> escapes, as in:
+
+  L<B<ummE<234>stuff>|...>
+
+For C<LE<lt>...E<gt>> codes without a "name|" part, only
+C<EE<lt>...E<gt>> and C<ZE<lt>E<gt>> codes may occur -- no
+other formatting codes.  That is, authors should not use
+"C<LE<lt>BE<lt>Foo::BarE<gt>E<gt>>".
+
+Note, however, that formatting codes and ZE<lt>>'s can occur in any
+and all parts of an LE<lt>...> (i.e., in I<name>, I<section>, I<text>,
+and I<url>).
+
+Authors must not nest LE<lt>...> codes.  For example, "LE<lt>The
+LE<lt>Foo::Bar> man page>" should be treated as an error.
+
+=item *
+
+Note that Pod authors may use formatting codes inside the "text"
+part of "LE<lt>text|name>" (and so on for LE<lt>text|/"sec">).
+
+In other words, this is valid:
+
+  Go read L<the docs on C<$.>|perlvar-copy/"$.">
+
+Some output formats that do allow rendering "LE<lt>...>" codes as
+hypertext, might not allow the link-text to be formatted; in
+that case, formatters will have to just ignore that formatting.
+
+=item *
+
+At time of writing, C<LE<lt>nameE<gt>> values are of two types:
+either the name of a Pod page like C<LE<lt>Foo::BarE<gt>> (which
+might be a real Perl module or program in an @INC / PATH
+directory, or a .pod file in those places); or the name of a UNIX
+man page, like C<LE<lt>crontab(5)E<gt>>.  In theory, C<LE<lt>chmodE<gt>>
+in ambiguous between a Pod page called "chmod", or the Unix man page
+"chmod" (in whatever man-section).  However, the presence of a string
+in parens, as in "crontab(5)", is sufficient to signal that what
+is being discussed is not a Pod page, and so is presumably a
+UNIX man page.  The distinction is of no importance to many
+Pod processors, but some processors that render to hypertext formats
+may need to distinguish them in order to know how to render a
+given C<LE<lt>fooE<gt>> code.
+
+=item *
+
+Previous versions of perlpod allowed for a C<LE<lt>sectionE<gt>> syntax
+(as in C<LE<lt>Object AttributesE<gt>>), which was not easily distinguishable
+from C<LE<lt>nameE<gt>> syntax.  This syntax is no longer in the
+specification, and has been replaced by the C<LE<lt>"section"E<gt>> syntax
+(where the quotes were formerly optional).  Pod parsers should tolerate
+the C<LE<lt>sectionE<gt>> syntax, for a while at least.  The suggested
+heuristic for distinguishing C<LE<lt>sectionE<gt>> from C<LE<lt>nameE<gt>>
+is that if it contains any whitespace, it's a I<section>.  Pod processors
+may warn about this being deprecated syntax.
+
+=back
+
+=head1 About =over...=back Regions
+
+"=over"..."=back" regions are used for various kinds of list-like
+structures.  (I use the term "region" here simply as a collective
+term for everything from the "=over" to the matching "=back".)
+
+=over
+
+=item *
+
+The non-zero numeric I<indentlevel> in "=over I<indentlevel>" ...
+"=back" is used for giving the formatter a clue as to how many
+"spaces" (ems, or roughly equivalent units) it should tab over,
+although many formatters will have to convert this to an absolute
+measurement that may not exactly match with the size of spaces (or M's)
+in the document's base font.  Other formatters may have to completely
+ignore the number.  The lack of any explicit I<indentlevel> parameter is
+equivalent to an I<indentlevel> value of 4.  Pod processors may
+complain if I<indentlevel> is present but is not a positive number
+matching C<m/\A(\d*\.)?\d+\z/>.
+
+=item *
+
+Authors of Pod formatters are reminded that "=over" ... "=back" may
+map to several different constructs in your output format.  For
+example, in converting Pod to (X)HTML, it can map to any of
+<ul>...</ul>, <ol>...</ol>, <dl>...</dl>, or
+<blockquote>...</blockquote>.  Similarly, "=item" can map to <li> or
+<dt>.
+
+=item *
+
+Each "=over" ... "=back" region should be one of the following:
+
+=over
+
+=item *
+
+An "=over" ... "=back" region containing only "=item *" commands,
+each followed by some number of ordinary/verbatim paragraphs, other
+nested "=over" ... "=back" regions, "=for..." paragraphs, and
+"=begin"..."=end" regions.
+
+(Pod processors must tolerate a bare "=item" as if it were "=item
+*".)  Whether "*" is rendered as a literal asterisk, an "o", or as
+some kind of real bullet character, is left up to the Pod formatter,
+and may depend on the level of nesting.
+
+=item *
+
+An "=over" ... "=back" region containing only
+C<m/\A=item\s+\d+\.?\s*\z/> paragraphs, each one (or each group of them)
+followed by some number of ordinary/verbatim paragraphs, other nested
+"=over" ... "=back" regions, "=for..." paragraphs, and/or
+"=begin"..."=end" codes.  Note that the numbers must start at 1
+in each section, and must proceed in order and without skipping
+numbers.
+
+(Pod processors must tolerate lines like "=item 1" as if they were
+"=item 1.", with the period.)
+
+=item *
+
+An "=over" ... "=back" region containing only "=item [text]"
+commands, each one (or each group of them) followed by some number of
+ordinary/verbatim paragraphs, other nested "=over" ... "=back"
+regions, or "=for..." paragraphs, and "=begin"..."=end" regions.
+
+The "=item [text]" paragraph should not match
+C<m/\A=item\s+\d+\.?\s*\z/> or C<m/\A=item\s+\*\s*\z/>, nor should it
+match just C<m/\A=item\s*\z/>.
+
+=item *
+
+An "=over" ... "=back" region containing no "=item" paragraphs at
+all, and containing only some number of 
+ordinary/verbatim paragraphs, and possibly also some nested "=over"
+... "=back" regions, "=for..." paragraphs, and "=begin"..."=end"
+regions.  Such an itemless "=over" ... "=back" region in Pod is
+equivalent in meaning to a "<blockquote>...</blockquote>" element in
+HTML.
+
+=back
+
+Note that with all the above cases, you can determine which type of
+"=over" ... "=back" you have, by examining the first (non-"=cut", 
+non-"=pod") Pod paragraph after the "=over" command.
+
+=item *
+
+Pod formatters I<must> tolerate arbitrarily large amounts of text
+in the "=item I<text...>" paragraph.  In practice, most such
+paragraphs are short, as in:
+
+  =item For cutting off our trade with all parts of the world
+
+But they may be arbitrarily long:
+
+  =item For transporting us beyond seas to be tried for pretended
+  offenses
+
+  =item He is at this time transporting large armies of foreign
+  mercenaries to complete the works of death, desolation and
+  tyranny, already begun with circumstances of cruelty and perfidy
+  scarcely paralleled in the most barbarous ages, and totally
+  unworthy the head of a civilized nation.
+
+=item *
+
+Pod processors should tolerate "=item *" / "=item I<number>" commands
+with no accompanying paragraph.  The middle item is an example:
+
+  =over
+
+  =item 1
+
+  Pick up dry cleaning.
+
+  =item 2
+
+  =item 3
+
+  Stop by the store.  Get Abba Zabas, Stoli, and cheap lawn chairs.
+
+  =back
+
+=item *
+
+No "=over" ... "=back" region can contain headings.  Processors may
+treat such a heading as an error.
+
+=item *
+
+Note that an "=over" ... "=back" region should have some
+content.  That is, authors should not have an empty region like this:
+
+  =over
+
+  =back
+
+Pod processors seeing such a contentless "=over" ... "=back" region,
+may ignore it, or may report it as an error.
+
+=item *
+
+Processors must tolerate an "=over" list that goes off the end of the
+document (i.e., which has no matching "=back"), but they may warn
+about such a list.
+
+=item *
+
+Authors of Pod formatters should note that this construct:
+
+  =item Neque
+
+  =item Porro
+
+  =item Quisquam Est
+
+  Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci 
+  velit, sed quia non numquam eius modi tempora incidunt ut
+  labore et dolore magnam aliquam quaerat voluptatem.
+
+  =item Ut Enim
+
+is semantically ambiguous, in a way that makes formatting decisions
+a bit difficult.  On the one hand, it could be mention of an item
+"Neque", mention of another item "Porro", and mention of another
+item "Quisquam Est", with just the last one requiring the explanatory
+paragraph "Qui dolorem ipsum quia dolor..."; and then an item
+"Ut Enim".  In that case, you'd want to format it like so:
+
+  Neque
+
+  Porro
+
+  Quisquam Est
+    Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
+    velit, sed quia non numquam eius modi tempora incidunt ut
+    labore et dolore magnam aliquam quaerat voluptatem.
+
+  Ut Enim
+
+But it could equally well be a discussion of three (related or equivalent)
+items, "Neque", "Porro", and "Quisquam Est", followed by a paragraph
+explaining them all, and then a new item "Ut Enim".  In that case, you'd
+probably want to format it like so:
+
+  Neque
+  Porro
+  Quisquam Est
+    Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
+    velit, sed quia non numquam eius modi tempora incidunt ut
+    labore et dolore magnam aliquam quaerat voluptatem.
+
+  Ut Enim
+
+But (for the foreseeable future), Pod does not provide any way for Pod
+authors to distinguish which grouping is meant by the above
+"=item"-cluster structure.  So formatters should format it like so:
+
+  Neque
+
+  Porro
+
+  Quisquam Est
+
+    Qui dolorem ipsum quia dolor sit amet, consectetur, adipisci
+    velit, sed quia non numquam eius modi tempora incidunt ut
+    labore et dolore magnam aliquam quaerat voluptatem.
+
+  Ut Enim
+
+That is, there should be (at least roughly) equal spacing between
+items as between paragraphs (although that spacing may well be less
+than the full height of a line of text).  This leaves it to the reader
+to use (con)textual cues to figure out whether the "Qui dolorem
+ipsum..." paragraph applies to the "Quisquam Est" item or to all three
+items "Neque", "Porro", and "Quisquam Est".  While not an ideal
+situation, this is preferable to providing formatting cues that may
+be actually contrary to the author's intent.
+
+=back
+
+
+
+=head1 About Data Paragraphs and "=begin/=end" Regions
+
+Data paragraphs are typically used for inlining non-Pod data that is
+to be used (typically passed through) when rendering the document to
+a specific format:
+
+  =begin rtf
+
+  \par{\pard\qr\sa4500{\i Printed\~\chdate\~\chtime}\par}
+
+  =end rtf
+
+The exact same effect could, incidentally, be achieved with a single
+"=for" paragraph:
+
+  =for rtf \par{\pard\qr\sa4500{\i Printed\~\chdate\~\chtime}\par}
+
+(Although that is not formally a data paragraph, it has the same
+meaning as one, and Pod parsers may parse it as one.)
+
+Another example of a data paragraph:
+
+  =begin html
+
+  I like <em>PIE</em>!
+
+  <hr>Especially pecan pie!
+
+  =end html
+
+If these were ordinary paragraphs, the Pod parser would try to
+expand the "EE<lt>/em>" (in the first paragraph) as a formatting
+code, just like "EE<lt>lt>" or "EE<lt>eacute>".  But since this
+is in a "=begin I<identifier>"..."=end I<identifier>" region I<and>
+the identifier "html" doesn't begin have a ":" prefix, the contents
+of this region are stored as data paragraphs, instead of being
+processed as ordinary paragraphs (or if they began with a spaces
+and/or tabs, as verbatim paragraphs).
+
+As a further example: At time of writing, no "biblio" identifier is
+supported, but suppose some processor were written to recognize it as
+a way of (say) denoting a bibliographic reference (necessarily
+containing formatting codes in ordinary paragraphs).  The fact that
+"biblio" paragraphs were meant for ordinary processing would be
+indicated by prefacing each "biblio" identifier with a colon:
+
+  =begin :biblio
+
+  Wirth, Niklaus.  1976.  I<Algorithms + Data Structures =
+  Programs.>  Prentice-Hall, Englewood Cliffs, NJ.
+
+  =end :biblio
+
+This would signal to the parser that paragraphs in this begin...end
+region are subject to normal handling as ordinary/verbatim paragraphs
+(while still tagged as meant only for processors that understand the
+"biblio" identifier).  The same effect could be had with:
+
+  =for :biblio
+  Wirth, Niklaus.  1976.  I<Algorithms + Data Structures =
+  Programs.>  Prentice-Hall, Englewood Cliffs, NJ.
+
+The ":" on these identifiers means simply "process this stuff
+normally, even though the result will be for some special target".
+I suggest that parser APIs report "biblio" as the target identifier,
+but also report that it had a ":" prefix.  (And similarly, with the
+above "html", report "html" as the target identifier, and note the
+I<lack> of a ":" prefix.)
+
+Note that a "=begin I<identifier>"..."=end I<identifier>" region where
+I<identifier> begins with a colon, I<can> contain commands.  For example:
+
+  =begin :biblio
+
+  Wirth's classic is available in several editions, including:
+
+  =for comment
+   hm, check abebooks.com for how much used copies cost.
+
+  =over
+
+  =item
+
+  Wirth, Niklaus.  1975.  I<Algorithmen und Datenstrukturen.>
+  Teubner, Stuttgart.  [Yes, it's in German.]
+
+  =item
+
+  Wirth, Niklaus.  1976.  I<Algorithms + Data Structures =
+  Programs.>  Prentice-Hall, Englewood Cliffs, NJ.
+
+  =back
+
+  =end :biblio
+
+Note, however, a "=begin I<identifier>"..."=end I<identifier>"
+region where I<identifier> does I<not> begin with a colon, should not
+directly contain "=head1" ... "=head4" commands, nor "=over", nor "=back",
+nor "=item".  For example, this may be considered invalid:
+
+  =begin somedata
+
+  This is a data paragraph.
+
+  =head1 Don't do this!
+
+  This is a data paragraph too.
+
+  =end somedata
+
+A Pod processor may signal that the above (specifically the "=head1"
+paragraph) is an error.  Note, however, that the following should
+I<not> be treated as an error:
+
+  =begin somedata
+
+  This is a data paragraph.
+
+  =cut
+
+  # Yup, this isn't Pod anymore.
+  sub excl { (rand() > .5) ? "hoo!" : "hah!" }
+
+  =pod
+
+  This is a data paragraph too.
+
+  =end somedata
+
+And this too is valid:
+
+  =begin someformat
+
+  This is a data paragraph.
+
+    And this is a data paragraph.
+
+  =begin someotherformat
+
+  This is a data paragraph too.
+
+    And this is a data paragraph too.
+
+  =begin :yetanotherformat
+
+  =head2 This is a command paragraph!
+
+  This is an ordinary paragraph!
+
+    And this is a verbatim paragraph!
+
+  =end :yetanotherformat
+
+  =end someotherformat
+
+  Another data paragraph!
+
+  =end someformat
+
+The contents of the above "=begin :yetanotherformat" ...
+"=end :yetanotherformat" region I<aren't> data paragraphs, because
+the immediately containing region's identifier (":yetanotherformat")
+begins with a colon.  In practice, most regions that contain
+data paragraphs will contain I<only> data paragraphs; however, 
+the above nesting is syntactically valid as Pod, even if it is
+rare.  However, the handlers for some formats, like "html",
+will accept only data paragraphs, not nested regions; and they may
+complain if they see (targeted for them) nested regions, or commands,
+other than "=end", "=pod", and "=cut".
+
+Also consider this valid structure:
+
+  =begin :biblio
+
+  Wirth's classic is available in several editions, including:
+
+  =over
+
+  =item
+
+  Wirth, Niklaus.  1975.  I<Algorithmen und Datenstrukturen.>
+  Teubner, Stuttgart.  [Yes, it's in German.]
+
+  =item
+
+  Wirth, Niklaus.  1976.  I<Algorithms + Data Structures =
+  Programs.>  Prentice-Hall, Englewood Cliffs, NJ.
+
+  =back
+
+  Buy buy buy!
+
+  =begin html
+
+  <img src='wirth_spokesmodeling_book.png'>
+
+  <hr>
+
+  =end html
+
+  Now now now!
+
+  =end :biblio
+
+There, the "=begin html"..."=end html" region is nested inside
+the larger "=begin :biblio"..."=end :biblio" region.  Note that the
+content of the "=begin html"..."=end html" region is data
+paragraph(s), because the immediately containing region's identifier
+("html") I<doesn't> begin with a colon.
+
+Pod parsers, when processing a series of data paragraphs one
+after another (within a single region), should consider them to
+be one large data paragraph that happens to contain blank lines.  So
+the content of the above "=begin html"..."=end html" I<may> be stored
+as two data paragraphs (one consisting of
+"<img src='wirth_spokesmodeling_book.png'>\n"
+and another consisting of "<hr>\n"), but I<should> be stored as
+a single data paragraph (consisting of 
+"<img src='wirth_spokesmodeling_book.png'>\n\n<hr>\n").
+
+Pod processors should tolerate empty
+"=begin I<something>"..."=end I<something>" regions,
+empty "=begin :I<something>"..."=end :I<something>" regions, and
+contentless "=for I<something>" and "=for :I<something>"
+paragraphs.  I.e., these should be tolerated:
+
+  =for html
+
+  =begin html
+
+  =end html
+
+  =begin :biblio
+
+  =end :biblio
+
+Incidentally, note that there's no easy way to express a data
+paragraph starting with something that looks like a command.  Consider:
+
+  =begin stuff
+
+  =shazbot
+
+  =end stuff
+
+There, "=shazbot" will be parsed as a Pod command "shazbot", not as a data
+paragraph "=shazbot\n".  However, you can express a data paragraph consisting
+of "=shazbot\n" using this code:
+
+  =for stuff =shazbot
+
+The situation where this is necessary, is presumably quite rare.
+
+Note that =end commands must match the currently open =begin command.  That
+is, they must properly nest.  For example, this is valid:
+
+  =begin outer
+
+  X
+
+  =begin inner
+
+  Y
+
+  =end inner
+
+  Z
+
+  =end outer
+
+while this is invalid:
+
+  =begin outer
+
+  X
+
+  =begin inner
+
+  Y
+
+  =end outer
+
+  Z
+
+  =end inner
+
+This latter is improper because when the "=end outer" command is seen, the
+currently open region has the formatname "inner", not "outer".  (It just
+happens that "outer" is the format name of a higher-up region.)  This is
+an error.  Processors must by default report this as an error, and may halt
+processing the document containing that error.  A corollary of this is that
+regions cannot "overlap" -- i.e., the latter block above does not represent
+a region called "outer" which contains X and Y, overlapping a region called
+"inner" which contains Y and Z.  But because it is invalid (as all
+apparently overlapping regions would be), it doesn't represent that, or
+anything at all.
+
+Similarly, this is invalid:
+
+  =begin thing
+
+  =end hting
+
+This is an error because the region is opened by "thing", and the "=end"
+tries to close "hting" [sic].
+
+This is also invalid:
+
+  =begin thing
+
+  =end
+
+This is invalid because every "=end" command must have a formatname
+parameter.
+
+=head1 SEE ALSO
+
+L<perlpod>, L<perlsyn/"PODs: Embedded Documentation">,
+L<podchecker>
+
+=head1 AUTHOR
+
+Sean M. Burke
+
+=cut
+
+

Added: vendor/perl/dist/ext/Pod-Html/testdir/perlvar-copy.pod
===================================================================
--- vendor/perl/dist/ext/Pod-Html/testdir/perlvar-copy.pod	                        (rev 0)
+++ vendor/perl/dist/ext/Pod-Html/testdir/perlvar-copy.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1737 @@
+=head1 NAME
+
+perlvarcopy - Perl predefined variables
+
+=head1 DESCRIPTION
+
+=head2 Predefined Names
+
+The following names have special meaning to Perl.  Most 
+punctuation names have reasonable mnemonics, or analogs in the
+shells.  Nevertheless, if you wish to use long variable names,
+you need only say
+
+    use English;
+
+at the top of your program. This aliases all the short names to the long
+names in the current package. Some even have medium names, generally
+borrowed from B<awk>. In general, it's best to use the
+
+    use English '-no_match_vars';
+
+invocation if you don't need $PREMATCH, $MATCH, or $POSTMATCH, as it avoids
+a certain performance hit with the use of regular expressions. See
+L<English>.
+
+Variables that depend on the currently selected filehandle may be set by
+calling an appropriate object method on the IO::Handle object, although
+this is less efficient than using the regular built-in variables. (Summary
+lines below for this contain the word HANDLE.) First you must say
+
+    use IO::Handle;
+
+after which you may use either
+
+    method HANDLE EXPR
+
+or more safely,
+
+    HANDLE->method(EXPR)
+
+Each method returns the old value of the IO::Handle attribute.
+The methods each take an optional EXPR, which, if supplied, specifies the
+new value for the IO::Handle attribute in question.  If not supplied,
+most methods do nothing to the current value--except for
+autoflush(), which will assume a 1 for you, just to be different.
+
+Because loading in the IO::Handle class is an expensive operation, you should
+learn how to use the regular built-in variables.
+
+A few of these variables are considered "read-only".  This means that if
+you try to assign to this variable, either directly or indirectly through
+a reference, you'll raise a run-time exception.
+
+You should be very careful when modifying the default values of most
+special variables described in this document. In most cases you want
+to localize these variables before changing them, since if you don't,
+the change may affect other modules which rely on the default values
+of the special variables that you have changed. This is one of the
+correct ways to read the whole file at once:
+
+    open my $fh, "<", "foo" or die $!;
+    local $/; # enable localized slurp mode
+    my $content = <$fh>;
+    close $fh;
+
+But the following code is quite bad:
+
+    open my $fh, "<", "foo" or die $!;
+    undef $/; # enable slurp mode
+    my $content = <$fh>;
+    close $fh;
+
+since some other module, may want to read data from some file in the
+default "line mode", so if the code we have just presented has been
+executed, the global value of C<$/> is now changed for any other code
+running inside the same Perl interpreter.
+
+Usually when a variable is localized you want to make sure that this
+change affects the shortest scope possible. So unless you are already
+inside some short C<{}> block, you should create one yourself. For
+example:
+
+    my $content = '';
+    open my $fh, "<", "foo" or die $!;
+    {
+        local $/;
+        $content = <$fh>;
+    }
+    close $fh;
+
+Here is an example of how your own code can go broken:
+
+    for (1..5){
+        nasty_break();
+        print "$_ ";
+    }
+    sub nasty_break {
+        $_ = 5;
+        # do something with $_
+    }
+
+You probably expect this code to print:
+
+    1 2 3 4 5
+
+but instead you get:
+
+    5 5 5 5 5
+
+Why? Because nasty_break() modifies C<$_> without localizing it
+first. The fix is to add local():
+
+        local $_ = 5;
+
+It's easy to notice the problem in such a short example, but in more
+complicated code you are looking for trouble if you don't localize
+changes to the special variables.
+
+The following list is ordered by scalar variables first, then the
+arrays, then the hashes.
+
+=over 8
+
+=item $ARG
+
+=item $_
+X<$_> X<$ARG>
+
+The default input and pattern-searching space.  The following pairs are
+equivalent:
+
+    while (<>) {...}	# equivalent only in while!
+    while (defined($_ = <>)) {...}
+
+    /^Subject:/
+    $_ =~ /^Subject:/
+
+    tr/a-z/A-Z/
+    $_ =~ tr/a-z/A-Z/
+
+    chomp
+    chomp($_)
+
+Here are the places where Perl will assume $_ even if you
+don't use it:
+
+=over 3
+
+=item *
+
+The following functions:
+
+abs, alarm, chomp, chop, chr, chroot, cos, defined, eval, exp, glob,
+hex, int, lc, lcfirst, length, log, lstat, mkdir, oct, ord, pos, print,
+quotemeta, readlink, readpipe, ref, require, reverse (in scalar context only),
+rmdir, sin, split (on its second argument), sqrt, stat, study, uc, ucfirst, 
+unlink, unpack.
+
+=item *
+
+All file tests (C<-f>, C<-d>) except for C<-t>, which defaults to STDIN.
+See L<perlfunc/-X>
+
+
+=item *
+
+The pattern matching operations C<m//>, C<s///> and C<tr///> (aka C<y///>)
+when used without an C<=~> operator.
+
+=item *
+
+The default iterator variable in a C<foreach> loop if no other
+variable is supplied.
+
+=item *
+
+The implicit iterator variable in the grep() and map() functions.
+
+=item *
+
+The implicit variable of given().
+
+=item *
+
+The default place to put an input record when a C<< <FH> >>
+operation's result is tested by itself as the sole criterion of a C<while>
+test.  Outside a C<while> test, this will not happen.
+
+=back
+
+As C<$_> is a global variable, this may lead in some cases to unwanted
+side-effects.  As of perl 5.9.1, you can now use a lexical version of
+C<$_> by declaring it in a file or in a block with C<my>.  Moreover,
+declaring C<our $_> restores the global C<$_> in the current scope.
+
+(Mnemonic: underline is understood in certain operations.)
+
+=back
+
+=over 8
+
+=item $a
+
+=item $b
+X<$a> X<$b>
+
+Special package variables when using sort(), see L<perlfunc/sort>.
+Because of this specialness $a and $b don't need to be declared
+(using use vars, or our()) even when using the C<strict 'vars'> pragma.
+Don't lexicalize them with C<my $a> or C<my $b> if you want to be
+able to use them in the sort() comparison block or function.
+
+=back
+
+=over 8
+
+=item $<I<digits>>
+X<$1> X<$2> X<$3>
+
+Contains the subpattern from the corresponding set of capturing
+parentheses from the last pattern match, not counting patterns
+matched in nested blocks that have been exited already.  (Mnemonic:
+like \digits.)  These variables are all read-only and dynamically
+scoped to the current BLOCK.
+
+=item $MATCH
+
+=item $&
+X<$&> X<$MATCH>
+
+The string matched by the last successful pattern match (not counting
+any matches hidden within a BLOCK or eval() enclosed by the current
+BLOCK).  (Mnemonic: like & in some editors.)  This variable is read-only
+and dynamically scoped to the current BLOCK.
+
+The use of this variable anywhere in a program imposes a considerable
+performance penalty on all regular expression matches.  See L</BUGS>.
+
+See L</@-> for a replacement.
+
+=item ${^MATCH}
+X<${^MATCH}>
+
+This is similar to C<$&> (C<$MATCH>) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
+=item $PREMATCH
+
+=item $`
+X<$`> X<$PREMATCH>
+
+The string preceding whatever was matched by the last successful
+pattern match (not counting any matches hidden within a BLOCK or eval
+enclosed by the current BLOCK).  (Mnemonic: C<`> often precedes a quoted
+string.)  This variable is read-only.
+
+The use of this variable anywhere in a program imposes a considerable
+performance penalty on all regular expression matches.  See L</BUGS>.
+
+See L</@-> for a replacement.
+
+=item ${^PREMATCH}
+X<${^PREMATCH}>
+
+This is similar to C<$`> ($PREMATCH) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
+=item $POSTMATCH
+
+=item $'
+X<$'> X<$POSTMATCH>
+
+The string following whatever was matched by the last successful
+pattern match (not counting any matches hidden within a BLOCK or eval()
+enclosed by the current BLOCK).  (Mnemonic: C<'> often follows a quoted
+string.)  Example:
+
+    local $_ = 'abcdefghi';
+    /def/;
+    print "$`:$&:$'\n";  	# prints abc:def:ghi
+
+This variable is read-only and dynamically scoped to the current BLOCK.
+
+The use of this variable anywhere in a program imposes a considerable
+performance penalty on all regular expression matches.  See L</BUGS>.
+
+See L</@-> for a replacement.
+
+=item ${^POSTMATCH}
+X<${^POSTMATCH}>
+
+This is similar to C<$'> (C<$POSTMATCH>) except that it does not incur the
+performance penalty associated with that variable, and is only guaranteed
+to return a defined value when the pattern was compiled or executed with
+the C</p> modifier.
+
+=item $LAST_PAREN_MATCH
+
+=item $+
+X<$+> X<$LAST_PAREN_MATCH>
+
+The text matched by the last bracket of the last successful search pattern.
+This is useful if you don't know which one of a set of alternative patterns
+matched. For example:
+
+    /Version: (.*)|Revision: (.*)/ && ($rev = $+);
+
+(Mnemonic: be positive and forward looking.)
+This variable is read-only and dynamically scoped to the current BLOCK.
+
+=item $LAST_SUBMATCH_RESULT
+
+=item $^N
+X<$^N>
+
+The text matched by the used group most-recently closed (i.e. the group
+with the rightmost closing parenthesis) of the last successful search
+pattern.  (Mnemonic: the (possibly) Nested parenthesis that most
+recently closed.)
+
+This is primarily used inside C<(?{...})> blocks for examining text
+recently matched. For example, to effectively capture text to a variable
+(in addition to C<$1>, C<$2>, etc.), replace C<(...)> with
+
+     (?:(...)(?{ $var = $^N }))
+
+By setting and then using C<$var> in this way relieves you from having to
+worry about exactly which numbered set of parentheses they are.
+
+This variable is dynamically scoped to the current BLOCK.
+
+=item @LAST_MATCH_END
+
+=item @+
+X<@+> X<@LAST_MATCH_END>
+
+This array holds the offsets of the ends of the last successful
+submatches in the currently active dynamic scope.  C<$+[0]> is
+the offset into the string of the end of the entire match.  This
+is the same value as what the C<pos> function returns when called
+on the variable that was matched against.  The I<n>th element
+of this array holds the offset of the I<n>th submatch, so
+C<$+[1]> is the offset past where $1 ends, C<$+[2]> the offset
+past where $2 ends, and so on.  You can use C<$#+> to determine
+how many subgroups were in the last successful match.  See the
+examples given for the C<@-> variable.
+
+=item %LAST_PAREN_MATCH
+
+=item %+
+X<%+>
+
+Similar to C<@+>, the C<%+> hash allows access to the named capture
+buffers, should they exist, in the last successful match in the
+currently active dynamic scope.
+
+For example, C<$+{foo}> is equivalent to C<$1> after the following match:
+
+  'foo' =~ /(?<foo>foo)/;
+
+The keys of the C<%+> hash list only the names of buffers that have
+captured (and that are thus associated to defined values).
+
+The underlying behaviour of C<%+> is provided by the
+L<Tie::Hash::NamedCapture> module.
+
+B<Note:> C<%-> and C<%+> are tied views into a common internal hash
+associated with the last successful regular expression. Therefore mixing
+iterative access to them via C<each> may have unpredictable results.
+Likewise, if the last successful match changes, then the results may be
+surprising.
+
+=item HANDLE->input_line_number(EXPR)
+
+=item $INPUT_LINE_NUMBER
+
+=item $NR
+
+=item $.
+X<$.> X<$NR> X<$INPUT_LINE_NUMBER> X<line number>
+
+Current line number for the last filehandle accessed.
+
+Each filehandle in Perl counts the number of lines that have been read
+from it.  (Depending on the value of C<$/>, Perl's idea of what
+constitutes a line may not match yours.)  When a line is read from a
+filehandle (via readline() or C<< <> >>), or when tell() or seek() is
+called on it, C<$.> becomes an alias to the line counter for that
+filehandle.
+
+You can adjust the counter by assigning to C<$.>, but this will not
+actually move the seek pointer.  I<Localizing C<$.> will not localize
+the filehandle's line count>.  Instead, it will localize perl's notion
+of which filehandle C<$.> is currently aliased to.
+
+C<$.> is reset when the filehandle is closed, but B<not> when an open
+filehandle is reopened without an intervening close().  For more
+details, see L<perlop/"IE<sol>O Operators">.  Because C<< <> >> never does
+an explicit close, line numbers increase across ARGV files (but see
+examples in L<perlfunc/eof>).
+
+You can also use C<< HANDLE->input_line_number(EXPR) >> to access the
+line counter for a given filehandle without having to worry about
+which handle you last accessed.
+
+(Mnemonic: many programs use "." to mean the current line number.)
+
+=item IO::Handle->input_record_separator(EXPR)
+
+=item $INPUT_RECORD_SEPARATOR
+
+=item $RS
+
+=item $/
+X<$/> X<$RS> X<$INPUT_RECORD_SEPARATOR>
+
+The input record separator, newline by default.  This 
+influences Perl's idea of what a "line" is.  Works like B<awk>'s RS
+variable, including treating empty lines as a terminator if set to
+the null string.  (An empty line cannot contain any spaces
+or tabs.)  You may set it to a multi-character string to match a
+multi-character terminator, or to C<undef> to read through the end
+of file.  Setting it to C<"\n\n"> means something slightly
+different than setting to C<"">, if the file contains consecutive
+empty lines.  Setting to C<""> will treat two or more consecutive
+empty lines as a single empty line.  Setting to C<"\n\n"> will
+blindly assume that the next input character belongs to the next
+paragraph, even if it's a newline.  (Mnemonic: / delimits
+line boundaries when quoting poetry.)
+
+    local $/;           # enable "slurp" mode
+    local $_ = <FH>;    # whole file now here
+    s/\n[ \t]+/ /g;
+
+Remember: the value of C<$/> is a string, not a regex.  B<awk> has to be
+better for something. :-)
+
+Setting C<$/> to a reference to an integer, scalar containing an integer, or
+scalar that's convertible to an integer will attempt to read records
+instead of lines, with the maximum record size being the referenced
+integer.  So this:
+
+    local $/ = \32768; # or \"32768", or \$var_containing_32768
+    open my $fh, "<", $myfile or die $!;
+    local $_ = <$fh>;
+
+will read a record of no more than 32768 bytes from FILE.  If you're
+not reading from a record-oriented file (or your OS doesn't have
+record-oriented files), then you'll likely get a full chunk of data
+with every read.  If a record is larger than the record size you've
+set, you'll get the record back in pieces.  Trying to set the record
+size to zero or less will cause reading in the (rest of the) whole file.
+
+On VMS, record reads are done with the equivalent of C<sysread>,
+so it's best not to mix record and non-record reads on the same
+file.  (This is unlikely to be a problem, because any file you'd
+want to read in record mode is probably unusable in line mode.)
+Non-VMS systems do normal I/O, so it's safe to mix record and
+non-record reads of a file.
+
+See also L<perlport/"Newlines">.  Also see C<$.>.
+
+=item HANDLE->autoflush(EXPR)
+
+=item $OUTPUT_AUTOFLUSH
+
+=item $|
+X<$|> X<autoflush> X<flush> X<$OUTPUT_AUTOFLUSH>
+
+If set to nonzero, forces a flush right away and after every write
+or print on the currently selected output channel.  Default is 0
+(regardless of whether the channel is really buffered by the
+system or not; C<$|> tells you only whether you've asked Perl
+explicitly to flush after each write).  STDOUT will
+typically be line buffered if output is to the terminal and block
+buffered otherwise.  Setting this variable is useful primarily when
+you are outputting to a pipe or socket, such as when you are running
+a Perl program under B<rsh> and want to see the output as it's
+happening.  This has no effect on input buffering.  See L<perlfunc/getc>
+for that.  See L<perlfunc/select> on how to select the output channel.
+See also L<IO::Handle>. (Mnemonic: when you want your pipes to be piping hot.)
+
+=item IO::Handle->output_field_separator EXPR
+
+=item $OUTPUT_FIELD_SEPARATOR
+
+=item $OFS
+
+=item $,
+X<$,> X<$OFS> X<$OUTPUT_FIELD_SEPARATOR>
+
+The output field separator for the print operator.  If defined, this
+value is printed between each of print's arguments.  Default is C<undef>.
+(Mnemonic: what is printed when there is a "," in your print statement.)
+
+=item IO::Handle->output_record_separator EXPR
+
+=item $OUTPUT_RECORD_SEPARATOR
+
+=item $ORS
+
+=item $\
+X<$\> X<$ORS> X<$OUTPUT_RECORD_SEPARATOR>
+
+The output record separator for the print operator.  If defined, this
+value is printed after the last of print's arguments.  Default is C<undef>.
+(Mnemonic: you set C<$\> instead of adding "\n" at the end of the print.
+Also, it's just like C<$/>, but it's what you get "back" from Perl.)
+
+=item $LIST_SEPARATOR
+
+=item $"
+X<$"> X<$LIST_SEPARATOR>
+
+This is like C<$,> except that it applies to array and slice values
+interpolated into a double-quoted string (or similar interpreted
+string).  Default is a space.  (Mnemonic: obvious, I think.)
+
+=item $SUBSCRIPT_SEPARATOR
+
+=item $SUBSEP
+
+=item $;
+X<$;> X<$SUBSEP> X<SUBSCRIPT_SEPARATOR>
+
+The subscript separator for multidimensional array emulation.  If you
+refer to a hash element as
+
+    $foo{$a,$b,$c}
+
+it really means
+
+    $foo{join($;, $a, $b, $c)}
+
+But don't put
+
+    @foo{$a,$b,$c}	# a slice--note the @
+
+which means
+
+    ($foo{$a},$foo{$b},$foo{$c})
+
+Default is "\034", the same as SUBSEP in B<awk>.  If your
+keys contain binary data there might not be any safe value for C<$;>.
+(Mnemonic: comma (the syntactic subscript separator) is a
+semi-semicolon.  Yeah, I know, it's pretty lame, but C<$,> is already
+taken for something more important.)
+
+Consider using "real" multidimensional arrays as described
+in L<perllol>.
+
+=item HANDLE->format_page_number(EXPR)
+
+=item $FORMAT_PAGE_NUMBER
+
+=item $%
+X<$%> X<$FORMAT_PAGE_NUMBER>
+
+The current page number of the currently selected output channel.
+Used with formats.
+(Mnemonic: % is page number in B<nroff>.)
+
+=item HANDLE->format_lines_per_page(EXPR)
+
+=item $FORMAT_LINES_PER_PAGE
+
+=item $=
+X<$=> X<$FORMAT_LINES_PER_PAGE>
+
+The current page length (printable lines) of the currently selected
+output channel.  Default is 60.  
+Used with formats.
+(Mnemonic: = has horizontal lines.)
+
+=item HANDLE->format_lines_left(EXPR)
+
+=item $FORMAT_LINES_LEFT
+
+=item $-
+X<$-> X<$FORMAT_LINES_LEFT>
+
+The number of lines left on the page of the currently selected output
+channel.  
+Used with formats.
+(Mnemonic: lines_on_page - lines_printed.)
+
+=item @LAST_MATCH_START
+
+=item @-
+X<@-> X<@LAST_MATCH_START>
+
+$-[0] is the offset of the start of the last successful match.
+C<$-[>I<n>C<]> is the offset of the start of the substring matched by
+I<n>-th subpattern, or undef if the subpattern did not match.
+
+Thus after a match against $_, $& coincides with C<substr $_, $-[0],
+$+[0] - $-[0]>.  Similarly, $I<n> coincides with C<substr $_, $-[n],
+$+[n] - $-[n]> if C<$-[n]> is defined, and $+ coincides with
+C<substr $_, $-[$#-], $+[$#-] - $-[$#-]>.  One can use C<$#-> to find the last
+matched subgroup in the last successful match.  Contrast with
+C<$#+>, the number of subgroups in the regular expression.  Compare
+with C<@+>.
+
+This array holds the offsets of the beginnings of the last
+successful submatches in the currently active dynamic scope.
+C<$-[0]> is the offset into the string of the beginning of the
+entire match.  The I<n>th element of this array holds the offset
+of the I<n>th submatch, so C<$-[1]> is the offset where $1
+begins, C<$-[2]> the offset where $2 begins, and so on.
+
+After a match against some variable $var:
+
+=over 5
+
+=item C<$`> is the same as C<substr($var, 0, $-[0])>
+
+=item C<$&> is the same as C<substr($var, $-[0], $+[0] - $-[0])>
+
+=item C<$'> is the same as C<substr($var, $+[0])>
+
+=item C<$1> is the same as C<substr($var, $-[1], $+[1] - $-[1])>  
+
+=item C<$2> is the same as C<substr($var, $-[2], $+[2] - $-[2])>
+
+=item C<$3> is the same as C<substr($var, $-[3], $+[3] - $-[3])>
+
+=back
+
+=item %-
+X<%->
+
+Similar to C<%+>, this variable allows access to the named capture buffers
+in the last successful match in the currently active dynamic scope. To
+each capture buffer name found in the regular expression, it associates a
+reference to an array containing the list of values captured by all
+buffers with that name (should there be several of them), in the order
+where they appear.
+
+Here's an example:
+
+    if ('1234' =~ /(?<A>1)(?<B>2)(?<A>3)(?<B>4)/) {
+        foreach my $bufname (sort keys %-) {
+            my $ary = $-{$bufname};
+            foreach my $idx (0..$#$ary) {
+                print "\$-{$bufname}[$idx] : ",
+                      (defined($ary->[$idx]) ? "'$ary->[$idx]'" : "undef"),
+                      "\n";
+            }
+        }
+    }
+
+would print out:
+
+    $-{A}[0] : '1'
+    $-{A}[1] : '3'
+    $-{B}[0] : '2'
+    $-{B}[1] : '4'
+
+The keys of the C<%-> hash correspond to all buffer names found in
+the regular expression.
+
+The behaviour of C<%-> is implemented via the
+L<Tie::Hash::NamedCapture> module.
+
+B<Note:> C<%-> and C<%+> are tied views into a common internal hash
+associated with the last successful regular expression. Therefore mixing
+iterative access to them via C<each> may have unpredictable results.
+Likewise, if the last successful match changes, then the results may be
+surprising.
+
+=item HANDLE->format_name(EXPR)
+
+=item $FORMAT_NAME
+
+=item $~
+X<$~> X<$FORMAT_NAME>
+
+The name of the current report format for the currently selected output
+channel.  Default is the name of the filehandle.  (Mnemonic: brother to
+C<$^>.)
+
+=item HANDLE->format_top_name(EXPR)
+
+=item $FORMAT_TOP_NAME
+
+=item $^
+X<$^> X<$FORMAT_TOP_NAME>
+
+The name of the current top-of-page format for the currently selected
+output channel.  Default is the name of the filehandle with _TOP
+appended.  (Mnemonic: points to top of page.)
+
+=item IO::Handle->format_line_break_characters EXPR
+
+=item $FORMAT_LINE_BREAK_CHARACTERS
+
+=item $:
+X<$:> X<FORMAT_LINE_BREAK_CHARACTERS>
+
+The current set of characters after which a string may be broken to
+fill continuation fields (starting with ^) in a format.  Default is
+S<" \n-">, to break on whitespace or hyphens.  (Mnemonic: a "colon" in
+poetry is a part of a line.)
+
+=item IO::Handle->format_formfeed EXPR
+
+=item $FORMAT_FORMFEED
+
+=item $^L
+X<$^L> X<$FORMAT_FORMFEED>
+
+What formats output as a form feed.  Default is \f.
+
+=item $ACCUMULATOR
+
+=item $^A
+X<$^A> X<$ACCUMULATOR>
+
+The current value of the write() accumulator for format() lines.  A format
+contains formline() calls that put their result into C<$^A>.  After
+calling its format, write() prints out the contents of C<$^A> and empties.
+So you never really see the contents of C<$^A> unless you call
+formline() yourself and then look at it.  See L<perlform> and
+L<formline|perlfunc/formline PICTURE,LIST>.
+
+=item $CHILD_ERROR
+
+=item $?
+X<$?> X<$CHILD_ERROR>
+
+The status returned by the last pipe close, backtick (C<``>) command,
+successful call to wait() or waitpid(), or from the system()
+operator.  This is just the 16-bit status word returned by the
+traditional Unix wait() system call (or else is made up to look like it).  Thus, the
+exit value of the subprocess is really (C<<< $? >> 8 >>>), and
+C<$? & 127> gives which signal, if any, the process died from, and
+C<$? & 128> reports whether there was a core dump.  (Mnemonic:
+similar to B<sh> and B<ksh>.)
+
+Additionally, if the C<h_errno> variable is supported in C, its value
+is returned via $? if any C<gethost*()> function fails.
+
+If you have installed a signal handler for C<SIGCHLD>, the
+value of C<$?> will usually be wrong outside that handler.
+
+Inside an C<END> subroutine C<$?> contains the value that is going to be
+given to C<exit()>.  You can modify C<$?> in an C<END> subroutine to
+change the exit status of your program.  For example:
+
+    END {
+	$? = 1 if $? == 255;  # die would make it 255
+    } 
+
+Under VMS, the pragma C<use vmsish 'status'> makes C<$?> reflect the
+actual VMS exit status, instead of the default emulation of POSIX
+status; see L<perlvms/$?> for details.
+
+Also see L<Error Indicators>.
+
+=item ${^CHILD_ERROR_NATIVE}
+X<$^CHILD_ERROR_NATIVE>
+
+The native status returned by the last pipe close, backtick (C<``>)
+command, successful call to wait() or waitpid(), or from the system()
+operator.  On POSIX-like systems this value can be decoded with the
+WIFEXITED, WEXITSTATUS, WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG
+and WIFCONTINUED functions provided by the L<POSIX> module.
+
+Under VMS this reflects the actual VMS exit status; i.e. it is the same
+as $? when the pragma C<use vmsish 'status'> is in effect.
+
+=item ${^ENCODING}
+X<$^ENCODING>
+
+The I<object reference> to the Encode object that is used to convert
+the source code to Unicode.  Thanks to this variable your perl script
+does not have to be written in UTF-8.  Default is I<undef>.  The direct
+manipulation of this variable is highly discouraged.
+
+=item $OS_ERROR
+
+=item $ERRNO
+
+=item $!
+X<$!> X<$ERRNO> X<$OS_ERROR>
+
+If used numerically, yields the current value of the C C<errno>
+variable, or in other words, if a system or library call fails, it
+sets this variable.  This means that the value of C<$!> is meaningful
+only I<immediately> after a B<failure>:
+
+    if (open my $fh, "<", $filename) {
+	# Here $! is meaningless.
+	...
+    } else {
+	# ONLY here is $! meaningful.
+	...
+	# Already here $! might be meaningless.
+    }
+    # Since here we might have either success or failure,
+    # here $! is meaningless.
+
+In the above I<meaningless> stands for anything: zero, non-zero,
+C<undef>.  A successful system or library call does B<not> set
+the variable to zero.
+
+If used as a string, yields the corresponding system error string.
+You can assign a number to C<$!> to set I<errno> if, for instance,
+you want C<"$!"> to return the string for error I<n>, or you want
+to set the exit value for the die() operator.  (Mnemonic: What just
+went bang?)
+
+Also see L<Error Indicators>.
+
+=item %OS_ERROR
+
+=item %ERRNO
+
+=item %!
+X<%!>
+
+Each element of C<%!> has a true value only if C<$!> is set to that
+value.  For example, C<$!{ENOENT}> is true if and only if the current
+value of C<$!> is C<ENOENT>; that is, if the most recent error was
+"No such file or directory" (or its moral equivalent: not all operating
+systems give that exact error, and certainly not all languages).
+To check if a particular key is meaningful on your system, use
+C<exists $!{the_key}>; for a list of legal keys, use C<keys %!>.
+See L<Errno> for more information, and also see above for the
+validity of C<$!>.
+
+=item $EXTENDED_OS_ERROR
+
+=item $^E
+X<$^E> X<$EXTENDED_OS_ERROR>
+
+Error information specific to the current operating system.  At
+the moment, this differs from C<$!> under only VMS, OS/2, and Win32
+(and for MacPerl).  On all other platforms, C<$^E> is always just
+the same as C<$!>.
+
+Under VMS, C<$^E> provides the VMS status value from the last
+system error.  This is more specific information about the last
+system error than that provided by C<$!>.  This is particularly
+important when C<$!> is set to B<EVMSERR>.
+
+Under OS/2, C<$^E> is set to the error code of the last call to
+OS/2 API either via CRT, or directly from perl.
+
+Under Win32, C<$^E> always returns the last error information
+reported by the Win32 call C<GetLastError()> which describes
+the last error from within the Win32 API.  Most Win32-specific
+code will report errors via C<$^E>.  ANSI C and Unix-like calls
+set C<errno> and so most portable Perl code will report errors
+via C<$!>. 
+
+Caveats mentioned in the description of C<$!> generally apply to
+C<$^E>, also.  (Mnemonic: Extra error explanation.)
+
+Also see L<Error Indicators>.
+
+=item $EVAL_ERROR
+
+=item $@
+X<$@> X<$EVAL_ERROR>
+
+The Perl syntax error message from the last eval() operator.
+If $@ is the null string, the last eval() parsed and executed
+correctly (although the operations you invoked may have failed in the
+normal fashion).  (Mnemonic: Where was the syntax error "at"?)
+
+Warning messages are not collected in this variable.  You can,
+however, set up a routine to process warnings by setting C<$SIG{__WARN__}>
+as described below.
+
+Also see L<Error Indicators>.
+
+=item $PROCESS_ID
+
+=item $PID
+
+=item $$
+X<$$> X<$PID> X<$PROCESS_ID>
+
+The process number of the Perl running this script.  You should
+consider this variable read-only, although it will be altered
+across fork() calls.  (Mnemonic: same as shells.)
+
+Note for Linux users: on Linux, the C functions C<getpid()> and
+C<getppid()> return different values from different threads. In order to
+be portable, this behavior is not reflected by C<$$>, whose value remains
+consistent across threads. If you want to call the underlying C<getpid()>,
+you may use the CPAN module C<Linux::Pid>.
+
+=item $REAL_USER_ID
+
+=item $UID
+
+=item $<
+X<< $< >> X<$UID> X<$REAL_USER_ID>
+
+The real uid of this process.  (Mnemonic: it's the uid you came I<from>,
+if you're running setuid.)  You can change both the real uid and
+the effective uid at the same time by using POSIX::setuid().  Since
+changes to $< require a system call, check $! after a change attempt to 
+detect any possible errors.
+
+=item $EFFECTIVE_USER_ID
+
+=item $EUID
+
+=item $>
+X<< $> >> X<$EUID> X<$EFFECTIVE_USER_ID>
+
+The effective uid of this process.  Example:
+
+    $< = $>;		# set real to effective uid
+    ($<,$>) = ($>,$<);	# swap real and effective uid
+
+You can change both the effective uid and the real uid at the same
+time by using POSIX::setuid().  Changes to $> require a check to $!
+to detect any possible errors after an attempted change. 
+
+(Mnemonic: it's the uid you went I<to>, if you're running setuid.)
+C<< $< >> and C<< $> >> can be swapped only on machines
+supporting setreuid().
+
+=item $REAL_GROUP_ID
+
+=item $GID
+
+=item $(
+X<$(> X<$GID> X<$REAL_GROUP_ID>
+
+The real gid of this process.  If you are on a machine that supports
+membership in multiple groups simultaneously, gives a space separated
+list of groups you are in.  The first number is the one returned by
+getgid(), and the subsequent ones by getgroups(), one of which may be
+the same as the first number.
+
+However, a value assigned to C<$(> must be a single number used to
+set the real gid.  So the value given by C<$(> should I<not> be assigned
+back to C<$(> without being forced numeric, such as by adding zero. Note
+that this is different to the effective gid (C<$)>) which does take a
+list.
+
+You can change both the real gid and the effective gid at the same
+time by using POSIX::setgid().  Changes to $( require a check to $!
+to detect any possible errors after an attempted change.
+
+(Mnemonic: parentheses are used to I<group> things.  The real gid is the
+group you I<left>, if you're running setgid.)
+
+=item $EFFECTIVE_GROUP_ID
+
+=item $EGID
+
+=item $)
+X<$)> X<$EGID> X<$EFFECTIVE_GROUP_ID>
+
+The effective gid of this process.  If you are on a machine that
+supports membership in multiple groups simultaneously, gives a space
+separated list of groups you are in.  The first number is the one
+returned by getegid(), and the subsequent ones by getgroups(), one of
+which may be the same as the first number.
+
+Similarly, a value assigned to C<$)> must also be a space-separated
+list of numbers.  The first number sets the effective gid, and
+the rest (if any) are passed to setgroups().  To get the effect of an
+empty list for setgroups(), just repeat the new effective gid; that is,
+to force an effective gid of 5 and an effectively empty setgroups()
+list, say C< $) = "5 5" >.
+
+You can change both the effective gid and the real gid at the same
+time by using POSIX::setgid() (use only a single numeric argument).
+Changes to $) require a check to $! to detect any possible errors
+after an attempted change.
+
+(Mnemonic: parentheses are used to I<group> things.  The effective gid
+is the group that's I<right> for you, if you're running setgid.)
+
+C<< $< >>, C<< $> >>, C<$(> and C<$)> can be set only on
+machines that support the corresponding I<set[re][ug]id()> routine.  C<$(>
+and C<$)> can be swapped only on machines supporting setregid().
+
+=item $PROGRAM_NAME
+
+=item $0
+X<$0> X<$PROGRAM_NAME>
+
+Contains the name of the program being executed.
+
+On some (read: not all) operating systems assigning to C<$0> modifies
+the argument area that the C<ps> program sees.  On some platforms you
+may have to use special C<ps> options or a different C<ps> to see the
+changes.  Modifying the $0 is more useful as a way of indicating the
+current program state than it is for hiding the program you're
+running.  (Mnemonic: same as B<sh> and B<ksh>.)
+
+Note that there are platform specific limitations on the maximum
+length of C<$0>.  In the most extreme case it may be limited to the
+space occupied by the original C<$0>.
+
+In some platforms there may be arbitrary amount of padding, for
+example space characters, after the modified name as shown by C<ps>.
+In some platforms this padding may extend all the way to the original
+length of the argument area, no matter what you do (this is the case
+for example with Linux 2.2).
+
+Note for BSD users: setting C<$0> does not completely remove "perl"
+from the ps(1) output.  For example, setting C<$0> to C<"foobar"> may
+result in C<"perl: foobar (perl)"> (whether both the C<"perl: "> prefix
+and the " (perl)" suffix are shown depends on your exact BSD variant
+and version).  This is an operating system feature, Perl cannot help it.
+
+In multithreaded scripts Perl coordinates the threads so that any
+thread may modify its copy of the C<$0> and the change becomes visible
+to ps(1) (assuming the operating system plays along).  Note that
+the view of C<$0> the other threads have will not change since they
+have their own copies of it.
+
+If the program has been given to perl via the switches C<-e> or C<-E>,
+C<$0> will contain the string C<"-e">.
+
+=item $[
+X<$[>
+
+The index of the first element in an array, and of the first character
+in a substring.  Default is 0, but you could theoretically set it
+to 1 to make Perl behave more like B<awk> (or Fortran) when
+subscripting and when evaluating the index() and substr() functions.
+(Mnemonic: [ begins subscripts.)
+
+As of release 5 of Perl, assignment to C<$[> is treated as a compiler
+directive, and cannot influence the behavior of any other file.
+(That's why you can only assign compile-time constants to it.)
+Its use is highly discouraged.
+
+Note that, unlike other compile-time directives (such as L<strict>),
+assignment to C<$[> can be seen from outer lexical scopes in the same file.
+However, you can use local() on it to strictly bind its value to a
+lexical block.
+
+=item $]
+X<$]>
+
+The version + patchlevel / 1000 of the Perl interpreter.  This variable
+can be used to determine whether the Perl interpreter executing a
+script is in the right range of versions.  (Mnemonic: Is this version
+of perl in the right bracket?)  Example:
+
+    warn "No checksumming!\n" if $] < 3.019;
+
+See also the documentation of C<use VERSION> and C<require VERSION>
+for a convenient way to fail if the running Perl interpreter is too old.
+
+The floating point representation can sometimes lead to inaccurate
+numeric comparisons.  See C<$^V> for a more modern representation of
+the Perl version that allows accurate string comparisons.
+
+=item $COMPILING
+
+=item $^C
+X<$^C> X<$COMPILING>
+
+The current value of the flag associated with the B<-c> switch.
+Mainly of use with B<-MO=...> to allow code to alter its behavior
+when being compiled, such as for example to AUTOLOAD at compile
+time rather than normal, deferred loading.  Setting
+C<$^C = 1> is similar to calling C<B::minus_c>.
+
+=item $DEBUGGING
+
+=item $^D
+X<$^D> X<$DEBUGGING>
+
+The current value of the debugging flags.  (Mnemonic: value of B<-D>
+switch.) May be read or set. Like its command-line equivalent, you can use
+numeric or symbolic values, eg C<$^D = 10> or C<$^D = "st">.
+
+=item ${^RE_DEBUG_FLAGS}
+
+The current value of the regex debugging flags. Set to 0 for no debug output
+even when the re 'debug' module is loaded. See L<re> for details.
+
+=item ${^RE_TRIE_MAXBUF}
+
+Controls how certain regex optimisations are applied and how much memory they
+utilize. This value by default is 65536 which corresponds to a 512kB temporary
+cache. Set this to a higher value to trade memory for speed when matching
+large alternations. Set it to a lower value if you want the optimisations to
+be as conservative of memory as possible but still occur, and set it to a
+negative value to prevent the optimisation and conserve the most memory.
+Under normal situations this variable should be of no interest to you.
+
+=item $SYSTEM_FD_MAX
+
+=item $^F
+X<$^F> X<$SYSTEM_FD_MAX>
+
+The maximum system file descriptor, ordinarily 2.  System file
+descriptors are passed to exec()ed processes, while higher file
+descriptors are not.  Also, during an open(), system file descriptors are
+preserved even if the open() fails.  (Ordinary file descriptors are
+closed before the open() is attempted.)  The close-on-exec
+status of a file descriptor will be decided according to the value of
+C<$^F> when the corresponding file, pipe, or socket was opened, not the
+time of the exec().
+
+=item $^H
+
+WARNING: This variable is strictly for internal use only.  Its availability,
+behavior, and contents are subject to change without notice.
+
+This variable contains compile-time hints for the Perl interpreter.  At the
+end of compilation of a BLOCK the value of this variable is restored to the
+value when the interpreter started to compile the BLOCK.
+
+When perl begins to parse any block construct that provides a lexical scope
+(e.g., eval body, required file, subroutine body, loop body, or conditional
+block), the existing value of $^H is saved, but its value is left unchanged.
+When the compilation of the block is completed, it regains the saved value.
+Between the points where its value is saved and restored, code that
+executes within BEGIN blocks is free to change the value of $^H.
+
+This behavior provides the semantic of lexical scoping, and is used in,
+for instance, the C<use strict> pragma.
+
+The contents should be an integer; different bits of it are used for
+different pragmatic flags.  Here's an example:
+
+    sub add_100 { $^H |= 0x100 }
+
+    sub foo {
+	BEGIN { add_100() }
+	bar->baz($boon);
+    }
+
+Consider what happens during execution of the BEGIN block.  At this point
+the BEGIN block has already been compiled, but the body of foo() is still
+being compiled.  The new value of $^H will therefore be visible only while
+the body of foo() is being compiled.
+
+Substitution of the above BEGIN block with:
+
+    BEGIN { require strict; strict->import('vars') }
+
+demonstrates how C<use strict 'vars'> is implemented.  Here's a conditional
+version of the same lexical pragma:
+
+    BEGIN { require strict; strict->import('vars') if $condition }
+
+=item %^H
+
+The %^H hash provides the same scoping semantic as $^H.  This makes it
+useful for implementation of lexically scoped pragmas. See L<perlpragma>.
+
+=item $INPLACE_EDIT
+
+=item $^I
+X<$^I> X<$INPLACE_EDIT>
+
+The current value of the inplace-edit extension.  Use C<undef> to disable
+inplace editing.  (Mnemonic: value of B<-i> switch.)
+
+=item $^M
+X<$^M>
+
+By default, running out of memory is an untrappable, fatal error.
+However, if suitably built, Perl can use the contents of C<$^M>
+as an emergency memory pool after die()ing.  Suppose that your Perl
+were compiled with C<-DPERL_EMERGENCY_SBRK> and used Perl's malloc.
+Then
+
+    $^M = 'a' x (1 << 16);
+
+would allocate a 64K buffer for use in an emergency.  See the
+F<INSTALL> file in the Perl distribution for information on how to
+add custom C compilation flags when compiling perl.  To discourage casual
+use of this advanced feature, there is no L<English|English> long name for
+this variable.
+
+=item $OSNAME
+
+=item $^O
+X<$^O> X<$OSNAME>
+
+The name of the operating system under which this copy of Perl was
+built, as determined during the configuration process.  The value
+is identical to C<$Config{'osname'}>.  See also L<Config> and the 
+B<-V> command-line switch documented in L<perlrun>.
+
+In Windows platforms, $^O is not very helpful: since it is always
+C<MSWin32>, it doesn't tell the difference between
+95/98/ME/NT/2000/XP/CE/.NET.  Use Win32::GetOSName() or
+Win32::GetOSVersion() (see L<Win32> and L<perlport>) to distinguish
+between the variants.
+
+=item ${^OPEN}
+
+An internal variable used by PerlIO.  A string in two parts, separated
+by a C<\0> byte, the first part describes the input layers, the second
+part describes the output layers.
+
+=item $PERLDB
+
+=item $^P
+X<$^P> X<$PERLDB>
+
+The internal variable for debugging support.  The meanings of the
+various bits are subject to change, but currently indicate:
+
+=over 6
+
+=item 0x01
+
+Debug subroutine enter/exit.
+
+=item 0x02
+
+Line-by-line debugging. Causes DB::DB() subroutine to be called for each
+statement executed. Also causes saving source code lines (like 0x400).
+
+=item 0x04
+
+Switch off optimizations.
+
+=item 0x08
+
+Preserve more data for future interactive inspections.
+
+=item 0x10
+
+Keep info about source lines on which a subroutine is defined.
+
+=item 0x20
+
+Start with single-step on.
+
+=item 0x40
+
+Use subroutine address instead of name when reporting.
+
+=item 0x80
+
+Report C<goto &subroutine> as well.
+
+=item 0x100
+
+Provide informative "file" names for evals based on the place they were compiled.
+
+=item 0x200
+
+Provide informative names to anonymous subroutines based on the place they
+were compiled.
+
+=item 0x400
+
+Save source code lines into C<@{"_<$filename"}>.
+
+=back
+
+Some bits may be relevant at compile-time only, some at
+run-time only.  This is a new mechanism and the details may change.
+See also L<perldebguts>.
+
+=item $LAST_REGEXP_CODE_RESULT
+
+=item $^R
+X<$^R> X<$LAST_REGEXP_CODE_RESULT>
+
+The result of evaluation of the last successful C<(?{ code })>
+regular expression assertion (see L<perlre>).  May be written to.
+
+=item $EXCEPTIONS_BEING_CAUGHT
+
+=item $^S
+X<$^S> X<$EXCEPTIONS_BEING_CAUGHT>
+
+Current state of the interpreter.
+
+    $^S         State
+    ---------   -------------------
+    undef       Parsing module/eval
+    true (1)    Executing an eval
+    false (0)   Otherwise
+
+The first state may happen in $SIG{__DIE__} and $SIG{__WARN__} handlers.
+
+=item $BASETIME
+
+=item $^T
+X<$^T> X<$BASETIME>
+
+The time at which the program began running, in seconds since the
+epoch (beginning of 1970).  The values returned by the B<-M>, B<-A>,
+and B<-C> filetests are based on this value.
+
+=item ${^TAINT}
+
+Reflects if taint mode is on or off.  1 for on (the program was run with
+B<-T>), 0 for off, -1 when only taint warnings are enabled (i.e. with
+B<-t> or B<-TU>).  This variable is read-only.
+
+=item ${^UNICODE}
+
+Reflects certain Unicode settings of Perl.  See L<perlrun>
+documentation for the C<-C> switch for more information about
+the possible values. This variable is set during Perl startup
+and is thereafter read-only.
+
+=item ${^UTF8CACHE}
+
+This variable controls the state of the internal UTF-8 offset caching code.
+1 for on (the default), 0 for off, -1 to debug the caching code by checking
+all its results against linear scans, and panicking on any discrepancy.
+
+=item ${^UTF8LOCALE}
+
+This variable indicates whether an UTF-8 locale was detected by perl at
+startup. This information is used by perl when it's in
+adjust-utf8ness-to-locale mode (as when run with the C<-CL> command-line
+switch); see L<perlrun> for more info on this.
+
+=item $PERL_VERSION
+
+=item $^V
+X<$^V> X<$PERL_VERSION>
+
+The revision, version, and subversion of the Perl interpreter, represented
+as a C<version> object.
+
+This variable first appeared in perl 5.6.0; earlier versions of perl will
+see an undefined value. Before perl 5.10.0 $^V was represented as a v-string.
+
+$^V can be used to determine whether the Perl interpreter executing a
+script is in the right range of versions.  (Mnemonic: use ^V for Version
+Control.)  Example:
+
+    warn "Hashes not randomized!\n" if !$^V or $^V lt v5.8.1
+
+To convert C<$^V> into its string representation use sprintf()'s
+C<"%vd"> conversion:
+
+    printf "version is v%vd\n", $^V;  # Perl's version
+
+See the documentation of C<use VERSION> and C<require VERSION>
+for a convenient way to fail if the running Perl interpreter is too old.
+
+See also C<$]> for an older representation of the Perl version.
+
+=item $WARNING
+
+=item $^W
+X<$^W> X<$WARNING>
+
+The current value of the warning switch, initially true if B<-w>
+was used, false otherwise, but directly modifiable.  (Mnemonic:
+related to the B<-w> switch.)  See also L<warnings>.
+
+=item ${^WARNING_BITS}
+
+The current set of warning checks enabled by the C<use warnings> pragma.
+See the documentation of C<warnings> for more details.
+
+=item ${^WIN32_SLOPPY_STAT}
+
+If this variable is set to a true value, then stat() on Windows will
+not try to open the file. This means that the link count cannot be
+determined and file attributes may be out of date if additional
+hardlinks to the file exist. On the other hand, not opening the file
+is considerably faster, especially for files on network drives.
+
+This variable could be set in the F<sitecustomize.pl> file to
+configure the local Perl installation to use "sloppy" stat() by
+default.  See L<perlrun> for more information about site
+customization.
+
+=item $EXECUTABLE_NAME
+
+=item $^X
+X<$^X> X<$EXECUTABLE_NAME>
+
+The name used to execute the current copy of Perl, from C's
+C<argv[0]> or (where supported) F</proc/self/exe>.
+
+Depending on the host operating system, the value of $^X may be
+a relative or absolute pathname of the perl program file, or may
+be the string used to invoke perl but not the pathname of the
+perl program file.  Also, most operating systems permit invoking
+programs that are not in the PATH environment variable, so there
+is no guarantee that the value of $^X is in PATH.  For VMS, the
+value may or may not include a version number.
+
+You usually can use the value of $^X to re-invoke an independent
+copy of the same perl that is currently running, e.g.,
+
+  @first_run = `$^X -le "print int rand 100 for 1..100"`;
+
+But recall that not all operating systems support forking or
+capturing of the output of commands, so this complex statement
+may not be portable.
+
+It is not safe to use the value of $^X as a path name of a file,
+as some operating systems that have a mandatory suffix on
+executable files do not require use of the suffix when invoking
+a command.  To convert the value of $^X to a path name, use the
+following statements:
+
+  # Build up a set of file names (not command names).
+  use Config;
+  $this_perl = $^X;
+  if ($^O ne 'VMS')
+     {$this_perl .= $Config{_exe}
+          unless $this_perl =~ m/$Config{_exe}$/i;}
+
+Because many operating systems permit anyone with read access to
+the Perl program file to make a copy of it, patch the copy, and
+then execute the copy, the security-conscious Perl programmer
+should take care to invoke the installed copy of perl, not the
+copy referenced by $^X.  The following statements accomplish
+this goal, and produce a pathname that can be invoked as a
+command or referenced as a file.
+
+  use Config;
+  $secure_perl_path = $Config{perlpath};
+  if ($^O ne 'VMS')
+     {$secure_perl_path .= $Config{_exe}
+          unless $secure_perl_path =~ m/$Config{_exe}$/i;}
+
+=item ARGV
+X<ARGV>
+
+The special filehandle that iterates over command-line filenames in
+C<@ARGV>. Usually written as the null filehandle in the angle operator
+C<< <> >>. Note that currently C<ARGV> only has its magical effect
+within the C<< <> >> operator; elsewhere it is just a plain filehandle
+corresponding to the last file opened by C<< <> >>. In particular,
+passing C<\*ARGV> as a parameter to a function that expects a filehandle
+may not cause your function to automatically read the contents of all the
+files in C<@ARGV>.
+
+=item $ARGV
+X<$ARGV>
+
+contains the name of the current file when reading from <>.
+
+=item @ARGV
+X<@ARGV>
+
+The array @ARGV contains the command-line arguments intended for
+the script.  C<$#ARGV> is generally the number of arguments minus
+one, because C<$ARGV[0]> is the first argument, I<not> the program's
+command name itself.  See C<$0> for the command name.
+
+=item ARGVOUT
+X<ARGVOUT>
+
+The special filehandle that points to the currently open output file
+when doing edit-in-place processing with B<-i>.  Useful when you have
+to do a lot of inserting and don't want to keep modifying $_.  See
+L<perlrun> for the B<-i> switch.
+
+=item @F
+X<@F>
+
+The array @F contains the fields of each line read in when autosplit
+mode is turned on.  See L<perlrun> for the B<-a> switch.  This array
+is package-specific, and must be declared or given a full package name
+if not in package main when running under C<strict 'vars'>.
+
+=item @INC
+X<@INC>
+
+The array @INC contains the list of places that the C<do EXPR>,
+C<require>, or C<use> constructs look for their library files.  It
+initially consists of the arguments to any B<-I> command-line
+switches, followed by the default Perl library, probably
+F</usr/local/lib/perl>, followed by ".", to represent the current
+directory.  ("." will not be appended if taint checks are enabled, either by
+C<-T> or by C<-t>.)  If you need to modify this at runtime, you should use
+the C<use lib> pragma to get the machine-dependent library properly
+loaded also:
+
+    use lib '/mypath/libdir/';
+    use SomeMod;
+
+You can also insert hooks into the file inclusion system by putting Perl
+code directly into @INC.  Those hooks may be subroutine references, array
+references or blessed objects.  See L<perlfunc/require> for details.
+
+=item @ARG
+
+=item @_
+X<@_> X<@ARG>
+
+Within a subroutine the array @_ contains the parameters passed to that
+subroutine.  See L<perlsub>.
+
+=item %INC
+X<%INC>
+
+The hash %INC contains entries for each filename included via the
+C<do>, C<require>, or C<use> operators.  The key is the filename
+you specified (with module names converted to pathnames), and the
+value is the location of the file found.  The C<require>
+operator uses this hash to determine whether a particular file has
+already been included.
+
+If the file was loaded via a hook (e.g. a subroutine reference, see
+L<perlfunc/require> for a description of these hooks), this hook is
+by default inserted into %INC in place of a filename.  Note, however,
+that the hook may have set the %INC entry by itself to provide some more
+specific info.
+
+=item %ENV
+
+=item $ENV{expr}
+X<%ENV>
+
+The hash %ENV contains your current environment.  Setting a
+value in C<ENV> changes the environment for any child processes
+you subsequently fork() off.
+
+=item %SIG
+
+=item $SIG{expr}
+X<%SIG>
+
+The hash C<%SIG> contains signal handlers for signals.  For example:
+
+    sub handler {	# 1st argument is signal name
+	my($sig) = @_;
+	print "Caught a SIG$sig--shutting down\n";
+	close(LOG);
+	exit(0);
+    }
+
+    $SIG{'INT'}  = \&handler;
+    $SIG{'QUIT'} = \&handler;
+    ...
+    $SIG{'INT'}  = 'DEFAULT';	# restore default action
+    $SIG{'QUIT'} = 'IGNORE';	# ignore SIGQUIT
+
+Using a value of C<'IGNORE'> usually has the effect of ignoring the
+signal, except for the C<CHLD> signal.  See L<perlipc> for more about
+this special case.
+
+Here are some other examples:
+
+    $SIG{"PIPE"} = "Plumber";   # assumes main::Plumber (not recommended)
+    $SIG{"PIPE"} = \&Plumber;   # just fine; assume current Plumber
+    $SIG{"PIPE"} = *Plumber;    # somewhat esoteric
+    $SIG{"PIPE"} = Plumber();   # oops, what did Plumber() return??
+
+Be sure not to use a bareword as the name of a signal handler,
+lest you inadvertently call it. 
+
+If your system has the sigaction() function then signal handlers are
+installed using it.  This means you get reliable signal handling.
+
+The default delivery policy of signals changed in Perl 5.8.0 from 
+immediate (also known as "unsafe") to deferred, also known as 
+"safe signals".  See L<perlipc> for more information.
+
+Certain internal hooks can be also set using the %SIG hash.  The
+routine indicated by C<$SIG{__WARN__}> is called when a warning message is
+about to be printed.  The warning message is passed as the first
+argument.  The presence of a C<__WARN__> hook causes the ordinary printing
+of warnings to C<STDERR> to be suppressed.  You can use this to save warnings
+in a variable, or turn warnings into fatal errors, like this:
+
+    local $SIG{__WARN__} = sub { die $_[0] };
+    eval $proggie;
+
+As the C<'IGNORE'> hook is not supported by C<__WARN__>, you can
+disable warnings using the empty subroutine:
+
+    local $SIG{__WARN__} = sub {};
+
+The routine indicated by C<$SIG{__DIE__}> is called when a fatal exception
+is about to be thrown.  The error message is passed as the first
+argument.  When a C<__DIE__> hook routine returns, the exception
+processing continues as it would have in the absence of the hook,
+unless the hook routine itself exits via a C<goto>, a loop exit, or a C<die()>.
+The C<__DIE__> handler is explicitly disabled during the call, so that you
+can die from a C<__DIE__> handler.  Similarly for C<__WARN__>.
+
+Due to an implementation glitch, the C<$SIG{__DIE__}> hook is called
+even inside an eval().  Do not use this to rewrite a pending exception
+in C<$@>, or as a bizarre substitute for overriding C<CORE::GLOBAL::die()>.
+This strange action at a distance may be fixed in a future release
+so that C<$SIG{__DIE__}> is only called if your program is about
+to exit, as was the original intent.  Any other use is deprecated.
+
+C<__DIE__>/C<__WARN__> handlers are very special in one respect:
+they may be called to report (probable) errors found by the parser.
+In such a case the parser may be in inconsistent state, so any
+attempt to evaluate Perl code from such a handler will probably
+result in a segfault.  This means that warnings or errors that
+result from parsing Perl should be used with extreme caution, like
+this:
+
+    require Carp if defined $^S;
+    Carp::confess("Something wrong") if defined &Carp::confess;
+    die "Something wrong, but could not load Carp to give backtrace...
+         To see backtrace try starting Perl with -MCarp switch";
+
+Here the first line will load Carp I<unless> it is the parser who
+called the handler.  The second line will print backtrace and die if
+Carp was available.  The third line will be executed only if Carp was
+not available.
+
+See L<perlfunc/die>, L<perlfunc/warn>, L<perlfunc/eval>, and
+L<warnings> for additional information.
+
+=back
+
+=head2 Error Indicators
+X<error> X<exception>
+
+The variables C<$@>, C<$!>, C<$^E>, and C<$?> contain information
+about different types of error conditions that may appear during
+execution of a Perl program.  The variables are shown ordered by
+the "distance" between the subsystem which reported the error and
+the Perl process.  They correspond to errors detected by the Perl
+interpreter, C library, operating system, or an external program,
+respectively.
+
+To illustrate the differences between these variables, consider the 
+following Perl expression, which uses a single-quoted string:
+
+    eval q{
+	open my $pipe, "/cdrom/install |" or die $!;
+	my @res = <$pipe>;
+	close $pipe or die "bad pipe: $?, $!";
+    };
+
+After execution of this statement all 4 variables may have been set.  
+
+C<$@> is set if the string to be C<eval>-ed did not compile (this
+may happen if C<open> or C<close> were imported with bad prototypes),
+or if Perl code executed during evaluation die()d .  In these cases
+the value of $@ is the compile error, or the argument to C<die>
+(which will interpolate C<$!> and C<$?>).  (See also L<Fatal>,
+though.)
+
+When the eval() expression above is executed, open(), C<< <PIPE> >>,
+and C<close> are translated to calls in the C run-time library and
+thence to the operating system kernel.  C<$!> is set to the C library's
+C<errno> if one of these calls fails. 
+
+Under a few operating systems, C<$^E> may contain a more verbose
+error indicator, such as in this case, "CDROM tray not closed."
+Systems that do not support extended error messages leave C<$^E>
+the same as C<$!>.
+
+Finally, C<$?> may be set to non-0 value if the external program
+F</cdrom/install> fails.  The upper eight bits reflect specific
+error conditions encountered by the program (the program's exit()
+value).   The lower eight bits reflect mode of failure, like signal
+death and core dump information  See wait(2) for details.  In
+contrast to C<$!> and C<$^E>, which are set only if error condition
+is detected, the variable C<$?> is set on each C<wait> or pipe
+C<close>, overwriting the old value.  This is more like C<$@>, which
+on every eval() is always set on failure and cleared on success.
+
+For more details, see the individual descriptions at C<$@>, C<$!>, C<$^E>,
+and C<$?>.
+
+=head2 Technical Note on the Syntax of Variable Names
+
+Variable names in Perl can have several formats.  Usually, they
+must begin with a letter or underscore, in which case they can be
+arbitrarily long (up to an internal limit of 251 characters) and
+may contain letters, digits, underscores, or the special sequence
+C<::> or C<'>.  In this case, the part before the last C<::> or
+C<'> is taken to be a I<package qualifier>; see L<perlmod>.
+
+Perl variable names may also be a sequence of digits or a single
+punctuation or control character.  These names are all reserved for
+special uses by Perl; for example, the all-digits names are used
+to hold data captured by backreferences after a regular expression
+match.  Perl has a special syntax for the single-control-character
+names: It understands C<^X> (caret C<X>) to mean the control-C<X>
+character.  For example, the notation C<$^W> (dollar-sign caret
+C<W>) is the scalar variable whose name is the single character
+control-C<W>.  This is better than typing a literal control-C<W>
+into your program.
+
+Finally, new in Perl 5.6, Perl variable names may be alphanumeric
+strings that begin with control characters (or better yet, a caret).
+These variables must be written in the form C<${^Foo}>; the braces
+are not optional.  C<${^Foo}> denotes the scalar variable whose
+name is a control-C<F> followed by two C<o>'s.  These variables are
+reserved for future special uses by Perl, except for the ones that
+begin with C<^_> (control-underscore or caret-underscore).  No
+control-character name that begins with C<^_> will acquire a special
+meaning in any future version of Perl; such names may therefore be
+used safely in programs.  C<$^_> itself, however, I<is> reserved.
+
+Perl identifiers that begin with digits, control characters, or
+punctuation characters are exempt from the effects of the C<package>
+declaration and are always forced to be in package C<main>; they are
+also exempt from C<strict 'vars'> errors.  A few other names are also
+exempt in these ways:
+
+	ENV		STDIN
+	INC		STDOUT
+	ARGV		STDERR
+	ARGVOUT		_
+	SIG
+
+In particular, the new special C<${^_XYZ}> variables are always taken
+to be in package C<main>, regardless of any C<package> declarations
+presently in scope.  
+
+=head1 BUGS
+
+Due to an unfortunate accident of Perl's implementation, C<use
+English> imposes a considerable performance penalty on all regular
+expression matches in a program, regardless of whether they occur
+in the scope of C<use English>.  For that reason, saying C<use
+English> in libraries is strongly discouraged.  See the
+Devel::SawAmpersand module documentation from CPAN
+( http://www.cpan.org/modules/by-module/Devel/ )
+for more information. Writing C<use English '-no_match_vars';>
+avoids the performance penalty.
+
+Having to even think about the C<$^S> variable in your exception
+handlers is simply wrong.  C<$SIG{__DIE__}> as currently implemented
+invites grievous and difficult to track down errors.  Avoid it
+and use an C<END{}> or CORE::GLOBAL::die override instead.

Added: vendor/perl/dist/ext/XS-APItest/t/addissub.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/addissub.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/addissub.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+use warnings;
+use strict;
+
+use Test::More tests => 9;
+use XS::APItest ();
+
+alarm 10;   # likely failure mode is an infinite loop
+
+ok 1;
+is eval q{ 3 + 1 }, 4;
+is eval q{ BEGIN { $^H{"XS::APItest/addissub"} = 1; } 3 + 1 }, 4;
+XS::APItest::setup_addissub(); ok 1;
+is eval q{ 3 + 1 }, 4;
+is eval q{ BEGIN { $^H{"XS::APItest/addissub"} = 1; } 3 + 1 }, 2;
+XS::APItest::setup_addissub(); ok 1;
+is eval q{ 3 + 1 }, 4;
+is eval q{ BEGIN { $^H{"XS::APItest/addissub"} = 1; } 3 + 1 }, 2;
+
+1;

Added: vendor/perl/dist/ext/XS-APItest/t/autoload.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/autoload.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/autoload.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,132 @@
+#!perl
+
+# This script tests not only the interface for XS AUTOLOAD routines to find
+# out the sub name, but also that that interface does not interfere with
+# prototypes, the way it did before 5.15.4.
+
+use strict;
+use warnings;
+
+use Test::More tests => 26;
+
+use XS::APItest;
+
+is XS::APItest::AutoLoader::frob(), 'frob', 'name passed to XS AUTOLOAD';
+is "XS::APItest::AutoLoader::fr\0b"->(), "fr\0b",
+  'name with embedded null passed to XS AUTOLOAD';
+is "XS::APItest::AutoLoader::fr\x{1ed9}b"->(), "fr\x{1ed9}b",
+  'Unicode name passed to XS AUTOLOAD';
+
+*AUTOLOAD = *XS::APItest::AutoLoader::AUTOLOADp;
+
+is frob(), 'frob', 'name passed to XS AUTOLOAD with proto';
+is prototype \&AUTOLOAD, '*$', 'prototype is unchanged';
+is "fr\0b"->(), "fr\0b",
+  'name with embedded null passed to XS AUTOLOAD with proto';
+is prototype \&AUTOLOAD, '*$', 'proto unchanged after embedded-null call';
+is "fr\x{1ed9}b"->(), "fr\x{1ed9}b",
+  'Unicode name passed to XS AUTOLOAD with proto';
+is prototype \&AUTOLOAD, '*$', 'prototype is unchanged after Unicode call';
+
+# Test that the prototype was preserved from the parser’s point of view
+
+ok !eval "sub { ::AUTOLOAD(1) }",
+   'parse failure due to AUTOLOAD prototype';
+ok eval "sub { ::AUTOLOAD(1,2) }", 'successful parse respecting prototype'
+  or diag $@;
+
+package fribble { sub a { return 7 } }
+no warnings 'once';
+*a = \&AUTOLOAD;
+'$'->();
+# &a('fribble') will return '$'
+# But if intuit_method does not see the (*...) proto, this compiles as
+# fribble->a
+no strict;
+is eval 'a fribble, 3', '$', 'intuit_method sees * in AUTOLOAD proto'
+  or diag $@;
+
+# precedence check
+# *$ should parse as a list operator, but right now the AUTOLOAD
+# sub name is $
+is join(" ", eval 'a "b", "c"'), '$',
+   'precedence determination respects prototype of AUTOLOAD sub';
+
+{
+    my $w;
+    local $SIG{__WARN__} = sub { $w .= shift };
+    eval 'sub a($){}';
+    like $w, qr/^Prototype mismatch: sub main::a \(\*\$\) vs \(\$\)/m,
+        'proto warnings respect AUTOLOAD prototypes';
+    undef $w;
+    *a = \&AUTOLOAD;
+    like $w, qr/^Prototype mismatch: sub main::a \(\$\) vs \(\*\$\)/m,
+        'GV assignment proto warnings respect AUTOLOAD prototypes';
+}
+
+
+#
+# This is a test for AUTOLOAD implemented as an XSUB.
+# It tests that $AUTOLOAD is set correctly, including the
+# case of inheritance.
+#
+# Rationale: Due to change ed850460, $AUTOLOAD is not currently set
+# for XSUB AUTOLOADs at all.  Instead, as of adb5a9ae the PV of the
+# AUTOLOAD XSUB is set to the name of the method. We cruelly test it
+# regardless.
+#
+
+# First, make sure we have the XS AUTOLOAD available for testing
+ok(XS::APItest::AUTOLOADtest->can('AUTOLOAD'), 'Test class ->can AUTOLOAD');
+
+# Used to communicate from the XS AUTOLOAD to Perl land
+use vars '$the_method';
+
+# First, set up the Perl equivalent to what we're testing in
+# XS so we have a comparison
+package PerlBase;
+use vars '$AUTOLOAD';
+sub AUTOLOAD {
+  Test::More::ok(defined $AUTOLOAD);
+  return 1 if not defined $AUTOLOAD;
+  $main::the_method = $AUTOLOAD;
+  return 0;
+}
+
+package PerlDerived;
+use vars '@ISA';
+ at ISA = qw(PerlBase);
+
+package Derived;
+use vars '@ISA';
+ at ISA = qw(XS::APItest::AUTOLOADtest);
+
+package main;
+
+# Test Perl AUTOLOAD in base class directly
+$the_method = undef;
+is(PerlBase->Blah(), 0,
+   "Perl AUTOLOAD gets called and returns success");
+is($the_method, 'PerlBase::Blah',
+   'Scalar set to correct class/method name');
+
+# Test Perl AUTOLOAD in derived class
+$the_method = undef;
+is(PerlDerived->Boo(), 0,
+   'Perl AUTOLOAD on derived class gets called and returns success');
+is($the_method, 'PerlDerived::Boo',
+   'Scalar set to correct class/method name');
+
+# Test XS AUTOLOAD in base class directly
+$the_method = undef;
+is(XS::APItest::AUTOLOADtest->Blah(), 0,
+     'XS AUTOLOAD gets called and returns success');
+is($the_method, 'XS::APItest::AUTOLOADtest::Blah',
+     'Scalar set to correct class/method name');
+
+# Test XS AUTOLOAD in derived class directly
+$the_method = undef;
+is(Derived->Foo(), 0,
+     'XS AUTOLOAD gets called and returns success');
+is($the_method, 'Derived::Foo',
+     'Scalar set to correct class/method name');

Added: vendor/perl/dist/ext/XS-APItest/t/callregexec.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/callregexec.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/callregexec.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,66 @@
+#!perl
+
+# test CALLREGEXEC()
+# (currently it just checks that it handles non-\0 terminated strings;
+# full tests haven't been added yet)
+
+use warnings;
+use strict;
+
+use XS::APItest;
+*callregexec = *XS::APItest::callregexec;
+
+use Test::More tests => 50;
+
+# Test that the regex engine can handle strings without terminating \0
+# XXX This is by no means comprehensive; it doesn't test all ops, nor all
+# code paths within those ops (especially not utf8).
+
+
+# this sub takes a string that has an extraneous char at the end.
+# First see if the string (less the last char) matches the regex;
+# then see if that string (including the last char) matches when
+# calling callregexec(), but with the length arg set to 1 char less than
+# the length of the string.
+# In theory the result should be the same for both matches, since
+# they should both not 'see' the final char.
+
+sub try {
+    my ($str, $re, $exp, $desc) = @_;
+
+    my $str1 = substr($str, 0, -1);
+    ok !!$exp == !!($str1 =~ $re), "$desc str =~ qr";
+
+    my $bytes = do { use bytes; length $str1 };
+    ok  !!$exp == !!callregexec($re, 0, $bytes, 0, $str, 0),
+	    "$desc callregexec";
+}
+
+
+{
+    try "\nx",         qr/\n^/m,          0, 'MBOL';
+    try "ax",          qr/a$/m,           1, 'MEOL';
+    try "ax",          qr/a$/s,           1, 'SEOL';
+    try "abx",         qr/^(ab|X)./s,     0, 'SANY';
+    try "abx",         qr/^(ab|X)\C/,     0, 'CANY';
+    try "abx",         qr/^(ab|X)./,      0, 'REG_ANY';
+    try "abx",         qr/^ab(c|d|e|x)/,  0, 'TRIE/TRIEC';
+    try "abx",         qr/^abx/,          0, 'EXACT';
+    try "abx",         qr/^ABX/i,         0, 'EXACTF';
+    try "abx",         qr/^ab\b/,         1, 'BOUND';
+    try "ab-",         qr/^ab\B/,         0, 'NBOUND';
+    try "aas",         qr/a[st]/,         0, 'ANYOF';
+    try "aas",         qr/a[s\xDF]/i,     0, 'ANYOFV';
+    try "ab1",         qr/ab\d/,          0, 'DIGIT';
+    try "ab\n",        qr/ab[[:ascii:]]/, 0, 'POSIX';
+    try "aP\x{307}",   qr/^a\X/,          1, 'CLUMP 1';
+    try "aP\x{307}x",  qr/^a\X/,          1, 'CLUMP 2';
+    try "\x{100}\r\n", qr/^\x{100}\X/,    1, 'CLUMP 3';
+    try "abb",         qr/^a(b)\1/,       0, 'REF';
+    try "ab\n",        qr/^.+\R/,         0, 'LNBREAK';
+    try "ab\n",        qr/^.+\v/,         0, 'VERTWS';
+    try "abx",         qr/^.+\V/,         1, 'NVERTWS';
+    try "ab\t",        qr/^.+\h/,         0, 'HORIZWS';
+    try "abx",         qr/^.+\H/,         1, 'NHORIZWS';
+    try "abx",         qr/a.*x/,          0, 'CURLY';
+}

Added: vendor/perl/dist/ext/XS-APItest/t/check_warnings.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/check_warnings.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/check_warnings.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+#!perl
+
+# This test checks to make sure that a BEGIN block created from an XS call
+# does not implicitly change the current warning scope, causing a CHECK
+# or INIT block created after the corresponding phase to warn when it
+# shouldn’t.
+
+use Test::More tests => 1;
+
+$SIG{__WARN__} = sub { $w .= shift };
+
+use warnings;
+eval q|
+  BEGIN{
+    no warnings;
+    package XS::APItest; require XSLoader; XSLoader::load()
+  }
+|;
+
+is $w, undef, 'No warnings about CHECK and INIT in warningless scope';

Added: vendor/perl/dist/ext/XS-APItest/t/clone-with-stack.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/clone-with-stack.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/clone-with-stack.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!perl
+
+use strict;
+use warnings;
+
+require "../../t/test.pl";
+
+use XS::APItest;
+
+# clone_with_stack creates a clone of the perl interpreter including
+# the stack, then destroys the original interpreter and runs the
+# remaining code using the new one.
+# This is like doing a psuedo-fork and exiting the parent.
+
+use Config;
+if (not $Config{'useithreads'}) {
+    skip_all("clone_with_stack requires threads");
+}
+
+plan(4);
+
+fresh_perl_is( <<'----', <<'====', undef, "minimal clone_with_stack" );
+use XS::APItest;
+clone_with_stack();
+print "ok\n";
+----
+ok
+====
+
+fresh_perl_is( <<'----', <<'====', undef, "inside a subroutine" );
+use XS::APItest;
+sub f {
+    clone_with_stack();
+}
+f();
+print "ok\n";
+----
+ok
+====
+
+{
+    local our $TODO = "clone_with_stack inside a begin block";
+    fresh_perl_is( <<'----', <<'====', undef, "inside a BEGIN block" );
+use XS::APItest;
+BEGIN {
+    clone_with_stack();
+}
+print "ok\n";
+----
+ok
+====
+
+}
+
+{
+    fresh_perl_is( <<'----', <<'====', undef, "clone stack" );
+use XS::APItest;
+sub f {
+    clone_with_stack();
+    0..4;
+}
+print 'X-', 'Y-', join(':', f()), "-Z\n";
+----
+X-Y-0:1:2:3:4-Z
+====
+
+}

Added: vendor/perl/dist/ext/XS-APItest/t/coplabel.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/coplabel.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/coplabel.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+use warnings;
+use strict;
+use Test::More tests => 1;
+
+use XS::APItest;
+
+XS::APItest::test_coplabel();
+ok 1;
+
+1;

Added: vendor/perl/dist/ext/XS-APItest/t/copstash.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/copstash.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/copstash.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,9 @@
+use Config;
+use Test::More;
+BEGIN { plan skip_all => 'no threads' unless $Config{useithreads} }
+
+plan tests => 1;
+
+use XS::APItest;
+
+ok test_alloccopstash;

Added: vendor/perl/dist/ext/XS-APItest/t/fetch_pad_names.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/fetch_pad_names.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/fetch_pad_names.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,322 @@
+use strict;
+use warnings;
+use Encode ();
+
+use Test::More tests => 77;
+
+use XS::APItest qw( fetch_pad_names pad_scalar );
+
+local $SIG{__WARN__} = sub { warn $_[0] unless $_[0] =~ /Wide character in print at/ };
+
+ok defined &fetch_pad_names, "sub imported";
+ok defined &pad_scalar;
+
+my $cv = sub {
+    my $test;
+};
+
+ok fetch_pad_names($cv), "Fetch working.";
+is ref fetch_pad_names($cv), ref [], 'Fetch returns an arrayref';
+is @{fetch_pad_names($cv)}, 1, 'Sub has one lexical.';
+is fetch_pad_names($cv)->[0], '$test', "Fetching a simple scalar works.";
+
+$cv = sub {
+    use utf8;
+
+    my $zest = 'invariant';
+    my $zèst = 'latin-1';
+    
+    return [pad_scalar(1, "zèst"), pad_scalar(1, "z\350st"), pad_scalar(1, "z\303\250st")];
+};
+
+my $names_av    = fetch_pad_names($cv);
+my $flagged     = my $unflagged = "\$z\x{c3}\x{a8}st";
+Encode::_utf8_on($flagged);
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => 'latin-1', msg => 'Fetches through UTF-8.' },
+                { cmp => 'latin-1', msg => 'Fetches through Latin-1.' },
+                { cmp => 'NOT_IN_PAD', msg => "Doesn't fetch using octets." },
+               ],
+    pad_size => {
+                    total     => { cmp => 2, msg => 'Sub has two lexicals.' },
+                    utf8      => { cmp => 0, msg => 'Sub has no UTF-8 encoded vars.' },
+                    invariant => { cmp => 2, msg => 'Sub has two invariant vars.' },
+                },
+    vars    => [
+                { name => '$zest', msg => 'Sub has [\$zest].', type => 'ok' },
+                { name =>  "\$z\x{e8}st", msg => "Sub has [\$t\x{e8}st].", type => 'ok' },
+                { name => $unflagged, msg => "Sub doesn't have [$unflagged].", type => 'not ok' },
+                { name => $flagged, msg => "But does have it when flagged.", type => 'ok' },
+               ],
+});
+
+$cv = do {
+    my $ascii = 'Defined';
+    sub {
+        use utf8;
+        my $партнеры = $ascii;
+        return [$партнеры, pad_scalar(1, "партнеры"), pad_scalar(1, "\320\277\320\260\321\200\321\202\320\275\320\265\321\200\321\213")];
+    };
+};
+
+$names_av     = fetch_pad_names($cv);
+my $hex_var   =  "\$\x{43f}\x{430}\x{440}\x{442}\x{43d}\x{435}\x{440}\x{44b}";
+$flagged      = $unflagged = "\$\320\277\320\260\321\200\321\202\320\275\320\265\321\200\321\213";
+Encode::_utf8_on($flagged);
+
+my $russian_var = do {
+    use utf8;
+    '$партнеры';
+};
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => 'Defined', msg => 'UTF-8 fetching works.' },
+                { cmp => 'Defined', msg => 'pad_scalar fetch.' },
+                { cmp => 'NOT_IN_PAD', msg => "Doesn't fetch using octets." },
+               ],
+    pad_size => {
+                    total     => { cmp => 2, msg => 'Sub has two lexicals, including those it closed over.' },
+                    utf8      => { cmp => 1, msg => 'UTF-8 in the pad.' },
+                    invariant => { cmp => 1, msg => '' },
+                },
+    vars    => [
+                { name => '$ascii', msg => 'Sub has [$ascii].', type => 'ok' },
+                { name => $russian_var, msg => "Sub has [$russian_var].", type => 'ok' },
+                { name => $hex_var, msg => "Sub has [$hex_var].", type => 'ok' },
+                { name => $unflagged, msg => "Sub doesn't have [$unflagged]", type => 'not ok' },
+                { name => $flagged, msg => "But does have it when flagged.", type => 'ok' },
+               ],
+});
+
+my $leon1 = "\$L\x{e9}on";
+my $leon2 = my $leon3 = "\$L\x{c3}\x{a9}on";
+Encode::_utf8_on($leon2);
+
+local $@;
+$cv = eval <<"END";
+    sub {
+        use utf8;
+        my \$Leon = 'Invariant';
+        my $leon1 = 'Latin-1';
+        return [ \$Leon, $leon1, $leon2, pad_scalar(1, "L\x{e9}on"), pad_scalar(1, "L\x{c3}\x{a9}on")];
+    };
+END
+
+my $err = $@;
+ok !$err, $@;
+
+$names_av = fetch_pad_names($cv);
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => 'Invariant', msg => '' },
+                { cmp => 'Latin-1', msg => "Fetched through [$leon1]" },
+                { cmp => 'Latin-1', msg => "Fetched through [$leon2]" },
+                { cmp => 'Latin-1', msg => 'pad_scalar fetch.' },
+                { cmp => 'NOT_IN_PAD', msg => "Doesn't fetch using octets." },
+               ],
+    pad_size => {
+                    total     => { cmp => 2, msg => 'Sub has two lexicals' },
+                    utf8      => { cmp => 0, msg => 'Latin-1 not upgraded to UTF-8.' },
+                    invariant => { cmp => 2, msg => '' },
+                },
+    vars    => [
+                { name => '$Leon', msg => 'Sub has [$Leon].', type => 'ok' },
+                { name => $leon1, msg => "Sub has [$leon1].", type => 'ok' },
+                { name => $leon2, msg => "Sub has [$leon2].", type => 'ok' },
+                { name => $leon3, msg => "Sub doesn't have [$leon3]", type => 'not ok' },
+               ],
+});
+
+
+{
+    use utf8;
+    my $Cèon = 4;
+    my $str1 = "\$C\x{e8}on";
+    my $str2 = my $str3 = "\$C\x{c3}\x{a8}on";
+    Encode::_utf8_on($str2);
+
+    local $@;
+    $cv = eval <<"END_EVAL";
+        sub { [ \$Cèon, $str1, $str2 ] };
+END_EVAL
+    
+    $err = $@;
+    ok !$err;
+
+    $names_av = fetch_pad_names($cv);
+
+    general_tests( $cv->(), $names_av, {
+        results => [ ({ SKIP => 1 }) x 3 ],
+        pad_size => {
+                  total => { cmp => 1, msg => 'Sub has one lexical, which it closed over.' },
+                  utf8      => { cmp => 0, msg => '' },
+                  invariant => { cmp => 1, msg => '' },
+                    },
+        vars    => [
+                { name => '$Ceon', msg => "Sub doesn't have [\$Ceon].", type => 'not ok' },
+                map({ { name => $_, msg => "Sub has [$_].", type => 'ok' } } $str1, $str2 ),
+                { name => $str3, msg => "Sub doesn't have [$str3]", type => 'not ok' },
+                   ],
+    });
+
+}
+
+$cv = sub {
+    use utf8;
+    our $戦国 = 10;
+    {
+        no strict 'refs';
+        my ($symref, $encoded_sym) = (__PACKAGE__ . "::戦国") x 2;
+        utf8::encode($encoded_sym);
+        return [ $戦国, ${$symref}, ${$encoded_sym} ];
+    }
+};
+
+my $flagged_our = my $unflagged_our = "\$\346\210\246\345\233\275";
+Encode::_utf8_on($flagged_our);
+
+$names_av = fetch_pad_names($cv);
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => '10', msg => 'Fetched UTF-8 our var.' },
+                { cmp => '10', msg => "Symref fetch of an our works." },
+                { cmp => undef, msg => "..and using the encoded form yields undef." },
+               ],
+    pad_size => {
+                    total     => { cmp => 3, msg => 'Sub has three lexicals.' },
+                    utf8      => { cmp => 1, msg => 'Japanese stored as UTF-8.' },
+                    invariant => { cmp => 2, msg => '' },
+                },
+    vars    => [
+                { name => "\$\x{6226}\x{56fd}", msg => "Sub has [\$\x{6226}\x{56fd}].", type => 'ok' },
+                { name => $flagged_our, msg => "Sub has [$flagged_our].", type => 'ok' },
+                { name => $unflagged_our, msg => "Sub doesn't have [$unflagged_our]", type => 'not ok' },
+               ],
+});
+
+
+{
+
+use utf8;
+{
+    my $test;
+    BEGIN {
+        $test = "t\x{c3}\x{a8}st";
+        Encode::_utf8_on($test);
+    }
+    use constant test => $test;
+}
+
+$cv = sub {
+    my $tèst = 'Good';
+
+    return [
+        $tèst,
+        pad_scalar(1, "tèst"),              #"UTF-8"
+        pad_scalar(1, "t\350st"),           #"Latin-1"
+        pad_scalar(1, "t\x{c3}\x{a8}st"),   #"Octal"
+        pad_scalar(1, test()),              #'UTF-8 enc'
+        ];
+};
+
+$names_av = fetch_pad_names($cv);
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => 'Good', msg => 'Fetched through Perl.' },
+                { cmp => 'Good', msg => "pad_scalar: UTF-8 works." },
+                { cmp => 'Good', msg => "pad_scalar: Latin-1 works." },
+                { cmp => 'NOT_IN_PAD', msg => "pad_scalar: Doesn't fetch through octets." },
+                { cmp => 'Good', msg => "pad_scalar: UTF-8-through-encoding works." },
+               ],
+    pad_size => {
+                    total     => { cmp => 1, msg => 'Sub has one lexical.' },
+                    utf8      => { cmp => 0, msg => '' },
+                    invariant => { cmp => 1, msg => '' },
+                },
+    vars    => [],
+});
+
+}
+
+$cv = do {
+    use utf8;
+    sub {
+        my $ニコニコ = 'katakana';
+        my $にこにこ = 'hiragana';
+
+        return [
+                $ニコニコ,
+                $にこにこ,
+                pad_scalar(1, "にこにこ"),
+                pad_scalar(1, "\x{306b}\x{3053}\x{306b}\x{3053}"),
+                pad_scalar(1, "\343\201\253\343\201\223\343\201\253\343\201\223"),
+                pad_scalar(1, "ニコニコ"),
+                pad_scalar(1, "\x{30cb}\x{30b3}\x{30cb}\x{30b3}"),
+                pad_scalar(1, "\343\203\213\343\202\263\343\203\213\343\202\263"),
+            ];
+    }
+};
+
+$names_av = fetch_pad_names($cv);
+
+general_tests( $cv->(), $names_av, {
+    results => [
+                { cmp => 'katakana', msg => '' },
+                { cmp => 'hiragana', msg => '' },
+                { cmp => 'hiragana', msg => '' },
+                { cmp => 'hiragana', msg => '' },
+                { cmp => 'NOT_IN_PAD', msg => '' },
+                { cmp => 'katakana', msg => '' },
+                { cmp => 'katakana', msg => '' },
+                { cmp => 'NOT_IN_PAD', msg => '' },
+               ],
+    pad_size => {
+                    total     => { cmp => 2, msg => 'Sub has two lexicals.' },
+                    utf8      => { cmp => 2, msg => '' },
+                    invariant => { cmp => 0, msg => '' },
+                },
+    vars    => [],
+});
+
+{
+    {
+        my $utf8_e;
+        BEGIN {
+            $utf8_e = "e";
+            Encode::_utf8_on($utf8_e);
+        }
+        use constant utf8_e => $utf8_e;
+    }
+    my $e = 'Invariant';
+    is pad_scalar(1, "e"), pad_scalar(1, utf8_e), 'Fetches the same thing, even if invariant but with differing utf8ness.';
+}
+
+
+sub general_tests {
+    my ($results, $names_av, $tests) = @_;
+
+    for my $i (0..$#$results) {
+        next if $tests->{results}[$i]{SKIP};
+        is $results->[$i], $tests->{results}[$i]{cmp}, $tests->{results}[$i]{msg};
+    }
+
+    is @$names_av, $tests->{pad_size}{total}{cmp}, $tests->{pad_size}{total}{msg};
+    is grep( Encode::is_utf8($_), @$names_av), $tests->{pad_size}{utf8}{cmp};
+    is grep( !Encode::is_utf8($_), @$names_av), $tests->{pad_size}{invariant}{cmp};
+
+    for my $var (@{$tests->{vars}}) {
+        no warnings 'experimental::smartmatch';
+        if ($var->{type} eq 'ok') {
+            ok $var->{name} ~~ $names_av, $var->{msg};
+        } else {
+            ok !($var->{name} ~~ $names_av), $var->{msg};
+        }
+    }
+
+}

Added: vendor/perl/dist/ext/XS-APItest/t/gotosub.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gotosub.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gotosub.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+#!perl -w
+
+# Test that goto &xsub provides the right lexical environment.
+
+use strict;
+
+use Test::More tests => 1;
+use XS::APItest;
+
+# This sub must remain outside the ‘use warnings’ scope.
+sub no_warnings { goto &stringify }
+
+use warnings;
+
+$SIG{__WARN__} = sub { like shift, qr\^Use of uninitialized\ };
+
+no_warnings(my $x) # undefined variable

Added: vendor/perl/dist/ext/XS-APItest/t/gv_autoload4.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gv_autoload4.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gv_autoload4.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,62 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 31;
+
+use_ok('XS::APItest');
+
+my $method = 0;
+my @types  = map { 'gv_autoload' . $_ } qw( 4 _sv _pv _pvn );
+
+sub AUTOLOAD {
+    our $AUTOLOAD;
+    my ($subname, $message) = @_;
+    is $subname, $AUTOLOAD, $message;
+}
+
+my $sub = "nothing";
+
+ok my $glob = XS::APItest::gv_autoload_type(\%::, $sub, 1, $method);
+*{$glob}{CODE}->( __PACKAGE__ . "::" . $sub, '$AUTOLOAD set correctly' );
+
+$sub = "some_sub";
+for my $type ( 0..3 ) {
+    is $glob = XS::APItest::gv_autoload_type(\%::, $sub, $type, $method), "*main::AUTOLOAD", "*main::AUTOLOAD if autoload is true in $types[$type].";
+    *{$glob}{CODE}->( __PACKAGE__ . "::" . $sub, '$AUTOLOAD set correctly' );
+}
+
+$sub = "method\0not quite!";
+
+ok $glob = XS::APItest::gv_autoload_type(\%::, $sub, 0, $method);
+*{$glob}{CODE}->( __PACKAGE__ . "::" . $sub, "gv_autoload4() is nul-clean");
+
+ok $glob = XS::APItest::gv_autoload_type(\%::, $sub, 1, $method);
+*{$glob}{CODE}->( __PACKAGE__ . "::" . $sub, "gv_autoload_sv() is nul-clean");
+
+ok $glob = XS::APItest::gv_autoload_type(\%::, $sub, 2, $method);
+*{$glob}{CODE}->( __PACKAGE__ . "::" . ($sub =~ s/\0.*//r), "gv_autoload_pv() is not nul-clean");
+
+ok $glob = XS::APItest::gv_autoload_type(\%::, $sub, 3, $method);
+*{$glob}{CODE}->( __PACKAGE__ . "::" . $sub, "gv_autoload_pvn() is nul-clean");
+
+{
+    use utf8;
+    use open qw( :utf8 :std );
+
+    package main;
+
+    sub AUTOLOAD {
+        our $AUTOLOAD;
+        my ($subname, $message) = @_;
+        ::is $subname, $AUTOLOAD, $message;
+    }
+
+    for my $type ( 1..3 ) {
+        ::ok $glob = XS::APItest::gv_autoload_type(\%main::, $sub = "method", $type, $method);
+        *{$glob}{CODE}->( "main::" . $sub, "$types[$type]() is UTF8-clean when both the stash and the sub are in UTF-8");
+        ::ok $glob = XS::APItest::gv_autoload_type(\%main::, $sub = "method", $type, $method);
+        *{$glob}{CODE}->( "main::" . $sub, "$types[$type]() is UTF8-clean when only the stash is in UTF-8");
+    }
+}

Added: vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 40;
+
+use_ok('XS::APItest');
+
+my $level = -1;
+my @types = map { 'gv_fetchmeth' . $_ } '', qw( _sv _pv _pvn );
+
+sub test { "Sanity check" }
+
+for my $type ( 0..3 ) {
+    is *{
+         XS::APItest::gv_fetchmeth_type(\%::, "test", $type, $level, 0)
+        }{CODE}->(), "Sanity check";
+}
+
+for my $type ( 0..3 ) {
+    my $meth = "gen$type";
+    ok !XS::APItest::gv_fetchmeth_type(\%::, $meth, $type, -1, 0), "With level = -1, $types[$type] returns false.";
+    ok !$::{$meth}, "...and doesn't vivify the glob.";
+
+    ok !XS::APItest::gv_fetchmeth_type(\%::, $meth, $type, 0, 0), "With level = 0, $types[$type] still returns false.";
+    ok $::{$meth}, "...but does vivify the glob.";
+}
+
+{
+    no warnings 'once';
+    *method = sub { 1 };
+}
+
+ok !XS::APItest::gv_fetchmeth_type(\%::, "method\0not quite!", 0, $level, 0), "gv_fetchmeth() is nul-clean";
+ok !XS::APItest::gv_fetchmeth_type(\%::, "method\0not quite!", 1, $level, 0), "gv_fetchmeth_sv() is nul-clean";
+is XS::APItest::gv_fetchmeth_type(\%::, "method\0not quite!", 2, $level, 0), "*main::method", "gv_fetchmeth_pv() is not nul-clean";
+ok !XS::APItest::gv_fetchmeth_type(\%::, "method\0not quite!", 3, $level, 0), "gv_fetchmeth_pvn() is nul-clean";
+
+{
+    use utf8;
+    use open qw( :utf8 :std );
+
+    package main;
+
+    sub method { 1 }
+
+    my $meth_as_octets =
+            "\357\275\215\357\275\205\357\275\224\357\275\210\357\275\217\357\275\204";
+
+    $level = 1;
+    for my $type ( 1..3 ) {
+        ::is XS::APItest::gv_fetchmeth_type(\%main::, "method", $type, $level, 0), "*main::method", "$types[$type] is UTF-8 clean";
+        ::ok !XS::APItest::gv_fetchmeth_type(\%main::, $meth_as_octets, $type, $level, 0);
+        ::ok !XS::APItest::gv_fetchmeth_type(\%main::, "method", $type, $level, 0);
+        
+        {
+            no strict 'refs';
+            ::ok !XS::APItest::gv_fetchmeth_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, $level, 0);
+            ::ok !XS::APItest::gv_fetchmeth_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, $level, 0);
+        }
+    }
+}

Added: vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth_autoload.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth_autoload.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gv_fetchmeth_autoload.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,83 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 53;
+
+use_ok('XS::APItest');
+
+my $level = -1;
+my @types = map { 'gv_fetchmeth' . $_ . "_autoload" } '', qw( _sv _pv _pvn );
+
+sub test { "Sanity check" }
+
+for my $type ( 0..3 ) {
+    is *{XS::APItest::gv_fetchmeth_autoload_type(
+           \%::, "test", $type, $level, 0
+        )}{CODE}->(), "Sanity check";
+}
+
+{
+    ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, "etc", 1, $level, 0), "fails when the glob doesn't exist and AUTOLOAD is undefined,";
+    local *AUTOLOAD = sub { 1 };
+    is XS::APItest::gv_fetchmeth_autoload_type(\%::, "etc", 1, $level, 0), "*main::etc", "..but defining AUTOLOAD makes it succeed.";
+}
+
+for my $type ( 0..3 ) {
+    my $meth = "gen$type";
+    ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, $meth, $type, -1, 0), "With level = -1, $types[$type] returns false.";
+    ok !$::{$meth}, "...and doesn't vivify the glob.";
+
+    ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, $meth, $type, 0, 0), "With level = 0, $types[$type] still returns false.";
+    ok $::{$meth}, "...but does vivify the glob.";
+
+    ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, $meth . $type, $type, $level, 0), "$types[$type] fails when the glob doesn't exist and AUTOLOAD is undefined,";
+    local *AUTOLOAD = sub { 1 };
+    is XS::APItest::gv_fetchmeth_autoload_type(\%::, $meth . $type, $type, $level, 0), "*main::$meth$type", "..but defining AUTOLOAD makes it succeed.";
+}
+
+{
+    no warnings 'once';
+    *method = sub { 1 };
+}
+
+ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, "method\0not quite!", 0, $level, 0), "gv_fetchmeth() is nul-clean";
+ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, "method\0not quite!", 1, $level, 0), "gv_fetchmeth_autoload_sv() is nul-clean";
+is XS::APItest::gv_fetchmeth_autoload_type(\%::, "method\0not quite!", 2, $level, 0), "*main::method", "gv_fetchmeth_autoload_pv() is not nul-clean";
+ok !XS::APItest::gv_fetchmeth_autoload_type(\%::, "method\0not quite!", 3, $level, 0), "gv_fetchmeth_autoload_pvn() is nul-clean";
+
+{
+    use utf8;
+    use open qw( :utf8 :std );
+
+    package main;
+
+    sub method { 1 }
+
+    my $meth_as_octets =
+            "\357\275\215\357\275\205\357\275\224\357\275\210\357\275\217\357\275\204";
+
+    $level = -1;
+    for my $type ( 1..3 ) {
+        ::is XS::APItest::gv_fetchmeth_autoload_type(\%main::, "method", $type, $level, 0), "*main::method", "$types[$type] is UTF-8 clean";
+        ::ok !XS::APItest::gv_fetchmeth_autoload_type(\%main::, $meth_as_octets, $type, $level, 0);
+        ::ok !XS::APItest::gv_fetchmeth_autoload_type(\%main::, "method", $type, $level, 0);
+        
+        {
+            no warnings 'once';
+            local *AUTOLOAD = sub { 1 };
+            ::is XS::APItest::gv_fetchmeth_autoload_type(\%main::, "method$type", $type, $level, 0), "*main::method$type", "Autoloading UTF-8 subs works";
+        }
+
+        {
+            no strict 'refs';
+            ::ok !XS::APItest::gv_fetchmeth_autoload_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, $level, 0);
+            ::ok !XS::APItest::gv_fetchmeth_autoload_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, $level, 0);
+        }
+    }
+}

Added: vendor/perl/dist/ext/XS-APItest/t/gv_fetchmethod_flags.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gv_fetchmethod_flags.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gv_fetchmethod_flags.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,51 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 24;
+
+use_ok('XS::APItest');
+
+sub method { 1 }
+
+ok !XS::APItest::gv_fetchmethod_flags_type(\%::, "nothing", 1, 0);
+
+for my $type ( 1..3 ) {
+    is XS::APItest::gv_fetchmethod_flags_type(\%::, "method", $type, 0), "*main::method", "Sanity check";
+}
+
+ok !XS::APItest::gv_fetchmethod_flags_type(\%::, "method\0not quite!", 1, 0), "gv_fetchmethod_flags_sv() is nul-clean";
+ok !XS::APItest::gv_fetchmethod_flags_type(\%::, "method\0not quite!", 3, 0), "gv_fetchmethod_flags_pvn() is nul-clean";
+
+ok XS::APItest::gv_fetchmethod_flags_type(\%::, "method\0not quite!", 0, 0), "gv_fetchmethod_flags() is not nul-clean";
+is XS::APItest::gv_fetchmethod_flags_type(\%::, "method\0not quite!", 2, 0), "*main::method", "gv_fetchmethod_flags_pv() is not nul-clean";
+
+{
+    use utf8;
+    use open qw( :utf8 :std );
+
+    package main;
+    
+    sub method { 1 }
+    sub method { 1 }
+
+    my $meth_as_octets =
+            "\357\275\215\357\275\205\357\275\224\357\275\210\357\275\217\357\275\204";
+
+    for my $type ( 1..3 ) {
+        ::is XS::APItest::gv_fetchmethod_flags_type(\%main::, "method", $type, 0), "*main::method";
+        ::ok !XS::APItest::gv_fetchmethod_flags_type(\%main::, $meth_as_octets, $type, 0);
+        ::is XS::APItest::gv_fetchmethod_flags_type(\%main::, "method", $type, 0), "*main::method";
+        
+        {
+            no strict 'refs';
+            ::ok !XS::APItest::gv_fetchmethod_flags_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, 0);
+            ::ok !XS::APItest::gv_fetchmethod_flags_type(
+                            \%{"\357\275\215\357\275\201\357\275\211\357\275\216::"},
+                            "method", $type, 0);
+        }
+    }
+}

Added: vendor/perl/dist/ext/XS-APItest/t/gv_init.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/gv_init.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/gv_init.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!perl
+
+use strict;
+use warnings;
+use Test::More tests => 12;
+
+use XS::APItest;
+
+is XS::APItest::gv_init_type("sanity_check", 0, 0, 0), "*main::sanity_check";
+ok $::{sanity_check};
+
+for my $type (0..3) {
+    is XS::APItest::gv_init_type("test$type", 0, 0, $type), "*main::test$type";
+    ok $::{"test$type"};
+}
+
+my $latin_1 = "è";
+my $utf8    = "\x{30cb}";
+
+is XS::APItest::gv_init_type($latin_1, 0, 0, 1), "*main::$latin_1";
+is XS::APItest::gv_init_type($utf8, 0, 0, 1), "*main::$utf8";

Added: vendor/perl/dist/ext/XS-APItest/t/handy.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/handy.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/handy.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,212 @@
+#!perl -w
+
+use strict;
+use Test::More;
+use Config;
+
+use XS::APItest;
+
+use Unicode::UCD qw(prop_invlist);
+
+sub truth($) {  # Converts values so is() works
+    return (shift) ? 1 : 0;
+}
+
+my $locale;
+if($Config{d_setlocale}) {
+    require POSIX;
+    $locale = POSIX::setlocale( &POSIX::LC_ALL, "C");
+    if (defined $locale && $locale eq 'C') {
+        BEGIN {
+            if($Config{d_setlocale}) {
+                require locale; import locale; # make \w work right in non-ASCII lands
+            }
+        }
+
+        # Some locale implementations don't have the 128-255 characters all
+        # mean nothing.  Skip the locale tests in that situation
+        for my $i (128 .. 255) {
+            if (chr($i) =~ /[[:print:]]/) {
+                undef $locale;
+                last;
+            }
+        }
+    }
+}
+
+my %properties = (
+                   # name => Lookup-property name
+                   alnum => 'Word',
+                   wordchar => 'Word',
+                   alphanumeric => 'Alnum',
+                   alpha => 'Alpha',
+                   ascii => 'ASCII',
+                   blank => 'Blank',
+                   cntrl => 'Control',
+                   digit => 'Digit',
+                   graph => 'Graph',
+                   idfirst => '_Perl_IDStart',
+                   idcont => '_Perl_IDCont',
+                   lower => 'Lower',
+                   print => 'Print',
+                   psxspc => 'XPosixSpace',
+                   punct => 'XPosixPunct',
+                   quotemeta => '_Perl_Quotemeta',
+                   space => 'XPerlSpace',
+                   vertws => 'VertSpace',
+                   upper => 'Upper',
+                   xdigit => 'XDigit',
+                );
+
+my @warnings;
+local $SIG{__WARN__} = sub { push @warnings, @_ };
+
+use charnames ();
+foreach my $name (sort keys %properties) {
+    my $property = $properties{$name};
+    my @invlist = prop_invlist($property, '_perl_core_internal_ok');
+    if (! @invlist) {
+        fail("No inversion list found for $property");
+        next;
+    }
+
+    # Include all the Latin1 code points, plus 0x100.
+    my @code_points = (0 .. 256);
+
+    # Then include the next few boundaries above those from this property
+    my $above_latins = 0;
+    foreach my $range_start (@invlist) {
+        next if $range_start < 257;
+        push @code_points, $range_start - 1, $range_start;
+        $above_latins++;
+        last if $above_latins > 5;
+    }
+
+    # This makes sure we are using the Perl definition of idfirst and idcont,
+    # and not the Unicode.  There are a few differences.
+    push @code_points, ord "\N{ESTIMATED SYMBOL}" if $name =~ /^id(first|cont)/;
+    if ($name eq "idcont") {    # And some that are continuation but not start
+        push @code_points, ord("\N{GREEK ANO TELEIA}"),
+                           ord("\N{COMBINING GRAVE ACCENT}");
+    }
+
+    # And finally one non-Unicode code point.
+    push @code_points, 0x110000;    # Above Unicode, no prop should match
+    no warnings 'non_unicode';
+
+    for my $i (@code_points) {
+        my $function = uc($name);
+
+        my $matches = Unicode::UCD::_search_invlist(\@invlist, $i);
+        if (! defined $matches) {
+            $matches = 0;
+        }
+        else {
+            $matches = truth(! ($matches % 2));
+        }
+
+        my $ret;
+        my $char_name = charnames::viacode($i) // "No name";
+        my $display_name = sprintf "\\N{U+%02X, %s}", $i, $char_name;
+
+        if ($name eq 'quotemeta') { # There is only one macro for this, and is
+                                    # defined only for Latin1 range
+            $ret = truth eval "test_is${function}($i)";
+            if ($@) {
+                fail $@;
+            }
+            else {
+                my $truth = truth($matches && $i < 256);
+                is ($ret, $truth, "is${function}( $display_name ) == $truth");
+            }
+            next;
+        }
+
+        # vertws is always all of Unicode; ALNUM_A and ALNUM_L1 are not
+        # defined as they were added later, after WORDCHAR was created to be a
+        # clearer synonym for ALNUM
+        if ($name ne 'vertws') {
+            if ($name ne 'alnum') {
+                $ret = truth eval "test_is${function}_A($i)";
+                if ($@) {
+                    fail($@);
+                }
+                else {
+                    my $truth = truth($matches && $i < 128);
+                    is ($ret, $truth, "is${function}_A( $display_name ) == $truth");
+                }
+                $ret = truth eval "test_is${function}_L1($i)";
+                if ($@) {
+                    fail($@);
+                }
+                else {
+                    my $truth = truth($matches && $i < 256);
+                    is ($ret, $truth, "is${function}_L1( $display_name ) == $truth");
+                }
+            }
+
+            if (defined $locale) {
+                require locale; import locale;
+
+                $ret = truth eval "test_is${function}_LC($i)";
+                if ($@) {
+                    fail($@);
+                }
+                else {
+                    my $truth = truth($matches && $i < 128);
+                    is ($ret, $truth, "is${function}_LC( $display_name ) == $truth");
+                }
+            }
+        }
+
+        $ret = truth eval "test_is${function}_uni($i)";
+        if ($@) {
+            fail($@);
+        }
+        else {
+            is ($ret, $matches, "is${function}_uni( $display_name ) == $matches");
+        }
+
+        if (defined $locale && $name ne 'vertws') {
+            require locale; import locale;
+
+            $ret = truth eval "test_is${function}_LC_uvchr('$i')";
+            if ($@) {
+                fail($@);
+            }
+            else {
+                my $truth = truth($matches && ($i < 128 || $i > 255));
+                is ($ret, $truth, "is${function}_LC_uvchr( $display_name ) == $truth");
+            }
+        }
+
+        my $char = chr($i);
+        utf8::upgrade($char);
+        $char = quotemeta $char if $char eq '\\' || $char eq "'";
+        $ret = truth eval "test_is${function}_utf8('$char')";
+        if ($@) {
+            fail($@);
+        }
+        else {
+            is ($ret, $matches, "is${function}_utf8( $display_name ) == $matches");
+        }
+
+        if ($name ne 'vertws' && defined $locale) {
+            require locale; import locale;
+
+            $ret = truth eval "test_is${function}_LC_utf8('$char')";
+            if ($@) {
+                fail($@);
+            }
+            else {
+                my $truth = truth($matches && ($i < 128 || $i > 255));
+                is ($ret, $truth, "is${function}_LC_utf8( $display_name ) == $truth");
+            }
+        }
+    }
+}
+
+# This is primarily to make sure that no non-Unicode warnings get generated
+is(scalar @warnings, 0, "No warnings were generated " . join ", ", @warnings);
+
+done_testing;

Added: vendor/perl/dist/ext/XS-APItest/t/labelconst_utf8.aux
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/labelconst_utf8.aux	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/labelconst_utf8.aux	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+use utf8;
+use open qw( :utf8 :std );
+
+use XS::APItest qw(labelconst);
+my $z = "";
+$z .= labelconst FǑǑ:;
+$z .= labelconst BÀR:
+	;
+$z .= labelconst ᛒÀZ
+	:;
+$z .= labelconst
+	QÙÙX:;
+$z;

Added: vendor/perl/dist/ext/XS-APItest/t/lexsub.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/lexsub.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/lexsub.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+use Test::More tests => 4;
+use XS::APItest;
+
+
+sub fribbler { 2*shift }
+{
+    BEGIN { lexical_import fribbler => sub { 3*shift } }
+    is fribbler(15), 45, 'lexical subs via pad_add_name';
+}
+is fribbler(15), 30, 'XS-allocated lexical subs falling out of scope';
+
+{
+    BEGIN { lexical_import fribbler => sub { 3*shift } }
+    is fribbler(15), 45, 'lexical subs via pad_add_name';
+    no warnings;
+    use feature 'lexical_subs';
+    our sub fribbler;
+    is fribbler(15), 30, 'our sub overrides XS-registered lexical sub';
+}

Added: vendor/perl/dist/ext/XS-APItest/t/lvalue.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/lvalue.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/lvalue.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,32 @@
+# Miscellaneous tests for XS lvalue functions
+
+use warnings;
+use strict;
+
+use Test::More tests => 4;
+
+use XS::APItest 'lv_temp_object';
+
+
+{
+    my $w;
+    local $SIG{__WARN__} = sub { $w = shift };
+
+    # [perl #31946]
+    lv_temp_object() = 75;
+    like $w, qr/Useless assignment to a temporary at/,
+	'warning when assigning to temp returned from XS lv sub';
+    undef $w;
+    (lv_temp_object()) = 75;
+    like $w, qr/Useless assignment to a temporary at/,
+	'warning when list-assigning to temp returned from XS lv sub';
+
+    $w = undef;
+    {
+	package XS::APItest::TempObj;
+	use overload '.=' => sub { $::assigned = $_[1] };
+    }
+    lv_temp_object() .= 63;
+    is $::assigned, 63, 'overloaded .= on temp obj returned from lv sub';
+    is $w, undef, 'no warning from overloaded .= on temp obj';
+}

Added: vendor/perl/dist/ext/XS-APItest/t/mro.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/mro.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/mro.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,16 @@
+#!perl
+
+use XS::APItest;
+use Test::More;
+
+plan tests => 1;
+
+use mro;
+mro::set_mro(AA => 'justisa');
+
+ at AA::ISA = qw "BB CC";
+
+sub BB::fromp { "bb" }
+sub CC::fromp { "cc" }
+
+is fromp AA, 'bb', 'first elem of linearisation is not ignored';

Added: vendor/perl/dist/ext/XS-APItest/t/newCONSTSUB.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/newCONSTSUB.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/newCONSTSUB.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!perl
+
+use strict;
+use utf8;
+use open qw( :utf8 :std );
+use Test::More tests => 22;
+
+use XS::APItest;
+
+# This test must happen outside of any warnings scope
+{
+ local $^W;
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ sub frimple() { 78 }
+ newCONSTSUB_flags(\%::, "frimple", 0, undef);
+ like $w, qr/Constant subroutine frimple redefined at /,
+   'newCONSTSUB constant redefinition warning is unaffected by $^W=0';
+ undef $w;
+ newCONSTSUB_flags(\%::, "frimple", 0, undef);
+ is $w, undef, '...unless the const SVs are the same';
+ eval 'sub frimple() { 78 }';
+ undef $w;
+ newCONSTSUB_flags(\%::, "frimple", 0, "78");
+ is $w, undef, '...or the const SVs have the same value';
+}
+
+use warnings;
+
+my ($const, $glob) =
+ XS::APItest::newCONSTSUB(\%::, "sanity_check", 0, undef);
+
+ok $const;
+ok *{$glob}{CODE};
+
+($const, $glob) =
+  XS::APItest::newCONSTSUB(\%::, "\x{30cb}", 0, undef);
+ok $const, "newCONSTSUB generates the constant,";
+ok *{$glob}{CODE}, "..and the glob,";
+ok !$::{"\x{30cb}"}, "...but not the right one";
+
+($const, $glob) =
+  XS::APItest::newCONSTSUB_flags(\%::, "\x{30cd}", 0, undef);
+ok $const, "newCONSTSUB_flags generates the constant,";
+ok *{$glob}{CODE}, "..and the glob,";
+ok $::{"\x{30cd}"}, "...the right one!";
+
+eval q{
+ BEGIN {
+  no warnings;
+  my $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  *foo = sub(){123};
+  newCONSTSUB_flags(\%::, "foo", 0, undef);
+  is $w, undef, 'newCONSTSUB uses calling scope for redefinition warnings';
+ }
+};
+
+{
+ no strict 'refs';
+ *{"foo::\x{100}"} = sub(){return 123};
+ my $w;
+ local $SIG{__WARN__} = sub { $w .= shift };
+ newCONSTSUB_flags(\%foo::, "\x{100}", 0, undef);
+ like $w, qr/Subroutine \x{100} redefined at /,
+   'newCONSTSUB redefinition warning + utf8';
+ undef $w;
+ newCONSTSUB_flags(\%foo::, "\x{100}", 0, 54);
+ like $w, qr/Constant subroutine \x{100} redefined at /,
+   'newCONSTSUB constant redefinition warning + utf8';
+}
+
+# XS::APItest was not handling references correctly here
+
+package Counter {
+    our $count = 0;
+
+    sub new {
+        ++$count;
+        my $o = bless [];
+        return $o;
+    }
+
+    sub DESTROY {
+        --$count;
+    }
+};
+
+foreach (['newCONSTSUB', 'ZZIP'],
+         ['newCONSTSUB_flags', 'BRRRAPP']) {
+    my ($using, $name) = @$_;
+    is($Counter::count, 0, 'No objects exist before we start');
+    my $sub = XS::APItest->can($using);
+    ($const, $glob) = $sub->(\%::, $name, 0, Counter->new());
+    is($const, 1, "subroutine generated by $using is CvCONST");
+    is($Counter::count, 1, '1 object now exists');
+    {
+        no warnings 'redefine';
+        *$glob = sub () {};
+    }
+    is($Counter::count, 0, 'no objects remain');
+}

Added: vendor/perl/dist/ext/XS-APItest/t/pad_scalar.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/pad_scalar.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/pad_scalar.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,75 @@
+use warnings;
+use strict;
+
+use Test::More tests => 76;
+
+use XS::APItest qw(pad_scalar);
+
+is pad_scalar(1, "foo"), "NOT_IN_PAD";
+is pad_scalar(2, "foo"), "NOT_IN_PAD";
+is pad_scalar(3, "foo"), "NOT_IN_PAD";
+is pad_scalar(4, "foo"), "NOT_IN_PAD";
+is pad_scalar(1, "bar"), "NOT_IN_PAD";
+is pad_scalar(2, "bar"), "NOT_IN_PAD";
+is pad_scalar(3, "bar"), "NOT_IN_PAD";
+
+our $foo = "wibble";
+my $bar = "wobble";
+is pad_scalar(1, "foo"), "NOT_MY";
+is pad_scalar(2, "foo"), "NOT_MY";
+is pad_scalar(3, "foo"), "NOT_MY";
+is pad_scalar(4, "foo"), "NOT_MY";
+is pad_scalar(1, "bar"), "wobble";
+is pad_scalar(2, "bar"), "wobble";
+is pad_scalar(3, "bar"), "wobble";
+
+sub aa($);
+sub aa($) {
+    my $xyz;
+    ok \pad_scalar(1, "xyz") == \$xyz;
+    ok \pad_scalar(2, "xyz") == \$xyz;
+    ok \pad_scalar(3, "xyz") == \$xyz;
+    aa(0) if $_[0];
+    ok \pad_scalar(1, "xyz") == \$xyz;
+    ok \pad_scalar(2, "xyz") == \$xyz;
+    ok \pad_scalar(3, "xyz") == \$xyz;
+    is pad_scalar(1, "bar"), "wobble";
+    is pad_scalar(2, "bar"), "wobble";
+    is pad_scalar(3, "bar"), "wobble";
+}
+aa(1);
+
+sub bb() {
+    my $counter = 0;
+    my $foo = \$counter;
+    return sub {
+	ok pad_scalar(1, "foo") == \pad_scalar(1, "counter");
+	ok pad_scalar(2, "foo") == \pad_scalar(1, "counter");
+	ok pad_scalar(3, "foo") == \pad_scalar(1, "counter");
+	ok pad_scalar(4, "foo") == \pad_scalar(1, "counter");
+	if(pad_scalar(1, "counter") % 3 == 0) {
+	    return pad_scalar(1, "counter")++;
+	} elsif(pad_scalar(1, "counter") % 3 == 0) {
+	    return pad_scalar(2, "counter")++;
+	} else {
+	    return pad_scalar(3, "counter")++;
+	}
+    };
+}
+my $a = bb();
+my $b = bb();
+is $a->(), 0;
+is $a->(), 1;
+is $a->(), 2;
+is $a->(), 3;
+is $b->(), 0;
+is $b->(), 1;
+is $a->(), 4;
+is $b->(), 2;
+
+is pad_scalar(1, "foo"), "NOT_MY";
+is pad_scalar(2, "foo"), "NOT_MY";
+is pad_scalar(3, "foo"), "NOT_MY";
+is pad_scalar(4, "foo"), "NOT_MY";
+
+1;

Added: vendor/perl/dist/ext/XS-APItest/t/sort.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/sort.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/sort.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+#!perl -w
+
+use strict;
+use warnings;
+use Test::More tests => 2;
+
+use XS::APItest;
+
+is join("", sort xs_cmp split//, '1415926535'), '1135559246',
+  'sort treats XS cmp routines as having implicit ($$)';
+{
+  my $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  () = sort xs_cmp_undef 1,2;
+  like $w, qr/^Use of uninitialized value in sort at /,
+   'warning about undef retval from cmp routine mentions sort';
+}

Added: vendor/perl/dist/ext/XS-APItest/t/sviscow.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/sviscow.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/sviscow.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,13 @@
+use strict;
+use warnings; no warnings 'once';
+
+use Test::More tests => 1;
+
+use XS::APItest;
+use Hash::Util 'lock_value';
+
+my %h;
+$h{g} = *foo;
+lock_value %h, 'g';
+
+ok(!SvIsCOW($h{g}), 'SvIsCOW is honest when it comes to globs');

Added: vendor/perl/dist/ext/XS-APItest/t/svpv.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/svpv.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/svpv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,25 @@
+#!perl -w
+
+use Test::More tests => 18;
+
+use XS::APItest;
+
+for my $func ('SvPVbyte', 'SvPVutf8') {
+ $g = *glob;
+ $r = \1;
+ is &$func($g), '*main::glob', "$func(\$glob_copy)";
+ is ref\$g, 'GLOB', "$func(\$glob_copy) does not flatten the glob";
+ is &$func($r), "$r", "$func(\$ref)";
+ is ref\$r, 'REF', "$func(\$ref) does not flatten the ref";
+
+ is &$func(*glob), '*main::glob', "$func(*glob)";
+ is ref\$::{glob}, 'GLOB', "$func(*glob) does not flatten the glob";
+ is &$func($^V), "$^V", "$func(\$ro_ref)";
+ is ref\$^V, 'REF', "$func(\$ro_ref) does not flatten the ref";
+}
+
+eval 'SvPVbyte(*{chr 256})';
+like $@, qr/^Wide character/, 'SvPVbyte fails on Unicode glob';
+package r { use overload '""' => sub { substr "\x{100}\xff", -1 } }
+is SvPVbyte(bless [], r::), "\xff",
+  'SvPVbyte on ref returning downgradable utf8 string';

Added: vendor/perl/dist/ext/XS-APItest/t/sym-hook.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/sym-hook.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/sym-hook.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,32 @@
+
+# Test that PL_check hooks for RV2*V can override symbol lookups.
+
+# So far we only test RV2CV.
+
+use XS::APItest;
+use Test::More tests => 4;
+
+BEGIN {
+    setup_rv2cv_addunderbar;
+    $^H{'XS::APItest/addunder'} = 1; # make foo() actually call foo_()
+}
+
+sub foo_ { @_ ? shift . "___" : "phew" }
+
+is(foo(), "phew");
+
+# Make sure subs looked up via rv2cv check hooks are not treated as second-
+# class subs.
+
+BEGIN { # If there is a foo symbol, this test will not be testing anything.
+    delete $::{foo};
+    delete $::{goo};
+}
+is((foo bar), 'bar___');
+$bar = "baz";
+is((foo $bar), 'baz___');
+
+# Proto should cause goo() to override Foo->goo interpretation.
+{package Foom}
+sub goo_ (*) { shift . "===" }
+is((goo Foom), "Foom===");

Added: vendor/perl/dist/ext/XS-APItest/t/underscore_length.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/underscore_length.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/underscore_length.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+use warnings; no warnings 'experimental::lexical_topic';
+use strict;
+
+use Test::More tests => 4;
+
+use XS::APItest qw(underscore_length);
+
+$_ = "foo";
+is underscore_length(), 3;
+
+$_ = "snowman \x{2603}";
+is underscore_length(), 9;
+
+my $_ = "xyzzy";
+is underscore_length(), 5;
+
+$_ = "pile of poo \x{1f4a9}";
+is underscore_length(), 13;
+
+1;

Added: vendor/perl/dist/ext/XS-APItest/t/whichsig.t
===================================================================
--- vendor/perl/dist/ext/XS-APItest/t/whichsig.t	                        (rev 0)
+++ vendor/perl/dist/ext/XS-APItest/t/whichsig.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,26 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 9;
+
+use_ok('XS::APItest');
+
+my @types = map { 'whichsig' . $_ } '', qw( _sv _pv _pvn );
+
+sub test { "Sanity check" }
+
+{
+    for my $type ( 0..3 ) {
+        is XS::APItest::whichsig_type("KILL", $type), 9, "Sanity check, $types[$type] works";
+    }
+}
+
+is XS::APItest::whichsig_type("KILL\0whoops", 0), 9, "whichsig() is not nul-clean";
+
+is XS::APItest::whichsig_type("KILL\0whoops", 1), -1, "whichsig_sv() is nul-clean";
+
+is XS::APItest::whichsig_type("KILL\0whoops", 2), 9, "whichsig_pv() is not nul-clean";
+
+is XS::APItest::whichsig_type("KILL\0whoops", 3), -1, "whichsig_pvn() is nul-clean";

Added: vendor/perl/dist/ext/arybase/arybase.pm
===================================================================
--- vendor/perl/dist/ext/arybase/arybase.pm	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/arybase.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,98 @@
+package arybase;
+
+our $VERSION = "0.06";
+
+require XSLoader;
+XSLoader::load(); # This returns true, which makes require happy.
+
+__END__
+
+=head1 NAME
+
+arybase - Set indexing base via $[
+
+=head1 SYNOPSIS
+
+    $[ = 1;
+
+    @a = qw(Sun Mon Tue Wed Thu Fri Sat);
+    print $a[3], "\n";  # prints Tue
+
+=head1 DESCRIPTION
+
+This module implements Perl's C<$[> variable.  You should not use it
+directly.
+
+Assigning to C<$[> has the I<compile-time> effect of making the assigned
+value, converted to an integer, the index of the first element in an array
+and the first character in a substring, within the enclosing lexical scope.
+
+It can be written with or without C<local>:
+
+    $[ = 1;
+    local $[ = 1;
+
+It only works if the assignment can be detected at compile time and the
+value assigned is constant.
+
+It affects the following operations:
+
+    $array[$element]
+    @array[@slice]
+    $#array
+    (list())[$slice]
+    splice @array, $index, ...
+    each @array
+    keys @array
+
+    index $string, $substring  # return value is affected
+    pos $string
+    substr $string, $offset, ...
+
+As with the default base of 0, negative bases count from the end of the
+array or string, starting with -1.  If C<$[> is a positive integer, indices
+from C<$[-1> to 0 also count from the end.  If C<$[> is negative (why would
+you do that, though?), indices from C<$[> to 0 count from the beginning of
+the string, but indices below C<$[> count from the end of the string as
+though the base were 0.
+
+Prior to Perl 5.16, indices from 0 to C<$[-1> inclusive, for positive
+values of C<$[>, behaved differently for different operations; negative
+indices equal to or greater than a negative C<$[> likewise behaved
+inconsistently.
+
+=head1 HISTORY
+
+Before Perl 5, C<$[> was a global variable that affected all array indices
+and string offsets.
+
+Starting with Perl 5, it became a file-scoped compile-time directive, which
+could be made lexically-scoped with C<local>.  "File-scoped" means that the
+C<$[> assignment could leak out of the block in which occurred:
+
+    {
+        $[ = 1;
+        # ... array base is 1 here ...
+    }
+    # ... still 1, but not in other files ...
+
+In Perl 5.10, it became strictly lexical.  The file-scoped behaviour was
+removed (perhaps inadvertently, but what's done is done).
+
+In Perl 5.16, the implementation was moved into this module, and out of the
+Perl core.  The erratic behaviour that occurred with indices between -1 and
+C<$[> was made consistent between operations, and, for negative bases,
+indices from C<$[> to -1 inclusive were made consistent between operations.
+
+=head1 BUGS
+
+Error messages that mention array indices use the 0-based index.
+
+C<keys $arrayref> and C<each $arrayref> do not respect the current value of
+C<$[>.
+
+=head1 SEE ALSO
+
+L<perlvar/"$[">, L<Array::Base> and L<String::Base>.
+
+=cut

Added: vendor/perl/dist/ext/arybase/arybase.xs
===================================================================
--- vendor/perl/dist/ext/arybase/arybase.xs	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/arybase.xs	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,485 @@
+#define PERL_NO_GET_CONTEXT     /* we want efficiency */
+#define PERL_EXT
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+#include "feature.h"
+
+/* ... op => info map ................................................. */
+
+typedef struct {
+ OP *(*old_pp)(pTHX);
+ IV base;
+} ab_op_info;
+
+#define PTABLE_NAME        ptable_map
+#define PTABLE_VAL_FREE(V) PerlMemShared_free(V)
+#include "ptable.h"
+#define ptable_map_store(T, K, V) ptable_map_store(aPTBLMS_ (T), (K), (V))
+
+STATIC ptable *ab_op_map = NULL;
+
+#ifdef USE_ITHREADS
+STATIC perl_mutex ab_op_map_mutex;
+#endif
+
+STATIC const ab_op_info *ab_map_fetch(const OP *o, ab_op_info *oi) {
+ const ab_op_info *val;
+
+#ifdef USE_ITHREADS
+ MUTEX_LOCK(&ab_op_map_mutex);
+#endif
+
+ val = (ab_op_info *)ptable_fetch(ab_op_map, o);
+ if (val) {
+  *oi = *val;
+  val = oi;
+ }
+
+#ifdef USE_ITHREADS
+ MUTEX_UNLOCK(&ab_op_map_mutex);
+#endif
+
+ return val;
+}
+
+STATIC const ab_op_info *ab_map_store_locked(
+ pPTBLMS_ const OP *o, OP *(*old_pp)(pTHX), IV base
+) {
+#define ab_map_store_locked(O, PP, B) \
+  ab_map_store_locked(aPTBLMS_ (O), (PP), (B))
+ ab_op_info *oi;
+
+ if (!(oi = (ab_op_info *)ptable_fetch(ab_op_map, o))) {
+  oi = (ab_op_info *)PerlMemShared_malloc(sizeof *oi);
+  ptable_map_store(ab_op_map, o, oi);
+ }
+
+ oi->old_pp = old_pp;
+ oi->base   = base;
+ return oi;
+}
+
+STATIC void ab_map_store(
+ pPTBLMS_ const OP *o, OP *(*old_pp)(pTHX), IV base)
+{
+#define ab_map_store(O, PP, B) ab_map_store(aPTBLMS_ (O),(PP),(B))
+
+#ifdef USE_ITHREADS
+ MUTEX_LOCK(&ab_op_map_mutex);
+#endif
+
+ ab_map_store_locked(o, old_pp, base);
+
+#ifdef USE_ITHREADS
+ MUTEX_UNLOCK(&ab_op_map_mutex);
+#endif
+}
+
+STATIC void ab_map_delete(pTHX_ const OP *o) {
+#define ab_map_delete(O) ab_map_delete(aTHX_ (O))
+#ifdef USE_ITHREADS
+ MUTEX_LOCK(&ab_op_map_mutex);
+#endif
+
+ ptable_map_store(ab_op_map, o, NULL);
+
+#ifdef USE_ITHREADS
+ MUTEX_UNLOCK(&ab_op_map_mutex);
+#endif
+}
+
+/* ... $[ Implementation .............................................. */
+
+#define hintkey     "$["
+#define hintkey_len  (sizeof(hintkey)-1)
+
+STATIC SV * ab_hint(pTHX_ const bool create) {
+#define ab_hint(c) ab_hint(aTHX_ c)
+ dVAR;
+ SV **val
+  = hv_fetch(GvHV(PL_hintgv), hintkey, hintkey_len, create);
+ if (!val)
+  return 0;
+ return *val;
+}
+
+/* current base at compile time */
+STATIC IV current_base(pTHX) {
+#define current_base() current_base(aTHX)
+ SV *hsv = ab_hint(0);
+ assert(FEATURE_ARYBASE_IS_ENABLED);
+ if (!hsv || !SvOK(hsv)) return 0;
+ return SvIV(hsv);
+}
+
+STATIC void set_arybase_to(pTHX_ IV base) {
+#define set_arybase_to(base) set_arybase_to(aTHX_ (base))
+ dVAR;
+ SV *hsv = ab_hint(1);
+ sv_setiv_mg(hsv, base);
+}
+
+#define old_ck(opname) STATIC OP *(*ab_old_ck_##opname)(pTHX_ OP *) = 0
+old_ck(sassign);
+old_ck(aassign);
+old_ck(aelem);
+old_ck(aslice);
+old_ck(lslice);
+old_ck(av2arylen);
+old_ck(splice);
+old_ck(keys);
+old_ck(each);
+old_ck(substr);
+old_ck(rindex);
+old_ck(index);
+old_ck(pos);
+
+STATIC bool ab_op_is_dollar_bracket(pTHX_ OP *o) {
+#define ab_op_is_dollar_bracket(o) ab_op_is_dollar_bracket(aTHX_ (o))
+ OP *c;
+ return o->op_type == OP_RV2SV && (o->op_flags & OPf_KIDS)
+  && (c = cUNOPx(o)->op_first)
+  && c->op_type == OP_GV
+  && GvSTASH(cGVOPx_gv(c)) == PL_defstash
+  && strEQ(GvNAME(cGVOPx_gv(c)), "[");
+}
+
+STATIC void ab_neuter_dollar_bracket(pTHX_ OP *o) {
+#define ab_neuter_dollar_bracket(o) ab_neuter_dollar_bracket(aTHX_ (o))
+ OP *oldc, *newc;
+ /*
+  * Must replace the core's $[ with something that can accept assignment
+  * of non-zero value and can be local()ised.  Simplest thing is a
+  * different global variable.
+  */
+ oldc = cUNOPx(o)->op_first;
+ newc = newGVOP(OP_GV, 0,
+   gv_fetchpvs("arybase::leftbrack", GV_ADDMULTI, SVt_PVGV));
+ cUNOPx(o)->op_first = newc;
+ op_free(oldc);
+}
+
+STATIC void ab_process_assignment(pTHX_ OP *left, OP *right) {
+#define ab_process_assignment(l, r) \
+    ab_process_assignment(aTHX_ (l), (r))
+ if (ab_op_is_dollar_bracket(left) && right->op_type == OP_CONST) {
+  set_arybase_to(SvIV(cSVOPx_sv(right)));
+  ab_neuter_dollar_bracket(left);
+  Perl_ck_warner_d(aTHX_
+   packWARN(WARN_DEPRECATED), "Use of assignment to $[ is deprecated"
+  );
+ }
+}
+
+STATIC OP *ab_ck_sassign(pTHX_ OP *o) {
+ o = (*ab_old_ck_sassign)(aTHX_ o);
+ if (o->op_type == OP_SASSIGN && FEATURE_ARYBASE_IS_ENABLED) {
+  OP *right = cBINOPx(o)->op_first;
+  OP *left = right->op_sibling;
+  if (left) ab_process_assignment(left, right);
+ }
+ return o;
+}
+
+STATIC OP *ab_ck_aassign(pTHX_ OP *o) {
+ o = (*ab_old_ck_aassign)(aTHX_ o);
+ if (o->op_type == OP_AASSIGN && FEATURE_ARYBASE_IS_ENABLED) {
+  OP *right = cBINOPx(o)->op_first;
+  OP *left = cBINOPx(right->op_sibling)->op_first->op_sibling;
+  right = cBINOPx(right)->op_first->op_sibling;
+  ab_process_assignment(left, right);
+ }
+ return o;
+}
+
+void
+tie(pTHX_ SV * const sv, SV * const obj, HV *const stash)
+{
+    SV *rv = newSV_type(SVt_RV);
+
+    SvRV_set(rv, obj ? SvREFCNT_inc_simple_NN(obj) : newSV(0));
+    SvROK_on(rv);
+    sv_bless(rv, stash);
+
+    sv_unmagic((SV *)sv, PERL_MAGIC_tiedscalar);
+    sv_magic((SV *)sv, rv, PERL_MAGIC_tiedscalar, NULL, 0);
+    SvREFCNT_dec(rv); /* As sv_magic increased it by one.  */
+}
+
+/* This function converts from base-based to 0-based an index to be passed
+   as an argument. */
+static IV
+adjust_index(IV index, IV base)
+{
+ if (index >= base || index > -1) return index-base;
+ return index;
+}
+/* This function converts from 0-based to base-based an index to
+   be returned. */
+static IV
+adjust_index_r(IV index, IV base)
+{
+ return index + base;
+}
+
+#define replace_sv(sv,base) \
+ ((sv) = sv_2mortal(newSViv(adjust_index(SvIV(sv),base))))
+#define replace_sv_r(sv,base) \
+ ((sv) = sv_2mortal(newSViv(adjust_index_r(SvIV(sv),base))))
+
+static OP *ab_pp_basearg(pTHX) {
+ dVAR; dSP;
+ SV **firstp = NULL;
+ SV **svp;
+ UV count = 1;
+ ab_op_info oi;
+ ab_map_fetch(PL_op, &oi);
+ 
+ switch (PL_op->op_type) {
+ case OP_AELEM:
+  firstp = SP;
+  break;
+ case OP_ASLICE:
+  firstp = PL_stack_base + TOPMARK + 1;
+  count = SP-firstp;
+  break;
+ case OP_LSLICE:
+  firstp = PL_stack_base + *(PL_markstack_ptr-1)+1;
+  count = TOPMARK - *(PL_markstack_ptr-1);
+  if (GIMME != G_ARRAY) {
+   firstp += count-1;
+   count = 1;
+  }
+  break;
+ case OP_SPLICE:
+  if (SP - PL_stack_base - TOPMARK >= 2)
+   firstp = PL_stack_base + TOPMARK + 2;
+  else count = 0;
+  break;
+ case OP_SUBSTR:
+  firstp = SP-(PL_op->op_private & 7)+2;
+  break;
+ default:
+  DIE(aTHX_
+     "panic: invalid op type for arybase.xs:ab_pp_basearg: %d",
+      PL_op->op_type);
+ }
+ svp = firstp;
+ while (count--) replace_sv(*svp,oi.base), svp++;
+ return (*oi.old_pp)(aTHX);
+}
+
+static OP *ab_pp_av2arylen(pTHX) {
+ dSP; dVAR;
+ SV *sv;
+ ab_op_info oi;
+ OP *ret;
+ ab_map_fetch(PL_op, &oi);
+ ret = (*oi.old_pp)(aTHX);
+ if (PL_op->op_flags & OPf_MOD || LVRET) {
+  sv = newSV(0);
+  tie(aTHX_ sv, TOPs, gv_stashpv("arybase::mg",1));
+  SETs(sv);
+ }
+ else {
+  SvGETMAGIC(TOPs);
+  if (SvOK(TOPs)) replace_sv_r(TOPs, oi.base);
+ }
+ return ret;
+}
+
+static OP *ab_pp_keys(pTHX) {
+ dVAR; dSP;
+ ab_op_info oi;
+ OP *retval;
+ const I32 offset = SP - PL_stack_base;
+ SV **svp;
+ ab_map_fetch(PL_op, &oi);
+ retval = (*oi.old_pp)(aTHX);
+ if (GIMME_V == G_SCALAR) return retval;
+ SPAGAIN;
+ svp = PL_stack_base + offset;
+ while (svp <= SP) replace_sv_r(*svp,oi.base), ++svp;
+ return retval; 
+}
+
+static OP *ab_pp_each(pTHX) {
+ dVAR; dSP;
+ ab_op_info oi;
+ OP *retval;
+ const I32 offset = SP - PL_stack_base;
+ ab_map_fetch(PL_op, &oi);
+ retval = (*oi.old_pp)(aTHX);
+ SPAGAIN;
+ if (GIMME_V == G_SCALAR) {
+  if (SvOK(TOPs)) replace_sv_r(TOPs,oi.base);
+ }
+ else if (offset < SP - PL_stack_base) replace_sv_r(TOPm1s,oi.base);
+ return retval; 
+}
+
+static OP *ab_pp_index(pTHX) {
+ dVAR; dSP;
+ ab_op_info oi;
+ OP *retval;
+ ab_map_fetch(PL_op, &oi);
+ if (MAXARG == 3 && TOPs) replace_sv(TOPs,oi.base);
+ retval = (*oi.old_pp)(aTHX);
+ SPAGAIN;
+ replace_sv_r(TOPs,oi.base);
+ return retval; 
+}
+
+static OP *ab_ck_base(pTHX_ OP *o)
+{
+ OP * (*old_ck)(pTHX_ OP *o) = 0;
+ OP * (*new_pp)(pTHX)        = ab_pp_basearg;
+ switch (o->op_type) {
+ case OP_AELEM    : old_ck = ab_old_ck_aelem    ; break;
+ case OP_ASLICE   : old_ck = ab_old_ck_aslice   ; break;
+ case OP_LSLICE   : old_ck = ab_old_ck_lslice   ; break;
+ case OP_AV2ARYLEN: old_ck = ab_old_ck_av2arylen; break;
+ case OP_SPLICE   : old_ck = ab_old_ck_splice   ; break;
+ case OP_KEYS     : old_ck = ab_old_ck_keys     ; break;
+ case OP_EACH     : old_ck = ab_old_ck_each     ; break;
+ case OP_SUBSTR   : old_ck = ab_old_ck_substr   ; break;
+ case OP_RINDEX   : old_ck = ab_old_ck_rindex   ; break;
+ case OP_INDEX    : old_ck = ab_old_ck_index    ; break;
+ case OP_POS      : old_ck = ab_old_ck_pos      ; break;
+ default:
+  DIE(aTHX_
+     "panic: invalid op type for arybase.xs:ab_ck_base: %d",
+      PL_op->op_type);
+ }
+ o = (*old_ck)(aTHX_ o);
+ if (!FEATURE_ARYBASE_IS_ENABLED) return o;
+ /* We need two switch blocks, as the type may have changed. */
+ switch (o->op_type) {
+ case OP_AELEM    :
+ case OP_ASLICE   :
+ case OP_LSLICE   :
+ case OP_SPLICE   :
+ case OP_SUBSTR   : break;
+ case OP_POS      :
+ case OP_AV2ARYLEN: new_pp = ab_pp_av2arylen    ; break;
+ case OP_AKEYS    : new_pp = ab_pp_keys         ; break;
+ case OP_AEACH    : new_pp = ab_pp_each         ; break;
+ case OP_RINDEX   :
+ case OP_INDEX    : new_pp = ab_pp_index        ; break;
+ default: return o;
+ }
+ {
+  IV const base = current_base();
+  if (base) {
+   ab_map_store(o, o->op_ppaddr, base);
+   o->op_ppaddr = new_pp;
+   /* Break the aelemfast optimisation */
+   if (o->op_type == OP_AELEM &&
+       cBINOPo->op_first->op_sibling->op_type == OP_CONST) {
+     cBINOPo->op_first->op_sibling
+      = newUNOP(OP_NULL,0,cBINOPo->op_first->op_sibling);
+   }
+  }
+  else ab_map_delete(o);
+ }
+ return o;
+}
+
+
+STATIC U32 ab_initialized = 0;
+
+/* --- XS ------------------------------------------------------------- */
+
+MODULE = arybase	PACKAGE = arybase
+PROTOTYPES: DISABLE
+
+BOOT:
+{
+    GV *const gv = gv_fetchpvn("[", 1, GV_ADDMULTI|GV_NOTQUAL, SVt_PV);
+    sv_unmagic(GvSV(gv), PERL_MAGIC_sv); /* This is *our* scalar now! */
+    tie(aTHX_ GvSV(gv), NULL, GvSTASH(CvGV(cv)));
+
+    if (!ab_initialized++) {
+	ab_op_map = ptable_new();
+#ifdef USE_ITHREADS
+	MUTEX_INIT(&ab_op_map_mutex);
+#endif
+#define check(uc,lc,ck) \
+		wrap_op_checker(OP_##uc, ab_ck_##ck, &ab_old_ck_##lc)
+	check(SASSIGN,  sassign,  sassign);
+	check(AASSIGN,  aassign,  aassign);
+	check(AELEM,    aelem,    base);
+	check(ASLICE,   aslice,   base);
+	check(LSLICE,   lslice,   base);
+	check(AV2ARYLEN,av2arylen,base);
+	check(SPLICE,   splice,   base);
+	check(KEYS,     keys,     base);
+	check(EACH,     each,     base);
+	check(SUBSTR,   substr,   base);
+	check(RINDEX,   rindex,   base);
+	check(INDEX,    index,    base);
+	check(POS,      pos,      base);
+    }
+}
+
+void
+FETCH(...)
+    PREINIT:
+	SV *ret = FEATURE_ARYBASE_IS_ENABLED
+		   ? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
+		   : 0;
+    PPCODE:
+	if (!ret || !SvOK(ret)) mXPUSHi(0);
+	else XPUSHs(ret);
+
+void
+STORE(SV *sv, IV newbase)
+    CODE:
+      if (FEATURE_ARYBASE_IS_ENABLED) {
+	SV *base = cop_hints_fetch_pvs(PL_curcop, "$[", 0);
+	if (SvOK(base) ? SvIV(base) == newbase : !newbase) XSRETURN_EMPTY;
+	Perl_croak(aTHX_ "That use of $[ is unsupported");
+      }
+      else if (newbase)
+	Perl_croak(aTHX_ "Assigning non-zero to $[ is no longer possible");
+
+
+MODULE = arybase	PACKAGE = arybase::mg
+PROTOTYPES: DISABLE
+
+void
+FETCH(SV *sv)
+    PPCODE:
+	if (!SvROK(sv) || SvTYPE(SvRV(sv)) >= SVt_PVAV)
+	    Perl_croak(aTHX_ "Not a SCALAR reference");
+	{
+	    SV *base = FEATURE_ARYBASE_IS_ENABLED
+			 ? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
+			 : 0;
+	    SvGETMAGIC(SvRV(sv));
+	    if (!SvOK(SvRV(sv))) XSRETURN_UNDEF;
+	    mXPUSHi(adjust_index_r(
+		SvIV_nomg(SvRV(sv)), base&&SvOK(base)?SvIV(base):0
+	    ));
+	}
+
+void
+STORE(SV *sv, SV *newbase)
+    CODE:
+	if (!SvROK(sv) || SvTYPE(SvRV(sv)) >= SVt_PVAV)
+	    Perl_croak(aTHX_ "Not a SCALAR reference");
+	{
+	    SV *base = FEATURE_ARYBASE_IS_ENABLED
+			? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
+			: 0;
+	    SvGETMAGIC(newbase);
+	    if (!SvOK(newbase)) SvSetMagicSV(SvRV(sv),&PL_sv_undef);
+	    else 
+		sv_setiv_mg(
+		   SvRV(sv),
+		   adjust_index(
+		      SvIV_nomg(newbase), base&&SvOK(base)?SvIV(base):0
+		   )
+		);
+	}

Added: vendor/perl/dist/ext/arybase/ptable.h
===================================================================
--- vendor/perl/dist/ext/arybase/ptable.h	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/ptable.h	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,217 @@
+/* This is a pointer table implementation essentially copied from the ptr_table
+ * implementation in perl's sv.c, except that it has been modified to use memory
+ * shared across threads. */
+
+/* This header is designed to be included several times with different
+ * definitions for PTABLE_NAME and PTABLE_VAL_FREE(). */
+
+#undef pPTBLMS
+#undef pPTBLMS_
+#undef aPTBLMS
+#undef aPTBLMS_
+
+/* Context for PerlMemShared_* functions */
+
+#ifdef PERL_IMPLICIT_SYS
+# define pPTBLMS  pTHX
+# define pPTBLMS_ pTHX_
+# define aPTBLMS  aTHX
+# define aPTBLMS_ aTHX_
+#else
+# define pPTBLMS
+# define pPTBLMS_
+# define aPTBLMS
+# define aPTBLMS_
+#endif
+
+#ifndef pPTBL
+# define pPTBL  pPTBLMS
+#endif
+#ifndef pPTBL_
+# define pPTBL_ pPTBLMS_
+#endif
+#ifndef aPTBL
+# define aPTBL  aPTBLMS
+#endif
+#ifndef aPTBL_
+# define aPTBL_ aPTBLMS_
+#endif
+
+#ifndef PTABLE_NAME
+# define PTABLE_NAME ptable
+#endif
+
+#ifndef PTABLE_VAL_FREE
+# define PTABLE_VAL_FREE(V)
+#endif
+
+#ifndef PTABLE_JOIN
+# define PTABLE_PASTE(A, B) A ## B
+# define PTABLE_JOIN(A, B)  PTABLE_PASTE(A, B)
+#endif
+
+#ifndef PTABLE_PREFIX
+# define PTABLE_PREFIX(X) PTABLE_JOIN(PTABLE_NAME, X)
+#endif
+
+#ifndef ptable_ent
+typedef struct ptable_ent {
+ struct ptable_ent *next;
+ const void *       key;
+ void *             val;
+} ptable_ent;
+#define ptable_ent ptable_ent
+#endif /* !ptable_ent */
+
+#ifndef ptable
+typedef struct ptable {
+ ptable_ent **ary;
+ UV           max;
+ UV           items;
+} ptable;
+#define ptable ptable
+#endif /* !ptable */
+
+#ifndef ptable_new
+STATIC ptable *ptable_new(pPTBLMS) {
+#define ptable_new() ptable_new(aPTBLMS)
+  ptable *t = (ptable *)PerlMemShared_malloc(sizeof *t);
+ t->max   = 63;
+ t->items = 0;
+ t->ary   = (ptable_ent **)PerlMemShared_calloc(t->max + 1, sizeof *t->ary);
+ return t;
+}
+#endif /* !ptable_new */
+
+#ifndef PTABLE_HASH
+# define PTABLE_HASH(ptr) \
+     ((PTR2UV(ptr) >> 3) ^ (PTR2UV(ptr) >> (3 + 7)) ^ (PTR2UV(ptr) >> (3 + 17)))
+#endif
+
+#ifndef ptable_find
+STATIC ptable_ent *ptable_find(const ptable * const t, const void * const key) {
+#define ptable_find ptable_find
+ ptable_ent *ent;
+ const UV hash = PTABLE_HASH(key);
+
+ ent = t->ary[hash & t->max];
+ for (; ent; ent = ent->next) {
+  if (ent->key == key)
+   return ent;
+ }
+
+ return NULL;
+}
+#endif /* !ptable_find */
+
+#ifndef ptable_fetch
+STATIC void *ptable_fetch(const ptable * const t, const void * const key) {
+#define ptable_fetch ptable_fetch
+ const ptable_ent *const ent = ptable_find(t, key);
+
+ return ent ? ent->val : NULL;
+}
+#endif /* !ptable_fetch */
+
+#ifndef ptable_split
+STATIC void ptable_split(pPTBLMS_ ptable * const t) {
+#define ptable_split(T) ptable_split(aPTBLMS_ (T))
+ ptable_ent **ary = t->ary;
+ const UV oldsize = t->max + 1;
+ UV newsize = oldsize * 2;
+ UV i;
+
+ ary = (ptable_ent **)PerlMemShared_realloc(ary, newsize * sizeof(*ary));
+ Zero(&ary[oldsize], newsize - oldsize, sizeof(*ary));
+ t->max = --newsize;
+ t->ary = ary;
+
+ for (i = 0; i < oldsize; i++, ary++) {
+  ptable_ent **curentp, **entp, *ent;
+  if (!*ary)
+   continue;
+  curentp = ary + oldsize;
+  for (entp = ary, ent = *ary; ent; ent = *entp) {
+   if ((newsize & PTABLE_HASH(ent->key)) != i) {
+    *entp     = ent->next;
+    ent->next = *curentp;
+    *curentp  = ent;
+    continue;
+   } else
+    entp = &ent->next;
+  }
+ }
+}
+#endif /* !ptable_split */
+
+STATIC void PTABLE_PREFIX(_store)(pPTBL_ ptable * const t, const void * const key, void * const val) {
+ ptable_ent *ent = ptable_find(t, key);
+
+ if (ent) {
+  void *oldval = ent->val;
+  PTABLE_VAL_FREE(oldval);
+  ent->val = val;
+ } else if (val) {
+  const UV i = PTABLE_HASH(key) & t->max;
+  ent = (ptable_ent *)PerlMemShared_malloc(sizeof *ent);
+  ent->key  = key;
+  ent->val  = val;
+  ent->next = t->ary[i];
+  t->ary[i] = ent;
+  t->items++;
+  if (ent->next && t->items > t->max)
+   ptable_split(t);
+ }
+}
+
+#ifndef ptable_walk
+STATIC void ptable_walk(pTHX_ ptable * const t, void (*cb)(pTHX_ ptable_ent *ent, void *userdata), void *userdata) {
+#define ptable_walk(T, CB, UD) ptable_walk(aTHX_ (T), (CB), (UD))
+ if (t && t->items) {
+  ptable_ent ** const array = t->ary;
+  UV i = t->max;
+  do {
+   ptable_ent *entry;
+   for (entry = array[i]; entry; entry = entry->next)
+    cb(aTHX_ entry, userdata);
+  } while (i--);
+ }
+}
+#endif /* !ptable_walk */
+
+STATIC void PTABLE_PREFIX(_clear)(pPTBL_ ptable * const t) {
+ if (t && t->items) {
+  ptable_ent ** const array = t->ary;
+  UV i = t->max;
+
+  do {
+   ptable_ent *entry = array[i];
+   while (entry) {
+    ptable_ent * const oentry = entry;
+    void *val = oentry->val;
+    entry = entry->next;
+    PTABLE_VAL_FREE(val);
+    PerlMemShared_free(oentry);
+   }
+   array[i] = NULL;
+  } while (i--);
+
+  t->items = 0;
+ }
+}
+
+STATIC void PTABLE_PREFIX(_free)(pPTBL_ ptable * const t) {
+ if (!t)
+  return;
+ PTABLE_PREFIX(_clear)(aPTBL_ t);
+ PerlMemShared_free(t->ary);
+ PerlMemShared_free(t);
+}
+
+#undef pPTBL
+#undef pPTBL_
+#undef aPTBL
+#undef aPTBL_
+
+#undef PTABLE_NAME
+#undef PTABLE_VAL_FREE

Added: vendor/perl/dist/ext/arybase/t/aeach.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/aeach.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/aeach.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+BEGIN {
+	if("$]" < 5.011) {
+		require Test::More;
+		Test::More::plan(skip_all => "no array each on this Perl");
+	}
+}
+
+use Test::More tests => 2;
+
+our @activity;
+
+$[ = 3;
+
+our @t0 = qw(a b c);
+ at activity = ();
+foreach(0..5) {
+	push @activity, [ each(@t0) ];
+}
+is_deeply \@activity, [
+	[ 3, "a" ],
+	[ 4, "b" ],
+	[ 5, "c" ],
+	[],
+	[ 3, "a" ],
+	[ 4, "b" ],
+];
+
+our @t1 = qw(a b c);
+ at activity = ();
+foreach(0..5) {
+	push @activity, [ scalar each(@t1) ];
+}
+is_deeply \@activity, [
+	[ 3 ],
+	[ 4 ],
+	[ 5 ],
+	[ undef ],
+	[ 3 ],
+	[ 4 ],
+];
+
+1;

Added: vendor/perl/dist/ext/arybase/t/aelem.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/aelem.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/aelem.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,56 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 33;
+
+our @t = qw(a b c d e f);
+our $r = \@t;
+our($i3, $i4, $i8, $i9) = (3, 4, 8, 9);
+our @i4 = (3, 3, 3, 3);
+
+$[ = 3;
+
+is $t[3], "a";
+is $t[4], "b";
+is $t[8], "f";
+is $t[9], undef;
+is_deeply [ scalar $t[4] ], [ "b" ];
+is_deeply [ $t[4] ], [ "b" ];
+
+is $t[2], 'f';
+is $t[-1], 'f';
+is $t[1], 'e';
+is $t[-2], 'e';
+
+{
+ $[ = -3;
+ is $t[-3], 'a';
+}
+
+is $r->[3], "a";
+is $r->[4], "b";
+is $r->[8], "f";
+is $r->[9], undef;
+is_deeply [ scalar $r->[4] ], [ "b" ];
+is_deeply [ $r->[4] ], [ "b" ];
+
+is $t[$i3], "a";
+is $t[$i4], "b";
+is $t[$i8], "f";
+is $t[$i9], undef;
+is_deeply [ scalar $t[$i4] ], [ "b" ];
+is_deeply [ $t[$i4] ], [ "b" ];
+is_deeply [ scalar $t[@i4] ], [ "b" ];
+is_deeply [ $t[@i4] ], [ "b" ];
+
+is $r->[$i3], "a";
+is $r->[$i4], "b";
+is $r->[$i8], "f";
+is $r->[$i9], undef;
+is_deeply [ scalar $r->[$i4] ], [ "b" ];
+is_deeply [ $r->[$i4] ], [ "b" ];
+is_deeply [ scalar $r->[@i4] ], [ "b" ];
+is_deeply [ $r->[@i4] ], [ "b" ];
+
+
+1;

Added: vendor/perl/dist/ext/arybase/t/akeys.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/akeys.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/akeys.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,40 @@
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
+use strict;
+
+BEGIN {
+	if("$]" < 5.011) {
+		require Test::More;
+		Test::More::plan(skip_all => "no array keys on this Perl");
+	}
+}
+
+use Test::More tests => 8;
+
+our @t;
+
+$[ = 3;
+
+ at t = ();
+is_deeply [ scalar keys @t ], [ 0 ];
+is_deeply [ keys @t ], [];
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar keys @t ], [ 6 ];
+is_deeply [ keys @t ], [ 3, 4, 5, 6, 7, 8 ];
+
+SKIP: {
+	skip "no lexical \$_", 4 unless eval q{my $_; 1};
+	eval q{
+		my $_;
+
+		@t = ();
+		is_deeply [ scalar keys @t ], [ 0 ];
+		is_deeply [ keys @t ], [];
+
+		@t = qw(a b c d e f);
+		is_deeply [ scalar keys @t ], [ 6 ];
+		is_deeply [ keys @t ], [ 3, 4, 5, 6, 7, 8 ];
+	};
+}
+
+1;

Added: vendor/perl/dist/ext/arybase/t/arybase.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/arybase.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/arybase.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,37 @@
+#!perl
+
+# Basic tests for $[ as a variable
+# plus miscellaneous bug fix tests
+
+no warnings 'deprecated';
+use Test::More tests => 7;
+
+sub outside_base_scope { return "${'['}" }
+
+$[ = 3;
+my $base = \$[;
+is "$$base", 3, 'retval of $[';
+is outside_base_scope, 0, 'retval of $[ outside its scope';
+
+${'['} = 3;
+pass('run-time $[ = 3 assignment (in $[ = 3 scope)');
+{
+  $[ = 0;
+  ${'['} = 0;
+  pass('run-time $[ = 0 assignment (in $[ = 3 scope)');
+}
+
+eval { ${'['} = 1 }; my $f = __FILE__; my $l = __LINE__;
+is $@, "That use of \$[ is unsupported at $f line $l.\n",
+   "error when setting $[ to integer other than current base at run-time";
+
+$[ = 6.7;
+is "$[", 6, '$[ is an integer';
+
+eval { my $x = 45; $[ = \$x }; $l = __LINE__;
+is $@, "That use of \$[ is unsupported at $f line $l.\n",
+   'error when setting $[ to ref';
+
+sub foo { my $x; $x = wait } # compilation of this routine used to crash
+
+1;

Added: vendor/perl/dist/ext/arybase/t/aslice.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/aslice.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/aslice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
+use strict;
+
+use Test::More tests => 18;
+
+our @t = qw(a b c d e f);
+our $r = \@t;
+our @i4 = (3, 5, 3, 5);
+
+$[ = 3;
+
+is_deeply [ scalar @t[3,4] ], [ qw(b) ];
+is_deeply [ @t[3,4,8,9] ], [ qw(a b f), undef ];
+is_deeply [ scalar @t[@i4] ], [ qw(c) ];
+is_deeply [ @t[@i4] ], [ qw(a c a c) ];
+is_deeply [ scalar @{$r}[3,4] ], [ qw(b) ];
+is_deeply [ @{$r}[3,4,8,9] ], [ qw(a b f), undef ];
+is_deeply [ scalar @{$r}[@i4] ], [ qw(c) ];
+is_deeply [ @{$r}[@i4] ], [ qw(a c a c) ];
+
+is_deeply [ @t[2,-1,1,-2] ], [ qw(f f e e) ];
+{
+ $[ = -3;
+ is_deeply [@t[-3,()]], ['a'];
+}
+
+SKIP: {
+	skip "no lexical \$_", 8 unless eval q{my $_; 1};
+	eval q{
+		my $_;
+		is_deeply [ scalar @t[3,4] ], [ qw(b) ];
+		is_deeply [ @t[3,4,8,9] ], [ qw(a b f), undef ];
+		is_deeply [ scalar @t[@i4] ], [ qw(c) ];
+		is_deeply [ @t[@i4] ], [ qw(a c a c) ];
+		is_deeply [ scalar @{$r}[3,4] ], [ qw(b) ];
+		is_deeply [ @{$r}[3,4,8,9] ], [ qw(a b f), undef ];
+		is_deeply [ scalar @{$r}[@i4] ], [ qw(c) ];
+		is_deeply [ @{$r}[@i4] ], [ qw(a c a c) ];
+	};
+}
+
+1;

Added: vendor/perl/dist/ext/arybase/t/av2arylen.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/av2arylen.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/av2arylen.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,26 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 8;
+
+our @t = qw(a b c d e f);
+our $r = \@t;
+
+$[ = 3;
+
+is_deeply [ scalar $#t ], [ 8 ];
+is_deeply [ $#t ], [ 8 ];
+is_deeply [ scalar $#$r ], [ 8 ];
+is_deeply [ $#$r ], [ 8 ];
+
+my $arylen=\$#t;
+push @t, 'g';
+is 0+$$arylen, 9;
+$[ = 4;
+is 0+$$arylen, 10;
+--$$arylen;
+$[ = 3;
+is 0+$$arylen, 8;
+is 0+$#t, 8;
+
+1;

Added: vendor/perl/dist/ext/arybase/t/index.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/index.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/index.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,23 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 12;
+
+our $t = "abcdefghijkl";
+
+$[ = 3;
+
+is index($t, "cdef"), 5;
+is index($t, "cdef", 3), 5;
+is index($t, "cdef", 4), 5;
+is index($t, "cdef", 5), 5;
+is index($t, "cdef", 6), 2;
+is index($t, "cdef", 7), 2;
+is rindex($t, "cdef"), 5;
+is rindex($t, "cdef", 7), 5;
+is rindex($t, "cdef", 6), 5;
+is rindex($t, "cdef", 5), 5;
+is rindex($t, "cdef", 4), 2;
+is rindex($t, "cdef", 3), 2;
+
+1;

Added: vendor/perl/dist/ext/arybase/t/lslice.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/lslice.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/lslice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+use warnings; no warnings 'deprecated', 'experimental::lexical_topic';
+use strict;
+
+use Test::More tests => 12;
+
+our @i4 = (3, 5, 3, 5);
+
+$[ = 3;
+
+is_deeply [ scalar qw(a b c d e f)[3,4] ], [ qw(b) ];
+is_deeply [ qw(a b c d e f)[3,4,8,9] ], [ qw(a b f), undef ];
+is_deeply [ scalar qw(a b c d e f)[@i4] ], [ qw(c) ];
+is_deeply [ qw(a b c d e f)[@i4] ], [ qw(a c a c) ];
+is_deeply [ 3, 4, qw(a b c d e f)[@i4] ], [ 3, 4, qw(a c a c) ];
+
+is_deeply [ qw(a b c d e f)[-1,-2] ], [ qw(f e) ];
+is_deeply [ qw(a b c d e f)[2,1] ], [ qw(f e) ];
+{
+ $[ = -3;
+ is_deeply [qw(a b c d e f)[-3]], ['a'];
+}
+
+SKIP: {
+	skip "no lexical \$_", 4 unless eval q{my $_; 1};
+	eval q{
+		my $_;
+		is_deeply [ scalar qw(a b c d e f)[3,4] ], [ qw(b) ];
+		is_deeply [ qw(a b c d e f)[3,4,8,9] ], [ qw(a b f), undef ];
+		is_deeply [ scalar qw(a b c d e f)[@i4] ], [ qw(c) ];
+		is_deeply [ qw(a b c d e f)[@i4] ], [ qw(a c a c) ];
+	};
+}
+
+1;

Added: vendor/perl/dist/ext/arybase/t/pos.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/pos.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/pos.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 12;
+
+our $t = "abcdefghi";
+scalar($t =~ /abcde/g);
+our $r = \$t;
+
+$[ = 3;
+
+is_deeply [ scalar pos($t) ], [ 8 ];
+is_deeply [ pos($t) ], [ 8 ];
+is_deeply [ scalar pos($$r) ], [ 8 ];
+is_deeply [ pos($$r) ], [ 8 ];
+
+scalar($t =~ /x/g);
+
+is_deeply [ scalar pos($t) ], [ undef ];
+is_deeply [ pos($t) ], [ undef ];
+is_deeply [ scalar pos($$r) ], [ undef ];
+is_deeply [ pos($$r) ], [ undef ];
+
+is pos($t), undef;
+pos($t) = 5;
+is 0+pos($t), 5;
+is pos($t), 2;
+my $posr =\ pos($t);
+$$posr = 4;
+{
+  $[ = 0;
+  is 0+$$posr, 1;
+}
+
+1;

Added: vendor/perl/dist/ext/arybase/t/scope.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/scope.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/scope.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 14;
+
+our @t = qw(a b c d e f);
+
+is $t[3], "d";
+$[ = 3;
+is $t[3], "a";
+{
+	is $t[3], "a";
+	$[ = -1;
+	is $t[3], "e";
+	$[ = +0;
+	is $t[3], "d";
+	$[ = +1;
+	is $t[3], "c";
+	$[ = 0;
+	is $t[3], "d";
+}
+is $t[3], "a";
+{
+	local $[ = -1;
+	is $t[3], "e";
+}
+is $t[3], "a";
+{
+	($[) = -1;
+	is $t[3], "e";
+}
+is $t[3], "a";
+use t::scope_0;
+is scope0_test(), "d";
+
+
+is eval(q{
+	$[ = 3;
+	BEGIN { my $x = "foo\x{666}"; $x =~ /foo\p{Alnum}/; }
+	$t[3];
+}), "a";
+
+1;

Added: vendor/perl/dist/ext/arybase/t/scope_0.pm
===================================================================
--- vendor/perl/dist/ext/arybase/t/scope_0.pm	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/scope_0.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+use warnings;
+use strict;
+
+sub main::scope0_test { $main::t[3] }
+
+1;

Added: vendor/perl/dist/ext/arybase/t/splice.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/splice.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/splice.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,65 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 23;
+
+our @t;
+our @i5 = (3, 3, 3, 3, 3);
+
+$[ = 3;
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar splice @t ], [qw(f)];
+is_deeply \@t, [];
+
+ at t = qw(a b c d e f);
+is_deeply [ splice @t ], [qw(a b c d e f)];
+is_deeply \@t, [];
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar splice @t, 5 ], [qw(f)];
+is_deeply \@t, [qw(a b)];
+
+ at t = qw(a b c d e f);
+is_deeply [ splice @t, 5 ], [qw(c d e f)];
+is_deeply \@t, [qw(a b)];
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar splice @t, @i5 ], [qw(f)];
+is_deeply \@t, [qw(a b)];
+
+ at t = qw(a b c d e f);
+is_deeply [ splice @t, @i5 ], [qw(c d e f)];
+is_deeply \@t, [qw(a b)];
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar splice @t, 5, 2 ], [qw(d)];
+is_deeply \@t, [qw(a b e f)];
+
+ at t = qw(a b c d e f);
+is_deeply [ splice @t, 5, 2 ], [qw(c d)];
+is_deeply \@t, [qw(a b e f)];
+
+ at t = qw(a b c d e f);
+is_deeply [ scalar splice @t, 5, 2, qw(x y z) ], [qw(d)];
+is_deeply \@t, [qw(a b x y z e f)];
+
+ at t = qw(a b c d e f);
+is_deeply [ splice @t, 5, 2, qw(x y z) ], [qw(c d)];
+is_deeply \@t, [qw(a b x y z e f)];
+
+ at t = qw(a b c d e f);
+splice @t, -4, 1;
+is_deeply \@t, [qw(a b d e f)];
+
+ at t = qw(a b c d e f);
+splice @t, 1, 1;
+is_deeply \@t, [qw(a b c d f)];
+
+$[ = -3;
+
+ at t = qw(a b c d e f);
+splice @t, -3, 1;
+is_deeply \@t, [qw(b c d e f)];
+
+1;

Added: vendor/perl/dist/ext/arybase/t/substr.t
===================================================================
--- vendor/perl/dist/ext/arybase/t/substr.t	                        (rev 0)
+++ vendor/perl/dist/ext/arybase/t/substr.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use warnings; no warnings 'deprecated';
+use strict;
+
+use Test::More tests => 6;
+
+our $t;
+
+$[ = 3;
+
+$t = "abcdef";
+is substr($t, 5), "cdef";
+is $t, "abcdef";
+
+$t = "abcdef";
+is substr($t, 5, 2), "cd";
+is $t, "abcdef";
+
+$t = "abcdef";
+is substr($t, 5, 2, "xyz"), "cd";
+is $t, "abxyzef";
+
+1;

Added: vendor/perl/dist/lib/File/stat-7896.t
===================================================================
--- vendor/perl/dist/lib/File/stat-7896.t	                        (rev 0)
+++ vendor/perl/dist/lib/File/stat-7896.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,28 @@
+#!./perl -w
+use strict;
+
+use Test::More;
+use File::stat;
+
+# This is possibly a bit black-box, but for now it works.
+# If (either) File::stat stops lazy loading Symbol, or Test::More starts, it
+# should be revisited
+is($INC{'Symbol.pm'}, undef, "Symbol isn't loaded yet");
+
+# ID 20011110.104 (RT #7896)
+$! = 0;
+is($!, '', '$! is empty');
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail');
+isnt($!, '', 'should populate $!, given invalid file');
+my $e = $!;
+
+isnt($INC{'Symbol.pm'}, undef, "Symbol has been loaded");
+
+# Repeat twice
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail again');
+is($!, $e, '$! should be consistent for an invalid file');
+$e = $!;
+is(File::stat::stat('/notafile'), undef, 'invalid file should fail again');
+is($!, $e, '$! should be consistent for an invalid file');
+
+done_testing();

Added: vendor/perl/dist/lib/_charnames.pm
===================================================================
--- vendor/perl/dist/lib/_charnames.pm	                        (rev 0)
+++ vendor/perl/dist/lib/_charnames.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,793 @@
+# !!!!!!!   INTERNAL PERL USE ONLY   !!!!!!!
+# This helper module is for internal use by core Perl only.  This module is
+# subject to change or removal at any time without notice.  Don't use it
+# directly.  Use the public <charnames> module instead.
+
+package _charnames;
+use strict;
+use warnings;
+use File::Spec;
+our $VERSION = '1.36';
+use unicore::Name;    # mktables-generated algorithmically-defined names
+
+use bytes ();          # for $bytes::hint_bits
+use re "/aa";          # Everything in here should be ASCII
+
+$Carp::Internal{ (__PACKAGE__) } = 1;
+
+# Translate between Unicode character names and their code points.  This is a
+# submodule of package <charnames>, used to allow \N{...} to be autoloaded,
+# but it was decided not to autoload the various functions in charnames; the
+# splitting allows this behavior.
+#
+# The official names with their code points are stored in a table in
+# lib/unicore/Name.pl which is read in as a large string (almost 3/4 Mb in
+# Unicode 6.0).  Each code point/name combination is separated by a \n in the
+# string.  (Some of the CJK and the Hangul syllable names are determined
+# instead algorithmically via subroutines stored instead in
+# lib/unicore/Name.pm).  Because of the large size of this table, it isn't
+# converted into hashes for faster lookup.
+#
+# But, user defined aliases are stored in their own hashes, as are Perl
+# extensions to the official names.  These are checked first before looking at
+# the official table.
+#
+# Basically, the table is grepped for the input code point (viacode()) or
+# name (the other functions), and the corresponding value on the same line is
+# returned.  The grepping is done by turning the input into a regular
+# expression.  Thus, the same table does double duty, used by both name and
+# code point lookup.  (If we were to have hashes, we would need two, one for
+# each lookup direction.)
+#
+# For loose name matching, the logical thing would be to have a table
+# with all the ignorable characters squeezed out, and then grep it with the
+# similiarly-squeezed input name.  (And this is in fact how the lookups are
+# done with the small Perl extension hashes.)  But since we need to be able to
+# go from code point to official name, the original table would still need to
+# exist.  Due to the large size of the table, it was decided to not read
+# another very large string into memory for a second table.  Instead, the
+# regular expression of the input name is modified to have optional spaces and
+# dashes between characters.  For example, in strict matching, the regular
+# expression would be:
+#   qr/\tDIGIT ONE$/m
+# Under loose matching, the blank would be squeezed out, and the re would be:
+#   qr/\tD[- ]?I[- ]?G[- ]?I[- ]?T[- ]?O[- ]?N[- ]?E$/m
+# which matches a blank or dash between any characters in the official table.
+#
+# This is also how script lookup is done.  Basically the re looks like
+#   qr/ (?:LATIN|GREEK|CYRILLIC) (?:SMALL )?LETTER $name/
+# where $name is the loose or strict regex for the remainder of the name.
+
+# The hashes are stored as utf8 strings.  This makes it easier to deal with
+# sequences.  I (khw) also tried making Name.pl utf8, but it slowed things
+# down by a factor of 7.  I then tried making Name.pl store the ut8
+# equivalents but not calling them utf8.  That led to similar speed as leaving
+# it alone, but since that is harder for a human to parse, I left it as-is.
+
+my %system_aliases = (
+
+    'SINGLE-SHIFT 2'                => pack("U", 0x8E),
+    'SINGLE-SHIFT 3'                => pack("U", 0x8F),
+    'PRIVATE USE 1'                 => pack("U", 0x91),
+    'PRIVATE USE 2'                 => pack("U", 0x92),
+);
+
+# These are the aliases above that differ under :loose and :full matching
+# because the :full versions have blanks or hyphens in them.
+#my %loose_system_aliases = (
+#);
+
+#my %deprecated_aliases;
+#$deprecated_aliases{'BELL'} = pack("U", 0x07) if $^V lt v5.17.0;
+
+#my %loose_deprecated_aliases = (
+#);
+
+# These are special cased in :loose matching, differing only in a medial
+# hyphen
+my $HANGUL_JUNGSEONG_O_E_utf8 = pack("U", 0x1180);
+my $HANGUL_JUNGSEONG_OE_utf8 = pack("U", 0x116C);
+
+
+my $txt;  # The table of official character names
+
+my %full_names_cache; # Holds already-looked-up names, so don't have to
+# re-look them up again.  The previous versions of charnames had scoping
+# bugs.  For example if we use script A in one scope and find and cache
+# what Z resolves to, we can't use that cache in a different scope that
+# uses script B instead of A, as Z might be an entirely different letter
+# there; or there might be different aliases in effect in different
+# scopes, or :short may be in effect or not effect in different scopes,
+# or various combinations thereof.  This was solved in this version
+# mostly by moving things to %^H.  But some things couldn't be moved
+# there.  One of them was the cache of runtime looked-up names, in part
+# because %^H is read-only at runtime.  I (khw) don't know why the cache
+# was run-time only in the previous versions: perhaps oversight; perhaps
+# that compile time looking doesn't happen in a loop so didn't think it
+# was worthwhile; perhaps not wanting to make the cache too large.  But
+# I decided to make it compile time as well; this could easily be
+# changed.
+# Anyway, this hash is not scoped, and is added to at runtime.  It
+# doesn't have scoping problems because the data in it is restricted to
+# official names, which are always invariant, and we only set it and
+# look at it at during :full lookups, so is unaffected by any other
+# scoped options.  I put this in to maintain parity with the older
+# version.  If desired, a %short_names cache could also be made, as well
+# as one for each script, say in %script_names_cache, with each key
+# being a hash for a script named in a 'use charnames' statement.  I
+# decided not to do that for now, just because it's added complication,
+# and because I'm just trying to maintain parity, not extend it.
+
+# Like %full_names_cache, but for use when :loose is in effect.  There needs
+# to be two caches because :loose may not be in effect for a scope, and a
+# loose name could inappropriately be returned when only exact matching is
+# called for.
+my %loose_names_cache;
+
+# Designed so that test decimal first, and then hex.  Leading zeros
+# imply non-decimal, as do non-[0-9]
+my $decimal_qr = qr/^[1-9]\d*$/;
+
+# Returns the hex number in $1.
+my $hex_qr = qr/^(?:[Uu]\+|0[xX])?([[:xdigit:]]+)$/;
+
+sub croak
+{
+  require Carp; goto &Carp::croak;
+} # croak
+
+sub carp
+{
+  require Carp; goto &Carp::carp;
+} # carp
+
+sub alias (@) # Set up a single alias
+{
+  my @errors;
+
+  my $alias = ref $_[0] ? $_[0] : { @_ };
+  foreach my $name (sort keys %$alias) {  # Sort only because it helps having
+                                          # deterministic output for
+                                          # t/lib/charnames/alias
+    my $value = $alias->{$name};
+    next unless defined $value;          # Omit if screwed up.
+
+    # Is slightly slower to just after this statement see if it is
+    # decimal, since we already know it is after having converted from
+    # hex, but makes the code easier to maintain, and is called
+    # infrequently, only at compile-time
+    if ($value !~ $decimal_qr && $value =~ $hex_qr) {
+      $value = CORE::hex $1;
+    }
+    if ($value =~ $decimal_qr) {
+        no warnings qw(non_unicode surrogate nonchar); # Allow any of these
+        $^H{charnames_ord_aliases}{$name} = pack("U", $value);
+
+        # Use a canonical form.
+        $^H{charnames_inverse_ords}{sprintf("%05X", $value)} = $name;
+    }
+    else {
+        # This regex needs to be sync'd with the code in toke.c that checks
+        # for the same thing
+        if ($name !~ / ^
+                       \p{_Perl_Charname_Begin}
+                       \p{_Perl_Charname_Continue}*
+                       $ /x) {
+
+          push @errors, $name;
+        }
+        else {
+          $^H{charnames_name_aliases}{$name} = $value;
+
+          if (warnings::enabled('deprecated')) {
+            if ($name =~ / ( .* \s ) ( \s* ) $ /x) {
+              carp "Trailing white-space in a charnames alias definition is deprecated; marked by <-- HERE in '$1 <-- HERE " . $2 . "'";
+            }
+
+            # Use '+' instead of '*' in this regex, because any trailing
+            # blanks have already been warned about.
+            if ($name =~ / ( .*? \s{2} ) ( .+ ) /x) {
+              carp "A sequence of multiple spaces in a charnames alias definition is deprecated; marked by <-- HERE in '$1 <-- HERE " . $2 . "'";
+            }
+          }
+        }
+    }
+  }
+
+  # We find and output all errors from this :alias definition, rather than
+  # failing on the first one, so fewer runs are needed to get it to compile
+  if (@errors) {
+    foreach my $name (@errors) {
+      my $ok = "";
+      $ok = $1 if $name =~ / ^ ( \p{Alpha} [-\p{XPosixWord} ():\xa0]* ) /x;
+      my $first_bad = substr($name, length($ok), 1);
+      $name = "Invalid character in charnames alias definition; marked by <-- HERE in '$ok$first_bad<-- HERE " . substr($name, length($ok) + 1) . "'";
+    }
+    croak join "\n", @errors;
+  }
+
+  return;
+} # alias
+
+sub not_legal_use_bytes_msg {
+  my ($name, $utf8) = @_;
+  my $return;
+
+  if (length($utf8) == 1) {
+    $return = sprintf("Character 0x%04x with name '%s' is", ord $utf8, $name);
+  } else {
+    $return = sprintf("String with name '%s' (and ordinals %s) contains character(s)", $name, join(" ", map { sprintf "0x%04X", ord $_ } split(//, $utf8)));
+  }
+  return $return . " above 0xFF with 'use bytes' in effect";
+}
+
+sub alias_file ($)  # Reads a file containing alias definitions
+{
+  my ($arg, $file) = @_;
+  if (-f $arg && File::Spec->file_name_is_absolute ($arg)) {
+    $file = $arg;
+  }
+  elsif ($arg =~ m/ ^ \p{_Perl_IDStart} \p{_Perl_IDCont}* $/x) {
+    $file = "unicore/${arg}_alias.pl";
+  }
+  else {
+    croak "Charnames alias file names can only have identifier characters";
+  }
+  if (my @alias = do $file) {
+    @alias == 1 && !defined $alias[0] and
+      croak "$file cannot be used as alias file for charnames";
+    @alias % 2 and
+      croak "$file did not return a (valid) list of alias pairs";
+    alias (@alias);
+    return (1);
+  }
+  0;
+} # alias_file
+
+# For use when don't import anything.  This structure must be kept in
+# sync with the one that import() fills up.
+my %dummy_H = (
+                charnames_stringified_names => "",
+                charnames_stringified_ords => "",
+                charnames_scripts => "",
+                charnames_full => 1,
+                charnames_loose => 0,
+                charnames_short => 0,
+              );
+
+
+sub lookup_name ($$$) {
+  my ($name, $wants_ord, $runtime) = @_;
+
+  # Lookup the name or sequence $name in the tables.  If $wants_ord is false,
+  # returns the string equivalent of $name; if true, returns the ordinal value
+  # instead, but in this case $name must not be a sequence; otherwise undef is
+  # returned and a warning raised.  $runtime is 0 if compiletime, otherwise
+  # gives the number of stack frames to go back to get the application caller
+  # info.
+  # If $name is not found, returns undef in runtime with no warning; and in
+  # compiletime, the Unicode replacement character, with a warning.
+
+  # It looks first in the aliases, then in the large table of official Unicode
+  # names.
+
+  my $utf8;       # The string result
+  my $save_input;
+
+  if ($runtime) {
+
+    my $hints_ref = (caller($runtime))[10];
+
+    # If we didn't import anything (which happens with 'use charnames ()',
+    # substitute a dummy structure.
+    $hints_ref = \%dummy_H if ! defined $hints_ref
+                              || (! defined $hints_ref->{charnames_full}
+                                  && ! defined $hints_ref->{charnames_loose});
+
+    # At runtime, but currently not at compile time, $^H gets
+    # stringified, so un-stringify back to the original data structures.
+    # These get thrown away by perl before the next invocation
+    # Also fill in the hash with the non-stringified data.
+    # N.B.  New fields must be also added to %dummy_H
+
+    %{$^H{charnames_name_aliases}} = split ',',
+                                      $hints_ref->{charnames_stringified_names};
+    %{$^H{charnames_ord_aliases}} = split ',',
+                                      $hints_ref->{charnames_stringified_ords};
+    $^H{charnames_scripts} = $hints_ref->{charnames_scripts};
+    $^H{charnames_full} = $hints_ref->{charnames_full};
+    $^H{charnames_loose} = $hints_ref->{charnames_loose};
+    $^H{charnames_short} = $hints_ref->{charnames_short};
+  }
+
+  my $loose = $^H{charnames_loose};
+  my $lookup_name;  # Input name suitably modified for grepping for in the
+                    # table
+
+  # User alias should be checked first or else can't override ours, and if we
+  # were to add any, could conflict with theirs.
+  if (exists $^H{charnames_ord_aliases}{$name}) {
+    $utf8 = $^H{charnames_ord_aliases}{$name};
+  }
+  elsif (exists $^H{charnames_name_aliases}{$name}) {
+    $name = $^H{charnames_name_aliases}{$name};
+    $save_input = $lookup_name = $name;  # Cache the result for any error
+                                         # message
+    # The aliases are documented to not match loosely, so change loose match
+    # into full.
+    if ($loose) {
+      $loose = 0;
+      $^H{charnames_full} = 1;
+    }
+  }
+  else {
+
+    # Here, not a user alias.  That means that loose matching may be in
+    # effect; will have to modify the input name.
+    $lookup_name = $name;
+    if ($loose) {
+      $lookup_name = uc $lookup_name;
+
+      # Squeeze out all underscores
+      $lookup_name =~ s/_//g;
+
+      # Remove all medial hyphens
+      $lookup_name =~ s/ (?<= \S  ) - (?= \S  )//gx;
+
+      # Squeeze out all spaces
+      $lookup_name =~ s/\s//g;
+    }
+
+    # Here, $lookup_name has been modified as necessary for looking in the
+    # hashes.  Check the system alias files next.  Most of these aliases are
+    # the same for both strict and loose matching.  To save space, the ones
+    # which differ are in their own separate hash, which is checked if loose
+    # matching is selected and the regular match fails.  To save time, the
+    # loose hashes could be expanded to include all aliases, and there would
+    # only have to be one check.  But if someone specifies :loose, they are
+    # interested in convenience over speed, and the time for this second check
+    # is miniscule compared to the rest of the routine.
+    if (exists $system_aliases{$lookup_name}) {
+      $utf8 = $system_aliases{$lookup_name};
+    }
+    # There are currently no entries in this hash, so don't waste time looking
+    # for them.  But the code is retained for the unlikely possibility that
+    # some will be added in the future.
+#    elsif ($loose && exists $loose_system_aliases{$lookup_name}) {
+#      $utf8 = $loose_system_aliases{$lookup_name};
+#    }
+#    if (exists $deprecated_aliases{$lookup_name}) {
+#      require warnings;
+#      warnings::warnif('deprecated',
+#                       "Unicode character name \"$name\" is deprecated, use \""
+#                       . viacode(ord $deprecated_aliases{$lookup_name})
+#                       . "\" instead");
+#      $utf8 = $deprecated_aliases{$lookup_name};
+#    }
+    # There are currently no entries in this hash, so don't waste time looking
+    # for them.  But the code is retained for the unlikely possibility that
+    # some will be added in the future.
+#    elsif ($loose && exists $loose_deprecated_aliases{$lookup_name}) {
+#      require warnings;
+#      warnings::warnif('deprecated',
+#                       "Unicode character name \"$name\" is deprecated, use \""
+#                       . viacode(ord $loose_deprecated_aliases{$lookup_name})
+#                       . "\" instead");
+#      $utf8 = $loose_deprecated_aliases{$lookup_name};
+#    }
+  }
+
+  my @off;  # Offsets into table of pattern match begin and end
+
+  # If haven't found it yet...
+  if (! defined $utf8) {
+
+    # See if has looked this input up earlier.
+    if (! $loose && $^H{charnames_full} && exists $full_names_cache{$name}) {
+      $utf8 = $full_names_cache{$name};
+    }
+    elsif ($loose && exists $loose_names_cache{$name}) {
+      $utf8 = $loose_names_cache{$name};
+    }
+    else { # Here, must do a look-up
+
+      # If full or loose matching succeeded, points to where to cache the
+      # result
+      my $cache_ref;
+
+      ## Suck in the code/name list as a big string.
+      ## Lines look like:
+      ##     "00052\tLATIN CAPITAL LETTER R\n"
+      # or
+      #      "0052 0303\tLATIN CAPITAL LETTER R WITH TILDE\n"
+      $txt = do "unicore/Name.pl" unless $txt;
+
+      ## @off will hold the index into the code/name string of the start and
+      ## end of the name as we find it.
+
+      ## If :loose, look for a loose match; if :full, look for the name
+      ## exactly
+      # First, see if the name is one which is algorithmically determinable.
+      # The subroutine is included in Name.pl.  The table contained in
+      # $txt doesn't contain these.  Experiments show that checking
+      # for these before checking for the regular names has no
+      # noticeable impact on performance for the regular names, but
+      # the other way around slows down finding these immensely.
+      # Algorithmically determinables are not placed in the cache because
+      # that uses up memory, and finding these again is fast.
+      if (($loose || $^H{charnames_full})
+          && (defined (my $ord = charnames::name_to_code_point_special($lookup_name, $loose))))
+      {
+        $utf8 = pack("U", $ord);
+      }
+      else {
+
+        # Not algorithmically determinable; look up in the table.  The name
+        # will be turned into a regex, so quote any meta characters.
+        $lookup_name = quotemeta $lookup_name;
+
+        if ($loose) {
+
+          # For loose matches, $lookup_name has already squeezed out the
+          # non-essential characters.  We have to add in code to make the
+          # squeezed version match the non-squeezed equivalent in the table.
+          # The only remaining hyphens are ones that start or end a word in
+          # the original.  They have been quoted in $lookup_name so they look
+          # like "\-".  Change all other characters except the backslash
+          # quotes for any metacharacters, and the final character, so that
+          # e.g., COLON gets transformed into: /C[- ]?O[- ]?L[- ]?O[- ]?N/
+          $lookup_name =~ s/ (?! \\ -)    # Don't do this to the \- sequence
+                             ( [^-\\] )   # Nor the "-" within that sequence,
+                                          # nor the "\" that quotes metachars,
+                                          # but otherwise put the char into $1
+                             (?=.)        # And don't do it for the final char
+                           /$1\[- \]?/gx; # And add an optional blank or
+                                          # '-' after each $1 char
+
+          # Those remaining hyphens were originally at the beginning or end of
+          # a word, so they can match either a blank before or after, but not
+          # both.  (Keep in mind that they have been quoted, so are a '\-'
+          # sequence)
+          $lookup_name =~ s/\\ -/(?:- | -)/xg;
+        }
+
+        # Do the lookup in the full table if asked for, and if succeeds
+        # save the offsets and set where to cache the result.
+        if (($loose || $^H{charnames_full}) && $txt =~ /\t$lookup_name$/m) {
+          @off = ($-[0] + 1, $+[0]);    # The 1 is for the tab
+          $cache_ref = ($loose) ? \%loose_names_cache : \%full_names_cache;
+        }
+        else {
+
+          # Here, didn't look for, or didn't find the name.
+          # If :short is allowed, see if input is like "greek:Sigma".
+          # Keep in mind that $lookup_name has had the metas quoted.
+          my $scripts_trie = "";
+          my $name_has_uppercase;
+          if (($^H{charnames_short})
+              && $lookup_name =~ /^ (?: \\ \s)*   # Quoted space
+                                    (.+?)         # $1 = the script
+                                    (?: \\ \s)*
+                                    \\ :          # Quoted colon
+                                    (?: \\ \s)*
+                                    (.+?)         # $2 = the name
+                                    (?: \\ \s)* $
+                                  /xs)
+          {
+              # Even in non-loose matching, the script traditionally has been
+              # case insensitve
+              $scripts_trie = "\U$1";
+              $lookup_name = $2;
+
+              # Use original name to find its input casing, but ignore the
+              # script part of that to make the determination.
+              $save_input = $name if ! defined $save_input;
+              $name =~ s/.*?://;
+              $name_has_uppercase = $name =~ /[[:upper:]]/;
+          }
+          else { # Otherwise look in allowed scripts
+              $scripts_trie = $^H{charnames_scripts};
+
+              # Use original name to find its input casing
+              $name_has_uppercase = $name =~ /[[:upper:]]/;
+          }
+
+          my $case = $name_has_uppercase ? "CAPITAL" : "SMALL";
+          return if (! $scripts_trie || $txt !~
+             /\t (?: $scripts_trie ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm);
+
+          # Here have found the input name in the table.
+          @off = ($-[0] + 1, $+[0]);  # The 1 is for the tab
+        }
+
+        # Here, the input name has been found; we haven't set up the output,
+        # but we know where in the string
+        # the name starts.  The string is set up so that for single characters
+        # (and not named sequences), the name is preceded immediately by a
+        # tab and 5 hex digits for its code, with a \n before those.  Named
+        # sequences won't have the 7th preceding character be a \n.
+        # (Actually, for the very first entry in the table this isn't strictly
+        # true: subtracting 7 will yield -1, and the substr below will
+        # therefore yield the very last character in the table, which should
+        # also be a \n, so the statement works anyway.)
+        if (substr($txt, $off[0] - 7, 1) eq "\n") {
+          $utf8 = pack("U", CORE::hex substr($txt, $off[0] - 6, 5));
+
+          # Handle the single loose matching special case, in which two names
+          # differ only by a single medial hyphen.  If the original had a
+          # hyphen (or more) in the right place, then it is that one.
+          $utf8 = $HANGUL_JUNGSEONG_O_E_utf8
+                  if $loose
+                     && $utf8 eq $HANGUL_JUNGSEONG_OE_utf8
+                     && $name =~ m/O \s* - [-\s]* E/ix;
+                     # Note that this wouldn't work if there were a 2nd
+                     # OE in the name
+        }
+        else {
+
+          # Here, is a named sequence.  Need to go looking for the beginning,
+          # which is just after the \n from the previous entry in the table.
+          # The +1 skips past that newline, or, if the rindex() fails, to put
+          # us to an offset of zero.
+          my $charstart = rindex($txt, "\n", $off[0] - 7) + 1;
+          $utf8 = pack("U*", map { CORE::hex }
+              split " ", substr($txt, $charstart, $off[0] - $charstart - 1));
+        }
+      }
+
+      # Cache the input so as to not have to search the large table
+      # again, but only if it came from the one search that we cache.
+      # (Haven't bothered with the pain of sorting out scoping issues for the
+      # scripts searches.)
+      $cache_ref->{$name} = $utf8 if defined $cache_ref;
+    }
+  }
+
+
+  # Here, have the utf8.  If the return is to be an ord, must be any single
+  # character.
+  if ($wants_ord) {
+    return ord($utf8) if length $utf8 == 1;
+  }
+  else {
+
+    # Here, wants string output.  If utf8 is acceptable, just return what
+    # we've got; otherwise attempt to convert it to non-utf8 and return that.
+    my $in_bytes = ($runtime)
+                   ? (caller $runtime)[8] & $bytes::hint_bits
+                   : $^H & $bytes::hint_bits;
+    return $utf8 if (! $in_bytes || utf8::downgrade($utf8, 1)) # The 1 arg
+                                                  # means don't die on failure
+  }
+
+  # Here, there is an error:  either there are too many characters, or the
+  # result string needs to be non-utf8, and at least one character requires
+  # utf8.  Prefer any official name over the input one for the error message.
+  if (@off) {
+    $name = substr($txt, $off[0], $off[1] - $off[0]) if @off;
+  }
+  else {
+    $name = (defined $save_input) ? $save_input : $_[0];
+  }
+
+  if ($wants_ord) {
+    # Only way to get here in this case is if result too long.  Message
+    # assumes that our only caller that requires single char result is
+    # vianame.
+    carp "charnames::vianame() doesn't handle named sequences ($name).  Use charnames::string_vianame() instead";
+    return;
+  }
+
+  # Only other possible failure here is from use bytes.
+  if ($runtime) {
+    carp not_legal_use_bytes_msg($name, $utf8);
+    return;
+  } else {
+    croak not_legal_use_bytes_msg($name, $utf8);
+  }
+
+} # lookup_name
+
+sub charnames {
+
+  # For \N{...}.  Looks up the character name and returns the string
+  # representation of it.
+
+  # The first 0 arg means wants a string returned; the second that we are in
+  # compile time
+  return lookup_name($_[0], 0, 0);
+}
+
+sub import
+{
+  shift; ## ignore class name
+
+  if (not @_) {
+    carp("'use charnames' needs explicit imports list");
+  }
+  $^H{charnames} = \&charnames ;
+  $^H{charnames_ord_aliases} = {};
+  $^H{charnames_name_aliases} = {};
+  $^H{charnames_inverse_ords} = {};
+  # New fields must be added to %dummy_H, and the code in lookup_name()
+  # that copies fields from the runtime structure
+
+  ##
+  ## fill %h keys with our @_ args.
+  ##
+  my ($promote, %h, @args) = (0);
+  while (my $arg = shift) {
+    if ($arg eq ":alias") {
+      @_ or
+        croak ":alias needs an argument in charnames";
+      my $alias = shift;
+      if (ref $alias) {
+        ref $alias eq "HASH" or
+          croak "Only HASH reference supported as argument to :alias";
+        alias ($alias);
+        $promote = 1;
+        next;
+      }
+      if ($alias =~ m{:(\w+)$}) {
+        $1 eq "full" || $1 eq "loose" || $1 eq "short" and
+          croak ":alias cannot use existing pragma :$1 (reversed order?)";
+        alias_file ($1) and $promote = 1;
+        next;
+      }
+      alias_file ($alias) and $promote = 1;
+      next;
+    }
+    if (substr($arg, 0, 1) eq ':'
+      and ! ($arg eq ":full" || $arg eq ":short" || $arg eq ":loose"))
+    {
+      warn "unsupported special '$arg' in charnames";
+      next;
+    }
+    push @args, $arg;
+  }
+
+  @args == 0 && $promote and @args = (":full");
+  @h{@args} = (1) x @args;
+
+  # Don't leave these undefined as are tested for in lookup_names
+  $^H{charnames_full} = delete $h{':full'} || 0;
+  $^H{charnames_loose} = delete $h{':loose'} || 0;
+  $^H{charnames_short} = delete $h{':short'} || 0;
+  my @scripts = map { uc quotemeta } keys %h;
+
+  ##
+  ## If utf8? warnings are enabled, and some scripts were given,
+  ## see if at least we can find one letter from each script.
+  ##
+  if (warnings::enabled('utf8') && @scripts) {
+    $txt = do "unicore/Name.pl" unless $txt;
+
+    for my $script (@scripts) {
+      if (not $txt =~ m/\t$script (?:CAPITAL |SMALL )?LETTER /) {
+        warnings::warn('utf8',  "No such script: '$script'");
+        $script = quotemeta $script;  # Escape it, for use in the re.
+      }
+    }
+  }
+
+  # %^H gets stringified, so serialize it ourselves so can extract the
+  # real data back later.
+  $^H{charnames_stringified_ords} = join ",", %{$^H{charnames_ord_aliases}};
+  $^H{charnames_stringified_names} = join ",", %{$^H{charnames_name_aliases}};
+  $^H{charnames_stringified_inverse_ords} = join ",", %{$^H{charnames_inverse_ords}};
+
+  # Modify the input script names for loose name matching if that is also
+  # specified, similar to the way the base character name is prepared.  They
+  # don't (currently, and hopefully never will) have dashes.  These go into a
+  # regex, and have already been uppercased and quotemeta'd.  Squeeze out all
+  # input underscores, blanks, and dashes.  Then convert so will match a blank
+  # between any characters.
+  if ($^H{charnames_loose}) {
+    for (my $i = 0; $i < @scripts; $i++) {
+      $scripts[$i] =~ s/[_ -]//g;
+      $scripts[$i] =~ s/ ( [^\\] ) (?= . ) /$1\\ ?/gx;
+    }
+  }
+
+  $^H{charnames_scripts} = join "|", @scripts;  # Stringifiy them as a trie
+} # import
+
+# Cache of already looked-up values.  This is set to only contain
+# official values, and user aliases can't override them, so scoping is
+# not an issue.
+my %viacode;
+
+sub viacode {
+
+  # Returns the name of the code point argument
+
+  if (@_ != 1) {
+    carp "charnames::viacode() expects one argument";
+    return;
+  }
+
+  my $arg = shift;
+
+  # This is derived from Unicode::UCD, where it is nearly the same as the
+  # function _getcode(), but here it makes sure that even a hex argument
+  # has the proper number of leading zeros, which is critical in
+  # matching against $txt below
+  # Must check if decimal first; see comments at that definition
+  my $hex;
+  if ($arg =~ $decimal_qr) {
+    $hex = sprintf "%05X", $arg;
+  } elsif ($arg =~ $hex_qr) {
+    # Below is the line that differs from the _getcode() source
+    $hex = sprintf "%05X", hex $1;
+  } else {
+    carp("unexpected arg \"$arg\" to charnames::viacode()");
+    return;
+  }
+
+  return $viacode{$hex} if exists $viacode{$hex};
+
+  my $return;
+
+  # If the code point is above the max in the table, there's no point
+  # looking through it.  Checking the length first is slightly faster
+  if (length($hex) <= 5 || CORE::hex($hex) <= 0x10FFFF) {
+    $txt = do "unicore/Name.pl" unless $txt;
+
+    # See if the name is algorithmically determinable.
+    my $algorithmic = charnames::code_point_to_name_special(CORE::hex $hex);
+    if (defined $algorithmic) {
+      $viacode{$hex} = $algorithmic;
+      return $algorithmic;
+    }
+
+    # Return the official name, if exists.  It's unclear to me (khw) at
+    # this juncture if it is better to return a user-defined override, so
+    # leaving it as is for now.
+    if ($txt =~ m/^$hex\t/m) {
+
+        # The name starts with the next character and goes up to the
+        # next new-line.  Using capturing parentheses above instead of
+        # @+ more than doubles the execution time in Perl 5.13
+        $return = substr($txt, $+[0], index($txt, "\n", $+[0]) - $+[0]);
+
+        # If not one of these 4 code points, return what we've found.
+        if ($hex !~ / ^ 000 (?: 8[014] | 99 ) $ /x) {
+          $viacode{$hex} = $return;
+          return $return;
+        }
+
+        # For backwards compatibility, we don't return the official name of
+        # the 4 code points if there are user-defined aliases for them -- so
+        # continue looking.
+    }
+  }
+
+  # See if there is a user name for it, before giving up completely.
+  # First get the scoped aliases, give up if have none.
+  my $H_ref = (caller(1))[10];
+  return if ! defined $return
+              && (! defined $H_ref
+                  || ! exists $H_ref->{charnames_stringified_inverse_ords});
+
+  my %code_point_aliases;
+  if (defined $H_ref->{charnames_stringified_inverse_ords}) {
+    %code_point_aliases = split ',',
+                          $H_ref->{charnames_stringified_inverse_ords};
+    return $code_point_aliases{$hex} if exists $code_point_aliases{$hex};
+  }
+
+  # Here there is no user-defined alias, return any official one.
+  return $return if defined $return;
+
+  if (CORE::hex($hex) > 0x10FFFF
+      && warnings::enabled('non_unicode'))
+  {
+      carp "Unicode characters only allocated up to U+10FFFF (you asked for U+$hex)";
+  }
+  return;
+
+} # _viacode
+
+1;
+
+# ex: set ts=8 sts=2 sw=2 et:

Added: vendor/perl/dist/lib/perl5db/t/EnableModule.pm
===================================================================
--- vendor/perl/dist/lib/perl5db/t/EnableModule.pm	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/EnableModule.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+package EnableModule;
+
+use strict;
+use warnings;
+
+sub set_x
+{
+    my $x_ref = shift;
+
+    ${$x_ref} .= "TwoHundred";
+
+    my $x = ${$x_ref};
+
+    my $t = $x;
+    $t .= "Foo";
+}
+
+1;

Added: vendor/perl/dist/lib/perl5db/t/MyModule.pm
===================================================================
--- vendor/perl/dist/lib/perl5db/t/MyModule.pm	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/MyModule.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+package MyModule;
+
+use strict;
+use warnings;
+
+use vars qw($var);
+
+$var = "Bar";
+
+sub function
+{
+    print "In MyModule.\n";
+}
+
+1;

Added: vendor/perl/dist/lib/perl5db/t/break-on-dot
===================================================================
--- vendor/perl/dist/lib/perl5db/t/break-on-dot	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/break-on-dot	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $exp = 1;
+for my $i (1 .. 20)
+{
+    $exp *= 2;
+}

Added: vendor/perl/dist/lib/perl5db/t/breakpoint-bug
===================================================================
--- vendor/perl/dist/lib/perl5db/t/breakpoint-bug	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/breakpoint-bug	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8 @@
+#!/usr/bin/perl
+my $x = "One";
+
+$x = "Two";
+
+my $y = "Lambda";
+
+$x = "Four";

Added: vendor/perl/dist/lib/perl5db/t/disable-breakpoints-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/disable-breakpoints-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/disable-breakpoints-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+#!/usr/bin/perl
+my $x = "One";
+my $dummy = 0;
+
+$x = "FirstVal";
+
+$dummy++;
+
+$x = "SecondVal";
+
+$dummy++;
+
+$x = "ThirdVal";
+
+$dummy++;
+
+$x = "FourthVal";
+
+$dummy++;

Added: vendor/perl/dist/lib/perl5db/t/disable-breakpoints-2
===================================================================
--- vendor/perl/dist/lib/perl5db/t/disable-breakpoints-2	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/disable-breakpoints-2	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+my $x = "One";
+
+$x = "FirstVal";
+
+set_x();
+
+$x = "SecondVal";
+
+set_x();
+
+$x = "ThirdVal";
+
+set_x();
+
+$x = "FourthVal";
+
+set_x();
+
+sub set_x
+{
+    $x .= "OneHundred";
+
+    my $t = $x;
+    $t .= "Foo";
+}

Added: vendor/perl/dist/lib/perl5db/t/disable-breakpoints-3
===================================================================
--- vendor/perl/dist/lib/perl5db/t/disable-breakpoints-3	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/disable-breakpoints-3	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+
+use EnableModule;
+my $x = "One";
+
+$x = "FirstVal";
+
+EnableModule::set_x(\$x);
+
+$x = "SecondVal";
+
+EnableModule::set_x(\$x);
+
+$x = "ThirdVal";
+
+EnableModule::set_x(\$x);
+
+$x = "FourthVal";
+
+EnableModule::set_x(\$x);
+

Added: vendor/perl/dist/lib/perl5db/t/fact
===================================================================
--- vendor/perl/dist/lib/perl5db/t/fact	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/fact	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub fact {
+    my $n = shift;
+    if ($n > 1) {
+        return $n * fact($n - 1);
+    } else {
+        return 1;
+    }
+}
+fact(5);

Added: vendor/perl/dist/lib/perl5db/t/filename-line-breakpoint
===================================================================
--- vendor/perl/dist/lib/perl5db/t/filename-line-breakpoint	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/filename-line-breakpoint	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,14 @@
+#!/perl
+
+use strict;
+use warnings;
+
+use MyModule;
+
+my $x = "Foo";
+
+MyModule::function();
+
+print "In Main File.\n";
+
+1;

Added: vendor/perl/dist/lib/perl5db/t/load-modules
===================================================================
--- vendor/perl/dist/lib/perl5db/t/load-modules	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/load-modules	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Scalar::Util;

Added: vendor/perl/dist/lib/perl5db/t/rt-104168
===================================================================
--- vendor/perl/dist/lib/perl5db/t/rt-104168	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/rt-104168	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!/usr/bin/perl
+#
+# This code is used by lib/perl5db.t !!!
+#
+
+foo();
+
+sub foo {
+  bar();
+}
+
+
+sub bar {
+  baz();
+}
+
+sub baz {
+  1;
+}
+
+1;

Added: vendor/perl/dist/lib/perl5db/t/source-cmd-test-no-q.perldb
===================================================================
--- vendor/perl/dist/lib/perl5db/t/source-cmd-test-no-q.perldb	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/source-cmd-test-no-q.perldb	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+l 3-10

Added: vendor/perl/dist/lib/perl5db/t/source-cmd-test.perldb
===================================================================
--- vendor/perl/dist/lib/perl5db/t/source-cmd-test.perldb	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/source-cmd-test.perldb	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+l 3-10
+q

Added: vendor/perl/dist/lib/perl5db/t/test-PrintRet-option-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-PrintRet-option-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-PrintRet-option-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my ($x, $y);
+
+sub return_scalar
+{
+    $y++;
+
+    return "20024";
+}
+
+sub return_list
+{
+    $y++;
+
+    return ("Foo", "Bar", "Baz");
+}
+
+sub return_void
+{
+    $y++;
+
+    return;
+}
+
+$y++;
+
+# Choose one based on $x
+#
+if ($x eq "s")
+{
+    my $s = return_scalar();
+}
+elsif ($x eq "l")
+{
+    my @l = return_list();
+}
+else
+{
+    return_void();
+    $y++;
+}
+

Added: vendor/perl/dist/lib/perl5db/t/test-a-statement-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-a-statement-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-a-statement-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+while (my $l = <DATA>) {
+    chomp $l;
+    print "$l\n";
+}
+
+__DATA__
+123456789012 This is a test
+3456789012345This is another test
+6789012345678This is yet another test
+9012345678901Is this yet another test?
+234567890123 Yes, this is another test.
+4567890123456I think this is a test.
+7890123456789Now is the time.
+0123456789012For all good men.
+3456789012345To come to the aid party.
+678901234678 This is the tenth line.
+

Added: vendor/perl/dist/lib/perl5db/t/test-dieLevel-option-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-dieLevel-option-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-dieLevel-option-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use strict;
+use warnings;
+
+sub foo
+{
+    print "In foo\n";
+    bar();
+}
+
+sub bar
+{
+    print "In baz\n";
+    baz();
+}
+
+sub baz
+{
+    die "This program dies.";
+}
+
+foo();
+

Added: vendor/perl/dist/lib/perl5db/t/test-frame-option-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-frame-option-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-frame-option-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,26 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub my_func
+{
+    my ($num1, $num2) = @_;
+
+    print $num1+$num2, "\n";
+
+    my_other_func ($num1*3, $num2*24);
+
+    return $num1*$num2;
+}
+
+sub my_other_func
+{
+    my ($num1, $num2) = @_;
+
+    print "my_other_func: n1=<$num1> n2=<$num2>\n";
+
+    return $num1 * $num2;
+}
+
+my_func(1, 50);

Added: vendor/perl/dist/lib/perl5db/t/test-l-statement-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-l-statement-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-l-statement-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+$x = 1;
+print "1\n";
+
+$x = 2;
+print "2\n";
+
+$x = 3;
+print "3\n";
+
+$x = 4;
+print "4\n";
+
+$x = 5;
+print "5\n";
+
+$x = 6;
+print "6\n";
+
+$x = 7;
+print "7\n";

Added: vendor/perl/dist/lib/perl5db/t/test-l-statement-2
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-l-statement-2	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-l-statement-2	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+sub fact {
+    my $n = shift;
+    if ($n > 1) {
+        return $n * fact($n - 1);
+    } else {
+        return 1;
+    }
+}
+
+sub bar {
+    print "One\n";
+    print "Two\n";
+    print "Three\n";
+
+    return;
+}
+
+fact(5);
+bar();

Added: vendor/perl/dist/lib/perl5db/t/test-m-statement-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-m-statement-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-m-statement-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,43 @@
+use strict;
+use warnings;
+
+package MyClass;
+
+sub new
+{
+    my $class = shift;
+
+    my $self = bless {}, $class;
+
+    $self->_init(@_);
+
+    return $self;
+}
+
+sub _init
+{
+    my $self = shift;
+
+    $self->{foo} = 'bar';
+
+    return;
+}
+
+sub greet
+{
+    my ($self, $msg) = @_;
+
+    print "$msg - $self->{foo}\n";
+
+    return;
+}
+
+1;
+
+package main;
+
+my $obj = MyClass->new;
+
+$obj->greet("Hello");
+
+1;

Added: vendor/perl/dist/lib/perl5db/t/test-passing-at-underscore-to-x-etc
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-passing-at-underscore-to-x-etc	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-passing-at-underscore-to-x-etc	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print "One\n";
+
+sub my_pass_args_to
+{
+    print "Two\n";
+}
+
+my_pass_args_to ("Arg1", "Capsula", "GreekHumor", "Socrates");
+
+print "Three\n";

Added: vendor/perl/dist/lib/perl5db/t/test-r-statement
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-r-statement	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-r-statement	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,27 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $var = "Test";
+
+sub mysub
+{
+    my $flag = 1;
+
+    $flag = 0;
+
+    print "Foo\n";
+
+    if ($flag)
+    {
+        print "Bar\n";
+    }
+
+    return;
+}
+
+mysub();
+
+$var .= "More";
+

Added: vendor/perl/dist/lib/perl5db/t/test-w-statement-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-w-statement-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-w-statement-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use vars qw($foo);
+
+$foo = 1;
+
+print "Hello\n";
+
+for my $idx (map { $_ * 10 } 1 .. 10)
+{
+    if ($idx > 17)
+    {
+        $foo = 2;
+        print "Baz\n";
+    }
+}
+

Added: vendor/perl/dist/lib/perl5db/t/test-warnLevel-option-1
===================================================================
--- vendor/perl/dist/lib/perl5db/t/test-warnLevel-option-1	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/test-warnLevel-option-1	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,29 @@
+use strict;
+use warnings;
+
+sub foo
+{
+    print "In foo\n";
+    bar();
+}
+
+sub bar
+{
+    print "In baz\n";
+    baz();
+}
+
+sub baz
+{
+    warn "This is not a warning.";
+
+    return;
+}
+
+sub myfunc
+{
+    bar();
+}
+
+myfunc();
+

Added: vendor/perl/dist/lib/perl5db/t/uncalled-subroutine
===================================================================
--- vendor/perl/dist/lib/perl5db/t/uncalled-subroutine	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/uncalled-subroutine	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+exit(0);
+
+sub uncalled_subroutine
+{
+    print '<', join(',', 1 .. 5), ">\n";
+}

Added: vendor/perl/dist/lib/perl5db/t/with-subroutine
===================================================================
--- vendor/perl/dist/lib/perl5db/t/with-subroutine	                        (rev 0)
+++ vendor/perl/dist/lib/perl5db/t/with-subroutine	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,17 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $x = 'hello world';
+
+print "$x\n";
+
+back();
+
+exit;
+
+sub back {
+    print "hello back\n";
+}
+

Added: vendor/perl/dist/lib/version/t/01base.t
===================================================================
--- vendor/perl/dist/lib/version/t/01base.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/01base.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,46 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More qw/no_plan/;
+
+BEGIN {
+    (my $coretests = $0) =~ s'[^/]+\.t'coretests.pm';
+    require $coretests;
+    use_ok('version', 0.9902);
+}
+
+diag "Tests with base class" unless $ENV{PERL_CORE};
+
+BaseTests("version","new","qv");
+BaseTests("version","new","declare");
+BaseTests("version","parse", "qv");
+BaseTests("version","parse", "declare");
+
+# dummy up a redundant call to satify David Wheeler
+local $SIG{__WARN__} = sub { die $_[0] };
+eval 'use version;';
+unlike ($@, qr/^Subroutine main::declare redefined/,
+    "Only export declare once per package (to prevent redefined warnings).");
+
+# https://rt.cpan.org/Ticket/Display.html?id=47980
+my $v = eval {
+    require IO::Handle;
+    $@ = qq(Can't locate some/completely/fictitious/module.pm);
+    return IO::Handle->VERSION;
+};
+ok defined($v), 'Fix for RT #47980';
+
+{ # https://rt.cpan.org/Ticket/Display.html?id=81085
+    eval { version::new() };
+    like $@, qr'Usage: version::new\(class, version\)',
+	'No bus err when called as function';
+    eval { $x = 1; print version::new };
+    like $@, qr'Usage: version::new\(class, version\)',
+	'No implicit object creation when called as function';
+    eval { $x = "version"; print version::new };
+    like $@, qr'Usage: version::new\(class, version\)',
+	'No implicit object creation when called as function';
+}

Added: vendor/perl/dist/lib/version/t/02derived.t
===================================================================
--- vendor/perl/dist/lib/version/t/02derived.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/02derived.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,106 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More qw/no_plan/;
+use File::Temp qw/tempfile/;
+
+BEGIN {
+    (my $coretests = $0) =~ s'[^/]+\.t'coretests.pm';
+    require $coretests;
+    use_ok("version", 0.9902);
+    # If we made it this far, we are ok.
+}
+
+use lib qw/./;
+
+package version::Bad;
+use base 'version';
+sub new { my($self,$n)=@_;  bless \$n, $self }
+
+# Bad subclass for SemVer failures seen with pure Perl version.pm only
+package version::Bad2;
+use base 'version';
+sub new {
+    my ($class, $val) = @_;
+    die 'Invalid version string format' unless version::is_strict($val);
+    my $self = $class->SUPER::new($val);
+    return $self;
+}
+sub declare {
+    my ($class, $val) = @_;
+    my $self = $class->SUPER::declare($val);
+    return $self;
+}
+
+package main;
+
+my $warning;
+local $SIG{__WARN__} = sub { $warning = $_[0] };
+# dummy up a legal module for testing RT#19017
+my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+(my $package = basename($filename)) =~ s/\.pm$//;
+print $fh <<"EOF";
+# This is an empty subclass
+package $package;
+use base 'version';
+use vars '\$VERSION';
+\$VERSION=0.001;
+EOF
+close $fh;
+
+sub main_reset {
+    delete $main::INC{'$package'};
+    undef &qv; undef *::qv; # avoid 'used once' warning
+    undef &declare; undef *::declare; # avoid 'used once' warning
+}
+
+diag "Tests with empty derived class"  unless $ENV{PERL_CORE};
+
+use_ok($package, 0.001);
+my $testobj = $package->new(1.002_003);
+isa_ok( $testobj, $package );
+ok( $testobj->numify == 1.002003, "Numified correctly" );
+ok( $testobj->stringify eq "1.002003", "Stringified correctly" );
+ok( $testobj->normal eq "v1.2.3", "Normalified correctly" );
+
+my $verobj = version::->new("1.2.4");
+ok( $verobj > $testobj, "Comparison vs parent class" );
+
+BaseTests($package, "new", "qv");
+main_reset;
+use_ok($package, 0.001, "declare");
+BaseTests($package, "new", "declare");
+main_reset;
+use_ok($package, 0.001);
+BaseTests($package, "parse", "qv");
+main_reset;
+use_ok($package, 0.001, "declare");
+BaseTests($package, "parse", "declare");
+
+diag "tests with bad subclass"  unless $ENV{PERL_CORE};
+$testobj = version::Bad->new(1.002_003);
+isa_ok( $testobj, "version::Bad" );
+eval { my $string = $testobj->numify };
+like($@, qr/Invalid version object/,
+    "Bad subclass numify");
+eval { my $string = $testobj->normal };
+like($@, qr/Invalid version object/,
+    "Bad subclass normal");
+eval { my $string = $testobj->stringify };
+like($@, qr/Invalid version object/,
+    "Bad subclass stringify");
+eval { my $test = ($testobj > 1.0) };
+like($@, qr/Invalid version object/,
+    "Bad subclass vcmp");
+
+# Bad subclassing for SemVer with pure Perl version.pm only
+eval { my $test = version::Bad2->new("01.1.2") };
+like($@, qr/Invalid version string format/,
+    "Correctly found invalid version");
+
+eval { my $test = version::Bad2->declare("01.1.2") };
+unlike($@, qr/Invalid version string format/,
+    "Correctly ignored invalid version");

Added: vendor/perl/dist/lib/version/t/03require.t
===================================================================
--- vendor/perl/dist/lib/version/t/03require.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/03require.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,25 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More qw/no_plan/;
+
+BEGIN {
+    (my $coretests = $0) =~ s'[^/]+\.t'coretests.pm';
+    require $coretests;
+}
+
+# Don't want to use, because we need to make sure that the import doesn't
+# fire just yet (some code does this to avoid importing qv() and delare()).
+require_ok("version");
+is $version::VERSION, 0.9902, "Make sure we have the correct class";
+ok(!"main"->can("qv"), "We don't have the imported qv()");
+ok(!"main"->can("declare"), "We don't have the imported declare()");
+
+
+diag "Tests with base class" unless $ENV{PERL_CORE};
+
+BaseTests("version","new",undef);
+BaseTests("version","parse",undef);

Added: vendor/perl/dist/lib/version/t/04strict_lax.t
===================================================================
--- vendor/perl/dist/lib/version/t/04strict_lax.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/04strict_lax.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,75 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More qw/no_plan/;
+
+# do strict lax tests in a sub to isolate a package to test importing
+SKIP: {
+    skip 'No extended regexes Perl < 5.006', 172
+	if $] < 5.006_000;
+    strict_lax_tests();
+}
+
+sub strict_lax_tests {
+  package temp12345;
+  # copied from perl core test t/op/packagev.t
+  # format: STRING STRICT_OK LAX_OK
+  my $strict_lax_data = << 'CASE_DATA';
+1.00		pass	pass
+1.00001		pass	pass
+0.123		pass	pass
+12.345		pass	pass
+42		pass	pass
+0		pass	pass
+0.0		pass	pass
+v1.2.3		pass	pass
+v1.2.3.4	pass	pass
+v0.1.2		pass	pass
+v0.0.0		pass	pass
+01		fail	pass
+01.0203		fail	pass
+v01		fail	pass
+v01.02.03	fail	pass
+.1		fail	pass
+.1.2		fail	pass
+1.		fail	pass
+1.a		fail	fail
+1._		fail	fail
+1.02_03		fail	pass
+v1.2_3		fail	pass
+v1.02_03	fail	pass
+v1.2_3_4	fail	fail
+v1.2_3.4	fail	fail
+1.2_3.4		fail	fail
+0_		fail	fail
+1_		fail	fail
+1_.		fail	fail
+1.1_		fail	fail
+1.02_03_04	fail	fail
+1.2.3		fail	pass
+v1.2		fail	pass
+v0		fail	pass
+v1		fail	pass
+v.1.2.3		fail	fail
+v		fail	fail
+v1.2345.6	fail	pass
+undef		fail	pass
+1a		fail	fail
+1.2a3		fail	fail
+bar		fail	fail
+_		fail	fail
+CASE_DATA
+
+  require version;
+  version->import( qw/is_strict is_lax/ );
+  for my $case ( split qr/\n/, $strict_lax_data ) {
+    my ($v, $strict, $lax) = split qr/\t+/, $case;
+    main::ok( $strict eq 'pass' ? is_strict($v) : ! is_strict($v), "is_strict($v) [$strict]" );
+    main::ok( $strict eq 'pass' ? version::is_strict($v) : ! version::is_strict($v), "version::is_strict($v) [$strict]" );
+    main::ok( $lax eq 'pass' ? is_lax($v) : ! is_lax($v), "is_lax($v) [$lax]" );
+    main::ok( $lax eq 'pass' ? version::is_lax($v) : ! version::is_lax($v), "version::is_lax($v) [$lax]" );
+  }
+}

Added: vendor/perl/dist/lib/version/t/05sigdie.t
===================================================================
--- vendor/perl/dist/lib/version/t/05sigdie.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/05sigdie.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More tests => 1;
+
+BEGIN {
+    $SIG{__DIE__}   = sub {
+	warn @_;
+	BAIL_OUT( q[Couldn't use module; can't continue.] );
+    };
+}
+
+
+BEGIN {
+    use version 0.9902;
+}
+
+pass "Didn't get caught by the wrong DIE handler, which is a good thing";

Added: vendor/perl/dist/lib/version/t/06noop.t
===================================================================
--- vendor/perl/dist/lib/version/t/06noop.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/06noop.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,32 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use Test::More qw/no_plan/;
+
+BEGIN {
+    use_ok('version', 0.9902);
+}
+
+my $v1 = version->new('1.2');
+eval {$v1 = $v1 + 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 = $v1 - 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 = $v1 / 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 = $v1 * 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 = abs($v1)};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+
+eval {$v1 += 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 -= 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 /= 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';
+eval {$v1 *= 1};
+like $@, qr/operation not supported with version object/, 'No math ops with version objects';

Added: vendor/perl/dist/lib/version/t/07locale.t
===================================================================
--- vendor/perl/dist/lib/version/t/07locale.t	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/07locale.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,239 @@
+#! /usr/local/perl -w
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+
+#########################
+
+use File::Basename;
+use File::Temp qw/tempfile/;
+use POSIX qw/locale_h/;
+use Test::More tests => 7;
+use Config;
+
+BEGIN {
+    use_ok('version', 0.9902);
+}
+
+SKIP: {
+    	skip 'No locale testing for Perl < 5.6.0', 6 if $] < 5.006;
+        skip 'No locale testing without d_setlocale', 6 if(!$Config{d_setlocale});
+	# test locale handling
+	my $warning;
+	local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+	my $ver = 1.23;  # has to be floating point number
+	my $loc;
+	my $orig_loc = setlocale(LC_NUMERIC);
+	is ($ver, '1.23', 'Not using locale yet');
+	while (<DATA>) {
+	    chomp;
+	    $loc = setlocale( LC_ALL, $_);
+	    last if localeconv()->{decimal_point} eq ',';
+	}
+	skip 'Cannot test locale handling without a comma locale', 5
+	    unless $loc and localeconv()->{decimal_point} eq ',';
+
+	diag ("Testing locale handling with $loc") unless $ENV{PERL_CORE};
+
+	setlocale(LC_NUMERIC, $loc);
+	is ($ver, '1,23', "Using locale: $loc");
+	$v = version->new($ver);
+	unlike($warning, qr/Version string '1,23' contains invalid data/,
+	    "Process locale-dependent floating point");
+	is ($v, "1.23", "Locale doesn't apply to version objects");
+	ok ($v == $ver, "Comparison to locale floating point");
+
+	setlocale( LC_ALL, $orig_loc); # reset this before possible skip
+	skip 'Cannot test RT#46921 with Perl < 5.008', 1
+	    if ($] < 5.008);
+	skip 'Cannot test RT#46921 with pure Perl module', 1
+	    if exists $INC{'version/vpp.pm'};
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh <<"EOF";
+package $package;
+use POSIX qw(locale_h);
+\$^W = 1;
+use version;
+setlocale (LC_ALL, '$loc');
+use version ;
+eval "use Socket 1.7";
+setlocale( LC_ALL, '$orig_loc');
+1;
+EOF
+	close $fh;
+
+	eval "use lib '.'; use $package;";
+	unlike($warning, qr"Version string '1,7' contains invalid data",
+	    'Handle locale action-at-a-distance');
+    }
+
+__DATA__
+af_ZA
+af_ZA.utf8
+an_ES
+an_ES.utf8
+az_AZ.utf8
+be_BY
+be_BY.utf8
+bg_BG
+bg_BG.utf8
+br_FR
+br_FR at euro
+br_FR.utf8
+bs_BA
+bs_BA.utf8
+ca_ES
+ca_ES at euro
+ca_ES.utf8
+cs_CZ
+cs_CZ.utf8
+da_DK
+da_DK.utf8
+de_AT
+de_AT at euro
+de_AT.utf8
+de_BE
+de_BE at euro
+de_BE.utf8
+de_DE
+de_DE at euro
+de_DE.utf8
+de_LU
+de_LU at euro
+de_LU.utf8
+el_GR
+el_GR.utf8
+en_DK
+en_DK.utf8
+es_AR
+es_AR.utf8
+es_BO
+es_BO.utf8
+es_CL
+es_CL.utf8
+es_CO
+es_CO.utf8
+es_EC
+es_EC.utf8
+es_ES
+es_ES at euro
+es_ES.utf8
+es_PY
+es_PY.utf8
+es_UY
+es_UY.utf8
+es_VE
+es_VE.utf8
+et_EE
+et_EE.iso885915
+et_EE.utf8
+eu_ES
+eu_ES at euro
+eu_ES.utf8
+fi_FI
+fi_FI at euro
+fi_FI.utf8
+fo_FO
+fo_FO.utf8
+fr_BE
+fr_BE at euro
+fr_BE.utf8
+fr_CA
+fr_CA.utf8
+fr_CH
+fr_CH.utf8
+fr_FR
+fr_FR at euro
+fr_FR.utf8
+fr_LU
+fr_LU at euro
+fr_LU.utf8
+gl_ES
+gl_ES at euro
+gl_ES.utf8
+hr_HR
+hr_HR.utf8
+hu_HU
+hu_HU.utf8
+id_ID
+id_ID.utf8
+is_IS
+is_IS.utf8
+it_CH
+it_CH.utf8
+it_IT
+it_IT at euro
+it_IT.utf8
+ka_GE
+ka_GE.utf8
+kk_KZ
+kk_KZ.utf8
+kl_GL
+kl_GL.utf8
+lt_LT
+lt_LT.utf8
+lv_LV
+lv_LV.utf8
+mk_MK
+mk_MK.utf8
+mn_MN
+mn_MN.utf8
+nb_NO
+nb_NO.utf8
+nl_BE
+nl_BE at euro
+nl_BE.utf8
+nl_NL
+nl_NL at euro
+nl_NL.utf8
+nn_NO
+nn_NO.utf8
+no_NO
+no_NO.utf8
+oc_FR
+oc_FR.utf8
+pl_PL
+pl_PL.utf8
+pt_BR
+pt_BR.utf8
+pt_PT
+pt_PT at euro
+pt_PT.utf8
+ro_RO
+ro_RO.utf8
+ru_RU
+ru_RU.koi8r
+ru_RU.utf8
+ru_UA
+ru_UA.utf8
+se_NO
+se_NO.utf8
+sh_YU
+sh_YU.utf8
+sk_SK
+sk_SK.utf8
+sl_SI
+sl_SI.utf8
+sq_AL
+sq_AL.utf8
+sr_CS
+sr_CS.utf8
+sv_FI
+sv_FI at euro
+sv_FI.utf8
+sv_SE
+sv_SE.iso885915
+sv_SE.utf8
+tg_TJ
+tg_TJ.utf8
+tr_TR
+tr_TR.utf8
+tt_RU.utf8
+uk_UA
+uk_UA.utf8
+vi_VN
+vi_VN.tcvn
+wa_BE
+wa_BE at euro
+wa_BE.utf8

Added: vendor/perl/dist/lib/version/t/coretests.pm
===================================================================
--- vendor/perl/dist/lib/version/t/coretests.pm	                        (rev 0)
+++ vendor/perl/dist/lib/version/t/coretests.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,608 @@
+#! /usr/local/perl -w
+package main;
+require Test::Harness;
+*Verbose = \$Test::Harness::Verbose;
+use Data::Dumper;
+use File::Temp qw/tempfile/;
+use File::Basename;
+
+if ($Test::More::VERSION < 0.48) { # Fix for RT#48268
+    local $^W;
+    *main::use_ok = sub ($;@) {
+	my ($pkg, $req, @args) = @_;
+	eval "use $pkg $req ".join(' ', at args);
+	is ${"$pkg\::VERSION"}, $req, 'Had to manually use version';
+	# If we made it this far, we are ok.
+    };
+}
+
+sub BaseTests {
+
+    my ($CLASS, $method, $qv_declare) = @_;
+    my $warning;
+    local $SIG{__WARN__} = sub { $warning = $_[0] };
+
+    # Insert your test code below, the Test module is use()ed here so read
+    # its man page ( perldoc Test ) for help writing this test script.
+
+    # Test bare number processing
+    diag "tests with bare numbers" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method(5.005_03);
+    is ( "$version" , "5.00503" , '5.005_03 eq 5.00503' );
+    $version = $CLASS->$method(1.23);
+    is ( "$version" , "1.23" , '1.23 eq "1.23"' );
+
+    # Test quoted number processing
+    diag "tests with quoted numbers" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method("5.005_03");
+    is ( "$version" , "5.005_03" , '"5.005_03" eq "5.005_03"' );
+    $version = $CLASS->$method("v1.23");
+    is ( "$version" , "v1.23" , '"v1.23" eq "v1.23"' );
+
+    # Test stringify operator
+    diag "tests with stringify" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method("5.005");
+    is ( "$version" , "5.005" , '5.005 eq "5.005"' );
+    $version = $CLASS->$method("5.006.001");
+    is ( "$version" , "5.006.001" , '5.006.001 eq v5.6.1' );
+    unlike ($warning, qr/v-string without leading 'v' deprecated/, 'No leading v');
+    $version = $CLASS->$method("v1.2.3_4");
+    is ( "$version" , "v1.2.3_4" , 'alpha version 1.2.3_4 eq v1.2.3_4' );
+
+    # test illegal formats
+    diag "test illegal formats" unless $ENV{PERL_CORE};
+    eval {my $version = $CLASS->$method("1.2_3_4")};
+    like($@, qr/multiple underscores/,
+	"Invalid version format (multiple underscores)");
+
+    eval {my $version = $CLASS->$method("1.2_3.4")};
+    like($@, qr/underscores before decimal/,
+	"Invalid version format (underscores before decimal)");
+
+    eval {my $version = $CLASS->$method("1_2")};
+    like($@, qr/alpha without decimal/,
+	"Invalid version format (alpha without decimal)");
+
+    eval { $version = $CLASS->$method("1.2b3")};
+    like($@, qr/non-numeric data/,
+	"Invalid version format (non-numeric data)");
+
+    eval { $version = $CLASS->$method("-1.23")};
+    like($@, qr/negative version number/,
+	"Invalid version format (negative version number)");
+
+    # from here on out capture the warning and test independently
+    {
+    eval{$version = $CLASS->$method("99 and 44/100 pure")};
+
+    like($@, qr/non-numeric data/,
+	"Invalid version format (non-numeric data)");
+
+    eval{$version = $CLASS->$method("something")};
+    like($@, qr/non-numeric data/,
+	"Invalid version format (non-numeric data)");
+
+    # reset the test object to something reasonable
+    $version = $CLASS->$method("1.2.3");
+
+    # Test boolean operator
+    ok ($version, 'boolean');
+
+    # Test class membership
+    isa_ok ( $version, $CLASS );
+
+    # Test comparison operators with self
+    diag "tests with self" unless $ENV{PERL_CORE};
+    is ( $version <=> $version, 0, '$version <=> $version == 0' );
+    ok ( $version == $version, '$version == $version' );
+
+    # Test Numeric Comparison operators
+    # test first with non-object
+    $version = $CLASS->$method("5.006.001");
+    $new_version = "5.8.0";
+    diag "numeric tests with non-objects" unless $ENV{PERL_CORE};
+    ok ( $version == $version, '$version == $version' );
+    ok ( $version < $new_version, '$version < $new_version' );
+    ok ( $new_version > $version, '$new_version > $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    # now test with existing object
+    $new_version = $CLASS->$method($new_version);
+    diag "numeric tests with objects" unless $ENV{PERL_CORE};
+    ok ( $version < $new_version, '$version < $new_version' );
+    ok ( $new_version > $version, '$new_version > $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    # now test with actual numbers
+    diag "numeric tests with numbers" unless $ENV{PERL_CORE};
+    ok ( $version->numify() == 5.006001, '$version->numify() == 5.006001' );
+    ok ( $version->numify() <= 5.006001, '$version->numify() <= 5.006001' );
+    ok ( $version->numify() < 5.008, '$version->numify() < 5.008' );
+    #ok ( $version->numify() > v5.005_02, '$version->numify() > 5.005_02' );
+
+    # test with long decimals
+    diag "Tests with extended decimal versions" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method(1.002003);
+    ok ( $version == "1.2.3", '$version == "1.2.3"');
+    ok ( $version->numify == 1.002003, '$version->numify == 1.002003');
+    $version = $CLASS->$method("2002.09.30.1");
+    ok ( $version == "2002.9.30.1",'$version == 2002.9.30.1');
+    ok ( $version->numify == 2002.009030001,
+	'$version->numify == 2002.009030001');
+
+    # now test with alpha version form with string
+    $version = $CLASS->$method("1.2.3");
+    $new_version = "1.2.3_4";
+    diag "numeric tests with alpha-style non-objects" unless $ENV{PERL_CORE};
+    ok ( $version < $new_version, '$version < $new_version' );
+    ok ( $new_version > $version, '$new_version > $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    $version = $CLASS->$method("1.2.4");
+    diag "numeric tests with alpha-style non-objects"
+	unless $ENV{PERL_CORE};
+    ok ( $version > $new_version, '$version > $new_version' );
+    ok ( $new_version < $version, '$new_version < $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    # now test with alpha version form with object
+    $version = $CLASS->$method("1.2.3");
+    $new_version = $CLASS->$method("1.2.3_4");
+    diag "tests with alpha-style objects" unless $ENV{PERL_CORE};
+    ok ( $version < $new_version, '$version < $new_version' );
+    ok ( $new_version > $version, '$new_version > $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+    ok ( !$version->is_alpha, '!$version->is_alpha');
+    ok ( $new_version->is_alpha, '$new_version->is_alpha');
+
+    $version = $CLASS->$method("1.2.4");
+    diag "tests with alpha-style objects" unless $ENV{PERL_CORE};
+    ok ( $version > $new_version, '$version > $new_version' );
+    ok ( $new_version < $version, '$new_version < $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    $version = $CLASS->$method("1.2.3.4");
+    $new_version = $CLASS->$method("1.2.3_4");
+    diag "tests with alpha-style objects with same subversion"
+	unless $ENV{PERL_CORE};
+    ok ( $version > $new_version, '$version > $new_version' );
+    ok ( $new_version < $version, '$new_version < $version' );
+    ok ( $version != $new_version, '$version != $new_version' );
+
+    diag "test implicit [in]equality" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method("v1.2.3");
+    $new_version = $CLASS->$method("1.2.3.0");
+    ok ( $version == $new_version, '$version == $new_version' );
+    $new_version = $CLASS->$method("1.2.3_0");
+    ok ( $version == $new_version, '$version == $new_version' );
+    $new_version = $CLASS->$method("1.2.3.1");
+    ok ( $version < $new_version, '$version < $new_version' );
+    $new_version = $CLASS->$method("1.2.3_1");
+    ok ( $version < $new_version, '$version < $new_version' );
+    $new_version = $CLASS->$method("1.1.999");
+    ok ( $version > $new_version, '$version > $new_version' );
+
+    diag "test with version class names" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method("v1.2.3");
+    eval { () = $version < 'version' };
+    like $@, qr/^Invalid version format/, "error with $version < 'version'";
+
+    # that which is not expressly permitted is forbidden
+    diag "forbidden operations" unless $ENV{PERL_CORE};
+    ok ( !eval { ++$version }, "noop ++" );
+    ok ( !eval { --$version }, "noop --" );
+    ok ( !eval { $version/1 }, "noop /" );
+    ok ( !eval { $version*3 }, "noop *" );
+    ok ( !eval { abs($version) }, "noop abs" );
+
+SKIP: {
+    skip "version require'd instead of use'd, cannot test $qv_declare", 3
+	unless defined $qv_declare;
+    # test the $qv_declare() sub
+    diag "testing $qv_declare" unless $ENV{PERL_CORE};
+    $version = $CLASS->$qv_declare("1.2");
+    is ( "$version", "v1.2", $qv_declare.'("1.2") == "1.2.0"' );
+    $version = $CLASS->$qv_declare(1.2);
+    is ( "$version", "v1.2", $qv_declare.'(1.2) == "1.2.0"' );
+    isa_ok( $CLASS->$qv_declare('5.008'), $CLASS );
+}
+
+    # test creation from existing version object
+    diag "create new from existing version" unless $ENV{PERL_CORE};
+    ok (eval {$new_version = $CLASS->$method($version)},
+	    "new from existing object");
+    ok ($new_version == $version, "class->$method($version) identical");
+    $new_version = $version->$method(0);
+    isa_ok ($new_version, $CLASS );
+    is ($new_version, "0", "version->$method() doesn't clone");
+    $new_version = $version->$method("1.2.3");
+    is ($new_version, "1.2.3" , '$version->$method("1.2.3") works too');
+
+    # test the CVS revision mode
+    diag "testing CVS Revision" unless $ENV{PERL_CORE};
+    $version = new $CLASS qw$Revision: 1.2$;
+    ok ( $version == "1.2.0", 'qw$Revision: 1.2$ == 1.2.0' );
+    $version = new $CLASS qw$Revision: 1.2.3.4$;
+    ok ( $version == "1.2.3.4", 'qw$Revision: 1.2.3.4$ == 1.2.3.4' );
+
+    # test the CPAN style reduced significant digit form
+    diag "testing CPAN-style versions" unless $ENV{PERL_CORE};
+    $version = $CLASS->$method("1.23_01");
+    is ( "$version" , "1.23_01", "CPAN-style alpha version" );
+    ok ( $version > 1.23, "1.23_01 > 1.23");
+    ok ( $version < 1.24, "1.23_01 < 1.24");
+
+    # test reformed UNIVERSAL::VERSION
+    diag "Replacement UNIVERSAL::VERSION tests" unless $ENV{PERL_CORE};
+
+    my $error_regex = $] < 5.006
+	? 'version \d required'
+	: 'does not define \$t.{7}::VERSION';
+
+    {
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh "package $package;\n\$$package\::VERSION=0.58;\n1;\n";
+	close $fh;
+
+	$version = 0.58;
+	eval "use lib '.'; use $package $version";
+	unlike($@, qr/$package version $version/,
+		'Replacement eval works with exact version');
+
+	# test as class method
+	$new_version = $package->VERSION;
+	cmp_ok($new_version,'==',$version, "Called as class method");
+
+	eval "print Completely::Unknown::Module->VERSION";
+	if ( $] < 5.008 ) {
+	    unlike($@, qr/$error_regex/,
+		"Don't freak if the module doesn't even exist");
+	}
+	else {
+	    unlike($@, qr/defines neither package nor VERSION/,
+		"Don't freak if the module doesn't even exist");
+	}
+
+	# this should fail even with old UNIVERSAL::VERSION
+	$version += 0.01;
+	eval "use lib '.'; use $package $version";
+	like($@, qr/$package version $version/,
+		'Replacement eval works with incremented version');
+
+	$version =~ s/0+$//; #convert to string and remove trailing 0's
+	chop($version);	# shorten by 1 digit, should still succeed
+	eval "use lib '.'; use $package $version";
+	unlike($@, qr/$package version $version/,
+		'Replacement eval works with single digit');
+
+	# this would fail with old UNIVERSAL::VERSION
+	$version += 0.1;
+	eval "use lib '.'; use $package $version";
+	like($@, qr/$package version $version/,
+		'Replacement eval works with incremented digit');
+	unlink $filename;
+    }
+
+    { # dummy up some variously broken modules for testing
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh "1;\n";
+	close $fh;
+
+	eval "use lib '.'; use $package 3;";
+	if ( $] < 5.008 ) {
+	    like($@, qr/$error_regex/,
+		'Replacement handles modules without package or VERSION');
+	}
+	else {
+	    like($@, qr/defines neither package nor VERSION/,
+		'Replacement handles modules without package or VERSION');
+	}
+	eval "use lib '.'; use $package; \$version = $package->VERSION";
+	unlike ($@, qr/$error_regex/,
+	    'Replacement handles modules without package or VERSION');
+	ok (!defined($version), "Called as class method");
+	unlink $filename;
+    }
+
+    { # dummy up some variously broken modules for testing
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh "package $package;\n#look ma no VERSION\n1;\n";
+	close $fh;
+	eval "use lib '.'; use $package 3;";
+	like ($@, qr/$error_regex/,
+	    'Replacement handles modules without VERSION');
+	eval "use lib '.'; use $package; print $package->VERSION";
+	unlike ($@, qr/$error_regex/,
+	    'Replacement handles modules without VERSION');
+	unlink $filename;
+    }
+
+    { # dummy up some variously broken modules for testing
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh "package $package;\n\@VERSION = ();\n1;\n";
+	close $fh;
+	eval "use lib '.'; use $package 3;";
+	like ($@, qr/$error_regex/,
+	    'Replacement handles modules without VERSION');
+	eval "use lib '.'; use $package; print $package->VERSION";
+	unlike ($@, qr/$error_regex/,
+	    'Replacement handles modules without VERSION');
+	unlink $filename;
+    }
+SKIP:    { # https://rt.perl.org/rt3/Ticket/Display.html?id=95544
+	skip "version require'd instead of use'd, cannot test UNIVERSAL::VERSION", 2
+	    unless defined $qv_declare;
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh "package $package;\n\$VERSION = '3alpha';\n1;\n";
+	close $fh;
+	eval "use lib '.'; use $package; print $package->VERSION";
+	like ($@, qr/Invalid version format \(non-numeric data\)/,
+	    'Warn about bad \$VERSION');
+	eval "use lib '.'; use $package 1;";
+	like ($@, qr/Invalid version format \(non-numeric data\)/,
+	    'Warn about bad $VERSION');
+    }
+
+SKIP: 	{
+	skip 'Cannot test bare v-strings with Perl < 5.6.0', 4
+		if $] < 5.006_000;
+	diag "Tests with v-strings" unless $ENV{PERL_CORE};
+	$version = $CLASS->$method(1.2.3);
+	ok("$version" eq "v1.2.3", '"$version" eq 1.2.3');
+	$version = $CLASS->$method(1.0.0);
+	$new_version = $CLASS->$method(1);
+	ok($version == $new_version, '$version == $new_version');
+	skip "version require'd instead of use'd, cannot test declare", 1
+	    unless defined $qv_declare;
+	$version = &$qv_declare(1.2.3);
+	ok("$version" eq "v1.2.3", 'v-string initialized $qv_declare()');
+    }
+
+SKIP: 	{
+	skip 'Cannot test bare alpha v-strings with Perl < 5.8.1', 2
+		if $] lt 5.008_001;
+	diag "Tests with bare alpha v-strings" unless $ENV{PERL_CORE};
+	$version = $CLASS->$method(v1.2.3_4);
+	is($version, "v1.2.3_4", '"$version" eq "v1.2.3_4"');
+	$version = $CLASS->$method(eval "v1.2.3_4");
+	is($version, "v1.2.3_4", '"$version" eq "v1.2.3_4" (from eval)');
+    }
+
+    diag "Tests with real-world (malformed) data" unless $ENV{PERL_CORE};
+
+    # trailing zero testing (reported by Andreas Koenig).
+    $version = $CLASS->$method("1");
+    ok($version->numify eq "1.000", "trailing zeros preserved");
+    $version = $CLASS->$method("1.0");
+    ok($version->numify eq "1.000", "trailing zeros preserved");
+    $version = $CLASS->$method("1.0.0");
+    ok($version->numify eq "1.000000", "trailing zeros preserved");
+    $version = $CLASS->$method("1.0.0.0");
+    ok($version->numify eq "1.000000000", "trailing zeros preserved");
+
+    # leading zero testing (reported by Andreas Koenig).
+    $version = $CLASS->$method(".7");
+    ok($version->numify eq "0.700", "leading zero inferred");
+
+    # leading space testing (reported by Andreas Koenig).
+    $version = $CLASS->$method(" 1.7");
+    ok($version->numify eq "1.700", "leading space ignored");
+
+    # RT 19517 - deal with undef and 'undef' initialization
+    ok("$version" ne 'undef', "Undef version comparison #1");
+    ok("$version" ne undef, "Undef version comparison #2");
+    $version = $CLASS->$method('undef');
+    unlike($warning, qr/^Version string 'undef' contains invalid data/,
+	"Version string 'undef'");
+
+    $version = $CLASS->$method(undef);
+    like($warning, qr/^Use of uninitialized value/,
+	"Version string 'undef'");
+    ok($version == 'undef', "Undef version comparison #3");
+    ok($version ==  undef,  "Undef version comparison #4");
+    eval "\$version = \$CLASS->$method()"; # no parameter at all
+    unlike($@, qr/^Bizarre copy of CODE/, "No initializer at all");
+    ok($version == 'undef', "Undef version comparison #5");
+    ok($version ==  undef,  "Undef version comparison #6");
+
+    $version = $CLASS->$method(0.000001);
+    unlike($warning, qr/^Version string '1e-06' contains invalid data/,
+	"Very small version objects");
+    }
+
+SKIP: {
+	my $warning;
+	local $SIG{__WARN__} = sub { $warning = $_[0] };
+	# dummy up a legal module for testing RT#19017
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh <<"EOF";
+package $package;
+use $CLASS; \$VERSION = ${CLASS}->new('0.0.4');
+1;
+EOF
+	close $fh;
+
+	eval "use lib '.'; use $package 0.000008;";
+	like ($@, qr/^$package version 0.000008 required/,
+	    "Make sure very small versions don't freak");
+	eval "use lib '.'; use $package 1;";
+	like ($@, qr/^$package version 1 required/,
+	    "Comparing vs. version with no decimal");
+	eval "use lib '.'; use $package 1.;";
+	like ($@, qr/^$package version 1 required/,
+	    "Comparing vs. version with decimal only");
+	if ( $] < 5.006_000 ) {
+	    skip 'Cannot "use" extended versions with Perl < 5.6.0', 3;
+	}
+	eval "use lib '.'; use $package v0.0.8;";
+	my $regex = "^$package version v0.0.8 required";
+	like ($@, qr/$regex/, "Make sure very small versions don't freak");
+
+	$regex =~ s/8/4/; # set for second test
+	eval "use lib '.'; use $package v0.0.4;";
+	unlike($@, qr/$regex/, 'Succeed - required == VERSION');
+	cmp_ok ( $package->VERSION, 'eq', '0.0.4', 'No undef warnings' );
+	unlink $filename;
+    }
+
+SKIP: {
+    skip 'Cannot test "use base qw(version)"  when require is used', 3
+	unless defined $qv_declare;
+    my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+    (my $package = basename($filename)) =~ s/\.pm$//;
+    print $fh <<"EOF";
+package $package;
+use base qw(version);
+1;
+EOF
+    close $fh;
+    # need to eliminate any other $qv_declare()'s
+    undef *{"main\::$qv_declare"};
+    ok(!defined(&{"main\::$qv_declare"}), "make sure we cleared $qv_declare() properly");
+    eval "use lib '.'; use $package qw/declare qv/;";
+    ok(defined(&{"main\::$qv_declare"}), "make sure we exported $qv_declare() properly");
+    isa_ok( &$qv_declare(1.2), $package);
+    unlink $filename;
+}
+
+SKIP: {
+	if ( $] < 5.006_000 ) {
+	    skip 'Cannot "use" extended versions with Perl < 5.6.0', 3;
+	}
+	my ($fh, $filename) = tempfile('tXXXXXXX', SUFFIX => '.pm', UNLINK => 1);
+	(my $package = basename($filename)) =~ s/\.pm$//;
+	print $fh <<"EOF";
+package $package;
+\$VERSION = 1.0;
+1;
+EOF
+	close $fh;
+	eval "use lib '.'; use $package 1.001;";
+	like ($@, qr/^$package version 1.001 required/,
+	    "User typed numeric so we error with numeric");
+	eval "use lib '.'; use $package v1.1.0;";
+	like ($@, qr/^$package version v1.1.0 required/,
+	    "User typed extended so we error with extended");
+	unlink $filename;
+    }
+
+    eval 'my $v = $CLASS->$method("1._1");';
+    unlike($@, qr/^Invalid version format \(alpha with zero width\)/,
+	"Invalid version format 1._1");
+
+    {
+	my $warning;
+	local $SIG{__WARN__} = sub { $warning = $_[0] };
+	eval 'my $v = $CLASS->$method(~0);';
+	unlike($@, qr/Integer overflow in version/, "Too large version");
+	like($warning, qr/Integer overflow in version/, "Too large version");
+    }
+
+    {
+        local $Data::Dumper::Sortkeys= 1;
+	# http://rt.cpan.org/Public/Bug/Display.html?id=30004
+	my $v1 = $CLASS->$method("v0.1_1");
+	(my $alpha1 = Dumper($v1)) =~ s/.+'alpha' => ([^,]+),.+/$1/ms;
+	my $v2 = $CLASS->$method($v1);
+	(my $alpha2 = Dumper($v2)) =~ s/.+'alpha' => ([^,]+),.+/$1/ms;
+	is $alpha2, $alpha1, "Don't fall for Data::Dumper's tricks";
+    }
+
+    {
+	# http://rt.perl.org/rt3/Ticket/Display.html?id=56606
+	my $badv = bless { version => [1,2,3] }, "version";
+	is $badv, '1.002003', "Deal with badly serialized versions from YAML";
+	my $badv2 = bless { qv => 1, version => [1,2,3] }, "version";
+	is $badv2, 'v1.2.3', "Deal with badly serialized versions from YAML ";
+    }
+
+    {
+	# https://rt.cpan.org/Public/Bug/Display.html?id=70950
+	# test indirect usage of version objects
+	my $sum = 0;
+	eval '$sum += $CLASS->$method("v2.0.0")';
+	like $@, qr/operation not supported with version object/,
+	    'No math operations with version objects';
+	# test direct usage of version objects
+	my $v = $CLASS->$method("v2.0.0");
+	eval '$v += 1';
+	like $@, qr/operation not supported with version object/,
+	    'No math operations with version objects';
+    }
+
+    {
+	# https://rt.cpan.org/Ticket/Display.html?id=72365
+	# https://rt.perl.org/rt3/Ticket/Display.html?id=102586
+    	# https://rt.cpan.org/Ticket/Display.html?id=78328
+	eval 'my $v = $CLASS->$method("version")';
+	like $@, qr/Invalid version format/,
+	    "The string 'version' is not a version for $method";
+	eval 'my $v = $CLASS->$method("ver510n")';
+	like $@, qr/Invalid version format/,
+	    'All strings starting with "v" are not versions';
+    }
+
+SKIP: {
+	if ( $] < 5.006_000 ) {
+	    skip 'No v-string support at all < 5.6.0', 2;
+	}
+	# https://rt.cpan.org/Ticket/Display.html?id=49348
+	my $v = $CLASS->$method("420");
+	is "$v", "420", 'Correctly guesses this is not a v-string';
+	$v = $CLASS->$method(4.2.0);
+	is "$v", 'v4.2.0', 'Correctly guess that this is a v-string';
+    }
+SKIP: {
+	if ( $] < 5.006_000 ) {
+	    skip 'No v-string support at all < 5.6.0', 4;
+	}
+	# https://rt.cpan.org/Ticket/Display.html?id=50347
+	# Check that the qv() implementation does not change
+
+	ok $CLASS->$method(1.2.3) < $CLASS->$method(1.2.3.1), 'Compare 3 and 4 digit v-strings' ;
+	ok $CLASS->$method(v1.2.3) < $CLASS->$method(v1.2.3.1), 'Compare 3 and 4 digit v-strings, leaving v';
+	ok $CLASS->$method("1.2.3") < $CLASS->$method("1.2.3.1"), 'Compare 3 and 4 digit v-strings, quoted';
+	ok $CLASS->$method("v1.2.3") < $CLASS->$method("v1.2.3.1"), 'Compare 3 and 4 digit v-strings, quoted leading v';
+    }
+
+    {
+	eval '$CLASS->$method("version")';
+	pass("no crash with ${CLASS}->${method}('version')");
+	{
+	    package _102586;
+	    sub TIESCALAR { bless [] }
+	    sub FETCH { "version" }
+	    sub STORE { }
+	    my $v;
+	    tie $v, __PACKAGE__;
+	    $v = $CLASS->$method(1);
+	    eval '$CLASS->$method($v)';
+	}
+	pass('no crash with version->new($tied) where $tied returns "version"');
+    }
+
+    { # [perl #112478]
+	$_112478::VERSION = 9e99;
+	ok eval { _112478->VERSION(9e99); 1 }, '->VERSION(9e99) succeeds'
+	    or diag $@;
+	$_112478::VERSION = 1;
+	eval { _112478->VERSION(9e99) };
+	unlike $@, qr/panic/, '->VERSION(9e99) does not panic';
+    }
+
+    { # https://rt.cpan.org/Ticket/Display.html?id=79259
+	my $v = $CLASS->new("0.52_0");
+	ok $v->is_alpha, 'Just checking';
+	is $v->numify, '0.520', 'Correctly nummified';
+    }
+
+}
+
+1;
+

Added: vendor/perl/dist/pod/perl5124delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5124delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5124delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,108 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5124delta - what is new for perl v5.12.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.12.3 release and
+the 5.12.4 release.
+
+If you are upgrading from an earlier release such as 5.12.2, first read
+L<perl5123delta>, which describes differences between 5.12.2
+and 5.12.3. The major changes made in 5.12.0 are described in L<perl5120delta>.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.12.3. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Selected Bug Fixes
+
+When strict "refs" mode is off, C<%{...}> in rvalue context returns
+C<undef> if its argument is undefined.  An optimisation introduced in Perl
+5.12.0 to make C<keys %{...}> faster when used as a boolean did not take
+this into account, causing C<keys %{+undef}> (and C<keys %$foo> when
+C<$foo> is undefined) to be an error, which it should be so in strict
+mode only [perl #81750].
+
+C<lc>, C<uc>, C<lcfirst>, and C<ucfirst> no longer return untainted strings
+when the argument is tainted. This has been broken since perl 5.8.9
+[perl #87336].
+
+Fixed a case where it was possible that a freed buffer may have been read
+from when parsing a here document.
+
+=head1 Modules and Pragmata
+
+L<Module::CoreList> has been upgraded from version 2.43 to 2.50.
+
+=head1 Testing
+
+The F<cpan/CGI/t/http.t> test script has been fixed to work when the
+environment has HTTPS_* environment variables, such as HTTPS_PROXY.
+
+=head1 Documentation
+
+Updated the documentation for rand() in L<perlfunc> to note that it is not
+cryptographically secure.
+
+=head1 Platform Specific Notes
+
+=over 4
+
+=item Linux
+
+Support Ubuntu 11.04's new multi-arch library layout.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.12.4 represents approximately 5 months of development since
+Perl 5.12.3 and contains approximately 200 lines of changes across
+11 files from 8 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers.  The following people are known to
+have contributed the improvements that became Perl 5.12.4:
+
+Andy Dougherty, David Golden, David Leadbeater, Father Chrysostomos,
+Florian Ragwitz, Jesse Vincent, Leon Brocard, Zsbán Ambrus.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the B<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 at 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 please send
+it to perl5-security-report at perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5125delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5125delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5125delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,241 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5125delta - what is new for perl v5.12.5
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.12.4 release and
+the 5.12.5 release.
+
+If you are upgrading from an earlier release such as 5.12.3, first read
+L<perl5124delta>, which describes differences between 5.12.3 and
+5.12.4.
+
+=head1 Security
+
+=head2 C<Encode> decode_xs n-byte heap-overflow (CVE-2011-2939)
+
+A bug in C<Encode> could, on certain inputs, cause the heap to overflow.
+This problem has been corrected.  Bug reported by Robert Zacek.
+
+=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
+
+Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would 
+cause an access violation / segfault.  A Perl program that accepts a flags value from
+an external source could expose itself to denial of service or arbitrary code
+execution attacks.  There are no known exploits in the wild.  The problem has been
+corrected by explicitly disabling all unsupported flags and setting unused function
+pointers to null.  Bug reported by Clément Lecigne.
+
+=head2 Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
+
+Poorly written perl code that allows an attacker to specify the count to
+perl's 'x' string repeat operator can already cause a memory exhaustion
+denial-of-service attack. A flaw in versions of perl before 5.15.5 can
+escalate that into a heap buffer overrun; coupled with versions of glibc
+before 2.16, it possibly allows the execution of arbitrary code.
+
+This problem has been fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.12.4. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules
+
+=head3 L<B::Concise>
+
+L<B::Concise> no longer produces mangled output with the B<-tree> option
+[perl #80632].
+
+=head3 L<charnames>
+
+A regression introduced in Perl 5.8.8 has been fixed, that caused
+C<charnames::viacode(0)> to return C<undef> instead of the string "NULL"
+[perl #72624].
+
+=head3 L<Encode> has been upgraded from version 2.39 to version 2.39_01.
+
+See L</Security>.
+
+=head3 L<File::Glob> has been upgraded from version 1.07 to version 1.07_01.
+
+See L</Security>.
+
+=head3 L<Unicode::UCD>
+
+The documentation for the C<upper> function now actually says "upper", not
+"lower".
+
+=head3 L<Module::CoreList>
+
+L<Module::CoreList> has been updated to version 2.50_02 to add data for
+this release.
+
+=head1 Changes to Existing Documentation
+
+=head2 L<perlebcdic>
+
+The L<perlebcdic> document contains a helpful table to use in C<tr///> to
+convert between EBCDIC and Latin1/ASCII.  Unfortunately, the table was the
+inverse of the one it describes.  This has been corrected.
+
+=head2 L<perlunicode>
+
+The section on
+L<User-Defined Case Mappings|perlunicode/User-Defined Case Mappings> had
+some bad markup and unclear sentences, making parts of it unreadable.  This
+has been rectified.
+
+=head2 L<perluniprops>
+
+This document has been corrected to take non-ASCII platforms into account.
+
+=head1 Installation and Configuration Improvements
+
+=head2 Platform Specific Changes
+
+=over 4
+
+=item Mac OS X
+
+There have been configuration and test fixes to make Perl build cleanly on
+Lion and Mountain Lion.
+
+=item NetBSD
+
+The NetBSD hints file was corrected to be compatible with NetBSD 6.*
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+C<chop> now correctly handles characters above "\x{7fffffff}"
+[perl #73246].
+
+=item *
+
+C<< ($<,$>) = (...) >> stopped working properly in 5.12.0.  It is supposed
+to make a single C<setreuid()> call, rather than calling C<setruid()> and
+C<seteuid()> separately.  Consequently it did not work properly.  This has
+been fixed [perl #75212].
+
+=item *
+
+Fixed a regression of kill() when a match variable is used for the
+process ID to kill [perl #75812].
+
+=item *
+
+C<UNIVERSAL::VERSION> no longer leaks memory.  It started leaking in Perl
+5.10.0.
+
+=item *
+
+The C-level C<my_strftime> functions no longer leaks memory.  This fixes a
+memory leak in C<POSIX::strftime> [perl #73520].
+
+=item *
+
+C<caller> no longer leaks memory when called from the DB package if
+C<@DB::args> was assigned to after the first call to C<caller>.  L<Carp>
+was triggering this bug [perl #97010].
+
+=item *
+
+Passing to C<index> an offset beyond the end of the string when the string
+is encoded internally in UTF8 no longer causes panics [perl #75898].
+
+=item *
+
+Syntax errors in C<< (?{...}) >> blocks in regular expressions no longer
+cause panic messages [perl #2353].
+
+=item *
+
+Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
+a pack template equivalent to "U0" if the input string was empty.  This has
+been fixed [perl #90160].
+
+=back
+
+=head1 Errata
+
+=head2 split() and C<@_>
+
+split() no longer modifies C<@_> when called in scalar or void context.
+In void context it now produces a "Useless use of split" warning.
+This is actually a change introduced in perl 5.12.0, but it was missed from
+that release's L<perl5120delta>.
+
+=head1 Acknowledgements
+
+Perl 5.12.5 represents approximately 17 months of development since Perl 5.12.4
+and contains approximately 1,900 lines of changes across 64 files from 18
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.12.5:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Craig A. Berry, David Mitchell,
+Dominic Hargreaves, Father Chrysostomos, Florian Ragwitz, George Greer, Goro
+Fuji, Jesse Vincent, Karl Williamson, Leon Brocard, Nicholas Clark, Rafael
+Garcia-Suarez, Reini Urban, Ricardo Signes, Steve Hay, Tony Cook.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at http://www.perl.org/ , the Perl Home Page.
+
+If you believe you have an unreported bug, please run the B<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 at 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 please send
+it to perl5-security-report at perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5142delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5142delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5142delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,242 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5142delta - what is new for perl v5.14.2
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.14.1 release and
+the 5.14.2 release.
+
+If you are upgrading from an earlier release such as 5.14.0, first read
+L<perl5141delta>, which describes differences between 5.14.0 and
+5.14.1.
+
+=head1 Core Enhancements
+
+No changes since 5.14.0.
+
+=head1 Security
+
+=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
+
+Calling C<File::Glob::bsd_glob> with the unsupported flag GLOB_ALTDIRFUNC would
+cause an access violation / segfault.  A Perl program that accepts a flags value from
+an external source could expose itself to denial of service or arbitrary code
+execution attacks.  There are no known exploits in the wild.  The problem has been
+corrected by explicitly disabling all unsupported flags and setting unused function
+pointers to null.  Bug reported by Clément Lecigne.
+
+=head2 C<Encode> decode_xs n-byte heap-overflow (CVE-2011-2939)
+
+A bug in C<Encode> could, on certain inputs, cause the heap to overflow.
+This problem has been corrected.  Bug reported by Robert Zacek.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.14.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.14.0.
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+None
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<CPAN> has been upgraded from version 1.9600 to version 1.9600_01.
+
+L<CPAN::Distribution> has been upgraded from version 1.9602 to 1.9602_01.
+
+Backported bugfixes from CPAN version 1.9800.  Ensures proper
+detection of C<configure_requires> prerequisites from CPAN Meta files
+in the case where C<dynamic_config> is true.  [rt.cpan.org #68835]
+
+Also ensures that C<configure_requires> is only checked in META files,
+not MYMETA files, so protect against MYMETA generation that drops
+C<configure_requires>.
+
+=item *
+
+L<Encode> has been upgraded from version 2.42 to 2.42_01.
+
+See L</Security>.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.12 to version 1.13.
+
+See L</Security>.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.11 to 0.11_01.
+
+It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
+C<$scalar> is a copy-on-write scalar.
+
+=back
+
+=head2 Removed Modules and Pragmata
+
+None
+
+=head1 Platform Support
+
+=head2 New Platforms
+
+None
+
+=head2 Discontinued Platforms
+
+None
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item HP-UX PA-RISC/64 now supports gcc-4.x
+
+A fix to correct the socketsize now makes the test suite pass on HP-UX
+PA-RISC for 64bitall builds.
+
+=item Building on OS X 10.7 Lion and Xcode 4 works again
+
+The build system has been updated to work with the build tools under Mac OS X
+10.7.
+
+=back
+
+=head1 Bug Fixes
+
+=over 4
+
+=item *
+
+In @INC filters (subroutines returned by subroutines in @INC), $_ used to
+misbehave: If returned from a subroutine, it would not be copied, but the
+variable itself would be returned; and freeing $_ (e.g., with C<undef *_>)
+would cause perl to crash.  This has been fixed [perl #91880].
+
+=item *
+
+Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
+a pack template equivalent to "U0" if the input string was empty.  This has
+been fixed [perl #90160].
+
+=item *
+
+C<caller> no longer leaks memory when called from the DB package if
+C<@DB::args> was assigned to after the first call to C<caller>.  L<Carp>
+was triggering this bug [perl #97010].
+
+=item *
+
+C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
+string buffers in place (i.e., skipping the copy).  This could result in
+hashes having two elements with the same key [perl #91834].
+
+=item *
+
+Localising a tied variable used to make it read-only if it contained a
+copy-on-write string.
+
+=item *
+
+Elements of restricted hashes (see the L<fields> pragma) containing
+copy-on-write values couldn't be deleted, nor could such hashes be cleared
+(C<%hash = ()>).
+
+=item *
+
+Locking a hash element that is a glob copy no longer causes subsequent
+assignment to it to corrupt the glob.
+
+=item *
+
+A panic involving the combination of the regular expression modifiers
+C</aa> introduced in 5.14.0 and the C<\b> escape sequence has been
+fixed [perl #95964].
+
+=back
+
+=head1 Known Problems
+
+This is a list of some significant unfixed bugs, which are regressions
+from 5.12.0.
+
+=over 4
+
+=item *
+
+C<PERL_GLOBAL_STRUCT> is broken.
+
+Since perl 5.14.0, building with C<-DPERL_GLOBAL_STRUCT> hasn't been
+possible. This means that perl currently doesn't work on any platforms that
+require it to be built this way, including Symbian.
+
+While C<PERL_GLOBAL_STRUCT> now works again on recent development versions of
+perl, it actually working on Symbian again hasn't been verified.
+
+We'd be very interested in hearing from anyone working with Perl on Symbian.
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.14.2 represents approximately three months of development since
+Perl 5.14.1 and contains approximately 1200 lines of changes
+across 61 files from 9 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers.  The following people are known to
+have contributed the improvements that became Perl 5.14.2:
+
+Craig A. Berry, David Golden, Father Chrysostomos, Florian Ragwitz, H.Merijn
+Brand, Karl Williamson, Nicholas Clark, Pau Amma and Ricardo Signes.
+
+=head1 Reporting Bugs
+
+If you find what you think is a bug, you might check the articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please send
+it to perl5-security-report at perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5143delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5143delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5143delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,291 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5143delta - what is new for perl v5.14.3
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.14.2 release and
+the 5.14.3 release.
+
+If you are upgrading from an earlier release such as 5.12.0, first read
+L<perl5140delta>, which describes differences between 5.12.0 and
+5.14.0.
+
+=head1 Core Enhancements
+
+No changes since 5.14.0.
+
+=head1 Security
+
+=head2 C<Digest> unsafe use of eval (CVE-2011-3597)
+
+The C<Digest-E<gt>new()> function did not properly sanitize input before
+using it in an eval() call, which could lead to the injection of arbitrary
+Perl code.
+
+In order to exploit this flaw, the attacker would need to be able to set
+the algorithm name used, or be able to execute arbitrary Perl code already.
+
+This problem has been fixed.
+
+=head2 Heap buffer overrun in 'x' string repeat operator (CVE-2012-5195)
+
+Poorly written perl code that allows an attacker to specify the count to
+perl's 'x' string repeat operator can already cause a memory exhaustion
+denial-of-service attack. A flaw in versions of perl before 5.15.5 can
+escalate that into a heap buffer overrun; coupled with versions of glibc
+before 2.16, it possibly allows the execution of arbitrary code.
+
+This problem has been fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.14.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.14.0.
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+None
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<PerlIO::scalar> was updated to fix a bug in which opening a filehandle to
+a glob copy caused assertion failures (under debugging) or hangs or other
+erratic behaviour without debugging.
+
+=item *
+
+L<ODBM_File> and L<NDBM_File> were updated to allow building on GNU/Hurd.
+
+=item *
+
+L<IPC::Open3> has been updated to fix a regression introduced in perl
+5.12, which broke C<IPC::Open3::open3($in, $out, $err, '-')>.
+[perl #95748]
+
+=item *
+
+L<Digest> has been upgraded from version 1.16 to 1.16_01.
+
+See L</Security>.
+
+=item *
+
+L<Module::CoreList> has been updated to version 2.49_04 to add data for
+this release.
+
+=back
+
+=head2 Removed Modules and Pragmata
+
+None
+
+=head1 Documentation
+
+=head2 New Documentation
+
+None
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlcheat>
+
+=over 4
+
+=item *
+
+L<perlcheat> was updated to 5.14.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+h2ph was updated to search correctly gcc include directories on platforms
+such as Debian with multi-architecture support.
+
+=item *
+
+In Configure, the test for procselfexe was refactored into a loop.
+
+=back
+
+=head1 Platform Support
+
+=head2 New Platforms
+
+None
+
+=head2 Discontinued Platforms
+
+None
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item FreeBSD
+
+The FreeBSD hints file was corrected to be compatible with FreeBSD 10.0.
+
+=item Solaris and NetBSD
+
+Configure was updated for "procselfexe" support on Solaris and NetBSD.
+
+=item HP-UX
+
+README.hpux was updated to note the existence of a broken header in
+HP-UX 11.00.
+
+=item Linux
+
+libutil is no longer used when compiling on Linux platforms, which avoids
+warnings being emitted.
+
+The system gcc (rather than any other gcc which might be in the compiling
+user's path) is now used when searching for libraries such as C<-lm>.
+
+=item Mac OS X
+
+The locale tests were updated to reflect the behaviour of locales in
+Mountain Lion.
+
+=item GNU/Hurd
+
+Various build and test fixes were included for GNU/Hurd.
+
+LFS support was enabled in GNU/Hurd.
+
+=item NetBSD
+
+The NetBSD hints file was corrected to be compatible with NetBSD 6.*
+
+=back
+
+=head1 Bug Fixes
+
+=over 4
+
+=item *
+
+A regression has been fixed that was introduced in 5.14, in C</i>
+regular expression matching, in which a match improperly fails if the
+pattern is in UTF-8, the target string is not, and a Latin-1 character
+precedes a character in the string that should match the pattern.  [perl
+#101710]
+
+=item *
+
+In case-insensitive regular expression pattern matching, no longer on
+UTF-8 encoded strings does the scan for the start of match only look at
+the first possible position.  This caused matches such as
+C<"f\x{FB00}" =~ /ff/i> to fail.
+
+=item *
+
+The sitecustomize support was made relocatableinc aware, so that
+-Dusesitecustomize and -Duserelocatableinc may be used together.
+
+=item *
+
+The smartmatch operator (C<~~>) was changed so that the right-hand side
+takes precedence during C<Any ~~ Object> operations.
+
+=item *
+
+A bug has been fixed in the tainting support, in which an C<index()>
+operation on a tainted constant would cause all other constants to become
+tainted.  [perl #64804]
+
+=item *
+
+A regression has been fixed that was introduced in perl 5.12, whereby
+tainting errors were not correctly propagated through C<die()>.
+[perl #111654]
+
+=item *
+
+A regression has been fixed that was introduced in perl 5.14, in which
+C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the opposite case.
+[perl #101970]
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.14.3 represents approximately 12 months of development since Perl 5.14.2
+and contains approximately 2,300 lines of changes across 64 files from 22
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.14.3:
+
+Abigail, Andy Dougherty, Carl Hayter, Chris 'BinGOs' Williams, Dave Rolsky,
+David Mitchell, Dominic Hargreaves, Father Chrysostomos, Florian Ragwitz,
+H.Merijn Brand, Jilles Tjoelker, Karl Williamson, Leon Timmermans, Michael G
+Schwern, Nicholas Clark, Niko Tyni, Pino Toscano, Ricardo Signes, Salvador
+Fandiño, Samuel Thibault, Steve Hay, Tony Cook.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please send
+it to perl5-security-report at perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5144delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5144delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5144delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,240 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5144delta - what is new for perl v5.14.4
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.14.3 release and
+the 5.14.4 release.
+
+If you are upgrading from an earlier release such as 5.12.0, first read
+L<perl5140delta>, which describes differences between 5.12.0 and
+5.14.0.
+
+=head1 Core Enhancements
+
+No changes since 5.14.0.
+
+=head1 Security
+
+This release contains one major, and medium, and a number of minor
+security fixes.  The latter are included mainly to allow the test suite to
+pass cleanly with the clang compiler's address sanitizer facility.
+
+=head2 CVE-2013-1667: memory exhaustion with arbitrary hash keys
+
+With a carefully crafted set of hash keys (for example arguments on a
+URL), it is possible to cause a hash to consume a large amount of memory
+and CPU, and thus possibly to achieve a Denial-of-Service.
+
+This problem has been fixed.
+
+=head2 memory leak in Encode
+
+The UTF-8 encoding implementation in Encode.xs had a memory leak which has been
+fixed.
+
+=head2 [perl #111594] Socket::unpack_sockaddr_un heap-buffer-overflow
+
+A read buffer overflow could occur when copying C<sockaddr> buffers.
+Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #111586] SDBM_File: fix off-by-one access to global ".dir"
+
+An extra byte was being copied for some string literals. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 off-by-two error in List::Util
+
+A string literal was being used that included two bytes beyond the
+end of the string. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #115994] fix segv in regcomp.c:S_join_exact()
+
+Under debugging builds, while marking optimised-out regex nodes as type
+C<OPTIMIZED>, it could treat blocks of exact text as if they were nodes,
+and thus SEGV. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 [perl #115992] PL_eval_start use-after-free
+
+The statement C<local $[;>, when preceded by an C<eval>, and when not part
+of an assignment, could crash. Fairly harmless.
+
+This problem has been fixed.
+
+=head2 wrap-around with IO on long strings
+
+Reading or writing strings greater than 2**31 bytes in size could segfault
+due to integer wraparound.
+
+This problem has been fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.14.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.14.0.
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+None
+
+=head2 Updated Modules and Pragmata
+
+The following modules have just the minor code fixes as listed above in
+L</Security> (version numbers have not changed):
+
+=over 4
+
+=item Socket
+
+=item SDBM_File
+
+=item List::Util
+
+=back
+
+L<Encode> has been upgraded from version 2.42_01 to version 2.42_02.
+
+L<Module::CoreList> has been updated to version 2.49_06 to add data for
+this release.
+
+=head2 Removed Modules and Pragmata
+
+None.
+
+=head1 Documentation
+
+=head2 New Documentation
+
+None.
+
+=head2 Changes to Existing Documentation
+
+None.
+
+=head1 Diagnostics
+
+No new or changed diagnostics.
+
+=head1 Utility Changes
+
+None
+
+=head1 Configuration and Compilation
+
+No changes.
+
+=head1 Platform Support
+
+=head2 New Platforms
+
+None.
+
+=head2 Discontinued Platforms
+
+None.
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+5.14.3 failed to compile on VMS due to incomplete application of a patch
+series that allowed C<userelocatableinc> and C<usesitecustomize> to be
+used simultaneously.  Other platforms were not affected and the problem
+has now been corrected.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly.  Sometimes
+it would erroneously fail (when C<$tainted> contained a string that occurs
+in the array I<after> the first element) or erroneously succeed (when
+C<undef> occurred after the first element) [perl #93590].
+
+=back
+
+=head1 Known Problems
+
+None.
+
+=head1 Acknowledgements
+
+Perl 5.14.4 represents approximately 5 months of development since Perl 5.14.3
+and contains approximately 1,700 lines of changes across 49 files from 12
+authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.14.4:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Christian Hansen, Craig A. Berry,
+Dave Rolsky, David Mitchell, Dominic Hargreaves, Father Chrysostomos,
+Florian Ragwitz, Reini Urban, Ricardo Signes, Yves Orton.
+
+
+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.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please send
+it to perl5-security-report at perl.org. This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who be able
+to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported. Please only use this address for
+security issues in the Perl core, not for modules independently
+distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5160delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5160delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5160delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,4314 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5160delta - what is new for perl v5.16.0
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.14.0 release and
+the 5.16.0 release.
+
+If you are upgrading from an earlier release such as 5.12.0, first read
+L<perl5140delta>, which describes differences between 5.12.0 and
+5.14.0.
+
+Some bug fixes in this release have been backported to later
+releases of 5.14.x.  Those are indicated with the 5.14.x version in
+parentheses.
+
+=head1 Notice
+
+With the release of Perl 5.16.0, the 5.12.x series of releases is now out of
+its support period.  There may be future 5.12.x releases, but only in the
+event of a critical security issue.  Users of Perl 5.12 or earlier should
+consider upgrading to a more recent release of Perl.
+
+This policy is described in greater detail in
+L<perlpolicy|perlpolicy/MAINTENANCE AND SUPPORT>.
+
+=head1 Core Enhancements
+
+=head2 C<use I<VERSION>>
+
+As of this release, version declarations like C<use v5.16> now disable
+all features before enabling the new feature bundle.  This means that
+the following holds true:
+
+    use 5.016;
+    # only 5.16 features enabled here
+    use 5.014;
+    # only 5.14 features enabled here (not 5.16)
+
+C<use v5.12> and higher continue to enable strict, but explicit C<use
+strict> and C<no strict> now override the version declaration, even
+when they come first:
+
+    no strict;
+    use 5.012;
+    # no strict here
+
+There is a new ":default" feature bundle that represents the set of
+features enabled before any version declaration or C<use feature> has
+been seen.  Version declarations below 5.10 now enable the ":default"
+feature set.  This does not actually change the behavior of C<use
+v5.8>, because features added to the ":default" set are those that were
+traditionally enabled by default, before they could be turned off.
+
+C<< no feature >> now resets to the default feature set.  To disable all
+features (which is likely to be a pretty special-purpose request, since
+it presumably won't match any named set of semantics) you can now  
+write C<< no feature ':all' >>.
+
+C<$[> is now disabled under C<use v5.16>.  It is part of the default
+feature set and can be turned on or off explicitly with C<use feature
+'array_base'>.
+
+=head2 C<__SUB__>
+
+The new C<__SUB__> token, available under the C<current_sub> feature
+(see L<feature>) or C<use v5.16>, returns a reference to the current
+subroutine, making it easier to write recursive closures.
+
+=head2 New and Improved Built-ins
+
+=head3 More consistent C<eval>
+
+The C<eval> operator sometimes treats a string argument as a sequence of
+characters and sometimes as a sequence of bytes, depending on the
+internal encoding.  The internal encoding is not supposed to make any
+difference, but there is code that relies on this inconsistency.
+
+The new C<unicode_eval> and C<evalbytes> features (enabled under C<use
+5.16.0>) resolve this.  The C<unicode_eval> feature causes C<eval
+$string> to treat the string always as Unicode.  The C<evalbytes>
+features provides a function, itself called C<evalbytes>, which
+evaluates its argument always as a string of bytes.
+
+These features also fix oddities with source filters leaking to outer
+dynamic scopes.
+
+See L<feature> for more detail.
+
+=head3 C<substr> lvalue revamp
+
+=for comment Does this belong here, or under Incompatible Changes?
+
+When C<substr> is called in lvalue or potential lvalue context with two
+or three arguments, a special lvalue scalar is returned that modifies
+the original string (the first argument) when assigned to.
+
+Previously, the offsets (the second and third arguments) passed to
+C<substr> would be converted immediately to match the string, negative
+offsets being translated to positive and offsets beyond the end of the
+string being truncated.
+
+Now, the offsets are recorded without modification in the special
+lvalue scalar that is returned, and the original string is not even
+looked at by C<substr> itself, but only when the returned lvalue is
+read or modified.
+
+These changes result in an incompatible change:
+
+If the original string changes length after the call to C<substr> but
+before assignment to its return value, negative offsets will remember
+their position from the end of the string, affecting code like this:
+
+    my $string = "string";
+    my $lvalue = \substr $string, -4, 2;
+    print $$lvalue, "\n"; # prints "ri"
+    $string = "bailing twine";
+    print $$lvalue, "\n"; # prints "wi"; used to print "il"
+
+The same thing happens with an omitted third argument.  The returned
+lvalue will always extend to the end of the string, even if the string
+becomes longer.
+
+Since this change also allowed many bugs to be fixed (see
+L</The C<substr> operator>), and since the behavior
+of negative offsets has never been specified, the
+change was deemed acceptable.
+
+=head3 Return value of C<tied>
+
+The value returned by C<tied> on a tied variable is now the actual
+scalar that holds the object to which the variable is tied.  This
+lets ties be weakened with C<Scalar::Util::weaken(tied
+$tied_variable)>.
+
+=head2 Unicode Support
+
+=head3 Supports (I<almost>) Unicode 6.1
+
+Besides the addition of whole new scripts, and new characters in
+existing scripts, this new version of Unicode, as always, makes some
+changes to existing characters.  One change that may trip up some
+applications is that the General Category of two characters in the
+Latin-1 range, PILCROW SIGN and SECTION SIGN, has been changed from
+Other_Symbol to Other_Punctuation.  The same change has been made for
+a character in each of Tibetan, Ethiopic, and Aegean.
+The code points U+3248..U+324F (CIRCLED NUMBER TEN ON BLACK SQUARE
+through CIRCLED NUMBER EIGHTY ON BLACK SQUARE) have had their General
+Category changed from Other_Symbol to Other_Numeric.  The Line Break
+property has changes for Hebrew and Japanese; and because of
+other changes in 6.1, the Perl regular expression construct C<\X> now
+works differently for some characters in Thai and Lao.
+
+New aliases (synonyms) have been defined for many property values;
+these, along with the previously existing ones, are all cross-indexed in
+L<perluniprops>.
+
+The return value of C<charnames::viacode()> is affected by other
+changes:
+
+ Code point      Old Name             New Name
+   U+000A    LINE FEED (LF)        LINE FEED
+   U+000C    FORM FEED (FF)        FORM FEED
+   U+000D    CARRIAGE RETURN (CR)  CARRIAGE RETURN
+   U+0085    NEXT LINE (NEL)       NEXT LINE
+   U+008E    SINGLE-SHIFT 2        SINGLE-SHIFT-2
+   U+008F    SINGLE-SHIFT 3        SINGLE-SHIFT-3
+   U+0091    PRIVATE USE 1         PRIVATE USE-1
+   U+0092    PRIVATE USE 2         PRIVATE USE-2
+   U+2118    SCRIPT CAPITAL P      WEIERSTRASS ELLIPTIC FUNCTION
+
+Perl will accept any of these names as input, but
+C<charnames::viacode()> now returns the new name of each pair.  The
+change for U+2118 is considered by Unicode to be a correction, that is
+the original name was a mistake (but again, it will remain forever valid
+to use it to refer to U+2118).  But most of these changes are the
+fallout of the mistake Unicode 6.0 made in naming a character used in
+Japanese cell phones to be "BELL", which conflicts with the longstanding
+industry use of (and Unicode's recommendation to use) that name
+to mean the ASCII control character at U+0007.  Therefore, that name
+has been deprecated in Perl since v5.14, and any use of it will raise a
+warning message (unless turned off).  The name "ALERT" is now the
+preferred name for this code point, with "BEL" an acceptable short
+form.  The name for the new cell phone character, at code point U+1F514,
+remains undefined in this version of Perl (hence we don't 
+implement quite all of Unicode 6.1), but starting in v5.18, BELL will mean
+this character, and not U+0007.
+
+Unicode has taken steps to make sure that this sort of mistake does not
+happen again.  The Standard now includes all generally accepted
+names and abbreviations for control characters, whereas previously it
+didn't (though there were recommended names for most of them, which Perl
+used).  This means that most of those recommended names are now
+officially in the Standard.  Unicode did not recommend names for the
+four code points listed above between U+008E and U+008F, and in
+standardizing them Unicode subtly changed the names that Perl had
+previously given them, by replacing the final blank in each name by a
+hyphen.  Unicode also officially accepts names that Perl had deprecated,
+such as FILE SEPARATOR.  Now the only deprecated name is BELL.
+Finally, Perl now uses the new official names instead of the old
+(now considered obsolete) names for the first four code points in the
+list above (the ones which have the parentheses in them).
+
+Now that the names have been placed in the Unicode standard, these kinds
+of changes should not happen again, though corrections, such as to
+U+2118, are still possible.
+
+Unicode also added some name abbreviations, which Perl now accepts:
+SP for SPACE;
+TAB for CHARACTER TABULATION;
+NEW LINE, END OF LINE, NL, and EOL for LINE FEED;
+LOCKING-SHIFT ONE for SHIFT OUT;
+LOCKING-SHIFT ZERO for SHIFT IN;
+and ZWNBSP for ZERO WIDTH NO-BREAK SPACE.
+
+More details on this version of Unicode are provided in
+L<http://www.unicode.org/versions/Unicode6.1.0/>.
+
+=head3 C<use charnames> is no longer needed for C<\N{I<name>}>
+
+When C<\N{I<name>}> is encountered, the C<charnames> module is now
+automatically loaded when needed as if the C<:full> and C<:short>
+options had been specified.  See L<charnames> for more information.
+
+=head3 C<\N{...}> can now have Unicode loose name matching
+
+This is described in the C<charnames> item in
+L</Updated Modules and Pragmata> below.
+
+=head3 Unicode Symbol Names
+
+Perl now has proper support for Unicode in symbol names.  It used to be
+that C<*{$foo}> would ignore the internal UTF8 flag and use the bytes of
+the underlying representation to look up the symbol.  That meant that
+C<*{"\x{100}"}> and C<*{"\xc4\x80"}> would return the same thing.  All
+these parts of Perl have been fixed to account for Unicode:
+
+=over
+
+=item *
+
+Method names (including those passed to C<use overload>)
+
+=item *
+
+Typeglob names (including names of variables, subroutines, and filehandles)
+
+=item *
+
+Package names
+
+=item *
+
+C<goto>
+
+=item *
+
+Symbolic dereferencing
+
+=item *
+
+Second argument to C<bless()> and C<tie()>
+
+=item *
+
+Return value of C<ref()>
+
+=item *
+
+Subroutine prototypes
+
+=item *
+
+Attributes
+
+=item *
+
+Various warnings and error messages that mention variable names or values,
+methods, etc.
+
+=back
+
+In addition, a parsing bug has been fixed that prevented C<*{é}> from
+implicitly quoting the name, but instead interpreted it as C<*{+é}>, which
+would cause a strict violation.
+
+C<*{"*a::b"}> automatically strips off the * if it is followed by an ASCII
+letter.  That has been extended to all Unicode identifier characters.
+
+One-character non-ASCII non-punctuation variables (like C<$é>) are now
+subject to "Used only once" warnings.  They used to be exempt, as they
+were treated as punctuation variables.
+
+Also, single-character Unicode punctuation variables (like C<$‰>) are now
+supported [perl #69032].
+
+=head3 Improved ability to mix locales and Unicode, including UTF-8 locales
+
+An optional parameter has been added to C<use locale>
+
+ use locale ':not_characters';
+
+which tells Perl to use all but the C<LC_CTYPE> and C<LC_COLLATE>
+portions of the current locale.  Instead, the character set is assumed
+to be Unicode.  This lets locales and Unicode be seamlessly mixed,
+including the increasingly frequent UTF-8 locales.  When using this
+hybrid form of locales, the C<:locale> layer to the L<open> pragma can
+be used to interface with the file system, and there are CPAN modules
+available for ARGV and environment variable conversions.
+
+Full details are in L<perllocale>.
+
+=head3 New function C<fc> and corresponding escape sequence C<\F> for Unicode foldcase
+
+Unicode foldcase is an extension to lowercase that gives better results
+when comparing two strings case-insensitively.  It has long been used
+internally in regular expression C</i> matching.  Now it is available
+explicitly through the new C<fc> function call (enabled by
+S<C<"use feature 'fc'">>, or C<use v5.16>, or explicitly callable via
+C<CORE::fc>) or through the new C<\F> sequence in double-quotish
+strings.
+
+Full details are in L<perlfunc/fc>.
+
+=head3 The Unicode C<Script_Extensions> property is now supported.
+
+New in Unicode 6.0, this is an improved C<Script> property.  Details
+are in L<perlunicode/Scripts>.
+
+=head2 XS Changes
+
+=head3 Improved typemaps for Some Builtin Types
+
+Most XS authors will know there is a longstanding bug in the
+OUTPUT typemap for T_AVREF (C<AV*>), T_HVREF (C<HV*>), T_CVREF (C<CV*>),
+and T_SVREF (C<SVREF> or C<\$foo>) that requires manually decrementing
+the reference count of the return value instead of the typemap taking
+care of this.  For backwards-compatibility, this cannot be changed in the
+default typemaps.  But we now provide additional typemaps
+C<T_AVREF_REFCOUNT_FIXED>, etc. that do not exhibit this bug.  Using
+them in your extension is as simple as having one line in your
+C<TYPEMAP> section:
+
+  HV*	T_HVREF_REFCOUNT_FIXED
+
+=head3 C<is_utf8_char()>
+
+The XS-callable function C<is_utf8_char()>, when presented with
+malformed UTF-8 input, can read up to 12 bytes beyond the end of the
+string.  This cannot be fixed without changing its API, and so its
+use is now deprecated.  Use C<is_utf8_char_buf()> (described just below)
+instead.
+
+=head3 Added C<is_utf8_char_buf()>
+
+This function is designed to replace the deprecated L</is_utf8_char()>
+function.  It includes an extra parameter to make sure it doesn't read
+past the end of the input buffer.
+
+=head3 Other C<is_utf8_foo()> functions, as well as C<utf8_to_foo()>, etc.
+
+Most other XS-callable functions that take UTF-8 encoded input
+implicitly assume that the UTF-8 is valid (not malformed) with respect to
+buffer length.  Do not do things such as change a character's case or
+see if it is alphanumeric without first being sure that it is valid
+UTF-8.  This can be safely done for a whole string by using one of the
+functions C<is_utf8_string()>, C<is_utf8_string_loc()>, and
+C<is_utf8_string_loclen()>.
+
+=head3 New Pad API
+
+Many new functions have been added to the API for manipulating lexical
+pads.  See L<perlapi/Pad Data Structures> for more information.
+
+=head2 Changes to Special Variables
+
+=head3 C<$$> can be assigned to
+
+C<$$> was made read-only in Perl 5.8.0.  But only sometimes: C<local $$>
+would make it writable again.  Some CPAN modules were using C<local $$> or
+XS code to bypass the read-only check, so there is no reason to keep C<$$>
+read-only.  (This change also allowed a bug to be fixed while maintaining
+backward compatibility.)
+
+=head3 C<$^X> converted to an absolute path on FreeBSD, OS X and Solaris
+
+C<$^X> is now converted to an absolute path on OS X, FreeBSD (without
+needing F</proc> mounted) and Solaris 10 and 11.  This augments the
+previous approach of using F</proc> on Linux, FreeBSD, and NetBSD
+(in all cases, where mounted).
+
+This makes relocatable perl installations more useful on these platforms.
+(See "Relocatable @INC" in F<INSTALL>)
+
+=head2 Debugger Changes
+
+=head3 Features inside the debugger
+
+The current Perl's L<feature> bundle is now enabled for commands entered
+in the interactive debugger.
+
+=head3 New option for the debugger's B<t> command
+
+The B<t> command in the debugger, which toggles tracing mode, now
+accepts a numeric argument that determines how many levels of subroutine
+calls to trace.
+
+=head3 C<enable> and C<disable>
+
+The debugger now has C<disable> and C<enable> commands for disabling
+existing breakpoints and re-enabling them.  See L<perldebug>.
+
+=head3 Breakpoints with file names
+
+The debugger's "b" command for setting breakpoints now lets a line
+number be prefixed with a file name.  See
+L<perldebug/"b [file]:[line] [condition]">.
+
+=head2 The C<CORE> Namespace
+
+=head3 The C<CORE::> prefix
+
+The C<CORE::> prefix can now be used on keywords enabled by
+L<feature.pm|feature>, even outside the scope of C<use feature>.
+
+=head3 Subroutines in the C<CORE> namespace
+
+Many Perl keywords are now available as subroutines in the CORE namespace.
+This lets them be aliased:
+
+    BEGIN { *entangle = \&CORE::tie }
+    entangle $variable, $package, @args;
+
+And for prototypes to be bypassed:
+
+    sub mytie(\[%$*@]$@) {
+	my ($ref, $pack, @args) = @_;
+	... do something ...
+	goto &CORE::tie;
+    }
+
+Some of these cannot be called through references or via C<&foo> syntax,
+but must be called as barewords.
+
+See L<CORE> for details.
+
+=head2 Other Changes
+
+=head3 Anonymous handles
+
+Automatically generated file handles are now named __ANONIO__ when the
+variable name cannot be determined, rather than $__ANONIO__.
+
+=head3 Autoloaded sort Subroutines
+
+Custom sort subroutines can now be autoloaded [perl #30661]:
+
+    sub AUTOLOAD { ... }
+    @sorted = sort foo @list; # uses AUTOLOAD
+
+=head3 C<continue> no longer requires the "switch" feature
+
+The C<continue> keyword has two meanings.  It can introduce a C<continue>
+block after a loop, or it can exit the current C<when> block.  Up to now,
+the latter meaning was valid only with the "switch" feature enabled, and
+was a syntax error otherwise.  Since the main purpose of feature.pm is to
+avoid conflicts with user-defined subroutines, there is no reason for
+C<continue> to depend on it.
+
+=head3 DTrace probes for interpreter phase change
+
+The C<phase-change> probes will fire when the interpreter's phase
+changes, which tracks the C<${^GLOBAL_PHASE}> variable.  C<arg0> is
+the new phase name; C<arg1> is the old one.  This is useful 
+for limiting your instrumentation to one or more of: compile time,
+run time, or destruct time.
+
+=head3 C<__FILE__()> Syntax
+
+The C<__FILE__>, C<__LINE__> and C<__PACKAGE__> tokens can now be written
+with an empty pair of parentheses after them.  This makes them parse the
+same way as C<time>, C<fork> and other built-in functions.
+
+=head3 The C<\$> prototype accepts any scalar lvalue
+
+The C<\$> and C<\[$]> subroutine prototypes now accept any scalar lvalue
+argument.  Previously they accepted only scalars beginning with C<$> and
+hash and array elements.  This change makes them consistent with the way
+the built-in C<read> and C<recv> functions (among others) parse their
+arguments.  This means that one can override the built-in functions with
+custom subroutines that parse their arguments the same way.
+
+=head3 C<_> in subroutine prototypes
+
+The C<_> character in subroutine prototypes is now allowed before C<@> or
+C<%>.
+
+=head1 Security
+
+=head2 Use C<is_utf8_char_buf()> and not C<is_utf8_char()>
+
+The latter function is now deprecated because its API is insufficient to
+guarantee that it doesn't read (up to 12 bytes in the worst case) beyond
+the end of its input string.  See
+L<is_utf8_char_buf()|/Added is_utf8_char_buf()>.
+
+=head2 Malformed UTF-8 input could cause attempts to read beyond the end of the buffer
+
+Two new XS-accessible functions, C<utf8_to_uvchr_buf()> and
+C<utf8_to_uvuni_buf()> are now available to prevent this, and the Perl
+core has been converted to use them.
+See L</Internal Changes>.
+
+=head2 C<File::Glob::bsd_glob()> memory error with GLOB_ALTDIRFUNC (CVE-2011-2728).
+
+Calling C<File::Glob::bsd_glob> with the unsupported flag
+GLOB_ALTDIRFUNC would cause an access violation / segfault.  A Perl
+program that accepts a flags value from an external source could expose
+itself to denial of service or arbitrary code execution attacks.  There
+are no known exploits in the wild.  The problem has been corrected by
+explicitly disabling all unsupported flags and setting unused function
+pointers to null.  Bug reported by Clément Lecigne. (5.14.2)
+
+=head2 Privileges are now set correctly when assigning to C<$(>
+
+A hypothetical bug (probably unexploitable in practice) because the
+incorrect setting of the effective group ID while setting C<$(> has been
+fixed.  The bug would have affected only systems that have C<setresgid()>
+but not C<setregid()>, but no such systems are known to exist.
+
+=head1 Deprecations
+
+=head2 Don't read the Unicode data base files in F<lib/unicore>
+
+It is now deprecated to directly read the Unicode data base files.
+These are stored in the F<lib/unicore> directory.  Instead, you should
+use the new functions in L<Unicode::UCD>.  These provide a stable API,
+and give complete information.
+
+Perl may at some point in the future change or remove these files.  The
+file which applications were most likely to have used is
+F<lib/unicore/ToDigit.pl>.  L<Unicode::UCD/prop_invmap()> can be used to
+get at its data instead.
+
+=head2 XS functions C<is_utf8_char()>, C<utf8_to_uvchr()> and
+C<utf8_to_uvuni()>
+
+This function is deprecated because it could read beyond the end of the
+input string.  Use the new L<is_utf8_char_buf()|/Added is_utf8_char_buf()>,
+C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> instead.
+
+=head1 Future Deprecations
+
+This section serves as a notice of features that are I<likely> to be
+removed or L<deprecated|perlpolicy/deprecated> in the next release of
+perl (5.18.0).  If your code depends on these features, you should
+contact the Perl 5 Porters via the L<mailing
+list|http://lists.perl.org/list/perl5-porters.html> or L<perlbug> to
+explain your use case and inform the deprecation process.
+
+=head2 Core Modules
+
+These modules may be marked as deprecated I<from the core>.  This only
+means that they will no longer be installed by default with the core
+distribution, but will remain available on the CPAN.
+
+=over
+
+=item *
+
+CPANPLUS
+
+=item *
+
+Filter::Simple
+
+=item *
+
+PerlIO::mmap
+
+=item *
+
+Pod::LaTeX
+
+=item *
+
+Pod::Parser
+
+=item *
+
+SelfLoader
+
+=item *
+
+Text::Soundex
+
+=item *
+
+Thread.pm
+
+=back
+
+=head2 Platforms with no supporting programmers
+
+These platforms will probably have their
+special build support removed during the
+5.17.0 development series.
+
+=over
+
+=item *
+
+BeOS
+
+=item *
+
+djgpp
+
+=item *
+
+dgux
+
+=item *
+
+EPOC
+
+=item *
+
+MPE/iX
+
+=item *
+
+Rhapsody
+
+=item *
+
+UTS
+
+=item *
+
+VM/ESA
+
+=back
+
+=head2 Other Future Deprecations
+
+=over
+
+=item *
+
+Swapping of $< and $>
+
+For more information about this future deprecation, see L<the relevant RT
+ticket|https://rt.perl.org/rt3/Ticket/Display.html?id=96212>.
+
+=item *
+
+sfio, stdio
+
+Perl supports being built without PerlIO proper, using a stdio or sfio
+wrapper instead.  A perl build like this will not support IO layers and
+thus Unicode IO, making it rather handicapped.
+
+PerlIO supports a C<stdio> layer if stdio use is desired, and similarly a
+sfio layer could be produced.
+
+=item *
+
+Unescaped literal C<< "{" >> in regular expressions.
+
+Starting with v5.20, it is planned to require a literal C<"{"> to be
+escaped, for example by preceding it with a backslash.  In v5.18, a
+deprecated warning message will be emitted for all such uses.  
+This affects only patterns that are to match a literal C<"{">.  Other
+uses of this character, such as part of a quantifier or sequence as in
+those below, are completely unaffected:
+
+    /foo{3,5}/
+    /\p{Alphabetic}/
+    /\N{DIGIT ZERO}
+
+Removing this will permit extensions to Perl's pattern syntax and better
+error checking for existing syntax.  See L<perlre/Quantifiers> for an
+example.
+
+=item *
+
+Revamping C<< "\Q" >> semantics in double-quotish strings when combined with other escapes.
+
+There are several bugs and inconsistencies involving combinations
+of C<\Q> and escapes like C<\x>, C<\L>, etc., within a C<\Q...\E> pair.
+These need to be fixed, and doing so will necessarily change current
+behavior.  The changes have not yet been settled.
+
+=back
+
+=head1 Incompatible Changes
+
+=head2 Special blocks called in void context
+
+Special blocks (C<BEGIN>, C<CHECK>, C<INIT>, C<UNITCHECK>, C<END>) are now
+called in void context.  This avoids wasteful copying of the result of the
+last statement [perl #108794].
+
+=head2 The C<overloading> pragma and regexp objects
+
+With C<no overloading>, regular expression objects returned by C<qr//> are
+now stringified as "Regexp=REGEXP(0xbe600d)" instead of the regular
+expression itself [perl #108780].
+
+=head2 Two XS typemap Entries removed
+
+Two presumably unused XS typemap entries have been removed from the
+core typemap: T_DATAUNIT and T_CALLBACK.  If you are, against all odds,
+a user of these, please see the instructions on how to restore them
+in L<perlxstypemap>.
+
+=head2 Unicode 6.1 has incompatibilities with Unicode 6.0
+
+These are detailed in L</Supports (almost) Unicode 6.1> above.
+You can compile this version of Perl to use Unicode 6.0.  See
+L<perlunicode/Hacking Perl to work on earlier Unicode versions (for very serious hackers only)>.
+
+=head2 Borland compiler
+
+All support for the Borland compiler has been dropped.  The code had not
+worked for a long time anyway.
+
+=head2 Certain deprecated Unicode properties are no longer supported by default
+
+Perl should never have exposed certain Unicode properties that are used
+by Unicode internally and not meant to be publicly available.  Use of
+these has generated deprecated warning messages since Perl 5.12.  The
+removed properties are Other_Alphabetic,
+Other_Default_Ignorable_Code_Point, Other_Grapheme_Extend,
+Other_ID_Continue, Other_ID_Start, Other_Lowercase, Other_Math, and
+Other_Uppercase.
+
+Perl may be recompiled to include any or all of them; instructions are
+given in
+L<perluniprops/Unicode character properties that are NOT accepted by Perl>.
+
+=head2 Dereferencing IO thingies as typeglobs
+
+The C<*{...}> operator, when passed a reference to an IO thingy (as in
+C<*{*STDIN{IO}}>), creates a new typeglob containing just that IO object.
+Previously, it would stringify as an empty string, but some operators would
+treat it as undefined, producing an "uninitialized" warning.
+Now it stringifies as __ANONIO__ [perl #96326].
+
+=head2 User-defined case-changing operations
+
+This feature was deprecated in Perl 5.14, and has now been removed.
+The CPAN module L<Unicode::Casing> provides better functionality without
+the drawbacks that this feature had, as are detailed in the 5.14
+documentation:
+L<http://perldoc.perl.org/5.14.0/perlunicode.html#User-Defined-Case-Mappings-%28for-serious-hackers-only%29>
+
+=head2 XSUBs are now 'static'
+
+XSUB C functions are now 'static', that is, they are not visible from
+outside the compilation unit.  Users can use the new C<XS_EXTERNAL(name)>
+and C<XS_INTERNAL(name)> macros to pick the desired linking behavior.
+The ordinary C<XS(name)> declaration for XSUBs will continue to declare
+non-'static' XSUBs for compatibility, but the XS compiler,
+L<ExtUtils::ParseXS> (C<xsubpp>) will emit 'static' XSUBs by default.
+L<ExtUtils::ParseXS>'s behavior can be reconfigured from XS using the
+C<EXPORT_XSUB_SYMBOLS> keyword.  See L<perlxs> for details.
+
+=head2 Weakening read-only references
+
+Weakening read-only references is no longer permitted.  It should never
+have worked anyway, and could sometimes result in crashes.
+
+=head2 Tying scalars that hold typeglobs
+
+Attempting to tie a scalar after a typeglob was assigned to it would
+instead tie the handle in the typeglob's IO slot.  This meant that it was
+impossible to tie the scalar itself.  Similar problems affected C<tied> and
+C<untie>: C<tied $scalar> would return false on a tied scalar if the last
+thing returned was a typeglob, and C<untie $scalar> on such a tied scalar
+would do nothing.
+
+We fixed this problem before Perl 5.14.0, but it caused problems with some
+CPAN modules, so we put in a deprecation cycle instead.
+
+Now the deprecation has been removed and this bug has been fixed.  So
+C<tie $scalar> will always tie the scalar, not the handle it holds.  To tie
+the handle, use C<tie *$scalar> (with an explicit asterisk).  The same
+applies to C<tied *$scalar> and C<untie *$scalar>.
+
+=head2 IPC::Open3 no longer provides C<xfork()>, C<xclose_on_exec()>
+and C<xpipe_anon()>
+
+All three functions were private, undocumented, and unexported.  They do
+not appear to be used by any code on CPAN.  Two have been inlined and one
+deleted entirely.
+
+=head2 C<$$> no longer caches PID
+
+Previously, if one called fork(3) from C, Perl's
+notion of C<$$> could go out of sync with what getpid() returns.  By always
+fetching the value of C<$$> via getpid(), this potential bug is eliminated.
+Code that depends on the caching behavior will break.  As described in
+L<Core Enhancements|/C<$$> can be assigned to>,
+C<$$> is now writable, but it will be reset during a
+fork.
+
+=head2 C<$$> and C<getppid()> no longer emulate POSIX semantics under LinuxThreads
+
+The POSIX emulation of C<$$> and C<getppid()> under the obsolete
+LinuxThreads implementation has been removed.
+This only impacts users of Linux 2.4 and
+users of Debian GNU/kFreeBSD up to and including 6.0, not the vast
+majority of Linux installations that use NPTL threads.
+
+This means that C<getppid()>, like C<$$>, is now always guaranteed to
+return the OS's idea of the current state of the process, not perl's
+cached version of it.
+
+See the documentation for L<$$|perlvar/$$> for details.
+
+=head2 C<< $< >>, C<< $> >>, C<$(> and C<$)> are no longer cached
+
+Similarly to the changes to C<$$> and C<getppid()>, the internal
+caching of C<< $< >>, C<< $> >>, C<$(> and C<$)> has been removed.
+
+When we cached these values our idea of what they were would drift out
+of sync with reality if someone (e.g., someone embedding perl) called
+C<sete?[ug]id()> without updating C<PL_e?[ug]id>.  Having to deal with
+this complexity wasn't worth it given how cheap the C<gete?[ug]id()>
+system call is.
+
+This change will break a handful of CPAN modules that use the XS-level
+C<PL_uid>, C<PL_gid>, C<PL_euid> or C<PL_egid> variables.
+
+The fix for those breakages is to use C<PerlProc_gete?[ug]id()> to
+retrieve them (e.g., C<PerlProc_getuid()>), and not to assign to
+C<PL_e?[ug]id> if you change the UID/GID/EUID/EGID.  There is no longer
+any need to do so since perl will always retrieve the up-to-date
+version of those values from the OS.
+
+=head2 Which Non-ASCII characters get quoted by C<quotemeta> and C<\Q> has changed
+
+This is unlikely to result in a real problem, as Perl does not attach
+special meaning to any non-ASCII character, so it is currently
+irrelevant which are quoted or not.  This change fixes bug [perl #77654] and
+brings Perl's behavior more into line with Unicode's recommendations.
+See L<perlfunc/quotemeta>.
+
+=head1 Performance Enhancements
+
+=over
+
+=item *
+
+Improved performance for Unicode properties in regular expressions
+
+=for comment Can this be compacted some? -- rjbs, 2012-02-20
+
+Matching a code point against a Unicode property is now done via a
+binary search instead of linear.  This means for example that the worst
+case for a 1000 item property is 10 probes instead of 1000.  This
+inefficiency has been compensated for in the past by permanently storing
+in a hash the results of a given probe plus the results for the adjacent
+64 code points, under the theory that near-by code points are likely to
+be searched for.  A separate hash was used for each mention of a Unicode
+property in each regular expression.  Thus, C<qr/\p{foo}abc\p{foo}/>
+would generate two hashes.  Any probes in one instance would be unknown
+to the other, and the hashes could expand separately to be quite large
+if the regular expression were used on many different widely-separated
+code points.
+Now, however, there is just one hash shared by all instances of a given
+property.  This means that if C<\p{foo}> is matched against "A" in one
+regular expression in a thread, the result will be known immediately to
+all regular expressions, and the relentless march of using up memory is
+slowed considerably.
+
+=item *
+
+Version declarations with the C<use> keyword (e.g., C<use 5.012>) are now
+faster, as they enable features without loading F<feature.pm>.
+
+=item *
+
+C<local $_> is faster now, as it no longer iterates through magic that it
+is not going to copy anyway.
+
+=item *
+
+Perl 5.12.0 sped up the destruction of objects whose classes define
+empty C<DESTROY> methods (to prevent autoloading), by simply not
+calling such empty methods.  This release takes this optimization a
+step further, by not calling any C<DESTROY> method that begins with a
+C<return> statement.  This can be useful for destructors that are only
+used for debugging:
+
+    use constant DEBUG => 1;
+    sub DESTROY { return unless DEBUG; ... }
+
+Constant-folding will reduce the first statement to C<return;> if DEBUG
+is set to 0, triggering this optimization.
+
+=item *
+
+Assigning to a variable that holds a typeglob or copy-on-write scalar
+is now much faster.  Previously the typeglob would be stringified or
+the copy-on-write scalar would be copied before being clobbered.
+
+=item *
+
+Assignment to C<substr> in void context is now more than twice its
+previous speed.  Instead of creating and returning a special lvalue
+scalar that is then assigned to, C<substr> modifies the original string
+itself.
+
+=item *
+
+C<substr> no longer calculates a value to return when called in void
+context.
+
+=item *
+
+Due to changes in L<File::Glob>, Perl's C<glob> function and its C<<
+<...> >> equivalent are now much faster.  The splitting of the pattern
+into words has been rewritten in C, resulting in speed-ups of 20% for
+some cases.
+
+This does not affect C<glob> on VMS, as it does not use File::Glob.
+
+=item *
+
+The short-circuiting operators C<&&>, C<||>, and C<//>, when chained
+(such as C<$a || $b || $c>), are now considerably faster to short-circuit,
+due to reduced optree traversal.
+
+=item *
+
+The implementation of C<s///r> makes one fewer copy of the scalar's value.
+
+=item *
+
+Recursive calls to lvalue subroutines in lvalue scalar context use less
+memory.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 Deprecated Modules
+
+=over
+
+=item L<Version::Requirements>
+
+Version::Requirements is now DEPRECATED, use L<CPAN::Meta::Requirements>,
+which is a drop-in replacement.  It will be deleted from perl.git blead
+in v5.17.0.
+
+=back
+
+=head2 New Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<arybase> -- this new module implements the C<$[> variable.
+
+=item *
+
+L<PerlIO::mmap> 0.010 has been added to the Perl core.
+
+The C<mmap> PerlIO layer is no longer implemented by perl itself, but has
+been moved out into the new L<PerlIO::mmap> module.
+
+=back
+
+=head2 Updated Modules and Pragmata
+
+This is only an overview of selected module updates.  For a complete list of
+updates, run:
+
+    $ corelist --diff 5.14.0 5.16.0
+
+You can substitute your favorite version in place of 5.14.0, too.
+
+=over 4
+
+=item *
+
+L<Archive::Extract> has been upgraded from version 0.48 to 0.58.
+
+Includes a fix for FreeBSD to only use C<unzip> if it is located in
+C</usr/local/bin>, as FreeBSD 9.0 will ship with a limited C<unzip> in
+C</usr/bin>.
+
+=item *
+
+L<Archive::Tar> has been upgraded from version 1.76 to 1.82.
+
+Adjustments to handle files >8gb (>0777777777777 octal) and a feature
+to return the MD5SUM of files in the archive.
+
+=item *
+
+L<base> has been upgraded from version 2.16 to 2.18.
+
+C<base> no longer sets a module's C<$VERSION> to "-1" when a module it
+loads does not define a C<$VERSION>.  This change has been made because
+"-1" is not a valid version number under the new "lax" criteria used
+internally by C<UNIVERSAL::VERSION>.  (See L<version> for more on "lax"
+version criteria.)
+
+C<base> no longer internally skips loading modules it has already loaded
+and instead relies on C<require> to inspect C<%INC>.  This fixes a bug
+when C<base> is used with code that clear C<%INC> to force a module to
+be reloaded.
+
+=item *
+
+L<Carp> has been upgraded from version 1.20 to 1.26.
+
+It now includes last read filehandle info and puts a dot after the file
+and line number, just like errors from C<die> [perl #106538].
+
+=item *
+
+L<charnames> has been updated from version 1.18 to 1.30.
+
+C<charnames> can now be invoked with a new option, C<:loose>,
+which is like the existing C<:full> option, but enables Unicode loose
+name matching.  Details are in L<charnames/LOOSE MATCHES>.
+
+=item *
+
+L<B::Deparse> has been upgraded from version 1.03 to 1.14.  This fixes
+numerous deparsing bugs.
+
+=item *
+
+L<CGI> has been upgraded from version 3.52 to 3.59.
+
+It uses the public and documented FCGI.pm API in CGI::Fast.  CGI::Fast was
+using an FCGI API that was deprecated and removed from documentation
+more than ten years ago.  Usage of this deprecated API with FCGI E<gt>=
+0.70 or FCGI E<lt>= 0.73 introduces a security issue.
+L<https://rt.cpan.org/Public/Bug/Display.html?id=68380>
+L<http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-2766>
+
+Things that may break your code:
+
+C<url()> was fixed to return C<PATH_INFO> when it is explicitly requested
+with either the C<path=E<gt>1> or C<path_info=E<gt>1> flag.
+
+If your code is running under mod_rewrite (or compatible) and you are
+calling C<self_url()> or you are calling C<url()> and passing
+C<path_info=E<gt>1>, these methods will actually be returning
+C<PATH_INFO> now, as you have explicitly requested or C<self_url()>
+has requested on your behalf.
+
+The C<PATH_INFO> has been omitted in such URLs since the issue was
+introduced in the 3.12 release in December, 2005.
+
+This bug is so old your application may have come to depend on it or
+workaround it. Check for application before upgrading to this release.
+
+Examples of affected method calls:
+
+  $q->url(-absolute => 1, -query => 1, -path_info => 1);
+  $q->url(-path=>1);
+  $q->url(-full=>1,-path=>1);
+  $q->url(-rewrite=>1,-path=>1);
+  $q->self_url();
+
+We no longer read from STDIN when the Content-Length is not set,
+preventing requests with no Content-Length from sometimes freezing.
+This is consistent with the CGI RFC 3875, and is also consistent with
+CGI::Simple.  However, the old behavior may have been expected by some
+command-line uses of CGI.pm.
+
+In addition, the DELETE HTTP verb is now supported.
+
+=item *
+
+L<Compress::Zlib> has been upgraded from version 2.035 to 2.048.
+
+IO::Compress::Zip and IO::Uncompress::Unzip now have support for LZMA
+(method 14).  There is a fix for a CRC issue in IO::Compress::Unzip and
+it supports Streamed Stored context now.  And fixed a Zip64 issue in
+IO::Compress::Zip when the content size was exactly 0xFFFFFFFF.
+
+=item *
+
+L<Digest::SHA> has been upgraded from version 5.61 to 5.71.
+
+Added BITS mode to the addfile method and shasum.  This makes
+partial-byte inputs possible via files/STDIN and lets shasum check
+all 8074 NIST Msg vectors, where previously special programming was
+required to do this.
+
+=item *
+
+L<Encode> has been upgraded from version 2.42 to 2.44.
+
+Missing aliases added, a deep recursion error fixed and various
+documentation updates.
+
+Addressed 'decode_xs n-byte heap-overflow' security bug in Unicode.xs
+(CVE-2011-2939). (5.14.2)
+
+=item *
+
+L<ExtUtils::CBuilder> updated from version 0.280203 to 0.280206.
+
+The new version appends CFLAGS and LDFLAGS to their Config.pm
+counterparts.
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded from version 2.2210 to 3.16.
+
+Much of L<ExtUtils::ParseXS>, the module behind the XS compiler C<xsubpp>,
+was rewritten and cleaned up.  It has been made somewhat more extensible
+and now finally uses strictures.
+
+The typemap logic has been moved into a separate module,
+L<ExtUtils::Typemaps>.  See L</New Modules and Pragmata>, above.
+
+For a complete set of changes, please see the ExtUtils::ParseXS
+changelog, available on the CPAN.
+
+=item *
+
+L<File::Glob> has been upgraded from version 1.12 to 1.17.
+
+On Windows, tilde (~) expansion now checks the C<USERPROFILE> environment
+variable, after checking C<HOME>.
+
+It has a new C<:bsd_glob> export tag, intended to replace C<:glob>.  Like
+C<:glob> it overrides C<glob> with a function that does not split the glob
+pattern into words, but, unlike C<:glob>, it iterates properly in scalar
+context, instead of returning the last file.
+
+There are other changes affecting Perl's own C<glob> operator (which uses
+File::Glob internally, except on VMS).  See L</Performance Enhancements>
+and L</Selected Bug Fixes>.
+
+=item *
+
+L<FindBin> updated from version 1.50 to 1.51.
+
+It no longer returns a wrong result if a script of the same name as the
+current one exists in the path and is executable.
+
+=item *
+
+L<HTTP::Tiny> has been upgraded from version 0.012 to 0.017.
+
+Added support for using C<$ENV{http_proxy}> to set the default proxy host.
+
+Adds additional shorthand methods for all common HTTP verbs,
+a C<post_form()> method for POST-ing x-www-form-urlencoded data and
+a C<www_form_urlencode()> utility method.
+
+=item *
+
+L<IO> has been upgraded from version 1.25_04 to 1.25_06, and L<IO::Handle>
+from version 1.31 to 1.33.
+
+Together, these upgrades fix a problem with IO::Handle's C<getline> and
+C<getlines> methods.  When these methods are called on the special ARGV
+handle, the next file is automatically opened, as happens with the built-in
+C<E<lt>E<gt>> and C<readline> functions.  But, unlike the built-ins, these
+methods were not respecting the caller's use of the L<open> pragma and
+applying the appropriate I/O layers to the newly-opened file
+[rt.cpan.org #66474].
+
+=item *
+
+L<IPC::Cmd> has been upgraded from version 0.70 to 0.76.
+
+Capturing of command output (both C<STDOUT> and C<STDERR>) is now supported
+using L<IPC::Open3> on MSWin32 without requiring L<IPC::Run>.
+
+=item *
+
+L<IPC::Open3> has been upgraded from version 1.09 to 1.12.
+
+Fixes a bug which prevented use of C<open3> on Windows when C<*STDIN>,
+C<*STDOUT> or C<*STDERR> had been localized.
+
+Fixes a bug which prevented duplicating numeric file descriptors on Windows.
+
+C<open3> with "-" for the program name works once more.  This was broken in
+version 1.06 (and hence in Perl 5.14.0) [perl #95748].
+
+=item *
+
+L<Locale::Codes> has been upgraded from version 3.16 to 3.21.
+
+Added Language Extension codes (langext) and Language Variation codes (langvar)
+as defined in the IANA language registry.
+
+Added language codes from ISO 639-5
+
+Added language/script codes from the IANA language subtag registry
+
+Fixed an uninitialized value warning [rt.cpan.org #67438].
+
+Fixed the return value for the all_XXX_codes and all_XXX_names functions
+[rt.cpan.org #69100].
+
+Reorganized modules to move Locale::MODULE to Locale::Codes::MODULE to allow
+for cleaner future additions.  The original four modules (Locale::Language,
+Locale::Currency, Locale::Country, Locale::Script) will continue to work, but
+all new sets of codes will be added in the Locale::Codes namespace.
+
+The code2XXX, XXX2code, all_XXX_codes, and all_XXX_names functions now
+support retired codes.  All codesets may be specified by a constant or
+by their name now.  Previously, they were specified only by a constant.
+
+The alias_code function exists for backward compatibility.  It has been
+replaced by rename_country_code.  The alias_code function will be
+removed some time after September, 2013.
+
+All work is now done in the central module (Locale::Codes).  Previously,
+some was still done in the wrapper modules (Locale::Codes::*).  Added
+Language Family codes (langfam) as defined in ISO 639-5.
+
+=item *
+
+L<Math::BigFloat> has been upgraded from version 1.993 to 1.997.
+
+The C<numify> method has been corrected to return a normalized Perl number
+(the result of C<0 + $thing>), instead of a string [rt.cpan.org #66732].
+
+=item *
+
+L<Math::BigInt> has been upgraded from version 1.994 to 1.998.
+
+It provides a new C<bsgn> method that complements the C<babs> method.
+
+It fixes the internal C<objectify> function's handling of "foreign objects"
+so they are converted to the appropriate class (Math::BigInt or
+Math::BigFloat).
+
+=item *
+
+L<Math::BigRat> has been upgraded from version 0.2602 to 0.2603.
+
+C<int()> on a Math::BigRat object containing -1/2 now creates a
+Math::BigInt containing 0, rather than -0.  L<Math::BigInt> does not even
+support negative zero, so the resulting object was actually malformed
+[perl #95530].
+
+=item *
+
+L<Math::Complex> has been upgraded from version 1.56 to 1.59
+and L<Math::Trig> from version 1.2 to 1.22.
+
+Fixes include: correct copy constructor usage; fix polarwise formatting with
+numeric format specifier; and more stable C<great_circle_direction> algorithm.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 2.51 to 2.66.
+
+The C<corelist> utility now understands the C<-r> option for displaying
+Perl release dates and the C<--diff> option to print the set of modlib
+changes between two perl distributions.
+
+=item *
+
+L<Module::Metadata> has been upgraded from version 1.000004 to 1.000009.
+
+Adds C<provides> method to generate a CPAN META provides data structure
+correctly; use of C<package_versions_from_directory> is discouraged.
+
+=item *
+
+L<ODBM_File> has been upgraded from version 1.10 to 1.12.
+
+The XS code is now compiled with C<PERL_NO_GET_CONTEXT>, which will aid
+performance under ithreads.
+
+=item *
+
+L<open> has been upgraded from version 1.08 to 1.10.
+
+It no longer turns off layers on standard handles when invoked without the
+":std" directive.  Similarly, when invoked I<with> the ":std" directive, it
+now clears layers on STDERR before applying the new ones, and not just on
+STDIN and STDOUT [perl #92728].
+
+=item *
+
+L<overload> has been upgraded from version 1.13 to 1.18.
+
+C<overload::Overloaded> no longer calls C<can> on the class, but uses
+another means to determine whether the object has overloading.  It was
+never correct for it to call C<can>, as overloading does not respect
+AUTOLOAD.  So classes that autoload methods and implement C<can> no longer
+have to account for overloading [perl #40333].
+
+A warning is now produced for invalid arguments.  See L</New Diagnostics>.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded from version 0.11 to 0.14.
+
+(This is the module that implements C<< open $fh, '>', \$scalar >>.)
+
+It fixes a problem with C<< open my $fh, ">", \$scalar >> not working if
+C<$scalar> is a copy-on-write scalar. (5.14.2)
+
+It also fixes a hang that occurs with C<readline> or C<< <$fh> >> if a
+typeglob has been assigned to $scalar [perl #92258].
+
+It no longer assumes during C<seek> that $scalar is a string internally.
+If it didn't crash, it was close to doing so [perl #92706].  Also, the
+internal print routine no longer assumes that the position set by C<seek>
+is valid, but extends the string to that position, filling the intervening
+bytes (between the old length and the seek position) with nulls
+[perl #78980].
+
+Printing to an in-memory handle now works if the $scalar holds a reference,
+stringifying the reference before modifying it.  References used to be
+treated as empty strings.
+
+Printing to an in-memory handle no longer crashes if the $scalar happens to
+hold a number internally, but no string buffer.
+
+Printing to an in-memory handle no longer creates scalars that confuse
+the regular expression engine [perl #108398].
+
+=item *
+
+L<Pod::Functions> has been upgraded from version 1.04 to 1.05.
+
+F<Functions.pm> is now generated at perl build time from annotations in
+F<perlfunc.pod>.  This will ensure that L<Pod::Functions> and L<perlfunc>
+remain in synchronisation.
+
+=item *
+
+L<Pod::Html> has been upgraded from version 1.11 to 1.1502.
+
+This is an extensive rewrite of Pod::Html to use L<Pod::Simple> under
+the hood.  The output has changed significantly.
+
+=item *
+
+L<Pod::Perldoc> has been upgraded from version 3.15_03 to 3.17.
+
+It corrects the search paths on VMS [perl #90640]. (5.14.1)
+
+The B<-v> option now fetches the right section for C<$0>.
+
+This upgrade has numerous significant fixes.  Consult its changelog on
+the CPAN for more information.
+
+=item *
+
+L<POSIX> has been upgraded from version 1.24 to 1.30.
+
+L<POSIX> no longer uses L<AutoLoader>.  Any code which was relying on this
+implementation detail was buggy, and may fail because of this change.
+The module's Perl code has been considerably simplified, roughly halving
+the number of lines, with no change in functionality.  The XS code has
+been refactored to reduce the size of the shared object by about 12%,
+with no change in functionality.  More POSIX functions now have tests.
+
+C<sigsuspend> and C<pause> now run signal handlers before returning, as the
+whole point of these two functions is to wait until a signal has
+arrived, and then return I<after> it has been triggered.  Delayed, or
+"safe", signals were preventing that from happening, possibly resulting in
+race conditions [perl #107216].
+
+C<POSIX::sleep> is now a direct call into the underlying OS C<sleep>
+function, instead of being a Perl wrapper on C<CORE::sleep>.
+C<POSIX::dup2> now returns the correct value on Win32 (I<i.e.>, the file
+descriptor).  C<POSIX::SigSet> C<sigsuspend> and C<sigpending> and
+C<POSIX::pause> now dispatch safe signals immediately before returning to
+their caller.
+
+C<POSIX::Termios::setattr> now defaults the third argument to C<TCSANOW>,
+instead of 0. On most platforms C<TCSANOW> is defined to be 0, but on some
+0 is not a valid parameter, which caused a call with defaults to fail.
+
+=item *
+
+L<Socket> has been upgraded from version 1.94 to 2.001.
+
+It has new functions and constants for handling IPv6 sockets:
+
+    pack_ipv6_mreq
+    unpack_ipv6_mreq
+    IPV6_ADD_MEMBERSHIP
+    IPV6_DROP_MEMBERSHIP
+    IPV6_MTU
+    IPV6_MTU_DISCOVER
+    IPV6_MULTICAST_HOPS
+    IPV6_MULTICAST_IF
+    IPV6_MULTICAST_LOOP
+    IPV6_UNICAST_HOPS
+    IPV6_V6ONLY
+
+=item *
+
+L<Storable> has been upgraded from version 2.27 to 2.34.
+
+It no longer turns copy-on-write scalars into read-only scalars when
+freezing and thawing.
+
+=item *
+
+L<Sys::Syslog> has been upgraded from version 0.27 to 0.29.
+
+This upgrade closes many outstanding bugs.
+
+=item *
+
+L<Term::ANSIColor> has been upgraded from version 3.00 to 3.01.
+
+Only interpret an initial array reference as a list of colors, not any initial
+reference, allowing the colored function to work properly on objects with
+stringification defined.
+
+=item *
+
+L<Term::ReadLine> has been upgraded from version 1.07 to 1.09.
+
+Term::ReadLine now supports any event loop, including unpublished ones and
+simple L<IO::Select>, loops without the need to rewrite existing code for
+any particular framework [perl #108470].
+
+=item *
+
+L<threads::shared> has been upgraded from version 1.37 to 1.40.
+
+Destructors on shared objects used to be ignored sometimes if the objects
+were referenced only by shared data structures.  This has been mostly
+fixed, but destructors may still be ignored if the objects still exist at
+global destruction time [perl #98204].
+
+=item *
+
+L<Unicode::Collate> has been upgraded from version 0.73 to 0.89.
+
+Updated to CLDR 1.9.1
+
+Locales updated to CLDR 2.0: mk, mt, nb, nn, ro, ru, sk, sr, sv, uk,
+zh__pinyin, zh__stroke
+
+Newly supported locales: bn, fa, ml, mr, or, pa, sa, si, si__dictionary,
+sr_Latn, sv__reformed, ta, te, th, ur, wae.
+
+Tailored compatibility ideographs as well as unified ideographs for the
+locales: ja, ko, zh__big5han, zh__gb2312han, zh__pinyin, zh__stroke.
+
+Locale/*.pl files are now searched for in @INC.
+
+=item *
+
+L<Unicode::Normalize> has been upgraded from version 1.10 to 1.14.
+
+Fixes for the removal of F<unicore/CompositionExclusions.txt> from core.
+
+=item *
+
+L<Unicode::UCD> has been upgraded from version 0.32 to 0.43.
+
+This adds four new functions:  C<prop_aliases()> and
+C<prop_value_aliases()>, which are used to find all Unicode-approved
+synonyms for property names, or to convert from one name to another;
+C<prop_invlist> which returns all code points matching a given
+Unicode binary property; and C<prop_invmap> which returns the complete
+specification of a given Unicode property.
+
+=item *
+
+L<Win32API::File> has been upgraded from version 0.1101 to 0.1200.
+
+Added SetStdHandle and GetStdHandle functions
+
+=back
+
+=head2 Removed Modules and Pragmata
+
+As promised in Perl 5.14.0's release notes, the following modules have
+been removed from the core distribution, and if needed should be installed
+from CPAN instead.
+
+=over
+
+=item *
+
+L<Devel::DProf> has been removed from the Perl core.  Prior version was
+20110228.00.
+
+=item *
+
+L<Shell> has been removed from the Perl core.  Prior version was 0.72_01.
+
+=item *
+
+Several old perl4-style libraries which have been deprecated with 5.14
+are now removed:
+
+    abbrev.pl assert.pl bigfloat.pl bigint.pl bigrat.pl cacheout.pl
+    complete.pl ctime.pl dotsh.pl exceptions.pl fastcwd.pl flush.pl
+    getcwd.pl getopt.pl getopts.pl hostname.pl importenv.pl
+    lib/find{,depth}.pl look.pl newgetopt.pl open2.pl open3.pl
+    pwd.pl shellwords.pl stat.pl tainted.pl termcap.pl timelocal.pl
+
+They can be found on CPAN as L<Perl4::CoreLibs>.
+
+=back
+
+=head1 Documentation
+
+=head2 New Documentation
+
+=head3 L<perldtrace>
+
+L<perldtrace> describes Perl's DTrace support, listing the provided probes
+and gives examples of their use.
+
+=head3 L<perlexperiment>
+
+This document is intended to provide a list of experimental features in
+Perl.  It is still a work in progress.
+
+=head3 L<perlootut>
+
+This a new OO tutorial.  It focuses on basic OO concepts, and then recommends
+that readers choose an OO framework from CPAN.
+
+=head3 L<perlxstypemap>
+
+The new manual describes the XS typemapping mechanism in unprecedented
+detail and combines new documentation with information extracted from
+L<perlxs> and the previously unofficial list of all core typemaps.
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlapi>
+
+=over 4
+
+=item *
+
+The HV API has long accepted negative lengths to show that the key is
+in UTF8.  This is now documented.
+
+=item *
+
+The C<boolSV()> macro is now documented.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+C<dbmopen> treats a 0 mode as a special case, that prevents a nonexistent
+file from being created.  This has been the case since Perl 5.000, but was
+never documented anywhere.  Now the perlfunc entry mentions it
+[perl #90064].
+
+=item *
+
+As an accident of history, C<open $fh, '<:', ...> applies the default
+layers for the platform (C<:raw> on Unix, C<:crlf> on Windows), ignoring
+whatever is declared by L<open.pm|open>.  This seems such a useful feature
+it has been documented in L<perlfunc|perlfunc/open> and L<open>.
+
+=item *
+
+The entry for C<split> has been rewritten.  It is now far clearer than
+before.
+
+=back
+
+=head3 L<perlguts>
+
+=over 4
+
+=item *
+
+A new section, L<Autoloading with XSUBs|perlguts/Autoloading with XSUBs>,
+has been added, which explains the two APIs for accessing the name of the
+autoloaded sub.
+
+=item *
+
+Some function descriptions in L<perlguts> were confusing, as it was
+not clear whether they referred to the function above or below the
+description.  This has been clarified [perl #91790].
+
+=back
+
+=head3 L<perlobj>
+
+=over 4
+
+=item *
+
+This document has been rewritten from scratch, and its coverage of various OO
+concepts has been expanded.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+Documentation of the smartmatch operator has been reworked and moved from
+perlsyn to perlop where it belongs.
+
+It has also been corrected for the case of C<undef> on the left-hand
+side.  The list of different smart match behaviors had an item in the
+wrong place.
+
+=item *
+
+Documentation of the ellipsis statement (C<...>) has been reworked and
+moved from perlop to perlsyn.
+
+=item *
+
+The explanation of bitwise operators has been expanded to explain how they
+work on Unicode strings (5.14.1).
+
+=item *
+
+More examples for C<m//g> have been added (5.14.1).
+
+=item *
+
+The C<<< <<\FOO >>> here-doc syntax has been documented (5.14.1).
+
+=back
+
+=head3 L<perlpragma>
+
+=over 4
+
+=item *
+
+There is now a standard convention for naming keys in the C<%^H>,
+documented under L<Key naming|perlpragma/Key naming>.
+
+=back
+
+=head3 L<perlsec/Laundering and Detecting Tainted Data>
+
+=over 4
+
+=item *
+
+The example function for checking for taintedness contained a subtle
+error.  C<$@> needs to be localized to prevent its changing this
+global's value outside the function.  The preferred method to check for
+this remains L<Scalar::Util/tainted>.
+
+=back
+
+=head3 L<perllol>
+
+=over
+
+=item *
+
+L<perllol> has been expanded with examples using the new C<push $scalar>
+syntax introduced in Perl 5.14.0 (5.14.1).
+
+=back
+
+=head3 L<perlmod>
+
+=over
+
+=item *
+
+L<perlmod> now states explicitly that some types of explicit symbol table
+manipulation are not supported.  This codifies what was effectively already
+the case [perl #78074].
+
+=back
+
+=head3 L<perlpodstyle>
+
+=over 4
+
+=item *
+
+The tips on which formatting codes to use have been corrected and greatly
+expanded.
+
+=item *
+
+There are now a couple of example one-liners for previewing POD files after
+they have been edited.
+
+=back
+
+=head3 L<perlre>
+
+=over
+
+=item *
+
+The C<(*COMMIT)> directive is now listed in the right section
+(L<Verbs without an argument|perlre/Verbs without an argument>).
+
+=back
+
+=head3 L<perlrun>
+
+=over
+
+=item *
+
+L<perlrun> has undergone a significant clean-up.  Most notably, the
+B<-0x...> form of the B<-0> flag has been clarified, and the final section
+on environment variables has been corrected and expanded (5.14.1).
+
+=back
+
+=head3 L<perlsub>
+
+=over
+
+=item *
+
+The ($;) prototype syntax, which has existed for rather a long time, is now
+documented in L<perlsub>.  It lets a unary function have the same
+precedence as a list operator.
+
+=back
+
+=head3 L<perltie>
+
+=over
+
+=item *
+
+The required syntax for tying handles has been documented.
+
+=back
+
+=head3 L<perlvar>
+
+=over
+
+=item *
+
+The documentation for L<$!|perlvar/$!> has been corrected and clarified.
+It used to state that $! could be C<undef>, which is not the case.  It was
+also unclear whether system calls set C's C<errno> or Perl's C<$!>
+[perl #91614].
+
+=item *
+
+Documentation for L<$$|perlvar/$$> has been amended with additional
+cautions regarding changing the process ID.
+
+=back
+
+=head3 Other Changes
+
+=over 4
+
+=item *
+
+L<perlxs> was extended with documentation on inline typemaps.
+
+=item *
+
+L<perlref> has a new L<Circular References|perlref/Circular References>
+section explaining how circularities may not be freed and how to solve that
+with weak references.
+
+=item *
+
+Parts of L<perlapi> were clarified, and Perl equivalents of some C
+functions have been added as an additional mode of exposition.
+
+=item *
+
+A few parts of L<perlre> and L<perlrecharclass> were clarified.
+
+=back
+
+=head2 Removed Documentation
+
+=head3 Old OO Documentation
+
+The old OO tutorials, perltoot, perltooc, and perlboot, have been
+removed.  The perlbot (bag of object tricks) document has been removed
+as well.
+
+=head3 Development Deltas
+
+The perldelta files for development releases are no longer packaged with
+perl.  These can still be found in the perl source code repository.
+
+=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 New Diagnostics
+
+=head3 New Errors
+
+=over 4
+
+=item *
+
+L<Cannot set tied @DB::args|perldiag/"Cannot set tied @DB::args">
+
+This error occurs when C<caller> tries to set C<@DB::args> but finds it
+tied.  Before this error was added, it used to crash instead.
+
+=item *
+
+L<Cannot tie unreifiable array|perldiag/"Cannot tie unreifiable array">
+
+This error is part of a safety check that the C<tie> operator does before
+tying a special array like C<@_>.  You should never see this message.
+
+=item *
+
+L<&CORE::%s cannot be called directly|perldiag/"&CORE::%s cannot be called directly">
+
+This occurs when a subroutine in the C<CORE::> namespace is called
+with C<&foo> syntax or through a reference.  Some subroutines
+in this package cannot yet be called that way, but must be
+called as barewords.  See L</Subroutines in the C<CORE> namespace>, above.
+
+=item *
+
+L<Source filters apply only to byte streams|perldiag/"Source filters apply only to byte streams">
+
+This new error occurs when you try to activate a source filter (usually by
+loading a source filter module) within a string passed to C<eval> under the
+C<unicode_eval> feature.
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<defined(@array) is deprecated|perldiag/"defined(@array) is deprecated">
+
+The long-deprecated C<defined(@array)> now also warns for package variables.
+Previously it issued a warning for lexical variables only.
+
+=item *
+
+L<length() used on %s|perldiag/length() used on %s>
+
+This new warning occurs when C<length> is used on an array or hash, instead
+of C<scalar(@array)> or C<scalar(keys %hash)>.
+
+=item *
+
+L<lvalue attribute %s already-defined subroutine|perldiag/"lvalue attribute %s already-defined subroutine">
+
+L<attributes.pm|attributes> now emits this warning when the :lvalue
+attribute is applied to a Perl subroutine that has already been defined, as
+doing so can have unexpected side-effects.
+
+=item *
+
+L<overload arg '%s' is invalid|perldiag/"overload arg '%s' is invalid">
+
+This warning, in the "overload" category, is produced when the overload
+pragma is given an argument it doesn't recognize, presumably a mistyped
+operator.
+
+=item *
+
+L<$[ used in %s (did you mean $] ?)|perldiag/"$[ used in %s (did you mean $] ?)">
+
+This new warning exists to catch the mistaken use of C<$[> in version
+checks.  C<$]>, not C<$[>, contains the version number.
+
+=item *
+
+L<Useless assignment to a temporary|perldiag/"Useless assignment to a temporary">
+
+Assigning to a temporary scalar returned
+from an lvalue subroutine now produces this
+warning [perl #31946].
+
+=item *
+
+L<Useless use of \E|perldiag/"Useless use of \E">
+
+C<\E> does nothing unless preceded by C<\Q>, C<\L> or C<\U>.
+
+=back
+
+=head2 Removed Errors
+
+=over
+
+=item *
+
+"sort is now a reserved word"
+
+This error used to occur when C<sort> was called without arguments,
+followed by C<;> or C<)>.  (E.g., C<sort;> would die, but C<{sort}> was
+OK.)  This error message was added in Perl 3 to catch code like
+C<close(sort)> which would no longer work.  More than two decades later,
+this message is no longer appropriate.  Now C<sort> without arguments is
+always allowed, and returns an empty list, as it did in those cases
+where it was already allowed [perl #90030].
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+The "Applying pattern match..." or similar warning produced when an
+array or hash is on the left-hand side of the C<=~> operator now
+mentions the name of the variable.
+
+=item *
+
+The "Attempt to free non-existent shared string" has had the spelling
+of "non-existent" corrected to "nonexistent".  It was already listed
+with the correct spelling in L<perldiag>.
+
+=item *
+
+The error messages for using C<default> and C<when> outside a
+topicalizer have been standardized to match the messages for C<continue>
+and loop controls.  They now read 'Can't "default" outside a
+topicalizer' and 'Can't "when" outside a topicalizer'.  They both used
+to be 'Can't use when() outside a topicalizer' [perl #91514].
+
+=item *
+
+The message, "Code point 0x%X is not Unicode, no properties match it;
+all inverse properties do" has been changed to "Code point 0x%X is not
+Unicode, all \p{} matches fail; all \P{} matches succeed".
+
+=item *
+
+Redefinition warnings for constant subroutines used to be mandatory,
+even occurring under C<no warnings>.  Now they respect the L<warnings>
+pragma.
+
+=item *
+
+The "glob failed" warning message is now suppressible via C<no warnings>
+[perl #111656].
+
+=item *
+
+The L<Invalid version format|perldiag/"Invalid version format (%s)">
+error message now says "negative version number" within the parentheses,
+rather than "non-numeric data", for negative numbers.
+
+=item *
+
+The two warnings
+L<Possible attempt to put comments in qw() list|perldiag/"Possible attempt to put comments in qw() list">
+and
+L<Possible attempt to separate words with commas|perldiag/"Possible attempt to separate words with commas">
+are no longer mutually exclusive: the same C<qw> construct may produce
+both.
+
+=item *
+
+The uninitialized warning for C<y///r> when C<$_> is implicit and
+undefined now mentions the variable name, just like the non-/r variation
+of the operator.
+
+=item *
+
+The 'Use of "foo" without parentheses is ambiguous' warning has been
+extended to apply also to user-defined subroutines with a (;$)
+prototype, and not just to built-in functions.
+
+=item *
+
+Warnings that mention the names of lexical (C<my>) variables with
+Unicode characters in them now respect the presence or absence of the
+C<:utf8> layer on the output handle, instead of outputting UTF8
+regardless.  Also, the correct names are included in the strings passed
+to C<$SIG{__WARN__}> handlers, rather than the raw UTF8 bytes.
+
+=back
+
+=head1 Utility Changes
+
+=head3 L<h2ph>
+
+=over 4
+
+=item *
+
+L<h2ph> used to generate code of the form
+
+  unless(defined(&FOO)) {
+    sub FOO () {42;}
+  }
+
+But the subroutine is a compile-time declaration, and is hence unaffected
+by the condition.  It has now been corrected to emit a string C<eval>
+around the subroutine [perl #99368].
+
+=back
+
+=head3 L<splain>
+
+=over 4
+
+=item *
+
+F<splain> no longer emits backtraces with the first line number repeated.
+
+This:
+
+    Uncaught exception from user code:
+            Cannot fwiddle the fwuddle at -e line 1.
+     at -e line 1
+            main::baz() called at -e line 1
+            main::bar() called at -e line 1
+            main::foo() called at -e line 1
+
+has become this:
+
+    Uncaught exception from user code:
+            Cannot fwiddle the fwuddle at -e line 1.
+            main::baz() called at -e line 1
+            main::bar() called at -e line 1
+            main::foo() called at -e line 1
+
+=item *
+
+Some error messages consist of multiple lines that are listed as separate
+entries in L<perldiag>.  splain has been taught to find the separate
+entries in these cases, instead of simply failing to find the message.
+
+=back
+
+=head3 L<zipdetails>
+
+=over 4
+
+=item *
+
+This is a new utility, included as part of an
+L<IO::Compress::Base> upgrade.
+
+L<zipdetails> displays information about the internal record structure
+of the zip file.  It is not concerned with displaying any details of
+the compressed data stored in the zip file.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+F<regexp.h> has been modified for compatibility with GCC's B<-Werror>
+option, as used by some projects that include perl's header files (5.14.1).
+
+=item *
+
+C<USE_LOCALE{,_COLLATE,_CTYPE,_NUMERIC}> have been added the output of perl -V
+as they have affect the behavior of the interpreter binary (albeit
+in only a small area).
+
+=item *
+
+The code and tests for L<IPC::Open2> have been moved from F<ext/IPC-Open2>
+into F<ext/IPC-Open3>, as C<IPC::Open2::open2()> is implemented as a thin
+wrapper around C<IPC::Open3::_open3()>, and hence is very tightly coupled to
+it.
+
+=item *
+
+The magic types and magic vtables are now generated from data in a new script
+F<regen/mg_vtable.pl>, instead of being maintained by hand.  As different
+EBCDIC variants can't agree on the code point for '~', the character to code
+point conversion is done at build time by F<generate_uudmap> to a new generated
+header F<mg_data.h>.  C<PL_vtbl_bm> and C<PL_vtbl_fm> are now defined by the
+pre-processor as C<PL_vtbl_regexp>, instead of being distinct C variables.
+C<PL_vtbl_sig> has been removed.
+
+=item *
+
+Building with C<-DPERL_GLOBAL_STRUCT> works again.  This configuration is not
+generally used.
+
+=item *
+
+Perl configured with I<MAD> now correctly frees C<MADPROP> structures when
+OPs are freed.  C<MADPROP>s are now allocated with C<PerlMemShared_malloc()>
+
+=item *
+
+F<makedef.pl> has been refactored.  This should have no noticeable affect on
+any of the platforms that use it as part of their build (AIX, VMS, Win32).
+
+=item *
+
+C<useperlio> can no longer be disabled.
+
+=item *
+
+The file F<global.sym> is no longer needed, and has been removed.  It
+contained a list of all exported functions, one of the files generated by
+F<regen/embed.pl> from data in F<embed.fnc> and F<regen/opcodes>.  The code
+has been refactored so that the only user of F<global.sym>, F<makedef.pl>,
+now reads F<embed.fnc> and F<regen/opcodes> directly, removing the need to
+store the list of exported functions in an intermediate file.
+
+As F<global.sym> was never installed, this change should not be visible
+outside the build process.
+
+=item *
+
+F<pod/buildtoc>, used by the build process to build L<perltoc>, has been
+refactored and simplified.  It now contains only code to build L<perltoc>;
+the code to regenerate Makefiles has been moved to F<Porting/pod_rules.pl>.
+It's a bug if this change has any material effect on the build process.
+
+=item *
+
+F<pod/roffitall> is now built by F<pod/buildtoc>, instead of being
+shipped with the distribution.  Its list of manpages is now generated
+(and therefore current).  See also RT #103202 for an unresolved related
+issue.
+
+=item *
+
+The man page for C<XS::Typemap> is no longer installed.  C<XS::Typemap>
+is a test module which is not installed, hence installing its
+documentation makes no sense.
+
+=item *
+
+The -Dusesitecustomize and -Duserelocatableinc options now work
+together properly.
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=head3 Cygwin
+
+=over 4
+
+=item *
+
+Since version 1.7, Cygwin supports native UTF-8 paths.  If Perl is built
+under that environment, directory and filenames will be UTF-8 encoded.
+
+=item *
+
+Cygwin does not initialize all original Win32 environment variables.  See
+F<README.cygwin> for a discussion of the newly-added
+C<Cygwin::sync_winenv()> function [perl #110190] and for
+further links.
+
+=back
+
+=head3 HP-UX
+
+=over 4
+
+=item *
+
+HP-UX PA-RISC/64 now supports gcc-4.x
+
+A fix to correct the socketsize now makes the test suite pass on HP-UX
+PA-RISC for 64bitall builds. (5.14.2)
+
+=back
+
+=head3 VMS
+
+=over 4
+
+=item *
+
+Remove unnecessary includes, fix miscellaneous compiler warnings and
+close some unclosed comments on F<vms/vms.c>.
+
+=item *
+
+Remove sockadapt layer from the VMS build.
+
+=item *
+
+Explicit support for VMS versions before v7.0 and DEC C versions
+before v6.0 has been removed.
+
+=item *
+
+Since Perl 5.10.1, the home-grown C<stat> wrapper has been unable to
+distinguish between a directory name containing an underscore and an
+otherwise-identical filename containing a dot in the same position
+(e.g., t/test_pl as a directory and t/test.pl as a file).  This problem
+has been corrected.
+
+=item *
+
+The build on VMS now permits names of the resulting symbols in C code for
+Perl longer than 31 characters.  Symbols like
+C<Perl__it_was_the_best_of_times_it_was_the_worst_of_times> can now be
+created freely without causing the VMS linker to seize up.
+
+=back
+
+=head3 GNU/Hurd
+
+=over 4
+
+=item *
+
+Numerous build and test failures on GNU/Hurd have been resolved with hints
+for building DBM modules, detection of the library search path, and enabling
+of large file support.
+
+=back
+
+=head3 OpenVOS
+
+=over 4
+
+=item *
+
+Perl is now built with dynamic linking on OpenVOS, the minimum supported
+version of which is now Release 17.1.0.
+
+=back
+
+=head3 SunOS
+
+The CC workshop C++ compiler is now detected and used on systems that ship
+without cc.
+
+=head1 Internal Changes
+
+=over 4
+
+=item *
+
+The compiled representation of formats is now stored via the C<mg_ptr> of
+their C<PERL_MAGIC_fm>.  Previously it was stored in the string buffer,
+beyond C<SvLEN()>, the regular end of the string.  C<SvCOMPILED()> and
+C<SvCOMPILED_{on,off}()> now exist solely for compatibility for XS code.
+The first is always 0, the other two now no-ops. (5.14.1)
+
+=item *
+
+Some global variables have been marked C<const>, members in the interpreter
+structure have been re-ordered, and the opcodes have been re-ordered.  The
+op C<OP_AELEMFAST> has been split into C<OP_AELEMFAST> and C<OP_AELEMFAST_LEX>.
+
+=item *
+
+When empting a hash of its elements (e.g., via undef(%h), or %h=()), HvARRAY
+field is no longer temporarily zeroed.  Any destructors called on the freed
+elements see the remaining elements.  Thus, %h=() becomes more like
+C<delete $h{$_} for keys %h>.
+
+=item *
+
+Boyer-Moore compiled scalars are now PVMGs, and the Boyer-Moore tables are now
+stored via the mg_ptr of their C<PERL_MAGIC_bm>.
+Previously they were PVGVs, with the tables stored in
+the string buffer, beyond C<SvLEN()>.  This eliminates
+the last place where the core stores data beyond C<SvLEN()>.
+
+=item *
+
+Simplified logic in C<Perl_sv_magic()> introduces a small change of
+behavior for error cases involving unknown magic types.  Previously, if
+C<Perl_sv_magic()> was passed a magic type unknown to it, it would
+
+=over
+
+=item 1.
+
+Croak "Modification of a read-only value attempted" if read only
+
+=item 2.
+
+Return without error if the SV happened to already have this magic
+
+=item 3.
+
+otherwise croak "Don't know how to handle magic of type \\%o"
+
+=back
+
+Now it will always croak "Don't know how to handle magic of type \\%o", even
+on read-only values, or SVs which already have the unknown magic type.
+
+=item *
+
+The experimental C<fetch_cop_label> function has been renamed to
+C<cop_fetch_label>.
+
+=item *
+
+The C<cop_store_label> function has been added to the API, but is
+experimental.
+
+=item *
+
+F<embedvar.h> has been simplified, and one level of macro indirection for
+PL_* variables has been removed for the default (non-multiplicity)
+configuration.  PERLVAR*() macros now directly expand their arguments to
+tokens such as C<PL_defgv>, instead of expanding to C<PL_Idefgv>, with
+F<embedvar.h> defining a macro to map C<PL_Idefgv> to C<PL_defgv>.  XS code
+which has unwarranted chumminess with the implementation may need updating.
+
+=item *
+
+An API has been added to explicitly choose whether to export XSUB
+symbols.  More detail can be found in the comments for commit e64345f8.
+
+=item *
+
+The C<is_gv_magical_sv> function has been eliminated and merged with
+C<gv_fetchpvn_flags>.  It used to be called to determine whether a GV
+should be autovivified in rvalue context.  Now it has been replaced with a
+new C<GV_ADDMG> flag (not part of the API).
+
+=item *
+
+The returned code point from the function C<utf8n_to_uvuni()>
+when the input is malformed UTF-8, malformations are allowed, and
+C<utf8> warnings are off is now the Unicode REPLACEMENT CHARACTER
+whenever the malformation is such that no well-defined code point can be
+computed.  Previously the returned value was essentially garbage.  The
+only malformations that have well-defined values are a zero-length
+string (0 is the return), and overlong UTF-8 sequences.
+
+=item *
+
+Padlists are now marked C<AvREAL>; i.e., reference-counted.  They have
+always been reference-counted, but were not marked real, because F<pad.c>
+did its own clean-up, instead of using the usual clean-up code in F<sv.c>.
+That caused problems in thread cloning, so now the C<AvREAL> flag is on,
+but is turned off in F<pad.c> right before the padlist is freed (after
+F<pad.c> has done its custom freeing of the pads).
+
+=item *
+
+All C files that make up the Perl core have been converted to UTF-8.
+
+=item *
+
+These new functions have been added as part of the work on Unicode symbols:
+
+    HvNAMELEN
+    HvNAMEUTF8
+    HvENAMELEN
+    HvENAMEUTF8
+    gv_init_pv
+    gv_init_pvn
+    gv_init_pvsv
+    gv_fetchmeth_pv
+    gv_fetchmeth_pvn
+    gv_fetchmeth_sv
+    gv_fetchmeth_pv_autoload
+    gv_fetchmeth_pvn_autoload
+    gv_fetchmeth_sv_autoload
+    gv_fetchmethod_pv_flags
+    gv_fetchmethod_pvn_flags
+    gv_fetchmethod_sv_flags
+    gv_autoload_pv
+    gv_autoload_pvn
+    gv_autoload_sv
+    newGVgen_flags
+    sv_derived_from_pv
+    sv_derived_from_pvn
+    sv_derived_from_sv
+    sv_does_pv
+    sv_does_pvn
+    sv_does_sv
+    whichsig_pv
+    whichsig_pvn
+    whichsig_sv
+    newCONSTSUB_flags
+
+The gv_fetchmethod_*_flags functions, like gv_fetchmethod_flags, are
+experimental and may change in a future release.
+
+=item *
+
+The following functions were added.  These are I<not> part of the API:
+
+    GvNAMEUTF8
+    GvENAMELEN
+    GvENAME_HEK
+    CopSTASH_flags
+    CopSTASH_flags_set
+    PmopSTASH_flags
+    PmopSTASH_flags_set
+    sv_sethek
+    HEKfARG
+
+There is also a C<HEKf> macro corresponding to C<SVf>, for
+interpolating HEKs in formatted strings.
+
+=item *
+
+C<sv_catpvn_flags> takes a couple of new internal-only flags,
+C<SV_CATBYTES> and C<SV_CATUTF8>, which tell it whether the char array to
+be concatenated is UTF8.  This allows for more efficient concatenation than
+creating temporary SVs to pass to C<sv_catsv>.
+
+=item *
+
+For XS AUTOLOAD subs, $AUTOLOAD is set once more, as it was in 5.6.0.  This
+is in addition to setting C<SvPVX(cv)>, for compatibility with 5.8 to 5.14.
+See L<perlguts/Autoloading with XSUBs>.
+
+=item *
+
+Perl now checks whether the array (the linearized isa) returned by a MRO
+plugin begins with the name of the class itself, for which the array was
+created, instead of assuming that it does.  This prevents the first element
+from being skipped during method lookup.  It also means that
+C<mro::get_linear_isa> may return an array with one more element than the
+MRO plugin provided [perl #94306].
+
+=item *
+
+C<PL_curstash> is now reference-counted.
+
+=item *
+
+There are now feature bundle hints in C<PL_hints> (C<$^H>) that version
+declarations use, to avoid having to load F<feature.pm>.  One setting of
+the hint bits indicates a "custom" feature bundle, which means that the
+entries in C<%^H> still apply.  F<feature.pm> uses that.
+
+The C<HINT_FEATURE_MASK> macro is defined in F<perl.h> along with other
+hints.  Other macros for setting and testing features and bundles are in
+the new F<feature.h>.  C<FEATURE_IS_ENABLED> (which has moved to
+F<feature.h>) is no longer used throughout the codebase, but more specific
+macros, e.g., C<FEATURE_SAY_IS_ENABLED>, that are defined in F<feature.h>.
+
+=item *
+
+F<lib/feature.pm> is now a generated file, created by the new
+F<regen/feature.pl> script, which also generates F<feature.h>.
+
+=item *
+
+Tied arrays are now always C<AvREAL>.  If C<@_> or C<DB::args> is tied, it
+is reified first, to make sure this is always the case.
+
+=item *
+
+Two new functions C<utf8_to_uvchr_buf()> and C<utf8_to_uvuni_buf()> have
+been added.  These are the same as C<utf8_to_uvchr> and
+C<utf8_to_uvuni> (which are now deprecated), but take an extra parameter
+that is used to guard against reading beyond the end of the input
+string.
+See L<perlapi/utf8_to_uvchr_buf> and L<perlapi/utf8_to_uvuni_buf>.
+
+=item *
+
+The regular expression engine now does TRIE case insensitive matches
+under Unicode. This may change the output of C<< use re 'debug'; >>,
+and will speed up various things.
+
+=item *
+
+There is a new C<wrap_op_checker()> function, which provides a thread-safe
+alternative to writing to C<PL_check> directly.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=head2 Array and hash
+
+=over
+
+=item *
+
+A bug has been fixed that would cause a "Use of freed value in iteration"
+error if the next two hash elements that would be iterated over are
+deleted [perl #85026]. (5.14.1)
+
+=item *
+
+Deleting the current hash iterator (the hash element that would be returned
+by the next call to C<each>) in void context used not to free it
+[perl #85026].
+
+=item *
+
+Deletion of methods via C<delete $Class::{method}> syntax used to update
+method caches if called in void context, but not scalar or list context.
+
+=item *
+
+When hash elements are deleted in void context, the internal hash entry is
+now freed before the value is freed, to prevent destructors called by that
+latter freeing from seeing the hash in an inconsistent state.  It was
+possible to cause double-frees if the destructor freed the hash itself
+[perl #100340].
+
+=item *
+
+A C<keys> optimization in Perl 5.12.0 to make it faster on empty hashes
+caused C<each> not to reset the iterator if called after the last element
+was deleted.
+
+=item *
+
+Freeing deeply nested hashes no longer crashes [perl #44225].
+
+=item *
+
+It is possible from XS code to create hashes with elements that have no
+values.  The hash element and slice operators used to crash
+when handling these in lvalue context.  They now
+produce a "Modification of non-creatable hash value attempted" error
+message.
+
+=item *
+
+If list assignment to a hash or array triggered destructors that freed the
+hash or array itself, a crash would ensue.  This is no longer the case
+[perl #107440].
+
+=item *
+
+It used to be possible to free the typeglob of a localized array or hash
+(e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit.
+
+=item *
+
+Some core bugs affecting L<Hash::Util> have been fixed: locking a hash
+element that is a glob copy no longer causes the next assignment to it to
+corrupt the glob (5.14.2), and unlocking a hash element that holds a
+copy-on-write scalar no longer causes modifications to that scalar to
+modify other scalars that were sharing the same string buffer.
+
+=back
+
+=head2 C API fixes
+
+=over
+
+=item *
+
+The C<newHVhv> XS function now works on tied hashes, instead of crashing or
+returning an empty hash.
+
+=item *
+
+The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs,
+such as those created by:
+
+  $hash{elem} = *foo;
+  Hash::Util::lock_value %hash, 'elem';
+
+It used to return true.
+
+=item *
+
+The C<SvPVutf8> C function no longer tries to modify its argument,
+resulting in errors [perl #108994].
+
+=item *
+
+C<SvPVutf8> now works properly with magical variables.
+
+=item *
+
+C<SvPVbyte> now works properly non-PVs.
+
+=item *
+
+When presented with malformed UTF-8 input, the XS-callable functions
+C<is_utf8_string()>, C<is_utf8_string_loc()>, and
+C<is_utf8_string_loclen()> could read beyond the end of the input
+string by up to 12 bytes.  This no longer happens.  [perl #32080].
+However, currently, C<is_utf8_char()> still has this defect, see
+L</is_utf8_char()> above.
+
+=item *
+
+The C-level C<pregcomp> function could become confused about whether the
+pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise
+magical scalar [perl #101940].
+
+=back
+
+=head2 Compile-time hints
+
+=over
+
+=item *
+
+Tying C<%^H> no longer causes perl to crash or ignore the contents of
+C<%^H> when entering a compilation scope [perl #106282].
+
+=item *
+
+C<eval $string> and C<require> used not to
+localize C<%^H> during compilation if it
+was empty at the time the C<eval> call itself was compiled.  This could
+lead to scary side effects, like C<use re "/m"> enabling other flags that
+the surrounding code was trying to enable for its caller [perl #68750].
+
+=item *
+
+C<eval $string> and C<require> no longer localize hints (C<$^H> and C<%^H>)
+at run time, but only during compilation of the $string or required file.
+This makes C<BEGIN { $^H{foo}=7 }> equivalent to
+C<BEGIN { eval '$^H{foo}=7' }> [perl #70151].
+
+=item *
+
+Creating a BEGIN block from XS code (via C<newXS> or C<newATTRSUB>) would,
+on completion, make the hints of the current compiling code the current
+hints.  This could cause warnings to occur in a non-warning scope.
+
+=back
+
+=head2 Copy-on-write scalars
+
+Copy-on-write or shared hash key scalars
+were introduced in 5.8.0, but most Perl code
+did not encounter them (they were used mostly internally).  Perl
+5.10.0 extended them, such that assigning C<__PACKAGE__> or a
+hash key to a scalar would make it copy-on-write.  Several parts
+of Perl were not updated to account for them, but have now been fixed.
+
+=over
+
+=item *
+
+C<utf8::decode> had a nasty bug that would modify copy-on-write scalars'
+string buffers in place (i.e., skipping the copy).  This could result in
+hashes having two elements with the same key [perl #91834]. (5.14.2)
+
+=item *
+
+Lvalue subroutines were not allowing COW scalars to be returned.  This was
+fixed for lvalue scalar context in Perl 5.12.3 and 5.14.0, but list context
+was not fixed until this release.
+
+=item *
+
+Elements of restricted hashes (see the L<fields> pragma) containing
+copy-on-write values couldn't be deleted, nor could such hashes be cleared
+(C<%hash = ()>). (5.14.2)
+
+=item *
+
+Localizing a tied variable used to make it read-only if it contained a
+copy-on-write string. (5.14.2)
+
+=item *
+
+Assigning a copy-on-write string to a stash
+element no longer causes a double free.  Regardless of this change, the
+results of such assignments are still undefined.
+
+=item *
+
+Assigning a copy-on-write string to a tied variable no longer stops that
+variable from being tied if it happens to be a PVMG or PVLV internally.
+
+=item *
+
+Doing a substitution on a tied variable returning a copy-on-write
+scalar used to cause an assertion failure or an "Attempt to free
+nonexistent shared string" warning.
+
+=item *
+
+This one is a regression from 5.12: In 5.14.0, the bitwise assignment
+operators C<|=>, C<^=> and C<&=> started leaving the left-hand side
+undefined if it happened to be a copy-on-write string [perl #108480].
+
+=item *
+
+L<Storable>, L<Devel::Peek> and L<PerlIO::scalar> had similar problems.
+See L</Updated Modules and Pragmata>, above.
+
+=back
+
+=head2 The debugger
+
+=over
+
+=item *
+
+F<dumpvar.pl>, and therefore the C<x> command in the debugger, have been
+fixed to handle objects blessed into classes whose names contain "=".  The
+contents of such objects used not to be dumped [perl #101814].
+
+=item *
+
+The "R" command for restarting a debugger session has been fixed to work on
+Windows, or any other system lacking a C<POSIX::_SC_OPEN_MAX> constant
+[perl #87740].
+
+=item *
+
+The C<#line 42 foo> directive used not to update the arrays of lines used
+by the debugger if it occurred in a string eval.  This was partially fixed
+in 5.14, but it worked only for a single C<#line 42 foo> in each eval.  Now
+it works for multiple.
+
+=item *
+
+When subroutine calls are intercepted by the debugger, the name of the
+subroutine or a reference to it is stored in C<$DB::sub>, for the debugger
+to access.  Sometimes (such as C<$foo = *bar; undef *bar; &$foo>)
+C<$DB::sub> would be set to a name that could not be used to find the
+subroutine, and so the debugger's attempt to call it would fail.  Now the
+check to see whether a reference is needed is more robust, so those
+problems should not happen anymore [rt.cpan.org #69862].
+
+=item *
+
+Every subroutine has a filename associated with it that the debugger uses.
+The one associated with constant subroutines used to be misallocated when
+cloned under threads.  Consequently, debugging threaded applications could
+result in memory corruption [perl #96126].
+
+=back
+
+=head2 Dereferencing operators
+
+=over
+
+=item *
+
+C<defined(${"..."})>, C<defined(*{"..."})>, etc., used to
+return true for most, but not all built-in variables, if
+they had not been used yet.  This bug affected C<${^GLOBAL_PHASE}> and
+C<${^UTF8CACHE}>, among others.  It also used to return false if the
+package name was given as well (C<${"::!"}>) [perl #97978, #97492].
+
+=item *
+
+Perl 5.10.0 introduced a similar bug: C<defined(*{"foo"})> where "foo"
+represents the name of a built-in global variable used to return false if
+the variable had never been used before, but only on the I<first> call.
+This, too, has been fixed.
+
+=item *
+
+Since 5.6.0, C<*{ ... }> has been inconsistent in how it treats undefined
+values.  It would die in strict mode or lvalue context for most undefined
+values, but would be treated as the empty string (with a warning) for the
+specific scalar return by C<undef()> (C<&PL_sv_undef> internally).  This
+has been corrected.  C<undef()> is now treated like other undefined
+scalars, as in Perl 5.005.
+
+=back
+
+=head2 Filehandle, last-accessed
+
+Perl has an internal variable that stores the last filehandle to be
+accessed.  It is used by C<$.> and by C<tell> and C<eof> without
+arguments.
+
+=over
+
+=item *
+
+It used to be possible to set this internal variable to a glob copy and
+then modify that glob copy to be something other than a glob, and still
+have the last-accessed filehandle associated with the variable after
+assigning a glob to it again:
+
+    my $foo = *STDOUT;  # $foo is a glob copy
+    <$foo>;             # $foo is now the last-accessed handle
+    $foo = 3;           # no longer a glob
+    $foo = *STDERR;     # still the last-accessed handle
+
+Now the C<$foo = 3> assignment unsets that internal variable, so there
+is no last-accessed filehandle, just as if C<< <$foo> >> had never
+happened.
+
+This also prevents some unrelated handle from becoming the last-accessed
+handle if $foo falls out of scope and the same internal SV gets used for
+another handle [perl #97988].
+
+=item *
+
+A regression in 5.14 caused these statements not to set that internal
+variable:
+
+    my $fh = *STDOUT;
+    tell $fh;
+    eof  $fh;
+    seek $fh, 0,0;
+    tell     *$fh;
+    eof      *$fh;
+    seek     *$fh, 0,0;
+    readline *$fh;
+
+This is now fixed, but C<tell *{ *$fh }> still has the problem, and it
+is not clear how to fix it [perl #106536].
+
+=back
+
+=head2 Filetests and C<stat>
+
+The term "filetests" refers to the operators that consist of a hyphen
+followed by a single letter: C<-r>, C<-x>, C<-M>, etc.  The term "stacked"
+when applied to filetests means followed by another filetest operator
+sharing the same operand, as in C<-r -x -w $fooo>.
+
+=over
+
+=item *
+
+C<stat> produces more consistent warnings.  It no longer warns for "_"
+[perl #71002] and no longer skips the warning at times for other unopened
+handles.  It no longer warns about an unopened handle when the operating
+system's C<fstat> function fails.
+
+=item *
+
+C<stat> would sometimes return negative numbers for large inode numbers,
+because it was using the wrong internal C type. [perl #84590]
+
+=item *
+
+C<lstat> is documented to fall back to C<stat> (with a warning) when given
+a filehandle.  When passed an IO reference, it was actually doing the
+equivalent of S<C<stat _>> and ignoring the handle.
+
+=item *
+
+C<-T _> with no preceding C<stat> used to produce a
+confusing "uninitialized" warning, even though there
+is no visible uninitialized value to speak of.
+
+=item *
+
+C<-T>, C<-B>, C<-l> and C<-t> now work
+when stacked with other filetest operators
+[perl #77388].
+
+=item *
+
+In 5.14.0, filetest ops (C<-r>, C<-x>, etc.) started calling FETCH on a
+tied argument belonging to the previous argument to a list operator, if
+called with a bareword argument or no argument at all.  This has been
+fixed, so C<push @foo, $tied, -r> no longer calls FETCH on C<$tied>.
+
+=item *
+
+In Perl 5.6, C<-l> followed by anything other than a bareword would treat
+its argument as a file name.  That was changed in 5.8 for glob references
+(C<\*foo>), but not for globs themselves (C<*foo>).  C<-l> started
+returning C<undef> for glob references without setting the last
+stat buffer that the "_" handle uses, but only if warnings
+were turned on.  With warnings off, it was the same as 5.6.
+In other words, it was simply buggy and inconsistent.  Now the 5.6
+behavior has been restored.
+
+=item *
+
+C<-l> followed by a bareword no longer "eats" the previous argument to
+the list operator in whose argument list it resides.  Hence,
+C<print "bar", -l foo> now actually prints "bar", because C<-l>
+on longer eats it.
+
+=item *
+
+Perl keeps several internal variables to keep track of the last stat
+buffer, from which file(handle) it originated, what type it was, and
+whether the last stat succeeded.
+
+There were various cases where these could get out of synch, resulting in
+inconsistent or erratic behavior in edge cases (every mention of C<-T>
+applies to C<-B> as well):
+
+=over
+
+=item *
+
+C<-T I<HANDLE>>, even though it does a C<stat>, was not resetting the last
+stat type, so an C<lstat _> following it would merrily return the wrong
+results.  Also, it was not setting the success status.
+
+=item *
+
+Freeing the handle last used by C<stat> or a filetest could result in
+S<C<-T _>> using an unrelated handle.
+
+=item *
+
+C<stat> with an IO reference would not reset the stat type or record the
+filehandle for S<C<-T _>> to use.
+
+=item *
+
+Fatal warnings could cause the stat buffer not to be reset
+for a filetest operator on an unopened filehandle or C<-l> on any handle.
+Fatal warnings also stopped C<-T> from setting C<$!>.
+
+=item *
+
+When the last stat was on an unreadable file, C<-T _> is supposed to
+return C<undef>, leaving the last stat buffer unchanged.  But it was
+setting the stat type, causing C<lstat _> to stop working.
+
+=item *
+
+C<-T I<FILENAME>> was not resetting the internal stat buffers for
+unreadable files.
+
+=back
+
+These have all been fixed.
+
+=back
+
+=head2 Formats
+
+=over
+
+=item *
+
+Several edge cases have been fixed with formats and C<formline>;
+in particular, where the format itself is potentially variable (such as
+with ties and overloading), and where the format and data differ in their
+encoding.  In both these cases, it used to possible for the output to be
+corrupted [perl #91032].
+
+=item *
+
+C<formline> no longer converts its argument into a string in-place.  So
+passing a reference to C<formline> no longer destroys the reference
+[perl #79532].
+
+=item *
+
+Assignment to C<$^A> (the format output accumulator) now recalculates
+the number of lines output.
+
+=back
+
+=head2 C<given> and C<when>
+
+=over
+
+=item *
+
+C<given> was not scoping its implicit $_ properly, resulting in memory
+leaks or "Variable is not available" warnings [perl #94682].
+
+=item *
+
+C<given> was not calling set-magic on the implicit lexical C<$_> that it
+uses.  This meant, for example, that C<pos> would be remembered from one
+execution of the same C<given> block to the next, even if the input were a
+different variable [perl #84526].
+
+=item *
+
+C<when> blocks are now capable of returning variables declared inside the
+enclosing C<given> block [perl #93548].
+
+=back
+
+=head2 The C<glob> operator
+
+=over
+
+=item *
+
+On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form)
+use L<File::Glob> underneath.  L<File::Glob> splits the pattern into words,
+before feeding each word to its C<bsd_glob> function.
+
+There were several inconsistencies in the way the split was done.  Now
+quotation marks (' and ") are always treated as shell-style word delimiters
+(that allow whitespace as part of a word) and backslashes are always
+preserved, unless they exist to escape quotation marks.  Before, those
+would only sometimes be the case, depending on whether the pattern
+contained whitespace.  Also, escaped whitespace at the end of the pattern
+is no longer stripped [perl #40470].
+
+=item *
+
+C<CORE::glob> now works as a way to call the default globbing function.  It
+used to respect overrides, despite the C<CORE::> prefix.
+
+=item *
+
+Under miniperl (used to configure modules when perl itself is built),
+C<glob> now clears %ENV before calling csh, since the latter croaks on some
+systems if it does not like the contents of the LS_COLORS environment
+variable [perl #98662].
+
+=back
+
+=head2 Lvalue subroutines
+
+=over
+
+=item *
+
+Explicit return now returns the actual argument passed to return, instead
+of copying it [perl #72724, #72706].
+
+=item *
+
+Lvalue subroutines used to enforce lvalue syntax (i.e., whatever can go on
+the left-hand side of C<=>) for the last statement and the arguments to
+return.  Since lvalue subroutines are not always called in lvalue context,
+this restriction has been lifted.
+
+=item *
+
+Lvalue subroutines are less restrictive about what values can be returned.
+It used to croak on values returned by C<shift> and C<delete> and from
+other subroutines, but no longer does so [perl #71172].
+
+=item *
+
+Empty lvalue subroutines (C<sub :lvalue {}>) used to return C<@_> in list
+context.  All subroutines used to do this, but regular subs were fixed in
+Perl 5.8.2.  Now lvalue subroutines have been likewise fixed.
+
+=item *
+
+Autovivification now works on values returned from lvalue subroutines
+[perl #7946], as does returning C<keys> in lvalue context.
+
+=item *
+
+Lvalue subroutines used to copy their return values in rvalue context.  Not
+only was this a waste of CPU cycles, but it also caused bugs.  A C<($)>
+prototype would cause an lvalue sub to copy its return value [perl #51408],
+and C<while(lvalue_sub() =~ m/.../g) { ... }> would loop endlessly
+[perl #78680].
+
+=item *
+
+When called in potential lvalue context
+(e.g., subroutine arguments or a list
+passed to C<for>), lvalue subroutines used to copy
+any read-only value that was returned.  E.g., C< sub :lvalue { $] } >
+would not return C<$]>, but a copy of it.
+
+=item *
+
+When called in potential lvalue context, an lvalue subroutine returning
+arrays or hashes used to bind the arrays or hashes to scalar variables,
+resulting in bugs.  This was fixed in 5.14.0 if an array were the first
+thing returned from the subroutine (but not for C<$scalar, @array> or
+hashes being returned).  Now a more general fix has been applied
+[perl #23790].
+
+=item *
+
+Method calls whose arguments were all surrounded with C<my()> or C<our()>
+(as in C<< $object->method(my($a,$b)) >>) used to force lvalue context on
+the subroutine.  This would prevent lvalue methods from returning certain
+values.
+
+=item *
+
+Lvalue sub calls that are not determined to be such at compile time
+(C<&$name> or &{"name"}) are no longer exempt from strict refs if they
+occur in the last statement of an lvalue subroutine [perl #102486].
+
+=item *
+
+Sub calls whose subs are not visible at compile time, if
+they occurred in the last statement of an lvalue subroutine,
+would reject non-lvalue subroutines and die with "Can't modify non-lvalue
+subroutine call" [perl #102486].
+
+Non-lvalue sub calls whose subs I<are> visible at compile time exhibited
+the opposite bug.  If the call occurred in the last statement of an lvalue
+subroutine, there would be no error when the lvalue sub was called in
+lvalue context.  Perl would blindly assign to the temporary value returned
+by the non-lvalue subroutine.
+
+=item *
+
+C<AUTOLOAD> routines used to take precedence over the actual sub being
+called (i.e., when autoloading wasn't needed), for sub calls in lvalue or
+potential lvalue context, if the subroutine was not visible at compile
+time.
+
+=item *
+
+Applying the C<:lvalue> attribute to an XSUB or to an aliased subroutine
+stub with C<< sub foo :lvalue; >> syntax stopped working in Perl 5.12.
+This has been fixed.
+
+=item *
+
+Applying the :lvalue attribute to subroutine that is already defined does
+not work properly, as the attribute changes the way the sub is compiled.
+Hence, Perl 5.12 began warning when an attempt is made to apply the
+attribute to an already defined sub.  In such cases, the attribute is
+discarded.
+
+But the change in 5.12 missed the case where custom attributes are also
+present: that case still silently and ineffectively applied the attribute.
+That omission has now been corrected.  C<sub foo :lvalue :Whatever> (when
+C<foo> is already defined) now warns about the :lvalue attribute, and does
+not apply it.
+
+=item *
+
+A bug affecting lvalue context propagation through nested lvalue subroutine
+calls has been fixed.  Previously, returning a value in nested rvalue
+context would be treated as lvalue context by the inner subroutine call,
+resulting in some values (such as read-only values) being rejected.
+
+=back
+
+=head2 Overloading
+
+=over
+
+=item *
+
+Arithmetic assignment (C<$left += $right>) involving overloaded objects
+that rely on the 'nomethod' override no longer segfault when the left
+operand is not overloaded.
+
+=item *
+
+Errors that occur when methods cannot be found during overloading now
+mention the correct package name, as they did in 5.8.x, instead of
+erroneously mentioning the "overload" package, as they have since 5.10.0.
+
+=item *
+
+Undefining C<%overload::> no longer causes a crash.
+
+=back
+
+=head2 Prototypes of built-in keywords
+
+=over
+
+=item *
+
+The C<prototype> function no longer dies for the C<__FILE__>, C<__LINE__>
+and C<__PACKAGE__> directives.  It now returns an empty-string prototype
+for them, because they are syntactically indistinguishable from nullary
+functions like C<time>.
+
+=item *
+
+C<prototype> now returns C<undef> for all overridable infix operators,
+such as C<eq>, which are not callable in any way resembling functions.
+It used to return incorrect prototypes for some and die for others
+[perl #94984].
+
+=item *
+
+The prototypes of several built-in functions--C<getprotobynumber>, C<lock>,
+C<not> and C<select>--have been corrected, or at least are now closer to
+reality than before.
+
+=back
+
+=head2 Regular expressions
+
+=for comment Is it possible to merge some of these items?
+
+=over 4
+
+=item *
+
+C</[[:ascii:]]/> and C</[[:blank:]]/> now use locale rules under
+C<use locale> when the platform supports that.  Previously, they used
+the platform's native character set.
+
+=item *
+
+C<m/[[:ascii:]]/i> and C</\p{ASCII}/i> now match identically (when not
+under a differing locale).  This fixes a regression introduced in 5.14
+in which the first expression could match characters outside of ASCII,
+such as the KELVIN SIGN.
+
+=item *
+
+C</.*/g> would sometimes refuse to match at the end of a string that ends
+with "\n".  This has been fixed [perl #109206].
+
+=item *
+
+Starting with 5.12.0, Perl used to get its internal bookkeeping muddled up
+after assigning C<${ qr// }> to a hash element and locking it with
+L<Hash::Util>.  This could result in double frees, crashes, or erratic
+behavior.
+
+=item *
+
+The new (in 5.14.0) regular expression modifier C</a> when repeated like
+C</aa> forbids the characters outside the ASCII range that match
+characters inside that range from matching under C</i>.  This did not
+work under some circumstances, all involving alternation, such as:
+
+ "\N{KELVIN SIGN}" =~ /k|foo/iaa;
+
+succeeded inappropriately.  This is now fixed.
+
+=item *
+
+5.14.0 introduced some memory leaks in regular expression character
+classes such as C<[\w\s]>, which have now been fixed. (5.14.1)
+
+=item *
+
+An edge case in regular expression matching could potentially loop.
+This happened only under C</i> in bracketed character classes that have
+characters with multi-character folds, and the target string to match
+against includes the first portion of the fold, followed by another
+character that has a multi-character fold that begins with the remaining
+portion of the fold, plus some more.
+
+ "s\N{U+DF}" =~ /[\x{DF}foo]/i
+
+is one such case.  C<\xDF> folds to C<"ss">. (5.14.1)
+
+=item *
+
+A few characters in regular expression pattern matches did not
+match correctly in some circumstances, all involving C</i>.  The
+affected characters are:
+COMBINING GREEK YPOGEGRAMMENI,
+GREEK CAPITAL LETTER IOTA,
+GREEK CAPITAL LETTER UPSILON,
+GREEK PROSGEGRAMMENI,
+GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA,
+GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
+GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA,
+GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
+LATIN SMALL LETTER LONG S,
+LATIN SMALL LIGATURE LONG S T,
+and
+LATIN SMALL LIGATURE ST.
+
+=item *
+
+A memory leak regression in regular expression compilation
+under threading has been fixed.
+
+=item *
+
+A regression introduced in 5.14.0 has
+been fixed.  This involved an inverted
+bracketed character class in a regular expression that consisted solely
+of a Unicode property.  That property wasn't getting inverted outside the
+Latin1 range.
+
+=item *
+
+Three problematic Unicode characters now work better in regex pattern matching under C</i>.
+
+In the past, three Unicode characters:
+LATIN SMALL LETTER SHARP S,
+GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS,
+and
+GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS,
+along with the sequences that they fold to
+(including "ss" for LATIN SMALL LETTER SHARP S),
+did not properly match under C</i>.  5.14.0 fixed some of these cases,
+but introduced others, including a panic when one of the characters or
+sequences was used in the C<(?(DEFINE)> regular expression predicate.
+The known bugs that were introduced in 5.14 have now been fixed; as well
+as some other edge cases that have never worked until now.  These all
+involve using the characters and sequences outside bracketed character
+classes under C</i>.  This closes [perl #98546].
+
+There remain known problems when using certain characters with
+multi-character folds inside bracketed character classes, including such
+constructs as C<qr/[\N{LATIN SMALL LETTER SHARP}a-z]/i>.  These
+remaining bugs are addressed in [perl #89774].
+
+=item *
+
+RT #78266: The regex engine has been leaking memory when accessing
+named captures that weren't matched as part of a regex ever since 5.10
+when they were introduced; e.g., this would consume over a hundred MB of
+memory:
+
+    for (1..10_000_000) {
+        if ("foo" =~ /(foo|(?<capture>bar))?/) {
+            my $capture = $+{capture}
+        }
+    }
+    system "ps -o rss $$"'
+
+=item *
+
+In 5.14, C</[[:lower:]]/i> and C</[[:upper:]]/i> no longer matched the
+opposite case.  This has been fixed [perl #101970].
+
+=item *
+
+A regular expression match with an overloaded object on the right-hand side
+would sometimes stringify the object too many times.
+
+=item *
+
+A regression has been fixed that was introduced in 5.14, in C</i>
+regular expression matching, in which a match improperly fails if the
+pattern is in UTF-8, the target string is not, and a Latin-1 character
+precedes a character in the string that should match the pattern.
+[perl #101710]
+
+=item *
+
+In case-insensitive regular expression pattern matching, no longer on
+UTF-8 encoded strings does the scan for the start of match look only at
+the first possible position.  This caused matches such as
+C<"f\x{FB00}" =~ /ff/i> to fail.
+
+=item *
+
+The regexp optimizer no longer crashes on debugging builds when merging
+fixed-string nodes with inconvenient contents.
+
+=item *
+
+A panic involving the combination of the regular expression modifiers
+C</aa> and the C<\b> escape sequence introduced in 5.14.0 has been
+fixed [perl #95964]. (5.14.2)
+
+=item *
+
+The combination of the regular expression modifiers C</aa> and the C<\b>
+and C<\B> escape sequences did not work properly on UTF-8 encoded
+strings.  All non-ASCII characters under C</aa> should be treated as
+non-word characters, but what was happening was that Unicode rules were
+used to determine wordness/non-wordness for non-ASCII characters.  This
+is now fixed [perl #95968].
+
+=item *
+
+C<< (?foo: ...) >> no longer loses passed in character set.
+
+=item *
+
+The trie optimization used to have problems with alternations containing
+an empty C<(?:)>, causing C<< "x" =~ /\A(?>(?:(?:)A|B|C?x))\z/ >> not to
+match, whereas it should [perl #111842].
+
+=item *
+
+Use of lexical (C<my>) variables in code blocks embedded in regular
+expressions will no longer result in memory corruption or crashes.
+
+Nevertheless, these code blocks are still experimental, as there are still
+problems with the wrong variables being closed over (in loops for instance)
+and with abnormal exiting (e.g., C<die>) causing memory corruption.
+
+=item *
+
+The C<\h>, C<\H>, C<\v> and C<\V> regular expression metacharacters used to
+cause a panic error message when trying to match at the end of the
+string [perl #96354].
+
+=item *
+
+The abbreviations for four C1 control characters C<MW> C<PM>, C<RI>, and
+C<ST> were previously unrecognized by C<\N{}>, vianame(), and
+string_vianame().
+
+=item *
+
+Mentioning a variable named "&" other than C<$&> (i.e., C<@&> or C<%&>) no
+longer stops C<$&> from working.  The same applies to variables named "'"
+and "`" [perl #24237].
+
+=item *
+
+Creating a C<UNIVERSAL::AUTOLOAD> sub no longer stops C<%+>, C<%-> and
+C<%!> from working some of the time [perl #105024].
+
+=back
+
+=head2 Smartmatching
+
+=over
+
+=item *
+
+C<~~> now correctly handles the precedence of Any~~Object, and is not tricked
+by an overloaded object on the left-hand side.
+
+=item *
+
+In Perl 5.14.0, C<$tainted ~~ @array> stopped working properly.  Sometimes
+it would erroneously fail (when C<$tainted> contained a string that occurs
+in the array I<after> the first element) or erroneously succeed (when
+C<undef> occurred after the first element) [perl #93590].
+
+=back
+
+=head2 The C<sort> operator
+
+=over
+
+=item *
+
+C<sort> was not treating C<sub {}> and C<sub {()}> as equivalent when
+such a sub was provided as the comparison routine.  It used to croak on
+C<sub {()}>.
+
+=item *
+
+C<sort> now works once more with custom sort routines that are XSUBs.  It
+stopped working in 5.10.0.
+
+=item *
+
+C<sort> with a constant for a custom sort routine, although it produces
+unsorted results, no longer crashes.  It started crashing in 5.10.0.
+
+=item *
+
+Warnings emitted by C<sort> when a custom comparison routine returns a
+non-numeric value now contain "in sort" and show the line number of the
+C<sort> operator, rather than the last line of the comparison routine.  The
+warnings also now occur only if warnings are enabled in the scope where
+C<sort> occurs.  Previously the warnings would occur if enabled in the
+comparison routine's scope.
+
+=item *
+
+C<< sort { $a <=> $b } >>, which is optimized internally, now produces
+"uninitialized" warnings for NaNs (not-a-number values), since C<< <=> >>
+returns C<undef> for those.  This brings it in line with
+S<C<< sort { 1; $a <=> $b } >>> and other more complex cases, which are not
+optimized [perl #94390].
+
+=back
+
+=head2 The C<substr> operator
+
+=over
+
+=item *
+
+Tied (and otherwise magical) variables are no longer exempt from the
+"Attempt to use reference as lvalue in substr" warning.
+
+=item *
+
+That warning now occurs when the returned lvalue is assigned to, not
+when C<substr> itself is called.  This makes a difference only if the
+return value of C<substr> is referenced and later assigned to.
+
+=item *
+
+Passing a substring of a read-only value or a typeglob to a function
+(potential lvalue context) no longer causes an immediate "Can't coerce"
+or "Modification of a read-only value" error.  That error occurs only 
+if the passed value is assigned to.
+
+The same thing happens with the "substr outside of string" error.  If
+the lvalue is only read from, not written to, it is now just a warning, as
+with rvalue C<substr>.
+
+=item *
+
+C<substr> assignments no longer call FETCH twice if the first argument
+is a tied variable, just once.
+
+=back
+
+=head2 Support for embedded nulls
+
+Some parts of Perl did not work correctly with nulls (C<chr 0>) embedded in
+strings.  That meant that, for instance, C<< $m = "a\0b"; foo->$m >> would
+call the "a" method, instead of the actual method name contained in $m.
+These parts of perl have been fixed to support nulls:
+
+=over
+
+=item *
+
+Method names
+
+=item *
+
+Typeglob names (including filehandle and subroutine names)
+
+=item *
+
+Package names, including the return value of C<ref()>
+
+=item *
+
+Typeglob elements (C<*foo{"THING\0stuff"}>)
+
+=item *
+
+Signal names
+
+=item *
+
+Various warnings and error messages that mention variable names or values,
+methods, etc.
+
+=back
+
+One side effect of these changes is that blessing into "\0" no longer
+causes C<ref()> to return false.
+
+=head2 Threading bugs
+
+=over
+
+=item *
+
+Typeglobs returned from threads are no longer cloned if the parent thread
+already has a glob with the same name.  This means that returned
+subroutines will now assign to the right package variables [perl #107366].
+
+=item *
+
+Some cases of threads crashing due to memory allocation during cloning have
+been fixed [perl #90006].
+
+=item *
+
+Thread joining would sometimes emit "Attempt to free unreferenced scalar"
+warnings if C<caller> had been used from the C<DB> package before thread
+creation [perl #98092].
+
+=item *
+
+Locking a subroutine (via C<lock &sub>) is no longer a compile-time error
+for regular subs.  For lvalue subroutines, it no longer tries to return the
+sub as a scalar, resulting in strange side effects like C<ref \$_>
+returning "CODE" in some instances.
+
+C<lock &sub> is now a run-time error if L<threads::shared> is loaded (a
+no-op otherwise), but that may be rectified in a future version.
+
+=back
+
+=head2 Tied variables
+
+=over
+
+=item *
+
+Various cases in which FETCH was being ignored or called too many times
+have been fixed:
+
+=over
+
+=item *
+
+C<PerlIO::get_layers> [perl #97956]
+
+=item *
+
+C<$tied =~ y/a/b/>, C<chop $tied> and C<chomp $tied> when $tied holds a
+reference.
+
+=item *
+
+When calling C<local $_> [perl #105912]
+
+=item *
+
+Four-argument C<select>
+
+=item *
+
+A tied buffer passed to C<sysread>
+
+=item *
+
+C<< $tied .= <> >>
+
+=item *
+
+Three-argument C<open>, the third being a tied file handle
+(as in C<< open $fh, ">&", $tied >>)
+
+=item *
+
+C<sort> with a reference to a tied glob for the comparison routine.
+
+=item *
+
+C<..> and C<...> in list context [perl #53554].
+
+=item *
+
+C<${$tied}>, C<@{$tied}>, C<%{$tied}> and C<*{$tied}> where the tied
+variable returns a string (C<&{}> was unaffected)
+
+=item *
+
+C<defined ${ $tied_variable }>
+
+=item *
+
+Various functions that take a filehandle argument in rvalue context
+(C<close>, C<readline>, etc.) [perl #97482]
+
+=item *
+
+Some cases of dereferencing a complex expression, such as
+C<${ (), $tied } = 1>, used to call C<FETCH> multiple times, but now call
+it once.
+
+=item *
+
+C<$tied-E<gt>method> where $tied returns a package name--even resulting in
+a failure to call the method, due to memory corruption
+
+=item *
+
+Assignments like C<*$tied = \&{"..."}> and C<*glob = $tied>
+
+=item *
+
+C<chdir>, C<chmod>, C<chown>, C<utime>, C<truncate>, C<stat>, C<lstat> and
+the filetest ops (C<-r>, C<-x>, etc.)
+
+=back
+
+=item *
+
+C<caller> sets C<@DB::args> to the subroutine arguments when called from
+the DB package.  It used to crash when doing so if C<@DB::args> happened to
+be tied.  Now it croaks instead.
+
+=item *
+
+Tying an element of %ENV or C<%^H> and then deleting that element would
+result in a call to the tie object's DELETE method, even though tying the
+element itself is supposed to be equivalent to tying a scalar (the element
+is, of course, a scalar) [perl #67490].
+
+=item *
+
+When Perl autovivifies an element of a tied array or hash (which entails
+calling STORE with a new reference), it now calls FETCH immediately after
+the STORE, instead of assuming that FETCH would have returned the same
+reference.  This can make it easier to implement tied objects [perl #35865, #43011].
+
+=item *
+
+Four-argument C<select> no longer produces its "Non-string passed as
+bitmask" warning on tied or tainted variables that are strings.
+
+=item *
+
+Localizing a tied scalar that returns a typeglob no longer stops it from
+being tied till the end of the scope.
+
+=item *
+
+Attempting to C<goto> out of a tied handle method used to cause memory
+corruption or crashes.  Now it produces an error message instead
+[perl #8611].
+
+=item *
+
+A bug has been fixed that occurs when a tied variable is used as a
+subroutine reference:  if the last thing assigned to or returned from the
+variable was a reference or typeglob, the C<\&$tied> could either crash or
+return the wrong subroutine.  The reference case is a regression introduced
+in Perl 5.10.0.  For typeglobs, it has probably never worked till now.
+
+=back
+
+=head2 Version objects and vstrings
+
+=over
+
+=item *
+
+The bitwise complement operator (and possibly other operators, too) when
+passed a vstring would leave vstring magic attached to the return value,
+even though the string had changed.  This meant that
+C<< version->new(~v1.2.3) >> would create a version looking like "v1.2.3"
+even though the string passed to C<< version->new >> was actually
+"\376\375\374".  This also caused L<B::Deparse> to deparse C<~v1.2.3>
+incorrectly, without the C<~> [perl #29070].
+
+=item *
+
+Assigning a vstring to a magic (e.g., tied, C<$!>) variable and then
+assigning something else used to blow away all magic.  This meant that
+tied variables would come undone, C<$!> would stop getting updated on
+failed system calls, C<$|> would stop setting autoflush, and other
+mischief would take place.  This has been fixed.
+
+=item *
+
+C<< version->new("version") >> and C<printf "%vd", "version"> no longer
+crash [perl #102586].
+
+=item *
+
+Version comparisons, such as those that happen implicitly with C<use
+v5.43>, no longer cause locale settings to change [perl #105784].
+
+=item *
+
+Version objects no longer cause memory leaks in boolean context
+[perl #109762].
+
+=back
+
+=head2 Warnings, redefinition
+
+=over
+
+=item *
+
+Subroutines from the C<autouse> namespace are once more exempt from
+redefinition warnings.  This used to work in 5.005, but was broken in
+5.6 for most subroutines.  For subs created via XS that redefine
+subroutines from the C<autouse> package, this stopped working in 5.10.
+
+=item *
+
+New XSUBs now produce redefinition warnings if they overwrite existing
+subs, as they did in 5.8.x.  (The C<autouse> logic was reversed in
+5.10-14.  Only subroutines from the C<autouse> namespace would warn
+when clobbered.)
+
+=item *
+
+C<newCONSTSUB> used to use compile-time warning hints, instead of
+run-time hints.  The following code should never produce a redefinition
+warning, but it used to, if C<newCONSTSUB> redefined an existing
+subroutine:
+
+    use warnings;
+    BEGIN {
+        no warnings;
+        some_XS_function_that_calls_new_CONSTSUB();
+    }
+
+=item *
+
+Redefinition warnings for constant subroutines are on by default (what
+are known as severe warnings in L<perldiag>).  This occurred only
+when it was a glob assignment or declaration of a Perl subroutine that
+caused the warning.  If the creation of XSUBs triggered the warning, it
+was not a default warning.  This has been corrected.
+
+=item *
+
+The internal check to see whether a redefinition warning should occur
+used to emit "uninitialized" warnings in cases like this:
+
+    use warnings "uninitialized";
+    use constant {u => undef, v => undef};
+    sub foo(){u}
+    sub foo(){v}
+
+=back
+
+=head2 Warnings, "Uninitialized"
+
+=over
+
+=item *
+
+Various functions that take a filehandle argument in rvalue context
+(C<close>, C<readline>, etc.) used to warn twice for an undefined handle
+[perl #97482].
+
+=item *
+
+C<dbmopen> now only warns once, rather than three times, if the mode
+argument is C<undef> [perl #90064].
+
+=item *
+
+The C<+=> operator does not usually warn when the left-hand side is
+C<undef>, but it was doing so for tied variables.  This has been fixed
+[perl #44895].
+
+=item *
+
+A bug fix in Perl 5.14 introduced a new bug, causing "uninitialized"
+warnings to report the wrong variable if the operator in question had
+two operands and one was C<%{...}> or C<@{...}>.  This has been fixed
+[perl #103766].
+
+=item *
+
+C<..> and C<...> in list context now mention the name of the variable in
+"uninitialized" warnings for string (as opposed to numeric) ranges.
+
+=back
+
+=head2 Weak references
+
+=over
+
+=item *
+
+Weakening the first argument to an automatically-invoked C<DESTROY> method
+could result in erroneous "DESTROY created new reference" errors or
+crashes.  Now it is an error to weaken a read-only reference.
+
+=item *
+
+Weak references to lexical hashes going out of scope were not going stale
+(becoming undefined), but continued to point to the hash.
+
+=item *
+
+Weak references to lexical variables going out of scope are now broken
+before any magical methods (e.g., DESTROY on a tie object) are called.
+This prevents such methods from modifying the variable that will be seen
+the next time the scope is entered.
+
+=item *
+
+Creating a weak reference to an @ISA array or accessing the array index
+(C<$#ISA>) could result in confused internal bookkeeping for elements
+later added to the @ISA array.  For instance, creating a weak
+reference to the element itself could push that weak reference on to @ISA;
+and elements added after use of C<$#ISA> would be ignored by method lookup
+[perl #85670].
+
+=back
+
+=head2 Other notable fixes
+
+=over
+
+=item *
+
+C<quotemeta> now quotes consistently the same non-ASCII characters under
+C<use feature 'unicode_strings'>, regardless of whether the string is
+encoded in UTF-8 or not, hence fixing the last vestiges (we hope) of the
+notorious L<perlunicode/The "Unicode Bug">.  [perl #77654].
+
+Which of these code points is quoted has changed, based on Unicode's
+recommendations.  See L<perlfunc/quotemeta> for details.
+
+=item *
+
+C<study> is now a no-op, presumably fixing all outstanding bugs related to
+study causing regex matches to behave incorrectly!
+
+=item *
+
+When one writes C<open foo || die>, which used to work in Perl 4, a
+"Precedence problem" warning is produced.  This warning used erroneously to
+apply to fully-qualified bareword handle names not followed by C<||>.  This
+has been corrected.
+
+=item *
+
+After package aliasing (C<*foo:: = *bar::>), C<select> with 0 or 1 argument
+would sometimes return a name that could not be used to refer to the
+filehandle, or sometimes it would return C<undef> even when a filehandle
+was selected.  Now it returns a typeglob reference in such cases.
+
+=item *
+
+C<PerlIO::get_layers> no longer ignores some arguments that it thinks are
+numeric, while treating others as filehandle names.  It is now consistent
+for flat scalars (i.e., not references).
+
+=item *
+
+Unrecognized switches on C<#!> line
+
+If a switch, such as B<-x>, that cannot occur on the C<#!> line is used
+there, perl dies with "Can't emulate...".
+
+It used to produce the same message for switches that perl did not
+recognize at all, whether on the command line or the C<#!> line.
+
+Now it produces the "Unrecognized switch" error message [perl #104288].
+
+=item *
+
+C<system> now temporarily blocks the SIGCHLD signal handler, to prevent the
+signal handler from stealing the exit status [perl #105700].
+
+=item *
+
+The %n formatting code for C<printf> and C<sprintf>, which causes the number
+of characters to be assigned to the next argument, now actually
+assigns the number of characters, instead of the number of bytes.
+
+It also works now with special lvalue functions like C<substr> and with
+nonexistent hash and array elements [perl #3471, #103492].
+
+=item *
+
+Perl skips copying values returned from a subroutine, for the sake of
+speed, if doing so would make no observable difference.  Because of faulty
+logic, this would happen with the
+result of C<delete>, C<shift> or C<splice>, even if the result was
+referenced elsewhere.  It also did so with tied variables about to be freed
+[perl #91844, #95548].
+
+=item *
+
+C<utf8::decode> now refuses to modify read-only scalars [perl #91850].
+
+=item *
+
+Freeing $_ inside a C<grep> or C<map> block, a code block embedded in a
+regular expression, or an @INC filter (a subroutine returned by a
+subroutine in @INC) used to result in double frees or crashes
+[perl #91880, #92254, #92256].
+
+=item *
+
+C<eval> returns C<undef> in scalar context or an empty list in list
+context when there is a run-time error.  When C<eval> was passed a
+string in list context and a syntax error occurred, it used to return a
+list containing a single undefined element.  Now it returns an empty
+list in list context for all errors [perl #80630].
+
+=item *
+
+C<goto &func> no longer crashes, but produces an error message, when
+the unwinding of the current subroutine's scope fires a destructor that
+undefines the subroutine being "goneto" [perl #99850].
+
+=item *
+
+Perl now holds an extra reference count on the package that code is
+currently compiling in.  This means that the following code no longer
+crashes [perl #101486]:
+
+    package Foo;
+    BEGIN {*Foo:: = *Bar::}
+    sub foo;
+
+=item *
+
+The C<x> repetition operator no longer crashes on 64-bit builds with large
+repeat counts [perl #94560].
+
+=item *
+
+Calling C<require> on an implicit C<$_> when C<*CORE::GLOBAL::require> has
+been overridden does not segfault anymore, and C<$_> is now passed to the
+overriding subroutine [perl #78260].
+
+=item *
+
+C<use> and C<require> are no longer affected by the I/O layers active in
+the caller's scope (enabled by L<open.pm|open>) [perl #96008].
+
+=item *
+
+C<our $::é; $é> (which is invalid) no longer produces the "Compilation
+error at lib/utf8_heavy.pl..." error message, which it started emitting in
+5.10.0 [perl #99984].
+
+=item *
+
+On 64-bit systems, C<read()> now understands large string offsets beyond
+the 32-bit range.
+
+=item *
+
+Errors that occur when processing subroutine attributes no longer cause the
+subroutine's op tree to leak.
+
+=item *
+
+Passing the same constant subroutine to both C<index> and C<formline> no
+longer causes one or the other to fail [perl #89218]. (5.14.1)
+
+=item *
+
+List assignment to lexical variables declared with attributes in the same
+statement (C<my ($x, at y) : blimp = (72,94)>) stopped working in Perl 5.8.0.
+It has now been fixed.
+
+=item *
+
+Perl 5.10.0 introduced some faulty logic that made "U*" in the middle of
+a pack template equivalent to "U0" if the input string was empty.  This has
+been fixed [perl #90160]. (5.14.2)
+
+=item *
+
+Destructors on objects were not called during global destruction on objects
+that were not referenced by any scalars.  This could happen if an array
+element were blessed (e.g., C<bless \$a[0]>) or if a closure referenced a
+blessed variable (C<bless \my @a; sub foo { @a }>).
+
+Now there is an extra pass during global destruction to fire destructors on
+any objects that might be left after the usual passes that check for
+objects referenced by scalars [perl #36347].
+
+=item *
+
+Fixed a case where it was possible that a freed buffer may have been read
+from when parsing a here document [perl #90128]. (5.14.1)
+
+=item *
+
+C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>,
+inside a C<while> condition [perl #90888].
+
+=item *
+
+A problem with context propagation when a C<do> block is an argument to
+C<return> has been fixed.  It used to cause C<undef> to be returned in
+certain cases of a C<return> inside an C<if> block which itself is followed by
+another C<return>.
+
+=item *
+
+Calling C<index> with a tainted constant no longer causes constants in
+subsequently compiled code to become tainted [perl #64804].
+
+=item *
+
+Infinite loops like C<1 while 1> used to stop C<strict 'subs'> mode from
+working for the rest of the block.
+
+=item *
+
+For list assignments like C<($a,$b) = ($b,$a)>, Perl has to make a copy of
+the items on the right-hand side before assignment them to the left.  For
+efficiency's sake, it assigns the values on the right straight to the items
+on the left if no one variable is mentioned on both sides, as in C<($a,$b) =
+($c,$d)>.  The logic for determining when it can cheat was faulty, in that
+C<&&> and C<||> on the right-hand side could fool it.  So C<($a,$b) =
+$some_true_value && ($b,$a)> would end up assigning the value of C<$b> to
+both scalars.
+
+=item *
+
+Perl no longer tries to apply lvalue context to the string in
+C<("string", $variable) ||= 1> (which used to be an error).  Since the
+left-hand side of C<||=> is evaluated in scalar context, that's a scalar
+comma operator, which gives all but the last item void context.  There is
+no such thing as void lvalue context, so it was a mistake for Perl to try
+to force it [perl #96942].
+
+=item *
+
+C<caller> no longer leaks memory when called from the DB package if
+C<@DB::args> was assigned to after the first call to C<caller>.  L<Carp>
+was triggering this bug [perl #97010]. (5.14.2)
+
+=item *
+
+C<close> and similar filehandle functions, when called on built-in global
+variables (like C<$+>), used to die if the variable happened to hold the
+undefined value, instead of producing the usual "Use of uninitialized
+value" warning.
+
+=item *
+
+When autovivified file handles were introduced in Perl 5.6.0, C<readline>
+was inadvertently made to autovivify when called as C<readline($foo)> (but
+not as C<E<lt>$fooE<gt>>).  It has now been fixed never to autovivify.
+
+=item *
+
+Calling an undefined anonymous subroutine (e.g., what $x holds after
+C<undef &{$x = sub{}}>) used to cause a "Not a CODE reference" error, which
+has been corrected to "Undefined subroutine called" [perl #71154].
+
+=item *
+
+Causing C<@DB::args> to be freed between uses of C<caller> no longer
+results in a crash [perl #93320].
+
+=item *
+
+C<setpgrp($foo)> used to be equivalent to C<($foo, setpgrp)>, because
+C<setpgrp> was ignoring its argument if there was just one.  Now it is
+equivalent to C<setpgrp($foo,0)>.
+
+=item *
+
+C<shmread> was not setting the scalar flags correctly when reading from
+shared memory, causing the existing cached numeric representation in the
+scalar to persist [perl #98480].
+
+=item *
+
+C<++> and C<--> now work on copies of globs, instead of dying.
+
+=item *
+
+C<splice()> doesn't warn when truncating
+
+You can now limit the size of an array using C<splice(@a,MAX_LEN)> without
+worrying about warnings.
+
+=item *
+
+C<< $$ >> is no longer tainted.  Since this value comes directly from
+C<< getpid() >>, it is always safe.
+
+=item *
+
+The parser no longer leaks a filehandle if STDIN was closed before parsing
+started [perl #37033].
+
+=item *
+
+C<< die; >> with a non-reference, non-string, or magical (e.g., tainted)
+value in $@ now properly propagates that value [perl #111654].
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+On Solaris, we have two kinds of failure.
+
+If F<make> is Sun's F<make>, we get an error about a badly formed macro
+assignment in the F<Makefile>.  That happens when F<./Configure> tries to
+make depends.  F<Configure> then exits 0, but further F<make>-ing fails.
+
+If F<make> is F<gmake>, F<Configure> completes, then we get errors related
+to F</usr/include/stdbool.h>
+
+=item *
+
+On Win32, a number of tests hang unless STDERR is redirected.  The cause of
+this is still under investigation.
+
+=item *
+
+When building as root with a umask that prevents files from being
+other-readable, F<t/op/filetest.t> will fail.  This is a test bug, not a
+bug in perl's behavior.
+
+=item *
+
+Configuring with a recent gcc and link-time-optimization, such as
+C<Configure -Doptimize='-O2 -flto'> fails
+because the optimizer optimizes away some of Configure's tests.  A
+workaround is to omit the C<-flto> flag when running Configure, but add
+it back in while actually building, something like
+
+    sh Configure -Doptimize=-O2                                             
+    make OPTIMIZE='-O2 -flto'                                               
+
+=item *
+
+The following CPAN modules have test failures with perl 5.16.  Patches have
+been submitted for all of these, so hopefully there will be new releases
+soon:
+
+=over
+
+=item *
+
+L<Date::Pcalc> version 6.1
+
+=item *
+
+L<Module::CPANTS::Analyse> version 0.85
+
+This fails due to problems in L<Module::Find> 0.10 and L<File::MMagic>
+1.27.
+
+=item *
+
+L<PerlIO::Util> version 0.72
+
+=back
+
+=back
+
+=head1 Acknowledgements
+
+Perl 5.16.0 represents approximately 12 months of development since Perl
+5.14.0 and contains approximately 590,000 lines of changes across 2,500
+files from 139 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers.  The following people are known to
+have contributed the improvements that became Perl 5.16.0:
+
+Aaron Crane, Abhijit Menon-Sen, Abigail, Alan Haggai Alavi, Alberto
+Simões, Alexandr Ciornii, Andreas König, Andy Dougherty, Aristotle
+Pagaltzis, Bo Johansson, Bo Lindbergh, Breno G. de Oliveira, brian d
+foy, Brian Fraser, Brian Greenfield, Carl Hayter, Chas. Owens,
+Chia-liang Kao, Chip Salzenberg, Chris 'BinGOs' Williams, Christian
+Hansen, Christopher J. Madsen, chromatic, Claes Jacobsson, Claudio
+Ramirez, Craig A. Berry, Damian Conway, Daniel Kahn Gillmor, Darin
+McBride, Dave Rolsky, David Cantrell, David Golden, David Leadbeater,
+David Mitchell, Dee Newcum, Dennis Kaarsemaker, Dominic Hargreaves,
+Douglas Christopher Wilson, Eric Brine, Father Chrysostomos, Florian
+Ragwitz, Frederic Briere, George Greer, Gerard Goossen, Gisle Aas,
+H.Merijn Brand, Hojung Youn, Ian Goodacre, James E Keenan, Jan Dubois,
+Jerry D. Hedden, Jesse Luehrs, Jesse Vincent, Jilles Tjoelker, Jim
+Cromie, Jim Meyering, Joel Berger, Johan Vromans, Johannes Plunien, John
+Hawkinson, John P. Linderman, John Peacock, Joshua ben Jore, Juerd
+Waalboer, Karl Williamson, Karthik Rajagopalan, Keith Thompson, Kevin J.
+Woolley, Kevin Ryde, Laurent Dami, Leo Lapworth, Leon Brocard, Leon
+Timmermans, Louis Strous, Lukas Mai, Marc Green, Marcel Grünauer, Mark
+A.  Stratman, Mark Dootson, Mark Jason Dominus, Martin Hasch, Matthew
+Horsfall, Max Maischein, Michael G Schwern, Michael Witten, Mike
+Sheldrake, Moritz Lenz, Nicholas Clark, Niko Tyni, Nuno Carvalho, Pau
+Amma, Paul Evans, Paul Green, Paul Johnson, Perlover, Peter John Acklam,
+Peter Martini, Peter Scott, Phil Monsen, Pino Toscano, Rafael
+Garcia-Suarez, Rainer Tammer, Reini Urban, Ricardo Signes, Robin Barker,
+Rodolfo Carvalho, Salvador Fandiño, Sam Kimbrel, Samuel Thibault, Shawn
+M Moore, Shigeya Suzuki, Shirakata Kentaro, Shlomi Fish, Sisyphus,
+Slaven Rezic, Spiros Denaxas, Steffen Müller, Steffen Schwigon, Stephen
+Bennett, Stephen Oberholtzer, Stevan Little, Steve Hay, Steve Peters,
+Thomas Sibley, Thorsten Glaser, Timothe Litt, Todd Rinaldo, Tom
+Christiansen, Tom Hukins, Tony Cook, Vadim Konovalov, Vincent Pit,
+Vladimir Timofeev, Walt Mankowski, Yves Orton, Zefram, Zsbán Ambrus,
+Ævar Arnfjörð Bjarmason.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at L<http://rt.perl.org/perlbug/>.  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 at 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 please
+send it to perl5-security-report at perl.org.  This points to a closed
+subscription unarchived mailing list, which includes all core
+committers, who will be able to help assess the impact of issues, figure
+out a resolution, and help co-ordinate the release of patches to
+mitigate or fix the problem across all platforms on which Perl is
+supported.  Please use this address only for security issues in the Perl
+core, not for modules independently distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5161delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5161delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5161delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,198 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5161delta - what is new for perl v5.16.1
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.16.0 release and
+the 5.16.1 release.
+
+If you are upgrading from an earlier release such as 5.14.0, first read
+L<perl5160delta>, which describes differences between 5.14.0 and
+5.16.0.
+
+=head1 Security
+
+=head2 an off-by-two error in Scalar-List-Util has been fixed
+
+The bugfix was in Scalar-List-Util 1.23_04, and perl 5.16.1 includes
+Scalar-List-Util 1.25.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.16.0 If any
+exist, they are bugs, and we request that you submit a report.  See
+L</Reporting Bugs> below.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Scalar::Util> and L<List::Util> have been upgraded from version 1.23 to
+version 1.25.
+
+=item *
+
+L<B::Deparse> has been updated from version 1.14 to 1.14_01.  An
+"uninitialized" warning emitted by B::Deparse has been squashed
+[perl #113464].
+
+=back
+
+=head1 Configuration and Compilation
+
+=over
+
+=item *
+
+Building perl with some Windows compilers used to fail due to a problem
+with miniperl's C<glob> operator (which uses the C<perlglob> program)
+deleting the PATH environment variable [perl #113798].
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item VMS
+
+All C header files from the top-level directory of the distribution are now
+installed on VMS, providing consistency with a long-standing practice on other
+platforms. Previously only a subset were installed, which broke non-core extension
+builds for extensions that depended on the missing include files.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+A regression introduced in Perl v5.16.0 involving
+C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed.  Only the first
+instance is supposed to be meaningful if a character appears more than
+once in C<I<SEARCHLIST>>.  Under some circumstances, the final instance
+was overriding all earlier ones.  [perl #113584]
+
+=item *
+
+C<B::COP::stashlen> has been added.   This provides access to an internal
+field added in perl 5.16 under threaded builds.  It was broken at the last
+minute before 5.16 was released [perl #113034].
+
+=item *
+
+The L<re> pragma will no longer clobber C<$_>. [perl #113750]
+
+=item *
+
+Unicode 6.1 published an incorrect alias for one of the
+Canonical_Combining_Class property's values (which range between 0 and
+254).  The alias C<CCC133> should have been C<CCC132>.  Perl now
+overrides the data file furnished by Unicode to give the correct value.
+
+=item *
+
+Duplicating scalar filehandles works again.  [perl #113764]
+
+=item *
+
+Under threaded perls, a runtime code block in a regular expression could
+corrupt the package name stored in the op tree, resulting in bad reads
+in C<caller>, and possibly crashes [perl #113060].
+
+=item *
+
+For efficiency's sake, many operators and built-in functions return the
+same scalar each time.  Lvalue subroutines and subroutines in the CORE::
+namespace were allowing this implementation detail to leak through.
+C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB".  The same thing
+would happen with an lvalue subroutine returning the return value of C<uc>.
+Now the value is copied in such cases [perl #113044].
+
+=item *
+
+C<__SUB__> now works in special blocks (C<BEGIN>, C<END>, etc.).
+
+=item *
+
+Formats that reference lexical variables from outside no longer result
+in crashes.
+
+=back
+
+=head1 Known Problems
+
+There are no new known problems, but consult L<perl5160delta/Known
+Problems> to see those identified in the 5.16.0 release.
+
+=head1 Acknowledgements
+
+Perl 5.16.1 represents approximately 2 months of development since Perl
+5.16.0 and contains approximately 14,000 lines of changes across 96
+files from 8 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers. The following people are known to
+have contributed the improvements that became Perl 5.16.1:
+
+Chris 'BinGOs' Williams, Craig A. Berry, Father Chrysostomos, Karl
+Williamson, Paul Johnson, Reini Urban, Ricardo Signes, Tony Cook.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please
+send it to perl5-security-report at perl.org. This points to a closed
+subscription unarchived mailing list, which includes all the core
+committers, who will be able to help assess the impact of issues, figure
+out a resolution, and help co-ordinate the release of patches to
+mitigate or fix the problem across all platforms on which Perl is
+supported. Please only use this address for security issues in the Perl
+core, not for modules independently distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5162delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5162delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5162delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,125 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5162delta - what is new for perl v5.16.2
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.16.1 release and
+the 5.16.2 release.
+
+If you are upgrading from an earlier release such as 5.16.0, first read
+L<perl5161delta>, which describes differences between 5.16.0 and
+5.16.1.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.16.0
+If any exist, they are bugs, and we request that you submit a
+report.  See L</Reporting Bugs> below.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 2.70 to version 2.76.
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item * configuration should no longer be confused by ls colorization
+
+=back
+
+=head1 Platform Support
+
+=head2 Platform-Specific Notes
+
+=over 4
+
+=item AIX
+
+Configure now always adds -qlanglvl=extc99 to the CC flags on AIX when
+using xlC.  This will make it easier to compile a number of XS-based modules
+that assume C99 [perl #113778].
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item * fix /\h/ equivalence with /[\h]/
+
+see [perl #114220]
+
+=back
+
+=head1 Known Problems
+
+There are no new known problems.
+
+=head1 Acknowledgements
+
+Perl 5.16.2 represents approximately 2 months of development since Perl
+5.16.1 and contains approximately 740 lines of changes across 20 files
+from 9 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers. The following people are known to
+have contributed the improvements that became Perl 5.16.2:
+
+Andy Dougherty, Craig A. Berry, Darin McBride, Dominic Hargreaves, Karen
+Etheridge, Karl Williamson, Peter Martini, Ricardo Signes, Tony Cook.
+
+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.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please
+send it to perl5-security-report at perl.org. This points to a closed
+subscription unarchived mailing list, which includes all the core
+committers, who will be able to help assess the impact of issues, figure
+out a resolution, and help co-ordinate the release of patches to
+mitigate or fix the problem across all platforms on which Perl is
+supported. Please only use this address for security issues in the Perl
+core, not for modules independently distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5163delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5163delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5163delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,133 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5163delta - what is new for perl v5.16.3
+
+=head1 DESCRIPTION
+
+This document describes differences between the 5.16.2 release and
+the 5.16.3 release.
+
+If you are upgrading from an earlier release such as 5.16.1, first read
+L<perl5162delta>, which describes differences between 5.16.1 and
+5.16.2.
+
+=head1 Core Enhancements
+
+No changes since 5.16.0.
+
+=head1 Security
+
+This release contains one major and a number of minor security fixes.
+These latter are included mainly to allow the test suite to pass cleanly
+with the clang compiler's address sanitizer facility.
+
+=head2 CVE-2013-1667: memory exhaustion with arbitrary hash keys
+
+With a carefully crafted set of hash keys (for example arguments on a
+URL), it is possible to cause a hash to consume a large amount of memory
+and CPU, and thus possibly to achieve a Denial-of-Service.
+
+This problem has been fixed.
+
+=head2 wrap-around with IO on long strings
+
+Reading or writing strings greater than 2**31 bytes in size could segfault
+due to integer wraparound.
+
+This problem has been fixed.
+
+=head2 memory leak in Encode
+
+The UTF-8 encoding implementation in Encode.xs had a memory leak which has been
+fixed.
+
+=head1 Incompatible Changes
+
+There are no changes intentionally incompatible with 5.16.0. If any
+exist, they are bugs and reports are welcome.
+
+=head1 Deprecations
+
+There have been no deprecations since 5.16.0.
+
+=head1 Modules and Pragmata
+
+=head2 Updated Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Encode> has been upgraded from version 2.44 to version 2.44_01.
+
+=item *
+
+L<Module::CoreList> has been upgraded from version 2.76 to version 2.76_02.
+
+=item *
+
+L<XS::APItest> has been upgraded from version 0.38 to version 0.39.
+
+=back
+
+=head1 Known Problems
+
+None.
+
+=head1 Acknowledgements
+
+Perl 5.16.3 represents approximately 4 months of development since Perl 5.16.2
+and contains approximately 870 lines of changes across 39 files from 7 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant community
+of users and developers. The following people are known to have contributed the
+improvements that became Perl 5.16.3:
+
+Andy Dougherty, Chris 'BinGOs' Williams, Dave Rolsky, David Mitchell, Michael
+Schroeder, Ricardo Signes, Yves Orton.
+
+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.
+
+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 articles
+recently posted to the comp.lang.perl.misc newsgroup and the perl
+bug database at http://rt.perl.org/perlbug/ .  There may also be
+information at 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 at 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 please
+send it to perl5-security-report at perl.org. This points to a closed
+subscription unarchived mailing list, which includes all the core
+committers, who will be able to help assess the impact of issues, figure
+out a resolution, and help co-ordinate the release of patches to
+mitigate or fix the problem across all platforms on which Perl is
+supported. Please only use this address for security issues in the Perl
+core, not for modules independently distributed on CPAN.
+
+=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

Added: vendor/perl/dist/pod/perl5180delta.pod
===================================================================
--- vendor/perl/dist/pod/perl5180delta.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perl5180delta.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3781 @@
+=encoding utf8
+
+=head1 NAME
+
+perl5180delta - what is new for perl v5.18.0
+
+=head1 DESCRIPTION
+
+This document describes differences between the v5.16.0 release and the v5.18.0
+release.
+
+If you are upgrading from an earlier release such as v5.14.0, first read
+L<perl5160delta>, which describes differences between v5.14.0 and v5.16.0.
+
+=head1 Core Enhancements
+
+=head2 New mechanism for experimental features
+
+Newly-added experimental features will now require this incantation:
+
+    no warnings "experimental::feature_name";
+    use feature "feature_name";  # would warn without the prev line
+
+There is a new warnings category, called "experimental", containing
+warnings that the L<feature> pragma emits when enabling experimental
+features.
+
+Newly-added experimental features will also be given special warning IDs,
+which consist of "experimental::" followed by the name of the feature.  (The
+plan is to extend this mechanism eventually to all warnings, to allow them
+to be enabled or disabled individually, and not just by category.)
+
+By saying
+
+    no warnings "experimental::feature_name";
+
+you are taking responsibility for any breakage that future changes to, or
+removal of, the feature may cause.
+
+Since some features (like C<~~> or C<my $_>) now emit experimental warnings,
+and you may want to disable them in code that is also run on perls that do not
+recognize these warning categories, consider using the C<if> pragma like this:
+
+    no if $] >= 5.018, warnings => "experimental::feature_name";
+
+Existing experimental features may begin emitting these warnings, too.  Please
+consult L<perlexperiment> for information on which features are considered
+experimental.
+
+=head2 Hash overhaul
+
+Changes to the implementation of hashes in perl v5.18.0 will be one of the most
+visible changes to the behavior of existing code.
+
+By default, two distinct hash variables with identical keys and values may now
+provide their contents in a different order where it was previously identical.
+
+When encountering these changes, the key to cleaning up from them is to accept
+that B<hashes are unordered collections> and to act accordingly.
+
+=head3 Hash randomization
+
+The seed used by Perl's hash function is now random.  This means that the
+order which keys/values will be returned from functions like C<keys()>,
+C<values()>, and C<each()> will differ from run to run.
+
+This change was introduced to make Perl's hashes more robust to algorithmic
+complexity attacks, and also because we discovered that it exposes hash
+ordering dependency bugs and makes them easier to track down.
+
+Toolchain maintainers might want to invest in additional infrastructure to
+test for things like this.  Running tests several times in a row and then
+comparing results will make it easier to spot hash order dependencies in
+code.  Authors are strongly encouraged not to expose the key order of
+Perl's hashes to insecure audiences.
+
+Further, every hash has its own iteration order, which should make it much
+more difficult to determine what the current hash seed is.
+
+=head3 New hash functions
+
+Perl v5.18 includes support for multiple hash functions, and changed
+the default (to ONE_AT_A_TIME_HARD), you can choose a different
+algorithm by defining a symbol at compile time.  For a current list,
+consult the F<INSTALL> document.  Note that as of Perl v5.18 we can
+only recommend use of the default or SIPHASH. All the others are
+known to have security issues and are for research purposes only.
+
+=head3 PERL_HASH_SEED environment variable now takes a hex value
+
+C<PERL_HASH_SEED> no longer accepts an integer as a parameter;
+instead the value is expected to be a binary value encoded in a hex
+string, such as "0xf5867c55039dc724".  This is to make the
+infrastructure support hash seeds of arbitrary lengths, which might
+exceed that of an integer.  (SipHash uses a 16 byte seed.)
+
+=head3 PERL_PERTURB_KEYS environment variable added
+
+The C<PERL_PERTURB_KEYS> environment variable allows one to control the level of
+randomization applied to C<keys> and friends.
+
+When C<PERL_PERTURB_KEYS> is 0, perl will not randomize the key order at all. The
+chance that C<keys> changes due to an insert will be the same as in previous
+perls, basically only when the bucket size is changed.
+
+When C<PERL_PERTURB_KEYS> is 1, perl will randomize keys in a non-repeatable
+way. The chance that C<keys> changes due to an insert will be very high.  This
+is the most secure and default mode.
+
+When C<PERL_PERTURB_KEYS> is 2, perl will randomize keys in a repeatable way.
+Repeated runs of the same program should produce the same output every time.
+
+C<PERL_HASH_SEED> implies a non-default C<PERL_PERTURB_KEYS> setting. Setting
+C<PERL_HASH_SEED=0> (exactly one 0) implies C<PERL_PERTURB_KEYS=0> (hash key
+randomization disabled); settng C<PERL_HASH_SEED> to any other value implies
+C<PERL_PERTURB_KEYS=2> (deterministic and repeatable hash key randomization).
+Specifying C<PERL_PERTURB_KEYS> explicitly to a different level overrides this
+behavior.
+
+=head3 Hash::Util::hash_seed() now returns a string
+
+Hash::Util::hash_seed() now returns a string instead of an integer.  This
+is to make the infrastructure support hash seeds of arbitrary lengths
+which might exceed that of an integer.  (SipHash uses a 16 byte seed.)
+
+=head3 Output of PERL_HASH_SEED_DEBUG has been changed
+
+The environment variable PERL_HASH_SEED_DEBUG now makes perl show both the
+hash function perl was built with, I<and> the seed, in hex, in use for that
+process. Code parsing this output, should it exist, must change to accommodate
+the new format.  Example of the new format:
+
+    $ PERL_HASH_SEED_DEBUG=1 ./perl -e1
+    HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f
+
+=head2 Upgrade to Unicode 6.2
+
+Perl now supports Unicode 6.2.  A list of changes from Unicode
+6.1 is at L<http://www.unicode.org/versions/Unicode6.2.0>.
+
+=head2 Character name aliases may now include non-Latin1-range characters
+
+It is possible to define your own names for characters for use in
+C<\N{...}>, C<charnames::vianame()>, etc.  These names can now be
+comprised of characters from the whole Unicode range.  This allows for
+names to be in your native language, and not just English.  Certain
+restrictions apply to the characters that may be used (you can't define
+a name that has punctuation in it, for example).  See L<charnames/CUSTOM
+ALIASES>.
+
+=head2 New DTrace probes
+
+The following new DTrace probes have been added:
+
+=over 4
+
+=item *
+
+C<op-entry>
+
+=item *
+
+C<loading-file>
+
+=item *
+
+C<loaded-file>
+
+=back
+
+=head2 C<${^LAST_FH}>
+
+This new variable provides access to the filehandle that was last read.
+This is the handle used by C<$.> and by C<tell> and C<eof> without
+arguments.
+
+=head2 Regular Expression Set Operations
+
+This is an B<experimental> feature to allow matching against the union,
+intersection, etc., of sets of code points, similar to
+L<Unicode::Regex::Set>.  It can also be used to extend C</x> processing
+to [bracketed] character classes, and as a replacement of user-defined
+properties, allowing more complex expressions than they do.  See
+L<perlrecharclass/Extended Bracketed Character Classes>.
+
+=head2 Lexical subroutines
+
+This new feature is still considered B<experimental>.  To enable it:
+
+    use 5.018;
+    no warnings "experimental::lexical_subs";
+    use feature "lexical_subs";
+
+You can now declare subroutines with C<state sub foo>, C<my sub foo>, and
+C<our sub foo>.  (C<state sub> requires that the "state" feature be
+enabled, unless you write it as C<CORE::state sub foo>.)
+
+C<state sub> creates a subroutine visible within the lexical scope in which
+it is declared.  The subroutine is shared between calls to the outer sub.
+
+C<my sub> declares a lexical subroutine that is created each time the
+enclosing block is entered.  C<state sub> is generally slightly faster than
+C<my sub>.
+
+C<our sub> declares a lexical alias to the package subroutine of the same
+name.
+
+For more information, see L<perlsub/Lexical Subroutines>.
+
+=head2 Computed Labels
+
+The loop controls C<next>, C<last> and C<redo>, and the special C<dump>
+operator, now allow arbitrary expressions to be used to compute labels at run
+time.  Previously, any argument that was not a constant was treated as the
+empty string.
+
+=head2 More CORE:: subs
+
+Several more built-in functions have been added as subroutines to the
+CORE:: namespace - namely, those non-overridable keywords that can be
+implemented without custom parsers: C<defined>, C<delete>, C<exists>,
+C<glob>, C<pos>, C<protoytpe>, C<scalar>, C<split>, C<study>, and C<undef>.
+
+As some of these have prototypes, C<prototype('CORE::...')> has been
+changed to not make a distinction between overridable and non-overridable
+keywords.  This is to make C<prototype('CORE::pos')> consistent with
+C<prototype(&CORE::pos)>.
+
+=head2 C<kill> with negative signal names
+
+C<kill> has always allowed a negative signal number, which kills the
+process group instead of a single process.  It has also allowed signal
+names.  But it did not behave consistently, because negative signal names
+were treated as 0.  Now negative signals names like C<-INT> are supported
+and treated the same way as -2 [perl #112990].
+
+=head1 Security
+
+=head2 See also: hash overhaul
+
+Some of the changes in the L<hash overhaul|/"Hash overhaul"> were made to
+enhance security.  Please read that section.
+
+=head2 C<Storable> security warning in documentation
+
+The documentation for C<Storable> now includes a section which warns readers
+of the danger of accepting Storable documents from untrusted sources. The
+short version is that deserializing certain types of data can lead to loading
+modules and other code execution. This is documented behavior and wanted
+behavior, but this opens an attack vector for malicious entities.
+
+=head2 C<Locale::Maketext> allowed code injection via a malicious template
+
+If users could provide a translation string to Locale::Maketext, this could be
+used to invoke arbitrary Perl subroutines available in the current process.
+
+This has been fixed, but it is still possible to invoke any method provided by
+C<Locale::Maketext> itself or a subclass that you are using. One of these
+methods in turn will invoke the Perl core's C<sprintf> subroutine.
+
+In summary, allowing users to provide translation strings without auditing
+them is a bad idea.
+
+This vulnerability is documented in CVE-2012-6329.
+
+=head2 Avoid calling memset with a negative count
+
+Poorly written perl code that allows an attacker to specify the count to perl's
+C<x> string repeat operator can already cause a memory exhaustion
+denial-of-service attack. A flaw in versions of perl before v5.15.5 can escalate
+that into a heap buffer overrun; coupled with versions of glibc before 2.16, it
+possibly allows the execution of arbitrary code.
+
+The flaw addressed to this commit has been assigned identifier CVE-2012-5195
+and was researched by Tim Brown.
+
+=head1 Incompatible Changes
+
+=head2 See also: hash overhaul
+
+Some of the changes in the L<hash overhaul|/"Hash overhaul"> are not fully
+compatible with previous versions of perl.  Please read that section.
+
+=head2 An unknown character name in C<\N{...}> is now a syntax error
+
+Previously, it warned, and the Unicode REPLACEMENT CHARACTER was
+substituted.  Unicode now recommends that this situation be a syntax
+error.  Also, the previous behavior led to some confusing warnings and
+behaviors, and since the REPLACEMENT CHARACTER has no use other than as
+a stand-in for some unknown character, any code that has this problem is
+buggy.
+
+=head2 Formerly deprecated characters in C<\N{}> character name aliases are now errors.
+
+Since v5.12.0, it has been deprecated to use certain characters in
+user-defined C<\N{...}> character names.  These now cause a syntax
+error.  For example, it is now an error to begin a name with a digit,
+such as in
+
+ my $undraftable = "\N{4F}";    # Syntax error!
+
+or to have commas anywhere in the name.  See L<charnames/CUSTOM ALIASES>.
+
+=head2 C<\N{BELL}> now refers to U+1F514 instead of U+0007
+
+Unicode 6.0 reused the name "BELL" for a different code point than it
+traditionally had meant.  Since Perl v5.14, use of this name still
+referred to U+0007, but would raise a deprecation warning.  Now, "BELL"
+refers to U+1F514, and the name for U+0007 is "ALERT".  All the
+functions in L<charnames> have been correspondingly updated.
+
+=head2 New Restrictions in Multi-Character Case-Insensitive Matching in Regular Expression Bracketed Character Classes
+
+Unicode has now withdrawn their previous recommendation for regular
+expressions to automatically handle cases where a single character can
+match multiple characters case-insensitively, for example, the letter
+LATIN SMALL LETTER SHARP S and the sequence C<ss>.  This is because
+it turns out to be impracticable to do this correctly in all
+circumstances.  Because Perl has tried to do this as best it can, it
+will continue to do so.  (We are considering an option to turn it off.)
+However, a new restriction is being added on such matches when they
+occur in [bracketed] character classes.  People were specifying
+things such as C</[\0-\xff]/i>, and being surprised that it matches the
+two character sequence C<ss> (since LATIN SMALL LETTER SHARP S occurs in
+this range).  This behavior is also inconsistent with using a
+property instead of a range:  C<\p{Block=Latin1}> also includes LATIN
+SMALL LETTER SHARP S, but C</[\p{Block=Latin1}]/i> does not match C<ss>.
+The new rule is that for there to be a multi-character case-insensitive
+match within a bracketed character class, the character must be
+explicitly listed, and not as an end point of a range.  This more
+closely obeys the Principle of Least Astonishment.  See
+L<perlrecharclass/Bracketed Character Classes>.  Note that a bug [perl
+#89774], now fixed as part of this change, prevented the previous
+behavior from working fully.
+
+=head2 Explicit rules for variable names and identifiers
+
+Due to an oversight, single character variable names in v5.16 were
+completely unrestricted.  This opened the door to several kinds of
+insanity.  As of v5.18, these now follow the rules of other identifiers,
+in addition to accepting characters that match the C<\p{POSIX_Punct}>
+property.
+
+There is no longer any difference in the parsing of identifiers
+specified by using braces versus without braces.  For instance, perl
+used to allow C<${foo:bar}> (with a single colon) but not C<$foo:bar>.
+Now that both are handled by a single code path, they are both treated
+the same way: both are forbidden.  Note that this change is about the
+range of permissible literal identifiers, not other expressions.
+
+=head2 Vertical tabs are now whitespace
+
+No one could recall why C<\s> didn't match C<\cK>, the vertical tab.
+Now it does.  Given the extreme rarity of that character, very little
+breakage is expected.  That said, here's what it means:
+
+C<\s> in a regex now matches a vertical tab in all circumstances.
+
+Literal vertical tabs in a regex literal are ignored when the C</x>
+modifier is used.
+
+Leading vertical tabs, alone or mixed with other whitespace, are now
+ignored when interpreting a string as a number.  For example:
+
+  $dec = " \cK \t 123";
+  $hex = " \cK \t 0xF";
+
+  say 0 + $dec;   # was 0 with warning, now 123
+  say int $dec;   # was 0, now 123
+  say oct $hex;   # was 0, now  15
+
+=head2 C</(?{})/> and C</(??{})/> have been heavily reworked
+
+The implementation of this feature has been almost completely rewritten.
+Although its main intent is to fix bugs, some behaviors, especially
+related to the scope of lexical variables, will have changed.  This is
+described more fully in the L</Selected Bug Fixes> section.
+
+=head2 Stricter parsing of substitution replacement
+
+It is no longer possible to abuse the way the parser parses C<s///e> like
+this:
+
+    %_=(_,"Just another ");
+    $_="Perl hacker,\n";
+    s//_}->{_/e;print
+
+=head2 C<given> now aliases the global C<$_>
+
+Instead of assigning to an implicit lexical C<$_>, C<given> now makes the
+global C<$_> an alias for its argument, just like C<foreach>.  However, it
+still uses lexical C<$_> if there is lexical C<$_> in scope (again, just like
+C<foreach>) [perl #114020].
+
+=head2 The smartmatch family of features are now experimental
+
+Smart match, added in v5.10.0 and significantly revised in v5.10.1, has been
+a regular point of complaint.  Although there are a number of ways in which
+it is useful, it has also proven problematic and confusing for both users and
+implementors of Perl.  There have been a number of proposals on how to best
+address the problem.  It is clear that smartmatch is almost certainly either
+going to change or go away in the future.  Relying on its current behavior
+is not recommended.
+
+Warnings will now be issued when the parser sees C<~~>, C<given>, or C<when>.
+To disable these warnings, you can add this line to the appropriate scope:
+
+  no if $] >= 5.018, warnings => "experimental::smartmatch";
+
+Consider, though, replacing the use of these features, as they may change
+behavior again before becoming stable.
+
+=head2 Lexical C<$_> is now experimental
+
+Since it was introduced in Perl v5.10, it has caused much confusion with no
+obvious solution:
+
+=over
+
+=item *
+
+Various modules (e.g., List::Util) expect callback routines to use the
+global C<$_>.  C<use List::Util 'first'; my $_; first { $_ == 1 } @list>
+does not work as one would expect.
+
+=item *
+
+A C<my $_> declaration earlier in the same file can cause confusing closure
+warnings.
+
+=item *
+
+The "_" subroutine prototype character allows called subroutines to access
+your lexical C<$_>, so it is not really private after all.
+
+=item *
+
+Nevertheless, subroutines with a "(@)" prototype and methods cannot access
+the caller's lexical C<$_>, unless they are written in XS.
+
+=item *
+
+But even XS routines cannot access a lexical C<$_> declared, not in the
+calling subroutine, but in an outer scope, iff that subroutine happened not
+to mention C<$_> or use any operators that default to C<$_>.
+
+=back
+
+It is our hope that lexical C<$_> can be rehabilitated, but this may
+cause changes in its behavior.  Please use it with caution until it
+becomes stable.
+
+=head2 readline() with C<$/ = \N> now reads N characters, not N bytes
+
+Previously, when reading from a stream with I/O layers such as
+C<encoding>, the readline() function, otherwise known as the C<< <> >>
+operator, would read I<N> bytes from the top-most layer. [perl #79960]
+
+Now, I<N> characters are read instead.
+
+There is no change in behaviour when reading from streams with no
+extra layers, since bytes map exactly to characters.
+
+=head2 Overridden C<glob> is now passed one argument
+
+C<glob> overrides used to be passed a magical undocumented second argument
+that identified the caller.  Nothing on CPAN was using this, and it got in
+the way of a bug fix, so it was removed.  If you really need to identify
+the caller, see L<Devel::Callsite> on CPAN.
+
+=head2 Here doc parsing
+
+The body of a here document inside a quote-like operator now always begins
+on the line after the "<<foo" marker.  Previously, it was documented to
+begin on the line following the containing quote-like operator, but that
+was only sometimes the case [perl #114040].
+
+=head2 Alphanumeric operators must now be separated from the closing
+delimiter of regular expressions
+
+You may no longer write something like:
+
+ m/a/and 1
+
+Instead you must write
+
+ m/a/ and 1
+
+with whitespace separating the operator from the closing delimiter of
+the regular expression.  Not having whitespace has resulted in a
+deprecation warning since Perl v5.14.0.
+
+=head2 qw(...) can no longer be used as parentheses
+
+C<qw> lists used to fool the parser into thinking they were always
+surrounded by parentheses.  This permitted some surprising constructions
+such as C<foreach $x qw(a b c) {...}>, which should really be written
+C<foreach $x (qw(a b c)) {...}>.  These would sometimes get the lexer into
+the wrong state, so they didn't fully work, and the similar C<foreach qw(a
+b c) {...}> that one might expect to be permitted never worked at all.
+
+This side effect of C<qw> has now been abolished.  It has been deprecated
+since Perl v5.13.11.  It is now necessary to use real parentheses
+everywhere that the grammar calls for them.
+
+=head2 Interaction of lexical and default warnings
+
+Turning on any lexical warnings used first to disable all default warnings
+if lexical warnings were not already enabled:
+
+    $*; # deprecation warning
+    use warnings "void";
+    $#; # void warning; no deprecation warning
+
+Now, the C<debugging>, C<deprecated>, C<glob>, C<inplace> and C<malloc> warnings
+categories are left on when turning on lexical warnings (unless they are
+turned off by C<no warnings>, of course).
+
+This may cause deprecation warnings to occur in code that used to be free
+of warnings.
+
+Those are the only categories consisting only of default warnings.  Default
+warnings in other categories are still disabled by C<< use warnings "category" >>,
+as we do not yet have the infrastructure for controlling
+individual warnings.
+
+=head2 C<state sub> and C<our sub>
+
+Due to an accident of history, C<state sub> and C<our sub> were equivalent
+to a plain C<sub>, so one could even create an anonymous sub with
+C<our sub { ... }>.  These are now disallowed outside of the "lexical_subs"
+feature.  Under the "lexical_subs" feature they have new meanings described
+in L<perlsub/Lexical Subroutines>.
+
+=head2 Defined values stored in environment are forced to byte strings
+
+A value stored in an environment variable has always been stringified.  In this
+release, it is converted to be only a byte string.  First, it is forced to be
+only a string.  Then if the string is utf8 and the equivalent of
+C<utf8::downgrade()> works, that result is used; otherwise, the equivalent of
+C<utf8::encode()> is used, and a warning is issued about wide characters
+(L</Diagnostics>).
+
+=head2 C<require> dies for unreadable files
+
+When C<require> encounters an unreadable file, it now dies.  It used to
+ignore the file and continue searching the directories in C<@INC>
+[perl #113422].
+
+=head2 C<gv_fetchmeth_*> and SUPER
+
+The various C<gv_fetchmeth_*> XS functions used to treat a package whose
+named ended with C<::SUPER> specially.  A method lookup on the C<Foo::SUPER>
+package would be treated as a C<SUPER> method lookup on the C<Foo> package.  This
+is no longer the case.  To do a C<SUPER> lookup, pass the C<Foo> stash and the
+C<GV_SUPER> flag.
+
+=head2 C<split>'s first argument is more consistently interpreted
+
+After some changes earlier in v5.17, C<split>'s behavior has been
+simplified: if the PATTERN argument evaluates to a string
+containing one space, it is treated the way that a I<literal> string
+containing one space once was.
+
+=head1 Deprecations
+
+=head2 Module removals
+
+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
+
+=item L<encoding>
+
+The use of this pragma is now strongly discouraged. It conflates the encoding
+of source text with the encoding of I/O data, reinterprets escape sequences in
+source text (a questionable choice), and introduces the UTF-8 bug to all runtime
+handling of character strings. It is broken as designed and beyond repair.
+
+For using non-ASCII literal characters in source text, please refer to L<utf8>.
+For dealing with textual I/O data, please refer to L<Encode> and L<open>.
+
+=item L<Archive::Extract>
+
+=item L<B::Lint>
+
+=item L<B::Lint::Debug>
+
+=item L<CPANPLUS> and all included C<CPANPLUS::*> modules
+
+=item L<Devel::InnerPackage>
+
+=item L<Log::Message>
+
+=item L<Log::Message::Config>
+
+=item L<Log::Message::Handlers>
+
+=item L<Log::Message::Item>
+
+=item L<Log::Message::Simple>
+
+=item L<Module::Pluggable>
+
+=item L<Module::Pluggable::Object>
+
+=item L<Object::Accessor>
+
+=item L<Pod::LaTeX>
+
+=item L<Term::UI>
+
+=item L<Term::UI::History>
+
+=back
+
+=head2 Deprecated Utilities
+
+The following utilities will be removed from the core distribution in a
+future release as their associated modules have been deprecated. They
+will remain available with the applicable CPAN distribution.
+
+=over
+
+=item L<cpanp>
+
+=item C<cpanp-run-perl>
+
+=item L<cpan2dist>
+
+These items are part of the C<CPANPLUS> distribution.
+
+=item L<pod2latex>
+
+This item is part of the C<Pod::LaTeX> distribution.
+
+=back
+
+=head2 PL_sv_objcount
+
+This interpreter-global variable used to track the total number of
+Perl objects in the interpreter. It is no longer maintained and will
+be removed altogether in Perl v5.20.
+
+=head2 Five additional characters should be escaped in patterns with C</x>
+
+When a regular expression pattern is compiled with C</x>, Perl treats 6
+characters as white space to ignore, such as SPACE and TAB.  However,
+Unicode recommends 11 characters be treated thusly.  We will conform
+with this in a future Perl version.  In the meantime, use of any of the
+missing characters will raise a deprecation warning, unless turned off.
+The five characters are:
+
+    U+0085 NEXT LINE
+    U+200E LEFT-TO-RIGHT MARK
+    U+200F RIGHT-TO-LEFT MARK
+    U+2028 LINE SEPARATOR
+    U+2029 PARAGRAPH SEPARATOR
+
+=head2 User-defined charnames with surprising whitespace
+
+A user-defined character name with trailing or multiple spaces in a row is
+likely a typo.  This now generates a warning when defined, on the assumption
+that uses of it will be unlikely to include the excess whitespace.
+
+=head2 Various XS-callable functions are now deprecated
+
+All the functions used to classify characters will be removed from a
+future version of Perl, and should not be used.  With participating C
+compilers (e.g., gcc), compiling any file that uses any of these will
+generate a warning.  These were not intended for public use; there are
+equivalent, faster, macros for most of them.
+
+See L<perlapi/Character classes>.  The complete list is:
+
+C<is_uni_alnum>, C<is_uni_alnumc>, C<is_uni_alnumc_lc>,
+C<is_uni_alnum_lc>, C<is_uni_alpha>, C<is_uni_alpha_lc>,
+C<is_uni_ascii>, C<is_uni_ascii_lc>, C<is_uni_blank>,
+C<is_uni_blank_lc>, C<is_uni_cntrl>, C<is_uni_cntrl_lc>,
+C<is_uni_digit>, C<is_uni_digit_lc>, C<is_uni_graph>,
+C<is_uni_graph_lc>, C<is_uni_idfirst>, C<is_uni_idfirst_lc>,
+C<is_uni_lower>, C<is_uni_lower_lc>, C<is_uni_print>,
+C<is_uni_print_lc>, C<is_uni_punct>, C<is_uni_punct_lc>,
+C<is_uni_space>, C<is_uni_space_lc>, C<is_uni_upper>,
+C<is_uni_upper_lc>, C<is_uni_xdigit>, C<is_uni_xdigit_lc>,
+C<is_utf8_alnum>, C<is_utf8_alnumc>, C<is_utf8_alpha>,
+C<is_utf8_ascii>, C<is_utf8_blank>, C<is_utf8_char>,
+C<is_utf8_cntrl>, C<is_utf8_digit>, C<is_utf8_graph>,
+C<is_utf8_idcont>, C<is_utf8_idfirst>, C<is_utf8_lower>,
+C<is_utf8_mark>, C<is_utf8_perl_space>, C<is_utf8_perl_word>,
+C<is_utf8_posix_digit>, C<is_utf8_print>, C<is_utf8_punct>,
+C<is_utf8_space>, C<is_utf8_upper>, C<is_utf8_xdigit>,
+C<is_utf8_xidcont>, C<is_utf8_xidfirst>.
+
+In addition these three functions that have never worked properly are
+deprecated:
+C<to_uni_lower_lc>, C<to_uni_title_lc>, and C<to_uni_upper_lc>.
+
+=head2 Certain rare uses of backslashes within regexes are now deprecated
+
+There are three pairs of characters that Perl recognizes as
+metacharacters in regular expression patterns: C<{}>, C<[]>, and C<()>.
+These can be used as well to delimit patterns, as in:
+
+  m{foo}
+  s(foo)(bar)
+
+Since they are metacharacters, they have special meaning to regular
+expression patterns, and it turns out that you can't turn off that
+special meaning by the normal means of preceding them with a backslash,
+if you use them, paired, within a pattern delimited by them.  For
+example, in
+
+  m{foo\{1,3\}}
+
+the backslashes do not change the behavior, and this matches
+S<C<"f o">> followed by one to three more occurrences of C<"o">.
+
+Usages like this, where they are interpreted as metacharacters, are
+exceedingly rare; we think there are none, for example, in all of CPAN.
+Hence, this deprecation should affect very little code.  It does give
+notice, however, that any such code needs to change, which will in turn
+allow us to change the behavior in future Perl versions so that the
+backslashes do have an effect, and without fear that we are silently
+breaking any existing code.
+
+=head2 Splitting the tokens C<(?> and C<(*> in regular expressions
+
+A deprecation warning is now raised if the C<(> and C<?> are separated
+by white space or comments in C<(?...)> regular expression constructs.
+Similarly, if the C<(> and C<*> are separated in C<(*VERB...)>
+constructs.
+
+=head2 Pre-PerlIO IO implementations
+
+In theory, you can currently build perl without PerlIO.  Instead, you'd use a
+wrapper around stdio or sfio.  In practice, this isn't very useful.  It's not
+well tested, and without any support for IO layers or (thus) Unicode, it's not
+much of a perl.  Building without PerlIO will most likely be removed in the
+next version of perl.
+
+PerlIO supports a C<stdio> layer if stdio use is desired.  Similarly a
+sfio layer could be produced in the future, if needed.
+
+=head1 Future Deprecations
+
+=over
+
+=item *
+
+Platforms without support infrastructure
+
+Both Windows CE and z/OS have been historically under-maintained, and are
+currently neither successfully building nor regularly being smoke tested.
+Efforts are underway to change this situation, but it should not be taken for
+granted that the platforms are safe and supported.  If they do not become
+buildable and regularly smoked, support for them may be actively removed in
+future releases.  If you have an interest in these platforms and you can lend
+your time, expertise, or hardware to help support these platforms, please let
+the perl development effort know by emailing C<perl5-porters at perl.org>.
+
+Some platforms that appear otherwise entirely dead are also on the short list
+for removal between now and v5.20.0:
+
+=over
+
+=item DG/UX
+
+=item NeXT
+
+=back
+
+We also think it likely that current versions of Perl will no longer
+build AmigaOS, DJGPP, NetWare (natively), OS/2 and Plan 9. If you
+are using Perl on such a platform and have an interest in ensuring
+Perl's future on them, please contact us.
+
+We believe that Perl has long been unable to build on mixed endian
+architectures (such as PDP-11s), and intend to remove any remaining
+support code. Similarly, code supporting the long umaintained GNU
+dld will be removed soon if no-one makes themselves known as an
+active user.
+
+=item *
+
+Swapping of $< and $>
+
+Perl has supported the idiom of swapping $< and $> (and likewise $( and
+$)) to temporarily drop permissions since 5.0, like this:
+
+    ($<, $>) = ($>, $<);
+
+However, this idiom modifies the real user/group id, which can have
+undesirable side-effects, is no longer useful on any platform perl
+supports and complicates the implementation of these variables and list
+assignment in general.
+
+As an alternative, assignment only to C<< $> >> is recommended:
+
+    local $> = $<;
+
+See also: L<Setuid Demystified|http://www.cs.berkeley.edu/~daw/papers/setuid-usenix02.pdf>.
+
+=item *
+
+C<microperl>, long broken and of unclear present purpose, will be removed.
+
+=item *
+
+Revamping C<< "\Q" >> semantics in double-quotish strings when combined with
+other escapes.
+
+There are several bugs and inconsistencies involving combinations
+of C<\Q> and escapes like C<\x>, C<\L>, etc., within a C<\Q...\E> pair.
+These need to be fixed, and doing so will necessarily change current
+behavior.  The changes have not yet been settled.
+
+=item *
+
+Use of C<$x>, where C<x> stands for any actual (non-printing) C0 control
+character will be disallowed in a future Perl version.  Use C<${x}>
+instead (where again C<x> stands for a control character),
+or better, C<$^A> , where C<^> is a caret (CIRCUMFLEX ACCENT),
+and C<A> stands for any of the characters listed at the end of
+L<perlebcdic/OPERATOR DIFFERENCES>.
+
+=back
+
+=head1 Performance Enhancements
+
+=over 4
+
+=item *
+
+Lists of lexical variable declarations (C<my($x, $y)>) are now optimised
+down to a single op and are hence faster than before.
+
+=item *
+
+A new C preprocessor define C<NO_TAINT_SUPPORT> was added that, if set,
+disables Perl's taint support altogether.  Using the -T or -t command
+line flags will cause a fatal error.  Beware that both core tests as
+well as many a CPAN distribution's tests will fail with this change.  On
+the upside, it provides a small performance benefit due to reduced
+branching.
+
+B<Do not enable this unless you know exactly what you are getting yourself
+into.>
+
+=item *
+
+C<pack> with constant arguments is now constant folded in most cases
+[perl #113470].
+
+=item *
+
+Speed up in regular expression matching against Unicode properties.  The
+largest gain is for C<\X>, the Unicode "extended grapheme cluster."  The
+gain for it is about 35% - 40%.  Bracketed character classes, e.g.,
+C<[0-9\x{100}]> containing code points above 255 are also now faster.
+
+=item *
+
+On platforms supporting it, several former macros are now implemented as static
+inline functions. This should speed things up slightly on non-GCC platforms.
+
+=item *
+
+The optimisation of hashes in boolean context has been extended to
+affect C<scalar(%hash)>, C<%hash ? ... : ...>, and C<sub { %hash || ... }>.
+
+=item *
+
+Filetest operators manage the stack in a fractionally more efficient manner.
+
+=item *
+
+Globs used in a numeric context are now numified directly in most cases,
+rather than being numified via stringification.
+
+=item *
+
+The C<x> repetition operator is now folded to a single constant at compile
+time if called in scalar context with constant operands and no parentheses
+around the left operand.
+
+=back
+
+=head1 Modules and Pragmata
+
+=head2 New Modules and Pragmata
+
+=over 4
+
+=item *
+
+L<Config::Perl::V> version 0.16 has been added as a dual-lifed module.
+It provides structured data retrieval of C<perl -V> output including
+information only known to the C<perl> binary and not available via L<Config>.
+
+=back
+
+=head2 Updated Modules and Pragmata
+
+For a complete list of updates, run:
+
+  $ corelist --diff 5.16.0 5.18.0
+
+You can substitute your favorite version in place of C<5.16.0>, too.
+
+=over
+
+=item *
+
+L<Archive::Extract> has been upgraded to 0.68.
+
+Work around an edge case on Linux with Busybox's unzip.
+
+=item *
+
+L<Archive::Tar> has been upgraded to 1.90.
+
+ptar now supports the -T option as well as dashless options
+[rt.cpan.org #75473], [rt.cpan.org #75475].
+
+Auto-encode filenames marked as UTF-8 [rt.cpan.org #75474].
+
+Don't use C<tell> on L<IO::Zlib> handles [rt.cpan.org #64339].
+
+Don't try to C<chown> on symlinks.
+
+=item *
+
+L<autodie> has been upgraded to 2.13.
+
+C<autodie> now plays nicely with the 'open' pragma.
+
+=item *
+
+L<B> has been upgraded to 1.42.
+
+The C<stashoff> method of COPs has been added.   This provides access to an
+internal field added in perl 5.16 under threaded builds [perl #113034].
+
+C<B::COP::stashpv> now supports UTF-8 package names and embedded NULs.
+
+All C<CVf_*> and C<GVf_*>
+and more SV-related flag values are now provided as constants in the C<B::>
+namespace and available for export.  The default export list has not changed.
+
+This makes the module work with the new pad API.
+
+=item *
+
+L<B::Concise> has been upgraded to 0.95.
+
+The C<-nobanner> option has been fixed, and C<format>s can now be dumped.
+When passed a sub name to dump, it will check also to see whether it
+is the name of a format.  If a sub and a format share the same name,
+it will dump both.
+
+This adds support for the new C<OpMAYBE_TRUEBOOL> and C<OPpTRUEBOOL> flags.
+
+=item *
+
+L<B::Debug> has been upgraded to 1.18.
+
+This adds support (experimentally) for C<B::PADLIST>, which was
+added in Perl 5.17.4.
+
+=item *
+
+L<B::Deparse> has been upgraded to 1.20.
+
+Avoid warning when run under C<perl -w>.
+
+It now deparses
+loop controls with the correct precedence, and multiple statements in a
+C<format> line are also now deparsed correctly.
+
+This release suppresses trailing semicolons in formats.
+
+This release adds stub deparsing for lexical subroutines.
+
+It no longer dies when deparsing C<sort> without arguments.  It now
+correctly omits the comma for C<system $prog @args> and C<exec $prog
+ at args>.
+
+=item *
+
+L<bignum>, L<bigint> and L<bigrat> have been upgraded to 0.33.
+
+The overrides for C<hex> and C<oct> have been rewritten, eliminating
+several problems, and making one incompatible change:
+
+=over
+
+=item *
+
+Formerly, whichever of C<use bigint> or C<use bigrat> was compiled later
+would take precedence over the other, causing C<hex> and C<oct> not to
+respect the other pragma when in scope.
+
+=item *
+
+Using any of these three pragmata would cause C<hex> and C<oct> anywhere
+else in the program to evalute their arguments in list context and prevent
+them from inferring $_ when called without arguments.
+
+=item *
+
+Using any of these three pragmata would make C<oct("1234")> return 1234
+(for any number not beginning with 0) anywhere in the program.  Now "1234"
+is translated from octal to decimal, whether within the pragma's scope or
+not.
+
+=item *
+
+The global overrides that facilitate lexical use of C<hex> and C<oct> now
+respect any existing overrides that were in place before the new overrides
+were installed, falling back to them outside of the scope of C<use bignum>.
+
+=item *
+
+C<use bignum "hex">, C<use bignum "oct"> and similar invocations for bigint
+and bigrat now export a C<hex> or C<oct> function, instead of providing a
+global override.
+
+=back
+
+=item *
+
+L<Carp> has been upgraded to 1.29.
+
+Carp is no longer confused when C<caller> returns undef for a package that
+has been deleted.
+
+The C<longmess()> and C<shortmess()> functions are now documented.
+
+=item *
+
+L<CGI> has been upgraded to 3.63.
+
+Unrecognized HTML escape sequences are now handled better, problematic
+trailing newlines are no longer inserted after E<lt>formE<gt> tags
+by C<startform()> or C<start_form()>, and bogus "Insecure Dependency"
+warnings appearing with some versions of perl are now worked around.
+
+=item *
+
+L<Class::Struct> has been upgraded to 0.64.
+
+The constructor now respects overridden accessor methods [perl #29230].
+
+=item *
+
+L<Compress::Raw::Bzip2> has been upgraded to 2.060.
+
+The misuse of Perl's "magic" API has been fixed.
+
+=item *
+
+L<Compress::Raw::Zlib> has been upgraded to 2.060.
+
+Upgrade bundled zlib to version 1.2.7.
+
+Fix build failures on Irix, Solaris, and Win32, and also when building as C++
+[rt.cpan.org #69985], [rt.cpan.org #77030], [rt.cpan.org #75222].
+
+The misuse of Perl's "magic" API has been fixed.
+
+C<compress()>, C<uncompress()>, C<memGzip()> and C<memGunzip()> have
+been speeded up by making parameter validation more efficient.
+
+=item *
+
+L<CPAN::Meta::Requirements> has been upgraded to 2.122.
+
+Treat undef requirements to C<from_string_hash> as 0 (with a warning).
+
+Added C<requirements_for_module> method.
+
+=item *
+
+L<CPANPLUS> has been upgraded to 0.9135.
+
+Allow adding F<blib/script> to PATH.
+
+Save the history between invocations of the shell.
+
+Handle multiple C<makemakerargs> and C<makeflags> arguments better.
+
+This resolves issues with the SQLite source engine.
+
+=item *
+
+L<Data::Dumper> has been upgraded to 2.145.
+
+It has been optimized to only build a seen-scalar hash as necessary,
+thereby speeding up serialization drastically.
+
+Additional tests were added in order to improve statement, branch, condition
+and subroutine coverage.  On the basis of the coverage analysis, some of the
+internals of Dumper.pm were refactored.  Almost all methods are now
+documented.
+
+=item *
+
+L<DB_File> has been upgraded to 1.827.
+
+The main Perl module no longer uses the C<"@_"> construct.
+
+=item *
+
+L<Devel::Peek> has been upgraded to 1.11.
+
+This fixes compilation with C++ compilers and makes the module work with
+the new pad API.
+
+=item *
+
+L<Digest::MD5> has been upgraded to 2.52.
+
+Fix C<Digest::Perl::MD5> OO fallback [rt.cpan.org #66634].
+
+=item *
+
+L<Digest::SHA> has been upgraded to 5.84.
+
+This fixes a double-free bug, which might have caused vulnerabilities
+in some cases.
+
+=item *
+
+L<DynaLoader> has been upgraded to 1.18.
+
+This is due to a minor code change in the XS for the VMS implementation.
+
+This fixes warnings about using C<CODE> sections without an C<OUTPUT>
+section.
+
+=item *
+
+L<Encode> has been upgraded to 2.49.
+
+The Mac alias x-mac-ce has been added, and various bugs have been fixed
+in Encode::Unicode, Encode::UTF7 and Encode::GSM0338.
+
+=item *
+
+L<Env> has been upgraded to 1.04.
+
+Its SPLICE implementation no longer misbehaves in list context.
+
+=item *
+
+L<ExtUtils::CBuilder> has been upgraded to 0.280210.
+
+Manifest files are now correctly embedded for those versions of VC++ which
+make use of them. [perl #111782, #111798].
+
+A list of symbols to export can now be passed to C<link()> when on
+Windows, as on other OSes [perl #115100].
+
+=item *
+
+L<ExtUtils::ParseXS> has been upgraded to 3.18.
+
+The generated C code now avoids unnecessarily incrementing
+C<PL_amagic_generation> on Perl versions where it's done automatically
+(or on current Perl where the variable no longer exists).
+
+This avoids a bogus warning for initialised XSUB non-parameters [perl
+#112776].
+
+=item *
+
+L<File::Copy> has been upgraded to 2.26.
+
+C<copy()> no longer zeros files when copying into the same directory,
+and also now fails (as it has long been documented to do) when attempting
+to copy a file over itself.
+
+=item *
+
+L<File::DosGlob> has been upgraded to 1.10.
+
+The internal cache of file names that it keeps for each caller is now
+freed when that caller is freed.  This means
+C<< use File::DosGlob 'glob'; eval 'scalar <*>' >> no longer leaks memory.
+
+=item *
+
+L<File::Fetch> has been upgraded to 0.38.
+
+Added the 'file_default' option for URLs that do not have a file
+component.
+
+Use C<File::HomeDir> when available, and provide C<PERL5_CPANPLUS_HOME> to
+override the autodetection.
+
+Always re-fetch F<CHECKSUMS> if C<fetchdir> is set.
+
+=item *
+
+L<File::Find> has been upgraded to 1.23.
+
+This fixes inconsistent unixy path handling on VMS.
+
+Individual files may now appear in list of directories to be searched
+[perl #59750].
+
+=item *
+
+L<File::Glob> has been upgraded to 1.20.
+
+File::Glob has had exactly the same fix as File::DosGlob.  Since it is
+what Perl's own C<glob> operator itself uses (except on VMS), this means
+C<< eval 'scalar <*>' >> no longer leaks.
+
+A space-separated list of patterns return long lists of results no longer
+results in memory corruption or crashes.  This bug was introduced in
+Perl 5.16.0.  [perl #114984]
+
+=item *
+
+L<File::Spec::Unix> has been upgraded to 3.40.
+
+C<abs2rel> could produce incorrect results when given two relative paths or
+the root directory twice [perl #111510].
+
+=item *
+
+L<File::stat> has been upgraded to 1.07.
+
+C<File::stat> ignores the L<filetest> pragma, and warns when used in
+combination therewith.  But it was not warning for C<-r>.  This has been
+fixed [perl #111640].
+
+C<-p> now works, and does not return false for pipes [perl #111638].
+
+Previously C<File::stat>'s overloaded C<-x> and C<-X> operators did not give
+the correct results for directories or executable files when running as
+root. They had been treating executable permissions for root just like for
+any other user, performing group membership tests I<etc> for files not owned
+by root. They now follow the correct Unix behaviour - for a directory they
+are always true, and for a file if any of the three execute permission bits
+are set then they report that root can execute the file. Perl's builtin
+C<-x> and C<-X> operators have always been correct.
+
+=item *
+
+L<File::Temp> has been upgraded to 0.23
+
+Fixes various bugs involving directory removal.  Defers unlinking tempfiles if
+the initial unlink fails, which fixes problems on NFS.
+
+=item *
+
+L<GDBM_File> has been upgraded to 1.15.
+
+The undocumented optional fifth parameter to C<TIEHASH> has been
+removed. This was intended to provide control of the callback used by
+C<gdbm*> functions in case of fatal errors (such as filesystem problems),
+but did not work (and could never have worked). No code on CPAN even
+attempted to use it. The callback is now always the previous default,
+C<croak>. Problems on some platforms with how the C<C> C<croak> function
+is called have also been resolved.
+
+=item *
+
+L<Hash::Util> has been upgraded to 0.15.
+
+C<hash_unlocked> and C<hashref_unlocked> now returns true if the hash is
+unlocked, instead of always returning false [perl #112126].
+
+C<hash_unlocked>, C<hashref_unlocked>, C<lock_hash_recurse> and
+C<unlock_hash_recurse> are now exportable [perl #112126].
+
+Two new functions, C<hash_locked> and C<hashref_locked>, have been added.
+Oddly enough, these two functions were already exported, even though they
+did not exist [perl #112126].
+
+=item *
+
+L<HTTP::Tiny> has been upgraded to 0.025.
+
+Add SSL verification features [github #6], [github #9].
+
+Include the final URL in the response hashref.
+
+Add C<local_address> option.
+
+This improves SSL support.
+
+=item *
+
+L<IO> has been upgraded to 1.28.
+
+C<sync()> can now be called on read-only file handles [perl #64772].
+
+L<IO::Socket> tries harder to cache or otherwise fetch socket
+information.
+
+=item *
+
+L<IPC::Cmd> has been upgraded to 0.80.
+
+Use C<POSIX::_exit> instead of C<exit> in C<run_forked> [rt.cpan.org #76901].
+
+=item *
+
+L<IPC::Open3> has been upgraded to 1.13.
+
+The C<open3()> function no longer uses C<POSIX::close()> to close file
+descriptors since that breaks the ref-counting of file descriptors done by
+PerlIO in cases where the file descriptors are shared by PerlIO streams,
+leading to attempts to close the file descriptors a second time when
+any such PerlIO streams are closed later on.
+
+=item *
+
+L<Locale::Codes> has been upgraded to 3.25.
+
+It includes some new codes.
+
+=item *
+
+L<Memoize> has been upgraded to 1.03.
+
+Fix the C<MERGE> cache option.
+
+=item *
+
+L<Module::Build> has been upgraded to 0.4003.
+
+Fixed bug where modules without C<$VERSION> might have a version of '0' listed
+in 'provides' metadata, which will be rejected by PAUSE.
+
+Fixed bug in PodParser to allow numerals in module names.
+
+Fixed bug where giving arguments twice led to them becoming arrays, resulting
+in install paths like F<ARRAY(0xdeadbeef)/lib/Foo.pm>.
+
+A minor bug fix allows markup to be used around the leading "Name" in
+a POD "abstract" line, and some documentation improvements have been made.
+
+=item *
+
+L<Module::CoreList> has been upgraded to 2.90
+
+Version information is now stored as a delta, which greatly reduces the
+size of the F<CoreList.pm> file.
+
+This restores compatibility with older versions of perl and cleans up
+the corelist data for various modules.
+
+=item *
+
+L<Module::Load::Conditional> has been upgraded to 0.54.
+
+Fix use of C<requires> on perls installed to a path with spaces.
+
+Various enhancements include the new use of Module::Metadata.
+
+=item *
+
+L<Module::Metadata> has been upgraded to 1.000011.
+
+The creation of a Module::Metadata object for a typical module file has
+been sped up by about 40%, and some spurious warnings about C<$VERSION>s
+have been suppressed.
+
+=item *
+
+L<Module::Pluggable> has been upgraded to 4.7.
+
+Amongst other changes, triggers are now allowed on events, which gives
+a powerful way to modify behaviour.
+
+=item *
+
+L<Net::Ping> has been upgraded to 2.41.
+
+This fixes some test failures on Windows.
+
+=item *
+
+L<Opcode> has been upgraded to 1.25.
+
+Reflect the removal of the boolkeys opcode and the addition of the
+clonecv, introcv and padcv opcodes.
+
+=item *
+
+L<overload> has been upgraded to 1.22.
+
+C<no overload> now warns for invalid arguments, just like C<use overload>.
+
+=item *
+
+L<PerlIO::encoding> has been upgraded to 0.16.
+
+This is the module implementing the ":encoding(...)" I/O layer.  It no
+longer corrupts memory or crashes when the encoding back-end reallocates
+the buffer or gives it a typeglob or shared hash key scalar.
+
+=item *
+
+L<PerlIO::scalar> has been upgraded to 0.16.
+
+The buffer scalar supplied may now only contain code pounts 0xFF or
+lower. [perl #109828]
+
+=item *
+
+L<Perl::OSType> has been upgraded to 1.003.
+
+This fixes a bug detecting the VOS operating system.
+
+=item *
+
+L<Pod::Html> has been upgraded to 1.18.
+
+The option C<--libpods> has been reinstated. It is deprecated, and its use
+does nothing other than issue a warning that it is no longer supported.
+
+Since the HTML files generated by pod2html claim to have a UTF-8 charset,
+actually write the files out using UTF-8 [perl #111446].
+
+=item *
+
+L<Pod::Simple> has been upgraded to 3.28.
+
+Numerous improvements have been made, mostly to Pod::Simple::XHTML,
+which also has a compatibility change: the C<codes_in_verbatim> option
+is now disabled by default.  See F<cpan/Pod-Simple/ChangeLog> for the
+full details.
+
+=item *
+
+L<re> has been upgraded to 0.23
+
+Single character [class]es like C</[s]/> or C</[s]/i> are now optimized
+as if they did not have the brackets, i.e. C</s/> or C</s/i>.
+
+See note about C<op_comp> in the L</Internal Changes> section below.
+
+=item *
+
+L<Safe> has been upgraded to 2.35.
+
+Fix interactions with C<Devel::Cover>.
+
+Don't eval code under C<no strict>.
+
+=item *
+
+L<Scalar::Util> has been upgraded to version 1.27.
+
+Fix an overloading issue with C<sum>.
+
+C<first> and C<reduce> now check the callback first (so C<&first(1)> is
+disallowed).
+
+Fix C<tainted> on magical values [rt.cpan.org #55763].
+
+Fix C<sum> on previously magical values [rt.cpan.org #61118].
+
+Fix reading past the end of a fixed buffer [rt.cpan.org #72700].
+
+=item *
+
+L<Search::Dict> has been upgraded to 1.07.
+
+No longer require C<stat> on filehandles.
+
+Use C<fc> for casefolding.
+
+=item *
+
+L<Socket> has been upgraded to 2.009.
+
+Constants and functions required for IP multicast source group membership
+have been added.
+
+C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
+address in scalar context, and C<inet_ntop()> now guards against incorrect
+length scalars being passed in.
+
+This fixes an uninitialized memory read.
+
+=item *
+
+L<Storable> has been upgraded to 2.41.
+
+Modifying C<$_[0]> within C<STORABLE_freeze> no longer results in crashes
+[perl #112358].
+
+An object whose class implements C<STORABLE_attach> is now thawed only once
+when there are multiple references to it in the structure being thawed
+[perl #111918].
+
+Restricted hashes were not always thawed correctly [perl #73972].
+
+Storable would croak when freezing a blessed REF object with a
+C<STORABLE_freeze()> method [perl #113880].
+
+It can now freeze and thaw vstrings correctly.  This causes a slight
+incompatible change in the storage format, so the format version has
+increased to 2.9.
+
+This contains various bugfixes, including compatibility fixes for older
+versions of Perl and vstring handling.
+
+=item *
+
+L<Sys::Syslog> has been upgraded to 0.32.
+
+This contains several bug fixes relating to C<getservbyname()>,
+C<setlogsock()>and log levels in C<syslog()>, together with fixes for
+Windows, Haiku-OS and GNU/kFreeBSD.  See F<cpan/Sys-Syslog/Changes>
+for the full details.
+
+=item *
+
+L<Term::ANSIColor> has been upgraded to 4.02.
+
+Add support for italics.
+
+Improve error handling.
+
+=item *
+
+L<Term::ReadLine> has been upgraded to 1.10.  This fixes the
+use of the B<cpan> and B<cpanp> shells on Windows in the event that the current
+drive happens to contain a F<\dev\tty> file.
+
+=item *
+
+L<Test::Harness> has been upgraded to 3.26.
+
+Fix glob semantics on Win32 [rt.cpan.org #49732].
+
+Don't use C<Win32::GetShortPathName> when calling perl [rt.cpan.org #47890].
+
+Ignore -T when reading shebang [rt.cpan.org #64404].
+
+Handle the case where we don't know the wait status of the test more
+gracefully.
+
+Make the test summary 'ok' line overridable so that it can be changed to a
+plugin to make the output of prove idempotent.
+
+Don't run world-writable files.
+
+=item *
+
+L<Text::Tabs> and L<Text::Wrap> have been upgraded to
+2012.0818.  Support for Unicode combining characters has been added to them
+both.
+
+=item *
+
+L<threads::shared> has been upgraded to 1.31.
+
+This adds the option to warn about or ignore attempts to clone structures
+that can't be cloned, as opposed to just unconditionally dying in
+that case.
+
+This adds support for dual-valued values as created by
+L<Scalar::Util::dualvar|Scalar::Util/"dualvar NUM, STRING">.
+
+=item *
+
+L<Tie::StdHandle> has been upgraded to 4.3.
+
+C<READ> now respects the offset argument to C<read> [perl #112826].
+
+=item *
+
+L<Time::Local> has been upgraded to 1.2300.
+
+Seconds values greater than 59 but less than 60 no longer cause
+C<timegm()> and C<timelocal()> to croak.
+
+=item *
+
+L<Unicode::UCD> has been upgraded to 0.53.
+
+This adds a function L<all_casefolds()|Unicode::UCD/all_casefolds()>
+that returns all the casefolds.
+
+=item *
+
+L<Win32> has been upgraded to 0.47.
+
+New APIs have been added for getting and setting the current code page.
+
+=back
+
+
+=head2 Removed Modules and Pragmata
+
+=over
+
+=item *
+
+L<Version::Requirements> has been removed from the core distribution.  It is
+available under a different name: L<CPAN::Meta::Requirements>.
+
+=back
+
+=head1 Documentation
+
+=head2 Changes to Existing Documentation
+
+=head3 L<perlcheat>
+
+=over 4
+
+=item *
+
+L<perlcheat> has been reorganized, and a few new sections were added.
+
+=back
+
+=head3 L<perldata>
+
+=over 4
+
+=item *
+
+Now explicitly documents the behaviour of hash initializer lists that
+contain duplicate keys.
+
+=back
+
+=head3 L<perldiag>
+
+=over 4
+
+=item *
+
+The explanation of symbolic references being prevented by "strict refs"
+now doesn't assume that the reader knows what symbolic references are.
+
+=back
+
+=head3 L<perlfaq>
+
+=over 4
+
+=item *
+
+L<perlfaq> has been synchronized with version 5.0150040 from CPAN.
+
+=back
+
+=head3 L<perlfunc>
+
+=over 4
+
+=item *
+
+The return value of C<pipe> is now documented.
+
+=item *
+
+Clarified documentation of C<our>.
+
+=back
+
+=head3 L<perlop>
+
+=over 4
+
+=item *
+
+Loop control verbs (C<dump>, C<goto>, C<next>, C<last> and C<redo>) have always
+had the same precedence as assignment operators, but this was not documented
+until now.
+
+=back
+
+=head3 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 New Diagnostics
+
+=head3 New Errors
+
+=over 4
+
+=item *
+
+L<Unterminated delimiter for here document|perldiag/"Unterminated delimiter for here document">
+
+This message now occurs when a here document label has an initial quotation
+mark but the final quotation mark is missing.
+
+This replaces a bogus and misleading error message about not finding the label
+itself [perl #114104].
+
+=item *
+
+L<panic: child pseudo-process was never scheduled|perldiag/"panic: child pseudo-process was never scheduled">
+
+This error is thrown when a child pseudo-process in the ithreads implementation
+on Windows was not scheduled within the time period allowed and therefore was
+not able to initialize properly [perl #88840].
+
+=item *
+
+L<Group name must start with a non-digit word character in regex; marked by <-- HERE in mE<sol>%sE<sol>|perldiag/"Group name must start with a non-digit word character in regex; marked by <-- HERE in m/%s/">
+
+This error has been added for C<(?&0)>, which is invalid.  It used to
+produce an incomprehensible error message [perl #101666].
+
+=item *
+
+L<Can't use an undefined value as a subroutine reference|perldiag/"Can't use an undefined value as %s reference">
+
+Calling an undefined value as a subroutine now produces this error message.
+It used to, but was accidentally disabled, first in Perl 5.004 for
+non-magical variables, and then in Perl v5.14 for magical (e.g., tied)
+variables.  It has now been restored.  In the mean time, undef was treated
+as an empty string [perl #113576].
+
+=item *
+
+L<Experimental "%s" subs not enabled|perldiag/"Experimental "%s" subs not enabled">
+
+To use lexical subs, you must first enable them:
+
+    no warnings 'experimental::lexical_subs';
+    use feature 'lexical_subs';
+    my sub foo { ... }
+
+=back
+
+=head3 New Warnings
+
+=over 4
+
+=item *
+
+L<'Strings with code points over 0xFF may not be mapped into in-memory file handles'|perldiag/"Strings with code points over 0xFF may not be mapped into in-memory file handles">
+
+=item *
+
+L<'%s' resolved to '\o{%s}%d'|perldiag/"'%s' resolved to '\o{%s}%d'">
+
+=item *
+
+L<'Trailing white-space in a charnames alias definition is deprecated'|perldiag/"Trailing white-space in a charnames alias definition is deprecated">
+
+=item *
+
+L<'A sequence of multiple spaces in a charnames alias definition is deprecated'|perldiag/"A sequence of multiple spaces in a charnames alias definition is deprecated">
+
+=item *
+
+L<'Passing malformed UTF-8 to "%s" is deprecated'|perldiag/"Passing malformed UTF-8 to "%s" is deprecated">
+
+=item *
+
+L<Subroutine "&%s" is not available|perldiag/"Subroutine "&%s" is not available">
+
+(W closure) During compilation, an inner named subroutine or eval is
+attempting to capture an outer lexical subroutine that is not currently
+available.  This can happen for one of two reasons.  First, the lexical
+subroutine may be declared in an outer anonymous subroutine that has not
+yet been created.  (Remember that named subs are created at compile time,
+while anonymous subs are created at run-time.)  For example,
+
+    sub { my sub a {...} sub f { \&a } }
+
+At the time that f is created, it can't capture the current the "a" sub,
+since the anonymous subroutine hasn't been created yet.  Conversely, the
+following won't give a warning since the anonymous subroutine has by now
+been created and is live:
+
+    sub { my sub a {...} eval 'sub f { \&a }' }->();
+
+The second situation is caused by an eval accessing a variable that has
+gone out of scope, for example,
+
+    sub f {
+        my sub a {...}
+        sub { eval '\&a' }
+    }
+    f()->();
+
+Here, when the '\&a' in the eval is being compiled, f() is not currently
+being executed, so its &a is not available for capture.
+
+=item *
+
+L<"%s" subroutine &%s masks earlier declaration in same %s|perldiag/"%s" subroutine &%s masks earlier declaration in same %s>
+
+(W misc) A "my" or "state" subroutine has been redeclared in the
+current scope or statement, effectively eliminating all access to
+the previous instance.  This is almost always a typographical error.
+Note that the earlier subroutine will still exist until the end of
+the scope or until all closure references to it are destroyed.
+
+=item *
+
+L<The %s feature is experimental|perldiag/"The %s feature is experimental">
+
+(S experimental) This warning is emitted if you enable an experimental
+feature via C<use feature>.  Simply suppress the warning if you want
+to use the feature, but know that in doing so you are taking the risk
+of using an experimental feature which may change or be removed in a
+future Perl version:
+
+    no warnings "experimental::lexical_subs";
+    use feature "lexical_subs";
+
+=item *
+
+L<sleep(%u) too large|perldiag/"sleep(%u) too large">
+
+(W overflow) You called C<sleep> with a number that was larger than it can
+reliably handle and C<sleep> probably slept for less time than requested.
+
+=item *
+
+L<Wide character in setenv|perldiag/"Wide character in %s">
+
+Attempts to put wide characters into environment variables via C<%ENV> now
+provoke this warning.
+
+=item *
+
+"L<Invalid negative number (%s) in chr|perldiag/"Invalid negative number (%s) in chr">"
+
+C<chr()> now warns when passed a negative value [perl #83048].
+
+=item *
+
+"L<Integer overflow in srand|perldiag/"Integer overflow in srand">"
+
+C<srand()> now warns when passed a value that doesn't fit in a C<UV> (since the
+value will be truncated rather than overflowing) [perl #40605].
+
+=item *
+
+"L<-i used with no filenames on the command line, reading from STDIN|perldiag/"-i used with no filenames on the command line, reading from STDIN">"
+
+Running perl with the C<-i> flag now warns if no input files are provided on
+the command line [perl #113410].
+
+=back
+
+=head2 Changes to Existing Diagnostics
+
+=over 4
+
+=item *
+
+L<$* is no longer supported|perldiag/"$* is no longer supported">
+
+The warning that use of C<$*> and C<$#> is no longer supported is now
+generated for every location that references them.  Previously it would fail
+to be generated if another variable using the same typeglob was seen first
+(e.g. C<@*> before C<$*>), and would not be generated for the second and
+subsequent uses.  (It's hard to fix the failure to generate warnings at all
+without also generating them every time, and warning every time is
+consistent with the warnings that C<$[> used to generate.)
+
+=item *
+
+The warnings for C<\b{> and C<\B{> were added.  They are a deprecation
+warning which should be turned off by that category.  One should not
+have to turn off regular regexp warnings as well to get rid of these.
+
+=item *
+
+L<Constant(%s): Call to &{$^H{%s}} did not return a defined value|perldiag/Constant(%s): Call to &{$^H{%s}} did not return a defined value>
+
+Constant overloading that returns C<undef> results in this error message.
+For numeric constants, it used to say "Constant(undef)".  "undef" has been
+replaced with the number itself.
+
+=item *
+
+The error produced when a module cannot be loaded now includes a hint that
+the module may need to be installed: "Can't locate hopping.pm in @INC (you
+may need to install the hopping module) (@INC contains: ...)"
+
+=item *
+
+L<vector argument not supported with alpha versions|perldiag/vector argument not supported with alpha versions>
+
+This warning was not suppressable, even with C<no warnings>.  Now it is
+suppressible, and has been moved from the "internal" category to the
+"printf" category.
+
+=item *
+
+C<< Can't do {n,m} with n > m in regex; marked by <-- HERE in m/%s/ >>
+
+This fatal error has been turned into a warning that reads:
+
+L<< Quantifier {n,m} with n > m can't match in regex | perldiag/Quantifier {n,m} with n > m can't match in regex >>
+
+(W regexp) Minima should be less than or equal to maxima.  If you really want
+your regexp to match something 0 times, just put {0}.
+
+=item *
+
+The "Runaway prototype" warning that occurs in bizarre cases has been
+removed as being unhelpful and inconsistent.
+
+=item *
+
+The "Not a format reference" error has been removed, as the only case in
+which it could be triggered was a bug.
+
+=item *
+
+The "Unable to create sub named %s" error has been removed for the same
+reason.
+
+=item *
+
+The 'Can't use "my %s" in sort comparison' error has been downgraded to a
+warning, '"my %s" used in sort comparison' (with 'state' instead of 'my'
+for state variables).  In addition, the heuristics for guessing whether
+lexical $a or $b has been misused have been improved to generate fewer
+false positives.  Lexical $a and $b are no longer disallowed if they are
+outside the sort block.  Also, a named unary or list operator inside the
+sort block no longer causes the $a or $b to be ignored [perl #86136].
+
+=back
+
+=head1 Utility Changes
+
+=head3 L<h2xs>
+
+=over 4
+
+=item *
+
+F<h2xs> no longer produces invalid code for empty defines.  [perl #20636]
+
+=back
+
+=head1 Configuration and Compilation
+
+=over 4
+
+=item *
+
+Added C<useversionedarchname> option to Configure
+
+When set, it includes 'api_versionstring' in 'archname'. E.g.
+x86_64-linux-5.13.6-thread-multi.  It is unset by default.
+
+This feature was requested by Tim Bunce, who observed that
+C<INSTALL_BASE> creates a library structure that does not
+differentiate by perl version.  Instead, it places architecture
+specific files in "$install_base/lib/perl5/$archname".  This makes
+it difficult to use a common C<INSTALL_BASE> library path with
+multiple versions of perl.
+
+By setting C<-Duseversionedarchname>, the $archname will be
+distinct for architecture I<and> API version, allowing mixed use of
+C<INSTALL_BASE>.
+
+=item *
+
+Add a C<PERL_NO_INLINE_FUNCTIONS> option
+
+If C<PERL_NO_INLINE_FUNCTIONS> is defined, don't include "inline.h"
+
+This permits test code to include the perl headers for definitions without
+creating a link dependency on the perl library (which may not exist yet).
+
+=item *
+
+Configure will honour the external C<MAILDOMAIN> environment variable, if set.
+
+=item *
+
+C<installman> no longer ignores the silent option
+
+=item *
+
+Both C<META.yml> and C<META.json> files are now included in the distribution.
+
+=item *
+
+F<Configure> will now correctly detect C<isblank()> when compiling with a C++
+compiler.
+
+=item *
+
+The pager detection in F<Configure> has been improved to allow responses which
+specify options after the program name, e.g. B</usr/bin/less -R>, if the user
+accepts the default value.  This helps B<perldoc> when handling ANSI escapes
+[perl #72156].
+
+=back
+
+=head1 Testing
+
+=over 4
+
+=item *
+
+The test suite now has a section for tests that require very large amounts
+of memory.  These tests won't run by default; they can be enabled by
+setting the C<PERL_TEST_MEMORY> environment variable to the number of
+gibibytes of memory that may be safely used.
+
+=back
+
+=head1 Platform Support
+
+=head2 Discontinued Platforms
+
+=over 4
+
+=item BeOS
+
+BeOS was an operating system for personal computers developed by Be Inc,
+initially for their BeBox hardware. The OS Haiku was written as an open
+source replacement for/continuation of BeOS, and its perl port is current and
+actively maintained.
+
+=item UTS Global
+
+Support code relating to UTS global has been removed.  UTS was a mainframe
+version of System V created by Amdahl, subsequently sold to UTS Global.  The
+port has not been touched since before Perl v5.8.0, and UTS Global is now
+defunct.
+
+=item VM/ESA
+
+Support for VM/ESA has been removed. The port was tested on 2.3.0, which
+IBM ended service on in March 2002. 2.4.0 ended service in June 2003, and
+was superseded by Z/VM. The current version of Z/VM is V6.2.0, and scheduled
+for end of service on 2015/04/30.
+
+=item MPE/IX
+
+Support for MPE/IX has been removed.
+
+=item EPOC
+
+Support code relating to EPOC has been removed.  EPOC was a family of
+operating systems developed by Psion for mobile devices.  It was the
+predecessor of Symbian.  The port was last updated in April 2002.
+
+=item Rhapsody
+
+Support for Rhapsody has been removed.
+
+=back
+
+=head2 Platform-Specific Notes
+
+=head3 AIX
+
+Configure now always adds C<-qlanglvl=extc99> to the CC flags on AIX when
+using xlC.  This will make it easier to compile a number of XS-based modules
+that assume C99 [perl #113778].
+
+=head3 clang++
+
+There is now a workaround for a compiler bug that prevented compiling
+with clang++ since Perl v5.15.7 [perl #112786].
+
+=head3 C++
+
+When compiling the Perl core as C++ (which is only semi-supported), the
+mathom functions are now compiled as C<extern "C">, to ensure proper
+binary compatibility.  (However, binary compatibility isn't generally
+guaranteed anyway in the situations where this would matter.)
+
+=head3 Darwin
+
+Stop hardcoding an alignment on 8 byte boundaries to fix builds using
+-Dusemorebits.
+
+=head3 Haiku
+
+Perl should now work out of the box on Haiku R1 Alpha 4.
+
+=head3 MidnightBSD
+
+C<libc_r> was removed from recent versions of MidnightBSD and older versions
+work better with C<pthread>. Threading is now enabled using C<pthread> which
+corrects build errors with threading enabled on 0.4-CURRENT.
+
+=head3 Solaris
+
+In Configure, avoid running sed commands with flags not supported on Solaris.
+
+=head3 VMS
+
+=over
+
+=item *
+
+Where possible, the case of filenames and command-line arguments is now
+preserved by enabling the CRTL features C<DECC$EFS_CASE_PRESERVE> and
+C<DECC$ARGV_PARSE_STYLE> at start-up time.  The latter only takes effect
+when extended parse is enabled in the process from which Perl is run.
+
+=item *
+
+The character set for Extended Filename Syntax (EFS) is now enabled by default
+on VMS.  Among other things, this provides better handling of dots in directory
+names, multiple dots in filenames, and spaces in filenames.  To obtain the old
+behavior, set the logical name C<DECC$EFS_CHARSET> to C<DISABLE>.
+
+=item *
+
+Fixed linking on builds configured with C<-Dusemymalloc=y>.
+
+=item *
+
+Experimental support for building Perl with the HP C++ compiler is available
+by configuring with C<-Dusecxx>.
+
+=item *
+
+All C header files from the top-level directory of the distribution are now
+installed on VMS, providing consistency with a long-standing practice on other
+platforms. Previously only a subset were installed, which broke non-core
+extension builds for extensions that depended on the missing include files.
+
+=item *
+
+Quotes are now removed from the command verb (but not the parameters) for
+commands spawned via C<system>, backticks, or a piped C<open>.  Previously,
+quotes on the verb were passed through to DCL, which would fail to recognize
+the command.  Also, if the verb is actually a path to an image or command
+procedure on an ODS-5 volume, quoting it now allows the path to contain spaces.
+
+=item *
+
+The B<a2p> build has been fixed for the HP C++ compiler on OpenVMS.
+
+=back
+
+=head3 Win32
+
+=over
+
+=item *
+
+Perl can now be built using Microsoft's Visual C++ 2012 compiler by specifying
+CCTYPE=MSVC110 (or MSVC110FREE if you are using the free Express edition for
+Windows Desktop) in F<win32/Makefile>.
+
+=item *
+
+The option to build without C<USE_SOCKETS_AS_HANDLES> has been removed.
+
+=item *
+
+Fixed a problem where perl could crash while cleaning up threads (including the
+main thread) in threaded debugging builds on Win32 and possibly other platforms
+[perl #114496].
+
+=item *
+
+A rare race condition that would lead to L<sleep|perlfunc/sleep> taking more
+time than requested, and possibly even hanging, has been fixed [perl #33096].
+
+=item *
+
+C<link> on Win32 now attempts to set C<$!> to more appropriate values
+based on the Win32 API error code. [perl #112272]
+
+Perl no longer mangles the environment block, e.g. when launching a new
+sub-process, when the environment contains non-ASCII characters. Known
+problems still remain, however, when the environment contains characters
+outside of the current ANSI codepage (e.g. see the item about Unicode in
+C<%ENV> in L<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod>).
+[perl #113536]
+
+=item *
+
+Building perl with some Windows compilers used to fail due to a problem
+with miniperl's C<glob> operator (which uses the C<perlglob> program)
+deleting the PATH environment variable [perl #113798].
+
+=item *
+
+A new makefile option, C<USE_64_BIT_INT>, has been added to the Windows
+makefiles.  Set this to "define" when building a 32-bit perl if you want
+it to use 64-bit integers.
+
+Machine code size reductions, already made to the DLLs of XS modules in
+Perl v5.17.2, have now been extended to the perl DLL itself.
+
+Building with VC++ 6.0 was inadvertently broken in Perl v5.17.2 but has
+now been fixed again.
+
+=back
+
+=head3 WinCE
+
+Building on WinCE is now possible once again, although more work is required
+to fully restore a clean build.
+
+=head1 Internal Changes
+
+=over
+
+=item *
+
+Synonyms for the misleadingly named C<av_len()> have been created:
+C<av_top_index()> and C<av_tindex>.  All three of these return the
+number of the highest index in the array, not the number of elements it
+contains.
+
+=item *
+
+SvUPGRADE() is no longer an expression. Originally this macro (and its
+underlying function, sv_upgrade()) were documented as boolean, although
+in reality they always croaked on error and never returned false. In 2005
+the documentation was updated to specify a void return value, but
+SvUPGRADE() was left always returning 1 for backwards compatibility. This
+has now been removed, and SvUPGRADE() is now a statement with no return
+value.
+
+So this is now a syntax error:
+
+    if (!SvUPGRADE(sv)) { croak(...); }
+
+If you have code like that, simply replace it with
+
+    SvUPGRADE(sv);
+
+or to avoid compiler warnings with older perls, possibly
+
+    (void)SvUPGRADE(sv);
+
+=item *
+
+Perl has a new copy-on-write mechanism that allows any SvPOK scalar to be
+upgraded to a copy-on-write scalar.  A reference count on the string buffer
+is stored in the string buffer itself.  This feature is B<not enabled by
+default>.
+
+It can be enabled in a perl build by running F<Configure> with
+B<-Accflags=-DPERL_NEW_COPY_ON_WRITE>, and we would encourage XS authors
+to try their code with such an enabled perl, and provide feedback.
+Unfortunately, there is not yet a good guide to updating XS code to cope
+with COW.  Until such a document is available, consult the perl5-porters
+mailing list.
+
+It breaks a few XS modules by allowing copy-on-write scalars to go
+through code paths that never encountered them before.
+
+=item *
+
+Copy-on-write no longer uses the SvFAKE and SvREADONLY flags.  Hence,
+SvREADONLY indicates a true read-only SV.
+
+Use the SvIsCOW macro (as before) to identify a copy-on-write scalar.
+
+=item *
+
+C<PL_glob_index> is gone.
+
+=item *
+
+The private Perl_croak_no_modify has had its context parameter removed.  It is
+now has a void prototype.  Users of the public API croak_no_modify remain
+unaffected.
+
+=item *
+
+Copy-on-write (shared hash key) scalars are no longer marked read-only.
+C<SvREADONLY> returns false on such an SV, but C<SvIsCOW> still returns
+true.
+
+=item *
+
+A new op type, C<OP_PADRANGE> has been introduced.  The perl peephole
+optimiser will, where possible, substitute a single padrange op for a
+pushmark followed by one or more pad ops, and possibly also skipping list
+and nextstate ops.  In addition, the op can carry out the tasks associated
+with the RHS of a C<< my(...) = @_ >> assignment, so those ops may be optimised
+away too.
+
+=item *
+
+Case-insensitive matching inside a [bracketed] character class with a
+multi-character fold no longer excludes one of the possibilities in the
+circumstances that it used to. [perl #89774].
+
+=item *
+
+C<PL_formfeed> has been removed.
+
+=item *
+
+The regular expression engine no longer reads one byte past the end of the
+target string.  While for all internally well-formed scalars this should
+never have been a problem, this change facilitates clever tricks with
+string buffers in CPAN modules.  [perl #73542]
+
+=item *
+
+Inside a BEGIN block, C<PL_compcv> now points to the currently-compiling
+subroutine, rather than the BEGIN block itself.
+
+=item *
+
+C<mg_length> has been deprecated.
+
+=item *
+
+C<sv_len> now always returns a byte count and C<sv_len_utf8> a character
+count.  Previously, C<sv_len> and C<sv_len_utf8> were both buggy and would
+sometimes returns bytes and sometimes characters.  C<sv_len_utf8> no longer
+assumes that its argument is in UTF-8.  Neither of these creates UTF-8 caches
+for tied or overloaded values or for non-PVs any more.
+
+=item *
+
+C<sv_mortalcopy> now copies string buffers of shared hash key scalars when
+called from XS modules [perl #79824].
+
+=item *
+
+C<RXf_SPLIT> and C<RXf_SKIPWHITE> are no longer used.  They are now
+#defined as 0.
+
+=item *
+
+The new C<RXf_MODIFIES_VARS> flag can be set by custom regular expression
+engines to indicate that the execution of the regular expression may cause
+variables to be modified.  This lets C<s///> know to skip certain
+optimisations.  Perl's own regular expression engine sets this flag for the
+special backtracking verbs that set $REGMARK and $REGERROR.
+
+=item *
+
+The APIs for accessing lexical pads have changed considerably.
+
+C<PADLIST>s are now longer C<AV>s, but their own type instead.
+C<PADLIST>s now contain a C<PAD> and a C<PADNAMELIST> of C<PADNAME>s,
+rather than C<AV>s for the pad and the list of pad names.  C<PAD>s,
+C<PADNAMELIST>s, and C<PADNAME>s are to be accessed as such through the
+newly added pad API instead of the plain C<AV> and C<SV> APIs.  See
+L<perlapi> for details.
+
+=item *
+
+In the regex API, the numbered capture callbacks are passed an index
+indicating what match variable is being accessed. There are special
+index values for the C<$`, $&, $&> variables. Previously the same three
+values were used to retrieve C<${^PREMATCH}, ${^MATCH}, ${^POSTMATCH}>
+too, but these have now been assigned three separate values. See
+L<perlreapi/Numbered capture callbacks>.
+
+=item *
+
+C<PL_sawampersand> was previously a boolean indicating that any of
+C<$`, $&, $&> had been seen; it now contains three one-bit flags
+indicating the presence of each of the variables individually.
+
+=item *
+
+The C<CV *> typemap entry now supports C<&{}> overloading and typeglobs,
+just like C<&{...}> [perl #96872].
+
+=item *
+
+The C<SVf_AMAGIC> flag to indicate overloading is now on the stash, not the
+object.  It is now set automatically whenever a method or @ISA changes, so
+its meaning has changed, too.  It now means "potentially overloaded".  When
+the overload table is calculated, the flag is automatically turned off if
+there is no overloading, so there should be no noticeable slowdown.
+
+The staleness of the overload tables is now checked when overload methods
+are invoked, rather than during C<bless>.
+
+"A" magic is gone.  The changes to the handling of the C<SVf_AMAGIC> flag
+eliminate the need for it.
+
+C<PL_amagic_generation> has been removed as no longer necessary.  For XS
+modules, it is now a macro alias to C<PL_na>.
+
+The fallback overload setting is now stored in a stash entry separate from
+overloadedness itself.
+
+=item *
+
+The character-processing code has been cleaned up in places.  The changes
+should be operationally invisible.
+
+=item *
+
+The C<study> function was made a no-op in v5.16.  It was simply disabled via
+a C<return> statement; the code was left in place.  Now the code supporting
+what C<study> used to do has been removed.
+
+=item *
+
+Under threaded perls, there is no longer a separate PV allocated for every
+COP to store its package name (C<< cop->stashpv >>).  Instead, there is an
+offset (C<< cop->stashoff >>) into the new C<PL_stashpad> array, which
+holds stash pointers.
+
+=item *
+
+In the pluggable regex API, the C<regexp_engine> struct has acquired a new
+field C<op_comp>, which is currently just for perl's internal use, and
+should be initialized to NULL by other regex plugin modules.
+
+=item *
+
+A new function C<alloccopstash> has been added to the API, but is considered
+experimental.  See L<perlapi>.
+
+=item *
+
+Perl used to implement get magic in a way that would sometimes hide bugs in
+code that could call mg_get() too many times on magical values.  This hiding of
+errors no longer occurs, so long-standing bugs may become visible now.  If
+you see magic-related errors in XS code, check to make sure it, together
+with the Perl API functions it uses, calls mg_get() only once on SvGMAGICAL()
+values.
+
+=item *
+
+OP allocation for CVs now uses a slab allocator.  This simplifies
+memory management for OPs allocated to a CV, so cleaning up after a
+compilation error is simpler and safer [perl #111462][perl #112312].
+
+=item *
+
+C<PERL_DEBUG_READONLY_OPS> has been rewritten to work with the new slab
+allocator, allowing it to catch more violations than before.
+
+=item *
+
+The old slab allocator for ops, which was only enabled for C<PERL_IMPLICIT_SYS>
+and C<PERL_DEBUG_READONLY_OPS>, has been retired.
+
+=back
+
+=head1 Selected Bug Fixes
+
+=over 4
+
+=item *
+
+Here document terminators no longer require a terminating newline character when
+they occur at the end of a file.  This was already the case at the end of a
+string eval [perl #65838].
+
+=item *
+
+C<-DPERL_GLOBAL_STRUCT> builds now free the global struct B<after>
+they've finished using it.
+
+=item *
+
+A trailing '/' on a path in @INC will no longer have an additional '/'
+appended.
+
+=item *
+
+The C<:crlf> layer now works when unread data doesn't fit into its own
+buffer. [perl #112244].
+
+=item *
+
+C<ungetc()> now handles UTF-8 encoded data. [perl #116322].
+
+=item *
+
+A bug in the core typemap caused any C types that map to the T_BOOL core
+typemap entry to not be set, updated, or modified when the T_BOOL variable was
+used in an OUTPUT: section with an exception for RETVAL. T_BOOL in an INPUT:
+section was not affected. Using a T_BOOL return type for an XSUB (RETVAL)
+was not affected. A side effect of fixing this bug is, if a T_BOOL is specified
+in the OUTPUT: section (which previous did nothing to the SV), and a read only
+SV (literal) is passed to the XSUB, croaks like "Modification of a read-only
+value attempted" will happen. [perl #115796]
+
+=item *
+
+On many platforms, providing a directory name as the script name caused perl
+to do nothing and report success.  It should now universally report an error
+and exit nonzero. [perl #61362]
+
+=item *
+
+C<sort {undef} ...> under fatal warnings no longer crashes.  It had
+begun crashing in Perl v5.16.
+
+=item *
+
+Stashes blessed into each other
+(C<bless \%Foo::, 'Bar'; bless \%Bar::, 'Foo'>) no longer result in double
+frees.  This bug started happening in Perl v5.16.
+
+=item *
+
+Numerous memory leaks have been fixed, mostly involving fatal warnings and
+syntax errors.
+
+=item *
+
+Some failed regular expression matches such as C<'f' =~ /../g> were not
+resetting C<pos>.  Also, "match-once" patterns (C<m?...?g>) failed to reset
+it, too, when invoked a second time [perl #23180].
+
+=item *
+
+Several bugs involving C<local *ISA> and C<local *Foo::> causing stale
+MRO caches have been fixed.
+
+=item *
+
+Defining a subroutine when its typeglob has been aliased no longer results
+in stale method caches.  This bug was introduced in Perl v5.10.
+
+=item *
+
+Localising a typeglob containing a subroutine when the typeglob's package
+has been deleted from its parent stash no longer produces an error.  This
+bug was introduced in Perl v5.14.
+
+=item *
+
+Under some circumstances, C<local *method=...> would fail to reset method
+caches upon scope exit.
+
+=item *
+
+C</[.foo.]/> is no longer an error, but produces a warning (as before) and
+is treated as C</[.fo]/> [perl #115818].
+
+=item *
+
+C<goto $tied_var> now calls FETCH before deciding what type of goto
+(subroutine or label) this is.
+
+=item *
+
+Renaming packages through glob assignment
+(C<*Foo:: = *Bar::; *Bar:: = *Baz::>) in combination with C<m?...?> and
+C<reset> no longer makes threaded builds crash.
+
+=item *
+
+A number of bugs related to assigning a list to hash have been fixed. Many of
+these involve lists with repeated keys like C<(1, 1, 1, 1)>.
+
+=over 4
+
+=item *
+
+The expression C<scalar(%h = (1, 1, 1, 1))> now returns C<4>, not C<2>.
+
+=item *
+
+The return value of C<%h = (1, 1, 1)> in list context was wrong. Previously
+this would return C<(1, undef, 1)>, now it returns C<(1, undef)>.
+
+=item *
+
+Perl now issues the same warning on C<($s, %h) = (1, {})> as it does for
+C<(%h) = ({})>, "Reference found where even-sized list expected".
+
+=item *
+
+A number of additional edge cases in list assignment to hashes were
+corrected. For more details see commit 23b7025ebc.
+
+=back
+
+=item *
+
+Attributes applied to lexical variables no longer leak memory.
+[perl #114764]
+
+=item *
+
+C<dump>, C<goto>, C<last>, C<next>, C<redo> or C<require> followed by a
+bareword (or version) and then an infix operator is no longer a syntax
+error.  It used to be for those infix operators (like C<+>) that have a
+different meaning where a term is expected.  [perl #105924]
+
+=item *
+
+C<require a::b . 1> and C<require a::b + 1> no longer produce erroneous
+ambiguity warnings.  [perl #107002]
+
+=item *
+
+Class method calls are now allowed on any string, and not just strings
+beginning with an alphanumeric character.  [perl #105922]
+
+=item *
+
+An empty pattern created with C<qr//> used in C<m///> no longer triggers
+the "empty pattern reuses last pattern" behaviour.  [perl #96230]
+
+=item *
+
+Tying a hash during iteration no longer results in a memory leak.
+
+=item *
+
+Freeing a tied hash during iteration no longer results in a memory leak.
+
+=item *
+
+List assignment to a tied array or hash that dies on STORE no longer
+results in a memory leak.
+
+=item *
+
+If the hint hash (C<%^H>) is tied, compile-time scope entry (which copies
+the hint hash) no longer leaks memory if FETCH dies.  [perl #107000]
+
+=item *
+
+Constant folding no longer inappropriately triggers the special
+C<split " "> behaviour.  [perl #94490]
+
+=item *
+
+C<defined scalar(@array)>, C<defined do { &foo }>, and similar constructs
+now treat the argument to C<defined> as a simple scalar.  [perl #97466]
+
+=item *
+
+Running a custom debugging that defines no C<*DB::DB> glob or provides a
+subroutine stub for C<&DB::DB> no longer results in a crash, but an error
+instead.  [perl #114990]
+
+=item *
+
+C<reset ""> now matches its documentation.  C<reset> only resets C<m?...?>
+patterns when called with no argument.  An empty string for an argument now
+does nothing.  (It used to be treated as no argument.)  [perl #97958]
+
+=item *
+
+C<printf> with an argument returning an empty list no longer reads past the
+end of the stack, resulting in erratic behaviour.  [perl #77094]
+
+=item *
+
+C<--subname> no longer produces erroneous ambiguity warnings.
+[perl #77240]
+
+=item *
+
+C<v10> is now allowed as a label or package name.  This was inadvertently
+broken when v-strings were added in Perl v5.6.  [perl #56880]
+
+=item *
+
+C<length>, C<pos>, C<substr> and C<sprintf> could be confused by ties,
+overloading, references and typeglobs if the stringification of such
+changed the internal representation to or from UTF-8.  [perl #114410]
+
+=item *
+
+utf8::encode now calls FETCH and STORE on tied variables.  utf8::decode now
+calls STORE (it was already calling FETCH).
+
+=item *
+
+C<$tied =~ s/$non_utf8/$utf8/> no longer loops infinitely if the tied
+variable returns a Latin-1 string, shared hash key scalar, or reference or
+typeglob that stringifies as ASCII or Latin-1.  This was a regression from
+v5.12.
+
+=item *
+
+C<s///> without /e is now better at detecting when it needs to forego
+certain optimisations, fixing some buggy cases:
+
+=over
+
+=item *
+
+Match variables in certain constructs (C<&&>, C<||>, C<..> and others) in
+the replacement part; e.g., C<s/(.)/$l{$a||$1}/g>.  [perl #26986]
+
+=item *
+
+Aliases to match variables in the replacement.
+
+=item *
+
+C<$REGERROR> or C<$REGMARK> in the replacement.  [perl #49190]
+
+=item *
+
+An empty pattern (C<s//$foo/>) that causes the last-successful pattern to
+be used, when that pattern contains code blocks that modify the variables
+in the replacement.
+
+=back
+
+=item *
+
+The taintedness of the replacement string no longer affects the taintedness
+of the return value of C<s///e>.
+
+=item *
+
+The C<$|> autoflush variable is created on-the-fly when needed.  If this
+happened (e.g., if it was mentioned in a module or eval) when the
+currently-selected filehandle was a typeglob with an empty IO slot, it used
+to crash.  [perl #115206]
+
+=item *
+
+Line numbers at the end of a string eval are no longer off by one.
+[perl #114658]
+
+=item *
+
+ at INC filters (subroutines returned by subroutines in @INC) that set $_ to a
+copy-on-write scalar no longer cause the parser to modify that string
+buffer in place.
+
+=item *
+
+C<length($object)> no longer returns the undefined value if the object has
+string overloading that returns undef.  [perl #115260]
+
+=item *
+
+The use of C<PL_stashcache>, the stash name lookup cache for method calls, has
+been restored,
+
+Commit da6b625f78f5f133 in August 2011 inadvertently broke the code that looks
+up values in C<PL_stashcache>. As it's a only cache, quite correctly everything
+carried on working without it.
+
+=item *
+
+The error "Can't localize through a reference" had disappeared in v5.16.0
+when C<local %$ref> appeared on the last line of an lvalue subroutine.
+This error disappeared for C<\local %$ref> in perl v5.8.1.  It has now
+been restored.
+
+=item *
+
+The parsing of here-docs has been improved significantly, fixing several
+parsing bugs and crashes and one memory leak, and correcting wrong
+subsequent line numbers under certain conditions.
+
+=item *
+
+Inside an eval, the error message for an unterminated here-doc no longer
+has a newline in the middle of it [perl #70836].
+
+=item *
+
+A substitution inside a substitution pattern (C<s/${s|||}//>) no longer
+confuses the parser.
+
+=item *
+
+It may be an odd place to allow comments, but C<s//"" # hello/e> has
+always worked, I<unless> there happens to be a null character before the
+first #.  Now it works even in the presence of nulls.
+
+=item *
+
+An invalid range in C<tr///> or C<y///> no longer results in a memory leak.
+
+=item *
+
+String eval no longer treats a semicolon-delimited quote-like operator at
+the very end (C<eval 'q;;'>) as a syntax error.
+
+=item *
+
+C<< warn {$_ => 1} + 1 >> is no longer a syntax error.  The parser used to
+get confused with certain list operators followed by an anonymous hash and
+then an infix operator that shares its form with a unary operator.
+
+=item *
+
+C<(caller $n)[6]> (which gives the text of the eval) used to return the
+actual parser buffer.  Modifying it could result in crashes.  Now it always
+returns a copy.  The string returned no longer has "\n;" tacked on to the
+end.  The returned text also includes here-doc bodies, which used to be
+omitted.
+
+=item *
+
+The UTF-8 position cache is now reset when accessing magical variables, to
+avoid the string buffer and the UTF-8 position cache getting out of sync
+[perl #114410].
+
+=item *
+
+Various cases of get magic being called twice for magical UTF-8
+strings have been fixed.
+
+=item *
+
+This code (when not in the presence of C<$&> etc)
+
+    $_ = 'x' x 1_000_000;
+    1 while /(.)/;
+
+used to skip the buffer copy for performance reasons, but suffered from C<$1>
+etc changing if the original string changed.  That's now been fixed.
+
+=item *
+
+Perl doesn't use PerlIO anymore to report out of memory messages, as PerlIO
+might attempt to allocate more memory.
+
+=item *
+
+In a regular expression, if something is quantified with C<{n,m}> where
+C<S<n E<gt> m>>, it can't possibly match.  Previously this was a fatal
+error, but now is merely a warning (and that something won't match).
+[perl #82954].
+
+=item *
+
+It used to be possible for formats defined in subroutines that have
+subsequently been undefined and redefined to close over variables in the
+wrong pad (the newly-defined enclosing sub), resulting in crashes or
+"Bizarre copy" errors.
+
+=item *
+
+Redefinition of XSUBs at run time could produce warnings with the wrong
+line number.
+
+=item *
+
+The %vd sprintf format does not support version objects for alpha versions.
+It used to output the format itself (%vd) when passed an alpha version, and
+also emit an "Invalid conversion in printf" warning.  It no longer does,
+but produces the empty string in the output.  It also no longer leaks
+memory in this case.
+
+=item *
+
+C<< $obj->SUPER::method >> calls in the main package could fail if the
+SUPER package had already been accessed by other means.
+
+=item *
+
+Stash aliasing (C<< *foo:: = *bar:: >>) no longer causes SUPER calls to ignore
+changes to methods or @ISA or use the wrong package.
+
+=item *
+
+Method calls on packages whose names end in ::SUPER are no longer treated
+as SUPER method calls, resulting in failure to find the method.
+Furthermore, defining subroutines in such packages no longer causes them to
+be found by SUPER method calls on the containing package [perl #114924].
+
+=item *
+
+C<\w> now matches the code points U+200C (ZERO WIDTH NON-JOINER) and U+200D
+(ZERO WIDTH JOINER).  C<\W> no longer matches these.  This change is because
+Unicode corrected their definition of what C<\w> should match.
+
+=item *
+
+C<dump LABEL> no longer leaks its label.
+
+=item *
+
+Constant folding no longer changes the behaviour of functions like C<stat()>
+and C<truncate()> that can take either filenames or handles.
+C<stat 1 ? foo : bar> nows treats its argument as a file name (since it is an
+arbitrary expression), rather than the handle "foo".
+
+=item *
+
+C<truncate FOO, $len> no longer falls back to treating "FOO" as a file name if
+the filehandle has been deleted.  This was broken in Perl v5.16.0.
+
+=item *
+
+Subroutine redefinitions after sub-to-glob and glob-to-glob assignments no
+longer cause double frees or panic messages.
+
+=item *
+
+C<s///> now turns vstrings into plain strings when performing a substitution,
+even if the resulting string is the same (C<s/a/a/>).
+
+=item *
+
+Prototype mismatch warnings no longer erroneously treat constant subs as having
+no prototype when they actually have "".
+
+=item *
+
+Constant subroutines and forward declarations no longer prevent prototype
+mismatch warnings from omitting the sub name.
+
+=item *
+
+C<undef> on a subroutine now clears call checkers.
+
+=item *
+
+The C<ref> operator started leaking memory on blessed objects in Perl v5.16.0.
+This has been fixed [perl #114340].
+
+=item *
+
+C<use> no longer tries to parse its arguments as a statement, making
+C<use constant { () };> a syntax error [perl #114222].
+
+=item *
+
+On debugging builds, "uninitialized" warnings inside formats no longer cause
+assertion failures.
+
+=item *
+
+On debugging builds, subroutines nested inside formats no longer cause
+assertion failures [perl #78550].
+
+=item *
+
+Formats and C<use> statements are now permitted inside formats.
+
+=item *
+
+C<print $x> and C<sub { print $x }-E<gt>()> now always produce the same output.
+It was possible for the latter to refuse to close over $x if the variable was
+not active; e.g., if it was defined outside a currently-running named
+subroutine.
+
+=item *
+
+Similarly, C<print $x> and C<print eval '$x'> now produce the same output.
+This also allows "my $x if 0" variables to be seen in the debugger [perl
+#114018].
+
+=item *
+
+Formats called recursively no longer stomp on their own lexical variables, but
+each recursive call has its own set of lexicals.
+
+=item *
+
+Attempting to free an active format or the handle associated with it no longer
+results in a crash.
+
+=item *
+
+Format parsing no longer gets confused by braces, semicolons and low-precedence
+operators.  It used to be possible to use braces as format delimiters (instead
+of C<=> and C<.>), but only sometimes.  Semicolons and low-precedence operators
+in format argument lines no longer confuse the parser into ignoring the line's
+return value.  In format argument lines, braces can now be used for anonymous
+hashes, instead of being treated always as C<do> blocks.
+
+=item *
+
+Formats can now be nested inside code blocks in regular expressions and other
+quoted constructs (C</(?{...})/> and C<qq/${...}/>) [perl #114040].
+
+=item *
+
+Formats are no longer created after compilation errors.
+
+=item *
+
+Under debugging builds, the B<-DA> command line option started crashing in Perl
+v5.16.0.  It has been fixed [perl #114368].
+
+=item *
+
+A potential deadlock scenario involving the premature termination of a pseudo-
+forked child in a Windows build with ithreads enabled has been fixed.  This
+resolves the common problem of the F<t/op/fork.t> test hanging on Windows [perl
+#88840].
+
+=item *
+
+The code which generates errors from C<require()> could potentially read one or
+two bytes before the start of the filename for filenames less than three bytes
+long and ending C</\.p?\z/>.  This has now been fixed.  Note that it could
+never have happened with module names given to C<use()> or C<require()> anyway.
+
+=item *
+
+The handling of pathnames of modules given to C<require()> has been made
+thread-safe on VMS.
+
+=item *
+
+Non-blocking sockets have been fixed on VMS.
+
+=item *
+
+Pod can now be nested in code inside a quoted construct outside of a string
+eval.  This used to work only within string evals [perl #114040].
+
+=item *
+
+C<goto ''> now looks for an empty label, producing the "goto must have
+label" error message, instead of exiting the program [perl #111794].
+
+=item *
+
+C<goto "\0"> now dies with "Can't find label" instead of "goto must have
+label".
+
+=item *
+
+The C function C<hv_store> used to result in crashes when used on C<%^H>
+[perl #111000].
+
+=item *
+
+A call checker attached to a closure prototype via C<cv_set_call_checker>
+is now copied to closures cloned from it.  So C<cv_set_call_checker> now
+works inside an attribute handler for a closure.
+
+=item *
+
+Writing to C<$^N> used to have no effect.  Now it croaks with "Modification
+of a read-only value" by default, but that can be overridden by a custom
+regular expression engine, as with C<$1> [perl #112184].
+
+=item *
+
+C<undef> on a control character glob (C<undef *^H>) no longer emits an
+erroneous warning about ambiguity [perl #112456].
+
+=item *
+
+For efficiency's sake, many operators and built-in functions return the
+same scalar each time.  Lvalue subroutines and subroutines in the CORE::
+namespace were allowing this implementation detail to leak through.
+C<print &CORE::uc("a"), &CORE::uc("b")> used to print "BB".  The same thing
+would happen with an lvalue subroutine returning the return value of C<uc>.
+Now the value is copied in such cases.
+
+=item *
+
+C<method {}> syntax with an empty block or a block returning an empty list
+used to crash or use some random value left on the stack as its invocant.
+Now it produces an error.
+
+=item *
+
+C<vec> now works with extremely large offsets (E<gt>2 GB) [perl #111730].
+
+=item *
+
+Changes to overload settings now take effect immediately, as do changes to
+inheritance that affect overloading.  They used to take effect only after
+C<bless>.
+
+Objects that were created before a class had any overloading used to remain
+non-overloaded even if the class gained overloading through C<use overload>
+or @ISA changes, and even after C<bless>.  This has been fixed
+[perl #112708].
+
+=item *
+
+Classes with overloading can now inherit fallback values.
+
+=item *
+
+Overloading was not respecting a fallback value of 0 if there were
+overloaded objects on both sides of an assignment operator like C<+=>
+[perl #111856].
+
+=item *
+
+C<pos> now croaks with hash and array arguments, instead of producing
+erroneous warnings.
+
+=item *
+
+C<while(each %h)> now implies C<while(defined($_ = each %h))>, like
+C<readline> and C<readdir>.
+
+=item *
+
+Subs in the CORE:: namespace no longer crash after C<undef *_> when called
+with no argument list (C<&CORE::time> with no parentheses).
+
+=item *
+
+C<unpack> no longer produces the "'/' must follow a numeric type in unpack"
+error when it is the data that are at fault [perl #60204].
+
+=item *
+
+C<join> and C<"@array"> now call FETCH only once on a tied C<$">
+[perl #8931].
+
+=item *
+
+Some subroutine calls generated by compiling core ops affected by a
+C<CORE::GLOBAL> override had op checking performed twice.  The checking
+is always idempotent for pure Perl code, but the double checking can
+matter when custom call checkers are involved.
+
+=item *
+
+A race condition used to exist around fork that could cause a signal sent to
+the parent to be handled by both parent and child. Signals are now blocked
+briefly around fork to prevent this from happening [perl #82580].
+
+=item *
+
+The implementation of code blocks in regular expressions, such as C<(?{})>
+and C<(??{})>, has been heavily reworked to eliminate a whole slew of bugs.
+The main user-visible changes are:
+
+=over 4
+
+=item *
+
+Code blocks within patterns are now parsed in the same pass as the
+surrounding code; in particular it is no longer necessary to have balanced
+braces: this now works:
+
+    /(?{  $x='{'  })/
+
+This means that this error message is no longer generated:
+
+    Sequence (?{...}) not terminated or not {}-balanced in regex
+
+but a new error may be seen:
+
+    Sequence (?{...}) not terminated with ')'
+
+In addition, literal code blocks within run-time patterns are only
+compiled once, at perl compile-time:
+
+    for my $p (...) {
+        # this 'FOO' block of code is compiled once,
+	# at the same time as the surrounding 'for' loop
+        /$p{(?{FOO;})/;
+    }
+
+=item *
+
+Lexical variables are now sane as regards scope, recursion and closure
+behavior. In particular, C</A(?{B})C/> behaves (from a closure viewpoint)
+exactly like C</A/ && do { B } && /C/>, while  C<qr/A(?{B})C/> is like
+C<sub {/A/ && do { B } && /C/}>. So this code now works how you might
+expect, creating three regexes that match 0, 1, and 2:
+
+    for my $i (0..2) {
+        push @r, qr/^(??{$i})$/;
+    }
+    "1" =~ $r[1]; # matches
+
+=item *
+
+The C<use re 'eval'> pragma is now only required for code blocks defined
+at runtime; in particular in the following, the text of the C<$r> pattern is
+still interpolated into the new pattern and recompiled, but the individual
+compiled code-blocks within C<$r> are reused rather than being recompiled,
+and C<use re 'eval'> isn't needed any more:
+
+    my $r = qr/abc(?{....})def/;
+    /xyz$r/;
+
+=item *
+
+Flow control operators no longer crash. Each code block runs in a new
+dynamic scope, so C<next> etc. will not see
+any enclosing loops. C<return> returns a value
+from the code block, not from any enclosing subroutine.
+
+=item *
+
+Perl normally caches the compilation of run-time patterns, and doesn't
+recompile if the pattern hasn't changed, but this is now disabled if
+required for the correct behavior of closures. For example:
+
+    my $code = '(??{$x})';
+    for my $x (1..3) {
+	# recompile to see fresh value of $x each time
+        $x =~ /$code/;
+    }
+
+=item *
+
+The C</msix> and C<(?msix)> etc. flags are now propagated into the return
+value from C<(??{})>; this now works:
+
+    "AB" =~ /a(??{'b'})/i;
+
+=item *
+
+Warnings and errors will appear to come from the surrounding code (or for
+run-time code blocks, from an eval) rather than from an C<re_eval>:
+
+    use re 'eval'; $c = '(?{ warn "foo" })'; /$c/;
+    /(?{ warn "foo" })/;
+
+formerly gave:
+
+    foo at (re_eval 1) line 1.
+    foo at (re_eval 2) line 1.
+
+and now gives:
+
+    foo at (eval 1) line 1.
+    foo at /some/prog line 2.
+
+=back
+
+=item *
+
+Perl now can be recompiled to use any Unicode version.  In v5.16, it
+worked on Unicodes 6.0 and 6.1, but there were various bugs if earlier
+releases were used; the older the release the more problems.
+
+=item *
+
+C<vec> no longer produces "uninitialized" warnings in lvalue context
+[perl #9423].
+
+=item *
+
+An optimization involving fixed strings in regular expressions could cause
+a severe performance penalty in edge cases.  This has been fixed
+[perl #76546].
+
+=item *
+
+In certain cases, including empty subpatterns within a regular expression (such
+as C<(?:)> or C<(?:|)>) could disable some optimizations. This has been fixed.
+
+=item *
+
+The "Can't find an opnumber" message that C<prototype> produces when passed
+a string like "CORE::nonexistent_keyword" now passes UTF-8 and embedded
+NULs through unchanged [perl #97478].
+
+=item *
+
+C<prototype> now treats magical variables like C<$1> the same way as
+non-magical variables when checking for the CORE:: prefix, instead of
+treating them as subroutine names.
+
+=item *
+
+Under threaded perls, a runtime code block in a regular expression could
+corrupt the package name stored in the op tree, resulting in bad reads
+in C<caller>, and possibly crashes [perl #113060].
+
+=item *
+
+Referencing a closure prototype (C<\&{$_[1]}> in an attribute handler for a
+closure) no longer results in a copy of the subroutine (or assertion
+failures on debugging builds).
+
+=item *
+
+C<eval '__PACKAGE__'> now returns the right answer on threaded builds if
+the current package has been assigned over (as in
+C<*ThisPackage:: = *ThatPackage::>) [perl #78742].
+
+=item *
+
+If a package is deleted by code that it calls, it is possible for C<caller>
+to see a stack frame belonging to that deleted package.  C<caller> could
+crash if the stash's memory address was reused for a scalar and a
+substitution was performed on the same scalar [perl #113486].
+
+=item *
+
+C<UNIVERSAL::can> no longer treats its first argument differently
+depending on whether it is a string or number internally.
+
+=item *
+
+C<open> with C<< <& >> for the mode checks to see whether the third argument is
+a number, in determining whether to treat it as a file descriptor or a handle
+name.  Magical variables like C<$1> were always failing the numeric check and
+being treated as handle names.
+
+=item *
+
+C<warn>'s handling of magical variables (C<$1>, ties) has undergone several
+fixes.  C<FETCH> is only called once now on a tied argument or a tied C<$@>
+[perl #97480].  Tied variables returning objects that stringify as "" are
+no longer ignored.  A tied C<$@> that happened to return a reference the
+I<previous> time it was used is no longer ignored.
+
+=item *
+
+C<warn ""> now treats C<$@> with a number in it the same way, regardless of
+whether it happened via C<$@=3> or C<$@="3">.  It used to ignore the
+former.  Now it appends "\t...caught", as it has always done with
+C<$@="3">.
+
+=item *
+
+Numeric operators on magical variables (e.g., S<C<$1 + 1>>) used to use
+floating point operations even where integer operations were more appropriate,
+resulting in loss of accuracy on 64-bit platforms [perl #109542].
+
+=item *
+
+Unary negation no longer treats a string as a number if the string happened
+to be used as a number at some point.  So, if C<$x> contains the string "dogs",
+C<-$x> returns "-dogs" even if C<$y=0+$x> has happened at some point.
+
+=item *
+
+In Perl v5.14, C<-'-10'> was fixed to return "10", not "+10".  But magical
+variables (C<$1>, ties) were not fixed till now [perl #57706].
+
+=item *
+
+Unary negation now treats strings consistently, regardless of the internal
+C<UTF8> flag.
+
+=item *
+
+A regression introduced in Perl v5.16.0 involving
+C<tr/I<SEARCHLIST>/I<REPLACEMENTLIST>/> has been fixed.  Only the first
+instance is supposed to be meaningful if a character appears more than
+once in C<I<SEARCHLIST>>.  Under some circumstances, the final instance
+was overriding all earlier ones.  [perl #113584]
+
+=item *
+
+Regular expressions like C<qr/\87/> previously silently inserted a NUL
+character, thus matching as if it had been written C<qr/\00087/>.  Now it
+matches as if it had been written as C<qr/87/>, with a message that the
+sequence C<"\8"> is unrecognized.
+
+=item *
+
+C<__SUB__> now works in special blocks (C<BEGIN>, C<END>, etc.).
+
+=item *
+
+Thread creation on Windows could theoretically result in a crash if done
+inside a C<BEGIN> block.  It still does not work properly, but it no longer
+crashes [perl #111610].
+
+=item *
+
+C<\&{''}> (with the empty string) now autovivifies a stub like any other
+sub name, and no longer produces the "Unable to create sub" error
+[perl #94476].
+
+=item *
+
+A regression introduced in v5.14.0 has been fixed, in which some calls
+to the C<re> module would clobber C<$_> [perl #113750].
+
+=item *
+
+C<do FILE> now always either sets or clears C<$@>, even when the file can't be
+read. This ensures that testing C<$@> first (as recommended by the
+documentation) always returns the correct result.
+
+=item *
+
+The array iterator used for the C<each @array> construct is now correctly
+reset when C<@array> is cleared [perl #75596]. This happens, for example, when
+the array is globally assigned to, as in C<@array = (...)>, but not when its
+B<values> are assigned to. In terms of the XS API, it means that C<av_clear()>
+will now reset the iterator.
+
+This mirrors the behaviour of the hash iterator when the hash is cleared.
+
+=item *
+
+C<< $class->can >>, C<< $class->isa >>, and C<< $class->DOES >> now return
+correct results, regardless of whether that package referred to by C<$class>
+exists [perl #47113].
+
+=item *
+
+Arriving signals no longer clear C<$@> [perl #45173].
+
+=item *
+
+Allow C<my ()> declarations with an empty variable list [perl #113554].
+
+=item *
+
+During parsing, subs declared after errors no longer leave stubs
+[perl #113712].
+
+=item *
+
+Closures containing no string evals no longer hang on to their containing
+subroutines, allowing variables closed over by outer subroutines to be
+freed when the outer sub is freed, even if the inner sub still exists
+[perl #89544].
+
+=item *
+
+Duplication of in-memory filehandles by opening with a "<&=" or ">&=" mode
+stopped working properly in v5.16.0.  It was causing the new handle to
+reference a different scalar variable.  This has been fixed [perl #113764].
+
+=item *
+
+C<qr//> expressions no longer crash with custom regular expression engines
+that do not set C<offs> at regular expression compilation time
+[perl #112962].
+
+=item *
+
+C<delete local> no longer crashes with certain magical arrays and hashes
+[perl #112966].
+
+=item *
+
+C<local> on elements of certain magical arrays and hashes used not to
+arrange to have the element deleted on scope exit, even if the element did
+not exist before C<local>.
+
+=item *
+
+C<scalar(write)> no longer returns multiple items [perl #73690].
+
+=item *
+
+String to floating point conversions no longer misparse certain strings under
+C<use locale> [perl #109318].
+
+=item *
+
+C<@INC> filters that die no longer leak memory [perl #92252].
+
+=item *
+
+The implementations of overloaded operations are now called in the correct
+context. This allows, among other things, being able to properly override
+C<< <> >> [perl #47119].
+
+=item *
+
+Specifying only the C<fallback> key when calling C<use overload> now behaves
+properly [perl #113010].
+
+=item *
+
+C<< sub foo { my $a = 0; while ($a) { ... } } >> and
+C<< sub foo { while (0) { ... } } >> now return the same thing [perl #73618].
+
+=item *
+
+String negation now behaves the same under C<use integer;> as it does
+without [perl #113012].
+
+=item *
+
+C<chr> now returns the Unicode replacement character (U+FFFD) for -1,
+regardless of the internal representation.  -1 used to wrap if the argument
+was tied or a string internally.
+
+=item *
+
+Using a C<format> after its enclosing sub was freed could crash as of
+perl v5.12.0, if the format referenced lexical variables from the outer sub.
+
+=item *
+
+Using a C<format> after its enclosing sub was undefined could crash as of
+perl v5.10.0, if the format referenced lexical variables from the outer sub.
+
+=item *
+
+Using a C<format> defined inside a closure, which format references
+lexical variables from outside, never really worked unless the C<write>
+call was directly inside the closure.  In v5.10.0 it even started crashing.
+Now the copy of that closure nearest the top of the call stack is used to
+find those variables.
+
+=item *
+
+Formats that close over variables in special blocks no longer crash if a
+stub exists with the same name as the special block before the special
+block is compiled.
+
+=item *
+
+The parser no longer gets confused, treating C<eval foo ()> as a syntax
+error if preceded by C<print;> [perl #16249].
+
+=item *
+
+The return value of C<syscall> is no longer truncated on 64-bit platforms
+[perl #113980].
+
+=item *
+
+Constant folding no longer causes C<print 1 ? FOO : BAR> to print to the
+FOO handle [perl #78064].
+
+=item *
+
+C<do subname> now calls the named subroutine and uses the file name it
+returns, instead of opening a file named "subname".
+
+=item *
+
+Subroutines looked up by rv2cv check hooks (registered by XS modules) are
+now taken into consideration when determining whether C<foo bar> should be
+the sub call C<foo(bar)> or the method call C<< "bar"->foo >>.
+
+=item *
+
+C<CORE::foo::bar> is no longer treated specially, allowing global overrides
+to be called directly via C<CORE::GLOBAL::uc(...)> [perl #113016].
+
+=item *
+
+Calling an undefined sub whose typeglob has been undefined now produces the
+customary "Undefined subroutine called" error, instead of "Not a CODE
+reference".
+
+=item *
+
+Two bugs involving @ISA have been fixed.  C<*ISA = *glob_without_array> and
+C<undef *ISA; @{*ISA}> would prevent future modifications to @ISA from
+updating the internal caches used to look up methods.  The
+*glob_without_array case was a regression from Perl v5.12.
+
+=item *
+
+Regular expression optimisations sometimes caused C<$> with C</m> to
+produce failed or incorrect matches [perl #114068].
+
+=item *
+
+C<__SUB__> now works in a C<sort> block when the enclosing subroutine is
+predeclared with C<sub foo;> syntax [perl #113710].
+
+=item *
+
+Unicode properties only apply to Unicode code points, which leads to
+some subtleties when regular expressions are matched against
+above-Unicode code points.  There is a warning generated to draw your
+attention to this.  However, this warning was being generated
+inappropriately in some cases, such as when a program was being parsed.
+Non-Unicode matches such as C<\w> and C<[:word:]> should not generate the
+warning, as their definitions don't limit them to apply to only Unicode
+code points.  Now the message is only generated when matching against
+C<\p{}> and C<\P{}>.  There remains a bug, [perl #114148], for the very
+few properties in Unicode that match just a single code point.  The
+warning is not generated if they are matched against an above-Unicode
+code point.
+
+=item *
+
+Uninitialized warnings mentioning hash elements would only mention the
+element name if it was not in the first bucket of the hash, due to an
+off-by-one error.
+
+=item *
+
+A regular expression optimizer bug could cause multiline "^" to behave
+incorrectly in the presence of line breaks, such that
+C<"/\n\n" =~ m#\A(?:^/$)#im> would not match [perl #115242].
+
+=item *
+
+Failed C<fork> in list context no longer corrupts the stack.
+C<@a = (1, 2, fork, 3)> used to gobble up the 2 and assign C<(1, undef, 3)>
+if the C<fork> call failed.
+
+=item *
+
+Numerous memory leaks have been fixed, mostly involving tied variables that
+die, regular expression character classes and code blocks, and syntax
+errors.
+
+=item *
+
+Assigning a regular expression (C<${qr//}>) to a variable that happens to
+hold a floating point number no longer causes assertion failures on
+debugging builds.
+
+=item *
+
+Assigning a regular expression to a scalar containing a number no longer
+causes subsequent numification to produce random numbers.
+
+=item *
+
+Assigning a regular expression to a magic variable no longer wipes away the
+magic.  This was a regression from v5.10.
+
+=item *
+
+Assigning a regular expression to a blessed scalar no longer results in
+crashes.  This was also a regression from v5.10.
+
+=item *
+
+Regular expression can now be assigned to tied hash and array elements with
+flattening into strings.
+
+=item *
+
+Numifying a regular expression no longer results in an uninitialized
+warning.
+
+=item *
+
+Negative array indices no longer cause EXISTS methods of tied variables to
+be ignored.  This was a regression from v5.12.
+
+=item *
+
+Negative array indices no longer result in crashes on arrays tied to
+non-objects.
+
+=item *
+
+C<$byte_overload .= $utf8> no longer results in doubly-encoded UTF-8 if the
+left-hand scalar happened to have produced a UTF-8 string the last time
+overloading was invoked.
+
+=item *
+
+C<goto &sub> now uses the current value of @_, instead of using the array
+the subroutine was originally called with.  This means
+C<local @_ = (...); goto &sub> now works [perl #43077].
+
+=item *
+
+If a debugger is invoked recursively, it no longer stomps on its own
+lexical variables.  Formerly under recursion all calls would share the same
+set of lexical variables [perl #115742].
+
+=item *
+
+C<*_{ARRAY}> returned from a subroutine no longer spontaneously
+becomes empty.
+
+=back
+
+=head1 Known Problems
+
+=over 4
+
+=item *
+
+UTF8-flagged strings in C<%ENV> on HP-UX 11.00 are buggy
+
+The interaction of UTF8-flagged strings and C<%ENV> on HP-UX 11.00 is
+currently dodgy in some not-yet-fully-diagnosed way.  Expect test
+failures in F<t/op/magic.t>, followed by unknown behavior when storing
+wide characters in the environment.
+
+=back
+
+=head1 Obituary
+
+Hojung Yoon (AMORETTE), 24, of Seoul, South Korea, went to his long rest
+on May 8, 2013 with llama figurine and autographed TIMTOADY card.  He
+was a brilliant young Perl 5 & 6 hacker and a devoted member of
+Seoul.pm.  He programmed Perl, talked Perl, ate Perl, and loved Perl.  We
+believe that he is still programming in Perl with his broken IBM laptop
+somewhere.  He will be missed.
+
+=head1 Acknowledgements
+
+Perl v5.18.0 represents approximately 12 months of development since
+Perl v5.16.0 and contains approximately 400,000 lines of changes across
+2,100 files from 113 authors.
+
+Perl continues to flourish into its third decade thanks to a vibrant
+community of users and developers. The following people are known to
+have contributed the improvements that became Perl v5.18.0:
+
+Aaron Crane, Aaron Trevena, Abhijit Menon-Sen, Adrian M. Enache, Alan
+Haggai Alavi, Alexandr Ciornii, Andrew Tam, Andy Dougherty, Anton Nikishaev,
+Aristotle Pagaltzis, Augustina Blair, Bob Ernst, Brad Gilbert, Breno G. de
+Oliveira, Brian Carlson, Brian Fraser, Charlie Gonzalez, Chip Salzenberg, Chris
+'BinGOs' Williams, Christian Hansen, Colin Kuskie, Craig A. Berry, Dagfinn
+Ilmari Mannsåker, Daniel Dragan, Daniel Perrett, Darin McBride, Dave Rolsky,
+David Golden, David Leadbeater, David Mitchell, David Nicol, Dominic
+Hargreaves, E. Choroba, Eric Brine, Evan Miller, Father Chrysostomos, Florian
+Ragwitz, François Perrad, George Greer, Goro Fuji, H.Merijn Brand, Herbert
+Breunung, Hugo van der Sanden, Igor Zaytsev, James E Keenan, Jan Dubois,
+Jasmine Ahuja, Jerry D. Hedden, Jess Robinson, Jesse Luehrs, Joaquin Ferrero,
+Joel Berger, John Goodyear, John Peacock, Karen Etheridge, Karl Williamson,
+Karthik Rajagopalan, Kent Fredric, Leon Timmermans, Lucas Holt, Lukas Mai,
+Marcus Holland-Moritz, Markus Jansen, Martin Hasch, Matthew Horsfall, Max
+Maischein, Michael G Schwern, Michael Schroeder, Moritz Lenz, Nicholas Clark,
+Niko Tyni, Oleg Nesterov, Patrik Hägglund, Paul Green, Paul Johnson, Paul
+Marquess, Peter Martini, Rafael Garcia-Suarez, Reini Urban, Renee Baecker,
+Rhesa Rozendaal, Ricardo Signes, Robin Barker, Ronald J. Kimball, Ruslan
+Zakirov, Salvador Fandiño, Sawyer X, Scott Lanning, Sergey Alekseev, Shawn M
+Moore, Shirakata Kentaro, Shlomi Fish, Sisyphus, Smylers, Steffen Müller,
+Steve Hay, Steve Peters, Steven Schubiger, Sullivan Beck, Sven Strickroth,
+Sébastien Aperghis-Tramoni, Thomas Sibley, Tobias Leich, Tom Wyant, Tony Cook,
+Vadim Konovalov, Vincent Pit, Volker Schatz, Walt Mankowski, Yves Orton,
+Zefram.
+
+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 articles recently
+posted to the comp.lang.perl.misc newsgroup and the perl bug database at
+http://rt.perl.org/perlbug/ .  There may also be information at
+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 at 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 please send it
+to perl5-security-report at perl.org.  This points to a closed subscription
+unarchived mailing list, which includes all the core committers, who will be
+able to help assess the impact of issues, figure out a resolution, and help
+co-ordinate the release of patches to mitigate or fix the problem across all
+platforms on which Perl is supported.  Please only use this address for
+security issues in the Perl core, not for modules independently distributed on
+CPAN.
+
+=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

Added: vendor/perl/dist/pod/perldtrace.pod
===================================================================
--- vendor/perl/dist/pod/perldtrace.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perldtrace.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,236 @@
+=head1 NAME
+
+perldtrace - Perl's support for DTrace
+
+=head1 SYNOPSIS
+
+    # dtrace -Zn 'perl::sub-entry, perl::sub-return { trace(copyinstr(arg0)) }'
+    dtrace: description 'perl::sub-entry, perl::sub-return ' matched 10 probes
+
+    # perl -E 'sub outer { inner(@_) } sub inner { say shift } outer("hello")'
+    hello
+
+    (dtrace output)
+    CPU     ID                    FUNCTION:NAME
+      0  75915       Perl_pp_entersub:sub-entry   BEGIN
+      0  75915       Perl_pp_entersub:sub-entry   import
+      0  75922      Perl_pp_leavesub:sub-return   import
+      0  75922      Perl_pp_leavesub:sub-return   BEGIN
+      0  75915       Perl_pp_entersub:sub-entry   outer
+      0  75915       Perl_pp_entersub:sub-entry   inner
+      0  75922      Perl_pp_leavesub:sub-return   inner
+      0  75922      Perl_pp_leavesub:sub-return   outer
+
+=head1 DESCRIPTION
+
+DTrace is a framework for comprehensive system- and application-level
+tracing. Perl is a DTrace I<provider>, meaning it exposes several
+I<probes> for instrumentation. You can use these in conjunction
+with kernel-level probes, as well as probes from other providers
+such as MySQL, in order to diagnose software defects, or even just
+your application's bottlenecks.
+
+Perl must be compiled with the C<-Dusedtrace> option in order to
+make use of the provided probes. While DTrace aims to have no
+overhead when its instrumentation is not active, Perl's support
+itself cannot uphold that guarantee, so it is built without DTrace
+probes under most systems. One notable exception is that Mac OS X
+ships a F</usr/bin/perl> with DTrace support enabled.
+
+=head1 HISTORY
+
+=over 4
+
+=item 5.10.1
+
+Perl's initial DTrace support was added, providing C<sub-entry> and
+C<sub-return> probes.
+
+=item 5.14.0
+
+The C<sub-entry> and C<sub-return> probes gain a fourth argument: the
+package name of the function.
+
+=item 5.16.0
+
+The C<phase-change> probe was added.
+
+=item 5.18.0
+
+The C<op-entry>, C<loading-file>, and C<loaded-file> probes were added.
+
+=back
+
+=head1 PROBES
+
+=over 4
+
+=item sub-entry(SUBNAME, FILE, LINE, PACKAGE)
+
+Traces the entry of any subroutine. Note that all of the variables
+refer to the subroutine that is being invoked; there is currently
+no way to get ahold of any information about the subroutine's
+I<caller> from a DTrace action.
+
+    :*perl*::sub-entry {
+        printf("%s::%s entered at %s line %d\n",
+               copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2);
+    }
+
+=item sub-return(SUBNAME, FILE, LINE, PACKAGE)
+
+Traces the exit of any subroutine. Note that all of the variables
+refer to the subroutine that is returning; there is currently no
+way to get ahold of any information about the subroutine's I<caller>
+from a DTrace action.
+
+    :*perl*::sub-return {
+        printf("%s::%s returned at %s line %d\n",
+               copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2);
+    }
+
+=item phase-change(NEWPHASE, OLDPHASE)
+
+Traces changes to Perl's interpreter state. You can internalize this
+as tracing changes to Perl's C<${^GLOBAL_PHASE}> variable, especially
+since the values for C<NEWPHASE> and C<OLDPHASE> are the strings that
+C<${^GLOBAL_PHASE}> reports.
+
+    :*perl*::phase-change {
+        printf("Phase changed from %s to %s\n",
+            copyinstr(arg1), copyinstr(arg0));
+    }
+
+=item op-entry(OPNAME)
+
+Traces the execution of each opcode in the Perl runloop. This probe
+is fired before the opcode is executed. When the Perl debugger is
+enabled, the DTrace probe is fired I<after> the debugger hooks (but
+still before the opcode itself is executed).
+
+    :*perl*::op-entry {
+        printf("About to execute opcode %s\n", copyinstr(arg0));
+    }
+
+=item loading-file(FILENAME)
+
+Fires when Perl is about to load an individual file, whether from
+C<use>, C<require>, or C<do>. This probe fires before the file is
+read from disk. The filename argument is converted to local filesystem
+paths instead of providing C<Module::Name>-style names.
+
+    :*perl*:loading-file {
+        printf("About to load %s\n", copyinstr(arg0));
+    }
+
+=item loaded-file(FILENAME)
+
+Fires when Perl has successfully loaded an individual file, whether
+from C<use>, C<require>, or C<do>. This probe fires after the file
+is read from disk and its contentss evaluated. The filename argument
+is converted to local filesystem paths instead of providing
+C<Module::Name>-style names.
+
+    :*perl*:loaded-file {
+        printf("Successfully loaded %s\n", copyinstr(arg0));
+    }
+
+=back
+
+=head1 EXAMPLES
+
+=over 4
+
+=item Most frequently called functions
+
+    # dtrace -qZn 'sub-entry { @[strjoin(strjoin(copyinstr(arg3),"::"),copyinstr(arg0))] = count() } END {trunc(@, 10)}'
+
+    Class::MOP::Attribute::slots                                    400
+    Try::Tiny::catch                                                411
+    Try::Tiny::try                                                  411
+    Class::MOP::Instance::inline_slot_access                        451
+    Class::MOP::Class::Immutable::Trait:::around                    472
+    Class::MOP::Mixin::AttributeCore::has_initializer               496
+    Class::MOP::Method::Wrapped::__ANON__                           544
+    Class::MOP::Package::_package_stash                             737
+    Class::MOP::Class::initialize                                  1128
+    Class::MOP::get_metaclass_by_name                              1204
+
+=item Trace function calls
+
+    # dtrace -qFZn 'sub-entry, sub-return { trace(copyinstr(arg0)) }'
+
+    0  -> Perl_pp_entersub                        BEGIN
+    0  <- Perl_pp_leavesub                        BEGIN
+    0  -> Perl_pp_entersub                        BEGIN
+    0    -> Perl_pp_entersub                      import
+    0    <- Perl_pp_leavesub                      import
+    0  <- Perl_pp_leavesub                        BEGIN
+    0  -> Perl_pp_entersub                        BEGIN
+    0    -> Perl_pp_entersub                      dress
+    0    <- Perl_pp_leavesub                      dress
+    0    -> Perl_pp_entersub                      dirty
+    0    <- Perl_pp_leavesub                      dirty
+    0    -> Perl_pp_entersub                      whiten
+    0    <- Perl_pp_leavesub                      whiten
+    0  <- Perl_dounwind                           BEGIN
+
+=item Function calls during interpreter cleanup
+
+    # dtrace -Zn 'phase-change /copyinstr(arg0) == "END"/ { self->ending = 1 } sub-entry /self->ending/ { trace(copyinstr(arg0)) }'
+
+    CPU     ID                    FUNCTION:NAME
+      1  77214       Perl_pp_entersub:sub-entry   END
+      1  77214       Perl_pp_entersub:sub-entry   END
+      1  77214       Perl_pp_entersub:sub-entry   cleanup
+      1  77214       Perl_pp_entersub:sub-entry   _force_writable
+      1  77214       Perl_pp_entersub:sub-entry   _force_writable
+
+=item System calls at compile time
+
+    # dtrace -qZn 'phase-change /copyinstr(arg0) == "START"/ { self->interesting = 1 } phase-change /copyinstr(arg0) == "RUN"/ { self->interesting = 0 } syscall::: /self->interesting/ { @[probefunc] = count() } END { trunc(@, 3) }'
+
+    lseek                                                           310
+    read                                                            374
+    stat64                                                         1056
+
+=item Perl functions that execute the most opcodes
+
+    # dtrace -qZn 'sub-entry { self->fqn = strjoin(copyinstr(arg3), strjoin("::", copyinstr(arg0))) } op-entry /self->fqn != ""/ { @[self->fqn] = count() } END { trunc(@, 3) }'
+
+    warnings::unimport                                             4589
+    Exporter::Heavy::_rebuild_cache                                5039
+    Exporter::import                                              14578
+
+=back
+
+=head1 REFERENCES
+
+=over 4
+
+=item DTrace Dynamic Tracing Guide
+
+L<http://dtrace.org/guide/preface.html>
+
+=item DTrace: Dynamic Tracing in Oracle Solaris, Mac OS X and FreeBSD
+
+L<http://www.amazon.com/DTrace-Dynamic-Tracing-Solaris-FreeBSD/dp/0132091518/>
+
+=back
+
+=head1 SEE ALSO
+
+=over 4
+
+=item L<Devel::DTrace::Provider>
+
+This CPAN module lets you create application-level DTrace probes written in
+Perl.
+
+=back
+
+=head1 AUTHORS
+
+Shawn M Moore C<sartak at gmail.com>
+
+=cut

Added: vendor/perl/dist/pod/perlexperiment.pod
===================================================================
--- vendor/perl/dist/pod/perlexperiment.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perlexperiment.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,334 @@
+=head1 NAME
+
+perlexperiment - A listing of experimental features in Perl
+
+=head1 DESCRIPTION
+
+This document lists the current and past experimental features in the perl
+core. Although all of these are documented with their appropriate topics,
+this succinct listing gives you an overview and basic facts about their
+status.
+
+So far we've merely tried to find and list the experimental features and infer
+their inception, versions, etc. There's a lot of speculation here.
+
+=head2 Current experiments
+
+=over 8
+
+=item -Dusemultiplicity -Duseithreads
+
+Introduced in Perl 5.6.0
+
+=item Long Doubles Still Don't Work In Solaris
+
+Introduced in Perl 5.7.0
+
+=item C<our> can now have an experimental optional attribute C<unique>
+
+Introduced in Perl 5.8.0
+
+Deprecated in Perl 5.10.0
+
+=item Linux abstract Unix domain sockets
+
+Introduced in Perl 5.9.2
+
+See also L<Socket>
+
+=item L<Pod::HTML2Pod|Pod::HTML2Pod>
+
+=item L<Pod::PXML|Pod::PXML>
+
+=item The <:pop> IO pseudolayer
+
+See also L<perlrun>
+
+=item The <:win32> IO pseudolayer
+
+See also L<perlrun>
+
+=item MLDBM
+
+See also L<perldsc>
+
+=item internal functions with M flag
+
+See also L<perlguts>
+
+=item lex_start API
+
+Introduced in Perl 5.13.7
+
+=item internal API for C<%^H>
+
+Introduced in Perl 5.13.7
+
+See also C<cophh_> in L<perlapi>.
+
+=item alloccopstash
+
+Introduced in Perl 5.18.0
+
+=item av_create_and_push
+
+=item av_create_and_unshift_one
+
+=item av_create_and_unshift_one
+
+=item cop_store_label
+
+Introduced in Perl 5.16.0
+
+=item PL_keyword_plugin
+
+=item gv_fetchmethod_*_flags
+
+Introduced in Perl 5.16.0
+
+=item hv_iternext_flags
+
+=item lex_bufutf8
+
+=item lex_discard_to
+
+=item lex_grow_linestr
+
+=item lex_next_chunk
+
+=item lex_peek_unichar
+
+=item lex_read_space
+
+=item lex_read_to
+
+=item lex_read_unichar
+
+=item lex_stuff_pv
+
+=item lex_stuff_pvn
+
+=item lex_stuff_pvs
+
+=item lex_stuff_sv
+
+=item lex_unstuff
+
+=item op_scope
+
+=item op_lvalue
+
+=item parse_fullstmt
+
+=item parse_stmtseq
+
+=item PL_parser-E<gt>bufend
+
+=item PL_parser-E<gt>bufptr
+
+=item PL_parser-E<gt>linestart
+
+=item PL_parser-E<gt>linestr
+
+=item Perl_signbit
+
+=item pad_findmy
+
+=item sv_utf8_decode
+
+=item sv_utf8_downgrade
+
+=item bytes_from_utf8
+
+=item bytes_to_utf8
+
+=item utf8_to_bytes
+
+=item Lvalue subroutines
+
+Introduced in Perl 5.6.0
+
+See also L<perlsub>
+
+=item There is an C<installhtml> target in the Makefile.
+
+=item Unicode in Perl on EBCDIC
+
+=item C<(?{code})>
+
+See also L<perlre>
+
+=item C<(??{ code })>
+
+See also L<perlre>
+
+=item Smart match (C<~~>)
+
+Introduced in Perl 5.10.0
+
+Modified in Perl 5.10.1, 5.12.0
+
+=item Lexical C<$_>
+
+Introduced in Perl 5.10.0
+
+=item Backtracking control verbs
+
+C<(*ACCEPT)>
+
+Introduced in: Perl 5.10
+
+See also: L<perlre/"Special Backtracking Control Verbs">
+
+=item Code expressions, conditional expressions, and independent expressions in regexes
+
+
+=item gv_try_downgrade
+
+See also L<perlintern>
+
+=item Experimental Support for Sun Studio Compilers for Linux OS
+
+See also L<perllinux>
+
+=item Pluggable keywords
+
+See L<perlapi/PL_keyword_plugin> for the mechanism.
+
+Introduced in: Perl 5.11.2
+
+=item Array and hash container functions accept references
+
+Introduced in Perl 5.14.0
+
+=item Lexical subroutines
+
+Introduced in: Perl 5.18
+
+See also: L<perlsub/Lexical Subroutines>
+
+=item Regular Expression Set Operations
+
+Introduced in: Perl 5.18
+
+See also: L<perlrecharclass/Extended Bracketed Character Classes>
+
+=back
+
+=head2 Accepted features
+
+These features were so wildly successful and played so well with others that
+we decided to remove their experimental status and admit them as full, stable
+features in the world of Perl, lavishing all the benefits and luxuries thereof. 
+They are also awarded +5 Stability and +3 Charisma.
+
+=over 8
+
+=item The C<\N> regex character class
+
+The C<\N> character class, not to be confused with the named character
+sequence C<\N{NAME}>, denotes any non-newline character in a regular
+expression.
+
+Introduced in: Perl 5.12
+
+=item fork() emulation
+
+Introduced in Perl 5.6.1
+
+See also L<perlfork>
+
+=item DB module
+
+Introduced in Perl 5.6.0
+
+See also L<perldebug>, L<perldebtut>
+
+=item Weak references
+
+Introduced in Perl 5.6.0
+
+=item Internal file glob
+
+Introduced in Perl 5.6.0
+
+=item die accepts a reference
+
+Introduced in Perl 5.005
+
+=item 64-bit support
+
+Introduced in Perl 5.005
+
+=back
+
+=head2 Removed features
+
+These features are no longer considered experimental and their functionality
+has disappeared. It's your own fault if you wrote production programs using
+these features after we explicitly told you not to (see L<perlpolicy>).
+
+=over 8
+
+=item C<legacy>
+
+The experimental C<legacy> pragma was swallowed by the C<feature> pragma.
+
+Introduced in: 5.11.2
+
+Removed in: 5.11.3
+
+=item Assertions
+
+The C<-A> command line switch
+
+Introduced in Perl 5.9.0
+
+Removed in Perl 5.9.5
+
+=item Test::Harness::Straps
+
+Moved from Perl 5.10.1 to CPAN
+
+=item GetOpt::Long Options can now take multiple values at once (experimental)
+
+C<Getopt::Long> upgraded to version 2.35
+
+Removed in Perl 5.8.8
+
+=item The pseudo-hash data type
+
+Introduced in Perl 5.6.0
+
+Removed in Perl 5.9.0
+
+=item 5.005-style threading
+
+Introduced in Perl 5.005
+
+Removed in Perl 5.10
+
+=item perlcc
+
+Introduced in Perl 5.005
+
+Moved from Perl 5.9.0 to CPAN
+
+=back
+
+=head1 AUTHORS
+
+brian d foy C<< <brian.d.foy at gmail.com> >>
+
+SE<eacute>bastien Aperghis-Tramoni C<< <saper at cpan.org> >>
+
+=head1 COPYRIGHT
+
+Copyright 2010, brian d foy C<< <brian.d.foy at gmail.com> >>
+
+=head1 LICENSE
+
+You can use and redistribute this document under the same terms as Perl
+itself.
+
+=cut

Added: vendor/perl/dist/pod/perlootut.pod
===================================================================
--- vendor/perl/dist/pod/perlootut.pod	                        (rev 0)
+++ vendor/perl/dist/pod/perlootut.pod	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,750 @@
+=encoding utf8
+
+=for comment
+Consistent formatting of this file is achieved with:
+  perl ./Porting/podtidy pod/perlootut.pod
+
+=head1 NAME
+
+perlootut - Object-Oriented Programming in Perl Tutorial
+
+=head1 DATE
+
+This document was created in February, 2011, and the last major
+revision was in February, 2013.
+
+If you are reading this in the future then it's possible that the state
+of the art has changed. We recommend you start by reading the perlootut
+document in the latest stable release of Perl, rather than this
+version.
+
+=head1 DESCRIPTION
+
+This document provides an introduction to object-oriented programming
+in Perl. It begins with a brief overview of the concepts behind object
+oriented design. Then it introduces several different OO systems from
+L<CPAN|http://search.cpan.org> which build on top of what Perl
+provides.
+
+By default, Perl's built-in OO system is very minimal, leaving you to
+do most of the work. This minimalism made a lot of sense in 1994, but
+in the years since Perl 5.0 we've seen a number of common patterns
+emerge in Perl OO. Fortunately, Perl's flexibility has allowed a rich
+ecosystem of Perl OO systems to flourish.
+
+If you want to know how Perl OO works under the hood, the L<perlobj>
+document explains the nitty gritty details.
+
+This document assumes that you already understand the basics of Perl
+syntax, variable types, operators, and subroutine calls. If you don't
+understand these concepts yet, please read L<perlintro> first. You
+should also read the L<perlsyn>, L<perlop>, and L<perlsub> documents.
+
+=head1 OBJECT-ORIENTED FUNDAMENTALS
+
+Most object systems share a number of common concepts. You've probably
+heard terms like "class", "object, "method", and "attribute" before.
+Understanding the concepts will make it much easier to read and write
+object-oriented code. If you're already familiar with these terms, you
+should still skim this section, since it explains each concept in terms
+of Perl's OO implementation.
+
+Perl's OO system is class-based. Class-based OO is fairly common. It's
+used by Java, C++, C#, Python, Ruby, and many other languages. There
+are other object orientation paradigms as well. JavaScript is the most
+popular language to use another paradigm. JavaScript's OO system is
+prototype-based.
+
+=head2 Object
+
+An B<object> is a data structure that bundles together data and
+subroutines which operate on that data. An object's data is called
+B<attributes>, and its subroutines are called B<methods>. An object can
+be thought of as a noun (a person, a web service, a computer).
+
+An object represents a single discrete thing. For example, an object
+might represent a file. The attributes for a file object might include
+its path, content, and last modification time. If we created an object
+to represent F</etc/hostname> on a machine named "foo.example.com",
+that object's path would be "/etc/hostname", its content would be
+"foo\n", and it's last modification time would be 1304974868 seconds
+since the beginning of the epoch.
+
+The methods associated with a file might include C<rename()> and
+C<write()>.
+
+In Perl most objects are hashes, but the OO systems we recommend keep
+you from having to worry about this. In practice, it's best to consider
+an object's internal data structure opaque.
+
+=head2 Class
+
+A B<class> defines the behavior of a category of objects. A class is a
+name for a category (like "File"), and a class also defines the
+behavior of objects in that category.
+
+All objects belong to a specific class. For example, our
+F</etc/hostname> object belongs to the C<File> class. When we want to
+create a specific object, we start with its class, and B<construct> or
+B<instantiate> an object. A specific object is often referred to as an
+B<instance> of a class.
+
+In Perl, any package can be a class. The difference between a package
+which is a class and one which isn't is based on how the package is
+used. Here's our "class declaration" for the C<File> class:
+
+  package File;
+
+In Perl, there is no special keyword for constructing an object.
+However, most OO modules on CPAN use a method named C<new()> to
+construct a new object:
+
+  my $hostname = File->new(
+      path          => '/etc/hostname',
+      content       => "foo\n",
+      last_mod_time => 1304974868,
+  );
+
+(Don't worry about that C<< -> >> operator, it will be explained
+later.)
+
+=head3 Blessing
+
+As we said earlier, most Perl objects are hashes, but an object can be
+an instance of any Perl data type (scalar, array, etc.). Turning a
+plain data structure into an object is done by B<blessing> that data
+structure using Perl's C<bless> function.
+
+While we strongly suggest you don't build your objects from scratch,
+you should know the term B<bless>. A B<blessed> data structure (aka "a
+referent") is an object. We sometimes say that an object has been
+"blessed into a class".
+
+Once a referent has been blessed, the C<blessed> function from the
+L<Scalar::Util> core module can tell us its class name. This subroutine
+returns an object's class when passed an object, and false otherwise.
+
+  use Scalar::Util 'blessed';
+
+  print blessed($hash);      # undef
+  print blessed($hostname);  # File
+
+=head3 Constructor
+
+A B<constructor> creates a new object. In Perl, a class's constructor
+is just another method, unlike some other languages, which provide
+syntax for constructors. Most Perl classes use C<new> as the name for
+their constructor:
+
+  my $file = File->new(...);
+
+=head2 Methods
+
+You already learned that a B<method> is a subroutine that operates on
+an object. You can think of a method as the things that an object can
+I<do>. If an object is a noun, then methods are its verbs (save, print,
+open).
+
+In Perl, methods are simply subroutines that live in a class's package.
+Methods are always written to receive the object as their first
+argument:
+
+  sub print_info {
+      my $self = shift;
+
+      print "This file is at ", $self->path, "\n";
+  }
+
+  $file->print_info;
+  # The file is at /etc/hostname
+
+What makes a method special is I<how it's called>. The arrow operator
+(C<< -> >>) tells Perl that we are calling a method.
+
+When we make a method call, Perl arranges for the method's B<invocant>
+to be passed as the first argument. B<Invocant> is a fancy name for the
+thing on the left side of the arrow. The invocant can either be a class
+name or an object. We can also pass additional arguments to the method:
+
+  sub print_info {
+      my $self   = shift;
+      my $prefix = shift // "This file is at ";
+
+      print $prefix, ", ", $self->path, "\n";
+  }
+
+  $file->print_info("The file is located at ");
+  # The file is located at /etc/hostname
+
+=head2 Attributes
+
+Each class can define its B<attributes>. When we instantiate an object,
+we assign values to those attributes. For example, every C<File> object
+has a path. Attributes are sometimes called B<properties>.
+
+Perl has no special syntax for attributes. Under the hood, attributes
+are often stored as keys in the object's underlying hash, but don't
+worry about this.
+
+We recommend that you only access attributes via B<accessor> methods.
+These are methods that can get or set the value of each attribute. We
+saw this earlier in the C<print_info()> example, which calls C<<
+$self->path >>.
+
+You might also see the terms B<getter> and B<setter>. These are two
+types of accessors. A getter gets the attribute's value, while a setter
+sets it. Another term for a setter is B<mutator>
+
+Attributes are typically defined as read-only or read-write. Read-only
+attributes can only be set when the object is first created, while
+read-write attributes can be altered at any time.
+
+The value of an attribute may itself be another object. For example,
+instead of returning its last mod time as a number, the C<File> class
+could return a L<DateTime> object representing that value.
+
+It's possible to have a class that does not expose any publicly
+settable attributes. Not every class has attributes and methods.
+
+=head2 Polymorphism
+
+B<Polymorphism> is a fancy way of saying that objects from two
+different classes share an API. For example, we could have C<File> and
+C<WebPage> classes which both have a C<print_content()> method. This
+method might produce different output for each class, but they share a
+common interface.
+
+While the two classes may differ in many ways, when it comes to the
+C<print_content()> method, they are the same. This means that we can
+try to call the C<print_content()> method on an object of either class,
+and B<we don't have to know what class the object belongs to!>
+
+Polymorphism is one of the key concepts of object-oriented design.
+
+=head2 Inheritance
+
+B<Inheritance> lets you create a specialized version of an existing
+class. Inheritance lets the new class reuse the methods and attributes
+of another class.
+
+For example, we could create an C<File::MP3> class which B<inherits>
+from C<File>. An C<File::MP3> B<is-a> I<more specific> type of C<File>.
+All mp3 files are files, but not all files are mp3 files.
+
+We often refer to inheritance relationships as B<parent-child> or
+C<superclass/subclass> relationships. Sometimes we say that the child
+has an B<is-a> relationship with its parent class.
+
+C<File> is a B<superclass> of C<File::MP3>, and C<File::MP3> is a
+B<subclass> of C<File>.
+
+  package File::MP3;
+
+  use parent 'File';
+
+The L<parent> module is one of several ways that Perl lets you define
+inheritance relationships.
+
+Perl allows multiple inheritance, which means that a class can inherit
+from multiple parents. While this is possible, we strongly recommend
+against it. Generally, you can use B<roles> to do everything you can do
+with multiple inheritance, but in a cleaner way.
+
+Note that there's nothing wrong with defining multiple subclasses of a
+given class. This is both common and safe. For example, we might define
+C<File::MP3::FixedBitrate> and C<File::MP3::VariableBitrate> classes to
+distinguish between different types of mp3 file.
+
+=head3 Overriding methods and method resolution
+
+Inheritance allows two classes to share code. By default, every method
+in the parent class is also available in the child. The child can
+explicitly B<override> a parent's method to provide its own
+implementation. For example, if we have an C<File::MP3> object, it has
+the C<print_info()> method from C<File>:
+
+  my $cage = File::MP3->new(
+      path          => 'mp3s/My-Body-Is-a-Cage.mp3',
+      content       => $mp3_data,
+      last_mod_time => 1304974868,
+      title         => 'My Body Is a Cage',
+  );
+
+  $cage->print_info;
+  # The file is at mp3s/My-Body-Is-a-Cage.mp3
+
+If we wanted to include the mp3's title in the greeting, we could
+override the method:
+
+  package File::MP3;
+
+  use parent 'File';
+
+  sub print_info {
+      my $self = shift;
+
+      print "This file is at ", $self->path, "\n";
+      print "Its title is ", $self->title, "\n";
+  }
+
+  $cage->print_info;
+  # The file is at mp3s/My-Body-Is-a-Cage.mp3
+  # Its title is My Body Is a Cage
+
+The process of determining what method should be used is called
+B<method resolution>. What Perl does is look at the object's class
+first (C<File::MP3> in this case). If that class defines the method,
+then that class's version of the method is called. If not, Perl looks
+at each parent class in turn. For C<File::MP3>, its only parent is
+C<File>. If C<File::MP3> does not define the method, but C<File> does,
+then Perl calls the method in C<File>.
+
+If C<File> inherited from C<DataSource>, which inherited from C<Thing>,
+then Perl would keep looking "up the chain" if necessary.
+
+It is possible to explicitly call a parent method from a child:
+
+  package File::MP3;
+
+  use parent 'File';
+
+  sub print_info {
+      my $self = shift;
+
+      $self->SUPER::print_info();
+      print "Its title is ", $self->title, "\n";
+  }
+
+The C<SUPER::> bit tells Perl to look for the C<print_info()> in the
+C<File::MP3> class's inheritance chain. When it finds the parent class
+that implements this method, the method is called.
+
+We mentioned multiple inheritance earlier. The main problem with
+multiple inheritance is that it greatly complicates method resolution.
+See L<perlobj> for more details.
+
+=head2 Encapsulation
+
+B<Encapsulation> is the idea that an object is opaque. When another
+developer uses your class, they don't need to know I<how> it is
+implemented, they just need to know I<what> it does.
+
+Encapsulation is important for several reasons. First, it allows you to
+separate the public API from the private implementation. This means you
+can change that implementation without breaking the API.
+
+Second, when classes are well encapsulated, they become easier to
+subclass. Ideally, a subclass uses the same APIs to access object data
+that its parent class uses. In reality, subclassing sometimes involves
+violating encapsulation, but a good API can minimize the need to do
+this.
+
+We mentioned earlier that most Perl objects are implemented as hashes
+under the hood. The principle of encapsulation tells us that we should
+not rely on this. Instead, we should use accessor methods to access the
+data in that hash. The object systems that we recommend below all
+automate the generation of accessor methods. If you use one of them,
+you should never have to access the object as a hash directly.
+
+=head2 Composition
+
+In object-oriented code, we often find that one object references
+another object. This is called B<composition>, or a B<has-a>
+relationship.
+
+Earlier, we mentioned that the C<File> class's C<last_mod_time>
+accessor could return a L<DateTime> object. This is a perfect example
+of composition. We could go even further, and make the C<path> and
+C<content> accessors return objects as well. The C<File> class would
+then be B<composed> of several other objects.
+
+=head2 Roles
+
+B<Roles> are something that a class I<does>, rather than something that
+it I<is>. Roles are relatively new to Perl, but have become rather
+popular. Roles are B<applied> to classes. Sometimes we say that classes
+B<consume> roles.
+
+Roles are an alternative to inheritance for providing polymorphism.
+Let's assume we have two classes, C<Radio> and C<Computer>. Both of
+these things have on/off switches. We want to model that in our class
+definitions.
+
+We could have both classes inherit from a common parent, like
+C<Machine>, but not all machines have on/off switches. We could create
+a parent class called C<HasOnOffSwitch>, but that is very artificial.
+Radios and computers are not specializations of this parent. This
+parent is really a rather ridiculous creation.
+
+This is where roles come in. It makes a lot of sense to create a
+C<HasOnOffSwitch> role and apply it to both classes. This role would
+define a known API like providing C<turn_on()> and C<turn_off()>
+methods.
+
+Perl does not have any built-in way to express roles. In the past,
+people just bit the bullet and used multiple inheritance. Nowadays,
+there are several good choices on CPAN for using roles.
+
+=head2 When to Use OO
+
+Object Orientation is not the best solution to every problem. In I<Perl
+Best Practices> (copyright 2004, Published by O'Reilly Media, Inc.),
+Damian Conway provides a list of criteria to use when deciding if OO is
+the right fit for your problem:
+
+=over 4
+
+=item *
+
+The system being designed is large, or is likely to become large.
+
+=item *
+
+The data can be aggregated into obvious structures, especially if
+there's a large amount of data in each aggregate.
+
+=item *
+
+The various types of data aggregate form a natural hierarchy that
+facilitates the use of inheritance and polymorphism.
+
+=item *
+
+You have a piece of data on which many different operations are
+applied.
+
+=item *
+
+You need to perform the same general operations on related types of
+data, but with slight variations depending on the specific type of data
+the operations are applied to.
+
+=item *
+
+It's likely you'll have to add new data types later.
+
+=item *
+
+The typical interactions between pieces of data are best represented by
+operators.
+
+=item *
+
+The implementation of individual components of the system is likely to
+change over time.
+
+=item *
+
+The system design is already object-oriented.
+
+=item *
+
+Large numbers of other programmers will be using your code modules.
+
+=back
+
+=head1 PERL OO SYSTEMS
+
+As we mentioned before, Perl's built-in OO system is very minimal, but
+also quite flexible. Over the years, many people have developed systems
+which build on top of Perl's built-in system to provide more features
+and convenience.
+
+We strongly recommend that you use one of these systems. Even the most
+minimal of them eliminates a lot of repetitive boilerplate. There's
+really no good reason to write your classes from scratch in Perl.
+
+If you are interested in the guts underlying these systems, check out
+L<perlobj>.
+
+=head2 Moose
+
+L<Moose> bills itself as a "postmodern object system for Perl 5". Don't
+be scared, the "postmodern" label is a callback to Larry's description
+of Perl as "the first postmodern computer language".
+
+C<Moose> provides a complete, modern OO system. Its biggest influence
+is the Common Lisp Object System, but it also borrows ideas from
+Smalltalk and several other languages. C<Moose> was created by Stevan
+Little, and draws heavily from his work on the Perl 6 OO design.
+
+Here is our C<File> class using C<Moose>:
+
+  package File;
+  use Moose;
+
+  has path          => ( is => 'ro' );
+  has content       => ( is => 'ro' );
+  has last_mod_time => ( is => 'ro' );
+
+  sub print_info {
+      my $self = shift;
+
+      print "This file is at ", $self->path, "\n";
+  }
+
+C<Moose> provides a number of features:
+
+=over 4
+
+=item * Declarative sugar
+
+C<Moose> provides a layer of declarative "sugar" for defining classes.
+That sugar is just a set of exported functions that make declaring how
+your class works simpler and more palatable.  This lets you describe
+I<what> your class is, rather than having to tell Perl I<how> to
+implement your class.
+
+The C<has()> subroutine declares an attribute, and C<Moose>
+automatically creates accessors for these attributes. It also takes
+care of creating a C<new()> method for you. This constructor knows
+about the attributes you declared, so you can set them when creating a
+new C<File>.
+
+=item * Roles built-in
+
+C<Moose> lets you define roles the same way you define classes:
+
+  package HasOnOfSwitch;
+  use Moose::Role;
+
+  has is_on => (
+      is  => 'rw',
+      isa => 'Bool',
+  );
+
+  sub turn_on {
+      my $self = shift;
+      $self->is_on(1);
+  }
+
+  sub turn_off {
+      my $self = shift;
+      $self->is_on(0);
+  }
+
+=item * A miniature type system
+
+In the example above, you can see that we passed C<< isa => 'Bool' >>
+to C<has()> when creating our C<is_on> attribute. This tells C<Moose>
+that this attribute must be a boolean value. If we try to set it to an
+invalid value, our code will throw an error.
+
+=item * Full introspection and manipulation
+
+Perl's built-in introspection features are fairly minimal. C<Moose>
+builds on top of them and creates a full introspection layer for your
+classes. This lets you ask questions like "what methods does the File
+class implement?" It also lets you modify your classes
+programmatically.
+
+=item * Self-hosted and extensible
+
+C<Moose> describes itself using its own introspection API. Besides
+being a cool trick, this means that you can extend C<Moose> using
+C<Moose> itself.
+
+=item * Rich ecosystem
+
+There is a rich ecosystem of C<Moose> extensions on CPAN under the
+L<MooseX|http://search.cpan.org/search?query=MooseX&mode=dist>
+namespace. In addition, many modules on CPAN already use C<Moose>,
+providing you with lots of examples to learn from.
+
+=item * Many more features
+
+C<Moose> is a very powerful tool, and we can't cover all of its
+features here. We encourage you to learn more by reading the C<Moose>
+documentation, starting with
+L<Moose::Manual|http://search.cpan.org/perldoc?Moose::Manual>.
+
+=back
+
+Of course, C<Moose> isn't perfect.
+
+C<Moose> can make your code slower to load. C<Moose> itself is not
+small, and it does a I<lot> of code generation when you define your
+class. This code generation means that your runtime code is as fast as
+it can be, but you pay for this when your modules are first loaded.
+
+This load time hit can be a problem when startup speed is important,
+such as with a command-line script or a "plain vanilla" CGI script that
+must be loaded each time it is executed.
+
+Before you panic, know that many people do use C<Moose> for
+command-line tools and other startup-sensitive code. We encourage you
+to try C<Moose> out first before worrying about startup speed.
+
+C<Moose> also has several dependencies on other modules. Most of these
+are small stand-alone modules, a number of which have been spun off
+from C<Moose>. C<Moose> itself, and some of its dependencies, require a
+compiler. If you need to install your software on a system without a
+compiler, or if having I<any> dependencies is a problem, then C<Moose>
+may not be right for you.
+
+=head3 Moo
+
+If you try C<Moose> and find that one of these issues is preventing you
+from using C<Moose>, we encourage you to consider L<Moo> next. C<Moo>
+implements a subset of C<Moose>'s functionality in a simpler package.
+For most features that it does implement, the end-user API is
+I<identical> to C<Moose>, meaning you can switch from C<Moo> to
+C<Moose> quite easily.
+
+C<Moo> does not implement most of C<Moose>'s introspection API, so it's
+often faster when loading your modules. Additionally, none of its
+dependencies require XS, so it can be installed on machines without a
+compiler.
+
+One of C<Moo>'s most compelling features is its interoperability with
+C<Moose>. When someone tries to use C<Moose>'s introspection API on a
+C<Moo> class or role, it is transparently inflated into a C<Moose>
+class or role. This makes it easier to incorporate C<Moo>-using code
+into a C<Moose> code base and vice versa.
+
+For example, a C<Moose> class can subclass a C<Moo> class using
+C<extends> or consume a C<Moo> role using C<with>.
+
+The C<Moose> authors hope that one day C<Moo> can be made obsolete by
+improving C<Moose> enough, but for now it provides a worthwhile
+alternative to C<Moose>.
+
+=head2 Class::Accessor
+
+L<Class::Accessor> is the polar opposite of C<Moose>. It provides very
+few features, nor is it self-hosting.
+
+It is, however, very simple, pure Perl, and it has no non-core
+dependencies. It also provides a "Moose-like" API on demand for the
+features it supports.
+
+Even though it doesn't do much, it is still preferable to writing your
+own classes from scratch.
+
+Here's our C<File> class with C<Class::Accessor>:
+
+  package File;
+  use Class::Accessor 'antlers';
+
+  has path          => ( is => 'ro' );
+  has content       => ( is => 'ro' );
+  has last_mod_time => ( is => 'ro' );
+
+  sub print_info {
+      my $self = shift;
+
+      print "This file is at ", $self->path, "\n";
+  }
+
+The C<antlers> import flag tells C<Class::Accessor> that you want to
+define your attributes using C<Moose>-like syntax. The only parameter
+that you can pass to C<has> is C<is>. We recommend that you use this
+Moose-like syntax if you choose C<Class::Accessor> since it means you
+will have a smoother upgrade path if you later decide to move to
+C<Moose>.
+
+Like C<Moose>, C<Class::Accessor> generates accessor methods and a
+constructor for your class.
+
+=head2 Object::Tiny
+
+Finally, we have L<Object::Tiny>. This module truly lives up to its
+name. It has an incredibly minimal API and absolutely no dependencies
+(core or not). Still, we think it's a lot easier to use than writing
+your own OO code from scratch.
+
+Here's our C<File> class once more:
+
+  package File;
+  use Object::Tiny qw( path content last_mod_time );
+
+  sub print_info {
+      my $self = shift;
+
+      print "This file is at ", $self->path, "\n";
+  }
+
+That's it!
+
+With C<Object::Tiny>, all accessors are read-only. It generates a
+constructor for you, as well as the accessors you define.
+
+=head2 Role::Tiny
+
+As we mentioned before, roles provide an alternative to inheritance,
+but Perl does not have any built-in role support. If you choose to use
+Moose, it comes with a full-fledged role implementation. However, if
+you use one of our other recommended OO modules, you can still use
+roles with L<Role::Tiny>
+
+C<Role::Tiny> provides some of the same features as Moose's role
+system, but in a much smaller package. Most notably, it doesn't support
+any sort of attribute declaration, so you have to do that by hand.
+Still, it's useful, and works well with C<Class::Accessor> and
+C<Object::Tiny>
+
+=head2 OO System Summary
+
+Here's a brief recap of the options we covered:
+
+=over 4
+
+=item * L<Moose>
+
+C<Moose> is the maximal option. It has a lot of features, a big
+ecosystem, and a thriving user base. We also covered L<Moo> briefly.
+C<Moo> is C<Moose> lite, and a reasonable alternative when Moose
+doesn't work for your application.
+
+=item * L<Class::Accessor>
+
+C<Class::Accessor> does a lot less than C<Moose>, and is a nice
+alternative if you find C<Moose> overwhelming. It's been around a long
+time and is well battle-tested. It also has a minimal C<Moose>
+compatibility mode which makes moving from C<Class::Accessor> to
+C<Moose> easy.
+
+=item * L<Object::Tiny>
+
+C<Object::Tiny> is the absolute minimal option. It has no dependencies,
+and almost no syntax to learn. It's a good option for a super minimal
+environment and for throwing something together quickly without having
+to worry about details.
+
+=item * L<Role::Tiny>
+
+Use C<Role::Tiny> with C<Class::Accessor> or C<Object::Tiny> if you
+find yourself considering multiple inheritance. If you go with
+C<Moose>, it comes with its own role implementation.
+
+=back
+
+=head2 Other OO Systems
+
+There are literally dozens of other OO-related modules on CPAN besides
+those covered here, and you're likely to run across one or more of them
+if you work with other people's code.
+
+In addition, plenty of code in the wild does all of its OO "by hand",
+using just the Perl built-in OO features. If you need to maintain such
+code, you should read L<perlobj> to understand exactly how Perl's
+built-in OO works.
+
+=head1 CONCLUSION
+
+As we said before, Perl's minimal OO system has led to a profusion of
+OO systems on CPAN. While you can still drop down to the bare metal and
+write your classes by hand, there's really no reason to do that with
+modern Perl.
+
+For small systems, L<Object::Tiny> and L<Class::Accessor> both provide
+minimal object systems that take care of basic boilerplate for you.
+
+For bigger projects, L<Moose> provides a rich set of features that will
+let you focus on implementing your business logic.
+
+We encourage you to play with and evaluate L<Moose>,
+L<Class::Accessor>, and L<Object::Tiny> to see which OO system is right
+for you.
+
+=cut

Added: vendor/perl/dist/regen/embed_lib.pl
===================================================================
--- vendor/perl/dist/regen/embed_lib.pl	                        (rev 0)
+++ vendor/perl/dist/regen/embed_lib.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,141 @@
+#!/usr/bin/perl -w
+use strict;
+
+# read embed.fnc and regen/opcodes, needed by regen/embed.pl and makedef.pl
+
+require 5.004;	# keep this compatible, an old perl is all we may have before
+                # we build the new one
+
+# Records the current pre-processor state:
+my @state;
+# Nested structure to group functions by the pre-processor conditions that
+# control when they are compiled:
+my %groups;
+
+sub current_group {
+    my $group = \%groups;
+    # Nested #if blocks are effectively &&ed together
+    # For embed.fnc, ordering within the && isn't relevant, so we can
+    # sort them to try to group more functions together.
+    foreach (sort @state) {
+	$group->{$_} ||= {};
+	$group = $group->{$_};
+    }
+    return $group->{''} ||= [];
+}
+
+sub add_level {
+    my ($level, $indent, $wanted) = @_;
+    my $funcs = $level->{''};
+    my @entries;
+    if ($funcs) {
+	if (!defined $wanted) {
+	    @entries = @$funcs;
+	} else {
+	    foreach (@$funcs) {
+		if ($_->[0] =~ /A/) {
+		    push @entries, $_ if $wanted eq 'A';
+		} elsif ($_->[0] =~ /E/) {
+		    push @entries, $_ if $wanted eq 'E';
+		} else {
+		    push @entries, $_ if $wanted eq '';
+		}
+	    }
+	}
+	@entries = sort {$a->[2] cmp $b->[2]} @entries;
+    }
+    foreach (sort grep {length $_} keys %$level) {
+	my @conditional = add_level($level->{$_}, $indent . '  ', $wanted);
+	push @entries,
+	    ["#${indent}if $_"], @conditional, ["#${indent}endif"]
+		if @conditional;
+    }
+    return @entries;
+}
+
+sub setup_embed {
+    my $prefix = shift || '';
+    open IN, $prefix . 'embed.fnc' or die $!;
+
+    my @embed;
+
+    while (<IN>) {
+	chomp;
+	next if /^:/;
+	next if /^$/;
+	while (s|\\$||) {
+	    $_ .= <IN>;
+	    chomp;
+	}
+	s/\s+$//;
+	my @args;
+	if (/^\s*(#|$)/) {
+	    @args = $_;
+	}
+	else {
+	    @args = split /\s*\|\s*/, $_;
+	}
+	if (@args == 1 && $args[0] !~ /^#\s*(?:if|ifdef|ifndef|else|endif)/) {
+	    die "Illegal line $. '$args[0]' in embed.fnc";
+	}
+	push @embed, \@args;
+    }
+
+    close IN or die "Problem reading embed.fnc: $!";
+
+    open IN, $prefix . 'regen/opcodes' or die $!;
+    {
+	my %syms;
+
+	while (<IN>) {
+	    chomp;
+	    next unless $_;
+	    next if /^#/;
+	    my $check = (split /\t+/, $_)[2];
+	    next if $syms{$check}++;
+
+	    # These are all indirectly referenced by globals.c.
+	    push @embed, ['pR', 'OP *', $check, 'NN OP *o'];
+	}
+    }
+    close IN or die "Problem reading regen/opcodes: $!";
+
+    # Cluster entries in embed.fnc that have the same #ifdef guards.
+    # Also, split out at the top level the three classes of functions.
+    # Output structure is actually the same as input structure - an
+    # (ordered) list of array references, where the elements in the
+    # reference determine what it is - a reference to a 1-element array is a
+    # pre-processor directive, a reference to 2+ element array is a function.
+
+    my $current = current_group();
+
+    foreach (@embed) {
+	if (@$_ > 1) {
+	    push @$current, $_;
+	    next;
+	}
+	$_->[0] =~ s/^#\s+/#/;
+	$_->[0] =~ /^\S*/;
+	$_->[0] =~ s/^#ifdef\s+(\S+)/#if defined($1)/;
+	$_->[0] =~ s/^#ifndef\s+(\S+)/#if !defined($1)/;
+	if ($_->[0] =~ /^#if\s*(.*)/) {
+	    push @state, $1;
+	} elsif ($_->[0] =~ /^#else\s*$/) {
+	    die "Unmatched #else in embed.fnc" unless @state;
+	    $state[-1] = "!($state[-1])";
+	} elsif ($_->[0] =~ m!^#endif\s*(?:/\*.*\*/)?$!) {
+	    die "Unmatched #endif in embed.fnc" unless @state;
+	    pop @state;
+	} else {
+	    die "Unhandled pre-processor directive '$_->[0]' in embed.fnc";
+	}
+	$current = current_group();
+    }
+
+    return ([add_level(\%groups, '')],
+	    [add_level(\%groups, '', '')],    # core
+	    [add_level(\%groups, '', 'E')],   # ext
+	    [add_level(\%groups, '', 'A')]);  # api
+}
+
+1;

Added: vendor/perl/dist/regen/feature.pl
===================================================================
--- vendor/perl/dist/regen/feature.pl	                        (rev 0)
+++ vendor/perl/dist/regen/feature.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,706 @@
+#!/usr/bin/perl
+# 
+# Regenerate (overwriting only if changed):
+#
+#    lib/feature.pm
+#    feature.h
+#
+# from information hardcoded into this script and from two #defines
+# in perl.h.
+#
+# This script is normally invoked from regen.pl.
+
+BEGIN {
+    require 'regen/regen_lib.pl';
+    push @INC, './lib';
+}
+use strict ;
+
+
+###########################################################################
+# Hand-editable data
+
+# (feature name) => (internal name, used in %^H and macro names)
+my %feature = (
+    say             => 'say',
+    state           => 'state',
+    switch          => 'switch',
+    evalbytes       => 'evalbytes',
+    array_base      => 'arybase',
+    current_sub     => '__SUB__',
+    lexical_subs    => 'lexsubs',
+    unicode_eval    => 'unieval',
+    unicode_strings => 'unicode',
+    fc              => 'fc',
+);
+
+# NOTE: If a feature is ever enabled in a non-contiguous range of Perl
+#       versions, any code below that uses %BundleRanges will have to
+#       be changed to account.
+
+# 5.odd implies the next 5.even, but an explicit 5.even can override it.
+my %feature_bundle = (
+     all     => [ keys %feature ],
+     default =>	[qw(array_base)],
+    "5.9.5"  =>	[qw(say state switch array_base)],
+    "5.10"   =>	[qw(say state switch array_base)],
+    "5.11"   =>	[qw(say state switch unicode_strings array_base)],
+    "5.13"   =>	[qw(say state switch unicode_strings array_base)],
+    "5.15"   =>	[qw(say state switch unicode_strings unicode_eval
+		    evalbytes current_sub fc)],
+    "5.17"   =>	[qw(say state switch unicode_strings unicode_eval
+		    evalbytes current_sub fc)],
+);
+
+# not actually used currently
+my @experimental = qw( lexical_subs );
+
+
+###########################################################################
+# More data generated from the above
+
+for (keys %feature_bundle) {
+    next unless /^5\.(\d*[13579])\z/;
+    $feature_bundle{"5.".($1+1)} ||= $feature_bundle{$_};
+}
+
+my %UniqueBundles; # "say state switch" => 5.10
+my %Aliases;       #  5.12 => 5.11
+for( sort keys %feature_bundle ) {
+    my $value = join(' ', sort @{$feature_bundle{$_}});
+    if (exists $UniqueBundles{$value}) {
+	$Aliases{$_} = $UniqueBundles{$value};
+    }
+    else {
+	$UniqueBundles{$value} = $_;
+    }
+}
+			   # start   end
+my %BundleRanges; # say => ['5.10', '5.15'] # unique bundles for values
+for my $bund (
+    sort { $a eq 'default' ? -1 : $b eq 'default' ? 1 : $a cmp $b }
+         values %UniqueBundles
+) {
+    next if $bund =~ /[^\d.]/ and $bund ne 'default';
+    for (@{$feature_bundle{$bund}}) {
+	if (@{$BundleRanges{$_} ||= []} == 2) {
+	    $BundleRanges{$_}[1] = $bund
+	}
+	else {
+	    push @{$BundleRanges{$_}}, $bund;
+	}
+    }
+}
+
+my $HintShift;
+my $HintMask;
+my $Uni8Bit;
+
+open "perl.h", "perl.h" or die "$0 cannot open perl.h: $!";
+while (readline "perl.h") {
+    next unless /#\s*define\s+(HINT_FEATURE_MASK|HINT_UNI_8_BIT)/;
+    my $is_u8b = $1 =~ 8;
+    /(0x[A-Fa-f0-9]+)/ or die "No hex number in:\n\n$_\n ";
+    if ($is_u8b) {
+	$Uni8Bit = $1;
+    }
+    else {
+	my $hex = $HintMask = $1;
+	my $bits = sprintf "%b", oct $1;
+	$bits =~ /^0*1+(0*)\z/
+	 or die "Non-contiguous bits in $bits (binary for $hex):\n\n$_\n ";
+	$HintShift = length $1;
+	my $bits_needed =
+	    length sprintf "%b", scalar keys %UniqueBundles;
+	$bits =~ /1{$bits_needed}/
+	    or die "Not enough bits (need $bits_needed)"
+		 . " in $bits (binary for $hex):\n\n$_\n ";
+    }
+    if ($Uni8Bit && $HintMask) { last }
+}
+die "No HINT_FEATURE_MASK defined in perl.h" unless $HintMask;
+die "No HINT_UNI_8_BIT defined in perl.h"    unless $Uni8Bit;
+
+close "perl.h";
+
+my @HintedBundles =
+    ('default', grep !/[^\d.]/, sort values %UniqueBundles);
+
+
+###########################################################################
+# Open files to be generated
+
+my ($pm, $h) = map {
+    open_new($_, '>', { by => 'regen/feature.pl' });
+} 'lib/feature.pm', 'feature.h';
+
+
+###########################################################################
+# Generate lib/feature.pm
+
+while (<DATA>) {
+    last if /^FEATURES$/ ;
+    print $pm $_ ;
+}
+
+sub longest {
+    my $long;
+    for(@_) {
+	if (!defined $long or length $long < length) {
+	    $long = $_;
+	}
+    }
+    $long;
+}
+
+print $pm "our %feature = (\n";
+my $width = length longest keys %feature;
+for(sort { length $a <=> length $b || $a cmp $b } keys %feature) {
+    print $pm "    $_" . " "x($width-length)
+	    . " => 'feature_$feature{$_}',\n";
+}
+print $pm ");\n\n";
+
+print $pm "our %feature_bundle = (\n";
+$width = length longest values %UniqueBundles;
+for( sort { $UniqueBundles{$a} cmp $UniqueBundles{$b} }
+          keys %UniqueBundles ) {
+    my $bund = $UniqueBundles{$_};
+    print $pm qq'    "$bund"' . " "x($width-length $bund)
+	    . qq' => [qw($_)],\n';
+}
+print $pm ");\n\n";
+
+for (sort keys %Aliases) {
+    print $pm
+	qq'\$feature_bundle{"$_"} = \$feature_bundle{"$Aliases{$_}"};\n';
+};
+
+#print $pm "my \%experimental = (\n";
+#print $pm "    $_ => 1,\n", for @experimental;
+#print $pm ");\n";
+
+print $pm <<EOPM;
+
+our \$hint_shift   = $HintShift;
+our \$hint_mask    = $HintMask;
+our \@hint_bundles = qw( @HintedBundles );
+
+# This gets set (for now) in \$^H as well as in %^H,
+# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
+# See HINT_UNI_8_BIT in perl.h.
+our \$hint_uni8bit = $Uni8Bit;
+EOPM
+
+
+while (<DATA>) {
+    last if /^PODTURES$/ ;
+    print $pm $_ ;
+}
+
+select +(select($pm), $~ = 'PODTURES')[0];
+format PODTURES =
+  ^<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~
+$::bundle, $::feature
+.
+
+for ('default', sort grep /\.\d[02468]/, keys %feature_bundle) {
+    $::bundle = ":$_";
+    $::feature = join ' ', @{$feature_bundle{$_}};
+    write $pm;
+    print $pm "\n";
+}
+
+while (<DATA>) {
+    print $pm $_ ;
+}
+
+read_only_bottom_close_and_rename($pm);
+
+
+###########################################################################
+# Generate feature.h
+
+print $h <<EOH;
+
+#if defined(PERL_CORE) || defined (PERL_EXT)
+
+#define HINT_FEATURE_SHIFT	$HintShift
+
+EOH
+
+my $count;
+for (@HintedBundles) {
+    (my $key = uc) =~ y/.//d;
+    print $h "#define FEATURE_BUNDLE_$key	", $count++, "\n";
+}
+
+print $h <<'EOH';
+#define FEATURE_BUNDLE_CUSTOM	(HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
+
+#define CURRENT_HINTS \
+    (PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
+#define CURRENT_FEATURE_BUNDLE \
+    ((CURRENT_HINTS & HINT_FEATURE_MASK) >> HINT_FEATURE_SHIFT)
+
+/* Avoid using ... && Perl_feature_is_enabled(...) as that triggers a bug in
+   the HP-UX cc on PA-RISC */
+#define FEATURE_IS_ENABLED(name)				        \
+	((CURRENT_HINTS							 \
+	   & HINT_LOCALIZE_HH)						  \
+	    ? Perl_feature_is_enabled(aTHX_ STR_WITH_LEN(name)) : FALSE)
+/* The longest string we pass in.  */
+EOH
+
+my $longest_internal_feature_name = longest values %feature;
+print $h <<EOL;
+#define MAX_FEATURE_LEN (sizeof("$longest_internal_feature_name")-1)
+
+EOL
+
+for (
+    sort { length $a <=> length $b || $a cmp $b } keys %feature
+) {
+    my($first,$last) =
+	map { (my $__ = uc) =~ y/.//d; $__ } @{$BundleRanges{$_}};
+    my $name = $feature{$_};
+    my $NAME = uc $name;
+    if ($last && $first eq 'DEFAULT') { #  ‘>= DEFAULT’ warns
+	print $h <<EOI;
+#define FEATURE_$NAME\_IS_ENABLED \\
+    ( \\
+	CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_$last \\
+     || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+	 FEATURE_IS_ENABLED("$name")) \\
+    )
+
+EOI
+    }
+    elsif ($last) {
+	print $h <<EOH3;
+#define FEATURE_$NAME\_IS_ENABLED \\
+    ( \\
+	(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_$first && \\
+	 CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_$last) \\
+     || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+	 FEATURE_IS_ENABLED("$name")) \\
+    )
+
+EOH3
+    }
+    elsif ($first) {
+	print $h <<EOH4;
+#define FEATURE_$NAME\_IS_ENABLED \\
+    ( \\
+	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_$first \\
+     || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+	 FEATURE_IS_ENABLED("$name")) \\
+    )
+
+EOH4
+    }
+    else {
+	print $h <<EOH5;
+#define FEATURE_$NAME\_IS_ENABLED \\
+    ( \\
+	CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+	 FEATURE_IS_ENABLED("$name") \\
+    )
+
+EOH5
+    }
+}
+
+print $h <<EOH;
+
+#endif /* PERL_CORE or PERL_EXT */
+
+#ifdef PERL_IN_OP_C
+PERL_STATIC_INLINE void
+S_enable_feature_bundle(pTHX_ SV *ver)
+{
+    SV *comp_ver = sv_newmortal();
+    PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
+	     | (
+EOH
+
+for (reverse @HintedBundles[1..$#HintedBundles]) { # skip default
+    my $numver = $_;
+    if ($numver eq '5.10') { $numver = '5.009005' } # special case
+    else		   { $numver =~ s/\./.0/  } # 5.11 => 5.011
+    (my $macrover = $_) =~ y/.//d;
+    print $h <<"    EOK";
+		  (sv_setnv(comp_ver, $numver),
+		   vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+			? FEATURE_BUNDLE_$macrover :
+    EOK
+}
+
+print $h <<EOJ;
+			  FEATURE_BUNDLE_DEFAULT
+	       ) << HINT_FEATURE_SHIFT;
+    /* special case */
+    assert(PL_curcop == &PL_compiling);
+    if (FEATURE_UNICODE_IS_ENABLED) PL_hints |=  HINT_UNI_8_BIT;
+    else			    PL_hints &= ~HINT_UNI_8_BIT;
+}
+#endif /* PERL_IN_OP_C */
+EOJ
+
+read_only_bottom_close_and_rename($h);
+
+
+###########################################################################
+# Template for feature.pm
+
+__END__
+package feature;
+
+our $VERSION = '1.32';
+
+FEATURES
+
+# TODO:
+# - think about versioned features (use feature switch => 2)
+
+=head1 NAME
+
+feature - Perl pragma to enable new features
+
+=head1 SYNOPSIS
+
+    use feature qw(say switch);
+    given ($foo) {
+        when (1)          { say "\$foo == 1" }
+        when ([2,3])      { say "\$foo == 2 || \$foo == 3" }
+        when (/^a[bc]d$/) { say "\$foo eq 'abd' || \$foo eq 'acd'" }
+        when ($_ > 100)   { say "\$foo > 100" }
+        default           { say "None of the above" }
+    }
+
+    use feature ':5.10'; # loads all features available in perl 5.10
+
+    use v5.10;           # implicitly loads :5.10 feature bundle
+
+=head1 DESCRIPTION
+
+It is usually impossible to add new syntax to Perl without breaking
+some existing programs.  This pragma provides a way to minimize that
+risk. New syntactic constructs, or new semantic meanings to older
+constructs, can be enabled by C<use feature 'foo'>, and will be parsed
+only when the appropriate feature pragma is in scope.  (Nevertheless, the
+C<CORE::> prefix provides access to all Perl keywords, regardless of this
+pragma.)
+
+=head2 Lexical effect
+
+Like other pragmas (C<use strict>, for example), features have a lexical
+effect.  C<use feature qw(foo)> will only make the feature "foo" available
+from that point to the end of the enclosing block.
+
+    {
+        use feature 'say';
+        say "say is available here";
+    }
+    print "But not here.\n";
+
+=head2 C<no feature>
+
+Features can also be turned off by using C<no feature "foo">.  This too
+has lexical effect.
+
+    use feature 'say';
+    say "say is available here";
+    {
+        no feature 'say';
+        print "But not here.\n";
+    }
+    say "Yet it is here.";
+
+C<no feature> with no features specified will reset to the default group.  To
+disable I<all> features (an unusual request!) use C<no feature ':all'>.
+
+=head1 AVAILABLE FEATURES
+
+=head2 The 'say' feature
+
+C<use feature 'say'> tells the compiler to enable the Perl 6 style
+C<say> function.
+
+See L<perlfunc/say> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'state' feature
+
+C<use feature 'state'> tells the compiler to enable C<state>
+variables.
+
+See L<perlsub/"Persistent Private Variables"> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'switch' feature
+
+C<use feature 'switch'> tells the compiler to enable the Perl 6
+given/when construct.
+
+See L<perlsyn/"Switch Statements"> for details.
+
+This feature is available starting with Perl 5.10.
+
+=head2 The 'unicode_strings' feature
+
+C<use feature 'unicode_strings'> tells the compiler to use Unicode semantics
+in all string operations executed within its scope (unless they are also
+within the scope of either C<use locale> or C<use bytes>).  The same applies
+to all regular expressions compiled within the scope, even if executed outside
+it.  It does not change the internal representation of strings, but only how
+they are interpreted.
+
+C<no feature 'unicode_strings'> tells the compiler to use the traditional
+Perl semantics wherein the native character set semantics is used unless it is
+clear to Perl that Unicode is desired.  This can lead to some surprises
+when the behavior suddenly changes.  (See
+L<perlunicode/The "Unicode Bug"> for details.)  For this reason, if you are
+potentially using Unicode in your program, the
+C<use feature 'unicode_strings'> subpragma is B<strongly> recommended.
+
+This feature is available starting with Perl 5.12; was almost fully
+implemented in Perl 5.14; and extended in Perl 5.16 to cover C<quotemeta>.
+
+=head2 The 'unicode_eval' and 'evalbytes' features
+
+Under the C<unicode_eval> feature, Perl's C<eval> function, when passed a
+string, will evaluate it as a string of characters, ignoring any
+C<use utf8> declarations.  C<use utf8> exists to declare the encoding of
+the script, which only makes sense for a stream of bytes, not a string of
+characters.  Source filters are forbidden, as they also really only make
+sense on strings of bytes.  Any attempt to activate a source filter will
+result in an error.
+
+The C<evalbytes> feature enables the C<evalbytes> keyword, which evaluates
+the argument passed to it as a string of bytes.  It dies if the string
+contains any characters outside the 8-bit range.  Source filters work
+within C<evalbytes>: they apply to the contents of the string being
+evaluated.
+
+Together, these two features are intended to replace the historical C<eval>
+function, which has (at least) two bugs in it, that cannot easily be fixed
+without breaking existing programs:
+
+=over
+
+=item *
+
+C<eval> behaves differently depending on the internal encoding of the
+string, sometimes treating its argument as a string of bytes, and sometimes
+as a string of characters.
+
+=item *
+
+Source filters activated within C<eval> leak out into whichever I<file>
+scope is currently being compiled.  To give an example with the CPAN module
+L<Semi::Semicolons>:
+
+    BEGIN { eval "use Semi::Semicolons;  # not filtered here " }
+    # filtered here!
+
+C<evalbytes> fixes that to work the way one would expect:
+
+    use feature "evalbytes";
+    BEGIN { evalbytes "use Semi::Semicolons;  # filtered " }
+    # not filtered
+
+=back
+
+These two features are available starting with Perl 5.16.
+
+=head2 The 'current_sub' feature
+
+This provides the C<__SUB__> token that returns a reference to the current
+subroutine or C<undef> outside of a subroutine.
+
+This feature is available starting with Perl 5.16.
+
+=head2 The 'array_base' feature
+
+This feature supports the legacy C<$[> variable.  See L<perlvar/$[> and
+L<arybase>.  It is on by default but disabled under C<use v5.16> (see
+L</IMPLICIT LOADING>, below).
+
+This feature is available under this name starting with Perl 5.16.  In
+previous versions, it was simply on all the time, and this pragma knew
+nothing about it.
+
+=head2 The 'fc' feature
+
+C<use feature 'fc'> tells the compiler to enable the C<fc> function,
+which implements Unicode casefolding.
+
+See L<perlfunc/fc> for details.
+
+This feature is available from Perl 5.16 onwards.
+
+=head2 The 'lexical_subs' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change in future versions of Perl.  For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the
+warning:
+
+    no warnings "experimental::lexical_subs";
+
+This enables declaration of subroutines via C<my sub foo>, C<state sub foo>
+and C<our sub foo> syntax.  See L<perlsub/Lexical Subroutines> for details.
+
+This feature is available from Perl 5.18 onwards.
+
+=head1 FEATURE BUNDLES
+
+It's possible to load multiple features together, using
+a I<feature bundle>.  The name of a feature bundle is prefixed with
+a colon, to distinguish it from an actual feature.
+
+  use feature ":5.10";
+
+The following feature bundles are available:
+
+  bundle    features included
+  --------- -----------------
+PODTURES
+The C<:default> bundle represents the feature set that is enabled before
+any C<use feature> or C<no feature> declaration.
+
+Specifying sub-versions such as the C<0> in C<5.14.0> in feature bundles has
+no effect.  Feature bundles are guaranteed to be the same for all sub-versions.
+
+  use feature ":5.14.0";    # same as ":5.14"
+  use feature ":5.14.1";    # same as ":5.14"
+
+=head1 IMPLICIT LOADING
+
+Instead of loading feature bundles by name, it is easier to let Perl do
+implicit loading of a feature bundle for you.
+
+There are two ways to load the C<feature> pragma implicitly:
+
+=over 4
+
+=item *
+
+By using the C<-E> switch on the Perl command-line instead of C<-e>.
+That will enable the feature bundle for that version of Perl in the
+main compilation unit (that is, the one-liner that follows C<-E>).
+
+=item *
+
+By explicitly requiring a minimum Perl version number for your program, with
+the C<use VERSION> construct.  That is,
+
+    use v5.10.0;
+
+will do an implicit
+
+    no feature ':all';
+    use feature ':5.10';
+
+and so on.  Note how the trailing sub-version
+is automatically stripped from the
+version.
+
+But to avoid portability warnings (see L<perlfunc/use>), you may prefer:
+
+    use 5.010;
+
+with the same effect.
+
+If the required version is older than Perl 5.10, the ":default" feature
+bundle is automatically loaded instead.
+
+=back
+
+=cut
+
+sub import {
+    my $class = shift;
+
+    if (!@_) {
+        croak("No features specified");
+    }
+
+    __common(1, @_);
+}
+
+sub unimport {
+    my $class = shift;
+
+    # A bare C<no feature> should reset to the default bundle
+    if (!@_) {
+	$^H &= ~($hint_uni8bit|$hint_mask);
+	return;
+    }
+
+    __common(0, @_);
+}
+
+
+sub __common {
+    my $import = shift;
+    my $bundle_number = $^H & $hint_mask;
+    my $features = $bundle_number != $hint_mask
+	&& $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]};
+    if ($features) {
+	# Features are enabled implicitly via bundle hints.
+	# Delete any keys that may be left over from last time.
+	delete @^H{ values(%feature) };
+	$^H |= $hint_mask;
+	for (@$features) {
+	    $^H{$feature{$_}} = 1;
+	    $^H |= $hint_uni8bit if $_ eq 'unicode_strings';
+	}
+    }
+    while (@_) {
+        my $name = shift;
+        if (substr($name, 0, 1) eq ":") {
+            my $v = substr($name, 1);
+            if (!exists $feature_bundle{$v}) {
+                $v =~ s/^([0-9]+)\.([0-9]+).[0-9]+$/$1.$2/;
+                if (!exists $feature_bundle{$v}) {
+                    unknown_feature_bundle(substr($name, 1));
+                }
+            }
+            unshift @_, @{$feature_bundle{$v}};
+            next;
+        }
+        if (!exists $feature{$name}) {
+            unknown_feature($name);
+        }
+	if ($import) {
+	    $^H{$feature{$name}} = 1;
+	    $^H |= $hint_uni8bit if $name eq 'unicode_strings';
+	} else {
+            delete $^H{$feature{$name}};
+            $^H &= ~ $hint_uni8bit if $name eq 'unicode_strings';
+        }
+    }
+}
+
+sub unknown_feature {
+    my $feature = shift;
+    croak(sprintf('Feature "%s" is not supported by Perl %vd',
+            $feature, $^V));
+}
+
+sub unknown_feature_bundle {
+    my $feature = shift;
+    croak(sprintf('Feature bundle "%s" is not supported by Perl %vd',
+            $feature, $^V));
+}
+
+sub croak {
+    require Carp;
+    Carp::croak(@_);
+}
+
+1;

Added: vendor/perl/dist/regen/mg_vtable.pl
===================================================================
--- vendor/perl/dist/regen/mg_vtable.pl	                        (rev 0)
+++ vendor/perl/dist/regen/mg_vtable.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,359 @@
+#!/usr/bin/perl -w
+#
+# Regenerate (overwriting only if changed):
+#
+#    mg_names.c
+#    mg_raw.h
+#    mg_vtable.h
+#    pod/perlguts.pod
+#
+# from information stored in this file.  pod/perlguts.pod is not completely
+# regenerated.  Only the magic table is replaced; the other parts remain
+# untouched.
+#
+# Accepts the standard regen_lib -q and -v args.
+#
+# This script is normally invoked from regen.pl.
+
+use strict;
+require 5.004;
+
+BEGIN {
+    # Get function prototypes
+    require 'regen/regen_lib.pl';
+}
+
+my %mg =
+    (
+     sv => { char => '\0', vtable => 'sv', readonly_acceptable => 1,
+	     desc => 'Special scalar variable' },
+     # overload, or type "A" magic, used to be here.  Hence overloaded is
+     # often called AMAGIC internally, even though it does not use "A"
+     # magic any more.
+     overload_table => { char => 'c', vtable => 'ovrld',
+			 desc => 'Holds overload table (AMT) on stash' },
+     bm => { char => 'B', vtable => 'regexp', value_magic => 1,
+	     readonly_acceptable => 1,
+	     desc => 'Boyer-Moore (fast string search)' },
+     regdata => { char => 'D', vtable => 'regdata',
+		  desc => "Regex match position data\n(\@+ and \@- vars)" },
+     regdatum => { char => 'd', vtable => 'regdatum',
+		   desc => 'Regex match position data element' },
+     env => { char => 'E', vtable => 'env', desc => '%ENV hash' },
+     envelem => { char => 'e', vtable => 'envelem',
+		  desc => '%ENV hash element' },
+     fm => { char => 'f', vtable => 'regexp', value_magic => 1,
+	     readonly_acceptable => 1, desc => "Formline ('compiled' format)" },
+     regex_global => { char => 'g', vtable => 'mglob', value_magic => 1,
+		       readonly_acceptable => 1, desc => 'm//g target' },
+     hints => { char => 'H', vtable => 'hints', desc => '%^H hash' },
+     hintselem => { char => 'h', vtable => 'hintselem',
+		    desc => '%^H hash element' },
+     isa => { char => 'I', vtable => 'isa', desc => '@ISA array' },
+     isaelem => { char => 'i', vtable => 'isaelem',
+		  desc => '@ISA array element' },
+     nkeys => { char => 'k', vtable => 'nkeys', value_magic => 1,
+		desc => 'scalar(keys()) lvalue' },
+     dbfile => { char => 'L',
+		 desc => 'Debugger %_<filename' },
+     dbline => { char => 'l', vtable => 'dbline',
+		 desc => 'Debugger %_<filename element' },
+     shared => { char => 'N', desc => 'Shared between threads',
+		 unknown_to_sv_magic => 1 },
+     shared_scalar => { char => 'n', desc => 'Shared between threads',
+			unknown_to_sv_magic => 1 },
+     collxfrm => { char => 'o', vtable => 'collxfrm', value_magic => 1,
+		   desc => 'Locale transformation' },
+     tied => { char => 'P', vtable => 'pack',
+	       value_magic => 1, # treat as value, so 'local @tied' isn't tied
+	       desc => 'Tied array or hash' },
+     tiedelem => { char => 'p', vtable => 'packelem',
+		   desc => 'Tied array or hash element' },
+     tiedscalar => { char => 'q', vtable => 'packelem',
+		     desc => 'Tied scalar or handle' },
+     qr => { char => 'r', vtable => 'regexp', value_magic => 1, 
+	     desc => 'precompiled qr// regex' },
+     sig => { char => 'S', desc => '%SIG hash' },
+     sigelem => { char => 's', vtable => 'sigelem',
+		  desc => '%SIG hash element' },
+     taint => { char => 't', vtable => 'taint', value_magic => 1,
+		desc => 'Taintedness' },
+     uvar => { char => 'U', vtable => 'uvar',
+	       desc => 'Available for use by extensions' },
+     uvar_elem => { char => 'u', desc => 'Reserved for use by extensions',
+		    unknown_to_sv_magic => 1 },
+     vec => { char => 'v', vtable => 'vec', value_magic => 1,
+	      desc => 'vec() lvalue' },
+     vstring => { char => 'V', value_magic => 1,
+		  desc => 'SV was vstring literal' },
+     utf8 => { char => 'w', vtable => 'utf8', value_magic => 1,
+	       desc => 'Cached UTF-8 information' },
+     substr => { char => 'x', vtable => 'substr',  value_magic => 1,
+		 desc => 'substr() lvalue' },
+     defelem => { char => 'y', vtable => 'defelem', value_magic => 1,
+		  desc => "Shadow \"foreach\" iterator variable /\nsmart parameter vivification" },
+     arylen => { char => '#', vtable => 'arylen', value_magic => 1,
+		 desc => 'Array length ($#ary)' },
+     proto => { char => '&', desc => 'my sub prototype CV' },
+     pos => { char => '.', vtable => 'pos', value_magic => 1,
+	      desc => 'pos() lvalue' },
+     backref => { char => '<', vtable => 'backref', value_magic => 1,
+		  readonly_acceptable => 1, desc => 'for weak ref data' },
+     symtab => { char => ':', value_magic => 1,
+		 desc => 'extra data for symbol tables' },
+     rhash => { char => '%', value_magic => 1,
+		desc => 'extra data for restricted hashes' },
+     arylen_p => { char => '@', value_magic => 1,
+		   desc => 'to move arylen out of XPVAV' },
+     ext => { char => '~', desc => 'Available for use by extensions' },
+     checkcall => { char => ']', value_magic => 1, vtable => 'checkcall',
+		    desc => 'inlining/mutation of call to this CV'},
+);
+
+# These have a subtly different "namespace" from the magic types.
+my %sig =
+    (
+     'sv' => {get => 'get', set => 'set'},
+     'env' => {set => 'set_all_env', clear => 'clear_all_env'},
+     'envelem' => {set => 'setenv', clear => 'clearenv'},
+     'sigelem' => {get => 'getsig', set => 'setsig', clear => 'clearsig',
+		   cond => '#ifndef PERL_MICRO'},
+     'pack' => {len => 'sizepack', clear => 'wipepack'},
+     'packelem' => {get => 'getpack', set => 'setpack', clear => 'clearpack'},
+     'dbline' => {set => 'setdbline'},
+     'isa' => {set => 'setisa', clear => 'clearisa'},
+     'isaelem' => {set => 'setisa'},
+     'arylen' => {get => 'getarylen', set => 'setarylen', const => 1},
+     'arylen_p' => {clear => 'cleararylen_p', free => 'freearylen_p'},
+     'mglob' => {set => 'setmglob'},
+     'nkeys' => {get => 'getnkeys', set => 'setnkeys'},
+     'taint' => {get => 'gettaint', set => 'settaint'},
+     'substr' => {get => 'getsubstr', set => 'setsubstr'},
+     'vec' => {get => 'getvec', set => 'setvec'},
+     'pos' => {get => 'getpos', set => 'setpos'},
+     'uvar' => {get => 'getuvar', set => 'setuvar'},
+     'defelem' => {get => 'getdefelem', set => 'setdefelem'},
+     'regexp' => {set => 'setregexp', alias => [qw(bm fm)]},
+     'regdata' => {len => 'regdata_cnt'},
+     'regdatum' => {get => 'regdatum_get', set => 'regdatum_set'},
+     'backref' => {free => 'killbackrefs'},
+     'ovrld' => {free => 'freeovrld'},
+     'utf8' => {set => 'setutf8'},
+     'collxfrm' => {set => 'setcollxfrm',
+		    cond => '#ifdef USE_LOCALE_COLLATE'},
+     'hintselem' => {set => 'sethint', clear => 'clearhint'},
+     'hints' => {clear => 'clearhints'},
+     'checkcall' => {copy => 'copycallchecker'},
+);
+
+my ($vt, $raw, $names) = map {
+    open_new($_, '>',
+	     { by => 'regen/mg_vtable.pl', file => $_, style => '*' });
+} 'mg_vtable.h', 'mg_raw.h', 'mg_names.c';
+my $guts = open_new("pod/perlguts.pod", ">");
+
+print $vt <<'EOH';
+/* These constants should be used in preference to raw characters
+ * when using magic. Note that some perl guts still assume
+ * certain character properties of these constants, namely that
+ * isUPPER() and toLOWER() may do useful mappings.
+ */
+
+EOH
+
+# Of course, it would be *much* easier if we could output this table directly
+# here and now. However, for our sins, we try to support EBCDIC, which wouldn't
+# be *so* bad, except that there are (at least) 3 EBCDIC charset variants, and
+# they don't agree on the code point for '~'. Which we use. Great.
+# So we have to get the local build runtime to sort our table in character order
+# (And of course, just to be helpful, in POSIX BC '~' is \xFF, so we can't even
+# simplify the C code by assuming that the last element of the array is
+# predictable)
+
+{
+    my $longest = 0;
+    foreach (keys %mg) {
+	$longest = length $_ if length $_ > $longest;
+    }
+
+    my $longest_p1 = $longest + 1;
+
+    my %mg_order;
+    while (my ($name, $data) = each %mg) {
+	my $byte = eval qq{"$data->{char}"};
+	$data->{byte} = $byte;
+	$mg_order{(uc $byte) . $byte} = $name;
+    }
+    my @rows;
+    foreach (sort keys %mg_order) {
+	my $name = $mg_order{$_};
+	my $data = $mg{$name};
+	my $i = ord $data->{byte};
+	unless ($data->{unknown_to_sv_magic}) {
+	    my $value = $data->{vtable}
+		? "want_vtbl_$data->{vtable}" : 'magic_vtable_max';
+	    $value .= ' | PERL_MAGIC_READONLY_ACCEPTABLE'
+		if $data->{readonly_acceptable};
+	    $value .= ' | PERL_MAGIC_VALUE_MAGIC' if $data->{value_magic};
+	    my $comment = "/* $name '$data->{char}' $data->{desc} */";
+	    $comment =~ s/([\\"])/\\$1/g;
+	    $comment =~ tr/\n/ /;
+	    print $raw qq{    { '$data->{char}', "$value",\n      "$comment" },\n};
+	}
+
+	my $comment = $data->{desc};
+	my $leader = ' ' x ($longest + 27);
+	$comment =~ s/\n/\n$leader/s;
+	printf $vt "#define PERL_MAGIC_%-${longest}s '%s' /* %s */\n",
+	    $name, $data->{char}, $comment;
+
+	my $char = $data->{char};
+	$char =~ s/([\\"])/\\$1/g;
+	printf $names qq[\t{ PERL_MAGIC_%-${longest_p1}s "%s(%s)" },\n],
+	    "$name,", $name, $char;
+
+	push @rows, [(sprintf "%-2s PERL_MAGIC_%s", $data->{char}, $name),
+		     $data->{vtable} ? "vtbl_$data->{vtable}" : '(none)',
+		     $data->{desc}];
+    }
+    select +(select($guts), do {
+	my @header = ('(old-style char and macro)', 'MGVTBL', 'Type of magic');
+	my @widths = (0, 0);
+	foreach my $row (@rows) {
+	    for (0, 1) {
+		$widths[$_] = length $row->[$_]
+		    if length $row->[$_] > $widths[$_];
+	    }
+	}
+	my $indent = ' ';
+	my $format
+	    = sprintf "$indent%%-%ds%%-%ds%%s\n", $widths[0] + 1, $widths[1] + 1;
+	my $desc_wrap =
+	    79 - 7 - (length $indent) - $widths[0] - $widths[1] - 2;
+
+	open my $oldguts, "<", "pod/perlguts.pod"
+	   or die "$0 cannot open pod/perlguts.pod for reading: $!";
+	while (<$oldguts>) {
+	    print;
+	    last if /^=for mg_vtable.pl begin/
+	}
+
+	print "\n", $indent . "mg_type\n";
+	printf $format, @header;
+	printf $format, map {'-' x length $_} @header;
+	foreach (@rows) {
+	    my ($type, $vtbl, $desc) = @$_;
+	    $desc =~ tr/\n/ /;
+	    my @cont;
+	    if (length $desc > $desc_wrap) {
+		# If it's too long, first split on '(', if there.
+		# [Which, if there, is always short enough, currently.
+		# Make this more robust if that changes]
+		($desc, @cont) = split /(?=\()/, $desc;
+		if (!@cont) {
+		    ($desc, @cont) = $desc =~ /(.{1,$desc_wrap})(?: |\z)/g
+		}
+	    }
+	    printf $format, $type, $vtbl, $desc;
+	    printf $format, '', '', $_ foreach @cont;
+	}
+	print "\n";
+
+	while (<$oldguts>) {
+	    last if /^=for mg_vtable.pl end/;
+	}
+	do { print } while <$oldguts>;
+    })[0];
+}
+
+my @names = sort keys %sig;
+{
+    my $want = join ",\n    ", (map {"want_vtbl_$_"} @names), 'magic_vtable_max';
+    my $names = join qq{",\n    "}, @names;
+
+    print $vt <<"EOH";
+
+enum {		/* pass one of these to get_vtbl */
+    $want
+};
+
+#ifdef DOINIT
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
+    "$names"
+};
+#else
+EXTCONST char * const PL_magic_vtable_names[magic_vtable_max];
+#endif
+
+EOH
+}
+
+print $vt <<'EOH';
+/* These all need to be 0, not NULL, as NULL can be (void*)0, which is a
+ * pointer to data, whereas we're assigning pointers to functions, which are
+ * not the same beast. ANSI doesn't allow the assignment from one to the other.
+ * (although most, but not all, compilers are prepared to do it)
+ */
+
+/* order is:
+    get
+    set
+    len
+    clear
+    free
+    copy
+    dup
+    local
+*/
+
+#ifdef DOINIT
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
+EOH
+
+my @vtable_names;
+my @aliases;
+
+while (my $name = shift @names) {
+    my $data = $sig{$name};
+    push @vtable_names, $name;
+    my @funcs = map {
+	$data->{$_} ? "Perl_magic_$data->{$_}" : 0;
+    } qw(get set len clear free copy dup local);
+
+    $funcs[0] = "(int (*)(pTHX_ SV *, MAGIC *))" . $funcs[0] if $data->{const};
+    my $funcs = join ", ", @funcs;
+
+    # Because we can't have a , after the last {...}
+    my $comma = @names ? ',' : '';
+
+    print $vt "$data->{cond}\n" if $data->{cond};
+    print $vt "  { $funcs }$comma\n";
+    print $vt <<"EOH" if $data->{cond};
+#else
+  { 0, 0, 0, 0, 0, 0, 0, 0 }$comma
+#endif
+EOH
+    foreach(@{$data->{alias}}) {
+	push @aliases, "#define want_vtbl_$_ want_vtbl_$name\n";
+	push @vtable_names, $_;
+    }
+}
+
+print $vt <<'EOH';
+};
+#else
+EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
+#endif
+
+EOH
+
+print $vt (sort @aliases), "\n";
+
+print $vt "#define PL_vtbl_$_ PL_magic_vtables[want_vtbl_$_]\n"
+    foreach sort @vtable_names;
+
+# 63, not 64, As we rely on the last possible value to mean "NULL vtable"
+die "Too many vtable names" if @vtable_names > 63;
+
+read_only_bottom_close_and_rename($_) foreach $vt, $raw, $names;
+		 close_and_rename($guts);

Added: vendor/perl/dist/regen/mk_invlists.pl
===================================================================
--- vendor/perl/dist/regen/mk_invlists.pl	                        (rev 0)
+++ vendor/perl/dist/regen/mk_invlists.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,275 @@
+#!perl -w
+use 5.015;
+use strict;
+use warnings;
+use Unicode::UCD qw(prop_invlist prop_invmap);
+require 'regen/regen_lib.pl';
+
+# This program outputs charclass_invlists.h, which contains various inversion
+# lists in the form of C arrays that are to be used as-is for inversion lists.
+# Thus, the lists it contains are essentially pre-compiled, and need only a
+# light-weight fast wrapper to make them usable at run-time.
+
+# As such, this code knows about the internal structure of these lists, and
+# any change made to that has to be done here as well.  A random number stored
+# in the headers is used to minimize the possibility of things getting
+# out-of-sync, or the wrong data structure being passed.  Currently that
+# random number is:
+my $VERSION_DATA_STRUCTURE_TYPE = 290655244;
+
+my $out_fh = open_new('charclass_invlists.h', '>',
+		      {style => '*', by => $0,
+                      from => "Unicode::UCD"});
+
+print $out_fh "/* See the generating file for comments */\n\n";
+
+my %include_in_ext_re = ( NonL1_Perl_Non_Final_Folds => 1 );
+
+sub output_invlist ($$) {
+    my $name = shift;
+    my $invlist = shift;     # Reference to inversion list array
+
+    die "No inversion list for $name" unless defined $invlist
+                                             && ref $invlist eq 'ARRAY'
+                                             && @$invlist;
+
+    # Output the inversion list $invlist using the name $name for it.
+    # It is output in the exact internal form for inversion lists.
+
+    my $zero_or_one;    # Is the last element of the header 0, or 1 ?
+
+    # If the first element is 0, it goes in the header, instead of the body
+    if ($invlist->[0] == 0) {
+        shift @$invlist;
+
+        $zero_or_one = 0;
+
+        # Add a dummy 0 at the end so that the length is constant.  inversion
+        # lists are always stored with enough room so that if they change from
+        # beginning with 0, they don't have to grow.
+        push @$invlist, 0;
+    }
+    else {
+        $zero_or_one = 1;
+    }
+
+    print $out_fh "\n#ifndef PERL_IN_XSUB_RE\n" unless exists $include_in_ext_re{$name};
+    print $out_fh "\nstatic UV ${name}_invlist[] = {\n";
+
+    print $out_fh "\t", scalar @$invlist, ",\t/* Number of elements */\n";
+
+    # This should be UV_MAX, but I (khw) am not confident that the suffixes
+    # for specifying the constant are portable, e.g.  'ull' on a 32 bit
+    # machine that is configured to use 64 bits; might need a Configure probe
+    print $out_fh "\t0,\t/* Current iteration position */\n";
+    print $out_fh "\t0,\t/* Cache of previous search index result */\n";
+    print $out_fh "\t$VERSION_DATA_STRUCTURE_TYPE, /* Version and data structure type */\n";
+    print $out_fh "\t", $zero_or_one,
+                  ",\t/* 0 if this is the first element of the list proper;",
+                  "\n\t\t   1 if the next element is the first */\n";
+
+    # The main body are the UVs passed in to this routine.  Do the final
+    # element separately
+    for my $i (0 .. @$invlist - 1 - 1) {
+        print $out_fh "\t$invlist->[$i],\n";
+    }
+
+    # The final element does not have a trailing comma, as C can't handle it.
+    print $out_fh "\t$invlist->[-1]\n";
+
+    print $out_fh "};\n";
+    print $out_fh "\n#endif\n" unless exists $include_in_ext_re{$name};
+
+}
+
+sub mk_invlist_from_cp_list {
+
+    # Returns an inversion list constructed from the sorted input array of
+    # code points
+
+    my $list_ref = shift;
+
+    # Initialize to just the first element
+    my @invlist = ( $list_ref->[0], $list_ref->[0] + 1);
+
+    # For each succeeding element, if it extends the previous range, adjust
+    # up, otherwise add it.
+    for my $i (1 .. @$list_ref - 1) {
+        if ($invlist[-1] == $list_ref->[$i]) {
+            $invlist[-1]++;
+        }
+        else {
+            push @invlist, $list_ref->[$i], $list_ref->[$i] + 1;
+        }
+    }
+    return @invlist;
+}
+
+# Read in the Case Folding rules, and construct arrays of code points for the
+# properties we need.
+my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+die "Could not find inversion map for Case_Folding" unless defined $format;
+die "Incorrect format '$format' for Case_Folding inversion map"
+                                                    unless $format eq 'al';
+my @has_multi_char_fold;
+my @is_non_final_fold;
+
+for my $i (0 .. @$folds_ref - 1) {
+    next unless ref $folds_ref->[$i];   # Skip single-char folds
+    push @has_multi_char_fold, $cp_ref->[$i];
+
+    # Add to the the non-finals list each code point that is in a non-final
+    # position
+    for my $j (0 .. @{$folds_ref->[$i]} - 2) {
+        push @is_non_final_fold, $folds_ref->[$i][$j]
+                unless grep { $folds_ref->[$i][$j] == $_ } @is_non_final_fold;
+    }
+}
+
+sub _Perl_Multi_Char_Folds {
+    @has_multi_char_fold = sort { $a <=> $b } @has_multi_char_fold;
+    return mk_invlist_from_cp_list(\@has_multi_char_fold);
+}
+
+sub _Perl_Non_Final_Folds {
+    @is_non_final_fold = sort { $a <=> $b } @is_non_final_fold;
+    return mk_invlist_from_cp_list(\@is_non_final_fold);
+}
+
+output_invlist("Latin1", [ 0, 256 ]);
+output_invlist("AboveLatin1", [ 256 ]);
+
+# We construct lists for all the POSIX and backslash sequence character
+# classes in two forms:
+#   1) ones which match only in the ASCII range
+#   2) ones which match either in the Latin1 range, or the entire Unicode range
+#
+# These get compiled in, and hence affect the memory footprint of every Perl
+# program, even those not using Unicode.  To minimize the size, currently
+# the Latin1 version is generated for the beyond ASCII range except for those
+# lists that are quite small for the entire range, such as for \s, which is 22
+# UVs long plus 4 UVs (currently) for the header.
+#
+# To save even more memory, the ASCII versions could be derived from the
+# larger ones at runtime, saving some memory (minus the expense of the machine
+# instructions to do so), but these are all small anyway, so their total is
+# about 100 UVs.
+#
+# In the list of properties below that get generated, the L1 prefix is a fake
+# property that means just the Latin1 range of the full property (whose name
+# has an X prefix instead of L1).
+#
+# An initial & means to use the subroutine from this file instead of an
+# official inversion list.
+
+for my $prop (qw(
+                ASCII
+                L1Cased
+		VertSpace
+                PerlSpace
+                    XPerlSpace
+                PosixAlnum
+                    L1PosixAlnum
+                PosixAlpha
+                    L1PosixAlpha
+                PosixBlank
+                    XPosixBlank
+                PosixCntrl
+                    XPosixCntrl
+                PosixDigit
+                PosixGraph
+                    L1PosixGraph
+                PosixLower
+                    L1PosixLower
+                PosixPrint
+                    L1PosixPrint
+                PosixPunct
+                    L1PosixPunct
+                PosixSpace
+                    XPosixSpace
+                PosixUpper
+                    L1PosixUpper
+                PosixWord
+                    L1PosixWord
+                PosixXDigit
+                    XPosixXDigit
+                &NonL1_Perl_Non_Final_Folds
+                &_Perl_Multi_Char_Folds
+    )
+) {
+
+    # For the Latin1 properties, we change to use the eXtended version of the
+    # base property, then go through the result and get rid of everything not
+    # in Latin1 (above 255).  Actually, we retain the element for the range
+    # that crosses the 255/256 boundary if it is one that matches the
+    # property.  For example, in the Word property, there is a range of code
+    # points that start at U+00F8 and goes through U+02C1.  Instead of
+    # artifically cutting that off at 256 because 256 is the first code point
+    # above Latin1, we let the range go to its natural ending.  That gives us
+    # extra information with no added space taken.  But if the range that
+    # crosses the boundary is one that doesn't match the property, we don't
+    # start a new range above 255, as that could be construed as going to
+    # infinity.  For example, the Upper property doesn't include the character
+    # at 255, but does include the one at 256.  We don't include the 256 one.
+    my $prop_name = $prop;
+    my $is_local_sub = $prop_name =~ s/^&//;
+    my $lookup_prop = $prop_name;
+    my $l1_only = ($lookup_prop =~ s/^L1Posix/XPosix/ or $lookup_prop =~ s/^L1//);
+    my $nonl1_only = 0;
+    $nonl1_only = $lookup_prop =~ s/^NonL1// unless $l1_only;
+
+    my @invlist;
+    if ($is_local_sub) {
+        @invlist = eval $lookup_prop;
+    }
+    else {
+        @invlist = prop_invlist($lookup_prop, '_perl_core_internal_ok');
+    }
+    die "Could not find inversion list for '$lookup_prop'" unless @invlist;
+
+    if ($l1_only) {
+        for my $i (0 .. @invlist - 1 - 1) {
+            if ($invlist[$i] > 255) {
+
+                # In an inversion list, even-numbered elements give the code
+                # points that begin ranges that match the property;
+                # odd-numbered give ones that begin ranges that don't match.
+                # If $i is odd, we are at the first code point above 255 that
+                # doesn't match, which means the range it is ending does
+                # match, and crosses the 255/256 boundary.  We want to include
+                # this ending point, so increment $i, so the splice below
+                # includes it.  Conversely, if $i is even, it is the first
+                # code point above 255 that matches, which means there was no
+                # matching range that crossed the boundary, and we don't want
+                # to include this code point, so splice before it.
+                $i++ if $i % 2 != 0;
+
+                # Remove everything past this.
+                splice @invlist, $i;
+                last;
+            }
+        }
+    }
+    elsif ($nonl1_only) {
+        my $found_nonl1 = 0;
+        for my $i (0 .. @invlist - 1 - 1) {
+            next if $invlist[$i] < 256;
+
+            # Here, we have the first element in the array that indicates an
+            # element above Latin1.  Get rid of all previous ones.
+            splice @invlist, 0, $i;
+
+            # If this one's index is not divisible by 2, it means that this
+            # element is inverting away from being in the list, which means
+            # all code points from 256 to this one are in this list.
+            unshift @invlist, 256 if $i % 2 != 0;
+            $found_nonl1 = 1;
+            last;
+        }
+        die "No non-Latin1 code points in $lookup_prop" unless $found_nonl1;
+    }
+
+    output_invlist($prop_name, \@invlist);
+}
+
+read_only_bottom_close_and_rename($out_fh)

Added: vendor/perl/dist/regen/regcharclass_multi_char_folds.pl
===================================================================
--- vendor/perl/dist/regen/regcharclass_multi_char_folds.pl	                        (rev 0)
+++ vendor/perl/dist/regen/regcharclass_multi_char_folds.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,110 @@
+package regcharclass_multi_char_folds;
+use 5.015;
+use strict;
+use warnings;
+use Unicode::UCD "prop_invmap";
+
+# This returns an array of strings of the form
+#   "\x{foo}\x{bar}\x{baz}"
+# of the sequences of code points that are multi-character folds in the
+# current Unicode version.  If the parameter is 1, all such folds are
+# returned.  If the parameters is 0, only the ones containing exclusively
+# Latin1 characters are returned.  In the latter case all combinations of
+# Latin1 characters that can fold to the base one are returned.  Thus for
+# 'ss', it would return in addition, 'Ss', 'sS', and 'SS'.  This is because
+# this code is designed to help regcomp.c, and EXACTFish regnodes.  For
+# non-UTF-8 patterns, the strings are not folded, so we need to check for the
+# upper and lower case versions.  For UTF-8 patterns, the strings are folded,
+# so we only need to worry about the fold version.  There are no non-ASCII
+# Latin1 multi-char folds currently, and none likely to be ever added.  Thus
+# the output is the same as if it were just asking for ASCII characters, not
+# full Latin1.  Hence, it is suitable for generating things that match
+# EXACTFA.  It does check for and croak if there ever were to be an upper
+# Latin1 range multi-character fold.
+#
+# This is designed for input to regen/regcharlass.pl.
+
+sub gen_combinations ($;) {
+    # Generate all combinations for the first parameter which is an array of
+    # arrays.
+
+    my ($fold_ref, $string, $i) = @_;
+    $string = "" unless $string;
+    $i = 0 unless $i;
+
+    my @ret;
+
+    # Look at each element in this level's array.
+    foreach my $j (0 .. @{$fold_ref->[$i]} - 1) {
+
+        # Append its representation to what we have currently
+        my $new_string = sprintf "$string\\x{%X}", $fold_ref->[$i][$j];
+
+        if ($i >=  @$fold_ref - 1) {    # Final level: just return it
+            push @ret, "\"$new_string\"";
+        }
+        else {  # Generate the combinations for the next level with this one's
+            push @ret, &gen_combinations($fold_ref, $new_string, $i + 1);
+        }
+    }
+
+    return @ret;
+}
+
+sub multi_char_folds ($) {
+    my $all_folds = shift;  # The single parameter is true if wants all
+                            # multi-char folds; false if just the ones that
+                            # are all ascii
+
+    my ($cp_ref, $folds_ref, $format) = prop_invmap("Case_Folding");
+    die "Could not find inversion map for Case_Folding" unless defined $format;
+    die "Incorrect format '$format' for Case_Folding inversion map"
+                                                        unless $format eq 'al';
+    my @folds;
+
+    for my $i (0 .. @$folds_ref - 1) {
+        next unless ref $folds_ref->[$i];   # Skip single-char folds
+
+        # The code in regcomp.c currently assumes that no multi-char fold
+        # folds to the upper Latin1 range.  It's not a big deal to add; we
+        # just have to forbid such a fold in EXACTFL nodes, like we do already
+        # for ascii chars in EXACTFA (and EXACTFL) nodes.  But I (khw) doubt
+        # that there will ever be such a fold created by Unicode, so the code
+        # isn't there to occupy space and time; instead there is this check.
+        die sprintf("regcomp.c can't cope with a latin1 multi-char fold (found in the fold of U+%X", $cp_ref->[$i]) if grep { $_ < 256 && chr($_) !~ /[[:ascii:]]/ } @{$folds_ref->[$i]};
+
+        # Create a line that looks like "\x{foo}\x{bar}\x{baz}" of the code
+        # points that make up the fold.
+        my $fold = join "", map { sprintf "\\x{%X}", $_ } @{$folds_ref->[$i]};
+        $fold = "\"$fold\"";
+
+        # Skip if something else already has this fold
+        next if grep { $_ eq $fold } @folds;
+
+        if ($all_folds) {
+            push @folds, $fold
+        }   # Skip if wants only all-ascii folds, and there is a non-ascii
+        elsif (! grep { chr($_) =~ /[^[:ascii:]]/ } @{$folds_ref->[$i]}) {
+
+            # If the fold is to a cased letter, replace the entry with an
+            # array which also includes its upper case.
+            my $this_fold_ref = $folds_ref->[$i];
+            for my $j (0 .. @$this_fold_ref - 1) {
+                my $this_ord = $this_fold_ref->[$j];
+                if (chr($this_ord) =~ /\p{Cased}/) {
+                    my $uc = ord(uc(chr($this_ord)));
+                    undef $this_fold_ref->[$j];
+                    @{$this_fold_ref->[$j]} = ( $this_ord, $uc);
+                }
+            }
+
+            # Then generate all combinations of upper/lower case of the fold.
+            push @folds, gen_combinations($this_fold_ref);
+
+        }
+    }
+
+    return @folds;
+}
+
+1

Added: vendor/perl/dist/regen/unicode_constants.pl
===================================================================
--- vendor/perl/dist/regen/unicode_constants.pl	                        (rev 0)
+++ vendor/perl/dist/regen/unicode_constants.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,160 @@
+use v5.16.0;
+use strict;
+use warnings;
+require 'regen/regen_lib.pl';
+use charnames qw(:loose);
+
+my $out_fh = open_new('unicode_constants.h', '>',
+		      {style => '*', by => $0,
+                      from => "Unicode data"});
+
+print $out_fh <<END;
+
+#ifndef H_UNICODE_CONSTANTS   /* Guard against nested #includes */
+#define H_UNICODE_CONSTANTS   1
+
+/* This file contains #defines for various Unicode code points.  The values
+ * the macros expand to are the native Unicode code point, or all or portions
+ * of the UTF-8 encoding for the code point.  In the former case, the macro
+ * name has the suffix "_NATIVE"; otherwise, the suffix "_UTF8".
+ *
+ * The macros that have the suffix "_UTF8" may have further suffixes, as
+ * follows:
+ *  "_FIRST_BYTE" if the value is just the first byte of the UTF-8
+ *                representation; the value will be a numeric constant.
+ *  "_TAIL"       if instead it represents all but the first byte.  This, and
+ *                with no additional suffix are both string constants */
+
+END
+
+# The data are at the end of this file.  A blank line is output as-is.
+# Comments (lines whose first non-blank is a '#') are converted to C-style,
+# though empty comments are converted to blank lines.  Otherwise, each line
+# represents one #define, and begins with either a Unicode character name with
+# the blanks and dashes in it squeezed out or replaced by underscores; or it
+# may be a hexadecimal Unicode code point of the form U+xxxx.  In the latter
+# case, the name will be looked-up to use as the name of the macro.  In either
+# case, the macro name will have suffixes as listed above, and all blanks and
+# dashes will be replaced by underscores.
+#
+# Each line may optionally have one of the following flags on it, separated by
+# white space from the initial token.
+#   string  indicates that the output is to be of the string form
+#           described in the comments above that are placed in the file.
+#   string_skip_ifundef  is the same as 'string', but instead of dying if the
+#           code point doesn't exist, the line is just skipped: no output is
+#           generated for it
+#   first   indicates that the output is to be of the FIRST_BYTE form.
+#   tail    indicates that the output is of the _TAIL form.
+#   native  indicates that the output is the code point, converted to the
+#           platform's native character set if applicable
+#
+# If the code point has no official name, the desired name may be appended
+# after the flag, which will be ignored if there is an official name.
+#
+# This program is used to make it convenient to create compile time constants
+# of UTF-8, and to generate proper EBCDIC as well as ASCII without manually
+# having to figure things out.
+
+while ( <DATA> ) {
+    chomp;
+
+    # Convert any '#' comments to /* ... */; empty lines and comments are
+    # output as blank lines
+    if ($_ =~ m/ ^ \s* (?: \# ( .* ) )? $ /x) {
+        my $comment_body = $1 // "";
+        if ($comment_body ne "") {
+            print $out_fh "/* $comment_body */\n";
+        }
+        else {
+            print $out_fh "\n";
+        }
+        next;
+    }
+
+    unless ($_ =~ m/ ^ ( [^\ ]* )           # Name or code point token
+                       (?: [\ ]+ ( [^ ]* ) )?  # optional flag
+                       (?: [\ ]+ ( .* ) )?  # name if unnamed; flag is required
+                   /x)
+    {
+        die "Unexpected syntax at line $.: $_\n";
+    }
+
+    my $name_or_cp = $1;
+    my $flag = $2;
+    my $desired_name = $3;
+
+    my $name;
+    my $cp;
+    my $U_cp;   # code point in Unicode (not-native) terms
+    my $undef_ok = $desired_name || $flag =~ /skip_if_undef/;
+
+    if ($name_or_cp =~ /^U\+(.*)/) {
+        $U_cp = hex $1;
+        $name = charnames::viacode($name_or_cp);
+        if (! defined $name) {
+            die "Unknown code point '$name_or_cp' at line $.: $_\n" unless $undef_ok;
+            $name = "";
+        }
+        $cp = utf8::unicode_to_native($U_cp);
+    }
+    else {
+        $name = $name_or_cp;
+        $cp = charnames::vianame($name =~ s/_/ /gr);
+        $U_cp = utf8::native_to_unicode($cp);
+        die "Unknown name '$name' at line $.: $_\n" unless defined $name;
+    }
+
+    $name = $desired_name if $name eq "" && $desired_name;
+    $name =~ s/[- ]/_/g;   # The macro name can have no blanks nor dashes
+
+    my $str = join "", map { sprintf "\\x%02X", $_ }
+                       unpack("U0C*", pack("U", $cp));
+
+    my $suffix = '_UTF8';
+    if (! defined $flag  || $flag =~ /^ string (_skip_if_undef)? $/x) {
+        $str = "\"$str\"";  # Will be a string constant
+    } elsif ($flag eq 'tail') {
+            $str =~ s/\\x..//;  # Remove the first byte
+            $suffix .= '_TAIL';
+            $str = "\"$str\"";  # Will be a string constant
+    }
+    elsif ($flag eq 'first') {
+        $str =~ s/ \\x ( .. ) .* /$1/x; # Get the two nibbles of the 1st byte
+        $suffix .= '_FIRST_BYTE';
+        $str = "0x$str";        # Is a numeric constant
+    }
+    elsif ($flag eq 'native') {
+        die "Are you sure you want to run this on an above-Latin1 code point?" if $cp > 0xff;
+        $suffix = '_NATIVE';
+        $str = sprintf "0x%02X", $cp;        # Is a numeric constant
+    }
+    else {
+        die "Unknown flag at line $.: $_\n";
+    }
+    printf $out_fh "#define %s%s  %s    /* U+%04X */\n", $name, $suffix, $str, $U_cp;
+}
+
+print $out_fh "\n#endif /* H_UNICODE_CONSTANTS */\n";
+
+read_only_bottom_close_and_rename($out_fh);
+
+__DATA__
+
+U+0300 string
+U+0301 string
+U+0308 string
+
+U+03B9 string
+
+U+03C5 string
+
+U+2010 string
+U+D800 first FIRST_SURROGATE
+
+DEL native
+U+00DF native
+U+00E5 native
+U+00C5 native
+U+00FF native
+U+00B5 native

Added: vendor/perl/dist/t/bigmem/read.t
===================================================================
--- vendor/perl/dist/t/bigmem/read.t	                        (rev 0)
+++ vendor/perl/dist/t/bigmem/read.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,24 @@
+#!perl
+BEGIN {
+    chdir 't';
+    unshift @INC, "../lib";
+}
+
+use strict;
+require './test.pl';
+use Config qw(%Config);
+
+$ENV{PERL_TEST_MEMORY} >= 3
+    or skip_all("Need ~3Gb for this test");
+$Config{ptrsize} >= 8
+    or skip_all("Need 64-bit pointers for this test");
+
+plan(1);
+
+# RT #100514
+my $x = "";
+read(DATA, $x, 4, 0x80000000);
+is(length $x, 0x80000004, "check we read to the correct offset");
+__DATA__
+Food
+

Added: vendor/perl/dist/t/bigmem/vec.t
===================================================================
--- vendor/perl/dist/t/bigmem/vec.t	                        (rev 0)
+++ vendor/perl/dist/t/bigmem/vec.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!perl
+BEGIN {
+    chdir 't';
+    unshift @INC, "../lib";
+}
+
+use strict;
+require './test.pl';
+use Config qw(%Config);
+
+$ENV{PERL_TEST_MEMORY} >= 1
+    or skip_all("Need ~1Gb for this test");
+$Config{ptrsize} >= 8
+    or skip_all("Need 64-bit pointers for this test");
+
+plan(7);
+
+# RT #111730: Negative offset to vec in lvalue context
+
+my $v = "";
+ok(scalar eval { vec($v, 0x80000000, 1) = 1 }, "set a bit at a large offset");
+ok(vec($v, 0x80000000, 1), "check a bit at a large offset");
+
+ok(scalar eval { vec($v, 0x100000000, 1) = 1 },
+   "set a bit at a larger offset");
+ok(vec($v, 0x100000000, 1), "check a bit at a larger offset");
+
+# real out of range values
+ok(!eval { vec($v, -0x80000000, 1) = 1 },
+   "shouldn't be able to set at a large negative offset");
+ok(!eval { vec($v, -0x100000000, 1) = 1 },
+   "shouldn't be able to set at a larger negative offset");
+
+ok(!vec($v, 0, 1), "make sure we didn't wrap");

Added: vendor/perl/dist/t/io/shm.t
===================================================================
--- vendor/perl/dist/t/io/shm.t	                        (rev 0)
+++ vendor/perl/dist/t/io/shm.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,92 @@
+################################################################################
+#
+#  $Revision: 6 $
+#  $Author: mhx $
+#  $Date: 2010/03/07 16:01:42 +0100 $
+#
+################################################################################
+#
+#  Version 2.x, Copyright (C) 2007-2010, Marcus Holland-Moritz <mhx at cpan.org>.
+#  Version 1.x, Copyright (C) 1999, Graham Barr <gbarr at pobox.com>.
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the same terms as Perl itself.
+#
+################################################################################
+
+BEGIN {
+  if ($ENV{'PERL_CORE'}) {
+    chdir 't' if -d 't';
+    @INC = '../lib' if -d '../lib' && -d '../ext';
+  }
+
+  require "./test.pl";
+  require Config; import Config;
+
+  if ($ENV{'PERL_CORE'} && $Config{'extensions'} !~ m[\bIPC/SysV\b]) {
+    skip_all('-- IPC::SysV was not built');
+  }
+  skip_all_if_miniperl();
+  if ($Config{'d_shm'} ne 'define') {
+    skip_all('-- $Config{d_shm} undefined');
+  }
+}
+
+
+use sigtrap qw/die normal-signals error-signals/;
+use IPC::SysV qw/ IPC_PRIVATE S_IRWXU IPC_RMID /;
+
+my $key;
+END { shmctl $key, IPC_RMID, 0 if defined $key }
+
+{
+	local $SIG{SYS} = sub { plan(skip_all => "SIGSYS caught") } if exists $SIG{SYS};
+	$key = shmget IPC_PRIVATE, 8, S_IRWXU;
+}
+
+if (not defined $key) {
+  my $info = "IPC::SharedMem->new failed: $!";
+  if ($! == &IPC::SysV::ENOSPC || $! == &IPC::SysV::ENOSYS ||
+      $! == &IPC::SysV::ENOMEM || $! == &IPC::SysV::EACCES) {
+    plan(skip_all => $info);
+  }
+  else {
+    die $info;
+  }
+}
+else {
+	plan(tests => 15);
+	pass('acquired shared mem');
+}
+
+ok(shmwrite($key, pack("N", 4711), 0, 4), 'write(offs=0)');
+ok(shmwrite($key, pack("N", 210577), 4, 4), 'write(offs=4)');
+
+my $var;
+ok(shmread($key, $var, 0, 4), 'read(offs=0) returned ok');
+is($var, pack("N", 4711), 'read(offs=0) correct');
+ok(shmread($key, $var, 4, 4), 'read(offs=4) returned ok');
+is($var, pack("N", 210577), 'read(offs=4) correct');
+
+ok(shmwrite($key, "Shared", 1, 6), 'write(offs=1)');
+
+ok(shmread($key, $var, 1, 6), 'read(offs=1) returned ok');
+is($var, 'Shared', 'read(offs=1) correct');
+ok(shmwrite($key,"Memory", 0, 6), 'write(offs=0)');
+
+my $number = 1;
+my $int = 2;
+shmwrite $key, $int, 0, 1;
+shmread $key, $number, 0, 1;
+is("$number", $int, qq{"\$id" eq "$int"});
+cmp_ok($number + 0, '==', $int, "\$id + 0 == $int");
+
+my ($fetch, $store) = (0, 0);
+{ package Counted;
+  sub TIESCALAR { bless [undef] }
+  sub FETCH     { ++$fetch; $_[0][0] }
+  sub STORE     { ++$store; $_[0][0] = $_[1] } }
+tie $ct, 'Counted';
+shmread $key, $ct, 0, 1;
+is($fetch, 1, "shmread FETCH once");
+is($store, 1, "shmread STORE once");

Added: vendor/perl/dist/t/lib/Count.pm
===================================================================
--- vendor/perl/dist/t/lib/Count.pm	                        (rev 0)
+++ vendor/perl/dist/t/lib/Count.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8 @@
+# zero! ha ha ha
+package Count;
+"ha!";
+__DATA__
+one! ha ha ha
+two! ha ha ha
+three! ha ha ha
+four! ha ha ha

Added: vendor/perl/dist/t/lib/Devel/nodb.pm
===================================================================
--- vendor/perl/dist/t/lib/Devel/nodb.pm	                        (rev 0)
+++ vendor/perl/dist/t/lib/Devel/nodb.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,3 @@
+package Devel::nodb;
+*DB::DB = sub { } if 0;
+1;

Added: vendor/perl/dist/t/lib/croak/mg
===================================================================
--- vendor/perl/dist/t/lib/croak/mg	                        (rev 0)
+++ vendor/perl/dist/t/lib/croak/mg	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,7 @@
+__END__
+# mg.c
+# NAME Perl_magic_setsig
+$SIG{_HUNGRY} = \&mmm_pie;
+warn "Mmm, pie";
+EXPECT
+No such hook: _HUNGRY at - line 2.

Added: vendor/perl/dist/t/lib/croak/op
===================================================================
--- vendor/perl/dist/t/lib/croak/op	                        (rev 0)
+++ vendor/perl/dist/t/lib/croak/op	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,45 @@
+__END__
+# NAME my $<special>
+my $!;
+EXPECT
+Can't use global $! in "my" at - line 1, near "my $!"
+Execution of - aborted due to compilation errors.
+########
+# NAME OP_HELEM fields
+package Foo;
+use fields qw(a b);
+sub new {
+    my $class = shift;
+    return fields::new($class);
+}
+my Foo $f = Foo->new;
+$f->{c} = 1;
+EXPECT
+No such class field "c" in variable $f of type Foo at - line 8.
+########
+# NAME OP_HSLICE fields
+package Foo;
+use fields qw(a b);
+sub new {
+    my $class = shift;
+    return fields::new($class);
+}
+my Foo $f = Foo->new;
+@$f{"a", "c"} = ( 1, 2 );
+EXPECT
+No such class field "c" in variable $f of type Foo at - line 8.
+########
+# NAME delete BAD
+delete $x;
+EXPECT
+delete argument is not a HASH or ARRAY element or slice at - line 1.
+########
+# NAME exists BAD
+exists $x;
+EXPECT
+exists argument is not a HASH or ARRAY element or a subroutine at - line 1.
+########
+# NAME exists non-sub
+exists &foo()
+EXPECT
+exists argument is not a subroutine name at - line 1.

Added: vendor/perl/dist/t/lib/croak/pp_ctl
===================================================================
--- vendor/perl/dist/t/lib/croak/pp_ctl	                        (rev 0)
+++ vendor/perl/dist/t/lib/croak/pp_ctl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,18 @@
+__END__
+# NAME dump with computed label
+my $label = "foo";
+dump $label;
+EXPECT
+Can't find label foo at - line 2.
+########
+# NAME when outside given
+use 5.01; no warnings 'experimental::smartmatch';
+when(undef){}
+EXPECT
+Can't "when" outside a topicalizer at - line 2.
+########
+# NAME default outside given
+use 5.01;
+default{}
+EXPECT
+Can't "default" outside a topicalizer at - line 2.

Added: vendor/perl/dist/t/lib/croak/pp_hot
===================================================================
--- vendor/perl/dist/t/lib/croak/pp_hot	                        (rev 0)
+++ vendor/perl/dist/t/lib/croak/pp_hot	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,60 @@
+__END__
+# NAME local %$ref on last line of lvalue sub in lv cx
+   sub foo :lvalue { local %{\%foo} }
+   (foo) = 3;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local @$ref on last line of lvalue sub in lv cx
+   sub foo :lvalue { local @{\@foo} }
+   (foo) = 3;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local %$ref on last line of lvalue sub in non-lv cx
+   sub foo :lvalue { local %{\%foo} }
+   foo;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME local @$ref on last line of lvalue sub in non-lv cx
+   sub foo :lvalue { local @{\@foo} }
+   foo;
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME \local %$ref
+   \local %{\%hash}
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME \local @$ref
+   \local @{\@hash}
+EXPECT
+Can't localize through a reference at - line 1.
+########
+# NAME calling undef sub belonging to undef GV
+   my $foosub = \&foo;
+   undef *foo;
+   &$foosub;
+EXPECT
+Undefined subroutine &main::foo called at - line 3.
+########
+# NAME calling undef sub resident in its GV
+   my $foosub = \&foo;
+   &$foosub;
+EXPECT
+Undefined subroutine &main::foo called at - line 2.
+########
+# NAME calling undef scalar
+   &{+undef};
+EXPECT
+Can't use an undefined value as a subroutine reference at - line 1.
+########
+# NAME calling undef magical scalar
+   sub TIESCALAR {bless[]}
+   sub FETCH {}
+   tie $tied, "";
+   &$tied;
+EXPECT
+Can't use an undefined value as a subroutine reference at - line 4.

Added: vendor/perl/dist/t/lib/croak/toke
===================================================================
--- vendor/perl/dist/t/lib/croak/toke	                        (rev 0)
+++ vendor/perl/dist/t/lib/croak/toke	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,130 @@
+__END__
+# NAME Unterminated here-doc in string eval
+eval "<<foo"; die $@
+EXPECT
+Can't find string terminator "foo" anywhere before EOF at (eval 1) line 1.
+########
+# NAME Unterminated here-doc in s/// string eval
+eval "s//<<foo/e"; die $@
+EXPECT
+Can't find string terminator "foo" anywhere before EOF at (eval 1) line 1.
+########
+# NAME Missing name in "my sub"
+use feature 'lexical_subs'; my sub;
+EXPECT
+The lexical_subs feature is experimental at - line 1.
+Missing name in "my sub" at - line 1.
+########
+# NAME Missing name in "our sub"
+use feature 'lexical_subs'; our sub;
+EXPECT
+The lexical_subs feature is experimental at - line 1.
+Missing name in "our sub" at - line 1.
+########
+# NAME Missing name in "state sub"
+use 5.01; use feature 'lexical_subs';
+state sub;
+EXPECT
+The lexical_subs feature is experimental at - line 2.
+Missing name in "state sub" at - line 2.
+########
+# NAME Integer constant overloading returning undef
+use overload;
+BEGIN { overload::constant integer => sub {}; undef *^H }
+1
+EXPECT
+Constant(1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Float constant overloading returning undef
+use overload;
+BEGIN { overload::constant float => sub {}; undef *^H }
+1.1
+EXPECT
+Constant(1.1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Binary constant overloading returning undef
+use overload;
+BEGIN { overload::constant binary => sub {}; undef *^H }
+0x1
+EXPECT
+Constant(0x1) unknown at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME String constant overloading returning undef
+use overload;
+BEGIN { overload::constant q => sub {}; undef *^H }
+'1', "1$_", tr"a"", s""a"
+EXPECT
+Constant(q) unknown at - line 3, near "'1'"
+Constant(qq) unknown at - line 3, within string
+Constant(tr) unknown at - line 3, within string
+Constant(s) unknown at - line 3, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Regexp constant overloading when *^H is undefined
+use overload;
+BEGIN { overload::constant qr => sub {}; undef *^H }
+/a/, m'a'
+EXPECT
+Constant(qq) unknown at - line 3, within pattern
+Constant(q) unknown at - line 3, within pattern
+Execution of - aborted due to compilation errors.
+########
+# NAME \N{...} when charnames fails to load but without an error
+# SKIP ? exists $ENV{PERL_UNICODE} ? "Unreliable under some PERL_UNICODE settings" : 0
+BEGIN { ++$_ for @INC{"charnames.pm","_charnames.pm"} }
+"\N{a}"
+EXPECT
+Constant(\N{a}) unknown at - line 2, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Integer constant overloading returning undef
+use overload;
+BEGIN { overload::constant integer => sub {} }
+1
+EXPECT
+Constant(1): Call to &{$^H{integer}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Float constant overloading returning undef
+use overload;
+BEGIN { overload::constant float => sub {} }
+1.1
+EXPECT
+Constant(1.1): Call to &{$^H{float}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME Binary constant overloading returning undef
+use overload;
+BEGIN { overload::constant binary => sub {} }
+0x1
+EXPECT
+Constant(0x1): Call to &{$^H{binary}} did not return a defined value at - line 3, at end of line
+Execution of - aborted due to compilation errors.
+########
+# NAME String constant overloading returning undef
+use overload;
+BEGIN { overload::constant q => sub {} }
+'1', "1$_", tr"a"", s""a"
+EXPECT
+Constant(q): Call to &{$^H{q}} did not return a defined value at - line 3, near "'1'"
+Constant(qq): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Constant(tr): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Constant(s): Call to &{$^H{q}} did not return a defined value at - line 3, within string
+Execution of - aborted due to compilation errors.
+########
+# NAME Regexp constant overloading returning undef
+use overload;
+BEGIN { overload::constant qr => sub {} }
+/a/, m'a'
+EXPECT
+Constant(qq): Call to &{$^H{qr}} did not return a defined value at - line 3, within pattern
+Constant(q): Call to &{$^H{qr}} did not return a defined value at - line 3, within pattern
+Execution of - aborted due to compilation errors.
+########
+# NAME Unterminated delimiter for here document
+<<"foo
+EXPECT
+Unterminated delimiter for here document at - line 1.

Added: vendor/perl/dist/t/lib/overload_nomethod.t
===================================================================
--- vendor/perl/dist/t/lib/overload_nomethod.t	                        (rev 0)
+++ vendor/perl/dist/t/lib/overload_nomethod.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,22 @@
+use warnings;
+use strict;
+use Test::Simple tests => 3;
+
+package Foo;
+use overload
+  nomethod => sub { die "unimplemented\n" };
+sub new { bless {}, shift };
+
+package main;
+
+my $foo = Foo->new;
+
+eval {my $val = $foo + 1};
+ok( $@ =~ /unimplemented/ );
+
+eval {$foo += 1};
+ok( $@ =~ /unimplemented/ );
+
+eval {my $val = 0; $val += $foo};
+ok( $@ =~ /unimplemented/ );
+

Added: vendor/perl/dist/t/lib/test_require.pm
===================================================================
--- vendor/perl/dist/t/lib/test_require.pm	                        (rev 0)
+++ vendor/perl/dist/t/lib/test_require.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,6 @@
+#!perl -w
+# Don't use strict because this is for testing require
+
+package test_require;
+
+++$test_require::loaded;

Added: vendor/perl/dist/t/mro/basic_01_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_01_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_01_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 4);
+
+=pod
+
+This tests the classic diamond inheritance pattern.
+
+   <A>
+  /   \
+<B>   <C>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diᚪၚd_A;
+    sub hèllò { 'Diᚪၚd_A::hèllò' }
+}
+{
+    package Diᚪၚd_B;
+    use base 'Diᚪၚd_A';
+}
+{
+    package Diᚪၚd_C;
+    use base 'Diᚪၚd_A';     
+    
+    sub hèllò { 'Diᚪၚd_C::hèllò' }
+}
+{
+    package Diᚪၚd_D;
+    use base ('Diᚪၚd_B', 'Diᚪၚd_C');
+    use mro 'c3';
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diᚪၚd_D'),
+    [ qw(Diᚪၚd_D Diᚪၚd_B Diᚪၚd_C Diᚪၚd_A) ]
+), '... got the right MRO for Diᚪၚd_D');
+
+is(Diᚪၚd_D->hèllò, 'Diᚪၚd_C::hèllò', '... method resolved itself as expected');
+is(Diᚪၚd_D->can('hèllò')->(), 'Diᚪၚd_C::hèllò', '... can(method) resolved itself as expected');
+is(UNIVERSAL::can("Diᚪၚd_D", 'hèllò')->(), 'Diᚪၚd_C::hèllò', '... can(method) resolved itself as expected');

Added: vendor/perl/dist/t/mro/basic_01_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_01_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_01_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 4);
+
+=pod
+
+This tests the classic diamond inheritance pattern.
+
+   <A>
+  /   \
+<B>   <C>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diᚪၚd_A;
+    sub hèllò { 'Diᚪၚd_A::hèllò' }
+}
+{
+    package Diᚪၚd_B;
+    use base 'Diᚪၚd_A';
+}
+{
+    package Diᚪၚd_C;
+    use base 'Diᚪၚd_A';     
+    
+    sub hèllò { 'Diᚪၚd_C::hèllò' }
+}
+{
+    package Diᚪၚd_D;
+    use base ('Diᚪၚd_B', 'Diᚪၚd_C');
+    use mro 'dfs';
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diᚪၚd_D'),
+    [ qw(Diᚪၚd_D Diᚪၚd_B Diᚪၚd_A Diᚪၚd_C) ]
+), '... got the right MRO for Diᚪၚd_D');
+
+is(Diᚪၚd_D->hèllò, 'Diᚪၚd_A::hèllò', '... method resolved itself as expected');
+is(Diᚪၚd_D->can('hèllò')->(), 'Diᚪၚd_A::hèllò', '... can(method) resolved itself as expected');
+is(UNIVERSAL::can("Diᚪၚd_D", 'hèllò')->(), 'Diᚪၚd_A::hèllò', '... can(method) resolved itself as expected');

Added: vendor/perl/dist/t/mro/basic_02_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_02_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_02_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,117 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 10);
+
+=pod
+
+This example is take from: http://www.python.org/2.3/mro.html
+
+"My first example"
+class O: pass
+class F(O): pass
+class E(O): pass
+class D(O): pass
+class C(D,F): pass
+class B(D,E): pass
+class A(B,C): pass
+
+
+                          6
+                         ---
+Level 3                 | O |                  (more general)
+                      /  ---  \
+                     /    |    \                      |
+                    /     |     \                     |
+                   /      |      \                    |
+                  ---    ---    ---                   |
+Level 2        3 | D | 4| E |  | F | 5                |
+                  ---    ---    ---                   |
+                   \  \ _ /       |                   |
+                    \    / \ _    |                   |
+                     \  /      \  |                   |
+                      ---      ---                    |
+Level 1            1 | B |    | C | 2                 |
+                      ---      ---                    |
+                        \      /                      |
+                         \    /                      \ /
+                           ---
+Level 0                 0 | A |                (more specialized)
+                           ---
+
+=cut
+
+{
+    package 텟ţ::ᴼ;
+    use mro 'c3'; 
+    
+    package 텟ţ::Ḟ;   
+    use mro 'c3';  
+    use base '텟ţ::ᴼ';        
+    
+    package 텟ţ::ऍ;
+    use base '텟ţ::ᴼ';    
+    use mro 'c3';     
+    
+    sub ƈ_or_ऍ { '텟ţ::ऍ' }
+
+    package 텟ţ::Ḋ;
+    use mro 'c3'; 
+    use base '텟ţ::ᴼ';     
+    
+    sub ƈ_or_Ḋ { '텟ţ::Ḋ' }       
+      
+    package 텟ţ::ƈ;
+    use base ('텟ţ::Ḋ', '텟ţ::Ḟ');
+    use mro 'c3'; 
+    
+    sub ƈ_or_Ḋ { '텟ţ::ƈ' }
+    sub ƈ_or_ऍ { '텟ţ::ƈ' }    
+        
+    package 텟ţ::ᛒ;    
+    use mro 'c3'; 
+    use base ('텟ţ::Ḋ', '텟ţ::ऍ');    
+        
+    package 텟ţ::ଅ;    
+    use base ('텟ţ::ᛒ', '텟ţ::ƈ');
+    use mro 'c3';    
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::Ḟ'),
+    [ qw(텟ţ::Ḟ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::Ḟ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ऍ'),
+    [ qw(텟ţ::ऍ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ऍ');    
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::Ḋ'),
+    [ qw(텟ţ::Ḋ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::Ḋ');       
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ƈ'),
+    [ qw(텟ţ::ƈ 텟ţ::Ḋ 텟ţ::Ḟ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ƈ'); 
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ᛒ'),
+    [ qw(텟ţ::ᛒ 텟ţ::Ḋ 텟ţ::ऍ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ᛒ');     
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ଅ'),
+    [ qw(텟ţ::ଅ 텟ţ::ᛒ 텟ţ::ƈ 텟ţ::Ḋ 텟ţ::ऍ 텟ţ::Ḟ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ଅ');  
+    
+is(텟ţ::ଅ->ƈ_or_Ḋ, '텟ţ::ƈ', '... got the expected method output');
+is(텟ţ::ଅ->can('ƈ_or_Ḋ')->(), '텟ţ::ƈ', '... can got the expected method output');
+is(텟ţ::ଅ->ƈ_or_ऍ, '텟ţ::ƈ', '... got the expected method output');
+is(텟ţ::ଅ->can('ƈ_or_ऍ')->(), '텟ţ::ƈ', '... can got the expected method output');

Added: vendor/perl/dist/t/mro/basic_02_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_02_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_02_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,117 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 10);
+
+=pod
+
+This example is take from: http://www.python.org/2.3/mro.html
+
+"My first example"
+class O: pass
+class F(O): pass
+class E(O): pass
+class D(O): pass
+class C(D,F): pass
+class B(D,E): pass
+class A(B,C): pass
+
+
+                          6
+                         ---
+Level 3                 | O |                  (more general)
+                      /  ---  \
+                     /    |    \                      |
+                    /     |     \                     |
+                   /      |      \                    |
+                  ---    ---    ---                   |
+Level 2        3 | D | 4| E |  | F | 5                |
+                  ---    ---    ---                   |
+                   \  \ _ /       |                   |
+                    \    / \ _    |                   |
+                     \  /      \  |                   |
+                      ---      ---                    |
+Level 1            1 | B |    | C | 2                 |
+                      ---      ---                    |
+                        \      /                      |
+                         \    /                      \ /
+                           ---
+Level 0                 0 | A |                (more specialized)
+                           ---
+
+=cut
+
+{
+    package 텟ţ::ᴼ;
+    use mro 'dfs'; 
+    
+    package 텟ţ::Ḟ;   
+    use mro 'dfs';  
+    use base '텟ţ::ᴼ';        
+    
+    package 텟ţ::ऍ;
+    use base '텟ţ::ᴼ';    
+    use mro 'dfs';     
+    
+    sub ƈ_or_ऍ { '텟ţ::ऍ' }
+
+    package 텟ţ::Ḋ;
+    use mro 'dfs'; 
+    use base '텟ţ::ᴼ';     
+    
+    sub ƈ_or_Ḋ { '텟ţ::Ḋ' }
+      
+    package 텟ţ::ƈ;
+    use base ('텟ţ::Ḋ', '텟ţ::Ḟ');
+    use mro 'dfs'; 
+    
+    sub ƈ_or_Ḋ { '텟ţ::ƈ' }
+    sub ƈ_or_ऍ { '텟ţ::ƈ' }
+        
+    package 텟ţ::ᛒ;    
+    use mro 'dfs'; 
+    use base ('텟ţ::Ḋ', '텟ţ::ऍ');    
+        
+    package 텟ţ::ଅ;    
+    use base ('텟ţ::ᛒ', '텟ţ::ƈ');
+    use mro 'dfs';    
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::Ḟ'),
+    [ qw(텟ţ::Ḟ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::Ḟ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ऍ'),
+    [ qw(텟ţ::ऍ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ऍ');    
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::Ḋ'),
+    [ qw(텟ţ::Ḋ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::Ḋ');       
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ƈ'),
+    [ qw(텟ţ::ƈ 텟ţ::Ḋ 텟ţ::ᴼ 텟ţ::Ḟ) ]
+), '... got the right MRO for 텟ţ::ƈ'); 
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ᛒ'),
+    [ qw(텟ţ::ᛒ 텟ţ::Ḋ 텟ţ::ᴼ 텟ţ::ऍ) ]
+), '... got the right MRO for 텟ţ::ᛒ');     
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ଅ'),
+    [ qw(텟ţ::ଅ 텟ţ::ᛒ 텟ţ::Ḋ 텟ţ::ᴼ 텟ţ::ऍ 텟ţ::ƈ 텟ţ::Ḟ) ]
+), '... got the right MRO for 텟ţ::ଅ');  
+    
+is(텟ţ::ଅ->ƈ_or_Ḋ, '텟ţ::Ḋ', '... got the expected method output');
+is(텟ţ::ଅ->can('ƈ_or_Ḋ')->(), '텟ţ::Ḋ', '... can got the expected method output');
+is(텟ţ::ଅ->ƈ_or_ऍ, '텟ţ::ऍ', '... got the expected method output');
+is(텟ţ::ଅ->can('ƈ_or_ऍ')->(), '텟ţ::ऍ', '... can got the expected method output');

Added: vendor/perl/dist/t/mro/basic_03_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_03_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_03_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,103 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 4);
+
+=pod
+
+This example is take from: http://www.python.org/2.3/mro.html
+
+"My second example"
+class O: pass
+class F(O): pass
+class E(O): pass
+class D(O): pass
+class C(D,F): pass
+class B(E,D): pass
+class A(B,C): pass
+
+                           6
+                          ---
+Level 3                  | O |
+                       /  ---  \
+                      /    |    \
+                     /     |     \
+                    /      |      \
+                  ---     ---    ---
+Level 2        2 | E | 4 | D |  | F | 5
+                  ---     ---    ---
+                   \      / \     /
+                    \    /   \   /
+                     \  /     \ /
+                      ---     ---
+Level 1            1 | B |   | C | 3
+                      ---     ---
+                       \       /
+                        \     /
+                          ---
+Level 0                0 | A |
+                          ---
+
+>>> A.mro()
+(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>,
+<class '__main__.C'>, <class '__main__.D'>, <class '__main__.F'>,
+<type 'object'>)
+
+=cut
+
+{
+    package 텟ţ::ᴼ;
+    use mro 'c3';
+    
+    sub ᴼ_or_Ḋ { '텟ţ::ᴼ' }
+    sub ᴼ_or_Ḟ { '텟ţ::ᴼ' }    
+    
+    package 텟ţ::Ḟ;
+    use base '텟ţ::ᴼ';
+    use mro 'c3';
+    
+    sub ᴼ_or_Ḟ { '텟ţ::Ḟ' }    
+    
+    package 텟ţ::ऍ;
+    use base '텟ţ::ᴼ';
+    use mro 'c3';
+        
+    package 텟ţ::Ḋ;
+    use base '텟ţ::ᴼ';    
+    use mro 'c3';
+    
+    sub ᴼ_or_Ḋ { '텟ţ::Ḋ' }
+    sub ƈ_or_Ḋ { '텟ţ::Ḋ' }
+        
+    package 텟ţ::ƈ;
+    use base ('텟ţ::Ḋ', '텟ţ::Ḟ');
+    use mro 'c3';    
+
+    sub ƈ_or_Ḋ { '텟ţ::ƈ' }
+    
+    package 텟ţ::ᛒ;
+    use base ('텟ţ::ऍ', '텟ţ::Ḋ');
+    use mro 'c3';
+        
+    package 텟ţ::ଅ;
+    use base ('텟ţ::ᛒ', '텟ţ::ƈ');
+    use mro 'c3';
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ଅ'),
+    [ qw(텟ţ::ଅ 텟ţ::ᛒ 텟ţ::ऍ 텟ţ::ƈ 텟ţ::Ḋ 텟ţ::Ḟ 텟ţ::ᴼ) ]
+), '... got the right MRO for 텟ţ::ଅ');      
+    
+is(텟ţ::ଅ->ᴼ_or_Ḋ, '텟ţ::Ḋ', '... got the right method dispatch');    
+is(텟ţ::ଅ->ᴼ_or_Ḟ, '텟ţ::Ḟ', '... got the right method dispatch');   
+
+# NOTE: 
+# this test is particularly interesting because the p5 dispatch
+# would actually call 텟ţ::Ḋ before 텟ţ::ƈ and 텟ţ::Ḋ is a
+# subclass of 텟ţ::ƈ 
+is(텟ţ::ଅ->ƈ_or_Ḋ, '텟ţ::ƈ', '... got the right method dispatch');    

Added: vendor/perl/dist/t/mro/basic_03_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_03_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_03_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,103 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 4);
+
+=pod
+
+This example is take from: http://www.python.org/2.3/mro.html
+
+"My second example"
+class O: pass
+class F(O): pass
+class E(O): pass
+class D(O): pass
+class C(D,F): pass
+class B(E,D): pass
+class A(B,C): pass
+
+                           6
+                          ---
+Level 3                  | O |
+                       /  ---  \
+                      /    |    \
+                     /     |     \
+                    /      |      \
+                  ---     ---    ---
+Level 2        2 | E | 4 | D |  | F | 5
+                  ---     ---    ---
+                   \      / \     /
+                    \    /   \   /
+                     \  /     \ /
+                      ---     ---
+Level 1            1 | B |   | C | 3
+                      ---     ---
+                       \       /
+                        \     /
+                          ---
+Level 0                0 | A |
+                          ---
+
+>>> A.mro()
+(<class '__main__.A'>, <class '__main__.B'>, <class '__main__.E'>,
+<class '__main__.C'>, <class '__main__.D'>, <class '__main__.F'>,
+<type 'object'>)
+
+=cut
+
+{
+    package 텟ţ::ᴼ;
+    use mro 'dfs';
+    
+    sub ᴼ_or_Ḋ { '텟ţ::ᴼ' }
+    sub ᴼ_or_Ḟ { '텟ţ::ᴼ' }    
+    
+    package 텟ţ::Ḟ;
+    use base '텟ţ::ᴼ';
+    use mro 'dfs';
+    
+    sub ᴼ_or_Ḟ { '텟ţ::Ḟ' }    
+    
+    package 텟ţ::ऍ;
+    use base '텟ţ::ᴼ';
+    use mro 'dfs';
+        
+    package 텟ţ::Ḋ;
+    use base '텟ţ::ᴼ';    
+    use mro 'dfs';
+    
+    sub ᴼ_or_Ḋ { '텟ţ::Ḋ' }
+    sub ƈ_or_Ḋ { '텟ţ::Ḋ' }
+        
+    package 텟ţ::ƈ;
+    use base ('텟ţ::Ḋ', '텟ţ::Ḟ');
+    use mro 'dfs';    
+
+    sub ƈ_or_Ḋ { '텟ţ::ƈ' }
+    
+    package 텟ţ::ᛒ;
+    use base ('텟ţ::ऍ', '텟ţ::Ḋ');
+    use mro 'dfs';
+        
+    package 텟ţ::ଅ;
+    use base ('텟ţ::ᛒ', '텟ţ::ƈ');
+    use mro 'dfs';
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟ţ::ଅ'),
+    [ qw(텟ţ::ଅ 텟ţ::ᛒ 텟ţ::ऍ 텟ţ::ᴼ 텟ţ::Ḋ 텟ţ::ƈ 텟ţ::Ḟ) ]
+), '... got the right MRO for 텟ţ::ଅ');      
+    
+is(텟ţ::ଅ->ᴼ_or_Ḋ, '텟ţ::ᴼ', '... got the right method dispatch');    
+is(텟ţ::ଅ->ᴼ_or_Ḟ, '텟ţ::ᴼ', '... got the right method dispatch');   
+
+# NOTE: 
+# this test is particularly interesting because the p5 dispatch
+# would actually call 텟ţ::Ḋ before 텟ţ::ƈ and 텟ţ::Ḋ is a
+# subclass of 텟ţ::ƈ 
+is(텟ţ::ଅ->ƈ_or_Ḋ, '텟ţ::Ḋ', '... got the right method dispatch');    

Added: vendor/perl/dist/t/mro/basic_04_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_04_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_04_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 1);
+
+=pod 
+
+From the parrot test t/pmc/object-meths.t
+
+ A   B A   E
+  \ /   \ /
+   C     D
+    \   /
+     \ /
+      F
+
+=cut
+
+{
+    package Ƭ::ŁiƁ::ଅ; use mro 'c3';
+    package Ƭ::ŁiƁ::ᛒ; use mro 'c3';
+    package Ƭ::ŁiƁ::ऍ; use mro 'c3';
+    package Ƭ::ŁiƁ::ƈ; use mro 'c3'; use base ('Ƭ::ŁiƁ::ଅ', 'Ƭ::ŁiƁ::ᛒ');
+    package Ƭ::ŁiƁ::Ḋ; use mro 'c3'; use base ('Ƭ::ŁiƁ::ଅ', 'Ƭ::ŁiƁ::ऍ');
+    package Ƭ::ŁiƁ::Ḟ; use mro 'c3'; use base ('Ƭ::ŁiƁ::ƈ', 'Ƭ::ŁiƁ::Ḋ');
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Ƭ::ŁiƁ::Ḟ'),
+    [ qw(Ƭ::ŁiƁ::Ḟ Ƭ::ŁiƁ::ƈ Ƭ::ŁiƁ::Ḋ Ƭ::ŁiƁ::ଅ Ƭ::ŁiƁ::ᛒ Ƭ::ŁiƁ::ऍ) ]
+), '... got the right MRO for Ƭ::ŁiƁ::Ḟ');  
+

Added: vendor/perl/dist/t/mro/basic_04_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_04_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_04_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 1);
+
+=pod 
+
+From the parrot test t/pmc/object-meths.t
+
+ ଅ   ᛒ ଅ   ऍ
+  \ /   \ /
+   ƈ     Ḋ
+    \   /
+     \ /
+      Ḟ
+
+=cut
+
+{
+    package Ƭ::ŁiƁ::ଅ; use mro 'dfs';
+    package Ƭ::ŁiƁ::ᛒ; use mro 'dfs';
+    package Ƭ::ŁiƁ::ऍ; use mro 'dfs';
+    package Ƭ::ŁiƁ::ƈ; use mro 'dfs'; use base ('Ƭ::ŁiƁ::ଅ', 'Ƭ::ŁiƁ::ᛒ');
+    package Ƭ::ŁiƁ::Ḋ; use mro 'dfs'; use base ('Ƭ::ŁiƁ::ଅ', 'Ƭ::ŁiƁ::ऍ');
+    package Ƭ::ŁiƁ::Ḟ; use mro 'dfs'; use base ('Ƭ::ŁiƁ::ƈ', 'Ƭ::ŁiƁ::Ḋ');
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Ƭ::ŁiƁ::Ḟ'),
+    [ qw(Ƭ::ŁiƁ::Ḟ Ƭ::ŁiƁ::ƈ Ƭ::ŁiƁ::ଅ Ƭ::ŁiƁ::ᛒ Ƭ::ŁiƁ::Ḋ Ƭ::ŁiƁ::ऍ) ]
+), '... got the right MRO for Ƭ::ŁiƁ::Ḟ');  
+

Added: vendor/perl/dist/t/mro/basic_05_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_05_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_05_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,57 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 2);
+
+=pod
+
+This tests a strange bug found by Matt S. Trout 
+while building DBIx::Class. Thanks Matt!!!! 
+
+   <A>
+  /   \
+<C>   <B>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diᚪၚd_A;
+    use mro 'c3'; 
+
+    sub ᕘ { 'Diᚪၚd_A::ᕘ' }
+}
+{
+    package Diᚪၚd_B;
+    use base 'Diᚪၚd_A';
+    use mro 'c3';     
+
+    sub ᕘ { 'Diᚪၚd_B::ᕘ => ' . (shift)->SUPER::ᕘ }
+}
+{
+    package Diᚪၚd_C;
+    use mro 'c3';    
+    use base 'Diᚪၚd_A';     
+
+}
+{
+    package Diᚪၚd_D;
+    use base ('Diᚪၚd_C', 'Diᚪၚd_B');
+    use mro 'c3';    
+    
+    sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->SUPER::ᕘ }    
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diᚪၚd_D'),
+    [ qw(Diᚪၚd_D Diᚪၚd_C Diᚪၚd_B Diᚪၚd_A) ]
+), '... got the right MRO for Diᚪၚd_D');
+
+is(Diᚪၚd_D->ᕘ, 
+   'Diᚪၚd_D::ᕘ => Diᚪၚd_B::ᕘ => Diᚪၚd_A::ᕘ', 
+   '... got the right next::method dispatch path');

Added: vendor/perl/dist/t/mro/basic_05_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_05_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_05_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+#!./perl
+
+use strict;
+use warnings;
+
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 2);
+
+=pod
+
+This tests a strange bug found by Matt S. Trout 
+while building DBIx::Class. Thanks Matt!!!! 
+
+   <A>
+  /   \
+<C>   <B>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diᚪၚd_A;
+    use mro 'dfs'; 
+
+    sub ᕘ { 'Diᚪၚd_A::ᕘ' }
+}
+{
+    package Diᚪၚd_B;
+    use base 'Diᚪၚd_A';
+    use mro 'dfs';     
+
+    sub ᕘ { 'Diᚪၚd_B::ᕘ => ' . (shift)->SUPER::ᕘ }
+}
+{
+    package Diᚪၚd_C;
+    use mro 'dfs';    
+    use base 'Diᚪၚd_A';     
+
+}
+{
+    package Diᚪၚd_D;
+    use base ('Diᚪၚd_C', 'Diᚪၚd_B');
+    use mro 'dfs';    
+    
+    sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->SUPER::ᕘ }    
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diᚪၚd_D'),
+    [ qw(Diᚪၚd_D Diᚪၚd_C Diᚪၚd_A Diᚪၚd_B) ]
+), '... got the right MRO for Diᚪၚd_D');
+
+is(Diᚪၚd_D->ᕘ, 
+   'Diᚪၚd_D::ᕘ => Diᚪၚd_A::ᕘ', 
+   '... got the right next::method dispatch path');

Added: vendor/perl/dist/t/mro/basic_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/basic_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/basic_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,328 @@
+#!./perl
+
+use utf8;
+use open qw( :utf8 :std );
+use strict;
+use warnings;
+
+BEGIN { require q(./test.pl); } plan(tests => 53);
+
+require mro;
+
+{
+    package MRO_அ;
+    our @ISA = qw//;
+    package MRO_ɓ;
+    our @ISA = qw//;
+    package MRO_ᶝ;
+    our @ISA = qw//;
+    package MRO_d;
+    our @ISA = qw/MRO_அ MRO_ɓ MRO_ᶝ/;
+    package MRO_ɛ;
+    our @ISA = qw/MRO_அ MRO_ɓ MRO_ᶝ/;
+    package MRO_ᚠ;
+    our @ISA = qw/MRO_d MRO_ɛ/;
+}
+
+my @MFO_ᚠ_DFS = qw/MRO_ᚠ MRO_d MRO_அ MRO_ɓ MRO_ᶝ MRO_ɛ/;
+my @MFO_ᚠ_C3 = qw/MRO_ᚠ MRO_d MRO_ɛ MRO_அ MRO_ɓ MRO_ᶝ/;
+is(mro::get_mro('MRO_ᚠ'), 'dfs');
+ok(eq_array(
+    mro::get_linear_isa('MRO_ᚠ'), \@MFO_ᚠ_DFS
+));
+
+ok(eq_array(mro::get_linear_isa('MRO_ᚠ', 'dfs'), \@MFO_ᚠ_DFS));
+ok(eq_array(mro::get_linear_isa('MRO_ᚠ', 'c3'), \@MFO_ᚠ_C3));
+eval{mro::get_linear_isa('MRO_ᚠ', 'C3')};
+like($@, qr/^Invalid mro name: 'C3'/);
+
+mro::set_mro('MRO_ᚠ', 'c3');
+is(mro::get_mro('MRO_ᚠ'), 'c3');
+ok(eq_array(
+    mro::get_linear_isa('MRO_ᚠ'), \@MFO_ᚠ_C3
+));
+
+ok(eq_array(mro::get_linear_isa('MRO_ᚠ', 'dfs'), \@MFO_ᚠ_DFS));
+ok(eq_array(mro::get_linear_isa('MRO_ᚠ', 'c3'), \@MFO_ᚠ_C3));
+eval{mro::get_linear_isa('MRO_ᚠ', 'C3')};
+like($@, qr/^Invalid mro name: 'C3'/);
+
+ok(!mro::is_universal('MRO_ɓ'));
+
+ at UNIVERSAL::ISA = qw/MRO_ᚠ/;
+ok(mro::is_universal('MRO_ɓ'));
+
+ at UNIVERSAL::ISA = ();
+ok(!mro::is_universal('MRO_ᚠ'));
+ok(!mro::is_universal('MRO_ɓ'));
+
+# is_universal, get_mro, and get_linear_isa should
+# handle non-existent packages sanely
+ok(!mro::is_universal('Does_Not_Exist'));
+is(mro::get_mro('Also_Does_Not_Exist'), 'dfs');
+ok(eq_array(
+    mro::get_linear_isa('Does_Not_Exist_Three'),
+    [qw/Does_Not_Exist_Three/]
+));
+
+# Assigning @ISA via globref
+{
+    package MRO_ҭṣṱबꗻ;
+    sub 텟tf운ꜿ { return 123 }
+    package MRO_Test옽ḦРꤷsӭ;
+    sub 텟ₜꖢᶯcƧ { return 321 }
+    package MRO_Ɯ; our @ISA = qw/MRO_ҭṣṱबꗻ/;
+}
+*MRO_ᕡ::ISA = *MRO_Ɯ::ISA;
+is(eval { MRO_ᕡ->텟tf운ꜿ() }, 123);
+
+# XXX TODO (when there's a way to backtrack through a glob's aliases)
+# push(@MRO_M::ISA, 'MRO_TestOtherBase');
+# is(eval { MRO_N->testfunctwo() }, 321);
+
+# Simple DESTROY Baseline
+{
+    my $x = 0;
+    my $obj;
+
+    {
+        package DESTROY_MRO_Bӓeᓕne;
+        sub new { bless {} => shift }
+        sub DESTROY { $x++ }
+
+        package DESTROY_MRO_Bӓeᓕne_χḻɖ;
+        our @ISA = qw/DESTROY_MRO_Bӓeᓕne/;
+    }
+
+    $obj = DESTROY_MRO_Bӓeᓕne->new();
+    undef $obj;
+    is($x, 1);
+
+    $obj = DESTROY_MRO_Bӓeᓕne_χḻɖ->new();
+    undef $obj;
+    is($x, 2);
+}
+
+# Dynamic DESTROY
+{
+    my $x = 0;
+    my $obj;
+
+    {
+        package DESTROY_MRO_Dჷ및;
+        sub new { bless {} => shift }
+
+        package DESTROY_MRO_Dჷ및_χḻɖ;
+        our @ISA = qw/DESTROY_MRO_Dჷ및/;
+    }
+
+    $obj = DESTROY_MRO_Dჷ및->new();
+    undef $obj;
+    is($x, 0);
+
+    $obj = DESTROY_MRO_Dჷ및_χḻɖ->new();
+    undef $obj;
+    is($x, 0);
+
+    no warnings 'once';
+    *DESTROY_MRO_Dჷ및::DESTROY = sub { $x++ };
+
+    $obj = DESTROY_MRO_Dჷ및->new();
+    undef $obj;
+    is($x, 1);
+
+    $obj = DESTROY_MRO_Dჷ및_χḻɖ->new();
+    undef $obj;
+    is($x, 2);
+}
+
+# clearing @ISA in different ways
+#  some are destructive to the package, hence the new
+#  package name each time
+{
+    no warnings 'uninitialized';
+    {
+        package ᛁ앛ଌᛠ;
+        our @ISA = qw/xx ƳƳ ƶƶ/;
+    }
+    # baseline
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ'),[qw/ᛁ앛ଌᛠ xx ƳƳ ƶƶ/]));
+
+    # this looks dumb, but it preserves existing behavior for compatibility
+    #  (undefined @ISA elements treated as "main")
+    $ᛁ앛ଌᛠ::ISA[1] = undef;
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ'),[qw/ᛁ앛ଌᛠ xx main ƶƶ/]));
+
+    # undef the array itself
+    undef @ᛁ앛ଌᛠ::ISA;
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ'),[qw/ᛁ앛ଌᛠ/]));
+
+    # Now, clear more than one package's @ISA at once
+    {
+        package ᛁ앛ଌᛠ1;
+        our @ISA = qw/WẆ xx/;
+
+        package ᛁ앛ଌᛠ2;
+        our @ISA = qw/ƳƳ ƶƶ/;
+    }
+    # baseline
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ1'),[qw/ᛁ앛ଌᛠ1 WẆ xx/]));
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ2'),[qw/ᛁ앛ଌᛠ2 ƳƳ ƶƶ/]));
+    (@ᛁ앛ଌᛠ1::ISA, @ᛁ앛ଌᛠ2::ISA) = ();
+
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ1'),[qw/ᛁ앛ଌᛠ1/]));
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ2'),[qw/ᛁ앛ଌᛠ2/]));
+
+    # [perl #49564]  This is a pretty obscure way of clearing @ISA but
+    # it tests a regression that affects XS code calling av_clear too.
+    {
+        package ᛁ앛ଌᛠ3;
+        our @ISA = qw/WẆ xx/;
+    }
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ3'),[qw/ᛁ앛ଌᛠ3 WẆ xx/]));
+    {
+        package ᛁ앛ଌᛠ3;
+        reset 'I';
+    }
+    ok(eq_array(mro::get_linear_isa('ᛁ앛ଌᛠ3'),[qw/ᛁ앛ଌᛠ3/]));
+}
+
+# Check that recursion bails out "cleanly" in a variety of cases
+# (as opposed to say, bombing the interpreter or something)
+{
+    my @recurse_codes = (
+        '@MRO_ഋ1::ISA = "MRO_ഋ2"; @MRO_ഋ2::ISA = "MRO_ഋ1";',
+        '@MRO_ഋ3::ISA = "MRO_ഋ4"; push(@MRO_ഋ4::ISA, "MRO_ഋ3");',
+        '@MRO_ഋ5::ISA = "MRO_ഋ6"; @MRO_ഋ6::ISA = qw/xx MRO_ഋ5 ƳƳ/;',
+        '@MRO_ഋ7::ISA = "MRO_ഋ8"; push(@MRO_ഋ8::ISA, qw/xx MRO_ഋ7 ƳƳ/)',
+    );
+    foreach my $code (@recurse_codes) {
+        eval $code;
+        ok($@ =~ /Recursive inheritance detected/);
+    }
+}
+
+# Check that SUPER caches get invalidated correctly
+{
+    {
+        package スṔઍR텟ʇ;
+        sub new { bless {} => shift }
+        sub ຟઓ { $_[1]+1 }
+
+        package スṔઍR텟ʇ::MᶤƉ;
+        our @ISA = 'スṔઍR텟ʇ';
+
+        package スṔઍR텟ʇ::킫;
+        our @ISA = 'スṔઍR텟ʇ::MᶤƉ';
+        sub ຟઓ { my $s = shift; $s->SUPER::ຟઓ(@_) }
+
+        package スṔઍR텟ʇ::렙ﷰए;
+        sub ຟઓ { $_[1]+3 }
+    }
+
+    my $stk_obj = スṔઍR텟ʇ::킫->new();
+    is($stk_obj->ຟઓ(1), 2);
+    { no warnings 'redefine';
+      *スṔઍR텟ʇ::ຟઓ = sub { $_[1]+2 };
+    }
+    is($stk_obj->ຟઓ(2), 4);
+    @スṔઍR텟ʇ::MᶤƉ::ISA = 'スṔઍR텟ʇ::렙ﷰए';
+    is($stk_obj->ຟઓ(3), 6);
+}
+
+{ 
+  {
+    # assigning @ISA via arrayref to globref RT 60220
+    package ᛔ1;
+    sub new { bless {}, shift }
+    
+    package ᛔ2;
+  }
+  *{ᛔ2::ISA} = [ 'ᛔ1' ];
+  my $foo = ᛔ2->new;
+  ok(!eval { $foo->ɓᛅƘ }, "no ɓᛅƘ method");
+  no warnings 'once';  # otherwise it'll bark about ᛔ1::ɓᛅƘ used only once
+  *{ᛔ1::ɓᛅƘ} = sub { "[ɓᛅƘ]" };
+  is(scalar eval { $foo->ɓᛅƘ }, "[ɓᛅƘ]", "can ɓᛅƘ now");
+  is $@, '';
+}
+
+{
+  # assigning @ISA via arrayref then modifying it RT 72866
+  {
+    package ㄑ1;
+    sub Fஓ {  }
+
+    package ㄑ2;
+    sub ƚ { }
+
+    package ㄑ3;
+  }
+  push @ㄑ3::ISA, "ㄑ1";
+  can_ok("ㄑ3", "Fஓ");
+  *ㄑ3::ISA = [];
+  push @ㄑ3::ISA, "ㄑ1";
+  can_ok("ㄑ3", "Fஓ");
+  *ㄑ3::ISA = [];
+  push @ㄑ3::ISA, "ㄑ2";
+  can_ok("ㄑ3", "ƚ");
+  ok(!ㄑ3->can("Fஓ"), "can't call Fஓ method any longer");
+}
+
+{
+    # test mro::method_changed_in
+    my $count = mro::get_pkg_gen("MRO_அ");
+    mro::method_changed_in("MRO_அ");
+    my $count_new = mro::get_pkg_gen("MRO_அ");
+
+    is($count_new, $count + 1);
+}
+
+{
+    # test if we can call mro::invalidate_all_method_caches;
+    eval {
+        mro::invalidate_all_method_caches();
+    };
+    is($@, "");
+}
+
+{
+    # @main::ISA
+    no warnings 'once';
+    @main::ISA = 'პᛅeȵᛏ';
+    my $output = '';
+    *პᛅeȵᛏ::ど = sub { $output .= 'პᛅeȵᛏ' };
+    *პᛅeȵᛏ2::ど = sub { $output .= 'პᛅeȵᛏ2' };
+    main->ど;
+    @main::ISA = 'პᛅeȵᛏ2';
+    main->ど;
+    is $output, 'პᛅeȵᛏპᛅeȵᛏ2', '@main::ISA is magical';
+}
+
+{
+    # Undefining *ISA, then modifying @ISA
+    # This broke Class::Trait. See [perl #79024].
+    {package Class::Trait::Base}
+    no strict 'refs';
+    undef   *{"एxṰர::ʦፖㄡsȨ::ISA"};
+    'एxṰர::ʦፖㄡsȨ'->isa('Class::Trait::Base'); # cache the mro
+    unshift @{"एxṰர::ʦፖㄡsȨ::ISA"}, 'Class::Trait::Base';
+    ok 'एxṰர::ʦፖㄡsȨ'->isa('Class::Trait::Base'),
+     'a isa b after undef *a::ISA and @a::ISA modification';
+}
+
+{
+    # Deleting $package::{ISA}
+    # Broken in 5.10.0; fixed in 5.13.7
+    @BḼᵑth::ISA = 'Bલdḏ';
+    delete $BḼᵑth::{ISA};
+    ok !BḼᵑth->isa("Bલdḏ"), 'delete $package::{ISA}';
+}
+
+{
+    # Undefining stashes
+    @ᖫᕃㄒṭ::ISA = "ᖮw잍";
+    @ᖮw잍::ISA = "ሲঌએ";
+    undef %ᖮw잍::;
+    ok !ᖫᕃㄒṭ->isa('ሲঌએ'), 'undef %package:: updates subclasses';
+}

Added: vendor/perl/dist/t/mro/c3_with_overload_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/c3_with_overload_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/c3_with_overload_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,47 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+require q(./test.pl); plan(tests => 7);
+
+{
+    package BaseTest;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    
+    package OverloadingTest;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    use base 'BaseTest';        
+    use overload '""' => sub { ref(shift) . " stringified" },
+                 fallback => 1;
+    
+    sub new { bless {} => shift }    
+    
+    package InheritingFromOverloadedTest;
+    use strict;
+    use warnings;
+    use base 'OverloadingTest';
+    use mro 'c3';
+}
+
+my $x = InheritingFromOverloadedTest->new();
+object_ok($x, 'InheritingFromOverloadedTest');
+
+my $y = OverloadingTest->new();
+object_ok($y, 'OverloadingTest');
+
+is("$x", 'InheritingFromOverloadedTest stringified', '... got the right value when stringifing');
+is("$y", 'OverloadingTest stringified', '... got the right value when stringifing');
+
+ok(($y eq 'OverloadingTest stringified'), '... eq was handled correctly');
+
+my $result;
+eval { 
+    $result = $x eq 'InheritingFromOverloadedTest stringified' 
+};
+ok(!$@, '... this should not throw an exception');
+ok($result, '... and we should get the true value');

Added: vendor/perl/dist/t/mro/complex_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/complex_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/complex_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,144 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 12);
+
+=pod
+
+This example is taken from: http://rt.cpan.org/Public/Bug/Display.html?id=20879
+
+               ---     ---     ---
+Level 5     8 | A | 9 | B | A | C |    (More General)
+               ---     ---     ---       V
+                  \     |     /          |
+                   \    |    /           |
+                    \   |   /            |
+                     \  |  /             |
+                       ---               |
+Level 4             7 | D |              |
+                       ---               |
+                      /   \              |
+                     /     \             |
+                  ---       ---          |
+Level 3        4 | G |   6 | E |         |
+                  ---       ---          |
+                   |         |           |
+                   |         |           |
+                  ---       ---          |
+Level 2        3 | H |   5 | F |         |
+                  ---       ---          |
+                      \   /  |           |
+                       \ /   |           |
+                        \    |           |
+                       / \   |           |
+                      /   \  |           |
+                  ---       ---          |
+Level 1        1 | J |   2 | I |         |
+                  ---       ---          |
+                    \       /            |
+                     \     /             |
+                       ---               v
+Level 0             0 | K |            (More Specialized)
+                       ---
+
+
+0123456789A
+KJIHGFEDABC
+
+=cut
+
+{
+    package 텟Ṱ::ᐊ; use mro 'c3';
+
+    package 텟Ṱ::ḅ; use mro 'c3';
+
+    package 텟Ṱ::ȼ; use mro 'c3';
+
+    package 텟Ṱ::Ḏ; use mro 'c3';
+    use base qw/텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ/;
+
+    package 텟Ṱ::Ӭ; use mro 'c3';
+    use base qw/텟Ṱ::Ḏ/;
+
+    package 텟Ṱ::Ḟ; use mro 'c3';
+    use base qw/텟Ṱ::Ӭ/;
+    sub testmèth { "wrong" }
+
+    package 텟Ṱ::ḡ; use mro 'c3';
+    use base qw/텟Ṱ::Ḏ/;
+
+    package 텟Ṱ::Ḣ; use mro 'c3';
+    use base qw/텟Ṱ::ḡ/;
+
+    package 텟Ṱ::ᶦ; use mro 'c3';
+    use base qw/텟Ṱ::Ḣ 텟Ṱ::Ḟ/;
+    sub testmèth { "right" }
+
+    package 텟Ṱ::J; use mro 'c3';
+    use base qw/텟Ṱ::Ḟ/;
+
+    package 텟Ṱ::Ḵ; use mro 'c3';
+    use base qw/텟Ṱ::J 텟Ṱ::ᶦ/;
+    sub testmèth { shift->next::method }
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ᐊ'),
+    [ qw(텟Ṱ::ᐊ) ]
+), '... got the right C3 merge order for 텟Ṱ::ᐊ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ḅ'),
+    [ qw(텟Ṱ::ḅ) ]
+), '... got the right C3 merge order for 텟Ṱ::ḅ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ȼ'),
+    [ qw(텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::ȼ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḏ'),
+    [ qw(텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::Ḏ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ӭ'),
+    [ qw(텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::Ӭ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḟ'),
+    [ qw(텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::Ḟ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ḡ'),
+    [ qw(텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::ḡ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḣ'),
+    [ qw(텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::Ḣ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ᶦ'),
+    [ qw(텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::ᶦ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::J'),
+    [ qw(텟Ṱ::J 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::J');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḵ'),
+    [ qw(텟Ṱ::Ḵ 텟Ṱ::J 텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right C3 merge order for 텟Ṱ::Ḵ');
+
+is(텟Ṱ::Ḵ->testmèth(), "right", 'next::method working ok');

Added: vendor/perl/dist/t/mro/complex_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/complex_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/complex_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,139 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 11);
+
+=pod
+
+This example is taken from: http://rt.cpan.org/Public/Bug/Display.html?id=20879
+
+               ---     ---     ---
+Level 5     8 | A | 9 | B | A | C |    (More General)
+               ---     ---     ---       V
+                  \     |     /          |
+                   \    |    /           |
+                    \   |   /            |
+                     \  |  /             |
+                       ---               |
+Level 4             7 | D |              |
+                       ---               |
+                      /   \              |
+                     /     \             |
+                  ---       ---          |
+Level 3        4 | G |   6 | E |         |
+                  ---       ---          |
+                   |         |           |
+                   |         |           |
+                  ---       ---          |
+Level 2        3 | H |   5 | F |         |
+                  ---       ---          |
+                      \   /  |           |
+                       \ /   |           |
+                        \    |           |
+                       / \   |           |
+                      /   \  |           |
+                  ---       ---          |
+Level 1        1 | J |   2 | I |         |
+                  ---       ---          |
+                    \       /            |
+                     \     /             |
+                       ---               v
+Level 0             0 | K |            (More Specialized)
+                       ---
+
+
+0123456789A
+KJIHGFEDABC
+
+=cut
+
+{
+    package 텟Ṱ::ᐊ; use mro 'dfs';
+
+    package 텟Ṱ::ḅ; use mro 'dfs';
+
+    package 텟Ṱ::ȼ; use mro 'dfs';
+
+    package 텟Ṱ::Ḏ; use mro 'dfs';
+    use base qw/텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ/;
+
+    package 텟Ṱ::Ӭ; use mro 'dfs';
+    use base qw/텟Ṱ::Ḏ/;
+
+    package 텟Ṱ::Ḟ; use mro 'dfs';
+    use base qw/텟Ṱ::Ӭ/;
+
+    package 텟Ṱ::ḡ; use mro 'dfs';
+    use base qw/텟Ṱ::Ḏ/;
+
+    package 텟Ṱ::Ḣ; use mro 'dfs';
+    use base qw/텟Ṱ::ḡ/;
+
+    package 텟Ṱ::ᶦ; use mro 'dfs';
+    use base qw/텟Ṱ::Ḣ 텟Ṱ::Ḟ/;
+
+    package 텟Ṱ::J; use mro 'dfs';
+    use base qw/텟Ṱ::Ḟ/;
+
+    package 텟Ṱ::Ḵ; use mro 'dfs';
+    use base qw/텟Ṱ::J 텟Ṱ::ᶦ/;
+}
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ᐊ'),
+    [ qw(텟Ṱ::ᐊ) ]
+), '... got the right DFS merge order for 텟Ṱ::ᐊ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ḅ'),
+    [ qw(텟Ṱ::ḅ) ]
+), '... got the right DFS merge order for 텟Ṱ::ḅ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ȼ'),
+    [ qw(텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::ȼ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḏ'),
+    [ qw(텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::Ḏ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ӭ'),
+    [ qw(텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::Ӭ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḟ'),
+    [ qw(텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::Ḟ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ḡ'),
+    [ qw(텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::ḡ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḣ'),
+    [ qw(텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::Ḣ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::ᶦ'),
+    [ qw(텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ 텟Ṱ::Ḟ 텟Ṱ::Ӭ) ]
+), '... got the right DFS merge order for 텟Ṱ::ᶦ');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::J'),
+    [ qw(텟Ṱ::J 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ) ]
+), '... got the right DFS merge order for 텟Ṱ::J');
+
+ok(eq_array(
+    mro::get_linear_isa('텟Ṱ::Ḵ'),
+    [ qw(텟Ṱ::Ḵ 텟Ṱ::J 텟Ṱ::Ḟ 텟Ṱ::Ӭ 텟Ṱ::Ḏ 텟Ṱ::ᐊ 텟Ṱ::ḅ 텟Ṱ::ȼ 텟Ṱ::ᶦ 텟Ṱ::Ḣ 텟Ṱ::ḡ) ]
+), '... got the right DFS merge order for 텟Ṱ::Ḵ');

Added: vendor/perl/dist/t/mro/dbic_c3_utf8.t
===================================================================
(Binary files differ)

Index: vendor/perl/dist/t/mro/dbic_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/dbic_c3_utf8.t	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/t/mro/dbic_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/t/mro/dbic_c3_utf8.t
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/t/mro/dbic_dfs_utf8.t
===================================================================
(Binary files differ)

Index: vendor/perl/dist/t/mro/dbic_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/dbic_dfs_utf8.t	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/t/mro/dbic_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/t/mro/dbic_dfs_utf8.t
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/t/mro/inconsistent_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/inconsistent_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/inconsistent_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,52 @@
+#!./perl
+
+use strict;
+use warnings;
+BEGIN {
+    unless (-d 'blib') {
+        chdir 't' if -d 't';
+        @INC = '../lib';
+    }
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 1);
+
+require mro;
+
+=pod
+
+This example is take from: http://www.python.org/2.3/mro.html
+
+"Serious order disagreement" # From Guido
+class O: pass
+class X(O): pass
+class Y(O): pass
+class A(X,Y): pass
+class B(Y,X): pass
+try:
+    class Z(A,B): pass #creates Z(A,B) in Python 2.2
+except TypeError:
+    pass # Z(A,B) cannot be created in Python 2.3
+
+=cut
+
+{
+    package ẋ;
+    
+    package Ƴ;
+    
+    package ẋƳ;
+    our @ISA = ('ẋ', 'Ƴ');
+    
+    package Ƴẋ;
+    our @ISA = ('Ƴ', 'ẋ');
+
+    package Ȥ;
+    our @ISA = ('ẋƳ', 'Ƴẋ');
+}
+
+eval { mro::get_linear_isa('Ȥ', 'c3') };
+like($@, qr/^Inconsistent /, '... got the right error with an inconsistent hierarchy');

Added: vendor/perl/dist/t/mro/isa_aliases_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/isa_aliases_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/isa_aliases_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,46 @@
+#!./perl
+
+BEGIN { chdir 't'; @INC = '../lib'; require './test.pl' }
+
+use utf8;
+use open qw( :utf8 :std );
+
+plan 12;
+
+@ฟ옥ʮ::ISA = "ᶶ";
+*ຜ옥ㄏ::ISA = *ฟ옥ʮ::ISA;
+@ฟ옥ʮ::ISA = "Bᐊㄗ";
+
+ok 'ฟ옥ʮ'->isa("Bᐊㄗ"),
+ 'isa after another stash has claimed the @ISA via glob assignment';
+ok 'ຜ옥ㄏ'->isa("Bᐊㄗ"),
+ 'isa on the stash that claimed the @ISA via glob assignment';
+ok !ฟ옥ʮ->isa("ᶶ"),
+ '!isa when another stash has claimed the @ISA via glob assignment';
+ok !ຜ옥ㄏ->isa("ᶶ"),
+ '!isa on the stash that claimed the @ISA via glob assignment';
+
+@ฟ옥ʮ::ISA = "ᶶ";
+*ฟ옥ʮ::ISA = ["Bᐊㄗ"];
+
+ok 'ฟ옥ʮ'->isa("Bᐊㄗ"),
+ 'isa after glob-to-ref assignment when *ISA is shared';
+ok 'ຜ옥ㄏ'->isa("Bᐊㄗ"),
+ 'isa after glob-to-ref assignment on another stash when *ISA is shared';
+ok !ฟ옥ʮ->isa("ᶶ"),
+ '!isa after glob-to-ref assignment when *ISA is shared';
+ok !ຜ옥ㄏ->isa("ᶶ"),
+ '!isa after glob-to-ref assignment on another stash when *ISA is shared';
+
+@ᕘ::ISA = "ᶶ";
+*ጶ::ISA = \@ᕘ::ISA;
+@ᕘ::ISA = "Bᐊㄗ";
+
+ok 'ᕘ'->isa("Bᐊㄗ"),
+ 'isa after another stash has claimed the @ISA via ref-to-glob assignment';
+ok 'ጶ'->isa("Bᐊㄗ"),
+ 'isa on the stash that claimed the @ISA via ref-to-glob assignment';
+ok !ᕘ->isa("ᶶ"),
+ '!isa when another stash has claimed the @ISA via ref-to-glob assignment';
+ok !ጶ->isa("ᶶ"),
+ '!isa on the stash that claimed the @ISA via ref-to-glob assignment';

Added: vendor/perl/dist/t/mro/isa_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/isa_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/isa_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,71 @@
+#!perl -w
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require "./test.pl";
+}
+
+use strict;
+use utf8;
+use open qw( :utf8 :std );
+
+plan 'no_plan';
+
+# package klonk doesn't have a stash.
+
+package 캎oẃ;
+use mro 'c3';
+
+# No parents
+
+package urḲḵk;
+use mro 'c3';
+
+# 1 parent
+ at urḲḵk::ISA = 'kഌoんḰ';
+
+package к;
+use mro 'c3';
+
+# 2 parents
+ at urḲḵk::ISA = ('kഌoんḰ', '캎oẃ');
+
+package ṭ화ckэ;
+use mro 'c3';
+
+# No parents, has @ISA
+@ṭ화ckэ::ISA = ();
+
+package Źzzzዟᑉ;
+use mro 'c3';
+
+@Źzzzዟᑉ::ISA = ('ṭ화ckэ', '캎oẃ');
+
+package Ẁ함M;
+use mro 'c3';
+
+@Ẁ함M::ISA = ('캎oẃ', 'ṭ화ckэ');
+
+package main;
+
+my %expect =
+    (
+     kഌoんḰ => [qw(kഌoんḰ)],
+     urḲḵk => [qw(urḲḵk kഌoんḰ 캎oẃ)],
+     캎oẃ => [qw(캎oẃ)],
+     к => [qw(к)],
+     ṭ화ckэ => [qw(ṭ화ckэ)],
+     Źzzzዟᑉ => [qw(Źzzzዟᑉ ṭ화ckэ 캎oẃ)],
+     Ẁ함M => [qw(Ẁ함M 캎oẃ ṭ화ckэ)],
+    );
+
+foreach my $package (qw(kഌoんḰ urḲḵk 캎oẃ к ṭ화ckэ Źzzzዟᑉ Ẁ함M)) {
+    my $ref = bless [], $package;
+    my $isa = $expect{$package};
+    is("@{mro::get_linear_isa($package)}", "@$isa", "\@ISA for $package");
+
+    foreach my $class ($package, @$isa, 'UNIVERSAL') {
+	object_ok($ref, $class, $package);
+    }
+}

Added: vendor/perl/dist/t/mro/isa_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/isa_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/isa_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!perl -w
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require "./test.pl";
+}
+
+use strict;
+use utf8;
+use open qw( :utf8 :std );
+
+plan 'no_plan';
+
+# package klonk doesn't have a stash.
+
+package 캎oẃ;
+
+# No parents
+
+package urḲḵk;
+
+# 1 parent
+ at urḲḵk::ISA = 'kഌoんḰ';
+
+package к;
+
+# 2 parents
+ at urḲḵk::ISA = ('kഌoんḰ', '캎oẃ');
+
+package ṭ화ckэ;
+
+# No parents, has @ISA
+@ṭ화ckэ::ISA = ();
+
+package Źzzzዟᑉ;
+
+@Źzzzዟᑉ::ISA = ('ṭ화ckэ', '캎oẃ');
+
+package Ẁ함M;
+
+@Ẁ함M::ISA = ('캎oẃ', 'ṭ화ckэ');
+
+package main;
+
+require mro;
+
+my %expect =
+    (
+     kഌoんḰ => [qw(kഌoんḰ)],
+     urḲḵk => [qw(urḲḵk kഌoんḰ 캎oẃ)],
+     캎oẃ => [qw(캎oẃ)],
+     к => [qw(к)],
+     ṭ화ckэ => [qw(ṭ화ckэ)],
+     Źzzzዟᑉ => [qw(Źzzzዟᑉ ṭ화ckэ 캎oẃ)],
+     Ẁ함M => [qw(Ẁ함M 캎oẃ ṭ화ckэ)],
+    );
+
+foreach my $package (qw(kഌoんḰ urḲḵk 캎oẃ к ṭ화ckэ Źzzzዟᑉ Ẁ함M)) {
+    my $ref = bless [], $package;
+    my $isa = $expect{$package};
+    is("@{mro::get_linear_isa($package)}", "@$isa", "\@ISA for $package");
+
+    foreach my $class ($package, @$isa, 'UNIVERSAL') {
+	object_ok($ref, $class, $package);
+    }
+}

Added: vendor/perl/dist/t/mro/isarev_utf8.t
===================================================================
(Binary files differ)

Index: vendor/perl/dist/t/mro/isarev_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/isarev_utf8.t	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/t/mro/isarev_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/t/mro/isarev_utf8.t
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/t/mro/method_caching_utf8.t
===================================================================
(Binary files differ)

Index: vendor/perl/dist/t/mro/method_caching_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/method_caching_utf8.t	2013-12-02 02:59:32 UTC (rev 6433)
+++ vendor/perl/dist/t/mro/method_caching_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)

Property changes on: vendor/perl/dist/t/mro/method_caching_utf8.t
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Added: vendor/perl/dist/t/mro/next_NEXT_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_NEXT_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_NEXT_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,50 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use NEXT;
+use utf8;
+use open qw( :utf8 :std );
+
+require './test.pl';
+plan(tests => 4);
+
+{
+    package ᕘ;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    
+    sub fಓ { 'ᕘ::fಓ' }
+    
+    package Fᶽ;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    use base 'ᕘ';
+
+    sub fಓ { 'Fᶽ::fಓ => ' . (shift)->next::method }
+        
+    package Bᛆ;
+    use strict;
+    use warnings;    
+    use mro 'c3';
+    use base 'ᕘ';
+
+    sub fಓ { 'Bᛆ::fಓ => ' . (shift)->next::method }
+    
+    package Baᕃ;
+    use strict;
+    use warnings;    
+
+    use base 'Bᛆ', 'Fᶽ';
+    
+    sub fಓ { 'Baᕃ::fಓ => ' . (shift)->NEXT::fಓ }    
+}
+
+is(ᕘ->fಓ, 'ᕘ::fಓ', '... got the right value from ᕘ->fಓ');
+is(Fᶽ->fಓ, 'Fᶽ::fಓ => ᕘ::fಓ', '... got the right value from Fᶽ->fಓ');
+is(Bᛆ->fಓ, 'Bᛆ::fಓ => ᕘ::fಓ', '... got the right value from Bᛆ->fಓ');
+
+is(Baᕃ->fಓ, 'Baᕃ::fಓ => Bᛆ::fಓ => Fᶽ::fಓ => ᕘ::fಓ', '... got the right value using NEXT in a subclass of a C3 class');
+

Added: vendor/perl/dist/t/mro/next_edgecases_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_edgecases_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_edgecases_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,98 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+BEGIN { chdir 't'; require q(./test.pl); @INC = qw "../lib lib" }
+
+use utf8;
+use open qw( :utf8 :std );
+
+plan(tests => 12);
+
+{
+
+    {
+        package ᕘ;
+        use strict;
+        use warnings;
+        use mro 'c3';
+        sub new { bless {}, $_[0] }
+        sub ƚ { 'ᕘ::ƚ' }
+    }
+
+    # call the submethod in the direct instance
+
+    my $foo = ᕘ->new();
+    object_ok($foo, 'ᕘ');
+
+    can_ok($foo, 'ƚ');
+    is($foo->ƚ(), 'ᕘ::ƚ', '... got the right return value');    
+
+    # fail calling it from a subclass
+
+    {
+        package Baɾ;
+        use strict;
+        use warnings;
+        use mro 'c3';
+        our @ISA = ('ᕘ');
+    }  
+    
+    my $bar = Baɾ->new();
+    object_ok($bar, 'Baɾ');
+    object_ok($bar, 'ᕘ');    
+    
+    # test it working with with Sub::Name
+    SKIP: {    
+        eval 'use Sub::Name';
+        skip("Sub::Name is required for this test", 3) if $@;
+    
+        my $m = sub { (shift)->next::method() };
+        Sub::Name::subname('Baɾ::ƚ', $m);
+        {
+            no strict 'refs';
+            *{'Baɾ::ƚ'} = $m;
+        }
+
+        can_ok($bar, 'ƚ');
+        my $value = eval { $bar->ƚ() };
+        ok(!$@, '... calling ƚ() succeeded') || diag $@;
+        is($value, 'ᕘ::ƚ', '... got the right return value too');
+    }
+    
+    # test it failing without Sub::Name
+    {
+        package બʑ;
+        use strict;
+        use warnings;
+        use mro 'c3';
+        our @ISA = ('ᕘ');
+    }      
+    
+    my $baz = બʑ->new();
+    object_ok($baz, 'બʑ');
+    object_ok($baz, 'ᕘ');    
+    
+    {
+        my $m = sub { (shift)->next::method() };
+        {
+            no strict 'refs';
+            *{'બʑ::ƚ'} = $m;
+        }
+
+        eval { $baz->ƚ() };
+        ok($@, '... calling ƚ() with next::method failed') || diag $@;
+    }
+
+    # Test with non-existing class (used to segfault)
+    {
+        package Qűx;
+        use mro;
+        sub fਓ { No::Such::Class->next::can }
+    }
+
+    eval { Qűx->fਓ() };
+    is($@, '', "->next::can on non-existing package name");
+
+}

Added: vendor/perl/dist/t/mro/next_goto_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_goto_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_goto_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+require q(./test.pl); plan(tests => 4);
+
+use mro;
+
+{
+    package PṞoxᚤ;
+    our @ISA = qw//;
+    sub next_prxᔬ { goto &next::method }
+    sub maybe_prxᔬ { goto &maybe::next::method }
+    sub can_prxᔬ { goto &next::can }
+
+    package Ⱦ밧ᶟ;
+    our @ISA = qw//;
+    sub ᕗ { 42 }
+    sub Ƚ { 24 }
+    # বẔ doesn't exist intentionally
+    sub ʠঊₓ { 242 }
+
+    package ᵗ톺;
+    our @ISA = qw/Ⱦ밧ᶟ/;
+    sub ᕗ { shift->PṞoxᚤ::next_prxᔬ() }
+    sub Ƚ { shift->PṞoxᚤ::maybe_prxᔬ() }
+    sub বẔ { shift->PṞoxᚤ::maybe_prxᔬ() }
+    sub ʠঊₓ { shift->PṞoxᚤ::can_prxᔬ()->() }
+}
+
+is(ᵗ톺->ᕗ, 42, 'proxy next::method via goto');
+is(ᵗ톺->Ƚ, 24, 'proxy maybe::next::method via goto');
+ok(!ᵗ톺->বẔ, 'proxy maybe::next::method via goto with no method');
+is(ᵗ톺->ʠঊₓ, 242, 'proxy next::can via goto');

Added: vendor/perl/dist/t/mro/next_inanon_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_inanon_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_inanon_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+require q(./test.pl); plan(tests => 2);
+
+=pod
+
+This tests the successful handling of a next::method call from within an
+anonymous subroutine.
+
+=cut
+
+{
+    package ㅏ;
+    use mro 'c3'; 
+
+    sub ᕘ {
+      return 'ㅏ::ᕘ';
+    }
+
+    sub Ḃᛆ {
+      return 'ㅏ::Ḃᛆ';
+    }
+}
+
+{
+    package Ḃ;
+    use base 'ㅏ';
+    use mro 'c3'; 
+    
+    sub ᕘ {
+      my $code = sub {
+        return 'Ḃ::ᕘ => ' . (shift)->next::method();
+      };
+      return (shift)->$code;
+    }
+
+    sub Ḃᛆ {
+      my $code1 = sub {
+        my $code2 = sub {
+          return 'Ḃ::Ḃᛆ => ' . (shift)->next::method();
+        };
+        return (shift)->$code2;
+      };
+      return (shift)->$code1;
+    }
+}
+
+is(Ḃ->ᕘ, "Ḃ::ᕘ => ㅏ::ᕘ",
+   'method resolved inside anonymous sub');
+
+is(Ḃ->Ḃᛆ, "Ḃ::Ḃᛆ => ㅏ::Ḃᛆ",
+   'method resolved inside nested anonymous subs');
+
+

Added: vendor/perl/dist/t/mro/next_ineval_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_ineval_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_ineval_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 1);
+
+=pod
+
+This tests the use of an eval{} block to wrap a next::method call.
+
+=cut
+
+{
+    package అ;
+    use mro 'c3'; 
+
+    sub ຟǫ {
+      die 'అ::ຟǫ died';
+      return 'అ::ຟǫ succeeded';
+    }
+}
+
+{
+    package b;
+    use base 'అ';
+    use mro 'c3'; 
+    
+    sub ຟǫ {
+      eval {
+        return 'b::ຟǫ => ' . (shift)->next::method();
+      };
+
+      if ($@) {
+        return $@;
+      }
+    }
+}
+
+like(b->ຟǫ, 
+   qr/^అ::ຟǫ died/u, 
+   'method resolved inside eval{}');
+
+

Added: vendor/perl/dist/t/mro/next_method_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_method_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_method_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 5);
+
+=pod
+
+This tests the classic diamond inheritance pattern.
+
+   <A>
+  /   \
+<B>   <C>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diӑmond_A;
+    use mro 'c3'; 
+    sub 헬ฬ { 'Diӑmond_A::헬ฬ' }
+    sub fಓ { 'Diӑmond_A::fಓ' }       
+}
+{
+    package Diӑmond_B;
+    use base 'Diӑmond_A';
+    use mro 'c3';     
+    sub fಓ { 'Diӑmond_B::fಓ => ' . (shift)->next::method() }       
+}
+{
+    package Diӑmond_C;
+    use mro 'c3';    
+    use base 'Diӑmond_A';     
+
+    sub 헬ฬ { 'Diӑmond_C::헬ฬ => ' . (shift)->next::method() }
+    sub fಓ { 'Diӑmond_C::fಓ => ' . (shift)->next::method() }   
+}
+{
+    package Diӑmond_D;
+    use base ('Diӑmond_B', 'Diӑmond_C');
+    use mro 'c3'; 
+    
+    sub fಓ { 'Diӑmond_D::fಓ => ' . (shift)->next::method() }   
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diӑmond_D'),
+    [ qw(Diӑmond_D Diӑmond_B Diӑmond_C Diӑmond_A) ]
+), '... got the right MRO for Diӑmond_D');
+
+is(Diӑmond_D->헬ฬ, 'Diӑmond_C::헬ฬ => Diӑmond_A::헬ฬ', '... method resolved itself as expected');
+
+is(Diӑmond_D->can('헬ฬ')->('Diӑmond_D'), 
+   'Diӑmond_C::헬ฬ => Diӑmond_A::헬ฬ', 
+   '... can(method) resolved itself as expected');
+   
+is(UNIVERSAL::can("Diӑmond_D", '헬ฬ')->('Diӑmond_D'), 
+   'Diӑmond_C::헬ฬ => Diӑmond_A::헬ฬ', 
+   '... can(method) resolved itself as expected');
+
+is(Diӑmond_D->fಓ, 
+    'Diӑmond_D::fಓ => Diӑmond_B::fಓ => Diӑmond_C::fಓ => Diӑmond_A::fಓ', 
+    '... method fಓ resolved itself as expected');

Added: vendor/perl/dist/t/mro/next_skip_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/next_skip_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/next_skip_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+require q(./test.pl); plan(tests => 10);
+
+use utf8;
+use open qw( :utf8 :std );
+
+=pod
+
+This tests the classic diamond inheritance pattern.
+
+   <A>
+  /   \
+<B>   <C>
+  \   /
+   <D>
+
+=cut
+
+{
+    package Diᚪၚd_A;
+    use mro 'c3'; 
+    sub ᴮaȐ { 'Diᚪၚd_A::ᴮaȐ' }        
+    sub 바ź { 'Diᚪၚd_A::바ź' }
+}
+{
+    package Diᚪၚd_B;
+    use base 'Diᚪၚd_A';
+    use mro 'c3';    
+    sub 바ź { 'Diᚪၚd_B::바ź => ' . (shift)->next::method() }         
+}
+{
+    package Diᚪၚd_C;
+    use mro 'c3';    
+    use base 'Diᚪၚd_A';     
+    sub ᕘ { 'Diᚪၚd_C::ᕘ' }   
+    sub buƵ { 'Diᚪၚd_C::buƵ' }     
+    
+    sub woz { 'Diᚪၚd_C::woz' }
+    sub maᐇbʚ { 'Diᚪၚd_C::maᐇbʚ' }         
+}
+{
+    package Diᚪၚd_D;
+    use base ('Diᚪၚd_B', 'Diᚪၚd_C');
+    use mro 'c3'; 
+    sub ᕘ { 'Diᚪၚd_D::ᕘ => ' . (shift)->next::method() } 
+    sub ᴮaȐ { 'Diᚪၚd_D::ᴮaȐ => ' . (shift)->next::method() }   
+    sub buƵ { 'Diᚪၚd_D::buƵ => ' . (shift)->바ź() }  
+    sub fuz { 'Diᚪၚd_D::fuz => ' . (shift)->next::method() }  
+    
+    sub woz { 'Diᚪၚd_D::woz can => ' . ((shift)->next::can() ? 1 : 0) }
+    sub noz { 'Diᚪၚd_D::noz can => ' . ((shift)->next::can() ? 1 : 0) }
+
+    sub maᐇbʚ { 'Diᚪၚd_D::maᐇbʚ => ' . ((shift)->maybe::next::method() || 0) }
+    sub ᒧyベ { 'Diᚪၚd_D::ᒧyベ => ' .    ((shift)->maybe::next::method() || 0) }
+
+}
+
+ok(eq_array(
+    mro::get_linear_isa('Diᚪၚd_D'),
+    [ qw(Diᚪၚd_D Diᚪၚd_B Diᚪၚd_C Diᚪၚd_A) ]
+), '... got the right MRO for Diᚪၚd_D');
+
+is(Diᚪၚd_D->ᕘ, 'Diᚪၚd_D::ᕘ => Diᚪၚd_C::ᕘ', '... skipped B and went to C correctly');
+is(Diᚪၚd_D->ᴮaȐ, 'Diᚪၚd_D::ᴮaȐ => Diᚪၚd_A::ᴮaȐ', '... skipped B & C and went to A correctly');
+is(Diᚪၚd_D->바ź, 'Diᚪၚd_B::바ź => Diᚪၚd_A::바ź', '... called B method, skipped C and went to A correctly');
+is(Diᚪၚd_D->buƵ, 'Diᚪၚd_D::buƵ => Diᚪၚd_B::바ź => Diᚪၚd_A::바ź', '... called D method dispatched to , different method correctly');
+eval { Diᚪၚd_D->fuz };
+like($@, qr/^No next::method 'fuz' found for Diᚪၚd_D/u, '... cannot re-dispatch to a method which is not there');
+is(Diᚪၚd_D->woz, 'Diᚪၚd_D::woz can => 1', '... can re-dispatch figured out correctly');
+is(Diᚪၚd_D->noz, 'Diᚪၚd_D::noz can => 0', '... cannot re-dispatch figured out correctly');
+
+is(Diᚪၚd_D->maᐇbʚ, 'Diᚪၚd_D::maᐇbʚ => Diᚪၚd_C::maᐇbʚ', '... redispatched D to C when it exists');
+is(Diᚪၚd_D->ᒧyベ, 'Diᚪၚd_D::ᒧyベ => 0', '... quietly failed redispatch from D');

Added: vendor/perl/dist/t/mro/overload_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/overload_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/overload_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,57 @@
+#!./perl
+
+use strict;
+use warnings;
+BEGIN {
+    unless (-d 'blib') {
+        chdir 't' if -d 't';
+        @INC = '../lib';
+    }
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+require q(./test.pl); plan(tests => 7);
+
+{
+    package 밧e텟ʇ;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    
+    package Ov에rꪩࡃᛝTeŝṱ;
+    use strict;
+    use warnings;
+    use mro 'c3';
+    use base '밧e텟ʇ';        
+    use overload '""' => sub { ref(shift) . " stringified" },
+                 fallback => 1;
+    
+    sub ネᚹ { bless {} => shift }    
+    
+    package 읺ҎꀀḮṆᵷꜰ롬ᵕveŔŁoad엗텟ᵵ;
+    use strict;
+    use warnings;
+    use base 'Ov에rꪩࡃᛝTeŝṱ';
+    use mro 'c3';
+}
+
+my $x = 읺ҎꀀḮṆᵷꜰ롬ᵕveŔŁoad엗텟ᵵ->ネᚹ();
+object_ok($x, '읺ҎꀀḮṆᵷꜰ롬ᵕveŔŁoad엗텟ᵵ');
+
+my $y = Ov에rꪩࡃᛝTeŝṱ->ネᚹ();
+object_ok($y, 'Ov에rꪩࡃᛝTeŝṱ');
+
+is("$x", '읺ҎꀀḮṆᵷꜰ롬ᵕveŔŁoad엗텟ᵵ stringified', '... got the right value when stringifing');
+is("$y", 'Ov에rꪩࡃᛝTeŝṱ stringified', '... got the right value when stringifing');
+
+ok(($y eq 'Ov에rꪩࡃᛝTeŝṱ stringified'), '... eq was handled correctly');
+
+my $result;
+eval { 
+    $result = $x eq '읺ҎꀀḮṆᵷꜰ롬ᵕveŔŁoad엗텟ᵵ stringified' 
+};
+ok(!$@, '... this should not throw an exception');
+ok($result, '... and we should get the true value');
+

Added: vendor/perl/dist/t/mro/package_aliases_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/package_aliases_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/package_aliases_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,469 @@
+#!./perl
+
+BEGIN {
+    $ENV{PERL_UNICODE} = 0;
+    unless (-d 'blib') {
+        chdir 't' if -d 't';
+        @INC = '../lib';
+    }
+    require q(./test.pl);
+}
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+plan(tests => 52);
+
+{
+    package Neẁ;
+    use strict;
+    use warnings;
+
+    package ऑlㄉ;
+    use strict;
+    use warnings;
+
+    {
+      no strict 'refs';
+      *{'ऑlㄉ::'} = *{'Neẁ::'};
+    }
+}
+
+ok (ऑlㄉ->isa(Neẁ::), 'ऑlㄉ inherits from Neẁ');
+ok (Neẁ->isa(ऑlㄉ::), 'Neẁ inherits from ऑlㄉ');
+
+object_ok (bless ({}, ऑlㄉ::), Neẁ::, 'ऑlㄉ object');
+object_ok (bless ({}, Neẁ::), ऑlㄉ::, 'Neẁ object');
+
+
+# Test that replacing a package by assigning to an existing glob
+# invalidates the isa caches
+for(
+ {
+   name => 'assigning a glob to a glob',
+   code => '$life_raft = $::{"lㅔf::"}; *lㅔf:: = $::{"릭Ⱶᵀ::"}',
+ },
+ {
+   name => 'assigning a string to a glob',
+   code => '$life_raft = $::{"lㅔf::"}; *lㅔf:: = "릭Ⱶᵀ::"',
+ },
+ {
+   name => 'assigning a stashref to a glob',
+   code => '$life_raft = \%lㅔf::; *lㅔf:: = \%릭Ⱶᵀ::',
+ },
+) {
+my $prog =    q~
+     BEGIN {
+         unless (-d 'blib') {
+             chdir 't' if -d 't';
+             @INC = '../lib';
+         }
+     }
+     use utf8;
+     use open qw( :utf8 :std );
+
+     @숩cਲꩋ::ISA = "lㅔf";
+     @lㅔf::ISA = "톺ĺФț";
+
+     sub 톺ĺФț::Sᑊeಅḱ { "Woof!" }
+     sub ᴖ릭ᚽʇ::Sᑊeಅḱ { "Bow-wow!" }
+
+     my $thing = bless [], "숩cਲꩋ";
+
+     # mro_package_moved needs to know to skip non-globs
+     $릭Ⱶᵀ::{"ᚷꝆエcƙ::"} = 3;
+
+     @릭Ⱶᵀ::ISA = 'ᴖ릭ᚽʇ';
+     my $life_raft;
+    __code__;
+
+     print $thing->Sᑊeಅḱ, "\n";
+
+     undef $life_raft;
+     print $thing->Sᑊeಅḱ, "\n";
+   ~ =~ s\__code__\$$_{code}\r; #\
+utf8::encode($prog);
+ fresh_perl_is
+  $prog, 
+  "Bow-wow!\nBow-wow!\n",
+   {},
+  "replacing packages by $$_{name} updates isa caches";
+}
+
+# Similar test, but with nested packages
+#
+#  톺ĺФț (Woof)    ᴖ릭ᚽʇ (Bow-wow)
+#      |                 |
+#  lㅔf::Side   <-   릭Ⱶᵀ::Side
+#      |
+#   숩cਲꩋ
+#
+# This test assigns 릭Ⱶᵀ:: to lㅔf::, indirectly making lㅔf::Side an
+# alias to 릭Ⱶᵀ::Side (following the arrow in the diagram).
+for(
+ {
+   name => 'assigning a glob to a glob',
+   code => '$life_raft = $::{"lㅔf::"}; *lㅔf:: = $::{"릭Ⱶᵀ::"}',
+ },
+ {
+   name => 'assigning a string to a glob',
+   code => '$life_raft = $::{"lㅔf::"}; *lㅔf:: = "릭Ⱶᵀ::"',
+ },
+ {
+   name => 'assigning a stashref to a glob',
+   code => '$life_raft = \%lㅔf::; *lㅔf:: = \%릭Ⱶᵀ::',
+ },
+) {
+ my $prog = q~
+     BEGIN {
+         unless (-d 'blib') {
+             chdir 't' if -d 't';
+             @INC = '../lib';
+         }
+     }
+     use utf8;
+     use open qw( :utf8 :std );
+     @숩cਲꩋ::ISA = "lㅔf::Side";
+     @lㅔf::Side::ISA = "톺ĺФț";
+
+     sub 톺ĺФț::Sᑊeಅḱ { "Woof!" }
+     sub ᴖ릭ᚽʇ::Sᑊeಅḱ { "Bow-wow!" }
+
+     my $thing = bless [], "숩cਲꩋ";
+
+     @릭Ⱶᵀ::Side::ISA = 'ᴖ릭ᚽʇ';
+     my $life_raft;
+    __code__;
+
+     print $thing->Sᑊeಅḱ, "\n";
+
+     undef $life_raft;
+     print $thing->Sᑊeಅḱ, "\n";
+   ~ =~ s\__code__\$$_{code}\r;
+ utf8::encode($prog);
+
+ fresh_perl_is
+  $prog,
+  "Bow-wow!\nBow-wow!\n",
+   {},
+  "replacing nested packages by $$_{name} updates isa caches";
+}
+
+# Another nested package test, in which the isa cache needs to be reset on
+# the subclass of a package that does not exist.
+#
+# Parenthesized packages do not exist.
+#
+#  ɵűʇㄦ::인ንʵ    ( cฬnए::인ንʵ )
+#       |                 |
+#     Lфť              R익hȚ
+#
+#        ɵűʇㄦ  ->  cฬnए
+#
+# This test assigns ɵűʇㄦ:: to cฬnए::, making cฬnए::인ንʵ an alias to
+# ɵűʇㄦ::인ንʵ.
+#
+# Then we also run the test again, but without ɵűʇㄦ::인ንʵ
+for(
+ {
+   name => 'assigning a glob to a glob',
+   code => '*cฬnए:: = *ɵűʇㄦ::',
+ },
+ {
+   name => 'assigning a string to a glob',
+   code => '*cฬnए:: = "ɵűʇㄦ::"',
+ },
+ {
+   name => 'assigning a stashref to a glob',
+   code => '*cฬnए:: = \%ɵűʇㄦ::',
+ },
+) {
+ for my $tail ('인ንʵ', '인ንʵ::', '인ንʵ:::', '인ንʵ::::') {
+  my $prog =     q~
+     BEGIN {
+         unless (-d 'blib') {
+             chdir 't' if -d 't';
+             @INC = '../lib';
+         }
+     }
+      use utf8;
+      use open qw( :utf8 :std );
+      use Encode ();
+
+      if (grep /\P{ASCII}/, @ARGV) {
+        @ARGV = map { Encode::decode("UTF-8", $_) } @ARGV;
+      }
+
+      my $tail = shift;
+      @Lфť::ISA = "ɵűʇㄦ::$tail";
+      @R익hȚ::ISA = "cฬnए::$tail";
+      bless [], "ɵűʇㄦ::$tail"; # autovivify the stash
+
+     __code__;
+
+      print "ok 1", "\n" if Lфť->isa("cฬnए::$tail");
+      print "ok 2", "\n" if R익hȚ->isa("ɵűʇㄦ::$tail");
+      print "ok 3", "\n" if R익hȚ->isa("cฬnए::$tail");
+      print "ok 4", "\n" if Lфť->isa("ɵűʇㄦ::$tail");
+    ~ =~ s\__code__\$$_{code}\r;
+  utf8::encode($prog);
+  fresh_perl_is
+   $prog,
+   "ok 1\nok 2\nok 3\nok 4\n",
+    { args => [$tail] },
+   "replacing nonexistent nested packages by $$_{name} updates isa caches"
+     ." ($tail)";
+
+  # Same test but with the subpackage autovivified after the assignment
+  $prog =     q~
+      BEGIN {
+         unless (-d 'blib') {
+             chdir 't' if -d 't';
+             @INC = '../lib';
+         }
+      }
+      use utf8;
+      use open qw( :utf8 :std );
+      use Encode ();
+
+      if (grep /\P{ASCII}/, @ARGV) {
+        @ARGV = map { Encode::decode("UTF-8", $_) } @ARGV;
+      }
+
+      my $tail = shift;
+      @Lфť::ISA = "ɵűʇㄦ::$tail";
+      @R익hȚ::ISA = "cฬnए::$tail";
+
+     __code__;
+
+      bless [], "ɵűʇㄦ::$tail";
+
+      print "ok 1", "\n" if Lфť->isa("cฬnए::$tail");
+      print "ok 2", "\n" if R익hȚ->isa("ɵűʇㄦ::$tail");
+      print "ok 3", "\n" if R익hȚ->isa("cฬnए::$tail");
+      print "ok 4", "\n" if Lфť->isa("ɵűʇㄦ::$tail");
+    ~ =~ s\__code__\$$_{code}\r;
+  utf8::encode($prog);
+  fresh_perl_is
+   $prog,
+   "ok 1\nok 2\nok 3\nok 4\n",
+    { args => [$tail] },
+   "Giving nonexistent packages multiple effective names by $$_{name}"
+     . " ($tail)";
+ }
+}
+
+no warnings; # temporary; there seems to be a scoping bug, as this does not
+             # work when placed in the blocks below
+
+# Test that deleting stash elements containing
+# subpackages also invalidates the isa cache.
+# Maybe this does not belong in package_aliases.t, but it is closely
+# related to the tests immediately preceding.
+{
+ @ቹऋ::ISA = ("Cuȓ", "ฮンᛞ");
+ @Cuȓ::ISA = "Hyḹ앛Ҭテ";
+
+ sub Hyḹ앛Ҭテ::Sᑊeಅḱ { "Arff!" }
+ sub ฮンᛞ::Sᑊeಅḱ { "Woof!" }
+
+ my $pet = bless [], "ቹऋ";
+
+ my $life_raft = delete $::{'Cuȓ::'};
+
+ is $pet->Sᑊeಅḱ, 'Woof!',
+  'deleting a stash from its parent stash invalidates the isa caches';
+
+ undef $life_raft;
+ is $pet->Sᑊeಅḱ, 'Woof!',
+  'the deleted stash is gone completely when freed';
+}
+# Same thing, but with nested packages
+{
+ @펱ᑦ::ISA = ("Cuȓȓ::Cuȓȓ::Cuȓȓ", "ɥwn");
+ @Cuȓȓ::Cuȓȓ::Cuȓȓ::ISA = "lȺt랕ᚖ";
+
+ sub lȺt랕ᚖ::Sᑊeಅḱ { "Arff!" }
+ sub ɥwn::Sᑊeಅḱ { "Woof!" }
+
+ my $pet = bless [], "펱ᑦ";
+
+ my $life_raft = delete $::{'Cuȓȓ::'};
+
+ is $pet->Sᑊeಅḱ, 'Woof!',
+  'deleting a stash from its parent stash resets caches of substashes';
+
+ undef $life_raft;
+ is $pet->Sᑊeಅḱ, 'Woof!',
+  'the deleted substash is gone completely when freed';
+}
+
+# [perl #77358]
+my $prog =    q~#!perl -w
+     BEGIN {
+         unless (-d 'blib') {
+             chdir 't' if -d 't';
+             @INC = '../lib';
+         }
+     }
+     use utf8;
+     use open qw( :utf8 :std );
+     @펱ᑦ::ISA = "T잌ዕ";
+     @T잌ዕ::ISA = "Bᛆヶṝ";
+     
+     sub Bᛆヶṝ::Sᑊeಅḱ { print "Woof!\n" }
+     sub lȺt랕ᚖ::Sᑊeಅḱ { print "Bow-wow!\n" }
+     
+     my $pet = bless [], "펱ᑦ";
+     
+     $pet->Sᑊeಅḱ;
+     
+     sub ດƓ::Sᑊeಅḱ { print "Hello.\n" } # strange ດƓ!
+     @ດƓ::ISA = 'lȺt랕ᚖ';
+     *T잌ዕ:: = delete $::{'ດƓ::'};
+     
+     $pet->Sᑊeಅḱ;
+   ~;
+utf8::encode($prog);
+fresh_perl_is
+  $prog,
+  "Woof!\nHello.\n",
+   { stderr => 1 },
+  "Assigning a nameless package over one w/subclasses updates isa caches";
+
+# mro_package_moved needs to make a distinction between replaced and
+# assigned stashes when keeping track of what it has seen so far.
+no warnings; {
+    no strict 'refs';
+
+    sub ʉ::bᓗnǩ::bᓗnǩ::ພo { "bbb" }
+    sub ᵛeↄl움::ພo { "lasrevinu" }
+    @ݏ엗Ƚeᵬૐᵖ::ISA = qw 'ພo::bᓗnǩ::bᓗnǩ ᵛeↄl움';
+    *ພo::ବㄗ:: = *ʉ::bᓗnǩ::;   # now ʉ::bᓗnǩ:: is on both sides
+    *ພo:: = *ʉ::;         # here ʉ::bᓗnǩ:: is both deleted and added
+    *ʉ:: = *ቦᵕ::;          # now it is only known as ພo::bᓗnǩ::
+
+    # At this point, before the bug was fixed, %ພo::bᓗnǩ::bᓗnǩ:: ended
+    # up with no effective name, allowing it to be deleted without updating
+    # its subclasses’ caches.
+
+    my $accum = '';
+
+    $accum .= 'ݏ엗Ƚeᵬૐᵖ'->ພo;          # bbb
+    delete ${"ພo::bᓗnǩ::"}{"bᓗnǩ::"};
+    $accum .= 'ݏ엗Ƚeᵬૐᵖ'->ພo;          # bbb (Oops!)
+    @ݏ엗Ƚeᵬૐᵖ::ISA = @ݏ엗Ƚeᵬૐᵖ::ISA;
+    $accum .= 'ݏ엗Ƚeᵬૐᵖ'->ພo;          # lasrevinu
+
+    is $accum, 'bbblasrevinulasrevinu',
+      'nested classes deleted & added simultaneously';
+}
+use warnings;
+
+# mro_package_moved needs to check for self-referential packages.
+# This broke Text::Template [perl #78362].
+watchdog 3;
+*ᕘ:: = \%::;
+*Aᶜme::Mῌ::Aᶜme:: = \*Aᶜme::; # indirect self-reference
+pass("mro_package_moved and self-referential packages");
+
+# Deleting a glob whose name does not indicate its location in the symbol
+# table but which nonetheless *is* in the symbol table.
+{
+    no strict refs=>;
+    no warnings;
+    @ოƐ::mഒrェ::ISA = "foᚒ";
+    sub foᚒ::ວmᑊ { "aoeaa" }
+    *ťວ:: = *ოƐ::;
+    delete $::{"ოƐ::"};
+    @C힐dᒡl았::ISA = 'ťວ::mഒrェ';
+    my $accum = 'C힐dᒡl았'->ວmᑊ . '-';
+    my $life_raft = delete ${"ťວ::"}{"mഒrェ::"};
+    $accum .= eval { 'C힐dᒡl았'->ວmᑊ } // '<undef>';
+    is $accum, 'aoeaa-<undef>',
+     'Deleting globs whose loc in the symtab differs from gv_fullname'
+}
+
+# Pathological test for undeffing a stash that has an alias.
+*ᵍh엞:: = *ኔƞ::;
+@숩cਲꩋ::ISA = 'ᵍh엞';
+undef %ᵍh엞::;
+sub F렐ᛔ::ວmᑊ { "clumpren" }
+eval '
+  $ኔƞ::whatever++;
+  @ኔƞ::ISA = "F렐ᛔ";
+';
+is eval { '숩cਲꩋ'->ວmᑊ }, 'clumpren',
+ 'Changes to @ISA after undef via original name';
+undef %ᵍh엞::;
+eval '
+  $ᵍh엞::whatever++;
+  @ᵍh엞::ISA = "F렐ᛔ";
+';
+is eval { '숩cਲꩋ'->ວmᑊ }, 'clumpren',
+ 'Changes to @ISA after undef via alias';
+
+
+# Packages whose containing stashes have aliases must lose all names cor-
+# responding to that container when detached.
+{
+ {package śmᛅḙ::በɀ} # autovivify
+ *pḢ린ᚷ:: = *śmᛅḙ::;  # śmᛅḙ::በɀ now also named pḢ린ᚷ::በɀ
+ *본:: = delete $śmᛅḙ::{"በɀ::"};
+ # In 5.13.7, it has now lost its śmᛅḙ::በɀ name (reverting to pḢ린ᚷ::በɀ
+ # as the effective name), and gained 본 as an alias.
+ # In 5.13.8, both śmᛅḙ::በɀ *and* pḢ린ᚷ::በɀ names are deleted.
+
+ # Make some methods
+ no strict 'refs';
+ *{"pḢ린ᚷ::በɀ::fฤmᛈ"} = sub { "hello" };
+ sub Fルmፕṟ::fฤmᛈ { "good bye" };
+
+ @ᵇるᣘ킨::ISA = qw "본 Fルmፕṟ"; # now wrongly inherits from pḢ린ᚷ::በɀ
+
+ is fฤmᛈ ᵇるᣘ킨, "good bye",
+  'detached stashes lose all names corresponding to the containing stash';
+}
+
+# Crazy edge cases involving packages ending with a single :
+@촐oン::ISA = 'ᚖგ:'; # pun intended!
+bless [], "ᚖგ:"; # autovivify the stash
+ok "촐oン"->isa("ᚖგ:"), 'class isa "class:"';
+{ no strict 'refs'; *{"ᚖგ:::"} = *ᚖგ:: }
+ok "촐oン"->isa("ᚖგ"),
+ 'isa(ᕘ) when inheriting from "class:" which is an alias for ᕘ';
+{
+ no warnings;
+ # The next line of code is *not* normative. If the structure changes,
+ # this line needs to change, too.
+ my $ᕘ = delete $ᚖგ::{":"};
+ ok !촐oン->isa("ᚖგ"),
+  'class that isa "class:" no longer isa ᕘ if "class:" has been deleted';
+}
+@촐oン::ISA = ':';
+bless [], ":";
+ok "촐oン"->isa(":"), 'class isa ":"';
+{ no strict 'refs'; *{":::"} = *ፑňṪu앝ȋ온:: }
+ok "촐oン"->isa("ፑňṪu앝ȋ온"),
+ 'isa(ᕘ) when inheriting from ":" which is an alias for ᕘ';
+@촐oン::ISA = 'ᚖგ:';
+bless [], "ᚖგ:";
+{
+ no strict 'refs';
+ my $life_raft = \%{"ᚖგ:::"};
+ *{"ᚖგ:::"} = \%ᚖგ::;
+ ok "촐oン"->isa("ᚖგ"),
+  'isa(ᕘ) when inheriting from "class:" after hash-to-glob assignment';
+}
+@촐oン::ISA = 'ŏ:';
+bless [], "ŏ:";
+{
+ no strict 'refs';
+ my $life_raft = \%{"ŏ:::"};
+ *{"ŏ:::"} = "ᚖგ::";
+ ok "촐oン"->isa("ᚖგ"),
+  'isa(ᕘ) when inheriting from "class:" after string-to-glob assignment';
+}
+=cut

Added: vendor/perl/dist/t/mro/pkg_gen_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/pkg_gen_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/pkg_gen_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,44 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+
+chdir 't' if -d 't';
+require q(./test.pl); plan(tests => 7);
+
+require mro;
+
+{
+    package ᕘ;
+    our @ISA = qw//;
+}
+
+ok(!mro::get_pkg_gen('레알ឭ되s놑Eξsᴛ'),
+    "pkg_gen 0 for non-existent pkg");
+
+my $f_gen = mro::get_pkg_gen('ᕘ');
+ok($f_gen > 0, 'ᕘ pkg_gen > 0');
+
+{
+    no warnings 'once';
+    *ᕘ::ᕘ_Ƒ운ℭ = sub { 123 };
+}
+my $new_f_gen = mro::get_pkg_gen('ᕘ');
+ok($new_f_gen > $f_gen, 'ᕘ pkg_gen incs for methods');
+$f_gen = $new_f_gen;
+
+@ᕘ::ISA = qw/Bar/;
+$new_f_gen = mro::get_pkg_gen('ᕘ');
+ok($new_f_gen > $f_gen, 'ᕘ pkg_gen incs for @ISA');
+
+undef %ᕘ::;
+is(mro::get_pkg_gen('ᕘ'), 1, "pkg_gen 1 for undef %Pkg::");
+
+delete $::{"ᕘ::"};
+is(mro::get_pkg_gen('ᕘ'), 0, 'pkg_gen 0 for delete $::{Pkg::}');
+
+delete $::{"ㄑଊx::"};
+push @ㄑଊx::ISA, "Woot"; # should not segfault
+ok(1, "No segfault on modification of ISA in a deleted stash");

Added: vendor/perl/dist/t/mro/recursion_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/recursion_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/recursion_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,102 @@
+#!./perl
+
+use strict;
+use warnings;
+BEGIN {
+    unless (-d 'blib') {
+        chdir 't' if -d 't';
+        @INC = '../lib';
+    }
+}
+use utf8;
+use open qw( :utf8 :std );
+
+require './test.pl';
+
+plan(skip_all => "Your system has no SIGALRM") if !exists $SIG{ALRM};
+plan(tests => 8);
+
+require mro;
+
+=pod
+
+These are like the 010_complex_merge_classless test,
+but an infinite loop has been made in the heirarchy,
+to test that we can fail cleanly instead of going
+into an infinite loop
+
+=cut
+
+# initial setup, everything sane
+{
+    package ƙ;
+    use mro 'c3';
+    our @ISA = qw/ᶨ ィ/;
+    package ᶨ;
+    use mro 'c3';
+    our @ISA = qw/f/;
+    package ィ;
+    use mro 'c3';
+    our @ISA = qw/ʰ f/;
+    package ʰ;
+    use mro 'c3';
+    our @ISA = qw/ᶢ/;
+    package ᶢ;
+    use mro 'c3';
+    our @ISA = qw/ᛞ/;
+    package f;
+    use mro 'c3';
+    our @ISA = qw/ǝ/;
+    package ǝ;
+    use mro 'c3';
+    our @ISA = qw/ᛞ/;
+    package ᛞ;
+    use mro 'c3';
+    our @ISA = qw/Ạ B ʗ/;
+    package ʗ;
+    use mro 'c3';
+    our @ISA = qw//;
+    package B;
+    use mro 'c3';
+    our @ISA = qw//;
+    package Ạ;
+    use mro 'c3';
+    our @ISA = qw//;
+}
+
+# A series of 8 aberations that would cause infinite loops,
+#  each one undoing the work of the previous
+my @loopies = (
+    sub { @ǝ::ISA = qw/f/ },
+    sub { @ǝ::ISA = qw/ᛞ/; @ʗ::ISA = qw/f/ },
+    sub { @ʗ::ISA = qw//; @Ạ::ISA = qw/ƙ/ },
+    sub { @Ạ::ISA = qw//; @ᶨ::ISA = qw/f ƙ/ },
+    sub { @ᶨ::ISA = qw/f/; @ʰ::ISA = qw/ƙ ᶢ/ },
+    sub { @ʰ::ISA = qw/ᶢ/; @B::ISA = qw/B/ },
+    sub { @B::ISA = qw//; @ƙ::ISA = qw/ƙ ᶨ ィ/ },
+    sub { @ƙ::ISA = qw/ᶨ ィ/; @ᛞ::ISA = qw/Ạ ʰ B ʗ/ },
+);
+
+foreach my $loopy (@loopies) {
+    eval {
+        local $SIG{ALRM} = sub { die "ALRMTimeout" };
+        alarm(3);
+        $loopy->();
+        mro::get_linear_isa('ƙ', 'c3');
+    };
+
+    if(my $err = $@) {
+        if($err =~ /ALRMTimeout/) {
+            ok(0, "Loop terminated by SIGALRM");
+        }
+        elsif($err =~ /Recursive inheritance detected/) {
+            ok(1, "Graceful exception thrown");
+        }
+        else {
+            ok(0, "Unrecognized exception: $err");
+        }
+    }
+    else {
+        ok(0, "Infinite loop apparently succeeded???");
+    }
+}

Added: vendor/perl/dist/t/mro/recursion_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/recursion_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/recursion_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,89 @@
+#!./perl
+
+use strict;
+use warnings;
+BEGIN {
+    unless (-d 'blib') {
+        chdir 't' if -d 't';
+        @INC = '../lib';
+    }
+}
+use utf8;
+use open qw( :utf8 :std );
+
+require './test.pl';
+
+plan(skip_all => "Your system has no SIGALRM") if !exists $SIG{ALRM};
+plan(tests => 8);
+
+=pod
+
+These are like the 010_complex_merge_classless test,
+but an infinite loop has been made in the heirarchy,
+to test that we can fail cleanly instead of going
+into an infinite loop
+
+=cut
+
+# initial setup, everything sane
+{
+    package ƙ;
+    our @ISA = qw/ᶨ ィ/;
+    package ᶨ;
+    our @ISA = qw/f/;
+    package ィ;
+    our @ISA = qw/ʰ f/;
+    package ʰ;
+    our @ISA = qw/ᶢ/;
+    package ᶢ;
+    our @ISA = qw/ᛞ/;
+    package f;
+    our @ISA = qw/ǝ/;
+    package ǝ;
+    our @ISA = qw/ᛞ/;
+    package ᛞ;
+    our @ISA = qw/Ạ B ʗ/;
+    package ʗ;
+    our @ISA = qw//;
+    package B;
+    our @ISA = qw//;
+    package Ạ;
+    our @ISA = qw//;
+}
+
+# A series of 8 aberations that would cause infinite loops,
+#  each one undoing the work of the previous
+my @loopies = (
+    sub { @ǝ::ISA = qw/f/ },
+    sub { @ǝ::ISA = qw/ᛞ/; @ʗ::ISA = qw/f/ },
+    sub { @ʗ::ISA = qw//; @Ạ::ISA = qw/ƙ/ },
+    sub { @Ạ::ISA = qw//; @ᶨ::ISA = qw/f ƙ/ },
+    sub { @ᶨ::ISA = qw/f/; @ʰ::ISA = qw/ƙ ᶢ/ },
+    sub { @ʰ::ISA = qw/ᶢ/; @B::ISA = qw/B/ },
+    sub { @B::ISA = qw//; @ƙ::ISA = qw/ƙ ᶨ ィ/ },
+    sub { @ƙ::ISA = qw/ᶨ ィ/; @ᛞ::ISA = qw/Ạ ʰ B ʗ/ },
+);
+
+foreach my $loopy (@loopies) {
+    eval {
+        local $SIG{ALRM} = sub { die "ALRMTimeout" };
+        alarm(3);
+        $loopy->();
+        mro::get_linear_isa('ƙ', 'dfs');
+    };
+
+    if(my $err = $@) {
+        if($err =~ /ALRMTimeout/) {
+            ok(0, "Loop terminated by SIGALRM");
+        }
+        elsif($err =~ /Recursive inheritance detected/) {
+            ok(1, "Graceful exception thrown");
+        }
+        else {
+            ok(0, "Unrecognized exception: $err");
+        }
+    }
+    else {
+        ok(0, "Infinite loop apparently succeeded???");
+    }
+}

Added: vendor/perl/dist/t/mro/vulcan_c3_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/vulcan_c3_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/vulcan_c3_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,67 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+require q(./test.pl); plan(tests => 1);
+
+=pod
+
+example taken from: L<http://www.opendylan.org/books/drm/Method_Dispatch>
+
+         옵젳Ṯ
+           ^
+           |
+        ᓕᵮꡠFᚖᶭ 
+         ^    ^
+        /      \
+   SㄣチenŦ    빞엗ᱞ
+      ^          ^
+      |          |
+ ᕟ텔li겐ț  Hʉ만ӫ읻
+       ^        ^
+        \      /
+         ቩᓪ찬
+
+ define class <SㄣチenŦ> (<ᓕᵮꡠFᚖᶭ>) end class;
+ define class <빞엗ᱞ> (<ᓕᵮꡠFᚖᶭ>) end class;
+ define class <ᕟ텔li겐ț> (<SㄣチenŦ>) end class;
+ define class <Hʉ만ӫ읻> (<빞엗ᱞ>) end class;
+ define class <ቩᓪ찬> (<ᕟ텔li겐ț>, <Hʉ만ӫ읻>) end class;
+
+=cut
+
+{
+    package 옵젳Ṯ;    
+    use mro 'c3';
+    
+    package ᓕᵮꡠFᚖᶭ;
+    use mro 'c3';
+    use base '옵젳Ṯ';
+    
+    package SㄣチenŦ;
+    use mro 'c3';
+    use base 'ᓕᵮꡠFᚖᶭ';
+    
+    package 빞엗ᱞ;
+    use mro 'c3';    
+    use base 'ᓕᵮꡠFᚖᶭ';
+    
+    package ᕟ텔li겐ț;
+    use mro 'c3';    
+    use base 'SㄣチenŦ';
+    
+    package Hʉ만ӫ읻;
+    use mro 'c3';    
+    use base '빞엗ᱞ';
+    
+    package ቩᓪ찬;
+    use mro 'c3';    
+    use base ('ᕟ텔li겐ț', 'Hʉ만ӫ읻');
+}
+
+ok(eq_array(
+    mro::get_linear_isa('ቩᓪ찬'),
+    [ qw(ቩᓪ찬 ᕟ텔li겐ț SㄣチenŦ Hʉ만ӫ읻 빞엗ᱞ ᓕᵮꡠFᚖᶭ 옵젳Ṯ) ]
+), '... got the right MRO for the ቩᓪ찬 Dylan Example');  

Added: vendor/perl/dist/t/mro/vulcan_dfs_utf8.t
===================================================================
--- vendor/perl/dist/t/mro/vulcan_dfs_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/mro/vulcan_dfs_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,68 @@
+#!./perl
+
+use strict;
+use warnings;
+use utf8;
+use open qw( :utf8 :std );
+require q(./test.pl); plan(tests => 1);
+
+
+=pod
+
+example taken from: L<http://www.opendylan.org/books/drm/Method_Dispatch>
+
+         옵젳Ṯ
+           ^
+           |
+        ᓕᵮꡠFᚖᶭ 
+         ^    ^
+        /      \
+   SㄣチenŦ    빞엗ᱞ
+      ^          ^
+      |          |
+ ᕟ텔li겐ț  Hʉ만ӫ읻
+       ^        ^
+        \      /
+         ቩᓪ찬
+
+ define class <SㄣチenŦ> (<life-form>) end class;
+ define class <빞엗ᱞ> (<life-form>) end class;
+ define class <ᕟ텔li겐ț> (<SㄣチenŦ>) end class;
+ define class <Hʉ만ӫ읻> (<빞엗ᱞ>) end class;
+ define class <ቩᓪ찬> (<ᕟ텔li겐ț>, <Hʉ만ӫ읻>) end class;
+
+=cut
+
+{
+    package 옵젳Ṯ;
+    use mro 'dfs';
+    
+    package ᓕᵮꡠFᚖᶭ;
+    use mro 'dfs';
+    use base '옵젳Ṯ';
+    
+    package SㄣチenŦ;
+    use mro 'dfs';
+    use base 'ᓕᵮꡠFᚖᶭ';
+    
+    package 빞엗ᱞ;
+    use mro 'dfs';    
+    use base 'ᓕᵮꡠFᚖᶭ';
+    
+    package ᕟ텔li겐ț;
+    use mro 'dfs';    
+    use base 'SㄣチenŦ';
+    
+    package Hʉ만ӫ읻;
+    use mro 'dfs';    
+    use base '빞엗ᱞ';
+    
+    package ቩᓪ찬;
+    use mro 'dfs';    
+    use base ('ᕟ텔li겐ț', 'Hʉ만ӫ읻');
+}
+
+ok(eq_array(
+    mro::get_linear_isa('ቩᓪ찬'),
+    [ qw(ቩᓪ찬 ᕟ텔li겐ț SㄣチenŦ ᓕᵮꡠFᚖᶭ 옵젳Ṯ Hʉ만ӫ읻 빞엗ᱞ) ]
+), '... got the right MRO for the ቩᓪ찬 Dylan Example');  

Added: vendor/perl/dist/t/op/closure_test.pl
===================================================================
--- vendor/perl/dist/t/op/closure_test.pl	                        (rev 0)
+++ vendor/perl/dist/t/op/closure_test.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,10 @@
+# This file exists to test closure prototypes with no CvOUTSIDE.  Only
+# by putting this in a separate file can we get a sub (this file’s
+# main CV) with no CvOUTSIDE.  When the outer sub is freed, the inner
+# subs also get CvOUTSIDE set to null.
+
+	my $x;
+	$closure_test::s2 = sub {
+	    $x;
+	    sub { $x; '10 cubes' };
+	};

Added: vendor/perl/dist/t/op/coreamp.t
===================================================================
--- vendor/perl/dist/t/op/coreamp.t	                        (rev 0)
+++ vendor/perl/dist/t/op/coreamp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,1052 @@
+#!./perl
+
+# This file tests the results of calling subroutines in the CORE::
+# namespace with ampersand syntax.  In other words, it tests the bodies of
+# the subroutines themselves, not the ops that they might inline themselves
+# as when called as barewords.
+
+# Other tests for CORE subs are in coresubs.t
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = qw(. ../lib);
+    require "test.pl";
+    $^P |= 0x100;
+}
+
+no warnings 'experimental::smartmatch';
+
+sub lis($$;$) {
+  &is(map(@$_ ? "[@{[map $_//'~~u~~', @$_]}]" : 'nought', @_[0,1]), $_[2]);
+}
+
+package hov {
+  use overload '%{}' => sub { +{} }
+}
+package sov {
+  use overload '${}' => sub { \my $x }
+}
+
+my %op_desc = (
+ evalbytes=> 'eval "string"',
+ join     => 'join or string',
+ pos      => 'match position',
+ prototype=> 'subroutine prototype',
+ readline => '<HANDLE>',
+ readpipe => 'quoted execution (``, qx)',
+ reset    => 'symbol reset',
+ ref      => 'reference-type operator',
+ undef    => 'undef operator',
+);
+sub op_desc($) {
+  return $op_desc{$_[0]} || $_[0];
+}
+
+
+# This tests that the &{} syntax respects the number of arguments implied
+# by the prototype, plus some extra tests for the (_) prototype.
+sub test_proto {
+  my($o) = shift;
+
+  # Create an alias, for the caller’s convenience.
+  *{"my$o"} = \&{"CORE::$o"};
+
+  my $p = prototype "CORE::$o";
+  $p = '$;$' if $p eq '$_';
+
+  if ($p eq '') {
+    $tests ++;
+
+    eval " &CORE::$o(1) ";
+    like $@, qr/^Too many arguments for $o at /, "&$o with too many args";
+
+  }
+  elsif ($p =~ /^_;?\z/) {
+    $tests ++;
+
+    eval " &CORE::$o(1,2) ";
+    my $desc = quotemeta op_desc($o);
+    like $@, qr/^Too many arguments for $desc at /,
+      "&$o with too many args";
+
+    if (!@_) { return }
+
+    $tests += 6;
+
+    my($in,$out) = @_; # for testing implied $_
+
+    # Since we have $in and $out values, we might as well test basic amper-
+    # sand calls, too.
+
+    is &{"CORE::$o"}($in), $out, "&$o";
+    lis [&{"CORE::$o"}($in)], [$out], "&$o in list context";
+
+    $_ = $in;
+    is &{"CORE::$o"}(), $out, "&$o with no args";
+
+    # Since there is special code to deal with lexical $_, make sure it
+    # works in all cases.
+    undef $_;
+    {
+      no warnings 'experimental::lexical_topic';
+      my $_ = $in;
+      is &{"CORE::$o"}(), $out, "&$o with no args uses lexical \$_";
+    }
+    # Make sure we get the right pad under recursion
+    my $r;
+    $r = sub {
+      if($_[0]) {
+        no warnings 'experimental::lexical_topic';
+        my $_ = $in;
+        is &{"CORE::$o"}(), $out,
+           "&$o with no args uses the right lexical \$_ under recursion";
+      }
+      else {
+        &$r(1)
+      }
+    };
+    &$r(0);
+    no warnings 'experimental::lexical_topic';
+    my $_ = $in;
+    eval {
+       is "CORE::$o"->(), $out, "&$o with the right lexical \$_ in an eval"
+    };   
+  }
+  elsif ($p =~ '^;([$*]+)\z') { # ;$ ;* ;$$ etc.
+    my $maxargs = length $1;
+    $tests += 1;    
+    eval " &CORE::$o((1)x($maxargs+1)) ";
+    my $desc = quotemeta op_desc($o);
+    like $@, qr/^Too many arguments for $desc at /,
+        "&$o with too many args";
+  }
+  elsif ($p =~ '^([$*]+);?\z') { # Fixed-length $$$ or ***
+    my $args = length $1;
+    $tests += 2;    
+    my $desc = quotemeta op_desc($o);
+    eval " &CORE::$o((1)x($args-1)) ";
+    like $@, qr/^Not enough arguments for $desc at /, "&$o w/too few args";
+    eval " &CORE::$o((1)x($args+1)) ";
+    like $@, qr/^Too many arguments for $desc at /, "&$o w/too many args";
+  }
+  elsif ($p =~ '^([$*]+);([$*]+)\z') { # Variable-length $$$ or ***
+    my $minargs = length $1;
+    my $maxargs = $minargs + length $2;
+    $tests += 2;    
+    eval " &CORE::$o((1)x($minargs-1)) ";
+    like $@, qr/^Not enough arguments for $o at /, "&$o with too few args";
+    eval " &CORE::$o((1)x($maxargs+1)) ";
+    like $@, qr/^Too many arguments for $o at /, "&$o with too many args";
+  }
+  elsif ($p eq '_;$') {
+    $tests += 1;
+
+    eval " &CORE::$o(1,2,3) ";
+    like $@, qr/^Too many arguments for $o at /, "&$o with too many args";
+  }
+  elsif ($p eq '@') {
+    # Do nothing, as we cannot test for too few or too many arguments.
+  }
+  elsif ($p =~ '^[$*;]+@\z') {
+    $tests ++;    
+    $p =~ ';@';
+    my $minargs = $-[0];
+    eval " &CORE::$o((1)x($minargs-1)) ";
+    my $desc = quotemeta op_desc($o);
+    like $@, qr/^Not enough arguments for $desc at /,
+       "&$o with too few args";
+  }
+  elsif ($p =~ /^\*\\\$\$(;?)\$\z/) { #  *\$$$ and *\$$;$
+    $tests += 5;
+
+    eval "&CORE::$o(1,1,1,1,1)";
+    like $@, qr/^Too many arguments for $o at /,
+         "&$o with too many args";
+    eval " &CORE::$o((1)x(\$1?2:3)) ";
+    like $@, qr/^Not enough arguments for $o at /,
+         "&$o with too few args";
+    eval " &CORE::$o(1,[],1,1) ";
+    like $@, qr/^Type of arg 2 to &CORE::$o must be scalar reference at /,
+        "&$o with array ref arg";
+    eval " &CORE::$o(1,1,1,1) ";
+    like $@, qr/^Type of arg 2 to &CORE::$o must be scalar reference at /,
+        "&$o with scalar arg";
+    eval " &CORE::$o(1,bless([], 'sov'),1,1) ";
+    like $@, qr/^Type of arg 2 to &CORE::$o must be scalar reference at /,
+        "&$o with non-scalar arg w/scalar overload (which does not count)";
+  }
+  elsif ($p =~ /^\\%\$*\z/) { #  \% and \%$$
+    $tests += 5;
+
+    eval "&CORE::$o(" . join(",", (1) x length $p) . ")";
+    like $@, qr/^Too many arguments for $o at /,
+         "&$o with too many args";
+    eval " &CORE::$o(" . join(",", (1) x (length($p)-2)) . ") ";
+    like $@, qr/^Not enough arguments for $o at /,
+         "&$o with too few args";
+    my $moreargs = ",1" x (length($p) - 2);
+    eval " &CORE::$o([]$moreargs) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be hash reference at /,
+        "&$o with array ref arg";
+    eval " &CORE::$o(*foo$moreargs) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be hash reference at /,
+        "&$o with typeglob arg";
+    eval " &CORE::$o(bless([], 'hov')$moreargs) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be hash reference at /,
+        "&$o with non-hash arg with hash overload (which does not count)";
+  }
+  elsif ($p =~ /^(;)?\\\[(\$\@%&?\*)](\$\@)?\z/) {
+    $tests += 3;
+
+    unless ($3) {
+      $tests ++;
+      eval " &CORE::$o(1,2) ";
+      like $@, qr/^Too many arguments for ${\op_desc($o)} at /,
+        "&$o with too many args";
+    }
+    unless ($1) {
+      $tests ++;
+      eval { &{"CORE::$o"}($3 ? 1 : ()) };
+      like $@, qr/^Not enough arguments for $o at /,
+         "&$o with too few args";
+    }
+    my $more_args = $3 ? ',1' : '';
+    eval " &CORE::$o(2$more_args) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
+                ) \[\Q$2\E] at /,
+        "&$o with non-ref arg";
+    eval " &CORE::$o(*STDOUT{IO}$more_args) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
+                ) \[\Q$2\E] at /,
+        "&$o with ioref arg";
+    my $class = ref *DATA{IO};
+    eval " &CORE::$o(bless(*DATA{IO}, 'hov')$more_args) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one of(?x:
+                ) \[\Q$2\E] at /,
+        "&$o with ioref arg with hash overload (which does not count)";
+    bless *DATA{IO}, $class;
+    if (do {$2 !~ /&/}) {
+      $tests++;
+      eval " &CORE::$o(\\&scriggle$more_args) ";
+      like $@, qr/^Type of arg 1 to &CORE::$o must be reference to one (?x:
+                  )of \[\Q$2\E] at /,
+        "&$o with coderef arg";
+    }    
+  }
+  elsif ($p eq ';\[$*]') {
+    $tests += 4;
+
+    my $desc = quotemeta op_desc($o);
+    eval " &CORE::$o(1,2) ";
+    like $@, qr/^Too many arguments for $desc at /,
+        "&$o with too many args";
+    eval " &CORE::$o([]) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+        "&$o with array ref arg";
+    eval " &CORE::$o(1) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+        "&$o with scalar arg";
+    eval " &CORE::$o(bless([], 'sov')) ";
+    like $@, qr/^Type of arg 1 to &CORE::$o must be scalar reference at /,
+        "&$o with non-scalar arg w/scalar overload (which does not count)";
+  }
+
+  else {
+    die "Please add tests for the $p prototype";
+  }
+}
+
+# Test that &CORE::foo calls without parentheses (no new @_) can handle the
+# total absence of any @_ without crashing.
+undef *_;
+&CORE::wantarray;
+$tests++;
+pass('no crash with &CORE::foo when *_{ARRAY} is undef');
+
+test_proto '__FILE__';
+test_proto '__LINE__';
+test_proto '__PACKAGE__';
+test_proto '__SUB__';
+
+is file(), 'frob'    , '__FILE__ does check its caller'   ; ++ $tests;
+is line(),  5        , '__LINE__ does check its caller'   ; ++ $tests;
+is pakg(), 'stribble', '__PACKAGE__ does check its caller'; ++ $tests;
+sub __SUB__test { &my__SUB__ }
+is __SUB__test, \&__SUB__test, '&__SUB__';                  ++ $tests;
+
+test_proto 'abs', -5, 5;
+
+test_proto 'accept';
+$tests += 6; eval q{
+  is &CORE::accept(qw{foo bar}), undef, "&accept";
+  lis [&{"CORE::accept"}(qw{foo bar})], [undef], "&accept in list context";
+
+  &myaccept(my $foo, my $bar);
+  is ref $foo, 'GLOB', 'CORE::accept autovivifies its first argument';
+  is $bar, undef, 'CORE::accept does not autovivify its second argument';
+  use strict;
+  undef $foo;
+  eval { 'myaccept'->($foo, $bar) };
+  like $@, qr/^Can't use an undefined value as a symbol reference at/,
+      'CORE::accept will not accept undef 2nd arg under strict';
+  is ref $foo, 'GLOB', 'CORE::accept autovivs its first arg under strict';
+};
+
+test_proto 'alarm';
+test_proto 'atan2';
+
+test_proto 'bind';
+$tests += 3;
+is &CORE::bind('foo', 'bear'), undef, "&bind";
+lis [&CORE::bind('foo', 'bear')], [undef], "&bind in list context";
+eval { &mybind(my $foo, "bear") };
+like $@, qr/^Bad symbol for filehandle at/,
+     'CORE::bind dies with undef first arg';
+
+test_proto 'binmode';
+$tests += 3;
+is &CORE::binmode(qw[foo bar]), undef, "&binmode";
+lis [&CORE::binmode(qw[foo bar])], [undef], "&binmode in list context";
+is &mybinmode(foo), undef, '&binmode with one arg';
+
+test_proto 'bless';
+$tests += 3;
+like &CORE::bless([],'parcel'), qr/^parcel=ARRAY/, "&bless";
+like join(" ", &CORE::bless([],'parcel')),
+     qr/^parcel=ARRAY(?!.* )/, "&bless in list context";
+like &mybless([]), qr/^main=ARRAY/, '&bless with one arg';
+
+test_proto 'break';
+{ $tests ++;
+  my $tmp;
+  CORE::given(1) {
+    CORE::when(1) {
+      &mybreak;
+      $tmp = 'bad';
+    }
+  }
+  is $tmp, undef, '&break';
+}
+
+test_proto 'caller';
+$tests += 4;
+sub caller_test {
+    is scalar &CORE::caller, 'hadhad', '&caller';
+    is scalar &CORE::caller(1), 'main', '&caller(1)';
+    lis [&CORE::caller], [caller], '&caller in list context';
+    # The last element of caller in list context is a hint hash, which
+    # may be a different hash for caller vs &CORE::caller, so an eq com-
+    # parison (which lis() uses for convenience) won’t work.  So just
+    # pop the last element, since the rest are sufficient to prove that
+    # &CORE::caller works.
+    my @ampcaller = &CORE::caller(1);
+    my @caller    = caller(1);
+    pop @ampcaller; pop @caller;
+    lis \@ampcaller, \@caller, '&caller(1) in list context';
+}
+sub {
+   package hadhad;
+   ::caller_test();
+}->();
+
+test_proto 'chmod';
+$tests += 3;
+is &CORE::chmod(), 0, '&chmod with no args';
+is &CORE::chmod(0666), 0, '&chmod';
+lis [&CORE::chmod(0666)], [0], '&chmod in list context';
+
+test_proto 'chown';
+$tests += 4;
+is &CORE::chown(), 0, '&chown with no args';
+is &CORE::chown(1), 0, '&chown with 1 arg';
+is &CORE::chown(1,2), 0, '&chown';
+lis [&CORE::chown(1,2)], [0], '&chown in list context';
+
+test_proto 'chr', 5, "\5";
+test_proto 'chroot';
+
+test_proto 'close';
+{
+  last if is_miniperl;
+  $tests += 3;
+  
+  open my $fh, ">", \my $buffalo;
+  print $fh 'an address in the outskirts of Jersey';
+  ok &CORE::close($fh), '&CORE::close retval';
+  print $fh 'lalala';
+  is $buffalo, 'an address in the outskirts of Jersey',
+     'effect of &CORE::close';
+  # This has to be a separate variable from $fh, as re-using the same
+  # variable can cause the tests to pass by accident.  That actually hap-
+  # pened during developement, because the second close() was reading
+  # beyond the end of the stack and finding a $fh left over from before.
+  open my $fh2, ">", \($buffalo = '');
+  select+(select($fh2), do {
+     print "Nasusiro Tokasoni";
+     &CORE::close();
+     print "jfd";
+     is $buffalo, "Nasusiro Tokasoni", '&CORE::close with no args';
+  })[0];
+}
+lis [&CORE::close('tototootot')], [''], '&close in list context'; ++$tests;
+
+test_proto 'closedir';
+$tests += 2;
+is &CORE::closedir(foo), undef, '&CORE::closedir';
+lis [&CORE::closedir(foo)], [undef], '&CORE::closedir in list context';
+
+test_proto 'connect';
+$tests += 2;
+is &CORE::connect('foo','bar'), undef, '&connect';
+lis [&myconnect('foo','bar')], [undef], '&connect in list context';
+
+test_proto 'continue';
+$tests ++;
+CORE::given(1) {
+  CORE::when(1) {
+    &mycontinue();
+  }
+  pass "&continue";
+}
+
+test_proto 'cos';
+test_proto 'crypt';
+
+test_proto 'dbmclose';
+test_proto 'dbmopen';
+{
+  last unless eval { require AnyDBM_File };
+  $tests ++;
+  my $filename = tempfile();
+  &mydbmopen(\my %db, $filename, 0666);
+  $db{1} = 2; $db{3} = 4;
+  &mydbmclose(\%db);
+  is scalar keys %db, 0, '&dbmopen and &dbmclose';
+}
+
+test_proto 'die';
+eval { dier('quinquangle') };
+is $@, "quinquangle at frob line 6.\n", '&CORE::die'; $tests ++;
+
+test_proto $_ for qw(
+ endgrent endhostent endnetent endprotoent endpwent endservent
+);
+
+test_proto 'evalbytes';
+$tests += 4;
+{
+  chop(my $upgraded = "use utf8; '\xc4\x80'" . chr 256);
+  is &myevalbytes($upgraded), chr 256, '&evalbytes';
+  # Test hints
+  require strict;
+  strict->import;
+  &myevalbytes('
+    is someone, "someone", "run-time hint bits do not leak into &evalbytes"
+  ');
+  use strict;
+  BEGIN { $^H{coreamp} = 42 }
+  $^H{coreamp} = 75;
+  &myevalbytes('
+    BEGIN {
+      is $^H{coreamp}, 42, "compile-time hh propagates into &evalbytes";
+    }
+    ${"frobnicate"}
+  ');
+  like $@, qr/strict/, 'compile-time hint bits propagate into &evalbytes';
+}
+
+test_proto 'exit';
+$tests ++;
+is runperl(prog => '&CORE::exit; END { print qq-ok\n- }'), "ok\n",
+  '&exit with no args';
+
+test_proto 'fork';
+
+test_proto 'formline';
+$tests += 3;
+is &myformline(' @<<< @>>>', 1, 2), 1, '&myformline retval';
+is $^A,        ' 1       2', 'effect of &myformline';
+lis [&myformline('@')], [1], '&myformline in list context';
+
+test_proto 'exp';
+
+test_proto 'fc';
+$tests += 2;
+{
+  my $sharp_s = "\xdf";
+  is &myfc($sharp_s), $sharp_s, '&fc, no unicode_strings';
+  use feature 'unicode_strings';
+  is &myfc($sharp_s), "ss", '&fc, unicode_strings';
+}
+
+test_proto 'fcntl';
+
+test_proto 'fileno';
+$tests += 2;
+is &CORE::fileno(\*STDIN), fileno STDIN, '&CORE::fileno';
+lis [&CORE::fileno(\*STDIN)], [fileno STDIN], '&CORE::fileno in list cx';
+
+test_proto 'flock';
+test_proto 'fork';
+
+test_proto 'getc';
+{
+  last if is_miniperl;
+  $tests += 3;
+  local *STDIN;
+  open my $fh, "<", \(my $buf='falo');
+  open STDIN, "<", \(my $buf2 = 'bison');
+  is &mygetc($fh), 'f', '&mygetc';
+  is &mygetc(), 'b', '&mygetc with no args';
+  lis [&mygetc($fh)], ['a'], '&mygetc in list context';
+}
+
+test_proto "get$_" for qw '
+  grent grgid grnam hostbyaddr hostbyname hostent login netbyaddr netbyname
+  netent peername
+';
+
+test_proto 'getpgrp';
+eval {&mygetpgrp()};
+pass '&getpgrp with no args does not crash'; $tests++;
+
+test_proto "get$_" for qw '
+  ppid priority protobyname protobynumber protoent
+  pwent pwnam pwuid servbyname servbyport servent sockname sockopt
+';
+
+# Make sure the following tests test what we think they are testing.
+ok ! $CORE::{glob}, '*CORE::glob not autovivified yet'; $tests ++;
+{
+  # Make sure ck_glob does not respect the override when &CORE::glob is
+  # autovivified (by test_proto).
+  local *CORE::GLOBAL::glob = sub {};
+  test_proto 'glob';
+}
+$_ = "t/*.t";
+ at _ = &myglob($_);
+is join($", &myglob()), "@_", '&glob without arguments';
+is join($", &myglob("t/*.t")), "@_", '&glob with an arg';
+$tests += 2;
+
+test_proto 'gmtime';
+&CORE::gmtime;
+pass '&gmtime without args does not crash'; ++$tests;
+
+test_proto 'hex', ff=>255;
+
+test_proto 'index';
+$tests += 3;
+is &myindex("foffooo","o",2),4,'&index';
+lis [&myindex("foffooo","o",2)],[4],'&index in list context';
+is &myindex("foffooo","o"),1,'&index with 2 args';
+
+test_proto 'int', 1.5=>1;
+test_proto 'ioctl';
+
+test_proto 'join';
+$tests += 2;
+is &myjoin('a','b','c'), 'bac', '&join';
+lis [&myjoin('a','b','c')], ['bac'], '&join in list context';
+
+test_proto 'kill'; # set up mykill alias
+if ($^O ne 'riscos') {
+    $tests ++;
+    ok( &mykill(0, $$), '&kill' );
+}
+
+test_proto 'lc', 'A', 'a';
+test_proto 'lcfirst', 'AA', 'aA';
+test_proto 'length', 'aaa', 3;
+test_proto 'link';
+test_proto 'listen';
+
+test_proto 'localtime';
+&CORE::localtime;
+pass '&localtime without args does not crash'; ++$tests;
+
+test_proto 'lock';
+$tests += 6;
+is \&mylock(\$foo), \$foo, '&lock retval when passed a scalar ref';
+lis [\&mylock(\$foo)], [\$foo], '&lock in list context';
+is &mylock(\@foo), \@foo, '&lock retval when passed an array ref';
+is &mylock(\%foo), \%foo, '&lock retval when passed a ash ref';
+is &mylock(\&foo), \&foo, '&lock retval when passed a code ref';
+is \&mylock(\*foo), \*foo, '&lock retval when passed a glob ref';
+
+test_proto 'log';
+
+test_proto 'mkdir';
+# mkdir is tested with implicit $_ at the end, to make the test easier
+
+test_proto "msg$_" for qw( ctl get rcv snd );
+
+test_proto 'not';
+$tests += 2;
+is &mynot(1), !1, '&not';
+lis [&mynot(0)], [!0], '&not in list context';
+
+test_proto 'oct', '666', 438;
+
+test_proto 'open';
+$tests += 5;
+$file = 'test.pl';
+ok &myopen('file'), '&open with 1 arg' or warn "1-arg open: $!";
+like <file>, qr|^#|, 'result of &open with 1 arg';
+close file;
+{
+  ok &myopen(my $fh, "test.pl"), 'two-arg &open';
+  ok $fh, '&open autovivifies';
+  like <$fh>, qr '^#', 'result of &open with 2 args';
+  last if is_miniperl;
+  $tests +=2;
+  ok &myopen(my $fh2, "<", \"sharummbles"), 'retval of 3-arg &open';
+  is <$fh2>, 'sharummbles', 'result of three-arg &open';
+}
+
+test_proto 'opendir';
+test_proto 'ord', chr(64), 64;
+
+test_proto 'pack';
+$tests += 2;
+is &mypack("H*", '5065726c'), 'Perl', '&pack';
+lis [&mypack("H*", '5065726c')], ['Perl'], '&pack in list context';
+
+test_proto 'pipe';
+
+test_proto 'pos';
+$tests += 4;
+$_ = "hello";
+pos = 3;
+is &mypos, 3, 'reading &pos without args';
+&mypos = 4;
+is pos, 4, 'writing to &pos without args';
+{
+  my $x = "gubai";
+  pos $x = 3;
+  is &mypos(\$x), 3, 'reading &pos without args';
+  &mypos(\$x) = 4;
+  is pos $x, 4, 'writing to &pos without args';
+}
+
+test_proto 'prototype';
+$tests++;
+is &myprototype(\&myprototype), prototype("CORE::prototype"), '&prototype';
+
+test_proto 'quotemeta', '$', '\$';
+
+test_proto 'rand';
+$tests += 3;
+like &CORE::rand, qr/^0[.\d+-e]*\z/, '&rand';
+unlike join(" ", &CORE::rand), qr/ /, '&rand in list context';
+&cmp_ok(&CORE::rand(78), qw '< 78', '&rand with 1 arg');
+
+test_proto 'read';
+{
+  last if is_miniperl;
+  $tests += 5;
+  open my $fh, "<", \(my $buff = 'morays have their mores');
+  ok &myread($fh, \my $input, 6), '&read with 3 args';
+  is $input, 'morays', 'value read by 3-arg &read';
+  ok &myread($fh, \$input, 6, 6), '&read with 4 args';
+  is $input, 'morays have ', 'value read by 4-arg &read';
+  is +()=&myread($fh, \$input, 6), 1, '&read in list context';
+}
+
+test_proto 'readdir';
+
+test_proto 'readline';
+{
+  local *ARGV = *DATA;
+  $tests ++;
+  is scalar &myreadline,
+    "I wandered lonely as a cloud\n", '&readline w/no args';
+}
+{
+  last if is_miniperl;
+  $tests += 2;
+  open my $fh, "<", \(my $buff = <<END);
+The Recursive Problem
+---------------------
+I have a problem I cannot solve.
+The problem is that I cannot solve it.
+END
+  is &myreadline($fh), "The Recursive Problem\n",
+    '&readline with 1 arg';
+  lis [&myreadline($fh)], [
+       "---------------------\n",
+       "I have a problem I cannot solve.\n",
+       "The problem is that I cannot solve it.\n",
+      ], '&readline in list context';
+}
+
+test_proto 'readlink';
+test_proto 'readpipe';
+test_proto 'recv';
+
+use if !is_miniperl, File::Spec::Functions, qw "catfile";
+use if !is_miniperl, File::Temp, 'tempdir';
+
+test_proto 'rename';
+{
+    last if is_miniperl;
+    $tests ++;
+    my $dir = tempdir(uc cleanup => 1);
+    my $tmpfilenam = catfile $dir, 'aaa';
+    open my $fh, ">", $tmpfilenam or die "cannot open $tmpfilenam: $!";
+    close $fh or die "cannot close $tmpfilenam: $!";
+    &myrename("$tmpfilenam", $tmpfilenam = catfile $dir,'bbb');
+    ok open(my $fh, '>', $tmpfilenam), '&rename';
+}
+
+test_proto 'ref', [], 'ARRAY';
+
+test_proto 'reset';
+$tests += 2;
+my $oncer = sub { "a" =~ m?a? };
+&$oncer;
+&myreset;
+ok &$oncer, '&reset with no args';
+package resettest {
+  $b = "c";
+  $banana = "cream";
+  &::myreset('b');
+  ::lis [$b,$banana],[(undef)x2], '1-arg &reset';
+}
+
+test_proto 'reverse';
+$tests += 2;
+is &myreverse('reward'), 'drawer', '&reverse';
+lis [&myreverse(qw 'dog bites man')], [qw 'man bites dog'],
+  '&reverse in list context';
+
+test_proto 'rewinddir';
+
+test_proto 'rindex';
+$tests += 3;
+is &myrindex("foffooo","o",2),1,'&rindex';
+lis [&myrindex("foffooo","o",2)],[1],'&rindex in list context';
+is &myrindex("foffooo","o"),6,'&rindex with 2 args';
+
+test_proto 'rmdir';
+
+test_proto 'scalar';
+$tests += 2;
+is &myscalar(3), 3, '&scalar';
+lis [&myscalar(3)], [3], '&scalar in list cx';
+
+test_proto 'seek';
+{
+    last if is_miniperl;
+    $tests += 1;
+    open my $fh, "<", \"misled" or die $!;
+    &myseek($fh, 2, 0);
+    is <$fh>, 'sled', '&seek in action';
+}
+
+test_proto 'seekdir';
+
+# Can’t test_proto, as it has none
+$tests += 8;
+*myselect = \&CORE::select;
+is defined prototype &myselect, defined prototype "CORE::select",
+   'prototype of &select (or lack thereof)';
+is &myselect, select, '&select with no args';
+{
+  my $prev = select;
+  is &myselect(my $fh), $prev, '&select($arg) retval';
+  is lc ref $fh, 'glob', '&select autovivifies';
+  is select=~s/\*//rug, (*$fh."")=~s/\*//rug, '&select selects';
+  select $prev;
+}
+eval { &myselect(1,2) };
+like $@, qr/^Not enough arguments for select system call at /,
+      ,'&myselect($two,$args)';
+eval { &myselect(1,2,3) };
+like $@, qr/^Not enough arguments for select system call at /,
+      ,'&myselect($with,$three,$args)';
+eval { &myselect(1,2,3,4,5) };
+like $@, qr/^Too many arguments for select system call at /,
+      ,'&myselect($a,$total,$of,$five,$args)';
+&myselect((undef)x3,.25);
+# Just have to assume that worked. :-) If we get here, at least it didn’t
+# crash or anything.
+
+test_proto "sem$_" for qw "ctl get op";
+
+test_proto 'send';
+
+test_proto "set$_" for qw '
+  grent hostent netent
+';
+
+test_proto 'setpgrp';
+$tests +=2;
+eval { &mysetpgrp( 0) };
+pass "&setpgrp with one argument";
+eval { &mysetpgrp };
+pass "&setpgrp with no arguments";
+
+test_proto "set$_" for qw '
+  priority protoent pwent servent sockopt
+';
+
+test_proto "shm$_" for qw "ctl get read write";
+test_proto 'shutdown';
+test_proto 'sin';
+test_proto 'sleep';
+test_proto "socket$_" for "", "pair";
+
+test_proto 'sprintf';
+$tests += 2;
+is &mysprintf("%x", 65), '41', '&sprintf';
+lis [&mysprintf("%x", '65')], ['41'], '&sprintf in list context';
+
+test_proto 'sqrt', 4, 2;
+
+test_proto 'srand';
+$tests ++;
+&CORE::srand;
+() = &CORE::srand;
+pass '&srand with no args does not crash';
+
+test_proto 'study';
+
+test_proto 'substr';
+$tests += 5;
+$_ = "abc";
+is &mysubstr($_, 1, 1, "d"), 'b', '4-arg &substr';
+is $_, 'adc', 'what 4-arg &substr does';
+is &mysubstr("abc", 1, 1), 'b', '3-arg &substr';
+is &mysubstr("abc", 1), 'bc', '2-arg &substr';
+&mysubstr($_, 1) = 'long';
+is $_, 'along', 'lvalue &substr';
+
+test_proto 'symlink';
+test_proto 'syscall';
+
+test_proto 'sysopen';
+$tests +=2;
+{
+  &mysysopen(my $fh, 'test.pl', 0);
+  pass '&sysopen does not crash with 3 args';
+  ok $fh, 'sysopen autovivifies';
+}
+
+test_proto 'sysread';
+test_proto 'sysseek';
+test_proto 'syswrite';
+
+test_proto 'tell';
+{
+  $tests += 2;
+  open my $fh, "test.pl" or die "Cannot open test.pl";
+  <$fh>;
+  is &mytell(), tell($fh), '&tell with no args';
+  is &mytell($fh), tell($fh), '&tell with an arg';
+}
+
+test_proto 'telldir';
+
+test_proto 'tie';
+test_proto 'tied';
+$tests += 3;
+{
+  my $fetches;
+  package tier {
+    sub TIESCALAR { bless[] }
+    sub FETCH { ++$fetches }
+  }
+  my $tied;
+  my $obj = &mytie(\$tied, 'tier');
+  is &mytied(\$tied), $obj, '&tie and &tied retvals';
+  () = "$tied";
+  is $fetches, 1, '&tie actually ties';
+  &CORE::untie(\$tied);
+  () = "$tied";
+  is $fetches, 1, '&untie unties';
+}
+
+test_proto 'time';
+$tests += 2;
+like &mytime, '^\d+\z', '&time in scalar context';
+like join('-', &mytime), '^\d+\z', '&time in list context';
+
+test_proto 'times';
+$tests += 2;
+like &mytimes, '^[\d.]+\z', '&times in scalar context';
+like join('-',&mytimes), '^[\d.]+-[\d.]+-[\d.]+-[\d.]+\z',
+   '&times in list context';
+
+test_proto 'uc', 'aa', 'AA';
+test_proto 'ucfirst', 'aa', "Aa";
+
+test_proto 'umask';
+$tests ++;
+is &myumask, umask, '&umask with no args';
+
+test_proto 'undef';
+$tests += 12;
+is &myundef(), undef, '&undef returns undef';
+lis [&myundef()], [undef], '&undef returns undef in list cx';
+lis [&myundef(\$_)], [undef], '&undef(...) returns undef in list cx';
+is \&myundef(), \undef, '&undef returns the right undef';
+$_ = 'anserine questions';
+&myundef(\$_);
+is $_, undef, '&undef(\$_) undefines $_';
+ at _ = 1..3;
+&myundef(\@_);
+is @_, 0, '&undef(\@_) undefines @_';
+%_ = 1..4;
+&myundef(\%_);
+ok !%_, '&undef(\%_) undefines %_';
+&myundef(\&utf8::valid); # nobody should be using this :-)
+ok !defined &utf8::valid, '&undef(\&foo) undefines &foo';
+ at _ = \*_;
+&myundef;
+is *_{ARRAY}, undef, '@_=\*_, &undef undefines *_';
+ at _ = \*_;
+&myundef(\*_);
+is *_{ARRAY}, undef, '&undef(\*_) undefines *_';
+(&myundef(), @_) = 1..10;
+lis \@_, [2..10], 'list assignment to &undef()';
+ok !defined undef, 'list assignment to &undef() does not affect undef'; 
+undef @_;
+
+test_proto 'unpack';
+$tests += 2;
+$_ = 'abcd';
+is &myunpack("H*"), '61626364', '&unpack with one arg';
+is &myunpack("H*", "bcde"), '62636465', '&unpack with two arg';
+
+
+test_proto 'untie'; # behaviour already tested along with tie(d)
+
+test_proto 'utime';
+$tests += 2;
+is &myutime(undef,undef), 0, '&utime';
+lis [&myutime(undef,undef)], [0], '&utime in list context';
+
+test_proto 'vec';
+$tests += 3;
+is &myvec("foo", 0, 4), 6, '&vec';
+lis [&myvec("foo", 0, 4)], [6], '&vec in list context';
+$tmp = "foo";
+++&myvec($tmp,0,4);
+is $tmp, "goo", 'lvalue &vec';
+
+test_proto 'wait';
+test_proto 'waitpid';
+
+test_proto 'wantarray';
+$tests += 4;
+my $context;
+my $cx_sub = sub {
+  $context = qw[void scalar list][&mywantarray + defined mywantarray()]
+};
+() = &$cx_sub;
+is $context, 'list', '&wantarray with caller in list context';
+scalar &$cx_sub;
+is($context, 'scalar', '&wantarray with caller in scalar context');
+&$cx_sub;
+is($context, 'void', '&wantarray with caller in void context');
+lis [&mywantarray],[wantarray], '&wantarray itself in list context';
+
+test_proto 'warn';
+{ $tests += 3;
+  my $w;
+  local $SIG{__WARN__} = sub { $w = shift };
+  is &mywarn('a'), 1, '&warn retval';
+  is $w, "a at " . __FILE__ . " line " . (__LINE__-1) . ".\n", 'warning';
+  lis [&mywarn()], [1], '&warn retval in list context';
+}
+
+test_proto 'write';
+$tests ++;
+eval {&mywrite};
+like $@, qr'^Undefined format "STDOUT" called',
+   "&write without arguments can handle the null";
+
+# This is just a check to make sure we have tested everything.  If we
+# haven’t, then either the sub needs to be tested or the list in
+# gv.c is wrong.
+{
+  last if is_miniperl;
+  require File::Spec::Functions;
+  my $keywords_file =
+   File::Spec::Functions::catfile(
+      File::Spec::Functions::updir,'regen','keywords.pl'
+   );
+  open my $kh, $keywords_file
+    or die "$0 cannot open $keywords_file: $!";
+  while(<$kh>) {
+    if (m?__END__?..${\0} and /^[-+](.*)/) {
+      my $word = $1;
+      next if
+       $word =~ /^(?:s(?:tate|ort|ay|ub)?|d(?:ef
+                  ault|ump|o)|p(?:rintf?|ackag
+                  e)|e(?:ls(?:if|e)|val|q)|g(?:[et]|iven|oto
+                  |rep)|u(?:n(?:less|til)|se)|l(?:(?:as)?t|ocal|e)|re
+                  (?:quire|turn|do)|__(?:DATA|END)__|for(?:each|mat)?|(?:
+                  AUTOLOA|EN)D|n(?:e(?:xt)?|o)|C(?:HECK|ORE)|wh(?:ile|en)
+                  |(?:ou?|t)r|m(?:ap|y)?|UNITCHECK|q[qrwx]?|x(?:or)?|DEST
+                  ROY|BEGIN|INIT|and|cmp|if|y)\z/x;
+      $tests ++;
+      ok   exists &{"my$word"}
+        || (eval{&{"CORE::$word"}}, $@ =~ /cannot be called directly/),
+     "$word either has been tested or is not ampable";
+    }
+  }
+}
+
+# Add new tests above this line.
+
+# This test must come last (before the test count test):
+
+{
+  last if is_miniperl;
+  require Cwd;
+  import Cwd;
+  $tests += 3;
+  require File::Temp ;
+  my $dir = File::Temp::tempdir(uc cleanup => 1);
+  my $cwd = cwd();
+  chdir($dir);
+
+  # Make sure that implicit $_ is not applied to mkdir’s second argument.
+  local $^W = 1;
+  my $warnings;
+  local $SIG{__WARN__} = sub { ++$warnings };
+
+  no warnings 'experimental::lexical_topic';
+  my $_ = 'Phoo';
+  ok &mymkdir(), '&mkdir';
+  like <*>, qr/^phoo(.DIR)?\z/i, 'mkdir works with implicit $_';
+
+  is $warnings, undef, 'no implicit $_ for second argument to mkdir';
+
+  chdir($cwd); # so auto-cleanup can remove $dir
+}
+
+# ------------ END TESTING ----------- #
+
+done_testing $tests;
+
+#line 3 frob
+
+sub file { &CORE::__FILE__ }
+sub line { &CORE::__LINE__ } # 5
+sub dier { &CORE::die(@_)  } # 6
+package stribble;
+sub main::pakg { &CORE::__PACKAGE__ }
+
+# Please do not add new tests here.
+package main;
+CORE::__DATA__
+I wandered lonely as a cloud
+That floats on high o’er vales and hills,
+And all at once I saw a crowd, 
+A host of golden daffodils!
+Beside the lake, beneath the trees,
+Fluttering, dancing, in the breeze.
+-- Wordsworth

Added: vendor/perl/dist/t/op/coresubs.t
===================================================================
--- vendor/perl/dist/t/op/coresubs.t	                        (rev 0)
+++ vendor/perl/dist/t/op/coresubs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,155 @@
+#!./perl
+
+# This script tests the inlining and prototype of CORE:: subs.  Any generic
+# tests that are not specific to &foo-style calls should go in this
+# file, too.
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = qw(. ../lib);
+    require "test.pl";
+    skip_all_without_dynamic_extension('B');
+    $^P |= 0x100;
+}
+
+use B::Deparse;
+my $bd = new B::Deparse '-p';
+
+my %unsupported = map +($_=>1), qw (
+ __DATA__ __END__ AUTOLOAD BEGIN UNITCHECK CORE DESTROY END INIT CHECK and
+  cmp default do dump else elsif eq eval for foreach
+  format ge given goto grep gt if last le local lt m map my ne next
+  no  or  our  package  print  printf  q  qq  qr  qw  qx  redo  require
+  return s say sort state sub tr unless until use
+  when while x xor y
+);
+my %args_for = (
+  dbmopen  => '%1,$2,$3',
+  dbmclose => '%1',
+  delete   => '$1[2]',
+  exists   => '$1[2]',
+);
+my %desc = (
+  pos => 'match position',
+);
+
+use File::Spec::Functions;
+my $keywords_file = catfile(updir,'regen','keywords.pl');
+open my $kh, $keywords_file
+   or die "$0 cannot open $keywords_file: $!";
+while(<$kh>) {
+  if (m?__END__?..${\0} and /^[+-]/) {
+    chomp(my $word = $');
+    if($unsupported{$word}) {
+      $tests ++;
+      ok !defined &{"CORE::$word"}, "no CORE::$word";
+    }
+    else {
+      $tests += 4;
+
+      ok defined &{"CORE::$word"}, "defined &{'CORE::$word'}";
+
+      my $proto = prototype "CORE::$word";
+      *{"my$word"} = \&{"CORE::$word"};
+      is prototype \&{"my$word"}, $proto, "prototype of &CORE::$word";
+
+      CORE::state $protochar = qr/([^\\]|\\(?:[^[]|\[[^]]+\]))/;
+      my $numargs =
+            $word eq 'delete' || $word eq 'exists' ? 1 :
+            (() = $proto =~ s/;.*//r =~ /\G$protochar/g);
+      my $code =
+         "#line 1 This-line-makes-__FILE__-easier-to-test.
+          sub { () = (my$word("
+             . ($args_for{$word} || join ",", map "\$$_", 1..$numargs)
+       . "))}";
+      my $core = $bd->coderef2text(eval $code =~ s/my/CORE::/r or die);
+      my $my   = $bd->coderef2text(eval $code or die);
+      is $my, $core, "inlinability of CORE::$word with parens";
+
+      $code =
+         "#line 1 This-line-makes-__FILE__-easier-to-test.
+          sub { () = (my$word "
+             . ($args_for{$word} || join ",", map "\$$_", 1..$numargs)
+       . ")}";
+      $core = $bd->coderef2text(eval $code =~ s/my/CORE::/r or die);
+      $my   = $bd->coderef2text(eval $code or die);
+      is $my, $core, "inlinability of CORE::$word without parens";
+
+      # High-precedence tests
+      my $hpcode;
+      if (!$proto && defined $proto) { # nullary
+         $hpcode = "sub { () = my$word + 1 }";
+      }
+      elsif ($proto =~ /^;?$protochar\z/) { # unary
+         $hpcode = "sub { () = my$word "
+                           . ($args_for{$word}||'$a') . ' > $b'
+                       .'}';
+      }
+      if ($hpcode) {
+         $tests ++;
+         $core = $bd->coderef2text(eval $hpcode =~ s/my/CORE::/r or die);
+         $my   = $bd->coderef2text(eval $hpcode or die);
+         is $my, $core, "precedence of CORE::$word without parens";
+      }
+
+      next if ($proto =~ /\@/);
+      # These ops currently accept any number of args, despite their
+      # prototypes, if they have any:
+      next if $word =~ /^(?:chom?p|exec|keys|each|not
+                           |(?:prototyp|read(?:lin|pip))e
+                           |reset|system|values|l?stat)|evalbytes/x;
+
+      $tests ++;
+      $code =
+         "sub { () = (my$word("
+             . (
+                $args_for{$word}
+                 ? $args_for{$word}.',$7'
+                 : join ",", map "\$$_", 1..$numargs+5+(
+                      $proto =~ /;/
+                       ? () = $' =~ /\G$protochar/g
+                       : 0
+                   )
+               )
+       . "))}";
+      eval $code;
+      my $desc = $desc{$word} || $word;
+      like $@, qr/^Too many arguments for $desc/,
+          "inlined CORE::$word with too many args"
+        or warn $code;
+
+    }
+  }
+}
+
+$tests++;
+# This subroutine is outside the warnings scope:
+sub foo { goto &CORE::abs }
+use warnings;
+$SIG{__WARN__} = sub { like shift, qr\^Use of uninitialized\ };
+foo(undef);
+
+$tests+=2;
+is runperl(prog => 'print CORE->lc, qq-\n-'), "core\n",
+ 'methods calls autovivify coresubs';
+is runperl(prog => '@ISA=CORE; print main->uc, qq-\n-'), "MAIN\n",
+ 'inherted method calls autovivify coresubs';
+
+{ # RT #117607
+  $tests++;
+  like runperl(prog => '$foo/; \&CORE::lc', stderr => 1),
+    qr/^syntax error/, "RT #117607: \\&CORE::foo doesn't crash in error context";
+}
+
+$tests++;
+ok eval { *CORE::exit = \42 },
+  '[rt.cpan.org #74289] *CORE::foo is not accidentally made read-only';
+
+ at UNIVERSAL::ISA = CORE;
+is "just another "->ucfirst . "perl hacker,\n"->ucfirst,
+   "Just another Perl hacker,\n", 'coresubs do not return TARG';
+++$tests;
+
+done_testing $tests;
+
+CORE::__END__

Added: vendor/perl/dist/t/op/current_sub.t
===================================================================
--- vendor/perl/dist/t/op/current_sub.t	                        (rev 0)
+++ vendor/perl/dist/t/op/current_sub.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = qw(../lib);
+    require './test.pl';
+    plan (tests => 17);
+}
+
+is __SUB__, "__SUB__", '__SUB__ is a bareword outside of use feature';
+
+{
+    use v5.15;
+    is __SUB__, undef, '__SUB__ under use v5.16';
+}
+
+use feature 'current_sub';
+
+is __SUB__, undef, '__SUB__ returns undef outside of a subroutine';
+is +()=__SUB__, 1, '__SUB__ returns undef in list context';
+
+sub foo { __SUB__ }
+is foo, \&foo, '__SUB__ inside a named subroutine';
+is foo->(), \&foo, '__SUB__ is callable';
+is ref foo, 'CODE', '__SUB__ is a code reference';
+
+my $subsub = sub { __SUB__ };
+is &$subsub, $subsub, '__SUB__ inside anonymous non-closure';
+
+my @subsubs;
+for my $x(1..3) {
+  push @subsubs, sub { return $x if @_; __SUB__ };
+}
+# Don’t loop here; we need to avoid interactions between the iterator
+# and the closure.
+is $subsubs[0]()(0), 1, '__SUB__ inside closure (1)';
+is $subsubs[1]()(0), 2, '__SUB__ inside closure (2)';
+is $subsubs[2]()(0), 3, '__SUB__ inside closure (3)';
+
+BEGIN {
+    return "begin 1" if @_;
+    is CORE::__SUB__->(0), "begin 1", 'in BEGIN block'
+}
+BEGIN {
+    return "begin 2" if @_;
+    is &CORE::__SUB__->(0), "begin 2", 'in BEGIN block via & (unoptimised)'
+}
+
+sub bar;
+sub bar {
+    () = sort {
+          is  CORE::__SUB__, \&bar,   'in sort block in sub with forw decl'
+         } 1,2;
+}
+bar();
+sub bur;
+sub bur {
+    () = sort {
+          is &CORE::__SUB__, \&bur, '& in sort block in sub with forw decl'
+         } 1,2;
+}
+bur();
+
+sub squog;
+sub squog {
+    grep { is  CORE::__SUB__, \&squog,
+          'in grep block in sub with forw decl'
+    } 1;
+}
+squog();
+sub squag;
+sub squag {
+    grep { is &CORE::__SUB__, \&squag,
+          '& in grep block in sub with forw decl'
+    } 1;
+}
+squag();

Added: vendor/perl/dist/t/op/defined.t
===================================================================
--- vendor/perl/dist/t/op/defined.t	                        (rev 0)
+++ vendor/perl/dist/t/op/defined.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,20 @@
+#!perl
+BEGIN {
+    chdir 't';
+    require './test.pl';
+}
+
+plan 5;
+
+sub notdef { undef }
+
+# [perl #97466]
+# These should actually call the sub, instead of testing the sub itself
+ok !defined do { &notdef }, 'defined do { &sub }';
+ok !defined(scalar(42,&notdef)), 'defined(scalar(42,&sub))';
+ok !defined do{();&notdef}, '!defined do{();&sub}';
+
+# Likewise, these should evaluate @array in scalar context
+no warnings "deprecated";
+ok defined($false ? $scalar : @array), 'defined( ... ? ... : @array)';
+ok defined(scalar @array), 'defined(scalar @array)';

Added: vendor/perl/dist/t/op/evalbytes.t
===================================================================
--- vendor/perl/dist/t/op/evalbytes.t	                        (rev 0)
+++ vendor/perl/dist/t/op/evalbytes.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+plan(tests => 8);
+
+{
+    local $SIG{__WARN__} = sub {};
+    eval "evalbytes 'foo'";
+    like $@, qr/syntax error/, 'evalbytes outside feature scope';
+}
+
+# We enable unicode_eval just to test that it does not interfere.
+use feature 'evalbytes', 'unicode_eval';
+
+is evalbytes("1+7"), 8, 'evalbytes basic sanity check';
+
+my $code = qq('\xff\xfe');
+is evalbytes($code), "\xff\xfe", 'evalbytes on extra-ASCII bytes';
+chop((my $upcode = $code) .= chr 256);
+is evalbytes($upcode), "\xff\xfe", 'evalbytes on upgraded extra-ASCII';
+{
+    use utf8;
+    is evalbytes($code), "\xff\xfe", 'evalbytes ignores outer utf8 pragma';
+}
+is evalbytes "use utf8; '\xc4\x80'", chr 256, 'use utf8 within evalbytes';
+chop($upcode = "use utf8; '\xc4\x80'" . chr 256);
+is evalbytes $upcode, chr 256, 'use utf8 within evalbytes on utf8 string';
+eval { evalbytes chr 256 };
+like $@, qr/Wide character/, 'evalbytes croaks on non-bytes';

Added: vendor/perl/dist/t/op/for.t
===================================================================
--- vendor/perl/dist/t/op/for.t	                        (rev 0)
+++ vendor/perl/dist/t/op/for.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,564 @@
+#!./perl
+
+BEGIN {
+    require "test.pl";
+}
+
+plan(104);
+
+# A lot of tests to check that reversed for works.
+
+ at array = ('A', 'B', 'C');
+for (@array) {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array');
+$r = '';
+for (1,2,3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list');
+$r = '';
+for (map {$_} @array) {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array via map');
+$r = '';
+for (map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list via map');
+$r = '';
+for (1 .. 3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list via ..');
+$r = '';
+for ('A' .. 'C') {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via ..');
+
+$r = '';
+for (reverse @array) {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array');
+$r = '';
+for (reverse 1,2,3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list');
+$r = '';
+for (reverse map {$_} @array) {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array via map');
+$r = '';
+for (reverse map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list via map');
+$r = '';
+for (reverse 1 .. 3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list via ..');
+$r = '';
+for (reverse 'A' .. 'C') {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for list via ..');
+
+$r = '';
+for my $i (@array) {
+    $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for array with var');
+$r = '';
+for my $i (1,2,3) {
+    $r .= $i;
+}
+is ($r, '123', 'Forwards for list with var');
+$r = '';
+for my $i (map {$_} @array) {
+    $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for array via map with var');
+$r = '';
+for my $i (map {$_} 1,2,3) {
+    $r .= $i;
+}
+is ($r, '123', 'Forwards for list via map with var');
+$r = '';
+for my $i (1 .. 3) {
+    $r .= $i;
+}
+is ($r, '123', 'Forwards for list via .. with var');
+$r = '';
+for my $i ('A' .. 'C') {
+    $r .= $i;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var');
+
+$r = '';
+for my $i (reverse @array) {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array with var');
+$r = '';
+for my $i (reverse 1,2,3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list with var');
+$r = '';
+for my $i (reverse map {$_} @array) {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array via map with var');
+$r = '';
+for my $i (reverse map {$_} 1,2,3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list via map with var');
+$r = '';
+for my $i (reverse 1 .. 3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with var');
+$r = '';
+for my $i (reverse 'A' .. 'C') {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var');
+
+# For some reason the generate optree is different when $_ is implicit.
+$r = '';
+for $_ (@array) {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array with explicit $_');
+$r = '';
+for $_ (1,2,3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list with explicit $_');
+$r = '';
+for $_ (map {$_} @array) {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for array via map with explicit $_');
+$r = '';
+for $_ (map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list via map with explicit $_');
+$r = '';
+for $_ (1 .. 3) {
+    $r .= $_;
+}
+is ($r, '123', 'Forwards for list via .. with var with explicit $_');
+$r = '';
+for $_ ('A' .. 'C') {
+    $r .= $_;
+}
+is ($r, 'ABC', 'Forwards for list via .. with var with explicit $_');
+
+$r = '';
+for $_ (reverse @array) {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array with explicit $_');
+$r = '';
+for $_ (reverse 1,2,3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list with explicit $_');
+$r = '';
+for $_ (reverse map {$_} @array) {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for array via map with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3) {
+    $r .= $_;
+}
+is ($r, '321', 'Reverse for list via .. with var with explicit $_');
+$r = '';
+for $_ (reverse 'A' .. 'C') {
+    $r .= $_;
+}
+is ($r, 'CBA', 'Reverse for list via .. with var with explicit $_');
+
+# I don't think that my is that different from our in the optree. But test a
+# few:
+$r = '';
+for our $i (reverse @array) {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array with our var');
+$r = '';
+for our $i (reverse 1,2,3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list with our var');
+$r = '';
+for our $i (reverse map {$_} @array) {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for array via map with our var');
+$r = '';
+for our $i (reverse map {$_} 1,2,3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list via map with our var');
+$r = '';
+for our $i (reverse 1 .. 3) {
+    $r .= $i;
+}
+is ($r, '321', 'Reverse for list via .. with our var');
+$r = '';
+for our $i (reverse 'A' .. 'C') {
+    $r .= $i;
+}
+is ($r, 'CBA', 'Reverse for list via .. with our var');
+
+
+$r = '';
+for (1, reverse @array) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array with leading value');
+$r = '';
+for ('A', reverse 1,2,3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list with leading value');
+$r = '';
+for (1, reverse map {$_} @array) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array via map with leading value');
+$r = '';
+for ('A', reverse map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value');
+$r = '';
+for ('A', reverse 1 .. 3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value');
+$r = '';
+for (1, reverse 'A' .. 'C') {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value');
+
+$r = '';
+for (reverse (@array), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value');
+$r = '';
+for (reverse (1,2,3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A', 'Reverse for list with trailing value');
+$r = '';
+for (reverse (map {$_} @array), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array via map with trailing value');
+$r = '';
+for (reverse (map {$_} 1,2,3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via map with trailing value');
+$r = '';
+for (reverse (1 .. 3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value');
+$r = '';
+for (reverse ('A' .. 'C'), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value');
+
+
+$r = '';
+for $_ (1, reverse @array) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse 1,2,3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list with leading value with explicit $_');
+$r = '';
+for $_ (1, reverse map {$_} @array) {
+    $r .= $_;
+}
+is ($r, '1CBA',
+    'Reverse for array via map with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse map {$_} 1,2,3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value with explicit $_');
+$r = '';
+for $_ ('A', reverse 1 .. 3) {
+    $r .= $_;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value with explicit $_');
+$r = '';
+for $_ (1, reverse 'A' .. 'C') {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value with explicit $_');
+
+$r = '';
+for $_ (reverse (@array), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (1,2,3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A', 'Reverse for list with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} @array), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1',
+    'Reverse for array via map with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} 1,2,3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A',
+    'Reverse for list via map with trailing value with explicit $_');
+$r = '';
+for $_ (reverse (1 .. 3), 'A') {
+    $r .= $_;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value with explicit $_');
+$r = '';
+for $_ (reverse ('A' .. 'C'), 1) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value with explicit $_');
+
+$r = '';
+for my $i (1, reverse @array) {
+    $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array with leading value and var');
+$r = '';
+for my $i ('A', reverse 1,2,3) {
+    $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list with leading value and var');
+$r = '';
+for my $i (1, reverse map {$_} @array) {
+    $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array via map with leading value and var');
+$r = '';
+for my $i ('A', reverse map {$_} 1,2,3) {
+    $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list via map with leading value and var');
+$r = '';
+for my $i ('A', reverse 1 .. 3) {
+    $r .= $i;
+}
+is ($r, 'A321', 'Reverse for list via .. with leading value and var');
+$r = '';
+for my $i (1, reverse 'A' .. 'C') {
+    $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for list via .. with leading value and var');
+
+$r = '';
+for my $i (reverse (@array), 1) {
+    $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for array with trailing value and var');
+$r = '';
+for my $i (reverse (1,2,3), 'A') {
+    $r .= $i;
+}
+is ($r, '321A', 'Reverse for list with trailing value and var');
+$r = '';
+for my $i (reverse (map {$_} @array), 1) {
+    $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for array via map with trailing value and var');
+$r = '';
+for my $i (reverse (map {$_} 1,2,3), 'A') {
+    $r .= $i;
+}
+is ($r, '321A', 'Reverse for list via map with trailing value and var');
+$r = '';
+for my $i (reverse (1 .. 3), 'A') {
+    $r .= $i;
+}
+is ($r, '321A', 'Reverse for list via .. with trailing value and var');
+$r = '';
+for my $i (reverse ('A' .. 'C'), 1) {
+    $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for list via .. with trailing value and var');
+
+
+$r = '';
+for (reverse 1, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array');
+$r = '';
+for (reverse map {$_} 1, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map');
+$r = '';
+for (reverse 1 .. 3, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array');
+$r = '';
+for (reverse 'X' .. 'Z', @array) {
+    $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array');
+$r = '';
+for (reverse map {$_} 1 .. 3, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map');
+$r = '';
+for (reverse map {$_} 'X' .. 'Z', @array) {
+    $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map');
+
+$r = '';
+for (reverse (@array, 1)) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value');
+$r = '';
+for (reverse (map {$_} @array, 1)) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value via map');
+
+$r = '';
+for $_ (reverse 1, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map with explicit $_');
+$r = '';
+for $_ (reverse 1 .. 3, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse 'X' .. 'Z', @array) {
+    $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 1 .. 3, @array) {
+    $r .= $_;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with explicit $_');
+$r = '';
+for $_ (reverse map {$_} 'X' .. 'Z', @array) {
+    $r .= $_;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with explicit $_');
+
+$r = '';
+for $_ (reverse (@array, 1)) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value with explicit $_');
+$r = '';
+for $_ (reverse (map {$_} @array, 1)) {
+    $r .= $_;
+}
+is ($r, '1CBA', 'Reverse for array and value via map with explicit $_');
+
+
+$r = '';
+for my $i (reverse 1, @array) {
+    $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for value and array with var');
+$r = '';
+for my $i (reverse map {$_} 1, @array) {
+    $r .= $i;
+}
+is ($r, 'CBA1', 'Reverse for value and array via map with var');
+$r = '';
+for my $i (reverse 1 .. 3, @array) {
+    $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse 'X' .. 'Z', @array) {
+    $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array with var');
+$r = '';
+for my $i (reverse map {$_} 1 .. 3, @array) {
+    $r .= $i;
+}
+is ($r, 'CBA321', 'Reverse for .. and array via map with var');
+$r = '';
+for my $i (reverse map {$_} 'X' .. 'Z', @array) {
+    $r .= $i;
+}
+is ($r, 'CBAZYX', 'Reverse for .. and array via map with var');
+
+$r = '';
+for my $i (reverse (@array, 1)) {
+    $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array and value with var');
+$r = '';
+for my $i (reverse (map {$_} @array, 1)) {
+    $r .= $i;
+}
+is ($r, '1CBA', 'Reverse for array and value via map with var');
+
+TODO: {
+    if (do {17; foreach (1, 2) { 1; } } != 17) {
+        #print "not ";
+	todo_skip("RT #1085: what should be output of perl -we 'print do { foreach (1, 2) { 1; } }'");
+     }
+}
+
+TODO: {
+    local $TODO = "RT #2166: foreach spuriously autovivifies";
+    my %h;
+    foreach (@h{a, b}) {}
+    if(keys(%h)) {
+        todo_skip("RT #2166: foreach spuriously autovivifies");
+    }
+}

Added: vendor/perl/dist/t/op/fresh_perl_utf8.t
===================================================================
--- vendor/perl/dist/t/op/fresh_perl_utf8.t	                        (rev 0)
+++ vendor/perl/dist/t/op/fresh_perl_utf8.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,21 @@
+#!./perl
+
+#This file is intentionally written in UTF-8
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+plan 1;
+
+use utf8;
+use strict;
+use open qw( :utf8 :std );
+
+{
+    local $@;
+    eval 'sub testme { my $ᨕ = "test"; { local $ᨕ = "new test"; print $ᨕ } }';
+    like( $@, qr/Can't localize lexical variable \$ᨕ at /u, q!"Can't localize lexical" error is in UTF-8! );
+}

Added: vendor/perl/dist/t/op/hash-rt85026.t
===================================================================
--- vendor/perl/dist/t/op/hash-rt85026.t	                        (rev 0)
+++ vendor/perl/dist/t/op/hash-rt85026.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,69 @@
+#!/usr/bin/perl -w
+
+BEGIN {
+  chdir 't';
+  @INC = '../lib';
+  require './test.pl';
+  skip_all_without_dynamic_extension("Devel::Peek");
+}
+
+use strict;
+use Devel::Peek;
+use File::Temp qw(tempdir);
+use File::Spec;
+
+my %hash = map +($_ => 1), ("a".."z");
+
+my $tmp_dir = tempdir(CLEANUP => 1);
+my $tmp_file = File::Spec->catfile($tmp_dir, 'dump');
+
+sub riter {
+    local *OLDERR;
+    open(OLDERR, ">&STDERR") || die "Can't dup STDERR: $!";
+    open(STDERR, ">", $tmp_file) ||
+        die "Could not open '$tmp_file' for write: $^E";
+    Dump(\%hash);
+    open(STDERR, ">&OLDERR") || die "Can't dup OLDERR: $!";
+    open(my $fh, "<", $tmp_file) ||
+        die "Could not open '$tmp_file' for read: $^E";
+    local $/;
+    my $dump = <$fh>;
+    my ($riter) = $dump =~ /^\s*RITER\s*=\s*(\d+)/m or
+        die "No plain RITER in dump '$dump'";
+    return $riter;
+}
+
+my @riters;
+while (my $key = each %hash) {
+    push @{$riters[riter()]}, $key;
+}
+
+my ($first_key, $second_key);
+my $riter = 0;
+for my $chain (@riters) {
+    if ($chain && @$chain >= 2) {
+        $first_key  = $chain->[0];
+        $second_key = $chain->[1];
+        last;
+    }
+    $riter++;
+}
+$first_key ||
+    skip_all "No 2 element chains; need a different initial HASH";
+$| = 1;
+
+plan(1);
+
+# Ok all preparation is done
+note <<"EOF"
+Found keys '$first_key' and '$second_key' on chain $riter
+Will now iterato to key '$first_key' then delete '$first_key' and '$second_key'.
+EOF
+;
+1 until $first_key eq each %hash;
+delete $hash{$first_key};
+delete $hash{$second_key};
+
+note "Now iterating into freed memory\n";
+1 for each %hash;
+ok(1, "Survived!");

Added: vendor/perl/dist/t/op/heredoc.t
===================================================================
--- vendor/perl/dist/t/op/heredoc.t	                        (rev 0)
+++ vendor/perl/dist/t/op/heredoc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,85 @@
+# tests for heredocs besides what is tested in base/lex.t
+
+BEGIN {
+   chdir 't' if -d 't';
+   @INC = '../lib';
+   require './test.pl';
+}
+
+use strict;
+plan(tests => 9);
+
+
+# heredoc without newline (#65838)
+{
+    my $string = <<'HEREDOC';
+testing for 65838
+HEREDOC
+
+    my $code = "<<'HEREDOC';\n${string}HEREDOC";  # HD w/o newline, in eval-string
+    my $hd = eval $code or warn "$@ ---";
+    is($hd, $string, "no terminating newline in string-eval");
+}
+
+
+# here-doc edge cases
+{
+    my $string = "testing for 65838";
+
+    fresh_perl_is(
+        "print <<'HEREDOC';\n${string}\nHEREDOC",
+        $string,
+        {},
+        "heredoc at EOF without trailing newline"
+    );
+
+    fresh_perl_is(
+        "print <<;\n$string\n",
+        $string,
+        { switches => ['-X'] },
+        "blank-terminated heredoc at EOF"
+    );
+    fresh_perl_is(
+        "print <<\n$string\n",
+        $string,
+        { switches => ['-X'] },
+        "blank-terminated heredoc at EOF and no semicolon"
+    );
+    fresh_perl_is(
+        "print <<foo\r\nick and queasy\r\nfoo\r\n",
+        'ick and queasy',
+        { switches => ['-X'] },
+        "crlf-terminated heredoc"
+    );
+    fresh_perl_is(
+        "print qq|\${\\<<foo}|\nick and queasy\nfoo\n",
+        'ick and queasy',
+        { switches => ['-w'], stderr => 1 },
+        'no warning for qq|${\<<foo}| in file'
+    );
+}
+
+
+# here-doc parse failures
+{
+    fresh_perl_like(
+        "print <<HEREDOC;\nwibble\n HEREDOC",
+        qr/find string terminator/,
+        {},
+        "string terminator must start at newline"
+    );
+
+    fresh_perl_like(
+        "print <<;\nno more newlines",
+        qr/find string terminator/,
+        { switches => ['-X'] },
+        "empty string terminator still needs a newline"
+    );
+
+    fresh_perl_like(
+        "print <<ThisTerminatorIsLongerThanTheData;\nno more newlines",
+        qr/find string terminator/,
+        {},
+        "long terminator fails correctly"
+    );
+}

Added: vendor/perl/dist/t/op/lexsub.t
===================================================================
--- vendor/perl/dist/t/op/lexsub.t	                        (rev 0)
+++ vendor/perl/dist/t/op/lexsub.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,713 @@
+#!perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+    *bar::is = *is;
+    *bar::like = *like;
+}
+no warnings 'deprecated';
+plan 136;
+
+# -------------------- Errors with feature disabled -------------------- #
+
+eval "#line 8 foo\nmy sub foo";
+is $@, qq 'Experimental "my" subs not enabled at foo line 8.\n',
+  'my sub unexperimental error';
+eval "#line 8 foo\nCORE::state sub foo";
+is $@, qq 'Experimental "state" subs not enabled at foo line 8.\n',
+  'state sub unexperimental error';
+eval "#line 8 foo\nour sub foo";
+is $@, qq 'Experimental "our" subs not enabled at foo line 8.\n',
+  'our sub unexperimental error';
+
+# -------------------- our -------------------- #
+
+no warnings "experimental::lexical_subs";
+use feature 'lexical_subs';
+{
+  our sub foo { 42 }
+  is foo, 42, 'calling our sub from same package';
+  is &foo, 42, 'calling our sub from same package (amper)';
+  is do foo(), 42, 'calling our sub from same package (do)';
+  package bar;
+  sub bar::foo { 43 }
+  is foo, 42, 'calling our sub from another package';
+  is &foo, 42, 'calling our sub from another package (amper)';
+  is do foo(), 42, 'calling our sub from another package (do)';
+}
+package bar;
+is foo, 43, 'our sub falling out of scope';
+is &foo, 43, 'our sub falling out of scope (called via amper)';
+is do foo(), 43, 'our sub falling out of scope (called via amper)';
+package main;
+{
+  sub bar::a { 43 }
+  our sub a {
+    if (shift) {
+      package bar;
+      is a, 43, 'our sub invisible inside itself';
+      is &a, 43, 'our sub invisible inside itself (called via amper)';
+      is do a(), 43, 'our sub invisible inside itself (called via do)';
+    }
+    42
+  }
+  a(1);
+  sub bar::b { 43 }
+  our sub b;
+  our sub b {
+    if (shift) {
+      package bar;
+      is b, 42, 'our sub visible inside itself after decl';
+      is &b, 42, 'our sub visible inside itself after decl (amper)';
+      is do b(), 42, 'our sub visible inside itself after decl (do)';
+    }
+    42
+  }
+  b(1)
+}
+sub c { 42 }
+sub bar::c { 43 }
+{
+  our sub c;
+  package bar;
+  is c, 42, 'our sub foo; makes lex alias for existing sub';
+  is &c, 42, 'our sub foo; makes lex alias for existing sub (amper)';
+  is do c(), 42, 'our sub foo; makes lex alias for existing sub (do)';
+}
+{
+  our sub d;
+  sub bar::d { 'd43' }
+  package bar;
+  sub d { 'd42' }
+  is eval ::d, 'd42', 'our sub foo; applies to subsequent sub foo {}';
+}
+{
+  our sub e ($);
+  is prototype "::e", '$', 'our sub with proto';
+}
+{
+  our sub if() { 42 }
+  my $x = if if if;
+  is $x, 42, 'lexical subs (even our) override all keywords';
+  package bar;
+  my $y = if if if;
+  is $y, 42, 'our subs from other packages override all keywords';
+}
+
+# -------------------- state -------------------- #
+
+use feature 'state'; # state
+{
+  state sub foo { 44 }
+  isnt \&::foo, \&foo, 'state sub is not stored in the package';
+  is eval foo, 44, 'calling state sub from same package';
+  is eval &foo, 44, 'calling state sub from same package (amper)';
+  is eval do foo(), 44, 'calling state sub from same package (do)';
+  package bar;
+  is eval foo, 44, 'calling state sub from another package';
+  is eval &foo, 44, 'calling state sub from another package (amper)';
+  is eval do foo(), 44, 'calling state sub from another package (do)';
+}
+package bar;
+is foo, 43, 'state sub falling out of scope';
+is &foo, 43, 'state sub falling out of scope (called via amper)';
+is do foo(), 43, 'state sub falling out of scope (called via amper)';
+{
+  sub sa { 43 }
+  state sub sa {
+    if (shift) {
+      is sa, 43, 'state sub invisible inside itself';
+      is &sa, 43, 'state sub invisible inside itself (called via amper)';
+      is do sa(), 43, 'state sub invisible inside itself (called via do)';
+    }
+    44
+  }
+  sa(1);
+  sub sb { 43 }
+  state sub sb;
+  state sub sb {
+    if (shift) {
+      # ‘state sub foo{}’ creates a new pad entry, not reusing the forward
+      #  declaration.  Being invisible inside itself, it sees the stub.
+      eval{sb};
+      like $@, qr/^Undefined subroutine &sb called at /,
+        'state sub foo {} after forward declaration';
+      eval{&sb};
+      like $@, qr/^Undefined subroutine &sb called at /,
+        'state sub foo {} after forward declaration (amper)';
+      eval{do sb()};
+      like $@, qr/^Undefined subroutine &sb called at /,
+        'state sub foo {} after forward declaration (do)';
+    }
+    44
+  }
+  sb(1);
+  sub sb2 { 43 }
+  state sub sb2;
+  sub sb2 {
+    if (shift) {
+      package bar;
+      is sb2, 44, 'state sub visible inside itself after decl';
+      is &sb2, 44, 'state sub visible inside itself after decl (amper)';
+      is do sb2(), 44, 'state sub visible inside itself after decl (do)';
+    }
+    44
+  }
+  sb2(1);
+  state sub sb3;
+  {
+    state sub sb3 { # new pad entry
+      # The sub containing this comment is invisible inside itself.
+      # So this one here will assign to the outer pad entry:
+      sub sb3 { 47 }
+    }
+  }
+  is eval{sb3}, 47,
+    'sub foo{} applying to "state sub foo;" even inside state sub foo{}';
+  # Same test again, but inside an anonymous sub
+  sub {
+    state sub sb4;
+    {
+      state sub sb4 {
+        sub sb4 { 47 }
+      }
+    }
+    is sb4, 47,
+      'sub foo{} applying to "state sub foo;" even inside state sub foo{}';
+  }->();
+}
+sub sc { 43 }
+{
+  state sub sc;
+  eval{sc};
+  like $@, qr/^Undefined subroutine &sc called at /,
+     'state sub foo; makes no lex alias for existing sub';
+  eval{&sc};
+  like $@, qr/^Undefined subroutine &sc called at /,
+     'state sub foo; makes no lex alias for existing sub (amper)';
+  eval{do sc()};
+  like $@, qr/^Undefined subroutine &sc called at /,
+     'state sub foo; makes no lex alias for existing sub (do)';
+}
+package main;
+{
+  state sub se ($);
+  is prototype eval{\&se}, '$', 'state sub with proto';
+  is prototype "se", undef, 'prototype "..." ignores state subs';
+}
+{
+  state sub if() { 44 }
+  my $x = if if if;
+  is $x, 44, 'state subs override all keywords';
+  package bar;
+  my $y = if if if;
+  is $y, 44, 'state subs from other packages override all keywords';
+}
+{
+  use warnings; no warnings "experimental::lexical_subs";
+  state $w ;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval '#line 87 squidges
+    state sub foo;
+    state sub foo {};
+  ';
+  is $w,
+     '"state" subroutine &foo masks earlier declaration in same scope at '
+   . "squidges line 88.\n",
+     'warning for state sub masking earlier declaration';
+}
+# Since state vars inside anonymous subs are cloned at the same time as the
+# anonymous subs containing them, the same should happen for state subs.
+sub make_closure {
+  my $x = shift;
+  sub {
+    state sub foo { $x }
+    foo
+  }
+}
+$sub1 = make_closure 48;
+$sub2 = make_closure 49;
+is &$sub1, 48, 'state sub in closure (1)';
+is &$sub2, 49, 'state sub in closure (2)';
+# But we need to test that state subs actually do persist from one invoca-
+# tion of a named sub to another (i.e., that they are not my subs).
+{
+  use warnings; no warnings "experimental::lexical_subs";
+  state $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval '#line 65 teetet
+    sub foom {
+      my $x = shift;
+      state sub poom { $x }
+      eval{\&poom}
+    }
+  ';
+  is $w, "Variable \"\$x\" will not stay shared at teetet line 67.\n",
+         'state subs get "Variable will not stay shared" messages';
+  my $poom = foom(27);
+  my $poom2 = foom(678);
+  is eval{$poom->()}, eval {$poom2->()},
+    'state subs close over the first outer my var, like pkg subs';
+  my $x = 43;
+  for $x (765) {
+    state sub etetetet { $x }
+    is eval{etetetet}, 43, 'state sub ignores for() localisation';
+  }
+}
+# And we also need to test that multiple state subs can close over each
+# other’s entries in the parent subs pad, and that cv_clone is not con-
+# fused by that.
+sub make_anon_with_state_sub{
+  sub {
+    state sub s1;
+    state sub s2 { \&s1 }
+    sub s1 { \&s2 }
+    if (@_) { return \&s1 }
+    is s1,\&s2, 'state sub in anon closure closing over sibling state sub';
+    is s2,\&s1, 'state sub in anon closure closing over sibling state sub';
+  }
+}
+{
+  my $s = make_anon_with_state_sub;
+  &$s;
+
+  # And make sure the state subs were actually cloned.
+  isnt make_anon_with_state_sub->(0), &$s(0),
+    'state subs in anon subs are cloned';
+  is &$s(0), &$s(0), 'but only when the anon sub is cloned';
+}
+{
+  state sub BEGIN { exit };
+  pass 'state subs are never special blocks';
+  state sub END { shift }
+  is eval{END('jkqeudth')}, jkqeudth,
+    'state sub END {shift} implies @_, not @ARGV';
+}
+{
+  state sub redef {}
+  use warnings; no warnings "experimental::lexical_subs";
+  state $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval "#line 56 pygpyf\nsub redef {}";
+  is $w, "Subroutine redef redefined at pygpyf line 56.\n",
+         "sub redefinition warnings from state subs";
+}
+{
+  state sub p (\@) {
+    is ref $_[0], 'ARRAY', 'state sub with proto';
+  }
+  p(my @a);
+  p my @b;
+  state sub q () { 45 }
+  is q(), 45, 'state constant called with parens';
+}
+{
+  state sub x;
+  eval 'sub x {3}';
+  is x, 3, 'state sub defined inside eval';
+
+  sub r {
+    state sub foo { 3 };
+    if (@_) { # outer call
+      r();
+      is foo(), 42,
+         'state sub run-time redefinition applies to all recursion levels';
+    }
+    else { # inner call
+      eval 'sub foo { 42 }';
+    }
+  }
+  r(1);
+}
+like runperl(
+      switches => [ '-Mfeature=:all' ],
+      prog     => 'state sub a { foo ref } a()',
+      stderr   => 1
+     ),
+     qr/syntax error/,
+    'referencing a state sub after a syntax error does not crash';
+
+# -------------------- my -------------------- #
+
+{
+  my sub foo { 44 }
+  isnt \&::foo, \&foo, 'my sub is not stored in the package';
+  is foo, 44, 'calling my sub from same package';
+  is &foo, 44, 'calling my sub from same package (amper)';
+  is do foo(), 44, 'calling my sub from same package (do)';
+  package bar;
+  is foo, 44, 'calling my sub from another package';
+  is &foo, 44, 'calling my sub from another package (amper)';
+  is do foo(), 44, 'calling my sub from another package (do)';
+}
+package bar;
+is foo, 43, 'my sub falling out of scope';
+is &foo, 43, 'my sub falling out of scope (called via amper)';
+is do foo(), 43, 'my sub falling out of scope (called via amper)';
+{
+  sub ma { 43 }
+  my sub ma {
+    if (shift) {
+      is ma, 43, 'my sub invisible inside itself';
+      is &ma, 43, 'my sub invisible inside itself (called via amper)';
+      is do ma(), 43, 'my sub invisible inside itself (called via do)';
+    }
+    44
+  }
+  ma(1);
+  sub mb { 43 }
+  my sub mb;
+  my sub mb {
+    if (shift) {
+      # ‘my sub foo{}’ creates a new pad entry, not reusing the forward
+      #  declaration.  Being invisible inside itself, it sees the stub.
+      eval{mb};
+      like $@, qr/^Undefined subroutine &mb called at /,
+        'my sub foo {} after forward declaration';
+      eval{&mb};
+      like $@, qr/^Undefined subroutine &mb called at /,
+        'my sub foo {} after forward declaration (amper)';
+      eval{do mb()};
+      like $@, qr/^Undefined subroutine &mb called at /,
+        'my sub foo {} after forward declaration (do)';
+    }
+    44
+  }
+  mb(1);
+  sub mb2 { 43 }
+  my sub sb2;
+  sub mb2 {
+    if (shift) {
+      package bar;
+      is mb2, 44, 'my sub visible inside itself after decl';
+      is &mb2, 44, 'my sub visible inside itself after decl (amper)';
+      is do mb2(), 44, 'my sub visible inside itself after decl (do)';
+    }
+    44
+  }
+  mb2(1);
+  my sub mb3;
+  {
+    my sub mb3 { # new pad entry
+      # The sub containing this comment is invisible inside itself.
+      # So this one here will assign to the outer pad entry:
+      sub mb3 { 47 }
+    }
+  }
+  is eval{mb3}, 47,
+    'sub foo{} applying to "my sub foo;" even inside my sub foo{}';
+  # Same test again, but inside an anonymous sub
+  sub {
+    my sub mb4;
+    {
+      my sub mb4 {
+        sub mb4 { 47 }
+      }
+    }
+    is mb4, 47,
+      'sub foo{} applying to "my sub foo;" even inside my sub foo{}';
+  }->();
+}
+sub mc { 43 }
+{
+  my sub mc;
+  eval{mc};
+  like $@, qr/^Undefined subroutine &mc called at /,
+     'my sub foo; makes no lex alias for existing sub';
+  eval{&mc};
+  like $@, qr/^Undefined subroutine &mc called at /,
+     'my sub foo; makes no lex alias for existing sub (amper)';
+  eval{do mc()};
+  like $@, qr/^Undefined subroutine &mc called at /,
+     'my sub foo; makes no lex alias for existing sub (do)';
+}
+package main;
+{
+  my sub me ($);
+  is prototype eval{\&me}, '$', 'my sub with proto';
+  is prototype "me", undef, 'prototype "..." ignores my subs';
+}
+{
+  my sub if() { 44 }
+  my $x = if if if;
+  is $x, 44, 'my subs override all keywords';
+  package bar;
+  my $y = if if if;
+  is $y, 44, 'my subs from other packages override all keywords';
+}
+{
+  use warnings; no warnings "experimental::lexical_subs";
+  my $w ;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval '#line 87 squidges
+    my sub foo;
+    my sub foo {};
+  ';
+  is $w,
+     '"my" subroutine &foo masks earlier declaration in same scope at '
+   . "squidges line 88.\n",
+     'warning for my sub masking earlier declaration';
+}
+# Test that my subs are cloned inside anonymous subs.
+sub mmake_closure {
+  my $x = shift;
+  sub {
+    my sub foo { $x }
+    foo
+  }
+}
+$sub1 = mmake_closure 48;
+$sub2 = mmake_closure 49;
+is &$sub1, 48, 'my sub in closure (1)';
+is &$sub2, 49, 'my sub in closure (2)';
+# Test that they are cloned in named subs.
+{
+  use warnings; no warnings "experimental::lexical_subs";
+  my $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval '#line 65 teetet
+    sub mfoom {
+      my $x = shift;
+      my sub poom { $x }
+      \&poom
+    }
+  ';
+  is $w, undef, 'my subs get no "Variable will not stay shared" messages';
+  my $poom = mfoom(27);
+  my $poom2 = mfoom(678);
+  is $poom->(), 27, 'my subs closing over outer my var (1)';
+  is $poom2->(), 678, 'my subs closing over outer my var (2)';
+  my $x = 43;
+  my sub aoeu;
+  for $x (765) {
+    my sub etetetet { $x }
+    sub aoeu { $x }
+    is etetetet, 765, 'my sub respects for() localisation';
+    is aoeu, 43, 'unless it is declared outside the for loop';
+  }
+}
+# And we also need to test that multiple my subs can close over each
+# other’s entries in the parent subs pad, and that cv_clone is not con-
+# fused by that.
+sub make_anon_with_my_sub{
+  sub {
+    my sub s1;
+    my sub s2 { \&s1 }
+    sub s1 { \&s2 }
+    if (@_) { return eval { \&s1 } }
+    is eval{s1},eval{\&s2}, 'my sub in anon closure closing over sibling my sub';
+    is eval{s2},eval{\&s1}, 'my sub in anon closure closing over sibling my sub';
+  }
+}
+
+# Test my subs inside predeclared my subs
+{
+  my sub s2;
+  sub s2 {
+    my $x = 3;
+    my sub s3 { eval '$x' }
+    s3;
+  }
+  is s2, 3, 'my sub inside predeclared my sub';
+}
+
+{
+  my $s = make_anon_with_my_sub;
+  &$s;
+
+  # And make sure the my subs were actually cloned.
+  isnt make_anon_with_my_sub->(0), &$s(0),
+    'my subs in anon subs are cloned';
+  isnt &$s(0), &$s(0), 'at each invocation of the enclosing sub';
+}
+{
+  my sub BEGIN { exit };
+  pass 'my subs are never special blocks';
+  my sub END { shift }
+  is END('jkqeudth'), jkqeudth,
+    'my sub END {shift} implies @_, not @ARGV';
+}
+{
+  my sub redef {}
+  use warnings; no warnings "experimental::lexical_subs";
+  my $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval "#line 56 pygpyf\nsub redef {}";
+  is $w, "Subroutine redef redefined at pygpyf line 56.\n",
+         "sub redefinition warnings from my subs";
+
+  undef $w;
+  sub {
+    my sub x {};
+    sub { eval "#line 87 khaki\n\\&x" }
+  }->()();
+  is $w, "Subroutine \"&x\" is not available at khaki line 87.\n",
+         "unavailability warning during compilation of eval in closure";
+
+  undef $w;
+  no warnings 'void';
+  eval <<'->()();';
+#line 87 khaki
+    sub {
+      my sub x{}
+      sub not_lexical8 {
+        \&x
+      }
+    }
+->()();
+  is $w, "Subroutine \"&x\" is not available at khaki line 90.\n",
+         "unavailability warning during compilation of named sub in anon";
+
+  undef $w;
+  sub not_lexical9 {
+    my sub x {};
+    format =
+@
+&x
+.
+  }
+  eval { write };
+  my($f,$l) = (__FILE__,__LINE__ - 1);
+  is $w, "Subroutine \"&x\" is not available at $f line $l.\n",
+         'unavailability warning during cloning';
+  $l -= 3;
+  is $@, "Undefined subroutine &x called at $f line $l.\n",
+         'Vivified sub is correctly named';
+}
+sub not_lexical10 {
+  my sub foo;
+  foo();
+  sub not_lexical11 {
+    my sub bar {
+      my $x = 'khaki car keys for the khaki car';
+      not_lexical10();
+      sub foo {
+       is $x, 'khaki car keys for the khaki car',
+       'mysubs in inner clonables use the running clone of their CvOUTSIDE'
+      }
+    }
+    bar()
+  }
+}
+not_lexical11();
+{
+  my sub p (\@) {
+    is ref $_[0], 'ARRAY', 'my sub with proto';
+  }
+  p(my @a);
+  p @a;
+  my sub q () { 46 }
+  is q(), 46, 'my constant called with parens';
+}
+{
+  my sub x;
+  my $count;
+  sub x { x() if $count++ < 10 }
+  x();
+  is $count, 11, 'my recursive subs';
+}
+{
+  my sub x;
+  eval 'sub x {3}';
+  is x, 3, 'my sub defined inside eval';
+}
+
+{
+  state $w;
+  local $SIG{__WARN__} = sub { $w .= shift };
+  eval q{ my sub george () { 2 } };
+  is $w, undef, 'no double free from constant my subs';
+}
+like runperl(
+      switches => [ '-Mfeature=:all' ],
+      prog     => 'my sub a { foo ref } a()',
+      stderr   => 1
+     ),
+     qr/syntax error/,
+    'referencing a my sub after a syntax error does not crash';
+
+# -------------------- Interactions (and misc tests) -------------------- #
+
+is sub {
+    my sub s1;
+    my sub s2 { 3 };
+    sub s1 { state sub foo { \&s2 } foo }
+    s1
+  }->()(), 3, 'state sub inside my sub closing over my sub uncle';
+
+{
+  my sub s2 { 3 };
+  sub not_lexical { state sub foo { \&s2 } foo }
+  is not_lexical->(), 3, 'state subs that reference my sub from outside';
+}
+
+# Test my subs inside predeclared package subs
+# This test also checks that CvOUTSIDE pointers are not mangled when the
+# inner sub’s CvOUTSIDE points to another sub.
+sub not_lexical2;
+sub not_lexical2 {
+  my $x = 23;
+  my sub bar;
+  sub not_lexical3 {
+    not_lexical2();
+    sub bar { $x }
+  };
+  bar
+}
+is not_lexical3, 23, 'my subs inside predeclared package subs';
+
+# Test my subs inside predeclared package sub, where the lexical sub is
+# declared outside the package sub.
+# This checks that CvOUTSIDE pointers are fixed up even when the sub is
+# not declared inside the sub that its CvOUTSIDE points to.
+sub not_lexical5 {
+  my sub foo;
+  sub not_lexical4;
+  sub not_lexical4 {
+    my $x = 234;
+    not_lexical5();
+    sub foo { $x }
+  }
+  foo
+}
+is not_lexical4, 234,
+    'my sub defined in predeclared pkg sub but declared outside';
+
+undef *not_lexical6;
+{
+  my sub foo;
+  sub not_lexical6 { sub foo { } }
+  pass 'no crash when cloning a mysub declared inside an undef pack sub';
+}
+
+undef &not_lexical7;
+eval 'sub not_lexical7 { my @x }';
+{
+  my sub foo;
+  foo();
+  sub not_lexical7 {
+    state $x;
+    sub foo {
+      is ref \$x, 'SCALAR',
+        "redeffing a mysub's outside does not make it use the wrong pad"
+    }
+  }
+}
+
+like runperl(
+      switches => [ '-Mfeature=:all', '-Mwarnings=FATAL,all', '-M-warnings=experimental::lexical_subs' ],
+      prog     => 'my sub foo; sub foo { foo } foo',
+      stderr   => 1
+     ),
+     qr/Deep recursion on subroutine "foo"/,
+    'deep recursion warnings for lexical subs do not crash';
+
+like runperl(
+      switches => [ '-Mfeature=:all', '-Mwarnings=FATAL,all', '-M-warnings=experimental::lexical_subs' ],
+      prog     => 'my sub foo() { 42 } undef &foo',
+      stderr   => 1
+     ),
+     qr/Constant subroutine foo undefined at /,
+    'constant undefinition warnings for lexical subs do not crash';

Added: vendor/perl/dist/t/op/lock.t
===================================================================
--- vendor/perl/dist/t/op/lock.t	                        (rev 0)
+++ vendor/perl/dist/t/op/lock.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,16 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = qw(. ../lib);
+    require './test.pl';
+}
+plan tests => 5;
+
+is \lock $foo, \$foo, 'lock returns a scalar argument';
+is  lock @foo, \@foo, 'lock returns a ref to its array argument';
+is  lock %foo, \%foo, 'lock returns a ref to its hash argument';
+is  lock &foo, \&foo, 'lock returns a ref to its code argument';
+
+sub eulavl : lvalue { $x }
+is  lock &eulavl, \&eulavl, 'lock returns a ref to its lvalue sub arg';

Added: vendor/perl/dist/t/op/require_37033.t
===================================================================
--- vendor/perl/dist/t/op/require_37033.t	                        (rev 0)
+++ vendor/perl/dist/t/op/require_37033.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+#!perl -w
+use strict;
+
+# Check that require doesn't leave the handle it uses open, if it happens that
+# the handle it opens gets file descriptor 0. RT #37033.
+
+require './test.pl';
+ at INC = 'lib';
+
+sub test_require {
+    my ($state, $want) = @_;
+    delete $INC{'test_use_14937.pm'};
+    open my $fh, '<', 'README' or die "Can't open README: $!";
+    my $fileno = fileno $fh;
+    if (defined $want) {
+	is($fileno, $want,
+	   "file handle has correct numeric file descriptor $state");
+    } else {
+	like($fileno, qr/\A\d+\z/,
+	     "file handle has a numeric file descriptor $state");
+    }
+    close $fh or die;
+
+    is($INC{'test_use_14937.pm'}, undef, "test_use_14937 isn't loaded $state");
+    require test_use_14937;
+    isnt($INC{'test_use_14937.pm'}, undef, "test_use_14937 is loaded $state");
+
+    open $fh, '<', 'README' or die "Can't open README: $!";
+    is(fileno $fh, $fileno,
+       "file handle has the same numeric file descriptor $state");
+    close $fh or die;
+}
+
+is(fileno STDIN, 0, 'STDIN is open on file descriptor 0');
+test_require('(STDIN open)');
+
+close STDIN or die "Can't close STDIN: $!";
+
+is(fileno STDIN, undef, 'STDIN is closed');
+test_require('(STDIN closed)', 0);
+
+done_testing();

Added: vendor/perl/dist/t/op/select.t
===================================================================
--- vendor/perl/dist/t/op/select.t	                        (rev 0)
+++ vendor/perl/dist/t/op/select.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,34 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    require './test.pl';
+}
+
+plan reverse 9;
+
+
+open my $fh, "test.pl" or die "$0 unfortunately cannot open test.pl: $!";
+
+is select, 'main::STDOUT', 'select retval';
+is select($fh), 'main::STDOUT', 'select retval when called with argument';
+ok ref select, 'select returns ref for glob generated by open';
+is select, $fh, 'the ref returned references the right referent';
+is select(STDOUT), $fh, 'select previous ref when setting to bareword';
+is select, 'main::STDOUT', 'switching back to STDOUT';
+is ref\select, 'SCALAR', 'and STDOUT is a plain string';
+
+open foo::bar, "test.pl" or die "$0 sadly cannot open test.pl: $!";
+select foo::bar;
+$handle = \*foo::bar;
+$stash = \%foo::;
+*foo:: = *bar::;
+is select, $handle,
+    'select returns ref for glob whose stash has been detached';
+
+open thwat::snin, "test.pl" or die "$0 is unable to open test.pl: $!";
+select thwat::snin;
+$handle = \*thwat::snin;
+*thwat:: = *snin::; # gv is now *__ANON__::snin
+is select, $handle,
+    'select returns ref for glob with no stash pointer';

Added: vendor/perl/dist/t/op/sigsystem.t
===================================================================
--- vendor/perl/dist/t/op/sigsystem.t	                        (rev 0)
+++ vendor/perl/dist/t/op/sigsystem.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,64 @@
+#!perl -w
+
+BEGIN {
+      require './test.pl';
+      skip_all_if_miniperl();
+      skip_all_without_config(qw(d_fork));
+}
+
+use strict;
+use constant TRUE => ($^X, '-e', 'exit 0');
+use Data::Dumper;
+
+plan tests => 4;
+
+SKIP: {
+    skip 'Platform doesn\'t support SIGCHLD', 4 if not exists $SIG{CHLD};
+    require POSIX;
+    require Time::HiRes;
+
+    my @pids;
+    $SIG{CHLD} = sub {
+	while ((my $child = waitpid(-1, POSIX::WNOHANG())) > 0) {
+	    note "Reaped: $child";
+	    push @pids, $child;
+	}
+    };
+    my $pid = fork // die "Can't fork: $!";
+    unless ($pid) {
+	note("Child PID: $$");
+	Time::HiRes::sleep(0.250);
+	POSIX::_exit(0);
+    }
+
+    test_system('without reaper');
+
+    test_system('with reaper');
+
+    note("Waiting briefly for SIGCHLD...");
+    Time::HiRes::sleep(0.500);
+
+    ok(@pids == 1, 'Reaped only one process');
+    ok($pids[0] == $pid, "Reaped the right process.") or diag(Dumper(\@pids));
+}
+
+sub test_system {
+    my $subtest = shift;
+
+    my $expected_zeroes = 10;
+    my $got_zeroes      = 0;
+
+    # This test is looking for a race between system()'s waitpid() and a
+    # signal handler.    Looping a few times increases the chances of
+    # catching the error.
+
+    for (1..$expected_zeroes) {
+	$got_zeroes++ unless system(TRUE);
+    }
+
+    is(
+	$got_zeroes, $expected_zeroes,
+	"system() $subtest succeeded $got_zeroes times out of $expected_zeroes"
+    );
+}
+

Added: vendor/perl/dist/t/op/svleak.pl
===================================================================
--- vendor/perl/dist/t/op/svleak.pl	                        (rev 0)
+++ vendor/perl/dist/t/op/svleak.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+<<END

Added: vendor/perl/dist/t/op/unlink.t
===================================================================
--- vendor/perl/dist/t/op/unlink.t	                        (rev 0)
+++ vendor/perl/dist/t/op/unlink.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,38 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+plan 6;
+
+# Need to run this in a quiet private directory as it assumes that it can
+# reliably delete fixed file names.
+my $tempdir = tempfile;
+
+mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
+chdir $tempdir or die die "Can't chdir '$tempdir': $!";
+
+sub make_file {
+  my $file = shift;
+  open my $fh, ">", $file or die "Can't open $file: $!";
+  close $fh or die "Can't close $file: $!";
+}
+
+make_file('aaa');
+is unlink('aaa'), 1, 'retval of unlink with one file name';
+ok (!-e 'aaa', 'unlink unlinked it');
+make_file($_) for 'aaa', 'bbb';
+is unlink('aaa','bbb','ccc'), 2,
+    'retval of unlink with list that includes nonexistent file';
+ok (!-e 'aaa' && !-e 'bbb', 'unlink unlank the files it claims it unlank');
+$_ = 'zzz';
+make_file 'zzz';
+is unlink, 1, 'retval of unlink with no args';
+ok !-e 'zzz', 'unlink with no arg unlinked $_';
+
+
+chdir '..' or die "Couldn't chdir .. for cleanup: $!";
+rmdir $tempdir or die "Couldn't unlink tempdir '$tempdir': $!";

Added: vendor/perl/dist/t/op/while.t
===================================================================
--- vendor/perl/dist/t/op/while.t	                        (rev 0)
+++ vendor/perl/dist/t/op/while.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,215 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    require "test.pl";
+}
+
+plan(25);
+
+my $tmpfile = tempfile();
+open (tmp,'>', $tmpfile) || die "Can't create Cmd_while.tmp.";
+print tmp "tvi925\n";
+print tmp "tvi920\n";
+print tmp "vt100\n";
+print tmp "Amiga\n";
+print tmp "paper\n";
+close tmp or die "Could not close: $!";
+
+# test "last" command
+
+open(fh, $tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+    last if /vt100/;
+}
+ok(!eof && /vt100/);
+
+# test "next" command
+
+$bad = '';
+open(fh, $tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+    next if /vt100/;
+    $bad = 1 if /vt100/;
+}
+ok(eof && !/vt100/ && !$bad);
+
+# test "redo" command
+
+$bad = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+while (<fh>) {
+    if (s/vt100/VT100/g) {
+	s/VT100/Vt100/g;
+	redo;
+    }
+    $bad = 1 if /vt100/;
+    $bad = 1 if /VT100/;
+}
+ok(eof && !$bad);
+
+# now do the same with a label and a continue block
+
+# test "last" command
+
+$badcont = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+line: while (<fh>) {
+    if (/vt100/) {last line;}
+} continue {
+    $badcont = 1 if /vt100/;
+}
+ok(!eof && /vt100/);
+ok(!$badcont);
+
+# test "next" command
+
+$bad = '';
+$badcont = 1;
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+entry: while (<fh>) {
+    next entry if /vt100/;
+    $bad = 1 if /vt100/;
+} continue {
+    $badcont = '' if /vt100/;
+}
+ok(eof && !/vt100/ && !$bad);
+ok(!$badcont);
+
+# test "redo" command
+
+$bad = '';
+$badcont = '';
+open(fh,$tmpfile) || die "Can't open Cmd_while.tmp.";
+loop: while (<fh>) {
+    if (s/vt100/VT100/g) {
+	s/VT100/Vt100/g;
+	redo loop;
+    }
+    $bad = 1 if /vt100/;
+    $bad = 1 if /VT100/;
+} continue {
+    $badcont = 1 if /vt100/;
+}
+ok(eof && !$bad);
+ok(!$badcont);
+
+close(fh) || die "Can't close Cmd_while.tmp.";
+
+$i = 9;
+{
+    $i++;
+}
+is($i, 10);
+
+# Check curpm is reset when jumping out of a scope
+$i = 0;
+'abc' =~ /b/;
+WHILE:
+while (1) {
+  $i++;
+  is($` . $& . $', "abc");
+  {                             # Localize changes to $` and friends
+    'end' =~ /end/;
+    redo WHILE if $i == 1;
+    next WHILE if $i == 2;
+    # 3 do a normal loop
+    last WHILE if $i == 4;
+  }
+}
+is($` . $& . $', "abc");
+
+# check that scope cleanup happens right when there's a continue block
+{
+    my $var = 16;
+    my (@got_var, @got_i);
+    while (my $i = ++$var) {
+	next if $i == 17;
+	last if $i > 17;
+	my $i = 0;
+    }
+    continue {
+        ($got_var, $got_i) = ($var, $i);
+    }
+    is($got_var, 17);
+    is($got_i, 17);
+}
+
+{
+    my $got_l;
+    local $l = 18;
+    {
+        local $l = 0
+    }
+    continue {
+        $got_l = $l;
+    }
+    is($got_l, 18);
+}
+
+{
+    my $got_l;
+    local $l = 19;
+    my $x = 0;
+    while (!$x++) {
+        local $l = 0
+    }
+    continue {
+        $got_l = $l;
+    }
+    is($got_l, $l);
+}
+
+{
+    my $ok = 1;
+    $i = 20;
+    while (1) {
+	my $x;
+	$ok = 0 if defined $x;
+	if ($i == 21) {
+	    next;
+	}
+	last;
+    }
+    continue {
+        ++$i;
+    }
+    ok($ok);
+}
+
+sub save_context { $_[0] = wantarray; $_[1] }
+
+{
+    my $context = -1;
+    my $p = sub {
+        my $x = 1;
+        while ($x--) {
+            save_context($context, "foo");
+        }
+    };
+    is(scalar($p->()), 0);
+    is($context, undef, "last statement in while block has 'void' context");
+}
+
+{
+    my $context = -1;
+    my $p = sub {
+        my $x = 1;
+        {
+            save_context($context, "foo");
+        }
+    };
+    is(scalar($p->()), "foo");
+    is($context, "", "last statement in block has 'scalar' context");
+}
+
+{
+    # test scope is cleaned
+    my $i = 0;
+    my @a;
+    while ($i++ < 2) {
+        my $x;
+        push @a, \$x;
+    }
+    ok($a[0] ne $a[1]);
+}

Added: vendor/perl/dist/t/opbasic/arith.t
===================================================================
--- vendor/perl/dist/t/opbasic/arith.t	                        (rev 0)
+++ vendor/perl/dist/t/opbasic/arith.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,458 @@
+#!./perl -w
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}
+
+# This file has been placed in t/opbasic to indicate that it should not use
+# functions imported from t/test.pl or Test::More, as those programs/libraries
+# use operators which are what is being tested in this file.
+
+print "1..167\n";
+
+sub try ($$$) {
+   print +($_[1] ? "ok" : "not ok"), " $_[0] - $_[2]\n";
+}
+sub tryeq ($$$$) {
+  if ($_[1] == $_[2]) {
+    print "ok $_[0]";
+  } else {
+    print "not ok $_[0] # $_[1] != $_[2]";
+  }
+  print " - $_[3]\n";
+}
+sub tryeq_sloppy ($$$$) {
+  if ($_[1] == $_[2]) {
+    print "ok $_[0]";
+  } else {
+    my $error = abs (($_[1] - $_[2]) / $_[1]);
+    if ($error < 1e-9) {
+      print "ok $_[0] # $_[1] is close to $_[2], \$^O eq $^O";
+    } else {
+      print "not ok $_[0] # $_[1] != $_[2]";
+    }
+  }
+  print " - $_[3]\n";
+}
+
+my $T = 1;
+tryeq $T++,  13 %  4, 1, 'modulo: positive positive';
+tryeq $T++, -13 %  4, 3, 'modulo: negative positive';
+tryeq $T++,  13 % -4, -3, 'modulo: positive negative';
+tryeq $T++, -13 % -4, -1, 'modulo: negative negative';
+
+# Give abs() a good work-out before using it in anger
+tryeq $T++, abs(0), 0, 'abs(): 0 0';
+tryeq $T++, abs(1), 1, 'abs(): 1 1';
+tryeq $T++, abs(-1), 1, 'abs(): -1 1';
+tryeq $T++, abs(2147483647), 2147483647, 'abs(): 2**31-1: pos pos';
+tryeq $T++, abs(-2147483647), 2147483647, 'abs(): 2**31-1: neg pos';
+tryeq $T++, abs(4294967295), 4294967295, 'abs(): 2**32-1: pos pos';
+tryeq $T++, abs(-4294967295), 4294967295, 'abs(): 2**32-1: neg pos';
+tryeq $T++, abs(9223372036854775807), 9223372036854775807,
+    'abs(): 2**63-1: pos pos';
+tryeq $T++, abs(-9223372036854775807), 9223372036854775807,
+    'abs(): 2**63-1: neg pos';
+# Assume no change whatever; no slop needed
+tryeq $T++, abs(1e50), 1e50, 'abs(): 1e50: pos pos';
+# Assume only sign bit flipped
+tryeq $T++, abs(-1e50), 1e50, 'abs(): 1e50: neg pos';
+
+my $limit = 1e6;
+
+# Division (and modulo) of floating point numbers
+# seem to be rather sloppy in Cray.
+$limit = 1e8 if $^O eq 'unicos';
+
+try $T++, abs( 13e21 %  4e21 -  1e21) < $limit, 'abs() for floating point';
+try $T++, abs(-13e21 %  4e21 -  3e21) < $limit, 'abs() for floating point';
+try $T++, abs( 13e21 % -4e21 - -3e21) < $limit, 'abs() for floating point';
+try $T++, abs(-13e21 % -4e21 - -1e21) < $limit, 'abs() for floating point';
+
+tryeq $T++, 4063328477 % 65535, 27407, 'UV behaves properly: modulo';
+tryeq $T++, 4063328477 % 4063328476, 1, 'UV behaves properly: modulo';
+tryeq $T++, 4063328477 % 2031664238, 1, 'UV behaves properly: modulo';
+tryeq $T++, 2031664238 % 4063328477, 2031664238,
+    'UV behaves properly: modulo';
+
+tryeq $T++, 2147483647 + 0, 2147483647,
+    'trigger wrapping on 32 bit IVs and UVs';
+
+tryeq $T++, 2147483647 + 1, 2147483648, 'IV + IV promotes to UV';
+tryeq $T++, 2147483640 + 10, 2147483650, 'IV + IV promotes to UV';
+tryeq $T++, 2147483647 + 2147483647, 4294967294, 'IV + IV promotes to UV';
+tryeq $T++, 2147483647 + 2147483649, 4294967296, 'IV + UV promotes to NV';
+tryeq $T++, 4294967294 + 2, 4294967296, 'UV + IV promotes to NV';
+tryeq $T++, 4294967295 + 4294967295, 8589934590, 'UV + UV promotes to NV';
+
+tryeq $T++, 2147483648 + -1, 2147483647, 'UV + IV promotes to IV';
+tryeq $T++, 2147483650 + -10, 2147483640, 'UV + IV promotes to IV';
+tryeq $T++, -1 + 2147483648, 2147483647, 'IV + UV promotes to IV';
+tryeq $T++, -10 + 4294967294, 4294967284, 'IV + UV promotes to IV';
+tryeq $T++, -2147483648 + -2147483648, -4294967296, 'IV + IV promotes to NV';
+tryeq $T++, -2147483640 + -10, -2147483650, 'IV + IV promotes to NV';
+
+# Hmm. Do not forget the simple stuff
+# addition
+tryeq $T++, 1 + 1, 2, 'addition of 2 positive integers';
+tryeq $T++, 4 + -2, 2, 'addition of positive and negative integer';
+tryeq $T++, -10 + 100, 90, 'addition of negative and positive integer';
+tryeq $T++, -7 + -9, -16, 'addition of 2 negative integers';
+tryeq $T++, -63 + +2, -61, 'addition of signed negative and positive integers';
+tryeq $T++, 4 + -1, 3, 'addition of positive and negative integer';
+tryeq $T++, -1 + 1, 0, 'addition which sums to 0';
+tryeq $T++, +29 + -29, 0, 'addition which sums to 0';
+tryeq $T++, -1 + 4, 3, 'addition of signed negative and positive integers';
+tryeq $T++, +4 + -17, -13, 'addition of signed positive and negative integers';
+
+# subtraction
+tryeq $T++, 3 - 1, 2, 'subtraction of two positive integers';
+tryeq $T++, 3 - 15, -12,
+    'subtraction of two positive integers: minuend smaller';
+tryeq $T++, 3 - -7, 10, 'subtraction of positive and negative integer';
+tryeq $T++, -156 - 5, -161, 'subtraction of negative and positive integer';
+tryeq $T++, -156 - -5, -151, 'subtraction of two negative integers';
+tryeq $T++, -5 - -12, 7,
+    'subtraction of two negative integers: minuend smaller';
+tryeq $T++, -3 - -3, 0, 'subtraction of two negative integers with result of 0';
+tryeq $T++, 15 - 15, 0, 'subtraction of two positive integers with result of 0';
+tryeq $T++, 2147483647 - 0, 2147483647, 'subtraction from large integer';
+tryeq $T++, 2147483648 - 0, 2147483648, 'subtraction from large integer';
+tryeq $T++, -2147483648 - 0, -2147483648,
+    'subtraction from large negative integer';
+tryeq $T++, 0 - -2147483647, 2147483647,
+    'subtraction of large negative integer from 0';
+tryeq $T++, -1 - -2147483648, 2147483647,
+    'subtraction of large negative integer from negative integer';
+tryeq $T++, 2 - -2147483648, 2147483650,
+    'subtraction of large negative integer from positive integer';
+tryeq $T++, 4294967294 - 3, 4294967291, 'subtraction from large integer';
+tryeq $T++, -2147483648 - -1, -2147483647,
+    'subtraction from large negative integer';
+tryeq $T++, 2147483647 - -1, 2147483648, 'IV - IV promote to UV';
+tryeq $T++, 2147483647 - -2147483648, 4294967295, 'IV - IV promote to UV';
+tryeq $T++, 4294967294 - -3, 4294967297, 'UV - IV promote to NV';
+tryeq $T++, -2147483648 - +1, -2147483649, 'IV - IV promote to NV';
+tryeq $T++, 2147483648 - 2147483650, -2, 'UV - UV promote to IV';
+tryeq $T++, 2000000000 - 4000000000, -2000000000, 'IV - UV promote to IV';
+
+# No warnings should appear;
+my $a;
+$a += 1;
+tryeq $T++, $a, 1, '+= with positive';
+undef $a;
+$a += -1;
+tryeq $T++, $a, -1, '+= with negative';
+undef $a;
+$a += 4294967290;
+tryeq $T++, $a, 4294967290, '+= with positive';
+undef $a;
+$a += -4294967290;
+tryeq $T++, $a, -4294967290, '+= with negative';
+undef $a;
+$a += 4294967297;
+tryeq $T++, $a, 4294967297, '+= with positive';
+undef $a;
+$a += -4294967297;
+tryeq $T++, $a, -4294967297, '+= with negative';
+
+my $s;
+$s -= 1;
+tryeq $T++, $s, -1, '-= with positive';
+undef $s;
+$s -= -1;
+tryeq $T++, $s, +1, '-= with negative';
+undef $s;
+$s -= -4294967290;
+tryeq $T++, $s, +4294967290, '-= with negative';
+undef $s;
+$s -= 4294967290;
+tryeq $T++, $s, -4294967290, '-= with negative';
+undef $s;
+$s -= 4294967297;
+tryeq $T++, $s, -4294967297, '-= with positive';
+undef $s;
+$s -= -4294967297;
+tryeq $T++, $s, +4294967297, '-= with positive';
+
+# multiplication
+tryeq $T++, 1 * 3, 3, 'multiplication of two positive integers';
+tryeq $T++, -2 * 3, -6, 'multiplication of negative and positive integer';
+tryeq $T++, 3 * -3, -9, 'multiplication of positive and negative integer';
+tryeq $T++, -4 * -3, 12, 'multiplication of two negative integers';
+
+# check with 0xFFFF and 0xFFFF
+tryeq $T++, 65535 * 65535, 4294836225,
+    'multiplication: 0xFFFF and 0xFFFF: pos pos';
+tryeq $T++, 65535 * -65535, -4294836225,
+    'multiplication: 0xFFFF and 0xFFFF: pos neg';
+tryeq $T++, -65535 * 65535, -4294836225,
+    'multiplication: 0xFFFF and 0xFFFF: pos neg';
+tryeq $T++, -65535 * -65535, 4294836225,
+    'multiplication: 0xFFFF and 0xFFFF: neg neg';
+
+# check with 0xFFFF and 0x10001
+tryeq $T++, 65535 * 65537, 4294967295,
+    'multiplication: 0xFFFF and 0x10001: pos pos';
+tryeq $T++, 65535 * -65537, -4294967295,
+    'multiplication: 0xFFFF and 0x10001: pos neg';
+tryeq $T++, -65535 * 65537, -4294967295,
+    'multiplication: 0xFFFF and 0x10001: neg pos';
+tryeq $T++, -65535 * -65537, 4294967295,
+    'multiplication: 0xFFFF and 0x10001: neg neg';
+
+# check with 0x10001 and 0xFFFF
+tryeq $T++, 65537 * 65535, 4294967295,
+    'multiplication: 0x10001 and 0xFFFF: pos pos';
+tryeq $T++, 65537 * -65535, -4294967295,
+    'multiplication: 0x10001 and 0xFFFF: pos neg';
+tryeq $T++, -65537 * 65535, -4294967295,
+    'multiplication: 0x10001 and 0xFFFF: neg pos';
+tryeq $T++, -65537 * -65535, 4294967295,
+    'multiplication: 0x10001 and 0xFFFF: neg neg';
+
+# These should all be dones as NVs
+tryeq $T++, 65537 * 65537, 4295098369, 'multiplication: NV: pos pos';
+tryeq $T++, 65537 * -65537, -4295098369, 'multiplication: NV: pos neg';
+tryeq $T++, -65537 * 65537, -4295098369, 'multiplication: NV: neg pos';
+tryeq $T++, -65537 * -65537, 4295098369, 'multiplication: NV: neg neg';
+
+# will overflow an IV (in 32-bit)
+tryeq $T++, 46340 * 46342, 0x80001218,
+    'multiplication: overflow an IV in 32-bit: pos pos';
+tryeq $T++, 46340 * -46342, -0x80001218,
+    'multiplication: overflow an IV in 32-bit: pos neg';
+tryeq $T++, -46340 * 46342, -0x80001218,
+    'multiplication: overflow an IV in 32-bit: neg pos';
+tryeq $T++, -46340 * -46342, 0x80001218,
+    'multiplication: overflow an IV in 32-bit: neg neg';
+
+tryeq $T++, 46342 * 46340, 0x80001218,
+    'multiplication: overflow an IV in 32-bit: pos pos';
+tryeq $T++, 46342 * -46340, -0x80001218,
+    'multiplication: overflow an IV in 32-bit: pos neg';
+tryeq $T++, -46342 * 46340, -0x80001218,
+    'multiplication: overflow an IV in 32-bit: neg pos';
+tryeq $T++, -46342 * -46340, 0x80001218,
+    'multiplication: overflow an IV in 32-bit: neg neg';
+
+# will overflow a positive IV (in 32-bit)
+tryeq $T++, 65536 * 32768, 0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: pos pos';
+tryeq $T++, 65536 * -32768, -0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: pos neg';
+tryeq $T++, -65536 * 32768, -0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: neg pos';
+tryeq $T++, -65536 * -32768, 0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: neg neg';
+
+tryeq $T++, 32768 * 65536, 0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: pos pos';
+tryeq $T++, 32768 * -65536, -0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: pos neg';
+tryeq $T++, -32768 * 65536, -0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: neg pos';
+tryeq $T++, -32768 * -65536, 0x80000000,
+    'multiplication: overflow a positive IV in 32-bit: neg neg';
+
+# 2147483647 is prime. bah.
+
+tryeq $T++, 46339 * 46341, 0x7ffea80f,
+    'multiplication: hex product: pos pos';
+tryeq $T++, 46339 * -46341, -0x7ffea80f,
+    'multiplication: hex product: pos neg';
+tryeq $T++, -46339 * 46341, -0x7ffea80f,
+    'multiplication: hex product: neg pos';
+tryeq $T++, -46339 * -46341, 0x7ffea80f,
+    'multiplication: hex product: neg neg';
+
+# leading space should be ignored
+
+tryeq $T++, 1 + " 1", 2, 'ignore leading space: addition';
+tryeq $T++, 3 + " -1", 2, 'ignore leading space: subtraction';
+tryeq $T++, 1.2, " 1.2", 'floating point and string equivalent: positive';
+tryeq $T++, -1.2, " -1.2", 'floating point and string equivalent: negative';
+
+# division
+tryeq $T++, 28/14, 2, 'division of two positive integers';
+tryeq $T++, 28/-7, -4, 'division of positive integer by negative';
+tryeq $T++, -28/4, -7, 'division of negative integer by positive';
+tryeq $T++, -28/-2, 14, 'division of negative integer by negative';
+
+tryeq $T++, 0x80000000/1, 0x80000000,
+    'division of positive hex by positive integer';
+tryeq $T++, 0x80000000/-1, -0x80000000,
+    'division of positive hex by negative integer';
+tryeq $T++, -0x80000000/1, -0x80000000,
+    'division of negative hex by negative integer';
+tryeq $T++, -0x80000000/-1, 0x80000000,
+    'division of negative hex by positive integer';
+
+# The example for sloppy divide, rigged to avoid the peephole optimiser.
+tryeq_sloppy $T++, "20." / "5.", 4, 'division of floating point without fractional part';
+
+tryeq $T++, 2.5 / 2, 1.25,
+    'division of positive floating point by positive integer';
+tryeq $T++, 3.5 / -2, -1.75,
+    'division of positive floating point by negative integer';
+tryeq $T++, -4.5 / 2, -2.25,
+    'division of negative floating point by positive integer';
+tryeq $T++, -5.5 / -2, 2.75,
+    'division of negative floating point by negative integer';
+
+# Bluuurg if your floating point can not accurately cope with powers of 2
+# [I suspect this is parsing string->float problems, not actual arith]
+tryeq_sloppy $T++, 18446744073709551616/1, 18446744073709551616,
+    'division of very large number by 1'; # Bluuurg
+tryeq_sloppy $T++, 18446744073709551616/2, 9223372036854775808,
+    'division of very large number by 2';
+tryeq_sloppy $T++, 18446744073709551616/4294967296, 4294967296,
+    'division of two very large numbers';
+tryeq_sloppy $T++, 18446744073709551616/9223372036854775808, 2,
+    'division of two very large numbers';
+
+{
+  # The peephole optimiser is wrong to think that it can substitute intops
+  # in place of regular ops, because i_multiply can overflow.
+  # Bug reported by "Sisyphus" <kalinabears at hdc.com.au>
+  my $n = 1127;
+
+  my $float = ($n % 1000) * 167772160.0;
+  tryeq_sloppy $T++, $float, 21307064320, 'integer times floating point';
+
+  # On a 32 bit machine, if the i_multiply op is used, you will probably get
+  # -167772160. It is actually undefined behaviour, so anything may happen.
+  my $int = ($n % 1000) * 167772160;
+  tryeq $T++, $int, 21307064320, 'integer times integer';
+
+  my $float2 = ($n % 1000 + 0.0) * 167772160;
+  tryeq $T++, $float2, 21307064320, 'floating point times integer';
+
+  my $int2 = ($n % 1000 + 0) * 167772160;
+  tryeq $T++, $int2, 21307064320, 'integer plus zero times integer';
+
+  # zero, but in a way that ought to be able to defeat any future optimizer:
+  my $zero = $$ - $$;
+  my $int3 = ($n % 1000 + $zero) * 167772160;
+  tryeq $T++, $int3, 21307064320, 'defeat any future optimizer';
+
+  my $t = time;
+  my $t1000 = time() * 1000;
+  try $T++, abs($t1000 -1000 * $t) <= 2000, 'absolute value';
+}
+
+{
+  # 64 bit variants
+  my $n = 1127;
+
+  my $float = ($n % 1000) * 720575940379279360.0;
+  tryeq_sloppy $T++, $float, 9.15131444281685e+19,
+    '64 bit: integer times floating point';
+
+  my $int = ($n % 1000) * 720575940379279360;
+  tryeq_sloppy $T++, $int, 9.15131444281685e+19,
+    '64 bit: integer times integer';
+
+  my $float2 = ($n % 1000 + 0.0) * 720575940379279360;
+  tryeq_sloppy $T++, $float2, 9.15131444281685e+19,
+    '64 bit: floating point times integer';
+
+  my $int2 = ($n % 1000 + 0) * 720575940379279360;
+  tryeq_sloppy $T++, $int2, 9.15131444281685e+19,
+    '64 bit: integer plus zero times integer';
+
+  # zero, but in a way that ought to be able to defeat any future optimizer:
+  my $zero = $$ - $$;
+  my $int3 = ($n % 1000 + $zero) * 720575940379279360;
+  tryeq_sloppy $T++, $int3, 9.15131444281685e+19,
+    '64 bit: defeat any future optimizer';
+}
+
+# [perl #109542] $1 and "$1" should be treated the same way
+"976562500000000" =~ /(\d+)/;
+$a = ($1 * 1024);
+$b = ("$1" * 1024);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" * something\n';
+$a = (1024 * $1);
+$b = (1024 * "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something * \$1 vs "\$1"\n';
+$a = ($1 + 102400000000000);
+$b = ("$1" + 102400000000000);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" + something\n';
+$a = (102400000000000 + $1);
+$b = (102400000000000 + "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something + \$1 vs "\$1"\n';
+$a = ($1 - 10240000000000000);
+$b = ("$1" - 10240000000000000);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" - something\n';
+$a = (10240000000000000 - $1);
+$b = (10240000000000000 - "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something - \$1 vs "\$1"\n';
+"976562500" =~ /(\d+)/;
+$a = ($1 ** 2);
+$b = ("$1" ** 2);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" ** something\n';
+"32" =~ /(\d+)/;
+$a = (3 ** $1);
+$b = (3 ** "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something ** \$1 vs "\$1"\n';
+"97656250000000000" =~ /(\d+)/;
+$a = ($1 / 10);
+$b = ("$1" / 10);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" / something\n';
+"10" =~ /(\d+)/;
+$a = (97656250000000000 / $1);
+$b = (97656250000000000 / "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something / \$1 vs "\$1"\n';
+"97656250000000000" =~ /(\d+)/;
+$a = ($1 <=> 97656250000000001);
+$b = ("$1" <=> 97656250000000001);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" <=> something\n';
+$a = (97656250000000001 <=> $1);
+$b = (97656250000000001 <=> "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something <=> \$1 vs "\$1"\n';
+"97656250000000001" =~ /(\d+)/;
+$a = ($1 % 97656250000000002);
+$b = ("$1" % 97656250000000002);
+print "not "x($a ne $b), "ok ", $T++, qq ' - \$1 vs "\$1" % something\n';
+$a = (97656250000000000 % $1);
+$b = (97656250000000000 % "$1");
+print "not "x($a ne $b), "ok ", $T++, qq ' - something % \$1 vs "\$1"\n';
+
+my $vms_no_ieee;
+if ($^O eq 'VMS') {
+  use vars '%Config';
+  eval {require Config; import Config};
+  $vms_no_ieee = 1 unless defined($Config{useieee});
+}
+
+if ($^O eq 'vos') {
+  print "not ok ", $T++, " # TODO VOS raises SIGFPE instead of producing infinity.\n";
+}
+elsif ($vms_no_ieee) {
+ print $T++, " # SKIP -- the IEEE infinity model is unavailable in this configuration.\n"
+}
+elsif ($^O eq 'ultrix') {
+  print "not ok ", $T++, " # TODO Ultrix enters deep nirvana instead of producing infinity.\n";
+}
+else {
+  # The computation of $v should overflow and produce "infinity"
+  # on any system whose max exponent is less than 10**1506.
+  # The exact string used to represent infinity varies by OS,
+  # so we don't test for it; all we care is that we don't die.
+  #
+  # Perl considers it to be an error if SIGFPE is raised.
+  # Chances are the interpreter will die, since it doesn't set
+  # up a handler for SIGFPE.  That's why this test is last; to
+  # minimize the number of test failures.  --PG
+
+  my $n = 5000;
+  my $v = 2;
+  while (--$n)
+  {
+    $v *= 2;
+  }
+  print "ok ", $T++, " - infinity\n";
+}
+

Added: vendor/perl/dist/t/opbasic/cmp.t
===================================================================
--- vendor/perl/dist/t/opbasic/cmp.t	                        (rev 0)
+++ vendor/perl/dist/t/opbasic/cmp.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,322 @@
+#!./perl
+
+BEGIN {
+       chdir 't' if -d 't';
+       @INC = '../lib';
+}
+
+# This file has been placed in t/opbasic to indicate that it should not use
+# functions imported from t/test.pl or Test::More, as those programs/libraries
+# use operators which are what is being tested in this file.
+
+# 2s complement assumption. Will not break test, just makes the internals of
+# the SVs less interesting if were not on 2s complement system.
+my $uv_max = ~0;
+my $uv_maxm1 = ~0 ^ 1;
+my $uv_big = $uv_max;
+$uv_big = ($uv_big - 20000) | 1;
+my ($iv0, $iv1, $ivm1, $iv_min, $iv_max, $iv_big, $iv_small);
+$iv_max = $uv_max; # Do copy, *then* divide
+$iv_max /= 2;
+$iv_min = $iv_max;
+{
+  use integer;
+  $iv0 = 2 - 2;
+  $iv1 = 3 - 2;
+  $ivm1 = 2 - 3;
+  $iv_max -= 1;
+  $iv_min += 0;
+  $iv_big = $iv_max - 3;
+  $iv_small = $iv_min + 2;
+}
+my $uv_bigi = $iv_big;
+$uv_bigi |= 0x0;
+
+my @array = qw(perl rules);
+
+my @raw, @upgraded, @utf8;
+foreach ("\x{1F4A9}", chr(163), 'N') {
+    push @raw, $_;
+    my $temp = $_ . chr 256;
+    chop $temp;
+    push @upgraded, $temp;
+    my $utf8 = $_;
+    next if utf8::upgrade($utf8) == length $_;
+    utf8::encode($utf8);
+    push @utf8, $utf8;
+}
+
+# Seems one needs to perform the maths on 'Inf' to get the NV correctly primed.
+ at FOO = ('s', 'N/A', 'a', 'NaN', -1, undef, 0, 1, 3.14, 1e37, 0.632120558, -.5,
+	'Inf'+1, '-Inf'-1, 0x0, 0x1, 0x5, 0xFFFFFFFF, $uv_max, $uv_maxm1,
+	$uv_big, $uv_bigi, $iv0, $iv1, $ivm1, $iv_min, $iv_max, $iv_big,
+	$iv_small, \$array[0], \$array[0], \$array[1], \$^X, @raw, @upgraded,
+	@utf8);
+
+$expect = 7 * ($#FOO+2) * ($#FOO+1) + 6 * @raw + 6 * @utf8;
+print "1..$expect\n";
+
+my $bad_NaN = 0;
+
+{
+    # gcc -ffast-math option may stop NaNs working correctly
+    use Config;
+    my $ccflags = $Config{ccflags} // '';
+    $bad_NaN = 1 if $ccflags =~ /-ffast-math\b/;
+}
+
+sub nok ($$$$$$$$) {
+  my ($test, $left, $threeway, $right, $result, $i, $j, $boolean) = @_;
+  $result = defined $result ? "'$result'" : 'undef';
+  if ($bad_NaN && ($left eq 'NaN' || $right eq 'NaN')) {
+    print "ok $test # skipping failed NaN test under -ffast-math\n";
+  }
+  else {
+    print "not ok $test # ($left $threeway $right) gives: $result \$i=$i \$j=$j, $boolean disagrees\n";
+  }
+}
+
+my $ok = 0;
+for my $i (0..$#FOO) {
+    for my $j ($i..$#FOO) {
+	$ok++;
+	# Comparison routines may convert these internally, which would change
+	# what is used to determine the comparison on later runs. Hence copy
+	my ($i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9, $i10,
+	    $i11, $i12, $i13, $i14, $i15, $i16, $i17) =
+	  ($FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i],
+	   $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i],
+	   $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i], $FOO[$i]);
+	my ($j1, $j2, $j3, $j4, $j5, $j6, $j7, $j8, $j9, $j10,
+	    $j11, $j12, $j13, $j14, $j15, $j16, $j17) =
+	  ($FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j],
+	   $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j],
+	   $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j], $FOO[$j]);
+	my $cmp = $i1 <=> $j1;
+	if (!defined($cmp) ? !($i2 < $j2)
+	    : ($cmp == -1 && $i2 < $j2 ||
+	       $cmp == 0  && !($i2 < $j2) ||
+	       $cmp == 1  && !($i2 < $j2)))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<');
+	}
+	$ok++;
+	if (!defined($cmp) ? !($i4 == $j4)
+	    : ($cmp == -1 && !($i4 == $j4) ||
+	       $cmp == 0  && $i4 == $j4 ||
+	       $cmp == 1  && !($i4 == $j4)))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '==');
+	}
+	$ok++;
+	if (!defined($cmp) ? !($i5 > $j5)
+	    : ($cmp == -1 && !($i5 > $j5) ||
+	       $cmp == 0  && !($i5 > $j5) ||
+	       $cmp == 1  && ($i5 > $j5)))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '>');
+	}
+	$ok++;
+	if (!defined($cmp) ? !($i6 >= $j6)
+	    : ($cmp == -1 && !($i6 >= $j6) ||
+	       $cmp == 0  && $i6 >= $j6 ||
+	       $cmp == 1  && $i6 >= $j6))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '>=');
+	}
+	$ok++;
+	# OK, so the docs are wrong it seems. NaN != NaN
+	if (!defined($cmp) ? ($i7 != $j7)
+	    : ($cmp == -1 && $i7 != $j7 ||
+	       $cmp == 0  && !($i7 != $j7) ||
+	       $cmp == 1  && $i7 != $j7))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '!=');
+	}
+	$ok++;
+	if (!defined($cmp) ? !($i8 <= $j8)
+	    : ($cmp == -1 && $i8 <= $j8 ||
+	       $cmp == 0  && $i8 <= $j8 ||
+	       $cmp == 1  && !($i8 <= $j8)))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<=');
+	}
+	$ok++;
+        my $pmc =  $j16 <=> $i16; # cmp it in reverse
+        # Should give -ve of other answer, or undef for NaNs
+        # a + -a should be zero. not zero is truth. which avoids using ==
+	if (defined($cmp) ? !($cmp + $pmc) : !defined $pmc)
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, '<=>', $j3, $cmp, $i, $j, '<=> transposed');
+	}
+
+
+	# String comparisons
+	$ok++;
+	$cmp = $i9 cmp $j9;
+	if ($cmp == -1 && $i10 lt $j10 ||
+	    $cmp == 0  && !($i10 lt $j10) ||
+	    $cmp == 1  && !($i10 lt $j10))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'lt');
+	}
+	$ok++;
+	if ($cmp == -1 && !($i11 eq $j11) ||
+	    $cmp == 0  && ($i11 eq $j11) ||
+	    $cmp == 1  && !($i11 eq $j11))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'eq');
+	}
+	$ok++;
+	if ($cmp == -1 && !($i12 gt $j12) ||
+	    $cmp == 0  && !($i12 gt $j12) ||
+	    $cmp == 1  && ($i12 gt $j12))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'gt');
+	}
+	$ok++;
+	if ($cmp == -1 && $i13 le $j13 ||
+	    $cmp == 0  && ($i13 le $j13) ||
+	    $cmp == 1  && !($i13 le $j13))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'le');
+	}
+	$ok++;
+	if ($cmp == -1 && ($i14 ne $j14) ||
+	    $cmp == 0  && !($i14 ne $j14) ||
+	    $cmp == 1  && ($i14 ne $j14))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'ne');
+	}
+	$ok++;
+	if ($cmp == -1 && !($i15 ge $j15) ||
+	    $cmp == 0  && ($i15 ge $j15) ||
+	    $cmp == 1  && ($i15 ge $j15))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'ge');
+	}
+	$ok++;
+        $pmc =  $j17 cmp $i17; # cmp it in reverse
+        # Should give -ve of other answer
+        # a + -a should be zero. not zero is truth. which avoids using ==
+	if (!($cmp + $pmc))
+	{
+	    print "ok $ok\n";
+	}
+	else {
+	    nok ($ok, $i3, 'cmp', $j3, $cmp, $i, $j, 'cmp transposed');
+	}
+    }
+}
+
+# We know the answers for these. We can rely on the consistency checks above
+# to test the other string comparisons.
+
+while (my ($i, $v) = each @raw) {
+    # Copy, to avoid any inadvertent conversion
+    my ($raw, $cooked, $not);
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = $raw eq $cooked ? '' : 'not ';
+    printf "%sok %d # eq, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = $raw ne $cooked ? 'not ' : '';
+    printf "%sok %d # ne, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = (($raw cmp $cooked) == 0) ? '' : 'not ';
+    printf "%sok %d # cmp, chr %d\n", $not, ++$ok, ord $raw;
+
+    # And now, transposed.
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = $cooked eq $raw ? '' : 'not ';
+    printf "%sok %d # eq, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = $cooked ne $raw ? 'not ' : '';
+    printf "%sok %d # ne, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $v;
+    $cooked = $upgraded[$i];
+    $not = (($cooked cmp $raw) == 0) ? '' : 'not ';
+    printf "%sok %d # cmp, chr %d\n", $not, ++$ok, ord $raw;
+}
+
+while (my ($i, $v) = each @utf8) {
+    # Copy, to avoid any inadvertent conversion
+    my ($raw, $cooked, $not);
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = $raw eq $cooked ? 'not ' : '';
+    printf "%sok %d # eq vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = $raw ne $cooked ? '' : 'not ';
+    printf "%sok %d # ne vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = (($raw cmp $cooked) == 0) ? 'not ' : '';
+    printf "%sok %d # cmp vs octects, chr %d\n", $not, ++$ok, ord $raw;
+
+    # And now, transposed.
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = $cooked eq $raw ? 'not ' : '';
+    printf "%sok %d # eq vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = $cooked ne $raw? '' : 'not ';
+    printf "%sok %d # ne vs octets, chr %d\n", $not, ++$ok, ord $raw;
+
+    $raw = $raw[$i];
+    $cooked = $v;
+    $not = (($cooked cmp $raw) == 0) ? 'not ' : '';
+    printf "%sok %d # cmp vs octects, chr %d\n", $not, ++$ok, ord $raw;
+}

Added: vendor/perl/dist/t/opbasic/concat.t
===================================================================
--- vendor/perl/dist/t/opbasic/concat.t	                        (rev 0)
+++ vendor/perl/dist/t/opbasic/concat.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,165 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}
+
+# ok() functions from other sources (e.g., t/test.pl) may use concatenation,
+# but that is what is being tested in this file.  Hence, we place this file
+# in the directory where do not use t/test.pl, and we write an ok() function
+# specially written to avoid any concatenation.
+
+my $test = 1;
+sub ok {
+    my($ok, $name) = @_;
+
+    printf "%sok %d - %s\n", ($ok ? "" : "not "), $test, $name;
+
+    printf "# Failed test at line %d\n", (caller)[2] unless $ok;
+
+    $test++;
+    return $ok;
+}
+
+print "1..30\n";
+
+($a, $b, $c) = qw(foo bar);
+
+ok("$a"     eq "foo",    "verifying assign");
+ok("$a$b"   eq "foobar", "basic concatenation");
+ok("$c$a$c" eq "foo",    "concatenate undef, fore and aft");
+
+# Okay, so that wasn't very challenging.  Let's go Unicode.
+
+{
+    # bug id 20000819.004 
+
+    $_ = $dx = "\x{10f2}";
+    s/($dx)/$dx$1/;
+    {
+        ok($_ eq  "$dx$dx","bug id 20000819.004, back");
+    }
+
+    $_ = $dx = "\x{10f2}";
+    s/($dx)/$1$dx/;
+    {
+        ok($_ eq  "$dx$dx","bug id 20000819.004, front");
+    }
+
+    $dx = "\x{10f2}";
+    $_  = "\x{10f2}\x{10f2}";
+    s/($dx)($dx)/$1$2/;
+    {
+        ok($_ eq  "$dx$dx","bug id 20000819.004, front and back");
+    }
+}
+
+{
+    # bug id 20000901.092
+    # test that undef left and right of utf8 results in a valid string
+
+    my $a;
+    $a .= "\x{1ff}";
+    ok($a eq  "\x{1ff}", "bug id 20000901.092, undef left");
+    $a .= undef;
+    ok($a eq  "\x{1ff}", "bug id 20000901.092, undef right");
+}
+
+{
+    # ID 20001020.006
+
+    "x" =~ /(.)/; # unset $2
+
+    # Without the fix this 5.7.0 would croak:
+    # Modification of a read-only value attempted at ...
+    eval {"$2\x{1234}"};
+    ok(!$@, "bug id 20001020.006, left");
+
+    # For symmetry with the above.
+    eval {"\x{1234}$2"};
+    ok(!$@, "bug id 20001020.006, right");
+
+    *pi = \undef;
+    # This bug existed earlier than the $2 bug, but is fixed with the same
+    # patch. Without the fix this 5.7.0 would also croak:
+    # Modification of a read-only value attempted at ...
+    eval{"$pi\x{1234}"};
+    ok(!$@, "bug id 20001020.006, constant left");
+
+    # For symmetry with the above.
+    eval{"\x{1234}$pi"};
+    ok(!$@, "bug id 20001020.006, constant right");
+}
+
+sub beq { use bytes; $_[0] eq $_[1]; }
+
+{
+    # concat should not upgrade its arguments.
+    my($l, $r, $c);
+
+    ($l, $r, $c) = ("\x{101}", "\x{fe}", "\x{101}\x{fe}");
+    ok(beq($l.$r, $c), "concat utf8 and byte");
+    ok(beq($l, "\x{101}"), "right not changed after concat u+b");
+    ok(beq($r, "\x{fe}"), "left not changed after concat u+b");
+
+    ($l, $r, $c) = ("\x{fe}", "\x{101}", "\x{fe}\x{101}");
+    ok(beq($l.$r, $c), "concat byte and utf8");
+    ok(beq($l, "\x{fe}"), "right not changed after concat b+u");
+    ok(beq($r, "\x{101}"), "left not changed after concat b+u");
+}
+
+{
+    my $a; ($a .= 5) . 6;
+    ok($a == 5, '($a .= 5) . 6 - present since 5.000');
+}
+
+{
+    # [perl #24508] optree construction bug
+    sub strfoo { "x" }
+    my ($x, $y);
+    $y = ($x = '' . strfoo()) . "y";
+    ok( "$x,$y" eq "x,xy", 'figures out correct target' );
+}
+
+{
+    # [perl #26905] "use bytes" doesn't apply byte semantics to concatenation
+
+    my $p = "\xB6"; # PILCROW SIGN (ASCII/EBCDIC), 2bytes in UTF-X
+    my $u = "\x{100}";
+    my $b = pack 'a*', "\x{100}";
+    my $pu = "\xB6\x{100}";
+    my $up = "\x{100}\xB6";
+    my $x1 = $p;
+    my $y1 = $u;
+
+    use bytes;
+    ok(beq($p.$u, $p.$b), "perl #26905, left eq bytes");
+    ok(beq($u.$p, $b.$p), "perl #26905, right eq bytes");
+    ok(!beq($p.$u, $pu),  "perl #26905, left ne unicode");
+    ok(!beq($u.$p, $up),  "perl #26905, right ne unicode");
+
+    $x1 .= $u;
+    $x2 = $p . $u;
+    $y1 .= $p;
+    $y2 = $u . $p;
+
+    no bytes;
+    ok(beq($x1, $x2), "perl #26905, left,  .= vs = . in bytes");
+    ok(beq($y1, $y2), "perl #26905, right, .= vs = . in bytes");
+    ok(($x1 eq $x2),  "perl #26905, left,  .= vs = . in chars");
+    ok(($y1 eq $y2),  "perl #26905, right, .= vs = . in chars");
+}
+
+{
+    # Concatenation needs to preserve UTF8ness of left oper.
+    my $x = eval"qr/\x{fff}/";
+    ok( ord chop($x .= "\303\277") == 191, "UTF8ness preserved" );
+}
+
+{
+    my $x;
+    $x = "a" . "b";
+    $x .= "-append-";
+    ok($x eq "ab-append-", "Appending to something initialized using constant folding");
+}

Added: vendor/perl/dist/t/opbasic/magic_phase.t
===================================================================
--- vendor/perl/dist/t/opbasic/magic_phase.t	                        (rev 0)
+++ vendor/perl/dist/t/opbasic/magic_phase.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,49 @@
+#!./perl
+
+use strict;
+use warnings;
+
+# Test ${^GLOBAL_PHASE}
+#
+# Test::More, t/test.pl, etc., assert plans in END, which happens before global
+# destruction. We do not want to use those programs/libraries here, so we
+# place this file in directory t/opbasic.
+
+BEGIN { print "1..7\n" }
+
+sub ok ($$) {
+    print "not " if !$_[0];
+    print "ok";
+    print " - $_[1]" if defined $_[1];
+    print "\n";
+}
+
+BEGIN {
+    ok ${^GLOBAL_PHASE} eq 'START', 'START';
+}
+
+CHECK {
+    ok ${^GLOBAL_PHASE} eq 'CHECK', 'CHECK';
+}
+
+INIT {
+    ok ${^GLOBAL_PHASE} eq 'INIT', 'INIT';
+}
+
+ok ${^GLOBAL_PHASE} eq 'RUN', 'RUN';
+
+sub Moo::DESTROY {
+    ok ${^GLOBAL_PHASE} eq 'RUN', 'DESTROY is run-time too, usually';
+}
+
+my $tiger = bless {}, Moo::;
+
+sub Kooh::DESTROY {
+    ok ${^GLOBAL_PHASE} eq 'DESTRUCT', 'DESTRUCT';
+}
+
+our $affe = bless {}, Kooh::;
+
+END {
+    ok ${^GLOBAL_PHASE} eq 'END', 'END';
+}

Added: vendor/perl/dist/t/opbasic/qq.t
===================================================================
--- vendor/perl/dist/t/opbasic/qq.t	                        (rev 0)
+++ vendor/perl/dist/t/opbasic/qq.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,76 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}
+
+# This file uses a specially crafted is() function rather than that found in
+# t/test.pl or Test::More.  Hence, we place this file in directory t/opbasic.
+
+print q(1..28
+);
+
+# This is() function is written to avoid ""
+my $test = 1;
+sub is {
+    my($left, $right) = @_;
+
+    if ($left eq $right) {
+      printf 'ok %d
+', $test++;
+      return 1;
+    }
+    foreach ($left, $right) {
+      # Comment out these regexps to map non-printables to ord if the perl under
+      # test is so broken that it is not helping
+      s/([^-+A-Za-z_0-9])/sprintf q{'.chr(%d).'}, ord $1/ge;
+      $_ = sprintf q('%s'), $_;
+      s/^''\.//;
+      s/\.''$//;
+    }
+    printf q(not ok %d - got %s expected %s
+), $test++, $left, $right;
+
+    printf q(# Failed test at line %d
+), (caller)[2];
+
+    return 0;
+}
+
+is ("\x53", chr 83);
+is ("\x4EE", chr (78) . 'E');
+is ("\x4i", chr (4) . 'i');	# This will warn
+is ("\xh", chr (0) . 'h');	# This will warn
+is ("\xx", chr (0) . 'x');	# This will warn
+is ("\xx9", chr (0) . 'x9');	# This will warn. \x9 is tab in EBCDIC too?
+is ("\x9_E", chr (9) . '_E');	# This will warn
+
+is ("\x{4E}", chr 78);
+is ("\x{6_9}", chr 105);
+is ("\x{_6_3}", chr 99);
+is ("\x{_6B}", chr 107);
+
+is ("\x{9__0}", chr 9);		# multiple underscores not allowed.
+is ("\x{77_}", chr 119);	# trailing underscore warns.
+is ("\x{6FQ}z", chr (111) . 'z');
+
+is ("\x{0x4E}", chr 0);
+is ("\x{x4E}", chr 0);
+
+is ("\x{0065}", chr 101);
+is ("\x{000000000000000000000000000000000000000000000000000000000000000072}",
+    chr 114);
+is ("\x{0_06_5}", chr 101);
+is ("\x{1234}", chr 4660);
+is ("\x{10FFFD}", chr 1114109);
+is ("\400", chr 0x100);
+is ("\600", chr 0x180);
+is ("\777", chr 0x1FF);
+is ("a\o{120}b", "a" . chr(0x50) . "b");
+is ("a\o{400}b", "a" . chr(0x100) . "b");
+is ("a\o{1000}b", "a" . chr(0x200) . "b");
+
+# This caused a memory fault
+no warnings "utf8";
+is ("abc", eval qq[qq\x{8000_0000}abc\x{8000_0000}])

Added: vendor/perl/dist/t/porting/checkcfgvar.t
===================================================================
--- vendor/perl/dist/t/porting/checkcfgvar.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/checkcfgvar.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,29 @@
+#!./perl -w
+
+# What does this test?
+# This uses Porting/checkcfgvar.pl to check that none of the config.sh-like
+# files are missing any entries.
+#
+# Why do we test this?
+# We need them to be complete when we ship a release, and this way we catch
+# problems as early as possible. (Instead of creating the potential for yet
+# another last-minute job for the release manager). If a config file for a
+# platform is incomplete, it can't be used to correctly regenerate config.h,
+# because missing values result in invalid C code. We keep the files sorted
+# as it makes it easy to automate adding defaults.
+#
+# It's broken - how do I fix it?
+# The most likely reason that the test failed is because you've just added
+# a new entry to Configure, config.sh and config_h.SH but nowhere else.
+# Run something like:
+#   perl Porting/checkcfgvar.pl --regen --default=undef
+# (the correct default might not always be undef) to do most of the work, and
+# then hand-edit configure.com (as that's not automated).
+# If this changes uconfig.sh, you'll also need to run perl regen/uconfig_h.pl
+
+BEGIN {
+    @INC = '..' if -f '../TestInit.pm';
+}
+use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+
+system "$^X Porting/checkcfgvar.pl --tap";

Added: vendor/perl/dist/t/porting/customized.dat
===================================================================
--- vendor/perl/dist/t/porting/customized.dat	                        (rev 0)
+++ vendor/perl/dist/t/porting/customized.dat	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,16 @@
+Text::Balanced cpan/Text-Balanced/t/01_compile.t 1598cf491a48fa546260a2ec41142abe84da533d
+Text::Balanced cpan/Text-Balanced/t/02_extbrk.t 6ba1b64a4604e822dc2260b8ffcea6b406339ee8
+Text::Balanced cpan/Text-Balanced/t/03_extcbk.t 3307c980af28963414cab799c427b359ef3b8657
+Text::Balanced cpan/Text-Balanced/t/04_extdel.t be993c5c295b125b4be0ed55f866a249599f5835
+Text::Balanced cpan/Text-Balanced/t/05_extmul.t 4d1bc60add35ac203873f5371d8c6fcc9c8b6d80
+Text::Balanced cpan/Text-Balanced/t/06_extqlk.t 81a5804d392013393a338325b197cea52c4c44e0
+Text::Balanced cpan/Text-Balanced/t/07_exttag.t 5a209ed156387d4614d3003292e5fc412b8541e5
+Text::Balanced cpan/Text-Balanced/t/08_extvar.t 0776ef2cbdad5b1fbefb300541d079212cc24d92
+Text::Balanced cpan/Text-Balanced/t/09_gentag.t 42361b5dfb3bb728bce20f4fb0d92ccfb27c2ba7
+Module::Build cpan/Module-Build/lib/Module/Build/ConfigData.pm 2f3f07fd889077ebd51791ad6e195d9164b4baf3
+Test::Harness cpan/Test-Harness/t/source.t 884890970fb850874213159df263ba483bac62e9
+CPANPLUS cpan/CPANPLUS/Makefile.PL 5d533f6722af6aae73204755beb8d6c008fc0d4a
+libnet cpan/libnet/Makefile.PL 5554b71464b45f5cc002e55f2464f7ff4abd05b6
+podlators cpan/podlators/scripts/pod2man.PL f81acf53f3ff46cdcc5ebdd661c5d13eb35d20d6
+podlators cpan/podlators/scripts/pod2text.PL b4693fcfe4a0a1b38a215cfb8985a65d5d025d69
+Module::Pluggable cpan/Module-Pluggable/Makefile.PL 72062c1a01ed7c62d16c55122c163b2d89f0d739

Added: vendor/perl/dist/t/porting/customized.t
===================================================================
--- vendor/perl/dist/t/porting/customized.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/customized.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,140 @@
+#!./perl -w
+
+# Test that CUSTOMIZED files in Maintainers.pl have not been overwritten.
+
+BEGIN {
+        # This test script uses a slightly atypical invocation of the 'standard'
+        # core testing setup stanza.
+        # The existing porting tools which manage the Maintainers file all
+        # expect to be run from the root
+        # XXX that should be fixed
+
+    chdir '..' unless -d 't';
+    @INC = qw(lib Porting t);
+    require 'test.pl';
+}
+
+use strict;
+use warnings;
+use Digest;
+use File::Spec;
+use Maintainers qw[%Modules get_module_files get_module_pat];
+
+sub filter_customized {
+    my ($m, @files) = @_;
+
+    return @files
+        unless my $customized = $Modules{$m}{CUSTOMIZED};
+
+    my ($pat) = map { qr/$_/ } join '|' => map {
+        ref $_ ? $_ : qr/\b\Q$_\E$/
+    } @{ $customized };
+
+    return grep { $_ =~ $pat } @files;
+}
+
+sub my_get_module_files {
+    my $m = shift;
+    return filter_customized $m => map { Maintainers::expand_glob($_) } get_module_pat($m);
+}
+
+my $TestCounter = 0;
+
+my $digest_type = 'SHA-1';
+
+my $original_dir = File::Spec->rel2abs(File::Spec->curdir);
+my $data_dir = File::Spec->catdir('t', 'porting');
+my $customised = File::Spec->catfile($data_dir, 'customized.dat');
+
+my %customised;
+
+my $regen = 0;
+
+while (@ARGV && substr($ARGV[0], 0, 1) eq '-') {
+    my $arg = shift @ARGV;
+
+    $arg =~ s/^--/-/; # Treat '--' the same as a single '-'
+    if ($arg eq '-regen') {
+        $regen = 1;
+    }
+    else {
+        die <<EOF;
+Unknown option '$arg'
+
+Usage: $0 [ --regen ]\n"
+    --regen    -> Regenerate the data file for $0
+
+EOF
+    }
+}
+
+my $data_fh;
+
+if ( $regen ) {
+  open $data_fh, '>:bytes', $customised or die "Can't open $customised";
+}
+else {
+  open $data_fh, '<:bytes', $customised or die "Can't open $customised";
+  while (<$data_fh>) {
+    chomp;
+    my ($module,$file,$sha) = split ' ';
+    $customised{ $module }->{ $file } = $sha;
+  }
+  close $data_fh;
+}
+
+foreach my $module ( keys %Modules ) {
+  next unless my $files = $Modules{ $module }{CUSTOMIZED};
+  my @perl_files = my_get_module_files( $module );
+  foreach my $file ( @perl_files ) {
+    my $digest = Digest->new( $digest_type );
+    {
+      open my $fh, '<', $file or die "Can't open $file";
+      binmode $fh;
+      $digest->addfile( $fh );
+      close $fh;
+    }
+    my $id = $digest->hexdigest;
+    if ( $regen ) {
+      print $data_fh join(' ', $module, $file, $id), "\n";
+      next;
+    }
+    my $should_be = $customised{ $module }->{ $file };
+    is( $id, $should_be, "SHA for $file matches stashed SHA" );
+  }
+}
+
+if ( $regen ) {
+  pass( "regenerated data file" );
+  close $data_fh;
+}
+
+done_testing();
+
+=pod
+
+=head1 NAME
+
+customized.t - Test that CUSTOMIZED files in Maintainers.pl have not been overwritten
+
+=head1 SYNOPSIS
+
+ cd t
+ ./perl -I../lib porting/customized.t --regen
+
+=head1 DESCRIPTION
+
+customized.t checks that files listed in C<Maintainers.pl> that have been C<CUSTOMIZED>
+are not accidently overwritten by CPAN module updates.
+
+=head1 OPTIONS
+
+=over
+
+=item C<--regen>
+
+Use this command line option to regenerate the C<customized.dat> file.
+
+=back
+
+=cut

Added: vendor/perl/dist/t/porting/extrefs.t
===================================================================
--- vendor/perl/dist/t/porting/extrefs.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/extrefs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,128 @@
+#!./perl -w
+
+# What does this test?
+# Test that changes to perl header files don't cause external
+# references by simplying #including them.  This breaks library probe
+# code on CPAN, and can break cflags.SH.
+#
+# Why do we test this?
+# See https://rt.perl.org/rt3/Ticket/Display.html?id=116989
+#
+# It's broken - how do I fix it?
+# You added an initializer or static function to a header file that
+# references some symbol you didn't define, you need to remove it.
+
+BEGIN {
+  require "./test.pl";
+  unshift @INC, ".." if -f "../TestInit.pm";
+}
+
+use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+use strict;
+use warnings;
+use Config;
+use File::Path 'rmtree';
+use Cwd;
+
+plan(tests => 1);
+
+my $VERBOSE = grep {$_ eq '-v'} @ARGV;
+
+ok(try_compile_and_link(<<'CODE'));
+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+int main(int argc, char **argv) {
+  return 0;
+}
+CODE
+
+
+# from Time::HiRes's Makefile.PL with minor modifications
+sub try_compile_and_link {
+    my ($c, %args) = @_;
+
+    my $ld_exeext = ($^O eq 'cygwin' || $^O eq 'MSWin32' ||
+                 $^O eq 'os2' && $Config{ldflags} =~ /-Zexe\b/) ? '.exe' :
+                (($^O eq 'vos') ? $Config{exe_ext} : '');
+
+    my ($ok) = 0;
+    my $tempdir = tempfile();
+    my $cwd = getcwd();
+    mkdir $tempdir;
+    chdir $tempdir;
+    my ($tmp) = "temp";
+
+    my $obj_ext = $Config{obj_ext} || ".o";
+
+    if (open(my $tmpc, ">$tmp.c")) {
+	print $tmpc $c;
+	unless (close($tmpc)) {
+	    chdir($cwd);
+	    rmtree($tempdir);
+	    warn "Failing closing code file: $!\n" if $VERBOSE;
+	    return 0;
+	}
+
+	my $COREincdir = File::Spec->catdir(File::Spec->updir);
+
+	my $ccflags = $Config{'ccflags'} . ' ' . "-I$COREincdir"
+	 . ' -DPERL_NO_INLINE_FUNCTIONS';
+
+	if ($^O eq "MSWin32") {
+	    $ccflags .= " -I../win32 -I../win32/include";
+	}
+
+	my $libs = '';
+
+	# Include libs to be sure of linking against bufferoverflowU.lib for
+	# the SDK2003 compiler on Windows. See win32/Makefile for more details.
+	if ($^O eq "MSWin32" && $Config{cc} =~ /\bcl\b/i) {
+	    $libs = " /link $Config{'libs'}";
+	}
+
+	my $null = File::Spec->devnull;
+
+	my $errornull = $VERBOSE ? '' : ">$null 2>$null";
+
+	# Darwin g++ 4.2.1 is fussy and demands a space.
+	# FreeBSD g++ 4.2.1 does not.
+	# We do not know the reaction of either to the presence of brown M&Ms.
+	my $out_opt = "-o ";
+	if ($^O eq "MSWin32" && $Config{cc} =~ /\bcl\b/i) {
+	    $out_opt = "/Fe";
+	}
+
+	my $tmp_exe = "$tmp$ld_exeext";
+
+        my $cccmd = "$Config{'cc'} $out_opt$tmp_exe $ccflags $tmp.c $libs $errornull";
+
+	if ($^O eq 'VMS') {
+            $cccmd = "$Config{'cc'} /include=($COREincdir) $tmp.c";
+        }
+
+       if ($^O eq 'VMS') {
+	    open( my $cmdfile, ">$tmp.com" );
+	    print $cmdfile "\$ SET MESSAGE/NOFACILITY/NOSEVERITY/NOIDENT/NOTEXT\n";
+	    print $cmdfile "\$ $cccmd\n";
+	    print $cmdfile "\$ IF \$SEVERITY .NE. 1 THEN EXIT 44\n"; # escalate
+	    close $cmdfile;
+	    system("\@ $tmp.com");
+	    $ok = $?==0;
+	    chdir($cwd);
+	    rmtree($tempdir);
+        }
+        else
+        {
+	    printf "cccmd = $cccmd\n" if $VERBOSE;
+	    my $res = system($cccmd);
+	    $ok = defined($res) && $res == 0 && -s $tmp_exe && -x _;
+
+	    chdir($cwd);
+	    rmtree($tempdir);
+        }
+    }
+
+    return $ok;
+}

Added: vendor/perl/dist/t/porting/globvar.t
===================================================================
--- vendor/perl/dist/t/porting/globvar.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/globvar.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,77 @@
+#!perl -w
+
+use TestInit qw(T);
+use strict;
+use Config;
+
+require 't/test.pl';
+
+skip_all("Code to read symbols not ported to $^O")
+    if $^O eq 'VMS' or $^O eq 'MSWin32';
+
+# Not investigated *why* we don't export these, but we don't, and we've not
+# received any bug reports about it causing problems:
+my %skip = map { ("PL_$_", 1) }
+    qw(
+	  DBcv bitcount cshname force_link_funcs generation lastgotoprobe
+	  mod_latin1_uc modcount no_symref_sv timesbuf uudmap
+	  watchaddr watchok warn_uninit_sv
+     );
+
+$skip{PL_hash_rand_bits}= $skip{PL_hash_rand_bits_enabled}= 1; # we can be compiled without these, so skip testing them
+
+
+my $trial = "nm globals$Config{_o} 2>&1";
+my $yes = `$trial`;
+
+skip_all("Could not run `$trial`") if $?;
+
+my $defined = qr/^[0-9a-fA-F]{8,16}\s+[^Uu]\s+_?/m;
+
+skip_all("Could not spot definition of PL_Yes in output of `$trial`")
+    unless $yes =~ /${defined}PL_Yes/m;
+
+my %exported;
+open my $fh, '-|', $^X, '-Ilib', './makedef.pl', 'PLATFORM=test'
+    or die "Can't run makedef.pl";
+
+while (<$fh>) {
+    next unless /^PL_/;
+    chomp;
+    ++$exported{$_};
+}
+
+close $fh or die "Problem running makedef.pl";
+
+my %unexported;
+
+foreach my $file (map {$_ . $Config{_o}} qw(globals regcomp)) {
+    open $fh, '-|', 'nm', $file
+	or die "Can't run nm $file";
+
+    while (<$fh>) {
+	next unless /$defined(PL_\S+)/;
+	if (delete $exported{$1}) {
+	    note("Seen definition of $1");
+	    next;
+	}
+	++$unexported{$1};
+    }
+    close $fh or die "Problem running nm $file";
+}
+
+foreach (sort keys %exported) {
+ SKIP: {
+    skip("We dont't export '$_' (Perl not built with this enabled?)",1) if $skip{$_};
+    fail("Attempting to export '$_' which is never defined");
+ }
+}
+
+foreach (sort keys %unexported) {
+ SKIP: {
+        skip("We don't export '$_'", 1) if $skip{$_};
+        fail("'$_' is defined, but we do not export it");
+    }
+}
+
+done_testing();

Added: vendor/perl/dist/t/porting/known_pod_issues.dat
===================================================================
--- vendor/perl/dist/t/porting/known_pod_issues.dat	                        (rev 0)
+++ vendor/perl/dist/t/porting/known_pod_issues.dat	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,326 @@
+# This file is the data file for porting/podcheck.t.
+# There are three types of lines.
+# Comment lines are white-space only or begin with a '#', like this one.  Any
+#   changes you make to the comment lines will be lost when the file is
+#   regen'd.
+# Lines without tab characters are simply NAMES of pods that the program knows
+#   will have links to them and the program does not check if those links are
+#   valid.
+# All other lines should have three fields, each separated by a tab.  The
+#   first field is the name of a pod; the second field is an error message
+#   generated by this program; and the third field is a count of how many
+#   known instances of that message there are in the pod.  -1 means that the
+#   program can expect any number of this type of message.
+_control87(3)
+Algorithm::C3
+AnyEvent
+Apache::MP3
+Array::Base
+Attribute::Constant
+basename(1)
+Benchmark::Perl::Formance
+ByteLoader
+bzip2(1)
+Carp::Always
+Carp::Assert
+Carp::Clan
+chcp(1)
+Class::Accessor
+Class::C3
+Class::ISA
+Class::PseudoHash
+Classic::Perl
+Clone
+Crypt::Random
+curl(1)
+Data::Entropy
+Data::Float
+Data::Types
+Date::Pcalc
+DateTime
+DB_File(3)
+DBIx::Profile
+Devel::Callsite
+Devel::DProf
+Devel::DTrace::Provider
+Devel::NYTProf
+Devel::PPPort
+Devel::SawAmpersand
+dirname(1)
+Encode::Locale
+Exporter::Easy
+ExtUtils::Constant::ProxySubs
+fetch(1)
+File::chdir
+File::Copy::Recursive
+File::Findgrep
+File::MMagic
+File::ShareDir
+flock(3)
+fsync(3c)
+gcc(1)
+getpriority(2)
+HTTP::Lite
+inetd(8)
+IPC::Run
+IPC::Signal
+kill(3)
+langinfo(3)
+Lingua::KO::Hangul::Util
+local::lib
+Mail::Send
+man(5)
+man(7)
+Math::Big
+Math::BigInt::Constant
+Math::BigInt::GMP
+Math::BigInt::Pari
+Math::Random::MT::Perl
+Math::Random::Secure
+Math::TrulyRandom
+md5sum(1)
+Module::CPANTS::Analyse
+Module::Find
+Module::Info
+Module::Starter
+Moo
+Moose
+MRO::Compat
+nl_langinfo(3)
+Number::Format
+Object::InsideOut
+Object::Tiny
+open(2)
+OS2::Proc
+OS2::WinObject
+PadWalker
+passwd(1)
+perl(1)
+Perl4::CoreLibs
+Perl::Unsafe::Signals
+perlbug(1)
+PerlIO::locale
+PerlIO::Util
+PerlIO::via::Base64
+PerlIO::via::StripHTML
+perllexwarn(1)
+perlthanks
+pod/perldiag.pod        Verbatim line length including indents exceeds 79 by        1
+pod/perlrun.pod        Verbatim line length including indents exceeds 79 by        3
+POD2::FR
+POD2::IT
+pod2ipf(1)
+pod2man(1)
+Pod::HTML2Pod
+Pod::Plainer
+Pod::PXML
+poll(2)
+prctl(2)
+printf(3)
+pstruct
+ptar(1)
+ptargrep(1)
+pwd_mkdb(8)
+Readonly
+recvmsg(3)
+Role::Tiny
+s2p
+Scalar::Readonly
+Semi::Semicolons
+sendmail(1)
+sendmsg(3)
+sha1sum(1)
+Shell
+Shell::Command
+sock_init(3)
+Socket
+socketpair(3)
+SOM
+splain
+sprintf(3)
+stat(2)
+String::Base
+String::Scanf
+Switch
+tar(1)
+Test::Harness::TAP
+Test::Inline
+Test::MockObject
+Text::Autoformat
+Text::Template
+Text::Unidecode
+Time::Object
+Tk
+Tk::Pod
+tty(1)
+Unicode::Casing
+Unicode::Regex::Set
+Unicode::Semantics
+Unicode::Unihan
+unzip(1)
+Version::Requirements
+wait(2)
+waitpid(3)
+wget(1)
+Win32::Locale
+YAML
+YAML::Syck
+YAML::Tiny
+dist/cwd/lib/file/spec/vms.pm	Verbatim line length including indents exceeds 79 by	1
+dist/cwd/lib/file/spec/win32.pm	Verbatim line length including indents exceeds 79 by	1
+dist/data-dumper/dumper.pm	? Should you be using L<...> instead of	1
+dist/extutils-parsexs/lib/perlxs.pod	Verbatim line length including indents exceeds 79 by	1
+dist/extutils-parsexs/lib/perlxstut.pod	Verbatim line length including indents exceeds 79 by	10
+dist/filter-simple/lib/filter/simple.pm	Verbatim paragraph in NAME section	1
+dist/locale-maketext/lib/locale/maketext/tpj13.pod	No items in =over / =back list	3
+dist/math-bigint/lib/math/bigint.pm	Verbatim line length including indents exceeds 79 by	77
+dist/math-bigint/lib/math/bigint/calcemu.pm	empty section in previous paragraph	3
+dist/math-bigrat/lib/math/bigrat.pm	Verbatim line length including indents exceeds 79 by	7
+dist/math-bigrat/lib/math/bigrat.pm	unresolved internal link	1
+dist/module-corelist/lib/module/corelist.pod	Verbatim line length including indents exceeds 79 by	4
+dist/module-corelist/lib/module/corelist/utils.pm	Verbatim line length including indents exceeds 79 by	2
+dist/net-ping/lib/net/ping.pm	Verbatim line length including indents exceeds 79 by	2
+dist/safe/safe.pm	Verbatim line length including indents exceeds 79 by	1
+dist/safe/safe.pm	empty section in previous paragraph	1
+dist/selfloader/lib/selfloader.pm	Verbatim line length including indents exceeds 79 by	13
+dist/storable/storable.pm	Verbatim line length including indents exceeds 79 by	4
+dist/thread-queue/lib/thread/queue.pm	Verbatim line length including indents exceeds 79 by	4
+dist/threads/lib/threads.pm	Verbatim line length including indents exceeds 79 by	3
+dist/tie-file/lib/tie/file.pm	Verbatim line length including indents exceeds 79 by	3
+ext/b/b/concise.pm	Verbatim line length including indents exceeds 79 by	1
+ext/devel-peek/peek.pm	? Should you be using L<...> instead of	2
+ext/devel-peek/peek.pm	Verbatim line length including indents exceeds 79 by	2
+ext/dynaloader/dynaloader.pm	Verbatim line length including indents exceeds 79 by	1
+ext/file-glob/glob.pm	Verbatim line length including indents exceeds 79 by	15
+ext/hash-util-fieldhash/lib/hash/util/fieldhash.pm	Verbatim line length including indents exceeds 79 by	2
+ext/i18n-langinfo/langinfo.pm	Verbatim line length including indents exceeds 79 by	1
+ext/pod-html/bin/pod2html	Pod NAME already used	1
+ext/pod-html/testdir/perlpodspec-copy.pod	Verbatim line length including indents exceeds 79 by	8
+ext/pod-html/testdir/perlvar-copy.pod	? Should you be using L<...> instead of	3
+ext/pod-html/testdir/perlvar-copy.pod	Verbatim line length including indents exceeds 79 by	6
+ext/posix/lib/posix.pod	Verbatim line length including indents exceeds 79 by	13
+ext/vms-dclsym/dclsym.pm	? Should you be using L<...> instead of	1
+ext/vms-dclsym/dclsym.pm	Verbatim line length including indents exceeds 79 by	1
+ext/vms-stdio/stdio.pm	Verbatim line length including indents exceeds 79 by	1
+ext/xs-apitest/apitest.pm	Verbatim line length including indents exceeds 79 by	1
+install	? Should you be using F<...> or maybe L<...> instead of	1
+installhtml	Verbatim line length including indents exceeds 79 by	3
+os2/os2/os2-extattr/extattr.pm	? Should you be using F<...> or maybe L<...> instead of	1
+os2/os2/os2-process/process.pm	Verbatim line length including indents exceeds 79 by	27
+os2/os2/os2-rexx/dll/dll.pm	Verbatim line length including indents exceeds 79 by	2
+os2/os2/os2-rexx/rexx.pm	Verbatim line length including indents exceeds 79 by	1
+pod/perl.pod	Verbatim line length including indents exceeds 79 by	8
+pod/perlaix.pod	Verbatim line length including indents exceeds 79 by	11
+pod/perlapi.pod	? Should you be using L<...> instead of	76
+pod/perlapi.pod	Verbatim line length including indents exceeds 79 by	6
+pod/perlapi.pod	unresolved internal link	3
+pod/perlapio.pod	Verbatim line length including indents exceeds 79 by	5
+pod/perlbook.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlcall.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlce.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlclib.pod	Verbatim line length including indents exceeds 79 by	3
+pod/perlcygwin.pod	Verbatim line length including indents exceeds 79 by	25
+pod/perldbmfilter.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perldebguts.pod	Verbatim line length including indents exceeds 79 by	34
+pod/perldebtut.pod	Verbatim line length including indents exceeds 79 by	22
+pod/perldebug.pod	Verbatim line length including indents exceeds 79 by	3
+pod/perldiag.pod	=item type mismatch	1
+pod/perldiag.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perldsc.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perldtrace.pod	Verbatim line length including indents exceeds 79 by	26
+pod/perlebcdic.pod	Verbatim line length including indents exceeds 79 by	13
+pod/perlembed.pod	Verbatim line length including indents exceeds 79 by	27
+pod/perlfunc.pod	There is more than one target	1
+pod/perlgit.pod	Verbatim line length including indents exceeds 79 by	12
+pod/perlgpl.pod	Verbatim line length including indents exceeds 79 by	50
+pod/perlguts.pod	? Should you be using F<...> or maybe L<...> instead of	2
+pod/perlguts.pod	? Should you be using L<...> instead of	1
+pod/perlhack.pod	? Should you be using L<...> instead of	1
+pod/perlhack.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlhist.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlhpux.pod	Verbatim line length including indents exceeds 79 by	5
+pod/perlhurd.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlintern.pod	? Should you be using L<...> instead of	5
+pod/perlinterp.pod	? Should you be using L<...> instead of	1
+pod/perliol.pod	Verbatim line length including indents exceeds 79 by	8
+pod/perlipc.pod	Verbatim line length including indents exceeds 79 by	19
+pod/perlirix.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perllol.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perlmacosx.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perlmod.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlmodlib.pod	Verbatim line length including indents exceeds 79 by	3
+pod/perlmodstyle.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlmroapi.pod	? Should you be using L<...> instead of	1
+pod/perlnetware.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perlnewmod.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlootut.pod	? Should you be using F<...> or maybe L<...> instead of	1
+pod/perlos2.pod	? Should you be using L<...> instead of	2
+pod/perlos2.pod	Verbatim line length including indents exceeds 79 by	22
+pod/perlos390.pod	Verbatim line length including indents exceeds 79 by	11
+pod/perlpacktut.pod	Verbatim line length including indents exceeds 79 by	6
+pod/perlperf.pod	Verbatim line length including indents exceeds 79 by	154
+pod/perlpodspec.pod	Verbatim line length including indents exceeds 79 by	9
+pod/perlpodstyle.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlref.pod	Verbatim line length including indents exceeds 79 by	1
+pod/perlrequick.pod	Verbatim line length including indents exceeds 79 by	3
+pod/perlretut.pod	Verbatim line length including indents exceeds 79 by	13
+pod/perlrun.pod	Verbatim line length including indents exceeds 79 by	3
+pod/perlsolaris.pod	Verbatim line length including indents exceeds 79 by	14
+pod/perlsource.pod	? Should you be using F<...> or maybe L<...> instead of	1
+pod/perlsub.pod	? Should you be using F<...> or maybe L<...> instead of	3
+pod/perlsub.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perlsymbian.pod	Verbatim line length including indents exceeds 79 by	20
+pod/perlthrtut.pod	Verbatim line length including indents exceeds 79 by	5
+pod/perltie.pod	Verbatim line length including indents exceeds 79 by	13
+pod/perltrap.pod	? Should you be using F<...> or maybe L<...> instead of	1
+pod/perltru64.pod	? Should you be using F<...> or maybe L<...> instead of	1
+pod/perltru64.pod	Verbatim line length including indents exceeds 79 by	4
+pod/perlunifaq.pod	empty section in previous paragraph	1
+pod/perluniprops.pod	=item type mismatch	6
+pod/perlvms.pod	? Should you be using F<...> or maybe L<...> instead of	1
+pod/perlvms.pod	Verbatim line length including indents exceeds 79 by	2
+pod/perlwin32.pod	Verbatim line length including indents exceeds 79 by	12
+porting/epigraphs.pod	Verbatim line length including indents exceeds 79 by	3
+porting/expand-macro.pl	Verbatim line length including indents exceeds 79 by	2
+porting/how_to_write_a_perldelta.pod	There is no NAME	1
+porting/how_to_write_a_perldelta.pod	Verbatim line length including indents exceeds 79 by	3
+porting/pumpkin.pod	Verbatim line length including indents exceeds 79 by	9
+porting/release_managers_guide.pod	Verbatim line length including indents exceeds 79 by	7
+porting/release_schedule.pod	There is no NAME	1
+porting/todo.pod	Verbatim line length including indents exceeds 79 by	7
+symbian/perlutil.pod	Verbatim line length including indents exceeds 79 by	4
+utils/c2ph	Verbatim line length including indents exceeds 79 by	44
+utils/pod2html	Pod NAME already used	1
+vms/ext/filespec.pm	Verbatim line length including indents exceeds 79 by	1
+x2p/a2p.pod	empty section in previous paragraph	2
+lib/benchmark.pm	Verbatim line length including indents exceeds 79 by	4
+lib/class/struct.pm	Verbatim line length including indents exceeds 79 by	7
+lib/config.pod	? Should you be using L<...> instead of	-1
+lib/config.pod	nested commands F<...F<...>...>	3
+lib/db.pm	Verbatim line length including indents exceeds 79 by	2
+lib/dbm_filter.pm	Verbatim line length including indents exceeds 79 by	1
+lib/dbm_filter/compress.pm	Verbatim line length including indents exceeds 79 by	1
+lib/dbm_filter/encode.pm	Verbatim line length including indents exceeds 79 by	1
+lib/dbm_filter/int32.pm	Verbatim line length including indents exceeds 79 by	1
+lib/dbm_filter/null.pm	Verbatim line length including indents exceeds 79 by	1
+lib/dbm_filter/utf8.pm	Verbatim line length including indents exceeds 79 by	1
+lib/deprecate.pm	Verbatim line length including indents exceeds 79 by	2
+lib/english.pm	Verbatim line length including indents exceeds 79 by	1
+lib/extutils/embed.pm	Verbatim line length including indents exceeds 79 by	2
+lib/extutils/xssymset.pm	Verbatim line length including indents exceeds 79 by	1
+lib/file/basename.pm	Verbatim line length including indents exceeds 79 by	2
+lib/file/find.pm	Verbatim line length including indents exceeds 79 by	1
+lib/getopt/std.pm	Verbatim line length including indents exceeds 79 by	1
+lib/integer.pm	Verbatim line length including indents exceeds 79 by	1
+lib/perl5db.pl	? Should you be using L<...> instead of	1
+lib/perl5db.pl	Verbatim line length including indents exceeds 79 by	1
+lib/perlio.pm	Verbatim line length including indents exceeds 79 by	2
+lib/pod/text/overstrike.pm	Verbatim line length including indents exceeds 79 by	1
+lib/strict.pm	Verbatim line length including indents exceeds 79 by	1
+lib/tie/array.pm	Verbatim line length including indents exceeds 79 by	1
+lib/tie/hash.pm	Verbatim line length including indents exceeds 79 by	3
+lib/tie/scalar.pm	Verbatim line length including indents exceeds 79 by	1
+lib/utf8.pm	Verbatim line length including indents exceeds 79 by	4
+lib/version.pod	Verbatim line length including indents exceeds 79 by	1
+lib/version/internals.pod	Verbatim line length including indents exceeds 79 by	2
+lib/vmsish.pm	Verbatim line length including indents exceeds 79 by	1

Added: vendor/perl/dist/t/porting/pending-author.t
===================================================================
--- vendor/perl/dist/t/porting/pending-author.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/pending-author.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,58 @@
+#!./perl -w
+
+# What does this test?
+# This uses Porting/checkAUTHORS.pl to check that any pending commit isn't
+# about to break t/porting/authors.t
+#
+# Why do we test this?
+# t/porting/authors.t checks that the AUTHORS file is up to date, accounting
+# for the "Author:" of every commit. However, any pending changes can't be
+# tested, which leaves a gotcha - "make test" can pass, one then commits
+# the passing code, pushes it uptream, and tests fail. So this test attempts
+# to spot that problem before it happens, where it can.
+#
+# It's broken - how do I fix it?
+# It will fail if you're in a git checkout, have uncommitted changes, and the
+# e-mail address that your commit will default to is in AUTHORS, or the list
+# of author aliases in Porting/checkAUTHORS.pl. So one of
+# a) reset your pending changes
+# b) change your git config user.email to the previously-known e-mail address
+# c) add yourself to AUTHORS
+# d) add an alias to Porting/checkAUTHORS.pl
+
+BEGIN {
+    @INC = '..' if -f '../TestInit.pm';
+}
+use TestInit qw(T); # T is chdir to the top level
+use strict;
+
+require 't/test.pl';
+find_git_or_skip('all');
+
+my $changes;
+foreach (`git status --porcelain 2>/dev/null`) {
+    next if /^\?\?/;
+    ++$changes;
+    last;
+}
+
+skip_all("No pending changes (or git status --porcelain doesn't work here)")
+    unless $changes;
+
+sub get {
+    my $key = shift;
+    my $value = `git config --get user.$key`;
+    unless (defined $value && $value =~ /\S/) {
+	skip_all("git config --get user.$key returned nought");
+    }
+    chomp $value;
+    return $value;
+}
+
+my $email = get('email');
+my $name = get('name');
+
+open my $fh, '|-', "$^X Porting/checkAUTHORS.pl --tap -"
+    or die $!;
+print $fh "Author: $name <$email>\n";
+close $fh or die $!;

Added: vendor/perl/dist/t/porting/perlfunc.t
===================================================================
--- vendor/perl/dist/t/porting/perlfunc.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/perlfunc.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,30 @@
+#!./perl -w
+
+# What does this test?
+# This checks that changes to pod/perlfunc.pod don't accidentally break the
+# build by causing ext/Pod-Functions/Functions_pm.PL to abort.
+#
+# Why do we test this?
+# Pod::Functions is generated from pod/perlfunc.pod by
+# ext/Pod-Functions/Functions_pm.PL
+# If it can't parse pod/perlfunc.pod, it will abort, which will cause the
+# build to break. It's really not possible for it to carry on, hence aborting
+# is the only option. However, innocent-seeming changes to documentation
+# shouldn't break the build, and we expect everyone to run (at least)
+# the porting tests, hence this test, to catch such problems before it's too
+# late. To avoid duplicating the parsing logic, we make Functions_pm.PL take
+# a --tap option, to test that all is well.
+#
+# It's broken - how do I fix it?
+# Likely it's because you changed something in pod/perlfunc.pod
+# If you added a new function, it needs to be added to one or more groups in
+# "Perl Functions by Category", and to have a one line summary for
+# Pod::Functions provided by a =for directive.
+
+BEGIN {
+    @INC = '..' if -f '../TestInit.pm';
+}
+
+use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+
+system "$^X ext/Pod-Functions/Functions_pm.PL --tap pod/perlfunc.pod";

Added: vendor/perl/dist/t/porting/pod_rules.t
===================================================================
--- vendor/perl/dist/t/porting/pod_rules.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/pod_rules.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+#!./perl
+
+BEGIN {
+    chdir '..' unless -d 't';
+    unshift @INC, 'lib';
+}
+
+use strict;
+require 't/test.pl';
+
+my $result = runperl(switches => ['-f', '-Ilib'], 
+                     progfile => 'Porting/pod_rules.pl',
+                     args     => ['--tap']);
+
+print $result;

Added: vendor/perl/dist/t/porting/utils.t
===================================================================
--- vendor/perl/dist/t/porting/utils.t	                        (rev 0)
+++ vendor/perl/dist/t/porting/utils.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,98 @@
+#!./perl -w
+
+# What does this test?
+# This checks that all the perl "utils" don't have embarrassing syntax errors
+#
+# Why do we test this?
+# Right now, without this, it's possible to pass the all the regression tests
+# even if one has introduced syntax errors into scripts such as installperl
+# or installman. No tests fail, so it's fair game to push the commit.
+# Obviously this breaks installing perl, but we won't spot this.
+# Whilst we can't easily test that the various scripts *work*, we can at least
+# check that we've not made any trivial screw ups.
+#
+# It's broken - how do I fix it?
+# Presumably it's failed because some (other) code that you changed was (also)
+# used by one of the utility scripts. So you'll have to manually test that
+# script.
+
+BEGIN {
+    @INC = '..' if -f '../TestInit.pm';
+}
+use TestInit qw(T); # T is chdir to the top level
+use strict;
+
+require 't/test.pl';
+
+# It turns out that, since the default @INC will include your old 5.x libs, if
+# you have them, the Porting utils might load a library that no longer compiles
+# clean.  This actually happened, with Local::Maketext::Lexicon from a 5.10.0
+# preventing 5.16.0-RC0 from testing successfully.  This test is really only
+# needed for porters, anyway.  -- rjbs, 2012-05-10
+find_git_or_skip('all');
+
+my @maybe;
+
+open my $fh, '<', 'MANIFEST' or die "Can't open MANIFEST: $!";
+while (<$fh>) {
+    push @maybe, $1 if m!^(Porting/\S+)!;
+}
+close $fh or die $!;
+
+open $fh, '<', 'utils.lst' or die "Can't open utils.lst: $!";
+while (<$fh>) {
+    die unless  m!^(\S+)!;
+    push @maybe, $1;
+    $maybe[$#maybe] .= '.com' if $^O eq 'VMS';
+}
+close $fh or die $!;
+
+my @victims = (qw(installman installperl regen_perly.pl));
+my %excuses = (
+               'Porting/git-deltatool' => 'Git::Wrapper',
+               'Porting/podtidy' => 'Pod::Tidy',
+               'Porting/leakfinder.pl' => 'XS::APItest',
+              );
+
+foreach (@maybe) {
+    if (/\.p[lm]$/) {
+        push @victims, $_;
+    } elsif ($_ !~ m{^x2p/a2p}) {
+        # test_prep doesn't (yet) have a dependency on a2p, so it seems a bit
+        # silly adding one (and forcing it to be built) just so that we can open
+        # it and determine that it's *not* a perl program, and hence of no
+        # further interest to us.
+        open $fh, '<', $_ or die "Can't open '$_': $!";
+        my $line = <$fh>;
+        if ($line =~ m{^#!(?:\S*|/usr/bin/env\s+)perl}
+	    || $^O eq 'VMS' && $line =~ m{^\$ perl}) {
+            push @victims, $_;
+        } else {
+            print "# $_ isn't a Perl script\n";
+        }
+    }
+}
+
+printf "1..%d\n", scalar @victims;
+
+foreach my $victim (@victims) {
+ SKIP: {
+        # Not clear to me *why* it needs the BEGIN block, given what it
+        # does, but not in an easy position to change it.
+        skip("$victim executes code in a BEGIN block which fails for empty \@ARGV")
+            if $victim =~ m{^utils/cpanp-run-perl};
+
+        skip ("$victim uses $excuses{$victim}, so can't test with just core modules")
+            if $excuses{$victim};
+
+        my $got = runperl(switches => ['-c'], progfile => $victim, stderr => 1);
+        is($got, "$victim syntax OK\n", "$victim compiles");
+    }
+}
+
+# Local variables:
+# cperl-indent-level: 4
+# indent-tabs-mode: nil
+# End:
+#
+# ex: set ts=8 sts=4 sw=4 et:

Added: vendor/perl/dist/t/re/pos.t
===================================================================
--- vendor/perl/dist/t/re/pos.t	                        (rev 0)
+++ vendor/perl/dist/t/re/pos.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,68 @@
+#!./perl
+
+# Make sure pos / resetting pos on failed match works
+
+use strict;
+use warnings;
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+plan tests => 8;
+
+##  Early bailout of pp_match because matchlen > stringlen
+
+# With a var
+{
+	my $str = "bird";
+
+	$str =~ /i/g;
+
+	is(pos($str),  2, 'pos correct');
+
+	$str =~ /toolongtomatch/g;
+
+	is(pos($str), undef, 'pos undef after failed match');
+}
+
+# With $_
+{
+	$_ = "bird";
+
+	m/i/g;
+
+	is(pos, 2, 'pos correct');
+
+	m/toolongtomatch/g;
+
+	is(pos, undef, 'pos undef after failed match');
+}
+
+## Early bail out of pp_match because ?? already matched
+
+# With a var
+{
+	my $str = "bird";
+
+	for (1..2) {
+		if ($str =~ m?bird?g) {
+			is(pos($str),  4, 'pos correct');
+		} else {
+			is(pos($str), undef, 'pos undef after failed match');
+		}
+	}
+}
+
+# With $_
+{
+	for (1..2) {
+		if (m?\d?g) {
+			is(pos,  1, 'pos correct');
+		} else {
+			is(pos, undef, 'pos undef after failed match');
+		}
+	}
+}

Added: vendor/perl/dist/t/re/recompile.t
===================================================================
--- vendor/perl/dist/t/re/recompile.t	                        (rev 0)
+++ vendor/perl/dist/t/re/recompile.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,195 @@
+#!./perl
+
+# Check that we don't recompile runtime patterns when the pattern hasn't
+# changed
+#
+# Works by checking the debugging output of 'use re debug' and, if
+# available, -Dr. We use both to check that the different code paths
+# with Perl_foo() verses the my_foo() under ext/re/ don't cause any
+# changes.
+
+use strict;
+use warnings;
+
+$| = 1;
+
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = ('../lib','.');
+    require './test.pl';
+    skip_all_if_miniperl("no dynamic loading on miniperl, no re");
+}
+
+
+plan tests => 38;
+
+my $results = runperl(
+			switches => [ '-Dr' ],
+			prog => '1',
+			stderr   => 1,
+		    );
+my $has_Dr = $results !~ /Recompile perl with -DDEBUGGING/;
+
+my $tmpfile = tempfile();
+
+
+# Check that a pattern triggers a regex compilation exactly N times,
+# using either -Dr or 'use re debug'
+# This is partially based on _fresh_perl() in test.pl
+
+sub _comp_n {
+    my ($use_Dr, $n, $prog, $desc) = @_;
+    open my $tf, ">$tmpfile" or die "Cannot open $tmpfile: $!";
+
+    my $switches = [];
+    if ($use_Dr) {
+	push @$switches, '-Dr';
+    }
+    else {
+	$prog = qq{use re qw(debug);\n$prog};
+    }
+
+    print $tf $prog;
+    close $tf or die "Cannot close $tmpfile: $!";
+    my $results = runperl(
+			switches => $switches,
+			progfile => $tmpfile,
+			stderr   => 1,
+		    );
+
+    my $status = $?;
+
+    my $count = () = $results =~ /Final program:/g;
+    if ($count == $n && !$status) {
+	pass($desc);
+    }
+    else {
+	fail($desc);
+        _diag "# COUNT:    $count EXPECTED $n\n";
+        _diag "# STATUS:   $status\n";
+        _diag "# SWITCHES: @$switches\n";
+        _diag "# PROG: \n$prog\n";
+	# this is verbose; uncomment for debugging
+        #_diag "# OUTPUT:\n------------------\n $results-------------------\n";
+    }
+}
+
+# Check that a pattern triggers a regex compilation exactly N times,
+
+sub comp_n {
+    my ($n, $prog, $desc) = @_;
+    if ($has_Dr) {
+	_comp_n(1, $n, $prog, "$desc -Dr");
+    }
+    else {
+	SKIP: {
+	    skip("-Dr not compiled in");
+	}
+    }
+    _comp_n(0, @_);
+}
+
+# Check that a pattern triggers a regex compilation exactly once.
+
+sub comp_1 {
+    comp_n(1, @_);
+}
+
+
+comp_1(<<'CODE', 'simple');
+"a" =~ /$_/ for qw(a a a);
+CODE
+
+comp_1(<<'CODE', 'simple qr');
+"a" =~ qr/$_/ for qw(a a a);
+CODE
+
+comp_1(<<'CODE', 'literal utf8');
+"a" =~ /$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'literal utf8 qr');
+"a" =~ qr/$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'longjmp literal utf8');
+my $x = chr(0x80);
+"a" =~ /$x$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'longjmp literal utf8 qr');
+my $x = chr(0x80);
+"a" =~ qr/$x$_/ for "\x{100}", "\x{100}", "\x{100}";
+CODE
+
+comp_1(<<'CODE', 'utf8');
+"a" =~ /$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'utf8 qr');
+"a" =~ qr/$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'longjmp utf8');
+my $x = chr(0x80);
+"a" =~ /$x$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_1(<<'CODE', 'longjmp utf8');
+my $x = chr(0x80);
+"a" =~ qr/$x$_/ for '\x{100}', '\x{100}', '\x{100}';
+CODE
+
+comp_n(3, <<'CODE', 'mixed utf8');
+"a" =~ /$_/ for "\x{c4}\x{80}",  "\x{100}", "\x{c4}\x{80}";
+CODE
+
+comp_n(3, <<'CODE', 'mixed utf8 qr');
+"a" =~ qr/$_/ for "\x{c4}\x{80}",  "\x{100}", "\x{c4}\x{80}";
+CODE
+
+# note that that for runtime code, each pattern is compiled twice; the
+# second time to allow the parser to see the code.
+
+comp_n(6, <<'CODE', 'runtime code');
+my $x = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ /a$_/ for $x, $x, $x;
+CODE
+
+comp_n(6, <<'CODE', 'runtime code qr');
+my $x = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ qr/a$_/ for $x, $x, $x;
+CODE
+
+comp_n(4, <<'CODE', 'embedded code');
+my $x = qr/(?{1})/;
+"a" =~ /a$_/ for $x, $x, $x;
+CODE
+
+comp_n(4, <<'CODE', 'embedded code qr');
+my $x = qr/(?{1})/;
+"a" =~ qr/a$_/ for $x, $x, $x;
+CODE
+
+comp_n(7, <<'CODE', 'mixed code');
+my $x = qr/(?{1})/;
+my $y = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ /a$x$_/ for $y, $y, $y;
+CODE
+
+comp_n(7, <<'CODE', 'mixed code qr');
+my $x = qr/(?{1})/;
+my $y = '(?{1})';
+BEGIN { $^H |= 0x00200000 } # lightweight "use re 'eval'"
+"a" =~ qr/a$x$_/ for $y, $y, $y;
+CODE
+
+comp_n(6, <<'CODE', 'embedded code qr');
+my $x = qr/a/i;
+my $y = qr/a/;
+"a" =~ qr/a$_/ for $x, $y, $x, $y;
+CODE

Added: vendor/perl/dist/t/re/regex_sets.t
===================================================================
--- vendor/perl/dist/t/re/regex_sets.t	                        (rev 0)
+++ vendor/perl/dist/t/re/regex_sets.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,90 @@
+#!./perl
+
+# This tests (?[...]).  XXX These are just basic tests, as full ones would be
+# best done with an infrastructure change to allow getting out the inversion
+# list of the constructed set and then comparing it character by character
+# with the expected result.
+
+use strict;
+use warnings;
+
+$| = 1;
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = ('../lib','.');
+    require './test.pl';
+}
+
+use utf8;
+no warnings 'experimental::regex_sets';
+
+like("a", qr/(?[ [a]      # This is a comment
+                    ])/, 'Can ignore a comment');
+like("a", qr/(?[ [a]      # [[:notaclass:]]
+                    ])/, 'A comment isn\'t parsed');
+unlike("\x85", qr/(?[ \t
 ])/, 'NEL is white space');
+unlike("\x85", qr/(?[ [\t
] ])/, '... including within nested []');
+like("\x85", qr/(?[ \t + \
 ])/, 'can escape NEL to match');
+like("\x85", qr/(?[ [\
] ])/, '... including within nested []');
+like("\t", qr/(?[ \t + \
 ])/, 'can do basic union');
+like("\cK", qr/(?[ \s ])/, '\s matches \cK');
+unlike("\cK", qr/(?[ \s - \cK ])/, 'can do basic subtraction');
+like(" ", qr/(?[ \s - \cK ])/, 'can do basic subtraction');
+like(":", qr/(?[ [:] ])/, '[:] is not a posix class');
+unlike("\t", qr/(?[ ! \t ])/, 'can do basic complement');
+like("\t", qr/(?[ ! [ ^ \t ] ])/, 'can do basic complement');
+unlike("\r", qr/(?[ \t ])/, '\r doesn\'t match \t ');
+like("\r", qr/(?[ ! \t ])/, 'can do basic complement');
+like("0", qr/(?[ [:word:] & [:digit:] ])/, 'can do basic intersection');
+unlike("A", qr/(?[ [:word:] & [:digit:] ])/, 'can do basic intersection');
+like("0", qr/(?[[:word:]&[:digit:]])/, 'spaces around internal [] aren\'t required');
+
+like("a", qr/(?[ [a] | [b] ])/, '| means union');
+like("b", qr/(?[ [a] | [b] ])/, '| means union');
+unlike("c", qr/(?[ [a] | [b] ])/, '| means union');
+
+like("a", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+unlike("b", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+like("c", qr/(?[ [ab] ^ [bc] ])/, 'basic symmetric difference works');
+
+like("2", qr/(?[ ( ( \pN & ( [a] + [2] ) ) ) ])/, 'Nesting parens and grouping');
+unlike("a", qr/(?[ ( ( \pN & ( [a] + [2] ) ) ) ])/, 'Nesting parens and grouping');
+
+unlike("\x{17f}", qr/(?[ [k] + \p{Blk=ASCII} ])/i, '/i doesn\'t affect \p{}');
+like("\N{KELVIN SIGN}", qr/(?[ [k] + \p{Blk=ASCII} ])/i, '/i does affect literals');
+
+my $thai_or_lao = qr/(?[ \p{Thai} + \p{Lao} ])/;
+my $thai_or_lao_digit = qr/(?[ \p{Digit} & $thai_or_lao ])/;
+like("\N{THAI DIGIT ZERO}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{THAI DIGIT ZERO}") - 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{THAI DIGIT NINE}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{THAI DIGIT NINE}") + 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{LAO DIGIT ZERO}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{LAO DIGIT ZERO}") - 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+like("\N{LAO DIGIT NINE}", $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+unlike(chr(ord("\N{LAO DIGIT NINE}") + 1), $thai_or_lao_digit, 'embedded qr/(?[ ])/ works');
+
+my $ascii_word = qr/(?[ \w ])/a;
+my $ascii_digits_plus_all_of_arabic = qr/(?[ \p{Digit} & $ascii_word + \p{Arabic} ])/;
+like("9", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for ASCII in the set");
+unlike("A", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for ASCII not in the set");
+unlike("\N{BENGALI DIGIT ZERO}", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for non-ASCII not in either set");
+unlike("\N{BENGALI LETTER A}", $ascii_digits_plus_all_of_arabic, "/a, then interpolating and intersection works for non-ASCII in one set");
+like("\N{ARABIC LETTER HAMZA}", $ascii_digits_plus_all_of_arabic, "interpolation and intersection is left-associative");
+like("\N{EXTENDED ARABIC-INDIC DIGIT ZERO}", $ascii_digits_plus_all_of_arabic, "interpolation and intersection is left-associative");
+
+my $kelvin = qr/(?[ \N{KELVIN SIGN} ])/;
+my $fold = qr/(?[ $kelvin ])/i;
+like("\N{KELVIN SIGN}", $kelvin, '"\N{KELVIN SIGN}" matches compiled qr/(?[ \N{KELVIN SIGN} ])/');
+unlike("K", $fold, "/i on outer (?[ ]) doesn't leak to interpolated one");
+unlike("k", $fold, "/i on outer (?[ ]) doesn't leak to interpolated one");
+
+my $kelvin_fold = qr/(?[ \N{KELVIN SIGN} ])/i;
+my $still_fold = qr/(?[ $kelvin_fold ])/;
+like("K", $still_fold, "/i on interpolated (?[ ]) is retained in outer without /i");
+like("k", $still_fold, "/i on interpolated (?[ ]) is retained in outer without /i");
+
+done_testing();
+
+1;

Added: vendor/perl/dist/t/re/regex_sets_compat.t
===================================================================
--- vendor/perl/dist/t/re/regex_sets_compat.t	                        (rev 0)
+++ vendor/perl/dist/t/re/regex_sets_compat.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,15 @@
+#!./perl
+
+# This tests that the (?[...]) feature doesn't introduce unexpected
+# differences from regular bracketed character classes.  It just sets a flag
+# and calls regexp.t which will run through its test suite, modifiying the
+# tests to use (?[...]) instead wherever the test uses [].
+
+BEGIN { $regex_sets = 1; }
+for $file ('./re/regexp.t', './t/re/regexp.t', ':re:regexp.t') {
+    if (-r $file) {
+	do $file or die $@;
+	exit;
+    }
+}
+die "Cannot find ./re/regexp.t or ./t/re/regexp.t\n";

Added: vendor/perl/dist/t/run/dtrace.pl
===================================================================
--- vendor/perl/dist/t/run/dtrace.pl	                        (rev 0)
+++ vendor/perl/dist/t/run/dtrace.pl	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1 @@
+42

Added: vendor/perl/dist/t/run/dtrace.t
===================================================================
--- vendor/perl/dist/t/run/dtrace.t	                        (rev 0)
+++ vendor/perl/dist/t/run/dtrace.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,196 @@
+#!./perl
+
+my $Perl;
+my $dtrace;
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+
+    skip_all_without_config("usedtrace");
+
+    $dtrace = $Config::Config{dtrace};
+
+    $Perl = which_perl();
+
+    `$dtrace -V` or skip_all("$dtrace unavailable");
+
+    my $result = `$dtrace -qnBEGIN -c'$Perl -e 1' 2>&1`;
+    $? && skip_all("Apparently can't probe using $dtrace (perhaps you need root?): $result");
+}
+
+use strict;
+use warnings;
+use IPC::Open2;
+
+plan(tests => 9);
+
+dtrace_like(
+    '1',
+    'BEGIN { trace(42+666) }',
+    qr/708/,
+    'really running DTrace',
+);
+
+dtrace_like(
+    'package My;
+        sub outer { Your::inner() }
+     package Your;
+        sub inner { }
+     package Other;
+        My::outer();
+        Your::inner();',
+
+    'sub-entry { printf("-> %s::%s at %s line %d!\n", copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2) }
+     sub-return { printf("<- %s::%s at %s line %d!\n", copyinstr(arg3), copyinstr(arg0), copyinstr(arg1), arg2) }',
+
+     qr/-> My::outer at - line 2!
+-> Your::inner at - line 4!
+<- Your::inner at - line 4!
+<- My::outer at - line 2!
+-> Your::inner at - line 4!
+<- Your::inner at - line 4!/,
+
+    'traced multiple function calls',
+);
+
+dtrace_like(
+    '1',
+    'phase-change { printf("%s -> %s; ", copyinstr(arg1), copyinstr(arg0)) }',
+    qr/START -> RUN; RUN -> DESTRUCT;/,
+    'phase changes of a simple script',
+);
+
+# this code taken from t/opbasic/magic_phase.t which tests all of the
+# transitions of ${^GLOBAL_PHASE}. instead of printing (which will
+# interact nondeterministically with the DTrace output), we increment
+# an unused variable for side effects
+dtrace_like(<< 'MAGIC_OP',
+    my $x = 0;
+    BEGIN { $x++ }
+    CHECK { $x++ }
+    INIT  { $x++ }
+    sub Moo::DESTROY { $x++ }
+
+    my $tiger = bless {}, Moo::;
+
+    sub Kooh::DESTROY { $x++ }
+
+    our $affe = bless {}, Kooh::;
+
+    END { $x++ }
+MAGIC_OP
+
+    'phase-change { printf("%s -> %s; ", copyinstr(arg1), copyinstr(arg0)) }',
+
+     qr/START -> CHECK; CHECK -> INIT; INIT -> RUN; RUN -> END; END -> DESTRUCT;/,
+
+     'phase-changes in a script that exercises all of ${^GLOBAL_PHASE}',
+);
+
+dtrace_like(<< 'PHASES',
+    my $x = 0;
+    sub foo { $x++ }
+    sub bar { $x++ }
+    sub baz { $x++ }
+
+    INIT { foo() }
+    bar();
+    END { baz() }
+PHASES
+
+    '
+    BEGIN { starting = 1 }
+
+    phase-change                            { phase    = arg0 }
+    phase-change /copyinstr(arg0) == "RUN"/ { starting = 0 }
+    phase-change /copyinstr(arg0) == "END"/ { ending   = 1 }
+
+    sub-entry /copyinstr(arg0) != copyinstr(phase) && (starting || ending)/ {
+        printf("%s during %s; ", copyinstr(arg0), copyinstr(phase));
+    }
+    ',
+
+     qr/foo during INIT; baz during END;/,
+
+     'make sure sub-entry and phase-change interact well',
+);
+
+dtrace_like(<< 'PERL_SCRIPT',
+    my $tmp = "foo";
+    $tmp =~ s/f/b/;
+    chop $tmp;
+PERL_SCRIPT
+    << 'D_SCRIPT',
+    op-entry { printf("op-entry <%s>\n", copyinstr(arg0)) }
+D_SCRIPT
+    [
+        qr/op-entry <subst>/,
+        qr/op-entry <schop>/,
+    ],
+    'basic op probe',
+);
+
+dtrace_like(<< 'PERL_SCRIPT',
+    use strict;
+    require HTTP::Tiny;
+    do "run/dtrace.pl";
+PERL_SCRIPT
+    << 'D_SCRIPT',
+    loading-file { printf("loading-file <%s>\n", copyinstr(arg0)) }
+    loaded-file  { printf("loaded-file <%s>\n", copyinstr(arg0)) }
+D_SCRIPT
+    [
+        # the original test made sure that each file generated a loading-file then a loaded-file,
+        # but that had a race condition when the kernel would push the perl process onto a different
+        # CPU, so the DTrace output would appear out of order
+        qr{loading-file <strict\.pm>.*loading-file <HTTP/Tiny\.pm>.*loading-file <run/dtrace\.pl>}s,
+        qr{loaded-file <strict\.pm>.*loaded-file <HTTP/Tiny\.pm>.*loaded-file <run/dtrace\.pl>}s,
+    ],
+    'loading-file, loaded-file probes',
+);
+
+sub dtrace_like {
+    my $perl     = shift;
+    my $probes   = shift;
+    my $expected = shift;
+    my $name     = shift;
+
+    my ($reader, $writer);
+
+    my $pid = open2($reader, $writer,
+        $dtrace,
+        '-q',
+        '-n', 'BEGIN { trace("ready!\n") }', # necessary! see below
+        '-n', $probes,
+        '-c', $Perl,
+    );
+
+    # wait until DTrace tells us that it is initialized
+    # otherwise our probes won't properly fire
+    chomp(my $throwaway = <$reader>);
+    $throwaway eq "ready!" or die "Unexpected 'ready!' result from DTrace: $throwaway";
+
+    # now we can start executing our perl
+    print $writer $perl;
+    close $writer;
+
+    # read all the dtrace results back in
+    local $/;
+    my $result = <$reader>;
+
+    # make sure that dtrace is all done and successful
+    waitpid($pid, 0);
+    my $child_exit_status = $? >> 8;
+    die "Unexpected error from DTrace: $result"
+        if $child_exit_status != 0;
+
+    if (ref($expected) eq 'ARRAY') {
+        like($result, $_, $name) for @$expected;
+    }
+    else {
+        like($result, $expected, $name);
+    }
+}
+

Added: vendor/perl/dist/t/run/flib/broken.pm
===================================================================
--- vendor/perl/dist/t/run/flib/broken.pm	                        (rev 0)
+++ vendor/perl/dist/t/run/flib/broken.pm	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,8 @@
+package broken;
+
+use strict;
+use warnings;
+
+$x = 1;
+
+1;

Added: vendor/perl/dist/t/run/mad.t
===================================================================
--- vendor/perl/dist/t/run/mad.t	                        (rev 0)
+++ vendor/perl/dist/t/run/mad.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,46 @@
+#!./perl
+#
+# Tests for Perl mad environment
+#
+# $PERL_XMLDUMP
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require Config; import Config;
+    require './test.pl';
+    skip_all_without_config('mad');
+}
+
+use File::Path;
+use File::Spec;
+
+my $tempdir = tempfile;
+
+mkdir $tempdir, 0700 or die "Can't mkdir '$tempdir': $!";
+unshift @INC, '../../lib';
+my $cleanup = 1;
+
+END {
+    if ($cleanup) {
+	rmtree($tempdir);
+    }
+}
+
+plan tests => 4;
+
+{
+    delete local $ENV{$_} for keys %ENV;
+    my $fn = File::Spec->catfile(File::Spec->curdir(), "withoutT.xml");
+    $ENV{PERL_XMLDUMP} = $fn;
+    fresh_perl_is('print q/hello/', '', {}, 'mad without -T');
+    ok(-f $fn, "xml file created without -T as expected");
+}
+
+{
+    delete local $ENV{$_} for keys %ENV;
+    my $fn = File::Spec->catfile(File::Spec->curdir(), "withT.xml");
+    fresh_perl_is('print q/hello/', 'hello', { switches => [ "-T" ] },
+		  'mad with -T');
+    ok(!-e $fn, "no xml file created with -T as expected");
+}

Added: vendor/perl/dist/t/run/switchM.t
===================================================================
--- vendor/perl/dist/t/run/switchM.t	                        (rev 0)
+++ vendor/perl/dist/t/run/switchM.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,19 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+}
+use strict;
+
+require './test.pl';
+
+plan(2);
+
+like(runperl(switches => ['-Irun/flib', '-Mbroken'], stderr => 1),
+     qr/^Global symbol "\$x" requires explicit package name at run\/flib\/broken.pm line 6\./,
+     "Ensure -Irun/flib produces correct filename in warnings");
+
+like(runperl(switches => ['-Irun/flib/', '-Mbroken'], stderr => 1),
+     qr/^Global symbol "\$x" requires explicit package name at run\/flib\/broken.pm line 6\./,
+     "Ensure -Irun/flib/ produces correct filename in warnings");

Added: vendor/perl/dist/t/run/switchx3.aux
===================================================================
--- vendor/perl/dist/t/run/switchx3.aux	                        (rev 0)
+++ vendor/perl/dist/t/run/switchx3.aux	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,2 @@
+print "not ok 5\n";
+die "You shouldn't get here";

Added: vendor/perl/dist/t/test_pl/_num_to_alpha.t
===================================================================
--- vendor/perl/dist/t/test_pl/_num_to_alpha.t	                        (rev 0)
+++ vendor/perl/dist/t/test_pl/_num_to_alpha.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,44 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    require './test.pl';
+}
+
+is( _num_to_alpha(-1), undef, 'Returns undef for negative numbers');
+is( _num_to_alpha( 0), 'A', "Starts at 'A'");
+is( _num_to_alpha( 1), 'B');
+
+is( _num_to_alpha(26 - 1), 'Z', 'Last single letter return value');
+is( _num_to_alpha(26    ), 'AA', 'First double letter return value');
+is( _num_to_alpha(26 + 1), 'AB');
+
+is( _num_to_alpha(26 + 26 - 2), 'AY');
+is( _num_to_alpha(26 + 26 - 1), 'AZ');
+is( _num_to_alpha(26 + 26    ), 'BA');
+is( _num_to_alpha(26 + 26 + 1), 'BB');
+
+is( _num_to_alpha(26 ** 2 - 1), 'YZ');
+is( _num_to_alpha(26 ** 2    ), 'ZA');
+is( _num_to_alpha(26 ** 2 + 1), 'ZB');
+
+is( _num_to_alpha(26 ** 2 + 26 - 1), 'ZZ', 'Last double letter return value');
+is( _num_to_alpha(26 ** 2 + 26    ), 'AAA', 'First triple letter return value');
+is( _num_to_alpha(26 ** 2 + 26 + 1), 'AAB');
+
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 - 1 ), 'ZZZ', 'Last triple letter return value');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26     ), 'AAAA', 'First quadruple letter return value');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 + 1 ), 'AAAB');
+
+note('Testing limit capabilities');
+
+is( _num_to_alpha(26 - 1 , 1), 'Z', 'Largest return value for one letter');
+is( _num_to_alpha(26     , 1), undef); # AA
+
+is( _num_to_alpha(26 ** 2 + 26 - 1 , 2 ), 'ZZ', 'Largest return value for two letters');
+is( _num_to_alpha(26 ** 2 + 26     , 2 ), undef); # AAA
+
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26 - 1 , 3 ), 'ZZZ', 'Largest return value for three letters');
+is( _num_to_alpha(26 ** 3 + 26 ** 2 + 26     , 3 ), undef); # AAAA
+
+done_testing();

Added: vendor/perl/dist/t/test_pl/can_isa_ok.t
===================================================================
--- vendor/perl/dist/t/test_pl/can_isa_ok.t	                        (rev 0)
+++ vendor/perl/dist/t/test_pl/can_isa_ok.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,63 @@
+#!/usr/bin/env perl -w
+
+# Test isa_ok() and can_ok() in test.pl
+
+use strict;
+use warnings;
+
+BEGIN { require "test.pl"; }
+
+require Test::More;
+
+can_ok('Test::More', qw(require_ok use_ok ok is isnt like skip can_ok
+                        pass fail eq_array eq_hash eq_set));
+can_ok(bless({}, "Test::More"), qw(require_ok use_ok ok is isnt like skip 
+                                   can_ok pass fail eq_array eq_hash eq_set));
+
+
+isa_ok(bless([], "Foo"), "Foo");
+isa_ok([], 'ARRAY');
+isa_ok(\42, 'SCALAR');
+{
+    local %Bar::;
+    local @Foo::ISA = 'Bar';
+    isa_ok( "Foo", "Bar" );
+}
+
+
+# can_ok() & isa_ok should call can() & isa() on the given object, not 
+# just class, in case of custom can()
+{
+       local *Foo::can;
+       local *Foo::isa;
+       *Foo::can = sub { $_[0]->[0] };
+       *Foo::isa = sub { $_[0]->[0] };
+       my $foo = bless([0], 'Foo');
+       ok( ! $foo->can('bar') );
+       ok( ! $foo->isa('bar') );
+       $foo->[0] = 1;
+       can_ok( $foo, 'blah');
+       isa_ok( $foo, 'blah');
+}
+
+
+note "object/class_ok"; {
+    {
+        package Child;
+        our @ISA = qw(Parent);
+    }
+
+    {
+        package Parent;
+        sub new { bless {}, shift }
+    }
+
+    # Unfortunately we can't usefully test the failure case without
+    # significantly modifying test.pl
+    class_ok "Child", "Parent";
+    class_ok "Parent", "Parent";
+    object_ok( Parent->new, "Parent" );
+    object_ok( Child->new, "Parent" );
+}
+
+done_testing;

Added: vendor/perl/dist/t/test_pl/tempfile.t
===================================================================
--- vendor/perl/dist/t/test_pl/tempfile.t	                        (rev 0)
+++ vendor/perl/dist/t/test_pl/tempfile.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,60 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    require './test.pl';
+}
+use strict;
+
+my $prefix = 'tmp'.$$;
+
+sub skip_files{
+    my($skip,$to,$next) = @_;
+    my($last,$check);
+    my $cmp = $prefix . $to;
+
+    for( 1..$skip ){
+        $check = tempfile();
+        $last = $_;
+        if( $check eq $cmp && $_ != $skip ){
+            # let the next test pass
+            last;
+        }
+    }
+
+    my $common_mess = "skip $skip filenames to $to so that the next one will end with $next";
+    if( $last == $skip ){
+        if( $check eq $cmp ){
+            pass( $common_mess );
+        }else{
+            my($alpha) = $check =~ /\Atmp\d+([A-Z][A-Z]?)\Z/;
+            fail( $common_mess, "only skipped to $alpha" )
+        }
+    }else{
+        fail( $common_mess, "only skipped $last files" );
+    }
+}
+
+note("skipping the first filename because it is taken for use by _fresh_perl()");
+
+is( tempfile(), "${prefix}B");
+is( tempfile(), "${prefix}C");
+
+skip_files(22,'Y','Z');
+
+is( tempfile(), "${prefix}Z", 'Last single letter filename');
+is( tempfile(), "${prefix}AA", 'First double letter filename');
+
+skip_files(24,'AY','AZ');
+
+is( tempfile(), "${prefix}AZ");
+is( tempfile(), "${prefix}BA");
+
+skip_files(26 * 24 + 24,'ZY','ZZ');
+
+is( tempfile(), "${prefix}ZZ", 'Last available filename');
+ok( !eval{tempfile()}, 'Should bail after Last available filename' );
+my $err = "$@";
+like( $err, qr{^Can't find temporary file name starting}, 'check error string' );
+
+done_testing();

Added: vendor/perl/dist/t/uni/attrs.t
===================================================================
--- vendor/perl/dist/t/uni/attrs.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/attrs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,195 @@
+#!./perl
+
+# Regression tests for attributes.pm and the C< : attrs> syntax.
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+    skip_all_if_miniperl("miniperl can't load attributes");
+}
+
+use utf8;
+use open qw( :utf8 :std );
+use warnings;
+use feature 'unicode_strings';
+
+$SIG{__WARN__} = sub { die @_ };
+
+sub eval_ok ($;$) {
+    eval shift;
+    is( $@, '', @_);
+}
+
+fresh_perl_is 'use attributes; print "ok"', 'ok',
+   'attributes.pm can load without warnings.pm already loaded';
+
+eval 'sub è1 ($) : plùgh ;';
+like $@, qr/^Invalid CODE attributes?: ["']?plùgh["']? at/;
+
+eval 'sub ɛ2 ($) : plǖgh(0,0) xyzzy ;';
+like $@, qr/^Invalid CODE attributes: ["']?plǖgh\(0,0\)["']? /;
+
+eval 'my ($x,$y) : plǖgh;';
+like $@, qr/^Invalid SCALAR attribute: ["']?plǖgh["']? at/;
+
+# bug #16080
+eval '{my $x : plǖgh}';
+like $@, qr/^Invalid SCALAR attribute: ["']?plǖgh["']? at/;
+eval '{my ($x,$y) : plǖgh(})}';
+like $@, qr/^Invalid SCALAR attribute: ["']?plǖgh\(}\)["']? at/;
+
+# More syntax tests from the attributes manpage
+eval 'my $x : Şʨᚻ(10,ᕘ(7,3))  :  에ㄒ펜ሲ;';
+like $@, qr/^Invalid SCALAR attributes: ["']?Şʨᚻ\(10,ᕘ\(7,3\)\) : 에ㄒ펜ሲ["']? at/;
+eval q/my $x : Ugļᑈ('\(") :받;/;
+like $@, qr/^Invalid SCALAR attributes: ["']?Ugļᑈ\('\\\("\) : 받["']? at/;
+eval 'my $x : Şʨᚻ(10,ᕘ();';
+like $@, qr/^Unterminated attribute parameter in attribute list at/;
+eval q/my $x : Ugļᑈ('(');/;
+like $@, qr/^Unterminated attribute parameter in attribute list at/;
+
+sub A::MODIFY_SCALAR_ATTRIBUTES { return }
+eval 'my A $x : plǖgh;';
+like $@, qr/^SCALAR package attribute may clash with future reserved word: ["']?plǖgh["']? at/;
+
+eval 'my A $x : plǖgh plover;';
+like $@, qr/^SCALAR package attributes may clash with future reserved words: ["']?plǖgh["']? /;
+
+no warnings 'reserved';
+eval 'my A $x : plǖgh;';
+is $@, '';
+
+eval 'package Càt; my Càt @socks;';
+like $@, '';
+
+eval 'my Càt %nap;';
+like $@, '';
+
+sub X::MODIFY_CODE_ATTRIBUTES { die "$_[0]" }
+sub X::ᕘ { 1 }
+*Y::bar = \&X::ᕘ;
+*Y::bar = \&X::ᕘ;	# second time for -w
+eval 'package Z; sub Y::bar : ᕘ';
+like $@, qr/^X at /;
+
+# Begin testing attributes that tie
+
+{
+    package Ttìè;
+    sub DESTROY {}
+    sub TIESCALAR { my $x = $_[1]; bless \$x, $_[0]; }
+    sub FETCH { ${$_[0]} }
+    sub STORE {
+	::pass;
+	${$_[0]} = $_[1]*2;
+    }
+    package Tlòòp;
+    sub MODIFY_SCALAR_ATTRIBUTES { tie ${$_[1]}, 'Ttìè', -1; (); }
+}
+
+eval_ok '
+    package Tlòòp;
+    for my $i (0..2) {
+	my $x : TìèLòòp = $i;
+	$x != $i*2 and ::is $x, $i*2;
+    }
+';
+
+# bug #15898
+eval 'our ${""} : ᕘ = 1';
+like $@, qr/Can't declare scalar dereference in "our"/;
+eval 'my $$ᕘ : bar = 1';
+like $@, qr/Can't declare scalar dereference in "my"/;
+
+
+# this will segfault if it fails
+sub PVBM () { 'ᕘ' }
+{ my $dummy = index 'ᕘ', PVBM }
+
+ok !defined(eval 'attributes::get(\PVBM)'), 
+    'PVBMs don\'t segfault attributes::get';
+
+{
+    #  [perl #49472] Attributes + Unknown Error
+    eval '
+	use strict;
+	sub MODIFY_CODE_ATTRIBUTE{}
+	sub f:Blah {$nosuchvar};
+    ';
+
+    my $err = $@;
+    like ($err, qr/Global symbol "\$nosuchvar" requires /, 'perl #49472');
+}
+
+# Test that code attributes always get applied to the same CV that
+# we're left with at the end (bug#66970).
+{
+	package bug66970;
+	our $c;
+	sub MODIFY_CODE_ATTRIBUTES { $c = $_[1]; () }
+	$c=undef; eval 'sub t0 :ᕘ';
+	main::ok $c == \&{"t0"};
+	$c=undef; eval 'sub t1 :ᕘ { }';
+	main::ok $c == \&{"t1"};
+	$c=undef; eval 'sub t2';
+	our $t2a = \&{"t2"};
+	$c=undef; eval 'sub t2 :ᕘ';
+	main::ok $c == \&{"t2"} && $c == $t2a;
+	$c=undef; eval 'sub t3';
+	our $t3a = \&{"t3"};
+	$c=undef; eval 'sub t3 :ᕘ { }';
+	main::ok $c == \&{"t3"} && $c == $t3a;
+	$c=undef; eval 'sub t4 :ᕘ';
+	our $t4a = \&{"t4"};
+	our $t4b = $c;
+	$c=undef; eval 'sub t4 :ᕘ';
+	main::ok $c == \&{"t4"} && $c == $t4b && $c == $t4a;
+	$c=undef; eval 'sub t5 :ᕘ';
+	our $t5a = \&{"t5"};
+	our $t5b = $c;
+	$c=undef; eval 'sub t5 :ᕘ { }';
+	main::ok $c == \&{"t5"} && $c == $t5b && $c == $t5a;
+}
+
+# [perl #68560] Calling closure prototypes (only accessible via :attr)
+{
+  package brength;
+  my $proto;
+  sub MODIFY_CODE_ATTRIBUTES { $proto = $_[1]; _: }
+  eval q{
+     my $x;
+     () = sub :a0 { $x };
+  };
+  package main;
+  eval { $proto->() };               # used to crash in pp_entersub
+  like $@, qr/^Closure prototype called/,
+     "Calling closure proto with (no) args";
+  eval { () = &$proto };             # used to crash in pp_leavesub
+  like $@, qr/^Closure prototype called/,
+     'Calling closure proto with no @_ that returns a lexical';
+}
+
+# [perl #68658] Attributes on stately variables
+{
+  package thwext;
+  sub MODIFY_SCALAR_ATTRIBUTES { () }
+  my $i = 0;
+  my $x_values = '';
+  eval 'sub ᕘ { use 5.01; state $x :A0 = $i++; $x_values .= $x }';
+  ᕘ(); ᕘ();
+  package main;
+  is $x_values, '00', 'state with attributes';
+}
+
+{
+  package 닌g난ㄬ;
+  sub MODIFY_SCALAR_ATTRIBUTES{}
+  sub MODIFY_ARRAY_ATTRIBUTES{  }
+  sub MODIFY_HASH_ATTRIBUTES{    }
+  my ($cows, @go, %bong) : テa퐅Š = qw[ jibber jabber joo ];
+  ::is $cows, 'jibber', 'list assignment to scalar with attrs';
+  ::is "@go", 'jabber joo', 'list assignment to array with attrs';
+}
+
+done_testing();

Added: vendor/perl/dist/t/uni/bless.t
===================================================================
--- vendor/perl/dist/t/uni/bless.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/bless.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,124 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+plan (84);
+
+sub expected {
+    my($object, $package, $type) = @_;
+    print "# $object $package $type\n";
+    is(ref($object), $package);
+    my $r = qr/^\Q$package\E=(\w+)\(0x([0-9a-f]+)\)$/u;
+    like("$object", $r);
+    if ("$object" =~ $r) {
+	is($1, $type);
+	# in 64-bit platforms hex warns for 32+ -bit values
+	cmp_ok(do {no warnings 'portable'; hex($2)}, '==', $object);
+    }
+    else {
+	fail(); fail();
+    }
+}
+
+# test blessing simple types
+
+$a1 = bless {}, "ዐ";
+expected($a1, "ዐ", "HASH");
+$b1 = bless [], "B";
+expected($b1, "B", "ARRAY");
+$c1 = bless \(map "$_", "test"), "ᶜ";
+expected($c1, "ᶜ", "SCALAR");
+$tèst = "foo"; $d1 = bless \*tèst, "ɖ";
+expected($d1, "ɖ", "GLOB");
+$e1 = bless sub { 1 }, "ಎ";
+expected($e1, "ಎ", "CODE");
+$f1 = bless \[], "ḟ";
+expected($f1, "ḟ", "REF");
+$g1 = bless \substr("test", 1, 2), "ㄍ";
+expected($g1, "ㄍ", "LVALUE");
+
+# blessing ref to object doesn't modify object
+
+expected(bless(\$a1, "ḟ"), "ḟ", "REF");
+expected($a1, "ዐ", "HASH");
+
+# reblessing does modify object
+
+bless $a1, "ዐ2";
+expected($a1, "ዐ2", "HASH");
+
+# local and my
+{
+    local $a1 = bless $a1, "ዐ3";	# should rebless outer $a1
+    local $b1 = bless [], "B3";
+    my $c1 = bless $c1, "ᶜ3";		# should rebless outer $c1
+    our $test2 = ""; my $d1 = bless \*test2, "ɖ3";
+    expected($a1, "ዐ3", "HASH");
+    expected($b1, "B3", "ARRAY");
+    expected($c1, "ᶜ3", "SCALAR");
+    expected($d1, "ɖ3", "GLOB");
+}
+expected($a1, "ዐ3", "HASH");
+expected($b1, "B", "ARRAY");
+expected($c1, "ᶜ3", "SCALAR");
+expected($d1, "ɖ", "GLOB");
+
+# class is magic
+"ಎ" =~ /(.)/;
+expected(bless({}, $1), "ಎ", "HASH");
+{
+    local $! = 1;
+    my $string = "$!";
+    $! = 2;	# attempt to avoid cached string
+    $! = 1;
+    expected(bless({}, $!), $string, "HASH");
+
+# ref is ref to magic
+    {
+	{
+	    package ḟ;
+	    sub test { main::is(${$_[0]}, $string) }
+	}
+	$! = 2;
+	$f1 = bless \$!, "ḟ";
+	$! = 1;
+	$f1->test;
+    }
+}
+
+# ref is magic
+
+# class is a ref
+$a1 = bless {}, "ዐ4";
+$b1 = eval { bless {}, $a1 };
+isnt ($@, '', "class is a ref");
+
+# class is an overloaded ref
+=begin
+$TODO = "Package not yet clean";
+{
+    package ᚺ4;
+    use overload '""' => sub { "ᶜ4" };
+}
+$h1 = bless {}, "ᚺ4";
+$c4 = eval { bless \$test, $h1 };
+is ($@, '', "class is an overloaded ref");
+expected($c4, 'ᶜ4', "SCALAR");
+=cut
+
+{
+    my %h = 1..2;
+    my($k) = keys %h; 
+    my $x=\$k;
+    bless $x, 'pàm';
+    is(ref $x, 'pàm');
+
+    my $a = bless \(keys %h), 'zàp';
+    is(ref $a, 'zàp');
+}

Added: vendor/perl/dist/t/uni/caller.t
===================================================================
--- vendor/perl/dist/t/uni/caller.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/caller.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,71 @@
+#!./perl
+# Tests for caller()
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+    plan( tests => 18 );
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+package main;
+
+{
+    local $@;
+    eval 'ok(1);';
+    ::like $@, qr/Undefined subroutine &main::ok called at/u;
+}
+my @c;
+
+sub { @c = caller(0) } -> ();
+::is( $c[3], "main::__ANON__", "anonymous subroutine name" );
+::ok( $c[4], "hasargs true with anon sub" );
+
+# Bug 20020517.003, used to dump core
+sub foo { @c = caller(0) }
+my $fooref = delete $main::{foo};
+$fooref -> ();
+::is( $c[3], "main::__ANON__", "deleted subroutine name" );
+::ok( $c[4], "hasargs true with deleted sub" );
+
+print "# Tests with caller(1)\n";
+
+sub f { @c = caller(1) }
+
+sub callf { f(); }
+callf();
+::is( $c[3], "main::callf", "subroutine name" );
+::ok( $c[4], "hasargs true with callf()" );
+&callf;
+::ok( !$c[4], "hasargs false with &callf" );
+
+eval { f() };
+::is( $c[3], "(eval)", "subroutine name in an eval {}" );
+::ok( !$c[4], "hasargs false in an eval {}" );
+
+eval q{ f() };
+::is( $c[3], "(eval)", "subroutine name in an eval ''" );
+::ok( !$c[4], "hasargs false in an eval ''" );
+
+sub { f() } -> ();
+::is( $c[3], "main::__ANON__", "anonymous subroutine name" );
+::ok( $c[4], "hasargs true with anon sub" );
+
+sub foo2 { f() }
+my $fooref2 = delete $main::{foo2};
+$fooref2 -> ();
+::is( $c[3], "main::__ANON__", "deleted subroutine name" );
+::ok( $c[4], "hasargs true with deleted sub" );
+
+sub pb { return (caller(0))[3] }
+
+::is( eval 'pb()', 'main::pb', "actually return the right function name" );
+
+my $saved_perldb = $^P;
+$^P = 16;
+$^P = $saved_perldb;
+
+::is( eval 'pb()', 'main::pb', 'actually return the right function name even if $^P had been on at some point' );

Added: vendor/perl/dist/t/uni/eval.t
===================================================================
--- vendor/perl/dist/t/uni/eval.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/eval.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,42 @@
+#!./perl
+
+# Check if eval correctly ignores the UTF-8 hint.
+
+BEGIN {
+    require './test.pl';
+}
+
+plan (tests => 5);
+
+use open qw( :utf8 :std );
+use feature 'unicode_eval';
+
+{
+    my $w;
+    $SIG{__WARN__} = sub { $w = shift };
+    use utf8;
+    my $prog = "qq!\x{f9}!";
+
+    eval $prog;
+    ok !$w;
+
+    $w = "";
+    utf8::upgrade($prog);
+    eval $prog;
+    is $w, '';
+}
+
+{
+    use utf8;
+    isnt eval "q!\360\237\220\252!", eval "q!\x{1f42a}!";
+}
+
+{
+    no utf8; #Let's make real sure.
+    my $not_utf8 = "q!\343\203\213!";
+    isnt eval $not_utf8, eval "q!\x{30cb}!";
+    {
+        use utf8;
+        isnt eval $not_utf8, eval "q!\x{30cb}!";
+    }
+}

Added: vendor/perl/dist/t/uni/goto.t
===================================================================
--- vendor/perl/dist/t/uni/goto.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/goto.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,41 @@
+#!./perl -w
+
+BEGIN {
+    require './test.pl';
+}
+
+plan tests => 4;
+
+use utf8;
+use open qw( :utf8 :std );
+
+sub goto_baresub {
+    goto &問題の原因;
+}
+
+sub goto_softref {
+    goto &{"問題の原因"};
+}
+
+sub goto_softref_octal {
+    goto &{"\345\225\217\351\241\214\343\201\256\345\216\237\345\233\240"};
+}
+
+sub 問題の原因 {
+    1;
+}
+
+ok goto_baresub(), "Magical goto works on an UTF-8 sub,";
+ok goto_softref(), "..and an UTF-8 softref sub,";
+
+{
+    local $@;
+    eval { goto_softref_octal() };
+    like $@, qr/Goto undefined subroutine &main::\345\225\217\351\241\214\343\201\256\345\216\237\345\233\240/, "But does NOT find the softref sub when it's lacking the UTF-8 flag";
+}
+
+{
+    local $@;
+    eval { goto &因 };
+    like $@, qr/Goto undefined subroutine &main::因/, "goto undefined sub gets the right error message";
+}

Added: vendor/perl/dist/t/uni/gv.t
===================================================================
--- vendor/perl/dist/t/uni/gv.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/gv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,843 @@
+#!./perl
+
+#
+# various typeglob tests
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+use warnings;
+
+plan( tests => 212 );
+
+# type coersion on assignment
+$ᕘ = 'ᕘ';
+$ᴮᛅ = *main::ᕘ;
+$ᴮᛅ = $ᕘ;
+is(ref(\$ᴮᛅ), 'SCALAR');
+$ᕘ = *main::ᴮᛅ;
+
+# type coersion (not) on misc ops
+
+ok($ᕘ);
+is(ref(\$ᕘ), 'GLOB');
+
+unlike ($ᕘ, qr/abcd/);
+is(ref(\$ᕘ), 'GLOB');
+
+is($ᕘ, '*main::ᴮᛅ');
+is(ref(\$ᕘ), 'GLOB');
+
+{
+ no warnings;
+ ${\*$ᕘ} = undef;
+ is(ref(\$ᕘ), 'GLOB', 'no type coersion when assigning to *{} retval');
+ $::{ఫケ} = *ᴮᛅ;
+ is(
+   \$::{ఫケ}, \*{"ఫケ"},
+   'symbolic *{} returns symtab entry when FAKE'
+ );
+ ${\*{"ఫケ"}} = undef;
+ is(
+   ref(\$::{ఫケ}), 'GLOB',
+  'no type coersion when assigning to retval of symbolic *{}'
+ );
+ $::{pɥአQuઍ} = *ᴮᛅ;
+ eval '
+   is(
+     \$::{pɥአQuઍ}, \*pɥአQuઍ,
+     "compile-time *{} returns symtab entry when FAKE"
+   );
+   ${\*pɥአQuઍ} = undef;
+ ';
+ is(
+   ref(\$::{pɥአQuઍ}), 'GLOB',
+  'no type coersion when assigning to retval of compile-time *{}'
+ );
+}
+
+# type coersion on substitutions that match
+$a = *main::ᕘ;
+$b = $a;
+$a =~ s/^X//;
+is(ref(\$a), 'GLOB');
+$a =~ s/^\*//;
+is($a, 'main::ᕘ');
+is(ref(\$b), 'GLOB');
+
+# typeglobs as lvalues
+substr($ᕘ, 0, 1) = "XXX";
+is(ref(\$ᕘ), 'SCALAR');
+is($ᕘ, 'XXXmain::ᴮᛅ');
+
+# returning glob values
+sub ᕘ {
+  local($ᴮᛅ) = *main::ᕘ;
+  $ᕘ = *main::ᴮᛅ;
+  return ($ᕘ, $ᴮᛅ);
+}
+
+($ፉṶ, $ባ) = ᕘ();
+ok(defined $ፉṶ);
+is(ref(\$ፉṶ), 'GLOB');
+
+
+ok(defined $ባ);
+is(ref(\$ባ), 'GLOB');
+
+# nested package globs
+# NOTE:  It's probably OK if these semantics change, because the
+#        fact that %X::Y:: is stored in %X:: isn't documented.
+#        (I hope.)
+
+{ package ฝ오::ʉ; no warnings 'once'; $test=1; }
+ok(exists $ฝ오::{'ʉ::'});
+is($ฝ오::{'ʉ::'}, '*ฝ오::ʉ::');
+
+
+# test undef operator clearing out entire glob
+$ᕘ = 'stuff';
+@ᕘ = qw(more stuff);
+%ᕘ = qw(even more random stuff);
+undef *ᕘ;
+is ($ᕘ, undef);
+is (scalar @ᕘ, 0);
+is (scalar %ᕘ, 0);
+
+{
+    # test warnings from assignment of undef to glob
+    my $msg = '';
+    local $SIG{__WARN__} = sub { $msg = $_[0] };
+    use warnings;
+    *ᕘ = 'ᴮᛅ';
+    is($msg, '');
+    *ᕘ = undef;
+    like($msg, qr/Undefined value assigned to typeglob/);
+
+    no warnings 'once';
+    # test warnings for converting globs to other forms
+    my $copy = *PWÒMPF;
+    foreach ($copy, *SKRÈÈÈ) {
+	$msg = '';
+	my $victim = sprintf "%d", $_;
+	like($msg, qr/Argument "\*main::(\p{ASCII}|\Q\x{\E\p{ASCII_Hex_Digit}{2}\}){3}\Q...\E" isn't numeric in sprintf/,
+	     "Warning on conversion to IV");
+	is($victim, 0);
+
+	$msg = '';
+	$victim = sprintf "%u", $_;
+	like($msg, qr/Argument "\*main::(\p{ASCII}|\Q\x{\E\p{ASCII_Hex_Digit}{2}\}){3}\Q...\E" isn't numeric in sprintf/,
+	     "Warning on conversion to UV");
+	is($victim, 0);
+
+	$msg = '';
+	$victim = sprintf "%e", $_;
+	like($msg, qr/Argument "\*main::(\p{ASCII}|\Q\x{\E\p{ASCII_Hex_Digit}{2}\}){3}\Q...\E" isn't numeric in sprintf/,
+	     "Warning on conversion to NV");
+	like($victim, qr/^0\.0+E\+?00/i, "Expect floating point zero");
+
+	$msg = '';
+	$victim = sprintf "%s", $_;
+	is($msg, '', "No warning on stringification");
+	is($victim, '' . $_);
+    }
+}
+
+my $test = curr_test();
+# test *glob{THING} syntax
+$Ẋ = "ok $test\n";
+++$test;
+@Ẋ = ("ok $test\n");
+++$test;
+%Ẋ = ("ok $test" => "\n");
+++$test;
+sub Ẋ { "ok $test\n" }
+print ${*Ẋ{SCALAR}}, @{*Ẋ{ARRAY}}, %{*Ẋ{HASH}}, &{*Ẋ{CODE}};
+# This needs to go here, after the print, as sub Ẋ will return the current
+# value of test
+++$test;
+format Ẋ =
+XXX This text isn't used. Should it be?
+.
+curr_test($test);
+
+is (ref *Ẋ{FORMAT}, "FORMAT");
+*Ẋ = *STDOUT;
+is (*{*Ẋ{GLOB}}, "*main::STDOUT");
+
+{
+    my $test = curr_test();
+
+    print {*Ẋ{IO}} "ok $test\n";
+    ++$test;
+
+    my $warn;
+    local $SIG{__WARN__} = sub {
+	$warn .= $_[0];
+    };
+    my $val = *Ẋ{FILEHANDLE};
+    print {*Ẋ{IO}} ($warn =~ /is deprecated/
+		    ? "ok $test\n" : "not ok $test\n");
+    curr_test(++$test);
+}
+
+
+{
+    # test if defined() doesn't create any new symbols
+
+    my $a = "Sʎm000";
+    ok(!defined *{$a});
+
+    {
+	no warnings 'deprecated';
+	ok(!defined @{$a});
+    }
+    ok(!defined *{$a});
+
+    {
+	no warnings 'deprecated';
+	ok(!defined %{$a});
+    }
+    ok(!defined *{$a});
+
+    ok(!defined ${$a});
+    ok(!defined *{$a});
+
+    ok(!defined &{$a});
+    ok(!defined *{$a});
+
+    my $state = "not";
+    *{$a} = sub { $state = "ok" };
+    ok(defined &{$a});
+    ok(defined *{$a});
+    &{$a};
+    is ($state, 'ok');
+}
+
+# [ID 20010526.001] localized glob loses value when assigned to
+
+$J=1; %J=(a=>1); @J=(1); local *J=*J; *J = sub{};
+
+is($J, 1);
+is($J{a}, 1);
+is($J[0], 1);
+
+{
+    # does pp_readline() handle glob-ness correctly?
+    my $g = *ᕘ;
+    $g = <DATA>;
+    is ($g, "Perl\n");
+}
+
+{
+    my $w = '';
+    local $SIG{__WARN__} = sub { $w = $_[0] };
+    sub aʙȼ1 ();
+    local *aʙȼ1 = sub { };
+    is ($w, '');
+    sub aʙȼ2 ();
+    local *aʙȼ2;
+    *aʙȼ2 = sub { };
+    is ($w, '');
+    sub aʙȼ3 ();
+    *aʙȼ3 = sub { };
+    like ($w, qr/Prototype mismatch/);
+}
+
+{
+    # [17375] rcatline to formerly-defined undef was broken. Fixed in
+    # do_readline by checking SvOK. AMS, 20020918
+    my $x = "not ";
+    $x  = undef;
+    $x .= <DATA>;
+    is ($x, "Rules\n");
+}
+
+{
+    # test the assignment of a GLOB to an LVALUE
+    my $e = '';
+    local $SIG{__DIE__} = sub { $e = $_[0] };
+    my %V;
+    sub ƒ { $_[0] = 0; $_[0] = "a"; $_[0] = *DATA }
+    ƒ($V{V});
+    is ($V{V}, '*main::DATA');
+    is (ref\$V{V}, 'GLOB', 'lvalue assignment preserves globs');
+    my $x = readline $V{V};
+    is ($x, "perl\n");
+    is ($e, '', '__DIE__ handler never called');
+}
+
+{
+
+    my $e = '';
+    # GLOB assignment to tied element
+    local $SIG{__DIE__} = sub { $e = $_[0] };
+    sub Ʈ::TIEARRAY  { bless [] => "Ʈ" }
+    sub Ʈ::STORE     { $_[0]->[ $_[1] ] = $_[2] }
+    sub Ʈ::FETCH     { $_[0]->[ $_[1] ] }
+    sub Ʈ::FETCHSIZE { @{$_[0]} }
+    tie my @ary => "Ʈ";
+    $ary[0] = *DATA;
+    is ($ary[0], '*main::DATA');
+    is (
+      ref\tied(@ary)->[0], 'GLOB',
+     'tied elem assignment preserves globs'
+    );
+    is ($e, '', '__DIE__ handler not called');
+    my $x = readline $ary[0];
+    is($x, "rocks\n");
+    is ($e, '', '__DIE__ handler never called');
+}
+
+{
+    SKIP: {
+        skip_if_miniperl('no dynamic loading on miniperl, no Encode', 2);
+        # Need some sort of die or warn to get the global destruction text if the
+        # bug is still present
+        my $prog = <<'EOPROG';
+            use utf8;
+            use open qw( :utf8 :std );
+            package ᴹ;
+            $| = 1;
+            sub DESTROY {eval {die qq{Farewell $_[0]}}; print $@}
+            package main;
+    
+            bless \$Ⱥ::ㄅ, q{ᴹ};
+            *Ⱥ:: = \*ㄅ::;
+EOPROG
+    
+        utf8::decode($prog);
+        my $output = runperl(prog => $prog);
+        
+        require Encode;
+        $output = Encode::decode("UTF-8", $output);
+        like($output, qr/^Farewell ᴹ=SCALAR/, "DESTROY was called");
+        unlike($output, qr/global destruction/,
+            "unreferenced symbol tables should be cleaned up immediately");
+    }
+}
+
+{
+    # Possibly not the correct test file for these tests.
+    # There are certain space optimisations implemented via promotion rules to
+    # GVs
+    
+    foreach (qw (оઓnḲ ga_ㄕƚo잎)) {
+        ok(!exists $::{$_}, "no symbols of any sort to start with for $_");
+    }
+    
+    # A string in place of the typeglob is promoted to the function prototype
+    $::{оઓnḲ} = "pìè";
+    my $proto = eval 'prototype \&оઓnḲ';
+    die if $@;
+    is ($proto, "pìè", "String is promoted to prototype");
+    
+    
+    # A reference to a value is used to generate a constant subroutine
+    foreach my $value (3, "Perl rules", \42, qr/whatever/, [1,2,3], {1=>2},
+                    \*STDIN, \&ok, \undef, *STDOUT) {
+        delete $::{оઓnḲ};
+        $::{оઓnḲ} = \$value;
+        $proto = eval 'prototype \&оઓnḲ';
+        die if $@;
+        is ($proto, '', "Prototype for a constant subroutine is empty");
+    
+        my $got = eval 'оઓnḲ';
+        die if $@;
+        is (ref $got, ref $value, "Correct type of value (" . ref($value) . ")");
+        is ($got, $value, "Value is correctly set");
+    }
+}
+
+delete $::{оઓnḲ};
+$::{оઓnḲ} = \"Value";
+
+*{"ga_ㄕƚo잎"} = \&{"оઓnḲ"};
+
+is (ref $::{ga_ㄕƚo잎}, 'SCALAR', "Export of proxy constant as is");
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'ga_ㄕƚo잎', "Value", "Constant has correct value");
+is (ref $::{ga_ㄕƚo잎}, 'SCALAR',
+    "Inlining of constant doesn't change representation");
+
+delete $::{ga_ㄕƚo잎};
+
+eval 'sub ga_ㄕƚo잎 (); 1' or die $@;
+is ($::{ga_ㄕƚo잎}, '', "Prototype is stored as an empty string");
+
+# Check that a prototype expands.
+*{"ga_ㄕƚo잎"} = \&{"оઓnḲ"};
+
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'ga_ㄕƚo잎', "Value", "Constant has correct value");
+is (ref \$::{ga_ㄕƚo잎}, 'GLOB', "Symbol table has full typeglob");
+
+
+@::zᐓt = ('Zᐓt!');
+
+# Check that assignment to an existing typeglob works
+{
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  *{"zᐓt"} = \&{"оઓnḲ"};
+  is($w, '', "Should be no warning");
+}
+
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'zᐓt', "Value", "Constant has correct value");
+is (ref \$::{zᐓt}, 'GLOB', "Symbol table has full typeglob");
+is (join ('!', @::zᐓt), 'Zᐓt!', "Existing array still in typeglob");
+
+sub Ṩp맅싵Ş () {
+    "Traditional";
+}
+
+# Check that assignment to an existing subroutine works
+{
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  *{"Ṩp맅싵Ş"} = \&{"оઓnḲ"};
+  like($w, qr/^Constant subroutine main::Ṩp맅싵Ş redefined/,
+       "Redefining a constant sub should warn");
+}
+
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'Ṩp맅싵Ş', "Value", "Constant has correct value");
+is (ref \$::{Ṩp맅싵Ş}, 'GLOB', "Symbol table has full typeglob");
+
+# Check that assignment to an existing typeglob works
+{
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  *{"plუᒃ"} = [];
+  *{"plუᒃ"} = \&{"оઓnḲ"};
+  is($w, '', "Should be no warning");
+}
+
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'plუᒃ', "Value", "Constant has correct value");
+is (ref \$::{plუᒃ}, 'GLOB', "Symbol table has full typeglob");
+
+my $gr = eval '\*plუᒃ' or die;
+
+{
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  *{$gr} = \&{"оઓnḲ"};
+  is($w, '', "Redefining a constant sub to another constant sub with the same underlying value should not warn (It's just re-exporting, and that was always legal)");
+}
+
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'plუᒃ', "Value", "Constant has correct value");
+is (ref \$::{plუᒃ}, 'GLOB', "Symbol table has full typeglob");
+
+# Non-void context should defeat the optimisation, and will cause the original
+# to be promoted (what change 26482 intended)
+my $result;
+{
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  $result = *{"aẈʞƙʞƙʞƙ"} = \&{"оઓnḲ"};
+  is($w, '', "Should be no warning");
+}
+
+is (ref \$result, 'GLOB',
+    "Non void assignment should still return a typeglob");
+
+is (ref \$::{оઓnḲ}, 'GLOB', "This export does affect original");
+is (eval 'plუᒃ', "Value", "Constant has correct value");
+is (ref \$::{plუᒃ}, 'GLOB', "Symbol table has full typeglob");
+
+delete $::{оઓnḲ};
+$::{оઓnḲ} = \"Value";
+
+sub non_dangling {
+  my $w = '';
+  local $SIG{__WARN__} = sub { $w = $_[0] };
+  *{"z앞"} = \&{"оઓnḲ"};
+  is($w, '', "Should be no warning");
+}
+
+non_dangling();
+is (ref $::{оઓnḲ}, 'SCALAR', "Export doesn't affect original");
+is (eval 'z앞', "Value", "Constant has correct value");
+is (ref $::{z앞}, 'SCALAR', "Exported target is also a PCS");
+
+sub dangling {
+  local $SIG{__WARN__} = sub { die $_[0] };
+  *{"ビfᶠ"} = \&{"оઓnḲ"};
+}
+
+dangling();
+is (ref \$::{оઓnḲ}, 'GLOB', "This export does affect original");
+is (eval 'ビfᶠ', "Value", "Constant has correct value");
+is (ref \$::{ビfᶠ}, 'GLOB', "Symbol table has full typeglob");
+
+{
+    use vars qw($gᓙʞ $sምḲ $ᕘf);
+    # Check reference assignment isn't affected by the SV type (bug #38439)
+    $gᓙʞ = 3;
+    $sምḲ = 4;
+    $ᕘf = "halt and cool down";
+
+    my $rv = \*sምḲ;
+    is($gᓙʞ, 3);
+    *gᓙʞ = $rv;
+    is($gᓙʞ, 4);
+
+    my $pv = "";
+    $pv = \*sምḲ;
+    is($ᕘf, "halt and cool down");
+    *ᕘf = $pv;
+    is($ᕘf, 4);
+}
+
+{
+no warnings 'once';
+format =
+.
+    
+    foreach my $value ([1,2,3], {1=>2}, *STDOUT{IO}, \&ok, *STDOUT{FORMAT}) {
+        # *STDOUT{IO} returns a reference to a PVIO. As it's blessed, ref returns
+        # IO::Handle, which isn't what we want.
+        my $type = $value;
+        $type =~ s/.*=//;
+        $type =~ s/\(.*//;
+        delete $::{оઓnḲ};
+        $::{оઓnḲ} = $value;
+        $proto = eval 'prototype \&оઓnḲ';
+        like ($@, qr/^Cannot convert a reference to $type to typeglob/,
+            "Cannot upgrade ref-to-$type to typeglob");
+    }
+}
+
+{
+    no warnings qw(once uninitialized);
+    my $g = \*ȼલᑧɹ;
+    my $r = eval {no strict; ${*{$g}{SCALAR}}};
+    is ($@, '', "PERL_DONT_CREATE_GVSV shouldn't affect thingy syntax");
+
+    $g = \*vȍwɯ;
+    $r = eval {use strict; ${*{$g}{SCALAR}}};
+    is ($@, '',
+	"PERL_DONT_CREATE_GVSV shouldn't affect thingy syntax under strict");
+}
+
+{
+    # Bug reported by broquaint on IRC
+    *ᔅᓗsḨ::{HASH}->{ISA}=[];
+    ᔅᓗsḨ->import;
+    pass("gv_fetchmeth coped with the unexpected");
+
+    # An audit found these:
+    {
+	package ᔅᓗsḨ;
+	sub 맆 {
+	    my $s = shift;
+	    $s->SUPER::맆;
+	}
+    }
+    {
+        eval {ᔅᓗsḨ->맆;};
+        like ($@, qr/^Can't locate object method "맆"/, "Even with SUPER");
+    }
+    is(ᔅᓗsḨ->isa('swoosh'), '');
+}
+
+{
+    die if exists $::{본ㄎ};
+    $::{본ㄎ} = \"포ヰe";
+    *{"본ㄎ"} = \&{"본ㄎ"};
+    eval 'is(본ㄎ(), "포ヰe",
+             "Assignment works when glob created midway (bug 45607)"); 1'
+	or die $@;
+}
+
+
+# [perl #72740] - indirect object syntax, heuristically imputed due to
+# the non-existence of a function, should not cause a stash entry to be
+# created for the non-existent function.
+{
+    {
+            package RƬ72740a;
+            my $f = bless({}, RƬ72740b);
+            sub s1 { s2 $f; }
+            our $s4;
+            sub s3 { s4 $f; }
+    }
+    {
+            package RƬ72740b;
+            sub s2 { "RƬ72740b::s2" }
+            sub s4 { "RƬ72740b::s4" }
+    }
+    ok(exists($RƬ72740a::{s1}), "RƬ72740a::s1 exists");
+    ok(!exists($RƬ72740a::{s2}), "RƬ72740a::s2 does not exist");
+    ok(exists($RƬ72740a::{s3}), "RƬ72740a::s3 exists");
+    ok(exists($RƬ72740a::{s4}), "RƬ72740a::s4 exists");
+    is(RƬ72740a::s1(), "RƬ72740b::s2", "RƬ72740::s1 parsed correctly");
+    is(RƬ72740a::s3(), "RƬ72740b::s4", "RƬ72740::s3 parsed correctly");
+}
+
+# [perl #71686] Globs that are in symbol table can be un-globbed
+$ŚyṀ = undef;
+$::{Ḟ앜ɞ} = *ŚyṀ;
+is (eval 'local *::Ḟ앜ɞ = \"chuck"; $Ḟ앜ɞ', 'chuck',
+	"Localized glob didn't coerce into a RV");
+is ($@, '', "Can localize FAKE glob that's present in stash");
+{
+    is (scalar $::{Ḟ앜ɞ}, "*main::ŚyṀ",
+            "Localized FAKE glob's value was correctly restored");
+}
+
+# [perl #1804] *$x assignment when $x is a copy of another glob
+# And [perl #77508] (same thing with list assignment)
+ {
+    no warnings 'once';
+    my $x = *_ràndom::glob_that_is_not_used_elsewhere;
+    *$x = sub{};
+    is(
+      "$x", '*_ràndom::glob_that_is_not_used_elsewhere',
+      '[perl #1804] *$x assignment when $x is FAKE',
+    );
+    $x = *_ràndom::glob_that_is_not_used_elsewhere;
+    (my $dummy, *$x) = (undef,[]);
+    is(
+      "$x", '*_ràndom::glob_that_is_not_used_elsewhere',
+      '[perl #77508] *$x list assignment when $x is FAKE',
+    ) or require Devel::Peek, Devel::Peek::Dump($x);
+}
+
+# [perl #76540]
+# this caused panics or 'Attempt to free unreferenced scalar'
+# (its a compile-time issue, so the die lets us skip the prints)
+{
+    my @warnings;
+    local $SIG{__WARN__} = sub { push @warnings, @_ };
+
+    eval <<'EOF';
+BEGIN { $::{FÒÒ} = \'ᴮᛅ' }
+die "made it";
+print FÒÒ, "\n";
+print FÒÒ, "\n";
+EOF
+
+    like($@, qr/made it/, "#76540 - no panic");
+    ok(!@warnings, "#76540 - no 'Attempt to free unreferenced scalar'");
+}
+
+# [perl #77362] various bugs related to globs as PVLVs
+{
+ no warnings qw 'once void';
+ my %h; # We pass a key of this hash to the subroutine to get a PVLV.
+ sub { for(shift) {
+  # Set up our glob-as-PVLV
+  $_ = *hòn;
+  is $_, "*main::hòn";
+
+  # Bad symbol for array
+  ok eval{ @$_; 1 }, 'PVLV glob slots can be autovivified' or diag $@;
+
+    {
+        # This should call TIEHANDLE, not TIESCALAR
+        *thèxt::TIEHANDLE = sub{};
+        ok eval{ tie *$_, 'thèxt'; 1 }, 'PVLV globs can be tied as handles'
+            or diag $@;
+    }
+  # Assigning undef to the glob should not overwrite it...
+  {
+   my $w;
+   local $SIG{__WARN__} = sub { $w = shift };
+   *$_ = undef;
+   is $_, "*main::hòn", 'PVLV: assigning undef to the glob does nothing';
+   like $w, qr\Undefined value assigned to typeglob\,
+    'PVLV: assigning undef to the glob warns';
+  }
+
+  # Neither should reference assignment.
+  *$_ = [];
+  is $_, "*main::hòn", "PVLV: arrayref assignment assigns to the AV slot";
+
+  # Concatenation should still work.
+  ok eval { $_ .= 'thlèw' }, 'PVLV concatenation does not die' or diag $@;
+  is $_, '*main::hònthlèw', 'PVLV concatenation works';
+
+  # And we should be able to overwrite it with a string, number, or refer-
+  # ence, too, if we omit the *.
+  $_ = *hòn; $_ = 'tzòr';
+  is $_, 'tzòr', 'PVLV: assigning a string over a glob';
+  $_ = *hòn; $_ = 23;
+  is $_, 23, 'PVLV: assigning an integer over a glob';
+  $_ = *hòn; $_ = 23.23;
+  is $_, 23.23, 'PVLV: assigning a float over a glob';
+  $_ = *hòn; $_ = \my $sthat;
+  is $_, \$sthat, 'PVLV: assigning a reference over a glob';
+
+  # This bug was found by code inspection. Could this ever happen in
+  # real life? :-)
+  # This duplicates a file handle, accessing it through a PVLV glob, the
+  # glob having been removed from the symbol table, so a stringified form
+  # of it does not work. This checks that sv_2io does not stringify a PVLV.
+  $_ = *quìn;
+  open *quìn, "test.pl"; # test.pl is as good a file as any
+  delete $::{quìn};
+  ok eval { open my $zow, "<&", $_ }, 'PVLV: sv_2io stringifieth not'
+   or diag $@;
+
+  # Similar tests to make sure sv_2cv etc. do not stringify.
+  *$_ = sub { 1 };
+  ok eval { &$_ }, "PVLV glob can be called as a sub" or diag $@;
+  *flèlp = sub { 2 };
+  $_ = 'flèlp';
+  is eval { &$_ }, 2, 'PVLV holding a string can be called as a sub'
+   or diag $@;
+
+  # Coderef-to-glob assignment when the glob is no longer accessible
+  # under its name: These tests are to make sure the OPpASSIGN_CV_TO_GV
+  # optimisation takes PVLVs into account, which is why the RHSs have to be
+  # named subs.
+  use constant ghèèn => 'quàrè';
+  $_ = *mìng;
+  delete $::{mìng};
+  *$_ = \&ghèèn;
+  is eval { &$_ }, 'quàrè',
+   'PVLV: constant assignment when the glob is detached from the symtab'
+    or diag $@;
+  $_ = *bèngth;
+  delete $::{bèngth};
+  *ghèck = sub { 'lon' };
+  *$_ = \&ghèck;
+  is eval { &$_ }, 'lon',
+   'PVLV: coderef assignment when the glob is detached from the symtab'
+    or diag $@;
+
+SKIP: {
+    skip_if_miniperl("no dynamic loading on miniperl, so can't load PerlIO::scalar", 1);
+    # open should accept a PVLV as its first argument
+    $_ = *hòn;
+    ok eval { open $_,'<', \my $thlext }, 'PVLV can be the first arg to open'
+	or diag $@;
+  }
+
+  # -t should not stringify
+  $_ = *thlìt; delete $::{thlìt};
+  *$_ = *STDOUT{IO};
+  ok defined -t $_, 'PVLV: -t does not stringify';
+
+  # neither should -T
+  # but some systems don’t support this on file handles
+  my $pass;
+  ok
+    eval {
+     open my $quìle, "<", 'test.pl';
+     $_ = *$quìle;
+     $pass = -T $_;
+     1
+    } ? $pass : $@ =~ /not implemented on filehandles/,
+   "PVLV: -T does not stringify";
+  # Unopened file handle
+  {
+   my $w;
+   local $SIG{__WARN__} = sub { $w .= shift };
+   $_ = *vòr;
+   close $_;
+   like $w, qr\unopened filehandle vòr\,
+    'PVLV globs get their names reported in unopened error messages';
+  }
+
+ }}->($h{k});
+}
+
+*àieee = 4;
+pass('Can assign integers to typeglobs');
+*àieee = 3.14;
+pass('Can assign floats to typeglobs');
+*àieee = 'pi';
+pass('Can assign strings to typeglobs');
+
+
+{
+  package thrèxt;
+  sub TIESCALAR{bless[]}
+  sub STORE{ die "No!"}
+  sub FETCH{ no warnings 'once'; *thrìt }
+  tie my $a, "thrèxt";
+  () = "$a"; # do a fetch; now $a holds a glob
+  eval { *$a = sub{} };
+  untie $a;
+  eval { $a = "ᴮᛅ" };
+  ::is $a, "ᴮᛅ",
+    "[perl #77812] Globs in tied scalars can be reified if STORE dies"
+}
+
+# These two crashed prior to 5.13.6. In 5.13.6 they were fatal errors. They
+# were fixed in 5.13.7.
+ok eval {
+  my $glob = \*hèèn::ISA;
+  delete $::{"hèèn::"};
+  *$glob = *ᴮᛅ; 
+}, "glob-to-*ISA assignment works when *ISA has lost its stash";
+ok eval {
+  my $glob = \*slàre::ISA;
+  delete $::{"slàre::"};
+  *$glob = []; 
+}, "array-to-*ISA assignment works when *ISA has lost its stash";
+# These two crashed in 5.13.6. They were likewise fixed in 5.13.7.
+ok eval {
+  sub grèck;
+  my $glob = do { no warnings "once"; \*phìng::ᕘ};
+  delete $::{"phìng::"};
+  *$glob = *grèck; 
+}, "Assigning a glob-with-sub to a glob that has lost its stash warks";
+ok eval {
+  sub pòn::ᕘ;
+  my $glob = \*pòn::ᕘ;
+  delete $::{"pòn::"};
+  *$glob = *ᕘ; 
+}, "Assigning a glob to a glob-with-sub that has lost its stash warks";
+
+{
+  package Tie::Alias;
+  sub TIESCALAR{ bless \\pop }
+  sub FETCH { $${$_[0]} }
+  sub STORE { $${$_[0]} = $_[1] }
+  package main;
+  tie my $alias, 'Tie::Alias', my $var;
+  no warnings 'once';
+  $var = *gàlobbe;
+  {
+    local *$alias = [];
+    $var = 3;
+    is $alias, 3, "[perl #77926] Glob reification during localisation";
+  }
+}
+
+# This code causes gp_free to call a destructor when a glob is being
+# restored on scope exit. The destructor used to see SVs with a refcount of
+# zero inside the glob, which could result in crashes (though not in this
+# test case, which just panics).
+{
+ no warnings 'once';
+ my $survived;
+ *Trìt::DESTROY = sub {
+   $thwèxt = 42;  # panic
+   $survived = 1;
+ };
+ {
+  local *thwèxt = bless [],'Trìt';
+  ();
+ }
+ ok $survived,
+  'no error when gp_free calls a destructor that assigns to the gv';
+}
+
+__END__
+Perl
+Rules
+perl
+rocks

Added: vendor/perl/dist/t/uni/labels.t
===================================================================
--- vendor/perl/dist/t/uni/labels.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/labels.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,85 @@
+#!./perl
+
+# Tests for labels in UTF-8
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+use warnings;
+use feature qw 'unicode_strings evalbytes';
+
+use charnames qw( :full );
+
+plan(10);
+
+LABEL: {
+    pass("Sanity check, UTF-8 labels don't throw a syntax error.");
+}
+
+
+SKIP: {
+    skip_if_miniperl("no dynamic loading, no Encode", 2);
+    no warnings 'exiting';
+    require Encode;
+
+    my $prog = 'last LOOP;';
+
+    LOOP: {
+        eval $prog;
+    }
+    is $@, '', "last with a UTF-8 label works,";
+
+    LOOP: {
+        Encode::_utf8_off($prog);
+        evalbytes $prog;
+        like $@, qr/^Unrecognized character/, "..but turn off the UTF-8 flag and it explodes";
+    }
+}
+
+{
+    no warnings 'exiting';
+
+    eval "last E";
+    like $@, qr/Label not found for "last E" at/u, "last's error is UTF-8 clean";
+    
+    eval "redo E";
+    like $@, qr/Label not found for "redo E" at/u, "redo's error is UTF-8 clean";
+    
+    eval "next E";
+    like $@, qr/Label not found for "next E" at/u, "next's error is UTF-8 clean";
+}
+
+my $d = 2;
+LÁBEL: {
+    my $e = $@;
+    my $prog = "redo L\N{LATIN CAPITAL LETTER A WITH ACUTE}BEL";
+
+    if ($d == 1) {
+        is $e, '', "redo UTF8 works";
+        utf8::downgrade($prog);
+    }
+    if ($d--) {
+        use feature 'unicode_eval';
+        no warnings 'exiting';
+        eval $prog;
+    }
+}
+
+like $@, qr/Unrecognized character/, "redo to downgradeable labels";
+is $d, 0, "Latin-1 labels are reachable";
+
+{
+    no warnings;
+    goto ここ;
+    
+    if (undef) {
+        ここ: {
+            pass("goto UTF-8 LABEL works.");
+        }
+    }
+}

Added: vendor/perl/dist/t/uni/method.t
===================================================================
--- vendor/perl/dist/t/uni/method.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/method.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,205 @@
+#!./perl -w
+
+#
+# test method calls and autoloading.
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = qw(. ../lib);
+    require "test.pl";
+}
+
+use strict;
+use utf8;
+use open qw( :utf8 :std );
+no warnings 'once';
+
+plan(tests => 62);
+
+#Can't use bless yet, as it might not be clean
+
+sub F::b { ::is shift, "F";  "UTF8 meth"       }
+sub F::b { ::is shift, "F";  "UTF8 Stash"     }
+sub F::b { ::is shift, "F"; "UTF8 Stash&meth" }
+
+is(F->b, "UTF8 meth", "If the method is in UTF-8, lookup works through explicitly named methods");
+is(F->${\"b"}, "UTF8 meth", '..as does for ->${\""}');
+eval { F->${\"b\0nul"} };
+ok $@, "If the method is in UTF-8, lookup is nul-clean";
+
+is(F->b, "UTF8 Stash", "If the stash is in UTF-8, lookup works through explicitly named methods");
+is(F->${\"b"}, "UTF8 Stash", '..as does for ->${\""}');
+eval { F->${\"b\0nul"} };
+ok $@, "If the stash is in UTF-8, lookup is nul-clean";
+
+is(F->b, "UTF8 Stash&meth", "If both stash and method are in UTF-8, lookup works through explicitly named methods");
+is(F->${\"b"}, "UTF8 Stash&meth", '..as does for ->${\""}');
+eval { F->${\"b\0nul"} };
+ok $@, "Even if both stash and method are in UTF-8, lookup is nul-clean";
+
+eval { my $ref = \my $var; $ref->method };
+like $@, qr/Can't call method "method" on unblessed reference /u;
+
+{
+    use utf8;
+    use open qw( :utf8 :std );
+
+    my $e;
+    
+    eval '$e = bless {}, "E::A"; E::A->foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::A" at/u);
+    eval '$e = bless {}, "E::B"; $e->foo()';  
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::B" at/u);
+    eval 'E::C->foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::C" (perhaps /u);
+    
+    eval 'UNIVERSAL->E::D::foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::D" (perhaps /u);
+    eval 'my $e = bless {}, "UNIVERSAL"; $e->E::E::foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::E" (perhaps /u);
+    
+    $e = bless {}, "E::F";  # force package to exist
+    eval 'UNIVERSAL->E::F::foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::F" at/u);
+    eval '$e = bless {}, "UNIVERSAL"; $e->E::F::foo()';
+    like ($@, qr/^\QCan't locate object method "foo" via package "E::F" at/u);
+}
+
+is(do { use utf8; use open qw( :utf8 :std ); eval 'Foo->boogie()';
+	  $@ =~ /^\QCan't locate object method "boogie" via package "Foo" (perhaps /u ? 1 : $@}, 1);
+
+#This reimplements a bit of _fresh_perl() from test.pl, as we want to decode
+#the output of that program before using it.
+SKIP: {
+    skip_if_miniperl('no dynamic loading on miniperl, no Encode');
+
+    my $prog = q!use utf8; use open qw( :utf8 :std ); sub T::DESTROY { $x = $_[0]; } bless [], "T";!;
+    utf8::decode($prog);
+
+    my $tmpfile = tempfile();
+    my $runperl_args = {};
+    $runperl_args->{progfile} = $tmpfile;
+    $runperl_args->{stderr} = 1;
+
+    open TEST, '>', $tmpfile or die "Cannot open $tmpfile: $!";
+
+    print TEST $prog;
+    close TEST or die "Cannot close $tmpfile: $!";
+
+    my $results = runperl(%$runperl_args);
+
+    require Encode;
+    $results = Encode::decode("UTF-8", $results);
+
+    like($results,
+            qr/DESTROY created new reference to dead object 'T' during global destruction./u,
+            "DESTROY creating a new reference to the object generates a warning in UTF-8.");
+}
+
+package Føø::Bær {
+    sub new { bless {}, shift }
+    sub nèw { bless {}, shift }
+}
+
+like( Føø::Bær::new("Føø::Bær"), qr/Føø::Bær=HASH/u, 'Can access new directly through a UTF-8 package.' );
+like( Føø::Bær->new, qr/Føø::Bær=HASH/u, 'Can access new as a method through a UTF-8 package.' );
+like( Føø::Bær::nèw("Føø::Bær"), qr/Føø::Bær=HASH/u, 'Can access nèw directly through a UTF-8 package.' );
+like( Føø::Bær->nèw, qr/Føø::Bær=HASH/u, 'Can access nèw as a method through a UTF-8 package.' );
+
+is( ref Føø::Bær->new, 'Føø::Bær');
+
+my $new_ascii = "new";
+my $new_latin = "nèw";
+my $new_utf8  = "n\303\250w";
+my $newoct    = "n\303\250w";
+utf8::decode($new_utf8);
+
+like( Føø::Bær->$new_ascii, qr/Føø::Bær=HASH/u, "Can access \$new_ascii, [$new_ascii], stored in a scalar, as a method, through a UTF-8 package." );
+like( Føø::Bær->$new_latin, qr/Føø::Bær=HASH/u, "Can access \$new_latin, [$new_latin], stored in a scalar, as a method, through a UTF-8 package." );
+like( Føø::Bær->$new_utf8, qr/Føø::Bær=HASH/u, "Can access \$new_utf8, [$new_utf8], stored in a scalar, as a method, through a UTF-8 package." );
+{
+    local $@;
+    eval { Føø::Bær->$newoct };
+    like($@, qr/Can't locate object method "n\303\250w" via package "Føø::Bær"/u, "Can't access [$newoct], stored in a scalar, as a method through a UTF-8 package." );
+}
+
+
+like( nèw Føø::Bær, qr/Føø::Bær=HASH/u, "Can access [nèw] as a method through a UTF-8 indirect object package.");
+
+my $pkg_latin_1 = 'Føø::Bær';
+
+like( $pkg_latin_1->new, qr/Føø::Bær=HASH/u, 'Can access new as a method when the UTF-8 package name is in a scalar.');
+like( $pkg_latin_1->nèw, qr/Føø::Bær=HASH/u, 'Can access nèw as a method when the UTF-8 package name is in a scalar.');
+
+like( $pkg_latin_1->$new_ascii, qr/Føø::Bær=HASH/u, "Can access \$new_ascii, [$new_ascii], stored in a scalar, as a method, when the UTF-8 package name is also in a scalar.");
+like( $pkg_latin_1->$new_latin, qr/Føø::Bær=HASH/u, "Can access \$new_latin, [$new_latin], stored in a scalar, as a method, when the UTF-8 package name is also in a scalar.");
+like( $pkg_latin_1->$new_utf8, qr/Føø::Bær=HASH/u, "Can access \$new_utf8, [$new_utf8], stored in a scalar, as a method, when the UTF-8 package name is also in a scalar." );
+{
+    local $@;
+    eval { $pkg_latin_1->$newoct };
+    like($@, qr/Can't locate object method "n\303\250w" via package "Føø::Bær"/u, "Can't access [$newoct], stored in a scalar, as a method, when the UTF-8 package name is also in a scalar.");
+}
+
+ok !!Føø::Bær->can($new_ascii), "->can works for [$new_ascii]";
+ok !!Føø::Bær->can($new_latin), "->can works for [$new_latin]";
+ok((not !!Føø::Bær->can($newoct)), "->can doesn't work for [$newoct]");
+
+package クラス {
+    sub new { bless {}, shift }
+    sub ニュー { bless {}, shift }
+}
+
+like( クラス::new("クラス"), qr/クラス=HASH/u);
+like( クラス->new, qr/クラス=HASH/u);
+
+like( クラス::ニュー("クラス"), qr/クラス=HASH/u);
+like( クラス->ニュー, qr/クラス=HASH/u);
+
+like( ニュー クラス, qr/クラス=HASH/u, "Indirect object is UTF-8, as is the class.");
+
+is( ref クラス->new, 'クラス');
+is( ref クラス->ニュー, 'クラス');
+
+package Foo::Bar {
+    our @ISA = qw( Føø::Bær );
+}
+
+package Foo::Bàz {
+    use parent qw( -norequire Føø::Bær );
+}
+
+package ฟọ::バッズ {
+    use parent qw( -norequire Føø::Bær クラス );
+}
+
+ok(Foo::Bar->new, 'Simple inheritance works by pushing into @ISA,');
+ok(Foo::Bar->nèw, 'Even with UTF-8 methods');
+
+ok(Foo::Bàz->new, 'Simple inheritance works with parent using -norequire,');
+ok(Foo::Bàz->nèw, 'Even with UTF-8 methods');
+
+ok(ฟọ::バッズ->new, 'parent using -norequire, in a UTF-8 package.');
+ok(ฟọ::バッズ->nèw, 'Also works with UTF-8 methods');
+ok(ฟọ::バッズ->ニュー, 'Even methods from an UTF-8 parent');
+
+BEGIN {no strict 'refs'; ++${"\xff::foo"} } # autovivify the package
+package ÿ {                                 # without UTF8
+ sub AUTOLOAD {
+  ::is our $AUTOLOAD,
+      "\xff::\x{100}", '$AUTOLOAD made from Latin1 package + UTF8 sub';
+ }
+}
+ÿ->${\"\x{100}"};
+
+#This test should go somewhere else.
+#DATA was being generated in the wrong package.
+package ʑ;
+no strict 'refs';
+
+::ok( *{"ʑ::DATA"}{IO}, "DATA is generated in the right glob");
+::ok !defined(*{"main::DATA"}{IO});
+::is scalar <DATA>, "Some data\n";
+
+__DATA__
+Some data

Added: vendor/perl/dist/t/uni/opcroak.t
===================================================================
--- vendor/perl/dist/t/uni/opcroak.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/opcroak.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,44 @@
+#!./perl
+
+#
+# tests for op.c generated croaks
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+use warnings;
+
+plan( tests => 5 );
+
+eval qq!sub \x{30cb} (\$) {} \x{30cb}()!;
+like $@, qr/Not enough arguments for main::\x{30cb}/u, "Not enough arguments croak is UTF-8 clean";
+
+eval qq!sub \x{30cc} (\$) {} \x{30cc}(1, 2)!;
+like $@, qr/Too many arguments for main::\x{30cc}/u, "Too many arguments croak is UTF-8 clean";
+
+eval qq!sub \x{30cd} (\Q\%\E) { 1 } \x{30cd}(1);!;
+like $@, qr/Type of arg 1 to main::\x{30cd} must be/u, "bad type croak is UTF-8 clean";
+
+    eval <<'END_FIELDS';
+    {
+        package FŌŌ {
+            use fields qw( a b );
+            sub new { bless {}, shift }
+        }
+    }
+END_FIELDS
+
+for (
+        [ element => 'my FŌŌ $bàr = FŌŌ->new; $bàr->{クラス};' ],
+        [ slice => 'my FŌŌ $bàr = FŌŌ->new; @{$bàr}{ qw( a クラス ) };' ]
+    ) {
+    eval $_->[1];
+    
+    like $@, qr/No such class field "クラス" in variable \$bàr of type FŌŌ/, "$_->[0]: no such field error is UTF-8 clean";
+}

Added: vendor/perl/dist/t/uni/package.t
===================================================================
--- vendor/perl/dist/t/uni/package.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/package.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,111 @@
+#!./perl
+
+# Checks if 'package' work as intended.
+
+BEGIN {
+    require './test.pl';
+}
+
+plan (tests => 18);
+
+use utf8;
+use open qw( :utf8 :std );
+
+package Føø::Bær { }
+
+package クラス { }
+
+package ฟọ::バッズ { }
+
+ok 1, "sanity check. If we got this far, UTF-8 in package names is legal.";
+
+#The next few come from comp/package.t
+{
+
+    $ㄅĽuṞfⳐ = 123;
+    
+    package ꑭʑ;
+
+    sub ニュー {bless [];}
+    $bar = 4;
+    {
+        package 압Ƈ;
+        $ㄅĽuṞfⳐ = 5;
+    }
+    
+    $압Ƈ'd읯ⱪ = 6;        #'
+
+    $ꑭʑ = 2;
+    
+    $ꑭʑ = join(':', sort(keys %ꑭʑ::));
+    $압Ƈ = join(':', sort(keys %압Ƈ::));
+    
+    ::is $ꑭʑ, 'bar:ニュー:ꑭʑ:압Ƈ', "comp/stash.t test 1";
+    ::is $압Ƈ, "d읯ⱪ:ㄅĽuṞfⳐ", "comp/stash.t test 2";
+    ::is $main'ㄅĽuṞfⳐ, 123, "comp/stash.t test 3";
+
+    package 압Ƈ;
+
+    ::is $ㄅĽuṞfⳐ, 5, "comp/stash.t test 4";
+    eval '::is $ㄅĽuṞfⳐ, 5, "comp/stash.t test 5";';
+    eval 'package main; is $ㄅĽuṞfⳐ, 123, "comp/stash.t test 6";';
+    ::is $ㄅĽuṞfⳐ, 5, "comp/stash.t test 7";
+
+    #This is actually pretty bad, as caller() wasn't clean to begin with.
+    package main;
+    sub ㄘ { caller(0) }
+    
+    sub ƒஓ {
+    my $s = shift;
+    if ($s) {
+            package ᛔQR;
+            main::ㄘ();
+    }
+    }
+    
+    is((ƒஓ(1))[0], 'ᛔQR', "comp/stash.t test 8");
+    
+    my $Q = ꑭʑ->ニュー();
+    undef %ꑭʑ::;
+    eval { $a = *ꑭʑ::ニュー{PACKAGE}; };
+    is $a, "__ANON__", "comp/stash.t test 9";
+
+    {
+        local $@;
+        eval { $Q->param; };
+        like $@, qr/^Can't use anonymous symbol table for method lookup/, "comp/stash.t test 10";
+    }
+    
+    like "$Q", qr/^__ANON__=/, "comp/stash.t test 11";
+
+    is ref $Q, "__ANON__", "comp/stash.t test 12";
+
+    package bugⅲⅱⅴⅵⅱ { #not really latin, but bear with me, I'm not Damian.
+        ::is( __PACKAGE__,   'bugⅲⅱⅴⅵⅱ', "comp/stash.t test 13");
+        ::is( eval('__PACKAGE__'), 'bugⅲⅱⅴⅵⅱ', "comp/stash.t test 14");
+    }
+}
+
+#This comes from comp/package_block.t
+{
+    local $@;
+    eval q[package ᕘ {];
+    like $@, qr/\AMissing right curly /, "comp/package_block.t test";
+}
+
+# perl #105922
+
+{
+   my $latin_1 = "þackage";
+   my $utf8    = "þackage";
+   utf8::downgrade($latin_1);
+   utf8::upgrade($utf8);
+
+   local $@;
+   eval { $latin_1->can("yadda") };
+   ok(!$@, "latin1->meth works");
+
+   local $@;
+   eval { $utf8->can("yadda") };
+   ok(!$@, "utf8->meth works");
+}

Added: vendor/perl/dist/t/uni/parser.t
===================================================================
--- vendor/perl/dist/t/uni/parser.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/parser.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,154 @@
+#!./perl
+
+# Checks if the parser behaves correctly in edge cases
+# (including weird syntax errors)
+
+BEGIN {
+    require './test.pl';
+}
+
+plan (tests => 48);
+
+use utf8;
+use open qw( :utf8 :std );
+
+ok *tèst, "*main::tèst", "sanity check.";
+ok $::{"tèst"}, "gets the right glob in the stash.";
+
+my $glob_by_sub = sub { *main::method }->();
+
+is *main::method, "*main::method", "glob stringy works";
+is "" . *main::method, "*main::method", "glob stringify-through-concat works";
+is $glob_by_sub, "*main::method", "glob stringy works";
+is "" . $glob_by_sub, "*main::method", "";
+
+sub gimme_glob {
+    no strict 'refs';
+    is *{$_[0]}, "*main::$_[0]";
+    *{$_[0]};
+}
+
+is "" . gimme_glob("下郎"), "*main::下郎";
+$a = *下郎;
+is "" . $a, "*main::下郎";
+
+*{gimme_glob("下郎")} = sub {};
+
+{
+    ok defined *{"下郎"}{CODE};
+    ok !defined *{"\344\270\213\351\203\216"}{CODE};
+}
+
+$Lèon = 1;
+is ${*Lèon{SCALAR}}, 1, "scalar define in the right glob,";
+ok !${*{"L\303\250on"}{SCALAR}}, "..and nothing in the wrong one.";
+
+my $a = "foo" . chr(190);
+my $b = $a    . chr(256);
+chop $b; # $b is $a with utf8 on
+
+is $a, $b, '$a equals $b';
+
+*$b = sub { 5 };
+
+is eval { main->$a }, 5, q!$a can call $b's sub!;
+ok !$@, "..and there's no error.";
+
+my $c = $b;
+utf8::encode($c);
+ok $b ne $c, '$b unequal $c';
+eval { main->$c };
+ok $@, q!$c can't call $b's sub.!;
+
+# Now define another sub under the downgraded name:
+*$a = sub { 6 };
+# Call it:
+is eval { main->$a }, 6, "Adding a new sub to *a and calling it works,";
+ok !$@, "..without errors.";
+eval { main->$c };
+ok $@, "but it's still unreachable through *c";
+
+*$b = \10;
+is ${*$a{SCALAR}}, 10;
+is ${*$b{SCALAR}}, 10;
+is ${*$c{SCALAR}}, undef;
+
+opendir FÒÒ, ".";
+closedir FÒÒ;
+::ok($::{"FÒÒ"}, "Bareword generates the right glob.");
+::ok(!$::{"F\303\222\303\222"});
+
+sub участники { 1 }
+
+ok $::{"участники"}, "non-const sub declarations generate the right glob";
+ok *{$::{"участники"}}{CODE};
+is *{$::{"участники"}}{CODE}->(), 1;
+
+sub 原 () { 1 }
+
+is grep({ $_ eq "\x{539f}"     } keys %::), 1, "Constant subs generate the right glob.";
+is grep({ $_ eq "\345\216\237" } keys %::), 0;
+
+#These should probably go elsewhere.
+eval q{ sub wròng1 (_$); wròng1(1,2) };
+like( $@, qr/Malformed prototype for main::wròng1/, 'Malformed prototype croak is clean.' );
+
+eval q{ sub ча::ики ($__); ча::ики(1,2) };
+like( $@, qr/Malformed prototype for ча::ики/ );
+
+our $問 = 10;
+is $問, 10, "our works";
+is $main::問, 10, "...as does getting the same variable through the fully qualified name";
+is ${"main::\345\225\217"}, undef, "..and using the encoded form doesn't";
+
+{
+    use charnames qw( :full );
+
+    eval qq! my \$\x{30cb} \N{DROMEDARY CAMEL} !;
+    $@ =~ s/eval \d+/eval 11/;
+    is $@, 'Unrecognized character \x{1f42a}; marked by <-- HERE after  my $ニ <-- HERE near column 8 at (eval 11) line 1.
+', "'Unrecognized character' croak is UTF-8 clean";
+}
+
+{
+    use feature 'state';
+    for ( qw( my state our ) ) {
+        local $@;
+        eval "$_ Foo $x = 1;";
+        like $@, qr/No such class Foo/u, "'No such class' warning for $_ is UTF-8 clean";
+    }
+}
+
+{
+    local $@;
+    eval "our \$main::\x{30cb};";
+    like $@, qr!No package name allowed for variable \$main::\x{30cb} in "our"!, "'No such package name allowed for variable' is UTF-8 clean";
+}
+
+{
+    use feature 'state';
+    local $@;
+    for ( qw( my state ) ) {
+        eval "$_ \$::\x{30cb};";
+        like $@, qr!"$_" variable \$::\x{30cb} can't be in a package!, qq!'"$_" variable %s can't be in a package' is UTF-8 clean!;
+    }
+}
+
+{
+    local $@;
+    eval qq!print \x{30cb}, "comma""!;
+    like $@, qr/No comma allowed after filehandle/, "No comma allowed after filehandle triggers correctly for UTF-8 filehandles.";
+}
+
+# tests for "Bad name"
+eval q{ Foo::$bar };
+like( $@, qr/Bad name after Foo::/, 'Bad name after Foo::' );
+eval q{ Foo''bar };
+like( $@, qr/Bad name after Foo'/, 'Bad name after Foo\'' );
+
+{
+    no warnings 'utf8';
+    my $malformed_to_be = "\x{c0}\x{a0}";   # Overlong sequence
+    CORE::evalbytes "use charnames ':full'; use utf8; my \$x = \"\\N{abc$malformed_to_be}\"";
+    like( $@, qr/Malformed UTF-8 character immediately after '\\N\{abc' at .* within string/, 'Malformed UTF-8 input to \N{}');
+}

Added: vendor/perl/dist/t/uni/readline.t
===================================================================
--- vendor/perl/dist/t/uni/readline.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/readline.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,66 @@
+#!./perl
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+plan tests => 7;
+
+use utf8;
+use open qw( :utf8 :std );
+
+# [perl #19566]: sv_gets writes directly to its argument via
+# TARG. Test that we respect SvREADONLY.
+eval { for (\2) { $_ = <Fʜ> } };
+like($@, 'Modification of a read-only value attempted', '[perl #19566]');
+
+# [perl #21628]
+{
+  my $file = tempfile();
+  open Ạ,'+>',$file; $a = 3;
+  is($a .= <Ạ>, 3, '#21628 - $a .= <A> , A eof');
+  close Ạ; $a = 4;
+  is($a .= <Ạ>, 4, '#21628 - $a .= <A> , A closed');
+}
+
+use strict;
+
+open ᕝ, '.' and sysread ᕝ, $_, 1;
+my $err = $! + 0;
+close ᕝ;
+
+SKIP: {
+  skip "you can read directories as plain files", 2 unless( $err );
+
+  $!=0;
+  open ᕝ, '.' and $_=<ᕝ>;
+  ok( $!==$err && !defined($_) => 'readline( DIRECTORY )' );
+  close ᕝ;
+
+  $!=0;
+  { local $/;
+    open ᕝ, '.' and $_=<ᕝ>;
+    ok( $!==$err && !defined($_) => 'readline( DIRECTORY ) slurp mode' );
+    close ᕝ;
+  }
+}
+
+my $obj = bless [], "Ȼლᔆ";
+$obj .= <DATA>;
+like($obj, qr/Ȼლᔆ=ARRAY.*world/u, 'rcatline and refs');
+
+{
+    my $file = tempfile();
+    open my $out_fh, ">", $file;
+    print { $out_fh } "Data\n";
+    close $out_fh;
+
+    open hòฟ, "<", $file;
+    is( scalar(<hòฟ>), "Data\n", "readline() works correctly on UTF-8 filehandles" );
+    close hòฟ;
+}
+
+__DATA__
+world

Added: vendor/perl/dist/t/uni/select.t
===================================================================
--- vendor/perl/dist/t/uni/select.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/select.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,35 @@
+#!./perl
+
+#
+# Tests whenever the return value of select(FH) is correctly encoded.
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+plan( tests => 5 );
+
+open DÙP, ">&", *STDERR;
+open $dùp, ">&", *STDOUT;
+open 둪,  ">&", *STDERR;
+open $ᛞ웊, ">&", *STDOUT;
+
+is select(DÙP), "main::STDOUT";
+is select($dùp), "main::DÙP";
+
+TODO: {
+    local $TODO = "Scalar filehandles not yet clean";
+    is select(둪), "main::dùp";
+}
+
+is select($ᛞ웊), "main::둪";
+TODO: {
+    local $TODO = "Scalar filehandles not yet clean";
+    is select(STDOUT), "main::ᛞ웊";
+}

Added: vendor/perl/dist/t/uni/stash.t
===================================================================
--- vendor/perl/dist/t/uni/stash.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/stash.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,310 @@
+#!./perl
+
+#
+# various stash tests
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require './test.pl';
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+plan( tests => 58 );
+
+#These come from op/my_stash.t
+{
+    use constant Myクラス => 'ꕽ::Ʉ::ꔬz::ꢨᙇ';
+    
+    {
+        package ꕽ::Ʉ::ꔬz::ꢨᙇ;
+        1;
+    }
+    
+    for (qw(ꕽ ꕽ:: Myクラス __PACKAGE__)) {
+        eval "sub { my $_ \$obj = shift; }";
+        ok ! $@, "op/my_stash.t test, $_";
+    }
+    
+    use constant NòClàss => '노pӬ::ꕽ::Ꜻ::BӢz::ʙࡆ';
+    
+    for (qw(노pӬ 노pӬ:: NòClàss)) {
+        eval "sub { my $_ \$obj = shift; }";
+        ok $@, "op/my_stash.t test";
+    }
+}
+
+#op/stash.t
+{
+    {
+        no warnings 'deprecated';
+        ok( defined %왿ퟀⲺa::ᒫṡ::, q(stashes happen to be defined if not used) );
+        ok( defined %{"왿ퟀⲺa::ᒫṡ::"}, q(- work with hard refs too) );
+    
+        ok( defined %ᛐⲞɲe::Šꇇᚽṙᆂṗ::, q(stashes are defined if seen at compile time) );
+        ok( defined %{"ᛐⲞɲe::Šꇇᚽṙᆂṗ::"}, q(- work with hard refs too) );
+    
+        ok( defined %본go::ଶfʦbᚒƴ::, q(stashes are defined if a var is seen at compile time) );
+        ok( defined %{"본go::ଶfʦbᚒƴ::"}, q(- work with hard refs too) );
+    }
+
+    
+    package ᛐⲞɲe::Šꇇᚽṙᆂṗ;
+    $본go::ଶfʦbᚒƴ::scalar = 1;
+    
+    package main;
+        
+    # now tests in eval
+    
+    ok( eval  { no warnings 'deprecated'; defined %앛hȚꟻࡃҥ:: },   'works in eval{}' );
+    ok( eval q{ no warnings 'deprecated'; defined %Ṧㄘㇹen맠ㄦ:: }, 'works in eval("")' );
+    
+    # now tests with strictures
+    
+    {
+        use strict;
+        no warnings 'deprecated';
+        ok( defined %piƓ::, q(referencing a non-existent stash doesn't produce stricture errors) );
+        ok( !exists $piƓ::{bodine}, q(referencing a non-existent stash element doesn't produce stricture errors) );
+    }
+
+    SKIP: {
+        eval { require B; 1 } or skip "no B", 28;
+    
+        *b = \&B::svref_2object;
+        my $CVf_ANON = B::CVf_ANON();
+    
+        my $sub = do {
+            package 온ꪵ;
+            \&{"온ꪵ"};
+        };
+        delete $온ꪵ::{온ꪵ};
+        my $gv = b($sub)->GV;
+    
+        object_ok( $gv, "B::GV", "deleted stash entry leaves CV with valid GV");
+        is( b($sub)->CvFLAGS & $CVf_ANON, $CVf_ANON, "...and CVf_ANON set");
+        is( eval { $gv->NAME }, "__ANON__", "...and an __ANON__ name");
+        is( eval { $gv->STASH->NAME }, "온ꪵ", "...but leaves stash intact");
+    
+        $sub = do {
+            package tꖿ;
+            \&{"tꖿ"};
+        };
+        %tꖿ:: = ();
+        $gv = b($sub)->GV;
+    
+        object_ok( $gv, "B::GV", "cleared stash leaves CV with valid GV");
+        is( b($sub)->CvFLAGS & $CVf_ANON, $CVf_ANON, "...and CVf_ANON set");
+        is( eval { $gv->NAME }, "__ANON__", "...and an __ANON__ name");
+        is( eval { $gv->STASH->NAME }, "tꖿ", "...but leaves stash intact");
+    
+        $sub = do {
+            package ᖟ레ᅦ;
+            \&{"ᖟ레ᅦ"};
+        };
+        undef %ᖟ레ᅦ::;
+        $gv = b($sub)->GV;
+    
+        object_ok( $gv, "B::GV", "undefed stash leaves CV with valid GV");
+        is( b($sub)->CvFLAGS & $CVf_ANON, $CVf_ANON, "...and CVf_ANON set");
+        is( eval { $gv->NAME }, "__ANON__", "...and an __ANON__ name");
+        is( eval { $gv->STASH->NAME }, "__ANON__", "...and an __ANON__ stash");
+    
+        my $sub = do {
+            package ꃖᚢ;
+            sub { 1 };
+        };
+        %ꃖᚢ:: = ();
+    
+        my $gv = B::svref_2object($sub)->GV;
+        ok($gv->isa(q/B::GV/), "cleared stash leaves anon CV with valid GV");
+    
+        my $st = eval { $gv->STASH->NAME };
+        is($st, q/ꃖᚢ/, "...but leaves the stash intact");
+    
+        $sub = do {
+            package fꢄᶹᵌ;
+            sub { 1 };
+        };
+        undef %fꢄᶹᵌ::;
+    
+        $gv = B::svref_2object($sub)->GV;
+        ok($gv->isa(q/B::GV/), "undefed stash leaves anon CV with valid GV");
+    
+        $st = eval { $gv->STASH->NAME };
+
+        { local $TODO = 'STASHES not anonymized';
+            is($st, q/__ANON__/, "...and an __ANON__ stash");
+        }
+
+        $sub = do {
+            package sӥㄒ;
+            \&{"sӥㄒ"}
+        };
+        my $stash_glob = delete $::{"sӥㄒ::"};
+        # Now free the GV while the stash still exists (though detached)
+        delete $$stash_glob{"sӥㄒ"};
+        $gv = B::svref_2object($sub)->GV;
+        ok($gv->isa(q/B::GV/),
+        'anonymised CV whose stash is detached still has a GV');
+        #fails because mro_gather_and_rename isn't clean
+        is $gv->STASH->NAME, '__ANON__',
+        'CV anonymised when its stash is detached becomes __ANON__::__ANON__';
+
+        # CvSTASH should be null on a named sub if the stash has been deleted
+        {
+            package FŌŌ;
+            sub Ƒಓ {}
+            my $rfoo = \&Ƒಓ;
+            package main;
+            delete $::{'FŌŌ::'};
+            my $cv = B::svref_2object($rfoo);
+            # (is there a better way of testing for NULL ?)
+            my $stash = $cv->STASH;
+            like($stash, qr/B::SPECIAL/, "NULL CvSTASH on named sub");
+        }
+    
+        # on glob reassignment, orphaned CV should have anon CvGV
+    
+        {
+            my $r;
+            eval q[
+                package FŌŌ௨;
+                sub Ƒ{};
+                $r = \&Ƒ;
+                *Ƒ = sub {};
+            ];
+            delete $FŌŌ௨::{Ƒ};
+            my $cv = B::svref_2object($r);
+            my $gv = $cv->GV;
+            ok($gv->isa(q/B::GV/), "orphaned CV has valid GV");
+            is($gv->NAME, '__ANON__', "orphaned CV has anon GV");
+        }
+    
+        # deleting __ANON__ glob shouldn't break things
+    
+        {
+            package FŌŌ3;
+            sub 남えㄉ {};
+            my $anon = sub {};
+            my $남えㄉ = eval q[\&남えㄉ];
+            package main;
+            delete $FŌŌ3::{남えㄉ}; # make named anonymous
+    
+            delete $FŌŌ3::{__ANON__}; # whoops!
+            my ($cv,$gv);
+            $cv = B::svref_2object($남えㄉ);
+            $gv = $cv->GV;
+            ok($gv->isa(q/B::GV/), "ex-named CV has valid GV");
+            is($gv->NAME, '__ANON__', "ex-named CV has anon GV");
+    
+            $cv = B::svref_2object($anon);
+            $gv = $cv->GV;
+            ok($gv->isa(q/B::GV/), "anon CV has valid GV");
+            is($gv->NAME, '__ANON__', "anon CV has anon GV");
+        }
+    
+        {
+            my $r;
+            {
+                package bᓙṗ;
+    
+                BEGIN {
+                    $r = \&main::Ẃⱒcᴷ;
+                }
+            }
+    
+            my $br = B::svref_2object($r);
+            is ($br->STASH->NAME, 'bᓙṗ',
+                'stub records the package it was compiled in');
+    
+            # We need to take this reference "late", after the subroutine is
+            # defined.
+            $br = B::svref_2object(eval 'sub Ẃⱒcᴷ {}; \&Ẃⱒcᴷ');
+            die $@ if $@;
+    
+            is ($br->STASH->NAME, 'main',
+                'definition overrides the package it was compiled in');
+            like ($br->FILE, qr/eval/,
+                'definition overrides the file it was compiled in');
+        }
+    }
+    
+    # make sure having a sub called __ANON__ doesn't confuse perl.
+    
+    {
+        package クラス;
+        my $c;
+        sub __ANON__ { $c = (caller(0))[3]; }
+        {
+            local $@;
+            eval { ok(1); };
+            ::like($@, qr/^Undefined subroutine &クラス::ok/);
+        }
+        __ANON__();
+        ::is ($c, 'クラス::__ANON__', '__ANON__ sub called ok');
+    }
+
+    # Stashes that are effectively renamed
+    {
+        package rìle;
+    
+        use Config;
+    
+        my $obj  = bless [];
+        my $globref = \*tàt;
+    
+        # effectively rename a stash
+        *slìn:: = *rìle::; *rìle:: = *zòr::;
+        
+        ::is *$globref, "*rìle::tàt",
+        'globs stringify the same way when stashes are moved';
+        ::is ref $obj, "rìle",
+        'ref() returns the same thing when an object’s stash is moved';
+        ::like "$obj", qr "^rìle=ARRAY\(0x[\da-f]+\)\z",
+        'objects stringify the same way when their stashes are moved';
+        ::is eval '__PACKAGE__', 'rìle',
+            '__PACKAGE__ returns the same when the current stash is moved';
+    
+        # Now detach it completely from the symtab, making it effect-
+        # ively anonymous
+        my $life_raft = \%slìn::;
+        *slìn:: = *zòr::;
+    
+        ::is *$globref, "*rìle::tàt",
+        'globs stringify the same way when stashes are detached';
+        ::is ref $obj, "rìle",
+        'ref() returns the same thing when an object’s stash is detached';
+        ::like "$obj", qr "^rìle=ARRAY\(0x[\da-f]+\)\z",
+        'objects stringify the same way when their stashes are detached';
+        ::is eval '__PACKAGE__', 'rìle',
+            '__PACKAGE__ returns the same when the current stash is detached';
+    }
+    
+    # Setting the name during undef %stash:: should have no effect.
+    {
+        my $glob = \*Phòò::glòb;
+        sub ò::DESTROY { eval '++$Phòò::bòr' }
+        no strict 'refs';
+        ${"Phòò::thòng1"} = bless [], "ò";
+        undef %Phòò::;
+        is "$$glob", "*__ANON__::glòb",
+        "setting stash name during undef has no effect";
+    }
+    
+    # [perl #88134] incorrect package structure
+    {
+        package Bèàr::;
+        sub bàz{1}
+        package main;
+        ok eval { Bèàr::::bàz() },
+        'packages ending with :: are self-consistent';
+    }
+    
+    # [perl #88138] ' not equivalent to :: before a null
+    ${"à'\0b"} = "c";
+    is ${"à::\0b"}, "c", "' is equivalent to :: before a null";
+}
\ No newline at end of file

Added: vendor/perl/dist/t/uni/universal.t
===================================================================
--- vendor/perl/dist/t/uni/universal.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/universal.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,172 @@
+#!./perl
+#
+# check UNIVERSAL
+#
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    $| = 1;
+    require "./test.pl";
+}
+
+use utf8;
+use open qw( :utf8 :std );
+
+plan tests => 93;
+
+$a = {};
+bless $a, "Bòb";
+ok $a->isa("Bòb");
+
+package Hùmàn;
+sub èàt {}
+
+package Fèmàlè;
+ at ISA=qw(Hùmàn);
+
+package Àlìcè;
+ at ISA=qw(Bòb Fèmàlè);
+sub sìng;
+sub drìnk { return "drinking " . $_[1]  }
+sub nèw { bless {} }
+
+$Àlìcè::VERSION = 2.718;
+
+{
+    package Cèdrìc;
+    our @ISA;
+    use base qw(Hùmàn);
+}
+
+{
+    package Prògràmmèr;
+    our $VERSION = 1.667;
+
+    sub wrìtè_perl { 1 }
+}
+
+package main;
+
+$a = nèw Àlìcè;
+
+ok $a->isa("Àlìcè");
+ok $a->isa("main::Àlìcè");    # check that alternate class names work
+ok(("main::Àlìcè"->nèw)->isa("Àlìcè"));
+
+ok $a->isa("Bòb");
+ok $a->isa("main::Bòb");
+
+ok $a->isa("Fèmàlè");
+
+ok $a->isa("Hùmàn");
+
+ok ! $a->isa("Màlè");
+
+ok ! $a->isa('Prògràmmèr');
+
+ok $a->isa("HASH");
+
+ok $a->can("èàt");
+ok ! $a->can("sleep");
+ok my $ref = $a->can("drìnk");        # returns a coderef
+is $a->$ref("tèà"), "drinking tèà"; # ... which works
+ok $ref = $a->can("sìng");
+eval { $a->$ref() };
+ok $@;                                # ... but not if no actual subroutine
+
+ok $a->can("VERSION");
+cmp_ok eval { $a->VERSION }, '==', 2.718;
+ok ! (eval { $a->VERSION(2.719) });
+like $@, qr/^Àlìcè version 2.719 required--this is only version 2.718 at /u;
+
+ok (!Cèdrìc->isa('Prògràmmèr'));
+
+ok (Cèdrìc->isa('Hùmàn'));
+
+push(@Cèdrìc::ISA,'Prògràmmèr');
+
+ok (Cèdrìc->isa('Prògràmmèr'));
+
+{
+    package Àlìcè;
+    base::->import('Prògràmmèr');
+}
+
+ok $a->isa('Prògràmmèr');
+ok $a->isa("Fèmàlè");
+
+ at Cèdrìc::ISA = qw(Bòb);
+
+ok (!Cèdrìc->isa('Prògràmmèr'));
+
+my $b = 'abc';
+my @refs = qw(SCALAR SCALAR     LVALUE      GLOB ARRAY HASH CODE);
+my @vals = (  \$b,   \3.14, \substr($b,1,1), \*b,  [],  {}, sub {} );
+for ($p=0; $p < @refs; $p++) {
+    for ($q=0; $q < @vals; $q++) {
+        is UNIVERSAL::isa($vals[$p], $refs[$q]), ($p==$q or $p+$q==1);
+    };
+};
+
+
+ok UNIVERSAL::isa(Àlìcè => "UNIVERSAL");
+
+cmp_ok UNIVERSAL::can(Àlìcè => "can"), '==', \&UNIVERSAL::can;
+
+eval 'sub UNIVERSAL::slèèp {}';
+ok $a->can("slèèp");
+
+{
+    package Pìckùp;
+    no warnings "deprecated";
+    use UNIVERSAL qw( isa can VERSION );
+
+    ::ok isa "Pìckùp", UNIVERSAL;
+    ::cmp_ok can( "Pìckùp", "can" ), '==', \&UNIVERSAL::can;
+    ::ok VERSION "UNIVERSAL" ;
+}
+
+package Fòò;
+
+sub DOES { 1 }
+
+package Bàr;
+
+ at Bàr::ISA = 'Fòò';
+
+package Bàz;
+
+package main;
+ok( Fòò->DOES( 'bàr' ), 'DOES() should call DOES() on class' );
+ok( Bàr->DOES( 'Bàr' ), '... and should fall back to isa()' );
+ok( Bàr->DOES( 'Fòò' ), '... even when inherited' );
+ok( Bàz->DOES( 'Bàz' ), '... even without inheriting any other DOES()' );
+ok( ! Bàz->DOES( 'Fòò' ), '... returning true or false appropriately' );
+
+package Pìg;
+package Bòdìnè;
+Bòdìnè->isa('Pìg');
+
+package main;
+eval { UNIVERSAL::DOES([], "fòò") };
+like( $@, qr/Can't call method "DOES" on unblessed reference/,
+    'DOES call error message says DOES, not isa' );
+
+# Tests for can seem to be split between here and method.t
+# Add the verbatim perl code mentioned in the comments of
+# http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2001-05/msg01710.html
+# but never actually tested.
+is(UNIVERSAL->can("NòSùchPàckàgè::fòò"), undef);
+
+ at splàtt::ISA = 'zlòpp';
+ok (splàtt->isa('zlòpp'));
+ok (!splàtt->isa('plòp'));
+
+# This should reset the ->isa lookup cache
+ at splàtt::ISA = 'plòp';
+# And here is the new truth.
+ok (!splàtt->isa('zlòpp'));
+ok (splàtt->isa('plòp'));
+
+

Added: vendor/perl/dist/t/uni/variables.t
===================================================================
--- vendor/perl/dist/t/uni/variables.t	                        (rev 0)
+++ vendor/perl/dist/t/uni/variables.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,229 @@
+#!./perl
+
+# Checks if the parser behaves correctly in edge case
+# (including weird syntax errors)
+
+BEGIN {
+    require './test.pl';
+}
+
+use 5.016;
+use utf8;
+use open qw( :utf8 :std );
+no warnings qw(misc reserved);
+
+plan (tests => 65869);
+
+# ${single:colon} should not be valid syntax
+{
+    no strict;
+
+    local $@;
+    eval "\${\x{30cd}single:\x{30cd}colon} = 1";
+    like($@,
+         qr/syntax error .* near "\x{30cd}single:/,
+         '${\x{30cd}single:\x{30cd}colon} should not be valid syntax'
+        );
+
+    local $@;
+    no utf8;
+    evalbytes '${single:colon} = 1';
+    like($@,
+         qr/syntax error .* near "single:/,
+         '...same with ${single:colon}'
+        );
+}
+
+# ${yadda'etc} and ${yadda::etc} should both work under strict
+{
+    local $@;
+    eval q<use strict; ${flark::fleem}>;
+    is($@, '', q<${package::var} works>);
+
+    local $@;
+    eval q<use strict; ${fleem'flark}>;
+    is($@, '', q<...as does ${package'var}>);
+}
+
+# The first character in ${...} should respect the rules
+{
+   local $@;
+   use utf8;
+   eval '${☭asd} = 1';
+   like($@, qr/\QUnrecognized character/, q(the first character in ${...} isn't special))
+}
+
+# Checking that at least some of the special variables work
+for my $v (qw( ^V ; < > ( ) {^GLOBAL_PHASE} ^W _ 1 4 0 [ ] ! @ / \ = )) {
+    local $@;
+    evalbytes "\$$v;";
+    is $@, '', "No syntax error for \$$v";
+
+    local $@;
+    eval "use utf8; \$$v;";
+    is $@, '', "No syntax error for \$$v under use utf8";
+}
+
+# Checking if the Latin-1 range behaves as expected, and that the behavior is the
+# same whenever under strict or not.
+for ( 0x80..0xff ) {
+    no warnings 'closure';
+    my $chr = chr;
+    my $esc = sprintf("%X", ord $chr);
+    utf8::downgrade($chr);
+    if ($chr !~ /\p{XIDS}/u) {
+        is evalbytes "no strict; \$$chr = 10",
+            10,
+            sprintf("\\x%02x, part of the latin-1 range, is legal as a length-1 variable", $_);
+
+        utf8::upgrade($chr);
+        local $@;
+        eval "no strict; use utf8; \$$chr = 1";
+        like $@,
+            qr/\QUnrecognized character \x{\E\L$esc/,
+            sprintf("..but is illegal as a length-1 variable under use utf8", $_);
+    }
+    else {
+        {
+            no utf8;
+            local $@;
+            evalbytes "no strict; \$$chr = 1";
+            is($@, '', sprintf("\\x%02x, =~ \\p{XIDS}, latin-1, no utf8, no strict, is a valid length-1 variable", $_));
+
+            local $@;
+            evalbytes "use strict; \$$chr = 1";
+            is($@,
+                '',
+                sprintf("\\x%02x under no utf8 does not have to be required under strict, even though it matches XIDS", $_)
+            );
+
+            local $@;
+            evalbytes "\$a$chr = 1";
+            like($@,
+                qr/Unrecognized character /,
+                sprintf("...but under no utf8, it's not allowed in two-or-more character variables")
+            );
+
+            local $@;
+            evalbytes "\$a$chr = 1";
+            like($@,
+                qr/Unrecognized character /,
+                sprintf("...but under no utf8, it's not allowed in two-or-more character variables")
+            );
+        }
+        {
+            use utf8;
+            my $u = $chr;
+            utf8::upgrade($u);
+            local $@;
+            eval "no strict; \$$u = 1";
+            is($@, '', sprintf("\\x%02x, =~ \\p{XIDS}, UTF-8, use utf8, no strict, is a valid length-1 variable", $_));
+
+            local $@;
+            eval "use strict; \$$u = 1";
+            like($@,
+                qr/Global symbol "\$$u" requires explicit package name/,
+                sprintf("\\x%02x under utf8 has to be required under strict", $_)
+            );
+        }
+    }
+}
+
+{
+    use utf8;
+    my $ret = eval "my \$c\x{327} = 100; \$c\x{327}"; # c + cedilla
+    is($@, '', "ASCII character + combining character works as a variable name");
+    is($ret, 100, "...and returns the correct value");
+}
+
+# From Tom Christiansen's 'highly illegal variable names are now accidentally legal' mail
+for my $chr (
+      "\N{EM DASH}", "\x{F8FF}", "\N{POUND SIGN}", "\N{SOFT HYPHEN}",
+      "\N{THIN SPACE}", "\x{11_1111}", "\x{DC00}", "\N{COMBINING DIAERESIS}",
+      "\N{COMBINING ENCLOSING CIRCLE BACKSLASH}",
+   )
+{
+   no warnings 'non_unicode';
+   my $esc = sprintf("%x", ord $chr);
+   local $@;
+   eval "\$$chr = 1; \$$chr";
+   like($@,
+        qr/\QUnrecognized character \x{$esc};/,
+        "\\x{$esc} is illegal for a length-one identifier"
+       );
+}
+
+for my $i (0x100..0xffff) {
+   my $chr = chr($i);
+   my $esc = sprintf("%x", $i);
+   local $@;
+   eval "my \$$chr = q<test>; \$$chr;";
+   if ( $chr =~ /^\p{_Perl_IDStart}$/ ) {
+      is($@, '', sprintf("\\x{%04x} is XIDS, works as a length-1 variable", $i));
+   }
+   else {
+      like($@,
+           qr/\QUnrecognized character \x{$esc};/,
+           "\\x{$esc} isn't XIDS, illegal as a length-1 variable",
+          )
+   }
+}
+
+{
+    # Bleadperl v5.17.9-109-g3283393 breaks ZEFRAM/Module-Runtime-0.013.tar.gz
+    # https://rt.perl.org/rt3/Public/Bug/Display.html?id=117101
+    no strict;
+
+    local $@;
+    eval <<'EOP';
+    q{$} =~ /(.)/;
+    is($$1, $$, q{$$1 parses as ${$1}});
+
+    $doof = "test";
+    $test = "Got here";
+    $::{+$$} = *doof;
+
+    is( $$$$1, $test, q{$$$$1 parses as ${${${$1}}}} );
+EOP
+    is($@, '', q{$$1 parses correctly});
+
+    for my $chr ( q{@}, "\N{U+FF10}", "\N{U+0300}" ) {
+        my $esc = sprintf("\\x{%x}", ord $chr);
+        local $@;
+        eval <<"    EOP";
+            \$$chr = q{\$};
+            \$\$$chr;
+    EOP
+
+        like($@,
+             qr/syntax error|Unrecognized character/,
+             qq{\$\$$esc is a syntax error}
+        );
+    }
+}
+
+{
+    # bleadperl v5.17.9-109-g3283393 breaks JEREMY/File-Signature-1.009.tar.gz
+    # https://rt.perl.org/rt3/Ticket/Display.html?id=117145
+    local $@;
+    my $var = 10;
+    eval ' ${  var  }';
+
+    is(
+        $@,
+        '',
+        '${  var  } works under strict'
+    );
+
+    {
+        no strict;
+        for my $var ( '$', "\7LOBAL_PHASE", "^GLOBAL_PHASE", "^V" ) {
+            eval "\${ $var}";
+            is($@, '', "\${ $var} works" );
+            eval "\${$var }";
+            is($@, '', "\${$var } works" );
+            eval "\${ $var }";
+            is($@, '', "\${ $var } works" );
+        }
+    }
+}

Added: vendor/perl/dist/t/win32/fs.t
===================================================================
--- vendor/perl/dist/t/win32/fs.t	                        (rev 0)
+++ vendor/perl/dist/t/win32/fs.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,28 @@
+#!./perl
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require "./test.pl";
+    eval 'use Errno';
+    die $@ if $@ and !is_miniperl();
+}
+
+plan tests => 4;
+
+my $tmpfile1 = tempfile();
+my $tmpfile2 = tempfile();
+
+# RT #112272
+ok(!link($tmpfile1, $tmpfile2),
+   "Cannot link to unknown file");
+is(0+$!, &Errno::ENOENT, "check errno is ENOENT");
+open my $fh, ">", $tmpfile1
+    or skip("Cannot create test link src", 2);
+close $fh;
+open my $fh, ">", $tmpfile2
+    or skip("Cannot create test link target", 2);
+close $fh;
+ok(!link($tmpfile1, $tmpfile2),
+   "Cannot link to existing file");
+is(0+$!, &Errno::EEXIST, "check for EEXIST");

Added: vendor/perl/dist/t/win32/runenv.t
===================================================================
--- vendor/perl/dist/t/win32/runenv.t	                        (rev 0)
+++ vendor/perl/dist/t/win32/runenv.t	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,253 @@
+#!./perl
+#
+# Tests for Perl run-time environment variable settings
+# Clone of t/run/runenv.t but without the forking, and with cmd.exe-friendly -e syntax.
+#
+# $PERL5OPT, $PERL5LIB, etc.
+
+BEGIN {
+    chdir 't' if -d 't';
+    @INC = '../lib';
+    require Config; import Config;
+    require File::Temp; import File::Temp qw/:POSIX/;
+
+    require Win32;
+    ($::os_id, $::os_major) = ( Win32::GetOSVersion() )[ 4, 1 ];
+    if ($::os_id == 2 and $::os_major == 6) {    # Vista, Server 2008 (incl R2), 7
+	$::tests = 43;
+    }
+    else {
+	$::tests = 40;
+    }
+
+    require './test.pl';
+}
+
+skip_all "requires compilation with PERL_IMPLICIT_SYS"
+  unless $Config{ccflags} =~/(?:\A|\s)-DPERL_IMPLICIT_SYS\b/;
+
+plan tests => $::tests;
+
+my $PERL = $ENV{PERL} || '.\perl';
+my $NL = $/;
+
+delete $ENV{PERLLIB};
+delete $ENV{PERL5LIB};
+delete $ENV{PERL5OPT};
+
+
+# Run perl with specified environment and arguments, return (STDOUT, STDERR)
+sub runperl_and_capture {
+  my ($env, $args) = @_;
+
+  # Clear out old env
+  local %ENV = %ENV;
+  delete $ENV{PERLLIB};
+  delete $ENV{PERL5LIB};
+  delete $ENV{PERL5OPT};
+
+  # Populate with our desired env
+  for my $k (keys %$env) {
+     $ENV{$k} = $env->{$k};
+  }
+
+  # This is slightly expensive, but this is more reliable than
+  # trying to emulate fork(), and we still get STDERR and STDOUT individually.
+  my $stderr_cache = tmpnam();
+  my $stdout = `$PERL @$args 2>$stderr_cache`;
+  my $stderr = '';
+  if (-s $stderr_cache) {
+    open(my $stderr_cache_fh, "<", $stderr_cache)
+      or die "Could not retrieve STDERR output: $!";
+    while ( defined(my $s_line = <$stderr_cache_fh>) ) {
+      $stderr .= $s_line;
+    }
+    close $stderr_cache_fh;
+    unlink $stderr_cache;
+  }
+  
+  return ($stdout, $stderr);
+}
+
+sub try {
+  my ($env, $args, $stdout, $stderr) = @_;
+  my ($actual_stdout, $actual_stderr) = runperl_and_capture($env, $args);
+  local $::Level = $::Level + 1;
+  is $actual_stdout, $stdout;
+  is $actual_stderr, $stderr;
+}
+
+#  PERL5OPT    Command-line options (switches).  Switches in
+#                    this variable are taken as if they were on
+#                    every Perl command line.  Only the -[DIMUdmtw]
+#                    switches are allowed.  When running taint
+#                    checks (because the program was running setuid
+#                    or setgid, or the -T switch was used), this
+#                    variable is ignored.  If PERL5OPT begins with
+#                    -T, tainting will be enabled, and any
+#                    subsequent options ignored.
+
+try({PERL5OPT => '-w'}, ['-e', '"print $::x"'],
+    "", 
+    qq(Name "main::x" used only once: possible typo at -e line 1.${NL}Use of uninitialized value \$x in print at -e line 1.${NL}));
+
+try({PERL5OPT => '-Mstrict'}, ['-I..\lib', '-e', '"print $::x"'],
+    "", "");
+
+try({PERL5OPT => '-Mstrict'}, ['-I..\lib', '-e', '"print $x"'],
+    "", 
+    qq(Global symbol "\$x" requires explicit package name at -e line 1.${NL}Execution of -e aborted due to compilation errors.${NL}));
+
+# Fails in 5.6.0
+try({PERL5OPT => '-Mstrict -w'}, ['-I..\lib', '-e', '"print $x"'],
+    "", 
+    qq(Global symbol "\$x" requires explicit package name at -e line 1.${NL}Execution of -e aborted due to compilation errors.${NL}));
+
+# Fails in 5.6.0
+try({PERL5OPT => '-w -Mstrict'}, ['-I..\lib', '-e', '"print $::x"'],
+    "", 
+    <<ERROR
+Name "main::x" used only once: possible typo at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
+ERROR
+    );
+
+# Fails in 5.6.0
+try({PERL5OPT => '-w -Mstrict'}, ['-I..\lib', '-e', '"print $::x"'],
+    "", 
+    <<ERROR
+Name "main::x" used only once: possible typo at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
+ERROR
+    );
+
+try({PERL5OPT => '-MExporter'}, ['-I..\lib', '-e0'],
+    "", 
+    "");
+
+# Fails in 5.6.0
+try({PERL5OPT => '-MExporter -MExporter'}, ['-I..\lib', '-e0'],
+    "", 
+    "");
+
+try({PERL5OPT => '-Mstrict -Mwarnings'}, 
+    ['-I..\lib', '-e', '"print \"ok\" if $INC{\"strict.pm\"} and $INC{\"warnings.pm\"}"'],
+    "ok",
+    "");
+
+open my $fh, ">", "Oooof.pm" or die "Can't write Oooof.pm: $!";
+print $fh "package Oooof; 1;\n";
+close $fh;
+END { 1 while unlink "Oooof.pm" }
+
+try({PERL5OPT => '-I. -MOooof'}, 
+    ['-e', '"print \"ok\" if $INC{\"Oooof.pm\"} eq \"Oooof.pm\""'],
+    "ok",
+    "");
+
+try({PERL5OPT => '-w -w'},
+    ['-e', '"print $ENV{PERL5OPT}"'],
+    '-w -w',
+    '');
+
+try({PERL5OPT => '-t'},
+    ['-e', '"print ${^TAINT}"'],
+    '-1',
+    '');
+
+try({PERL5OPT => '-W'},
+    ['-I..\lib','-e', '"local $^W = 0;  no warnings;  print $x"'],
+    '',
+    <<ERROR
+Name "main::x" used only once: possible typo at -e line 1.
+Use of uninitialized value \$x in print at -e line 1.
+ERROR
+);
+
+try({PERLLIB => "foobar$Config{path_sep}42"},
+    ['-e', '"print grep { $_ eq \"foobar\" } @INC"'],
+    'foobar',
+    '');
+
+try({PERLLIB => "foobar$Config{path_sep}42"},
+    ['-e', '"print grep { $_ eq \"42\" } @INC"'],
+    '42',
+    '');
+
+try({PERL5LIB => "foobar$Config{path_sep}42"},
+    ['-e', '"print grep { $_ eq \"foobar\" } @INC"'],
+    'foobar',
+    '');
+
+try({PERL5LIB => "foobar$Config{path_sep}42"},
+    ['-e', '"print grep { $_ eq \"42\" } @INC"'],
+    '42',
+    '');
+
+try({PERL5LIB => "foo",
+     PERLLIB => "bar"},
+    ['-e', '"print grep { $_ eq \"foo\" } @INC"'],
+    'foo',
+    '');
+
+try({PERL5LIB => "foo",
+     PERLLIB => "bar"},
+    ['-e', '"print grep { $_ eq \"bar\" } @INC"'],
+    '',
+    '');
+
+# Tests for S_incpush_use_sep():
+
+my @dump_inc = ('-e', '"print \"$_\n\" foreach @INC"');
+
+my ($out, $err) = runperl_and_capture({}, [@dump_inc]);
+
+is ($err, '', 'No errors when determining @INC');
+
+my @default_inc = split /\n/, $out;
+
+is ($default_inc[-1], '.', '. is last in @INC');
+
+my $sep = $Config{path_sep};
+my @test_cases = (
+	 ['nothing', ''],
+	 ['something', 'zwapp', 'zwapp'],
+	 ['two things', "zwapp${sep}bam", 'zwapp', 'bam'],
+	 ['two things, ::', "zwapp${sep}${sep}bam", 'zwapp', 'bam'],
+	 [': at start', "${sep}zwapp", 'zwapp'],
+	 [': at end', "zwapp${sep}", 'zwapp'],
+	 [':: sandwich ::', "${sep}${sep}zwapp${sep}${sep}", 'zwapp'],
+	 [':', "${sep}"],
+	 ['::', "${sep}${sep}"],
+	 [':::', "${sep}${sep}${sep}"],
+	 ['two things and :', "zwapp${sep}bam${sep}", 'zwapp', 'bam'],
+	 [': and two things', "${sep}zwapp${sep}bam", 'zwapp', 'bam'],
+	 [': two things :', "${sep}zwapp${sep}bam${sep}", 'zwapp', 'bam'],
+	 ['three things', "zwapp${sep}bam${sep}${sep}owww",
+	  'zwapp', 'bam', 'owww'],
+);
+
+# This block added to verify fix for RT #87322
+if ($::os_id == 2 and $::os_major == 6) {    # Vista, Server 2008 (incl R2), 7
+  my @big_perl5lib = ('z' x 16) x 2049;
+    push @testcases, [
+        'enough items so PERL5LIB val is longer than 32k',
+        join($sep, @big_perl5lib), @big_perl5lib,
+    ];
+}
+
+foreach ( @testcases ) {
+  my ($name, $lib, @expect) = @$_;
+  push @expect, @default_inc;
+
+  ($out, $err) = runperl_and_capture({PERL5LIB => $lib}, [@dump_inc]);
+
+  is ($err, '', "No errors when determining \@INC for $name");
+
+  my @inc = split /\n/, $out;
+
+  is (scalar @inc, scalar @expect,
+      "expected number of elements in \@INC for $name");
+
+  is ("@inc", "@expect", "expected elements in \@INC for $name");
+}

Added: vendor/perl/dist/utils/pod2html.PL
===================================================================
--- vendor/perl/dist/utils/pod2html.PL	                        (rev 0)
+++ vendor/perl/dist/utils/pod2html.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,53 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate.  Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries.  Thus you write
+#  $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+my $origdir = cwd;
+chdir dirname($0);
+my $file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{startperl}
+    eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}'
+	if \$running_under_some_shell;
+!GROK!THIS!
+
+use File::Spec;
+
+my $script = File::Spec->catfile(
+    File::Spec->catdir(
+        File::Spec->updir, qw(ext Pod-Html bin),
+    ),
+    'pod2html',
+);
+
+if (open(IN, $script)) {
+    print OUT <IN>;
+    close IN;
+} else {
+    die "$0: cannot find '$script'\n";
+}
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;

Added: vendor/perl/dist/utils/zipdetails.PL
===================================================================
--- vendor/perl/dist/utils/zipdetails.PL	                        (rev 0)
+++ vendor/perl/dist/utils/zipdetails.PL	2013-12-02 04:27:49 UTC (rev 6434)
@@ -0,0 +1,51 @@
+#!/usr/local/bin/perl
+
+use Config;
+use File::Basename qw(&basename &dirname);
+use Cwd;
+
+# List explicitly here the variables you want Configure to
+# generate.  Metaconfig only looks for shell variables, so you
+# have to mention them as if they were shell variables, not
+# %Config entries.  Thus you write
+#  $startperl
+# to ensure Configure will look for $Config{startperl}.
+
+# This forces PL files to create target in same directory as PL file.
+# This is so that make depend always knows where to find PL derivatives.
+my $origdir = cwd;
+chdir dirname($0);
+my $file = basename($0, '.PL');
+$file .= '.com' if $^O eq 'VMS';
+
+open OUT,">$file" or die "Can't create $file: $!";
+
+print "Extracting $file (with variable substitutions)\n";
+
+# In this section, perl variables will be expanded during extraction.
+# You can use $Config{...} to use Configure variables.
+
+print OUT <<"!GROK!THIS!";
+$Config{startperl}
+    eval 'exec $Config{perlpath} -S \$0 \${1+"\$@"}'
+	if \$running_under_some_shell;
+!GROK!THIS!
+
+use File::Spec;
+
+my $script = File::Spec->catfile(
+            File::Spec->catdir(
+                File::Spec->updir, qw[ cpan IO-Compress bin ]
+            ), "zipdetails");
+
+if (open(IN, $script)) {
+    print OUT <IN>;
+    close IN;
+} else {
+    die "$0: cannot find '$script'\n";
+}
+
+close OUT or die "Can't close $file: $!";
+chmod 0755, $file or die "Can't reset permissions for $file: $!\n";
+exec("$Config{'eunicefix'} $file") if $Config{'eunicefix'} ne ':';
+chdir $origdir;



More information about the Midnightbsd-cvs mailing list